diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/nixos/desktop/default.nix | 1 | ||||
| -rw-r--r-- | modules/nixos/desktop/niri/default.nix | 62 |
2 files changed, 63 insertions, 0 deletions
diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix index 83a4fba..bb5af2d 100644 --- a/modules/nixos/desktop/default.nix +++ b/modules/nixos/desktop/default.nix @@ -14,6 +14,7 @@ in ./budgie ./gnome + ./niri ./plasma ]; diff --git a/modules/nixos/desktop/niri/default.nix b/modules/nixos/desktop/niri/default.nix new file mode 100644 index 0000000..87d4169 --- /dev/null +++ b/modules/nixos/desktop/niri/default.nix @@ -0,0 +1,62 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.desktop.niri; + + inherit (lib) version; + minVersion = "24.11"; + hasNiri = lib.versionAtLeast version minVersion; +in +{ + options.desktop.niri = { + enable = lib.mkEnableOption "Niri desktop settings"; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + environment = { + sessionVariables = { + NIXOS_OZONE_WL = "1"; # Niri doesn't have native XWayland support + }; + + systemPackages = with pkgs; [ + alacritty # Terminal + fuzzel # Application runner + mako # Notification daemon + pantheon.pantheon-agent-polkit # Polkit agent + swaylock # Screen locker + ]; + }; + + services.greetd = { + enable = true; + settings = { + default_session.command = toString [ + (lib.getExe pkgs.greetd.tuigreet) + "--time" + ]; + }; + }; + } + + # TODO: Remove when 24.11 becomes stable + ( + if hasNiri then + { + programs.niri.enable = true; + } + else + { + warnings = [ + "You have enabled Niri when it is not available on NixOS ${version}. Please upgrade to at least NixOS ${minVersion}" + ]; + } + ) + ] + ); +} |
