From 075b035e9e8652d67b3adfeb4cc1eaa3a35bfb98 Mon Sep 17 00:00:00 2001 From: seth Date: Thu, 24 Oct 2024 22:17:37 -0400 Subject: nixos/niri: init (#484) --- modules/nixos/desktop/default.nix | 1 + modules/nixos/desktop/niri/default.nix | 62 ++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 modules/nixos/desktop/niri/default.nix (limited to 'modules') 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}" + ]; + } + ) + ] + ); +} -- cgit v1.2.3