From f2aed4dc5f98cfd0747305d59fdfa681d9ef5662 Mon Sep 17 00:00:00 2001 From: "RingOfStorms (Joshua Bell)" Date: Tue, 26 Aug 2025 13:10:14 -0500 Subject: [PATCH] go back to waybar for now --- .../desktop_environment/hyprland/default.nix | 6 + .../hyprland/home_manager/default.nix | 1 + .../hyprland/home_manager/quickshell.nix | 67 ++- .../hyprland/home_manager/swaync.nix | 454 +++++++++-------- .../hyprland/home_manager/waybar.nix | 468 +++++++++--------- hosts/lio/flake.lock | 115 ++++- hosts/lio/flake.nix | 16 +- 7 files changed, 662 insertions(+), 465 deletions(-) diff --git a/common/desktop_environment/hyprland/default.nix b/common/desktop_environment/hyprland/default.nix index 9726da5..60b8c47 100644 --- a/common/desktop_environment/hyprland/default.nix +++ b/common/desktop_environment/hyprland/default.nix @@ -29,6 +29,12 @@ with lib; default = { }; description = "Extra options for Hyprland configuration."; }; + swaync = { + enable = lib.mkEnableOption "Enable Swaync (notification center for Hyprland)"; + }; + waybar = { + enable = lib.mkEnableOption "Enable Waybar (status bar for Hyprland)"; + }; }; config = lib.mkIf cfg.enable { diff --git a/common/desktop_environment/hyprland/home_manager/default.nix b/common/desktop_environment/hyprland/home_manager/default.nix index 1dbebcb..9533253 100644 --- a/common/desktop_environment/hyprland/home_manager/default.nix +++ b/common/desktop_environment/hyprland/home_manager/default.nix @@ -3,6 +3,7 @@ imports = [ ./theme.nix ./hyprland.nix + # ./quickshell.nix ./waybar.nix ./hyprpolkitagent.nix ./wofi.nix diff --git a/common/desktop_environment/hyprland/home_manager/quickshell.nix b/common/desktop_environment/hyprland/home_manager/quickshell.nix index 8d6f389..2f5032c 100644 --- a/common/desktop_environment/hyprland/home_manager/quickshell.nix +++ b/common/desktop_environment/hyprland/home_manager/quickshell.nix @@ -2,6 +2,7 @@ osConfig, lib, pkgs, + upkgs, ... }: let @@ -15,8 +16,7 @@ let in { home.packages = with pkgs; [ - quickshell - + upkgs.quickshell pulseaudio brightnessctl networkmanager @@ -27,4 +27,67 @@ in systemd hyprlock ]; + + # Ensure CLI quickshell can resolve modules when not using --config-path + home.sessionVariables = { + QML_IMPORT_PATH = "$HOME/.config/quickshell"; + QML2_IMPORT_PATH = "$HOME/.config/quickshell"; + }; + + # install config files + home.file = { + ".config/quickshell/shell.qml".source = ./quickshell/shell.qml; + ".config/quickshell/panels/TopBar.qml".source = ./quickshell/panels/TopBar.qml; + ".config/quickshell/notifications/NotificationServer.qml".source = + ./quickshell/notifications/NotificationServer.qml; + ".config/quickshell/notifications/NotificationPopup.qml".source = + ./quickshell/notifications/NotificationPopup.qml; + ".config/quickshell/notifications/NotificationCenter.qml".source = + ./quickshell/notifications/NotificationCenter.qml; + ".config/quickshell/widgets/status/Workspaces.qml".source = + ./quickshell/widgets/status/Workspaces.qml; + ".config/quickshell/widgets/status/Clock.qml".source = ./quickshell/widgets/status/Clock.qml; + ".config/quickshell/widgets/status/SystemTrayWidget.qml".source = + ./quickshell/widgets/status/SystemTrayWidget.qml; + ".config/quickshell/widgets/status/Battery.qml".source = ./quickshell/widgets/status/Battery.qml; + ".config/quickshell/widgets/controls/QuickSettings.qml".source = + ./quickshell/widgets/controls/QuickSettings.qml; + ".config/quickshell/widgets/controls/Audio.qml".source = ./quickshell/widgets/controls/Audio.qml; + ".config/quickshell/widgets/controls/Network.qml".source = + ./quickshell/widgets/controls/Network.qml; + ".config/quickshell/widgets/controls/Bluetooth.qml".source = + ./quickshell/widgets/controls/Bluetooth.qml; + ".config/quickshell/widgets/controls/Brightness.qml".source = + ./quickshell/widgets/controls/Brightness.qml; + ".config/quickshell/widgets/controls/PowerProfilesWidget.qml".source = + ./quickshell/widgets/controls/PowerProfilesWidget.qml; + ".config/quickshell/panels/qmldir".source = ./quickshell/panels/qmldir; + ".config/quickshell/notifications/qmldir".source = ./quickshell/notifications/qmldir; + ".config/quickshell/widgets/status/qmldir".source = ./quickshell/widgets/status/qmldir; + ".config/quickshell/widgets/controls/qmldir".source = ./quickshell/widgets/controls/qmldir; + # optional: .qmlls.ini should be gitignored; create empty to enable LSP + ".config/quickshell/.qmlls.ini".text = ""; + }; + + systemd.user.services.quickshell = { + Unit = { + Description = "Quickshell Desktop Shell"; + PartOf = [ "graphical-session.target" ]; + After = [ "graphical-session.target" ]; + }; + Service = { + ExecStart = "${upkgs.quickshell}/bin/quickshell --config-path %h/.config/quickshell"; + Restart = "on-failure"; + RestartSec = 2; + Environment = [ + "QML_IMPORT_PATH=%h/.config/quickshell" + "QT_QPA_PLATFORM=wayland" + # Ensure we find icons + "XDG_CURRENT_DESKTOP=quickshell" + ]; + }; + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + }; } diff --git a/common/desktop_environment/hyprland/home_manager/swaync.nix b/common/desktop_environment/hyprland/home_manager/swaync.nix index 6891a76..b26fa58 100644 --- a/common/desktop_environment/hyprland/home_manager/swaync.nix +++ b/common/desktop_environment/hyprland/home_manager/swaync.nix @@ -1,237 +1,251 @@ { + lib, + osConfig, ... }: +let + ccfg = import ../../../config.nix; + cfg_path = [ + ccfg.custom_config_key + "desktopEnvironment" + "hyprland" + "swaync" + ]; + cfg = lib.attrsets.getAttrFromPath cfg_path osConfig; +in { - services.swaync = { - enable = true; - settings = { - ignore = [ - "com.spotify.Client" - ]; + config = lib.mkIf cfg.enable { + services.swaync = { + enable = true; + settings = { + ignore = [ + "com.spotify.Client" + ]; - positionX = "right"; - positionY = "top"; - layer = "overlay"; - control-center-layer = "top"; - layer-shell = true; - cssPriority = "application"; + positionX = "right"; + positionY = "top"; + layer = "overlay"; + control-center-layer = "top"; + layer-shell = true; + cssPriority = "application"; - control-center-margin-top = 0; - control-center-margin-bottom = 0; - control-center-margin-right = 0; - control-center-margin-left = 0; + control-center-margin-top = 0; + control-center-margin-bottom = 0; + control-center-margin-right = 0; + control-center-margin-left = 0; - notification-2fa-action = true; - notification-inline-replies = false; - notification-icon-size = 64; - notification-body-image-height = 100; - notification-body-image-width = 200; + notification-2fa-action = true; + notification-inline-replies = false; + notification-icon-size = 64; + notification-body-image-height = 100; + notification-body-image-width = 200; - timeout = 10; - timeout-low = 5; - timeout-critical = 0; + timeout = 10; + timeout-low = 5; + timeout-critical = 0; - control-center-width = 500; - control-center-height = 600; - notification-window-width = 500; + control-center-width = 500; + control-center-height = 600; + notification-window-width = 500; - keyboard-shortcuts = true; - image-visibility = "when-available"; - transition-time = 200; - hide-on-clear = false; - hide-on-action = true; - script-fail-notify = true; + keyboard-shortcuts = true; + image-visibility = "when-available"; + transition-time = 200; + hide-on-clear = false; + hide-on-action = true; + script-fail-notify = true; - widgets = [ - "inhibitors" - "title" - "dnd" - "volume" - "backlight" - "mpris" - "buttons-grid#quick" - "notifications" - ]; + widgets = [ + "inhibitors" + "title" + "dnd" + "volume" + "backlight" + "mpris" + "buttons-grid#quick" + "notifications" + ]; - # Widget configurations - widget-config = { - inhibitors = { - text = "Inhibitors"; - button-text = "Clear All"; - clear-all-button = true; - }; - title = { - text = "Notifications"; - clear-all-button = true; - button-text = "Clear All"; - }; - dnd.text = "Do Not Disturb"; - mpris = { - image-size = 96; - image-radius = 12; - }; - volume = { - label = "󰕾"; - show-per-app = true; - }; - backlight = { - label = "󰃟"; - device = "intel_backlight"; - }; - "buttons-grid#quick" = { - columns = 4; # adjust: 3/4/5 - icon-size = 20; # tweak to taste - actions = [ - # Power - { - label = "󰐥"; - tooltip = "Shutdown"; - command = "confirm-action 'systemctl poweroff' 'Shutdown?'"; - } - { - label = "󰜉"; - tooltip = "Reboot"; - command = "confirm-action 'systemctl reboot' 'Reboot?'"; - } - { - label = "󰍃"; - tooltip = "Logout"; - command = "confirm-action 'hyprctl dispatch exit' 'Logout?'"; - } - ]; + # Widget configurations + widget-config = { + inhibitors = { + text = "Inhibitors"; + button-text = "Clear All"; + clear-all-button = true; + }; + title = { + text = "Notifications"; + clear-all-button = true; + button-text = "Clear All"; + }; + dnd.text = "Do Not Disturb"; + mpris = { + image-size = 96; + image-radius = 12; + }; + volume = { + label = "󰕾"; + show-per-app = true; + }; + backlight = { + label = "󰃟"; + device = "intel_backlight"; + }; + "buttons-grid#quick" = { + columns = 4; # adjust: 3/4/5 + icon-size = 20; # tweak to taste + actions = [ + # Power + { + label = "󰐥"; + tooltip = "Shutdown"; + command = "confirm-action 'systemctl poweroff' 'Shutdown?'"; + } + { + label = "󰜉"; + tooltip = "Reboot"; + command = "confirm-action 'systemctl reboot' 'Reboot?'"; + } + { + label = "󰍃"; + tooltip = "Logout"; + command = "confirm-action 'hyprctl dispatch exit' 'Logout?'"; + } + ]; + }; }; }; + + # Custom CSS for the control center + style = '' + .control-center { + background: #1a1b26; + border: 2px solid #7dcae4; + border-radius: 12px; + } + + .control-center-list { + background: transparent; + } + + .control-center .notification-row:focus, + .control-center .notification-row:hover { + opacity: 1; + background: #24283b; + } + + .notification { + border-radius: 8px; + margin: 6px 12px; + box-shadow: 0 0 0 1px rgba(125, 196, 228, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3); + padding: 0; + } + + /* Widget styling */ + .widget-title { + margin: 8px; + font-size: 1.5rem; + color: #c0caf5; + } + + .widget-dnd { + margin: 8px; + font-size: 1.1rem; + color: #c0caf5; + } + + .widget-dnd > switch { + font-size: initial; + border-radius: 8px; + background: #414868; + border: 1px solid #7dcae4; + } + + .widget-dnd > switch:checked { + background: #7dcae4; + } + + .widget-mpris { + color: #c0caf5; + background: #24283b; + padding: 8px; + margin: 8px; + border-radius: 8px; + } + + .widget-mpris-player { + padding: 8px; + margin: 8px; + } + + .widget-mpris-title { + font-weight: bold; + font-size: 1.25rem; + } + + .widget-mpris-subtitle { + font-size: 1.1rem; + color: #9ece6a; + } + + .widget-volume { + background: #24283b; + padding: 8px; + margin: 8px; + border-radius: 8px; + color: #c0caf5; + } + + .widget-backlight { + background: #24283b; + padding: 8px; + margin: 8px; + border-radius: 8px; + color: #c0caf5; + } + + .widget-menubar { + background: #24283b; + padding: 8px; + margin: 8px; + border-radius: 8px; + color: #c0caf5; + } + + .widget-menubar .menu-item button { + background: #1f2335; + color: #c0caf5; + border-radius: 8px; + padding: 6px 10px; + margin: 4px; + border: 1px solid #2e3440; + font-family: "JetBrainsMonoNL Nerd Font"; + } + + .widget-menubar .menu-item button:hover { + background: #414868; + border-color: #7dcae4; + } + + .topbar-buttons button { + border: none; + background: transparent; + color: #c0caf5; + font-size: 1.1rem; + border-radius: 8px; + margin: 0 4px; + padding: 8px; + } + + .topbar-buttons button:hover { + background: #414868; + } + + .topbar-buttons button:active { + background: #7dcae4; + color: #1a1b26; + } + ''; }; - - # Custom CSS for the control center - style = '' - .control-center { - background: #1a1b26; - border: 2px solid #7dcae4; - border-radius: 12px; - } - - .control-center-list { - background: transparent; - } - - .control-center .notification-row:focus, - .control-center .notification-row:hover { - opacity: 1; - background: #24283b; - } - - .notification { - border-radius: 8px; - margin: 6px 12px; - box-shadow: 0 0 0 1px rgba(125, 196, 228, 0.3), 0 1px 3px 1px rgba(0, 0, 0, 0.7), 0 2px 6px 2px rgba(0, 0, 0, 0.3); - padding: 0; - } - - /* Widget styling */ - .widget-title { - margin: 8px; - font-size: 1.5rem; - color: #c0caf5; - } - - .widget-dnd { - margin: 8px; - font-size: 1.1rem; - color: #c0caf5; - } - - .widget-dnd > switch { - font-size: initial; - border-radius: 8px; - background: #414868; - border: 1px solid #7dcae4; - } - - .widget-dnd > switch:checked { - background: #7dcae4; - } - - .widget-mpris { - color: #c0caf5; - background: #24283b; - padding: 8px; - margin: 8px; - border-radius: 8px; - } - - .widget-mpris-player { - padding: 8px; - margin: 8px; - } - - .widget-mpris-title { - font-weight: bold; - font-size: 1.25rem; - } - - .widget-mpris-subtitle { - font-size: 1.1rem; - color: #9ece6a; - } - - .widget-volume { - background: #24283b; - padding: 8px; - margin: 8px; - border-radius: 8px; - color: #c0caf5; - } - - .widget-backlight { - background: #24283b; - padding: 8px; - margin: 8px; - border-radius: 8px; - color: #c0caf5; - } - - .widget-menubar { - background: #24283b; - padding: 8px; - margin: 8px; - border-radius: 8px; - color: #c0caf5; - } - - .widget-menubar .menu-item button { - background: #1f2335; - color: #c0caf5; - border-radius: 8px; - padding: 6px 10px; - margin: 4px; - border: 1px solid #2e3440; - font-family: "JetBrainsMonoNL Nerd Font"; - } - - .widget-menubar .menu-item button:hover { - background: #414868; - border-color: #7dcae4; - } - - .topbar-buttons button { - border: none; - background: transparent; - color: #c0caf5; - font-size: 1.1rem; - border-radius: 8px; - margin: 0 4px; - padding: 8px; - } - - .topbar-buttons button:hover { - background: #414868; - } - - .topbar-buttons button:active { - background: #7dcae4; - color: #1a1b26; - } - ''; }; } diff --git a/common/desktop_environment/hyprland/home_manager/waybar.nix b/common/desktop_environment/hyprland/home_manager/waybar.nix index c67d449..25c5986 100644 --- a/common/desktop_environment/hyprland/home_manager/waybar.nix +++ b/common/desktop_environment/hyprland/home_manager/waybar.nix @@ -1,253 +1,267 @@ { + lib, + osConfig, ... }: +let + ccfg = import ../../../config.nix; + cfg_path = [ + ccfg.custom_config_key + "desktopEnvironment" + "hyprland" + "waybar" + ]; + cfg = lib.attrsets.getAttrFromPath cfg_path osConfig; +in { - programs.waybar = { - enable = true; - systemd.enable = true; - settings = { - mainBar = { - layer = "top"; - position = "top"; - height = 30; - spacing = 6; - margin-top = 0; - margin-bottom = 0; - margin-left = 10; - margin-right = 10; + config = lib.mkIf cfg.enable { + programs.waybar = { + enable = true; + systemd.enable = true; + settings = { + mainBar = { + layer = "top"; + position = "top"; + height = 30; + spacing = 6; + margin-top = 0; + margin-bottom = 0; + margin-left = 10; + margin-right = 10; - modules-left = [ - "hyprland/workspaces" - ]; + modules-left = [ + "hyprland/workspaces" + ]; - modules-center = [ - "clock" - "temperature" - "cpu" - "memory" - "disk" - ]; + modules-center = [ + "clock" + "temperature" + "cpu" + "memory" + "disk" + ]; - modules-right = [ - "pulseaudio" - "network" - "bluetooth" - "custom/notifications" - "hyprland/language" - ]; + modules-right = [ + "pulseaudio" + "network" + "bluetooth" + "custom/notifications" + "hyprland/language" + ]; - # Workspaces configuration - "hyprland/workspaces" = { - format = "{icon}"; - format-icons = { - "1" = "一"; - "2" = "二"; - "3" = "三"; - "4" = "四"; - "5" = "五"; - "6" = "六"; - "7" = "七"; - "8" = "八"; - "9" = "九"; - "10" = "十"; - "11" = "十一"; - "12" = "十二"; - "13" = "十三"; - "14" = "十四"; - "15" = "十五"; - "16" = "十六"; - "17" = "十七"; - "18" = "十八"; - "19" = "十九"; - "20" = "二十"; + # Workspaces configuration + "hyprland/workspaces" = { + format = "{icon}"; + format-icons = { + "1" = "一"; + "2" = "二"; + "3" = "三"; + "4" = "四"; + "5" = "五"; + "6" = "六"; + "7" = "七"; + "8" = "八"; + "9" = "九"; + "10" = "十"; + "11" = "十一"; + "12" = "十二"; + "13" = "十三"; + "14" = "十四"; + "15" = "十五"; + "16" = "十六"; + "17" = "十七"; + "18" = "十八"; + "19" = "十九"; + "20" = "二十"; + }; + show-special = false; }; - show-special = false; - }; - pulseaudio = { - format = "{icon} {volume}%"; - format-bluetooth = "󰂰 {volume}%"; - format-bluetooth-muted = "󰂲 "; - format-muted = "󰖁 "; - format-source = "󰍬 {volume}%"; - format-source-muted = "󰍭 "; - format-icons = { - headphone = "󰋋"; - hands-free = "󰂑"; - headset = "󰂑"; - phone = "󰏲"; - portable = "󰦧"; - car = "󰄋"; - default = [ - "󰕿" - "󰖀" - "󰕾" - ]; + pulseaudio = { + format = "{icon} {volume}%"; + format-bluetooth = "󰂰 {volume}%"; + format-bluetooth-muted = "󰂲 "; + format-muted = "󰖁 "; + format-source = "󰍬 {volume}%"; + format-source-muted = "󰍭 "; + format-icons = { + headphone = "󰋋"; + hands-free = "󰂑"; + headset = "󰂑"; + phone = "󰏲"; + portable = "󰦧"; + car = "󰄋"; + default = [ + "󰕿" + "󰖀" + "󰕾" + ]; + }; + scroll-step = 5; + on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + on-click-right = "swaync-client -t -sw"; }; - scroll-step = 5; - on-click = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - on-click-right = "swaync-client -t -sw"; - }; - "custom/notifications" = { - format = "{icon} {}"; - format-icons = { - notification = ""; - none = ""; - dnd-notification = "󰂛"; - dnd-none = "󰂛"; - inhibited-notification = ""; - inhibited-none = ""; - dnd-inhibited-notification = "󰂛"; - dnd-inhibited-none = "󰂛"; + "custom/notifications" = { + format = "{icon} {}"; + format-icons = { + notification = ""; + none = ""; + dnd-notification = "󰂛"; + dnd-none = "󰂛"; + inhibited-notification = ""; + inhibited-none = ""; + dnd-inhibited-notification = "󰂛"; + dnd-inhibited-none = "󰂛"; + }; + return-type = "json"; + exec-if = "which swaync-client"; + exec = "swaync-client -swb"; + on-click = "swaync-client -t -sw"; + on-click-right = "swaync-client -d -sw"; + escape = true; + tooltip = false; }; - return-type = "json"; - exec-if = "which swaync-client"; - exec = "swaync-client -swb"; - on-click = "swaync-client -t -sw"; - on-click-right = "swaync-client -d -sw"; - escape = true; - tooltip = false; - }; - # Clock - clock = { - format = "{:%b %d, %H:%M}"; - }; + # Clock + clock = { + format = "{:%b %d, %H:%M}"; + }; - temperature = { - thermal-zone = 2; - hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; - critical-threshold = 80; - format-critical = "󰔏 {temperatureC}°C"; - format = "󰔏 {temperatureC}°C"; - }; + temperature = { + thermal-zone = 2; + hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; + critical-threshold = 80; + format-critical = "󰔏 {temperatureC}°C"; + format = "󰔏 {temperatureC}°C"; + }; - cpu = { - format = "󰻠 {usage}%"; - tooltip = false; - on-click = "btop"; - }; + cpu = { + format = "󰻠 {usage}%"; + tooltip = false; + on-click = "btop"; + }; - memory = { - format = "󰍛 {}%"; - on-click = "btop"; - }; + memory = { + format = "󰍛 {}%"; + on-click = "btop"; + }; - disk = { - interval = 30; - format = "󰋊 {percentage_used}%"; - path = "/"; - on-click = "btop"; - }; + disk = { + interval = 30; + format = "󰋊 {percentage_used}%"; + path = "/"; + on-click = "btop"; + }; - network = { - format-wifi = "󰤨 {essid} ({signalStrength}%)"; - format-ethernet = "󰈀 {ipaddr}/{cidr}"; - tooltip-format = "{ifname} via {gwaddr} "; - format-linked = "󰈀 {ifname} (No IP)"; - format-disconnected = "󰖪 Disconnected"; - on-click = "wofi-wifi-menu"; - on-click-right = "nmcli radio wifi toggle"; - }; + network = { + format-wifi = "󰤨 {essid} ({signalStrength}%)"; + format-ethernet = "󰈀 {ipaddr}/{cidr}"; + tooltip-format = "{ifname} via {gwaddr} "; + format-linked = "󰈀 {ifname} (No IP)"; + format-disconnected = "󰖪 Disconnected"; + on-click = "wofi-wifi-menu"; + on-click-right = "nmcli radio wifi toggle"; + }; - bluetooth = { - format = "󰂯 {status}"; - format-connected = "󰂱 {device_alias}"; - format-connected-battery = "󰂱 {device_alias} {device_battery_percentage}%"; - tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected"; - tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}"; - tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; - tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; - on-click = "wofi-bluetooth-menu"; - on-click-right = "bluetoothctl power toggle"; - }; + bluetooth = { + format = "󰂯 {status}"; + format-connected = "󰂱 {device_alias}"; + format-connected-battery = "󰂱 {device_alias} {device_battery_percentage}%"; + tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected"; + tooltip-format-connected = "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}"; + tooltip-format-enumerate-connected = "{device_alias}\t{device_address}"; + tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; + on-click = "wofi-bluetooth-menu"; + on-click-right = "bluetoothctl power toggle"; + }; - # Keyboard input (language) - "hyprland/language" = { - format = "{}"; - format-en = "EN"; - format-ja = "JP"; + # Keyboard input (language) + "hyprland/language" = { + format = "{}"; + format-en = "EN"; + format-ja = "JP"; + }; }; }; + + style = '' + * { + font-family: "JetBrainsMonoNL Nerd Font"; + font-size: 12px; + border: none; + border-radius: 0; + min-height: 0; + } + + window#waybar { + background: transparent; + border-radius: 10px; + margin: 0px; + } + + .modules-left, + .modules-center, + .modules-right { + background: rgba(26, 27, 38, 0.8); + border-radius: 10px; + margin: 4px; + padding: 0 10px; + } + + #workspaces { + padding: 0 5px; + } + + #workspaces button { + padding: 0 8px; + background: transparent; + color: #c0caf5; + border-radius: 5px; + margin: 2px; + } + + #workspaces button:hover { + background: rgba(125, 196, 228, 0.2); + color: #7dcae4; + } + + #workspaces button.active { + background: #7dcae4; + color: #1a1b26; + } + + #pulseaudio, + #custom-notifications, + #clock, + #temperature, + #cpu, + #memory, + #disk, + #network, + #bluetooth, + #language { + padding: 0 8px; + color: #c0caf5; + margin: 2px; + } + + #temperature.critical { + color: #f7768e; + } + + #network.disconnected { + color: #f7768e; + } + + #bluetooth.disabled { + color: #565f89; + } + + #pulseaudio.muted { + color: #565f89; + } + ''; }; - - style = '' - * { - font-family: "JetBrainsMonoNL Nerd Font"; - font-size: 12px; - border: none; - border-radius: 0; - min-height: 0; - } - - window#waybar { - background: transparent; - border-radius: 10px; - margin: 0px; - } - - .modules-left, - .modules-center, - .modules-right { - background: rgba(26, 27, 38, 0.8); - border-radius: 10px; - margin: 4px; - padding: 0 10px; - } - - #workspaces { - padding: 0 5px; - } - - #workspaces button { - padding: 0 8px; - background: transparent; - color: #c0caf5; - border-radius: 5px; - margin: 2px; - } - - #workspaces button:hover { - background: rgba(125, 196, 228, 0.2); - color: #7dcae4; - } - - #workspaces button.active { - background: #7dcae4; - color: #1a1b26; - } - - #pulseaudio, - #custom-notifications, - #clock, - #temperature, - #cpu, - #memory, - #disk, - #network, - #bluetooth, - #language { - padding: 0 8px; - color: #c0caf5; - margin: 2px; - } - - #temperature.critical { - color: #f7768e; - } - - #network.disconnected { - color: #f7768e; - } - - #bluetooth.disabled { - color: #565f89; - } - - #pulseaudio.muted { - color: #565f89; - } - ''; }; } diff --git a/hosts/lio/flake.lock b/hosts/lio/flake.lock index b5a5b8e..be8c94d 100644 --- a/hosts/lio/flake.lock +++ b/hosts/lio/flake.lock @@ -25,8 +25,55 @@ "type": "github" } }, + "caelestia": { + "inputs": { + "caelestia-cli": "caelestia-cli", + "nixpkgs": "nixpkgs", + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1756116835, + "narHash": "sha256-Vs2zMLYoVdUhbL+Wtg+AactV4V7vyeKDCVdibLhRe+Q=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "783057ab0d694de7f3d79e96851bcdcfe1965cbd", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, + "caelestia-cli": { + "inputs": { + "caelestia-shell": [ + "common", + "caelestia" + ], + "nixpkgs": [ + "common", + "caelestia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1755952278, + "narHash": "sha256-Y4F8sFJ3P3MExSuwDAnccfG1RxU4VdoW9yDRtDqG8qA=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "db1e0da5bbd259f1218b4ae54d0327b0c4a46f78", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, "common": { "inputs": { + "caelestia": "caelestia", "home-manager": "home-manager", "nix-flatpak": "nix-flatpak", "ragenix": "ragenix" @@ -100,7 +147,7 @@ }, "home-manager": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs_2" }, "locked": { "lastModified": 1753592768, @@ -158,16 +205,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753345091, - "narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=", - "owner": "NixOS", + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-25.05", + "owner": "nixos", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -189,6 +236,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1753345091, + "narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1741379970, "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", @@ -204,7 +267,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1755471983, "narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=", @@ -220,7 +283,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1755648324, "narHash": "sha256-+2TxwJEXWXGC7JBsRGUHtmQ66lRGPcDI2kFKTTU5e2s=", @@ -235,7 +298,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1755186698, "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", @@ -1132,6 +1195,28 @@ } }, "quickshell": { + "inputs": { + "nixpkgs": [ + "common", + "caelestia", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1753595452, + "narHash": "sha256-vqkSDvh7hWhPvNjMjEDV4KbSCv2jyl2Arh73ZXe274k=", + "ref": "refs/heads/master", + "rev": "a5431dd02dc23d9ef1680e67777fed00fe5f7cda", + "revCount": 665, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, + "quickshell_2": { "inputs": { "nixpkgs": [ "zaphkiel", @@ -1157,7 +1242,7 @@ "agenix": "agenix", "crane": "crane", "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "rust-overlay": "rust-overlay" }, "locked": { @@ -1177,7 +1262,7 @@ "root": { "inputs": { "common": "common", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nixpkgs-unstable": "nixpkgs-unstable", "ros_neovim": "ros_neovim", "zaphkiel": "zaphkiel" @@ -1185,7 +1270,7 @@ }, "ros_neovim": { "inputs": { - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim", "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.nvim", "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring", @@ -1347,8 +1432,8 @@ }, "zaphkiel": { "inputs": { - "nixpkgs": "nixpkgs_5", - "quickshell": "quickshell", + "nixpkgs": "nixpkgs_6", + "quickshell": "quickshell_2", "systems": "systems_3" }, "locked": { diff --git a/hosts/lio/flake.nix b/hosts/lio/flake.nix index 4e0bfd5..2fe3978 100644 --- a/hosts/lio/flake.nix +++ b/hosts/lio/flake.nix @@ -29,7 +29,13 @@ nixosConfigurations = { "${configuration_name}" = ( lib.nixosSystem { - specialArgs = { inherit inputs; }; + specialArgs = { + inherit inputs; + upkgs = import inputs.nixpkgs-unstable { + system = "x86_64-linux"; + config.allowUnfree = true; + }; + }; modules = [ common.nixosModules.default ros_neovim.nixosModules.default @@ -41,6 +47,7 @@ { config, pkgs, + upkgs, lib, ... }: @@ -80,6 +87,11 @@ # Allow emulation of aarch64-linux binaries for cross compiling boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; + home-manager.extraSpecialArgs = { + inherit inputs; + inherit upkgs; + }; + ringofstorms_common = { systemName = configuration_name; boot.systemd.enable = true; @@ -90,6 +102,8 @@ }; desktopEnvironment.hyprland = { enable = true; + waybar.enable = true; + swaync.enable = true; extraOptions = let main = "desc:ASUSTek COMPUTER INC ASUS PG43U 0x01010101";