diff --git a/config/stylix.nix b/config/stylix.nix index 614b3b2..4479ad5 100644 --- a/config/stylix.nix +++ b/config/stylix.nix @@ -9,7 +9,7 @@ let schemesFile = import ./schemes.nix { inherit pkgs inputs; }; - scheme = schemesFile.schemes.paul3; + scheme = schemesFile.schemes.febroary; cfg = config.my.stylix; gnomeEnabled = config.services.xserver.desktopManager.gnome.enable; in diff --git a/environments/hyprland.nix b/environments/hyprland.nix index e6e37a9..07b28a4 100644 --- a/environments/hyprland.nix +++ b/environments/hyprland.nix @@ -4,33 +4,9 @@ ... }: let - # misc mod = "SUPER"; - # waybar - inherit (config.lib.stylix) colors; - net-icons = [ - "󰣾" - "󰣴" - "󰣶" - "󰣸" - "󰣺" - ]; - generic-percent-icons = [ - "▁" - "▂" - "▃" - "▄" - "▅" - "▆" - "▇" - "█" - ]; - temp-icons = [ - "" - "" - "" - "" - ]; + waybarConfig = import ./waybar-config.nix { inherit pkgs config; }; + waybarStyle = import ./waybar-style.nix { inherit config; }; in { programs.hyprland.enable = true; @@ -41,12 +17,6 @@ in user = "greeter"; }; }; - xdg.portal = { - enable = true; - extraPortals = [ - pkgs.xdg-desktop-portal-hyprland - ]; - }; users.users.jawz.packages = builtins.attrValues { inherit (pkgs) # Wayland utilities @@ -59,6 +29,8 @@ in swaylock-effects # screen locker yazi # file manager imv # images + + playerctl # media player control ; }; home-manager.users.jawz = { @@ -72,108 +44,8 @@ in width = "30%"; }; }; - waybar = { - enable = true; - systemd.enable = true; - settings.main-bar = { - layer = "top"; - tray.spacing = 5; - clock.format = "{:%H:%M %F}"; - modules-left = [ - "niri/workspaces" - "custom/sep" - "niri/window" - ]; - modules-center = [ - "mpris" - ]; - modules-right = [ - "cpu" - "temperature" - "memory" - "backlight" - "pulseaudio" - "battery" - "custom/recorder" - "clock" - "tray" - ]; - "hyprland/window".icon = true; - "niri/window".icon = true; - "niri/workspaces" = { - format = "{icon}"; - format-icons = { - active = ""; - default = ""; - }; - }; - cava = { - format-icons = generic-percent-icons; - bars = 14; - method = "pulse"; - framerate = 20; - bar_delimiter = 0; - stereo = false; - }; - network = { - format = "{icon} {ipaddr}"; - format-icons = net-icons; - }; - # pulseaudio = { - # format = "{icon} {volume}%"; - # format-muted = "vol: muted"; - # format-icons.default = audio-icons; - # on-click = "pavucontrol"; - # scroll-step = 1; - # }; - cpu = { - interval = 1; - format = " {icon}"; - format-icons = generic-percent-icons; - tooltip-format = "usage: {usage}%\nload: {load}"; - }; - memory = { - interval = 1; - format = " {icon}"; - format-icons = generic-percent-icons; - tooltip-format = "{used} GiB / {total} GiB \n{percentage}%"; - }; - temperature = { - interval = 1; - critical-threshold = 80; - format = "{temperatureC}°C"; - format-icons = temp-icons; - }; - mpris = { - format = "{status_icon} {dynamic}"; - dynamic-len = 60; - interval = 5; - status-icons = { - paused = ""; - playing = ""; - }; - }; - }; - style = '' - * { - border: none; - font-family: "${config.stylix.fonts.monospace.name}"; - font-size: ${toString config.stylix.fonts.sizes.desktop}pt; - color: #${colors.base04}; - } - window#waybar { - background: #${colors.base00}; - } - .module { - background: #${colors.base00}; - margin: 0px 5px 0px 5px; - padding: 0px 0px 0px 5px; - } - #workspaces button { - padding: 0px; - border-bottom: 0px none transparent; - } - ''; + waybar = waybarConfig.programs.waybar // { + style = waybarStyle; }; }; wayland.windowManager.hyprland = { @@ -185,6 +57,11 @@ in border_size = 3; layout = "dwindle"; }; + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + force_default_wallpaper = 0; + }; dwindle = { pseudotile = true; preserve_split = true; diff --git a/environments/waybar-config.nix b/environments/waybar-config.nix new file mode 100644 index 0000000..2546012 --- /dev/null +++ b/environments/waybar-config.nix @@ -0,0 +1,112 @@ +_: { + programs.waybar = { + enable = true; + systemd.enable = true; + settings.main-bar = { + layer = "top"; + height = 20; + tray.spacing = 5; + clock = { + format = "{:%a %b %d %I:%M %p}"; + tooltip-format = "{:%Y %B}\n{calendar}"; + }; + modules-left = [ + "hyprland/workspaces" + "custom/separator" + "temperature#cpu" + "custom/gpu-temp" + ]; + modules-center = [ + "clock" + ]; + modules-right = [ + "tray" + "mpris" + "wireplumber" + "wireplumber#microphone" + ]; + "hyprland/workspaces" = { + format = "{icon}"; + on-scroll-up = "hyprctl dispatch workspace e-1"; + on-scroll-down = "hyprctl dispatch workspace e+1"; + persistent-workspaces."*" = 10; # Show 5 workspaces on all monitors + }; + "custom/separator" = { + format = "|"; + tooltip = false; + }; + cava = { + bars = 14; + method = "pulse"; + framerate = 20; + bar_delimiter = 0; + stereo = false; + format-icons.default = [ + "▁" + "▂" + "▃" + "▄" + "▅" + "▆" + "▇" + "█" + ]; + }; + "temperature#cpu" = { + interval = 2; + format = " {temperatureC}°C"; + critical-threshold = 80; + hwmon-path = "/sys/class/hwmon/hwmon1/temp1_input"; + tooltip-format = "CPU: {temperatureC}°C"; + }; + "custom/gpu-temp" = { + exec = "nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits"; + format = "󰢮 {}°C"; + interval = 2; + tooltip-format = "GPU: {}°C"; + }; + mpris = { + interval = 2; + format = "{player_icon} {dynamic}"; + format-paused = "{status_icon} {dynamic}"; + dynamic-len = 40; + on-click = "playerctl play-pause"; + on-scroll-up = "playerctl next"; + on-scroll-down = "playerctl previous"; + dynamic-order = [ + "title" + "artist" + ]; + player-icons = { + default = "🎵"; + firefox = "🦊"; + librewolf = "🦊"; + }; + status-icons = { + paused = ""; + playing = ""; + }; + }; + wireplumber = { + format = "{icon} {volume}%"; + format-muted = "󰝟 muted"; + scroll-step = 5; + on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + format-icons.default = [ + "󰕿" + "󰖀" + "󰕾" + ]; + }; + "wireplumber#microphone" = { + format = "{format_source}"; + format-source = " {volume}%"; + format-source-muted = ""; + on-click = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; + on-scroll-up = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+"; + on-scroll-down = "wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"; + tooltip-format = "{source_desc}"; + }; + }; + }; +} diff --git a/environments/waybar-style.nix b/environments/waybar-style.nix new file mode 100644 index 0000000..2101034 --- /dev/null +++ b/environments/waybar-style.nix @@ -0,0 +1,43 @@ +{ + config, + ... +}: +let + inherit (config.lib.stylix) colors; +in +'' + * { + border: none; + font-family: "${config.stylix.fonts.monospace.name}"; + font-size: ${toString config.stylix.fonts.sizes.desktop}pt; + color: #${colors.base04}; + } + window#waybar { + background: #${colors.base00}; + min-height: 20px; + } + .module { + background: #${colors.base00}; + margin: 0px 5px 0px 5px; + padding: 8px 8px 8px 8px; + } + #workspaces button { + padding: 2px 8px; + margin: 2px; + border-radius: 8px; + background: transparent; + color: #${colors.base03}; + border: none; + min-width: 20px; + } + + #workspaces button.active { + background: #${colors.base02}; + color: #${colors.base05}; + } + + #workspaces button:hover { + background: #${colors.base01}; + color: #${colors.base04}; + } +'' diff --git a/hosts/workstation/configuration.nix b/hosts/workstation/configuration.nix index 0ce08f1..9829901 100644 --- a/hosts/workstation/configuration.nix +++ b/hosts/workstation/configuration.nix @@ -127,6 +127,7 @@ in services = { flatpak.enable = true; open-webui.enable = true; + tailscale.enable = true; scx = { enable = true; scheduler = "scx_lavd"; @@ -150,6 +151,5 @@ in capSysAdmin = true; openFirewall = true; }; - tailscale.enable = true; }; }