From 4e3922c4a4fbf626465164e533fa7088506b971e Mon Sep 17 00:00:00 2001 From: alisceon Date: Mon, 16 Mar 2026 18:49:10 +0100 Subject: [PATCH] fix xkb issues, change espanso formatting, noctalia support --- flake.lock | 134 +++++++++++++++++++---- flake.nix | 29 +++-- home/modules/programs/noctalia.nix | 78 +++++++++++++ home/modules/wm/sway/default.nix | 19 +--- home/modules/wm/sway/shells/default.nix | 27 +++++ home/modules/wm/sway/shells/noctalia.nix | 18 +++ 6 files changed, 257 insertions(+), 48 deletions(-) create mode 100644 home/modules/programs/noctalia.nix create mode 100644 home/modules/wm/sway/shells/default.nix create mode 100644 home/modules/wm/sway/shells/noctalia.nix diff --git a/flake.lock b/flake.lock index 692eee9..fd19dcb 100644 --- a/flake.lock +++ b/flake.lock @@ -205,11 +205,11 @@ ] }, "locked": { - "lastModified": 1773264488, - "narHash": "sha256-rK0507bDuWBrZo+0zts9bCs/+RRUEHuvFE5DHWPxX/Q=", + "lastModified": 1773681845, + "narHash": "sha256-o8hrZrigP0JYcwnglCp8Zi8jQafWsxbDtRRPzuVwFxY=", "owner": "nix-community", "repo": "home-manager", - "rev": "5c0f63f8d55040a7eed69df7e3fcdd15dfb5a04c", + "rev": "0759e0e137305bc9d0c52c204c6d8dffe6f601a6", "type": "github" }, "original": { @@ -226,11 +226,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1773196765, - "narHash": "sha256-GvveRb/AiCb/dKXculKiNiAMW4CXMPwpeyi6c/S/a7o=", + "lastModified": 1773456096, + "narHash": "sha256-vlV3HnHBxnfW4a2ifabH3L/3iGGjA5ejEP7XD7EOC+E=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "4d744dff3d8e0d9e7f85e06244ad353bdcf424ff", + "rev": "ce7440a5fced512773e8e695d8a7bd57f33c7e6d", "type": "github" }, "original": { @@ -257,11 +257,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1773282481, - "narHash": "sha256-b/GV2ysM8mKHhinse2wz+uP37epUrSE+sAKXy/xvBY4=", + "lastModified": 1773646010, + "narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fe416aaedd397cacb33a610b33d60ff2b431b127", + "rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", "type": "github" }, "original": { @@ -273,11 +273,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1773222311, - "narHash": "sha256-BHoB/XpbqoZkVYZCfXJXfkR+GXFqwb/4zbWnOr2cRcU=", + "lastModified": 1773610124, + "narHash": "sha256-EpC7ELOKmb+xXaqpK5ZRpJ5g9fxxg6tWny7/rUBfrwk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0590cd39f728e129122770c029970378a79d076a", + "rev": "9fe1300f4360e13f39d6d1d006e54fd5093e9ad5", "type": "github" }, "original": { @@ -287,6 +287,67 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1770107345, + "narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "noctalia": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "noctalia-qs": [ + "noctalia-qs" + ] + }, + "locked": { + "lastModified": 1773670009, + "narHash": "sha256-LEiA7ntxR6Biep4fgD2Jh9bB1g2olRNAToFUS51szDs=", + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "rev": "9511f1fce45ffe763d7954f3207e3dfd644c97f2", + "type": "github" + }, + "original": { + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "type": "github" + } + }, + "noctalia-qs": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_2", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1773629133, + "narHash": "sha256-9/GtCljeEYQAQlU4LB/o8cTJ8TzYvNCzf4ILnW5Rs3g=", + "owner": "noctalia-dev", + "repo": "noctalia-qs", + "rev": "5794d3a88fced826e1903164d77a7b07bdb93ff6", + "type": "github" + }, + "original": { + "owner": "noctalia-dev", + "repo": "noctalia-qs", + "type": "github" + } + }, "nur": { "inputs": { "flake-parts": "flake-parts", @@ -295,11 +356,11 @@ ] }, "locked": { - "lastModified": 1773428326, - "narHash": "sha256-vu0CCPOMNwXF9M1aW517HL67lXgExR0A3KuWGKPdOxc=", + "lastModified": 1773682536, + "narHash": "sha256-BfHJu2vRuHNTwCP6Xzc1j/WY36lLID7dhu3dGj9NOqc=", "owner": "nix-community", "repo": "NUR", - "rev": "8d1130d6d780fa95338518911798662df04ca9f8", + "rev": "7bdcf4a25232bfc9ac9259e9abc7bfe25cf84f2b", "type": "github" }, "original": { @@ -316,11 +377,11 @@ ] }, "locked": { - "lastModified": 1773428326, - "narHash": "sha256-vu0CCPOMNwXF9M1aW517HL67lXgExR0A3KuWGKPdOxc=", + "lastModified": 1773682536, + "narHash": "sha256-BfHJu2vRuHNTwCP6Xzc1j/WY36lLID7dhu3dGj9NOqc=", "owner": "nix-community", "repo": "NUR", - "rev": "8d1130d6d780fa95338518911798662df04ca9f8", + "rev": "7bdcf4a25232bfc9ac9259e9abc7bfe25cf84f2b", "type": "github" }, "original": { @@ -360,6 +421,8 @@ "nix-minecraft": "nix-minecraft", "nixpkgs": "nixpkgs_2", "nixpkgs-unstable": "nixpkgs-unstable", + "noctalia": "noctalia", + "noctalia-qs": "noctalia-qs", "nur": "nur", "nur-unstable": "nur-unstable", "stylix": "stylix" @@ -378,7 +441,7 @@ "nixpkgs" ], "nur": "nur_2", - "systems": "systems_2", + "systems": "systems_3", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -415,6 +478,21 @@ } }, "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -509,6 +587,24 @@ "repo": "base16-zed", "type": "github" } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1772660329, + "narHash": "sha256-IjU1FxYqm+VDe5qIOxoW+pISBlGvVApRjiw/Y/ttJzY=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "3710e0e1218041bbad640352a0440114b1e10428", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 64db494..753ed17 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,15 @@ url = "github:danth/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; + noctalia = { + url = "github:noctalia-dev/noctalia-shell"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.noctalia-qs.follows = "noctalia-qs"; + }; + noctalia-qs = { + url = "github:noctalia-dev/noctalia-qs"; + inputs.nixpkgs.follows = "nixpkgs"; + }; nix-minecraft.url = "github:Infinidoge/nix-minecraft"; }; @@ -27,11 +36,6 @@ self, nixpkgs, nixpkgs-unstable, - nur, - nur-unstable, - home-manager, - stylix, - nix-minecraft, ... }: let @@ -46,14 +50,14 @@ inherit system; config.allowUnfree = true; flake.setFlakeRegistry = true; - overlays = [ nur.overlays.default ]; + overlays = [ inputs.nur.overlays.default ]; }; pkgs-unstable = import nixpkgs-unstable { inherit system; config.allowUnfree = true; flake.setFlakeRegistry = true; - overlays = [ nur-unstable.overlays.default ]; + overlays = [ inputs.nur-unstable.overlays.default ]; }; sharedSpecialArgs = { @@ -63,8 +67,8 @@ sharedModules = [ ./nixos/modules/base.nix - stylix.nixosModules.stylix - home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + inputs.home-manager.nixosModules.home-manager ({ ... }: { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; @@ -93,7 +97,10 @@ ++ [ { home-manager.users.alisceon.imports = - [ ./home/profiles/base.nix ] + [ + inputs.noctalia.homeModules.default + ./home/profiles/base.nix + ] ++ hmModules; home-manager.users.root.imports = [ ./home/users/root/default.nix @@ -142,7 +149,7 @@ nixosModules = serverModules; hmModules = serverHomeModules; extraModules = [ - nix-minecraft.nixosModules.minecraft-servers + inputs.nix-minecraft.nixosModules.minecraft-servers { nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; } ]; }; diff --git a/home/modules/programs/noctalia.nix b/home/modules/programs/noctalia.nix new file mode 100644 index 0000000..6121565 --- /dev/null +++ b/home/modules/programs/noctalia.nix @@ -0,0 +1,78 @@ +{ pkgs, inputs, ... }: +{ + programs.noctalia-shell = { + enable = true; + systemd.enable = true; + settings = { + # configure noctalia here + dock.enabled = false; + osd.enabled = false; + location. + location = { + weatherEnabled = false; + monthBeforeDay = true; + }; + general = { + avatarImage = "/home/alisceon/Pictures/system/prof.png"; + radiusRatio = 0.2; + }; + notifications = { + density = "compact"; + location = "top"; + }; + appLauncher = { + density = "compact"; + }; + bar = { + density = "compact"; + position = "top"; + showCapsule = false; + widgets = { + left = [ + { + id = "ControlCenter"; + useDistroLogo = true; + } + { + hideUnoccupied = false; + id = "Workspace"; + labelMode = "index"; + pillSize = 1; + + } + ]; + center = [ + { + id = "ActiveWindow"; + maxWidth = 512; + showIcon = false; + } + ]; + right = [ + { + id = "Tray"; + } + { + id = "NotificationHistory"; + showUnreadBadge = true; + unreadBadgeColor = "primary"; + } + { + id = "Battery"; + alwaysShowPercentage = true; + warningThreshold = 30; + } + { + id = "Clock"; + formatHorizontal = "HH:mm"; + formatVertical = "HH mm"; + useMonospacedFont = true; + usePrimaryColor = true; + } + ]; + }; + }; + }; + }; + +} \ No newline at end of file diff --git a/home/modules/wm/sway/default.nix b/home/modules/wm/sway/default.nix index 3eed841..b7e954e 100644 --- a/home/modules/wm/sway/default.nix +++ b/home/modules/wm/sway/default.nix @@ -14,14 +14,12 @@ in imports = [ ./gtk.nix ./xdg.nix + ./shells/noctalia.nix ../../programs/foot.nix - ../../programs/rofi.nix ../../programs/qutebrowser.nix ../../programs/swaylock.nix - ../../programs/waybar.nix ../../services/espanso.nix ../../services/gnome-keyring.nix - ../../services/mako.nix ../../services/swayidle.nix ]; @@ -32,7 +30,6 @@ in modifier = key_mod; startup = [ { command = "systemctl --user start libinput-gestures"; } - { command = "${uwsm} swaybg -m fill -i /home/alisceon/Pictures/system/bg.png"; } ]; bars = [ ]; input = { @@ -122,30 +119,16 @@ in "${key_mod}+${key_mod_misc}+Shift+Tab" = "workspace prev"; "Mod4+space" = "exec ${notify} -t 2000 \"$(${pkgs.xonsh}/bin/xonsh ${repoRoot}/util/toggle_xkb.xsh)\""; - "${key_mod}+Shift+r" = "reload"; - "${key_mod}+Ctrl+r" = "restart"; - "${key_mod}+Backspace" = "exec ${nag} -m 'TuneD profiles:' -Z 'Performance' 'tuned-adm profile accelerator-performance' -Z 'Balanced' 'tuned-adm profile balanced' -Z 'Power Save' 'tuned-adm profile powersave'"; "${key_mod}+Shift+q" = "kill"; "Alt+F4" = "kill"; - "${key_mod}+L" = "exec ${lock}"; - "${key_mod}+Escape" = "exec ${nag} -m 'Shutdown options:' -Z 'Power Off' 'systemctl poweroff' -Z 'Reboot' 'systemctl reboot' -Z 'Logout' 'swaymsg exit'"; - "${key_mod}+Return" = "exec ${uwsm} ${term}"; - "${key_mod}+d" = "exec ${uwsm} ${dmenu} -show drun"; "${key_mod}+s" = "exec ${uwsm} ${espanso} search"; "${key_mod}+Shift+e" = "exec ${uwsm} ${espanso} toggle"; "${key_mod}+Shift+s" = "exec grimshot savecopy area"; "${key_mod}+Ctrl+s" = "exec grimshot savecopy output"; - - "XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +3%"; - "XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -3%"; - "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle"; - "XF86AudioPlay" = "exec playerctl play-pause"; "${key_mod}+XF86AudioPlay" = "exec ${notify} -t 2000 \"$(${pkgs.xonsh}/bin/xonsh ${repoRoot}/util/swap_sound_device.xsh)\""; - "XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 9"; - "XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 3"; }; window = { titlebar = false; diff --git a/home/modules/wm/sway/shells/default.nix b/home/modules/wm/sway/shells/default.nix new file mode 100644 index 0000000..653e0f1 --- /dev/null +++ b/home/modules/wm/sway/shells/default.nix @@ -0,0 +1,27 @@ +{ ... }: +{ + commands = import ../../../../lib/commands.nix { inherit pkgs; }; + inherit (commands) uwsm lock term notify nag dmenu espanso; + imports = [ + ../../../programs/rofi.nix + ../../../programs/waybar.nix + ../../../services/mako.nix + ]; + wayland.windowManager.sway.config = { + startup = [ + { command = "${uwsm} swaybg -m fill -i /home/alisceon/Pictures/system/bg.png"; } + ]; + }; + keybindings = { + "${key_mod}+L" = "exec ${lock}"; + "${key_mod}+Escape" = "exec ${nag} -m 'Shutdown options:' -Z 'Power Off' 'systemctl poweroff' -Z 'Reboot' 'systemctl reboot' -Z 'Logout' 'swaymsg exit'"; + "${key_mod}+Backspace" = "exec ${nag} -m 'TuneD profiles:' -Z 'Performance' 'tuned-adm profile accelerator-performance' -Z 'Balanced' 'tuned-adm profile balanced' -Z 'Power Save' 'tuned-adm profile powersave'" + "${key_mod}+d" = "exec ${uwsm} ${dmenu} -show drun"; + "XF86AudioRaiseVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ +3%"; + "XF86AudioLowerVolume" = "exec pactl set-sink-volume @DEFAULT_SINK@ -3%"; + "XF86AudioMute" = "exec pactl set-sink-mute @DEFAULT_SINK@ toggle"; + "XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 9"; + "XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 3"; + "XF86AudioPlay" = "exec playerctl play-pause"; + }; +} diff --git a/home/modules/wm/sway/shells/noctalia.nix b/home/modules/wm/sway/shells/noctalia.nix new file mode 100644 index 0000000..6074e70 --- /dev/null +++ b/home/modules/wm/sway/shells/noctalia.nix @@ -0,0 +1,18 @@ +{ ... }: +let + ipc = "noctalia-shell ipc call"; +in +{ + imports = [ + ../../../programs/noctalia.nix + ]; + wayland.windowManager.sway.config.keybindings = { + "Mod4+d" = "exec ${ipc} launcher togggle"; + "XF86AudioRaiseVolume" = "exec ${ipc} volume increase"; + "XF86AudioLowerVolume" = "exec ${ipc} volume decrease"; + "XF86AudioMute" = "exec ${ipc} volume muteOutput"; + "XF86MonBrightnessUp" = "exec ${ipc} brightness increase"; + "XF86MonBrightnessDown" = "exec ${ipc} brightness decrease"; + "XF86AudioPlay" = "exec ${ipc} media playPause"; + }; +}