go back to waybar for now

This commit is contained in:
RingOfStorms (Joshua Bell) 2025-08-26 13:10:14 -05:00
parent 208e16e666
commit f2aed4dc5f
7 changed files with 662 additions and 465 deletions

View file

@ -29,6 +29,12 @@ with lib;
default = { }; default = { };
description = "Extra options for Hyprland configuration."; 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 { config = lib.mkIf cfg.enable {

View file

@ -3,6 +3,7 @@
imports = [ imports = [
./theme.nix ./theme.nix
./hyprland.nix ./hyprland.nix
# ./quickshell.nix
./waybar.nix ./waybar.nix
./hyprpolkitagent.nix ./hyprpolkitagent.nix
./wofi.nix ./wofi.nix

View file

@ -2,6 +2,7 @@
osConfig, osConfig,
lib, lib,
pkgs, pkgs,
upkgs,
... ...
}: }:
let let
@ -15,8 +16,7 @@ let
in in
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
quickshell upkgs.quickshell
pulseaudio pulseaudio
brightnessctl brightnessctl
networkmanager networkmanager
@ -27,4 +27,67 @@ in
systemd systemd
hyprlock 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" ];
};
};
} }

View file

@ -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 = { config = lib.mkIf cfg.enable {
enable = true; services.swaync = {
settings = { enable = true;
ignore = [ settings = {
"com.spotify.Client" ignore = [
]; "com.spotify.Client"
];
positionX = "right"; positionX = "right";
positionY = "top"; positionY = "top";
layer = "overlay"; layer = "overlay";
control-center-layer = "top"; control-center-layer = "top";
layer-shell = true; layer-shell = true;
cssPriority = "application"; cssPriority = "application";
control-center-margin-top = 0; control-center-margin-top = 0;
control-center-margin-bottom = 0; control-center-margin-bottom = 0;
control-center-margin-right = 0; control-center-margin-right = 0;
control-center-margin-left = 0; control-center-margin-left = 0;
notification-2fa-action = true; notification-2fa-action = true;
notification-inline-replies = false; notification-inline-replies = false;
notification-icon-size = 64; notification-icon-size = 64;
notification-body-image-height = 100; notification-body-image-height = 100;
notification-body-image-width = 200; notification-body-image-width = 200;
timeout = 10; timeout = 10;
timeout-low = 5; timeout-low = 5;
timeout-critical = 0; timeout-critical = 0;
control-center-width = 500; control-center-width = 500;
control-center-height = 600; control-center-height = 600;
notification-window-width = 500; notification-window-width = 500;
keyboard-shortcuts = true; keyboard-shortcuts = true;
image-visibility = "when-available"; image-visibility = "when-available";
transition-time = 200; transition-time = 200;
hide-on-clear = false; hide-on-clear = false;
hide-on-action = true; hide-on-action = true;
script-fail-notify = true; script-fail-notify = true;
widgets = [ widgets = [
"inhibitors" "inhibitors"
"title" "title"
"dnd" "dnd"
"volume" "volume"
"backlight" "backlight"
"mpris" "mpris"
"buttons-grid#quick" "buttons-grid#quick"
"notifications" "notifications"
]; ];
# Widget configurations # Widget configurations
widget-config = { widget-config = {
inhibitors = { inhibitors = {
text = "Inhibitors"; text = "Inhibitors";
button-text = "Clear All"; button-text = "Clear All";
clear-all-button = true; clear-all-button = true;
}; };
title = { title = {
text = "Notifications"; text = "Notifications";
clear-all-button = true; clear-all-button = true;
button-text = "Clear All"; button-text = "Clear All";
}; };
dnd.text = "Do Not Disturb"; dnd.text = "Do Not Disturb";
mpris = { mpris = {
image-size = 96; image-size = 96;
image-radius = 12; image-radius = 12;
}; };
volume = { volume = {
label = "󰕾"; label = "󰕾";
show-per-app = true; show-per-app = true;
}; };
backlight = { backlight = {
label = "󰃟"; label = "󰃟";
device = "intel_backlight"; device = "intel_backlight";
}; };
"buttons-grid#quick" = { "buttons-grid#quick" = {
columns = 4; # adjust: 3/4/5 columns = 4; # adjust: 3/4/5
icon-size = 20; # tweak to taste icon-size = 20; # tweak to taste
actions = [ actions = [
# Power # Power
{ {
label = "󰐥"; label = "󰐥";
tooltip = "Shutdown"; tooltip = "Shutdown";
command = "confirm-action 'systemctl poweroff' 'Shutdown?'"; command = "confirm-action 'systemctl poweroff' 'Shutdown?'";
} }
{ {
label = "󰜉"; label = "󰜉";
tooltip = "Reboot"; tooltip = "Reboot";
command = "confirm-action 'systemctl reboot' 'Reboot?'"; command = "confirm-action 'systemctl reboot' 'Reboot?'";
} }
{ {
label = "󰍃"; label = "󰍃";
tooltip = "Logout"; tooltip = "Logout";
command = "confirm-action 'hyprctl dispatch exit' '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;
}
'';
}; };
} }

View file

@ -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 = { config = lib.mkIf cfg.enable {
enable = true; programs.waybar = {
systemd.enable = true; enable = true;
settings = { systemd.enable = true;
mainBar = { settings = {
layer = "top"; mainBar = {
position = "top"; layer = "top";
height = 30; position = "top";
spacing = 6; height = 30;
margin-top = 0; spacing = 6;
margin-bottom = 0; margin-top = 0;
margin-left = 10; margin-bottom = 0;
margin-right = 10; margin-left = 10;
margin-right = 10;
modules-left = [ modules-left = [
"hyprland/workspaces" "hyprland/workspaces"
]; ];
modules-center = [ modules-center = [
"clock" "clock"
"temperature" "temperature"
"cpu" "cpu"
"memory" "memory"
"disk" "disk"
]; ];
modules-right = [ modules-right = [
"pulseaudio" "pulseaudio"
"network" "network"
"bluetooth" "bluetooth"
"custom/notifications" "custom/notifications"
"hyprland/language" "hyprland/language"
]; ];
# Workspaces configuration # Workspaces configuration
"hyprland/workspaces" = { "hyprland/workspaces" = {
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
"1" = ""; "1" = "";
"2" = ""; "2" = "";
"3" = ""; "3" = "";
"4" = ""; "4" = "";
"5" = ""; "5" = "";
"6" = ""; "6" = "";
"7" = ""; "7" = "";
"8" = ""; "8" = "";
"9" = ""; "9" = "";
"10" = ""; "10" = "";
"11" = ""; "11" = "";
"12" = ""; "12" = "";
"13" = ""; "13" = "";
"14" = ""; "14" = "";
"15" = ""; "15" = "";
"16" = ""; "16" = "";
"17" = ""; "17" = "";
"18" = ""; "18" = "";
"19" = ""; "19" = "";
"20" = ""; "20" = "";
};
show-special = false;
}; };
show-special = false;
};
pulseaudio = { pulseaudio = {
format = "{icon} {volume}%"; format = "{icon} {volume}%";
format-bluetooth = "󰂰 {volume}%"; format-bluetooth = "󰂰 {volume}%";
format-bluetooth-muted = "󰂲 "; format-bluetooth-muted = "󰂲 ";
format-muted = "󰖁 "; format-muted = "󰖁 ";
format-source = "󰍬 {volume}%"; format-source = "󰍬 {volume}%";
format-source-muted = "󰍭 "; format-source-muted = "󰍭 ";
format-icons = { format-icons = {
headphone = "󰋋"; headphone = "󰋋";
hands-free = "󰂑"; hands-free = "󰂑";
headset = "󰂑"; headset = "󰂑";
phone = "󰏲"; phone = "󰏲";
portable = "󰦧"; portable = "󰦧";
car = "󰄋"; car = "󰄋";
default = [ 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" = { "custom/notifications" = {
format = "{icon} {}"; format = "{icon} {}";
format-icons = { format-icons = {
notification = ""; notification = "";
none = ""; none = "";
dnd-notification = "󰂛"; dnd-notification = "󰂛";
dnd-none = "󰂛"; dnd-none = "󰂛";
inhibited-notification = ""; inhibited-notification = "";
inhibited-none = ""; inhibited-none = "";
dnd-inhibited-notification = "󰂛"; dnd-inhibited-notification = "󰂛";
dnd-inhibited-none = "󰂛"; 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
clock = { clock = {
format = "{:%b %d, %H:%M}"; format = "{:%b %d, %H:%M}";
}; };
temperature = { temperature = {
thermal-zone = 2; thermal-zone = 2;
hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input"; hwmon-path = "/sys/class/hwmon/hwmon2/temp1_input";
critical-threshold = 80; critical-threshold = 80;
format-critical = "󰔏 {temperatureC}°C"; format-critical = "󰔏 {temperatureC}°C";
format = "󰔏 {temperatureC}°C"; format = "󰔏 {temperatureC}°C";
}; };
cpu = { cpu = {
format = "󰻠 {usage}%"; format = "󰻠 {usage}%";
tooltip = false; tooltip = false;
on-click = "btop"; on-click = "btop";
}; };
memory = { memory = {
format = "󰍛 {}%"; format = "󰍛 {}%";
on-click = "btop"; on-click = "btop";
}; };
disk = { disk = {
interval = 30; interval = 30;
format = "󰋊 {percentage_used}%"; format = "󰋊 {percentage_used}%";
path = "/"; path = "/";
on-click = "btop"; on-click = "btop";
}; };
network = { network = {
format-wifi = "󰤨 {essid} ({signalStrength}%)"; format-wifi = "󰤨 {essid} ({signalStrength}%)";
format-ethernet = "󰈀 {ipaddr}/{cidr}"; format-ethernet = "󰈀 {ipaddr}/{cidr}";
tooltip-format = "{ifname} via {gwaddr} "; tooltip-format = "{ifname} via {gwaddr} ";
format-linked = "󰈀 {ifname} (No IP)"; format-linked = "󰈀 {ifname} (No IP)";
format-disconnected = "󰖪 Disconnected"; format-disconnected = "󰖪 Disconnected";
on-click = "wofi-wifi-menu"; on-click = "wofi-wifi-menu";
on-click-right = "nmcli radio wifi toggle"; on-click-right = "nmcli radio wifi toggle";
}; };
bluetooth = { bluetooth = {
format = "󰂯 {status}"; format = "󰂯 {status}";
format-connected = "󰂱 {device_alias}"; format-connected = "󰂱 {device_alias}";
format-connected-battery = "󰂱 {device_alias} {device_battery_percentage}%"; format-connected-battery = "󰂱 {device_alias} {device_battery_percentage}%";
tooltip-format = "{controller_alias}\t{controller_address}\n\n{num_connections} connected"; 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-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 = "{device_alias}\t{device_address}";
tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%"; tooltip-format-enumerate-connected-battery = "{device_alias}\t{device_address}\t{device_battery_percentage}%";
on-click = "wofi-bluetooth-menu"; on-click = "wofi-bluetooth-menu";
on-click-right = "bluetoothctl power toggle"; on-click-right = "bluetoothctl power toggle";
}; };
# Keyboard input (language) # Keyboard input (language)
"hyprland/language" = { "hyprland/language" = {
format = "{}"; format = "{}";
format-en = "EN"; format-en = "EN";
format-ja = "JP"; 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;
}
'';
}; };
} }

115
hosts/lio/flake.lock generated
View file

@ -25,8 +25,55 @@
"type": "github" "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": { "common": {
"inputs": { "inputs": {
"caelestia": "caelestia",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"ragenix": "ragenix" "ragenix": "ragenix"
@ -100,7 +147,7 @@
}, },
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs_2"
}, },
"locked": { "locked": {
"lastModified": 1753592768, "lastModified": 1753592768,
@ -158,16 +205,16 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1753345091, "lastModified": 1755615617,
"narHash": "sha256-CdX2Rtvp5I8HGu9swBmYuq+ILwRxpXdJwlpg8jvN4tU=", "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=",
"owner": "NixOS", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3ff0e34b1383648053bba8ed03f201d3466f90c9", "rev": "20075955deac2583bb12f07151c2df830ef346b4",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "nixos",
"ref": "nixos-25.05", "ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -189,6 +236,22 @@
} }
}, },
"nixpkgs_2": { "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": { "locked": {
"lastModified": 1741379970, "lastModified": 1741379970,
"narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=", "narHash": "sha256-Wh7esNh7G24qYleLvgOSY/7HlDUzWaL/n4qzlBePpiw=",
@ -204,7 +267,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1755471983, "lastModified": 1755471983,
"narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=", "narHash": "sha256-axUoWcm4cNQ36jOlnkD9D40LTfSQgk8ExfHSRm3rTtg=",
@ -220,7 +283,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1755648324, "lastModified": 1755648324,
"narHash": "sha256-+2TxwJEXWXGC7JBsRGUHtmQ66lRGPcDI2kFKTTU5e2s=", "narHash": "sha256-+2TxwJEXWXGC7JBsRGUHtmQ66lRGPcDI2kFKTTU5e2s=",
@ -235,7 +298,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1755186698, "lastModified": 1755186698,
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=",
@ -1132,6 +1195,28 @@
} }
}, },
"quickshell": { "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": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"zaphkiel", "zaphkiel",
@ -1157,7 +1242,7 @@
"agenix": "agenix", "agenix": "agenix",
"crane": "crane", "crane": "crane",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_3",
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
@ -1177,7 +1262,7 @@
"root": { "root": {
"inputs": { "inputs": {
"common": "common", "common": "common",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"ros_neovim": "ros_neovim", "ros_neovim": "ros_neovim",
"zaphkiel": "zaphkiel" "zaphkiel": "zaphkiel"
@ -1185,7 +1270,7 @@
}, },
"ros_neovim": { "ros_neovim": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_5",
"nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim", "nvim_plugin-Almo7aya/openingh.nvim": "nvim_plugin-Almo7aya/openingh.nvim",
"nvim_plugin-CopilotC-Nvim/CopilotChat.nvim": "nvim_plugin-CopilotC-Nvim/CopilotChat.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", "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring": "nvim_plugin-JoosepAlviste/nvim-ts-context-commentstring",
@ -1347,8 +1432,8 @@
}, },
"zaphkiel": { "zaphkiel": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_6",
"quickshell": "quickshell", "quickshell": "quickshell_2",
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": { "locked": {

View file

@ -29,7 +29,13 @@
nixosConfigurations = { nixosConfigurations = {
"${configuration_name}" = ( "${configuration_name}" = (
lib.nixosSystem { lib.nixosSystem {
specialArgs = { inherit inputs; }; specialArgs = {
inherit inputs;
upkgs = import inputs.nixpkgs-unstable {
system = "x86_64-linux";
config.allowUnfree = true;
};
};
modules = [ modules = [
common.nixosModules.default common.nixosModules.default
ros_neovim.nixosModules.default ros_neovim.nixosModules.default
@ -41,6 +47,7 @@
{ {
config, config,
pkgs, pkgs,
upkgs,
lib, lib,
... ...
}: }:
@ -80,6 +87,11 @@
# Allow emulation of aarch64-linux binaries for cross compiling # Allow emulation of aarch64-linux binaries for cross compiling
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
home-manager.extraSpecialArgs = {
inherit inputs;
inherit upkgs;
};
ringofstorms_common = { ringofstorms_common = {
systemName = configuration_name; systemName = configuration_name;
boot.systemd.enable = true; boot.systemd.enable = true;
@ -90,6 +102,8 @@
}; };
desktopEnvironment.hyprland = { desktopEnvironment.hyprland = {
enable = true; enable = true;
waybar.enable = true;
swaync.enable = true;
extraOptions = extraOptions =
let let
main = "desc:ASUSTek COMPUTER INC ASUS PG43U 0x01010101"; main = "desc:ASUSTek COMPUTER INC ASUS PG43U 0x01010101";