summaryrefslogtreecommitdiff
path: root/modules/nixos/desktop/niri/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos/desktop/niri/default.nix')
-rw-r--r--modules/nixos/desktop/niri/default.nix62
1 files changed, 62 insertions, 0 deletions
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}"
+ ];
+ }
+ )
+ ]
+ );
+}