From fd8db4c006dbd350746e0cefe5b949f1c33fc38e Mon Sep 17 00:00:00 2001 From: cy Date: Sat, 18 Jan 2025 20:39:51 -0500 Subject: [PATCH] init niri --- flake.lock | 108 ++++++++++++++++++++++++++++++++++++++++ flake.nix | 10 +++- home/niri.nix | 43 ++++++++++++++++ home/yt/ytnix.nix | 2 + hosts/ytnix/default.nix | 5 ++ modules/default.nix | 1 + modules/niri.nix | 15 ++++++ 7 files changed, 183 insertions(+), 1 deletion(-) create mode 100644 home/niri.nix create mode 100644 modules/niri.nix diff --git a/flake.lock b/flake.lock index dd82f82..60b8454 100644 --- a/flake.lock +++ b/flake.lock @@ -355,6 +355,64 @@ "type": "github" } }, + "niri": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_2", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1737231928, + "narHash": "sha256-eOvFTgpFGP8hy6r3O8Ae5jOGc483l4BszwQsPcccbbs=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "ca748d585a271a512807cd60e5353a9ddb4d1dee", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "repo": "niri-flake", + "type": "github" + } + }, + "niri-stable": { + "flake": false, + "locked": { + "lastModified": 1736614405, + "narHash": "sha256-AJ1rlgNOPb3/+DbS5hkhm21t6Oz8IgqLllwmZt0lyzk=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "e05bc269e678ecf828b96ae79c991c13b00b38a5", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "ref": "v25.01", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1737211438, + "narHash": "sha256-XPcV2rV7Vy7lLeZMhTOwd0t/sRwNquXI7CH7+3Aftt0=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "818248457210f5101459ea7d7066d12c456c8a97", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, "nix-darwin": { "inputs": { "nixpkgs": [ @@ -436,6 +494,22 @@ "type": "github" } }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1737165118, + "narHash": "sha256-s40Kk/OulP3J/1JvC3VT16U4r/Xw6Qdi7SRw3LYkPWs=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "6a3ae7a5a12fb8cac2d59d7df7cbd95f9b2f0566", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { "devshell": "devshell", @@ -520,6 +594,7 @@ "flake-parts": "flake-parts", "home-manager": "home-manager", "lanzaboote": "lanzaboote", + "niri": "niri", "nixpkgs": "nixpkgs", "nixpkgs-garage": "nixpkgs-garage", "nixvim": "nixvim", @@ -642,6 +717,39 @@ "repo": "treefmt-nix", "type": "github" } + }, + "xwayland-satellite-stable": { + "flake": false, + "locked": { + "lastModified": 1730166465, + "narHash": "sha256-nq7bouXQXaaPPo/E+Jbq+wNHnatD4dY8OxSrRqzvy6s=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "a713cf46cb7db84a0d1b57c3a397c610cad3cf98", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "ref": "v0.5", + "repo": "xwayland-satellite", + "type": "github" + } + }, + "xwayland-satellite-unstable": { + "flake": false, + "locked": { + "lastModified": 1736487362, + "narHash": "sha256-4kGoOA7FgK9N2mzS+TFEn41kUUNY6KwdiA/0rqlr868=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "8f55e27f63a749881c4bbfbb6b1da028342a91d1", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 15b79ed..19754ba 100644 --- a/flake.nix +++ b/flake.nix @@ -28,6 +28,8 @@ inputs.nixpkgs.follows = "nixpkgs"; }; flake-parts.url = "github:hercules-ci/flake-parts"; + niri.url = "github:sodiboo/niri-flake"; + niri.inputs.nixpkgs.follows = "nixpkgs"; nixpkgs-garage.url = "github:cything/nixpkgs/garage-module"; # unmerged PR }; @@ -35,9 +37,11 @@ nixConfig = { extra-substituters = [ "https://cache.cything.io/central" + "https://niri.cachix.org" ]; extra-trusted-public-keys = [ "central:uWhjva6m6dhC2hqNisjn2hXGvdGBs19vPkA1dPEuwFg=" + "niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964=" ]; builders-use-substitutes = true; }; @@ -92,7 +96,8 @@ pkgs = import nixpkgs { config.allowUnfree = true; system = "x86_64-linux"; - overlays = import ./overlay; + overlays = [ inputs.niri.overlays.niri ] + ++ import ./overlay; }; in { @@ -102,6 +107,7 @@ in { ytnix = lib.nixosSystem { + specialArgs = { inherit inputs; }; modules = [ { nixpkgs = { inherit pkgs; }; @@ -110,6 +116,7 @@ inputs.sops-nix.nixosModules.sops ./modules inputs.lanzaboote.nixosModules.lanzaboote + inputs.niri.nixosModules.niri ]; }; chunk = lib.nixosSystem { @@ -152,6 +159,7 @@ modules = [ ./home/yt/ytnix.nix inputs.nixvim.homeManagerModules.nixvim + inputs.niri.homeModules.config ]; }; diff --git a/home/niri.nix b/home/niri.nix new file mode 100644 index 0000000..bea6ba7 --- /dev/null +++ b/home/niri.nix @@ -0,0 +1,43 @@ +{ config, ...}: +{ + programs.niri.settings = { + prefer-no-csd = true; + }; + + programs.niri.settings.binds = with config.lib.niri.actions; { + "Mod+Return".action = spawn "foot"; + "Mod+D".action = spawn "fuzzel"; + + "Mod+Shift+E".action = quit; + "Mod+Equal".action = set-column-width "+10%"; + "Mod+Minus".action = set-column-width "-10%"; + "Mod+Shift+Equal".action = set-window-height "+10%"; + "Mod+Shift+Minus".action = set-window-height "-10%"; + "Mod+1".action = focus-workspace 1; + "Super+Alt+L".action = spawn "swaylock"; + "Mod+Ctrl+Q".action = close-window; + "Mod+H".action = focus-column-left; + "Mod+L".action = focus-column-right; + "Mod+K".action = focus-window-up; + "Mod+J".action = focus-window-down; + "Mod+Shift+H".action = move-column-left; + "Mod+Shift+L".action = move-column-right; + "Mod+Shift+K".action = move-window-up; + "Mod+Shift+J".action = move-window-down; + "Mod+U".action = focus-workspace-up; + "Mod+I".action = focus-workspace-down; + "Mod+Shift+U".action = move-workspace-up; + "Mod+Shift+I".action = move-workspace-down; + "Mod+W".action = maximize-column; + "Mod+C".action = center-column; + "Mod+Shift+Space".action = toggle-window-floating; + "Mod+Space".action = switch-focus-between-floating-and-tiling; + "Print".action = screenshot; + "Alt+Print".action = screenshot-window; + "Ctrl+Print".action = screenshot-screen; + "Mod+R".action = switch-preset-column-width; + "Mod+Shift+R".action = switch-preset-window-height; + "Mod+Ctrl+R".action = reset-window-height; + "Mod+F".action = fullscreen-window; + }; +} diff --git a/home/yt/ytnix.nix b/home/yt/ytnix.nix index 8a725fe..908d68e 100644 --- a/home/yt/ytnix.nix +++ b/home/yt/ytnix.nix @@ -6,6 +6,7 @@ imports = [ ./common.nix ../foot.nix + ../niri.nix ]; home = { username = "yt"; @@ -99,6 +100,7 @@ clang seahorse github-cli + fuzzel ]; programs.waybar.enable = true; diff --git a/hosts/ytnix/default.nix b/hosts/ytnix/default.nix index f6e5c55..36786f4 100644 --- a/hosts/ytnix/default.nix +++ b/hosts/ytnix/default.nix @@ -315,4 +315,9 @@ }; services.trezord.enable = true; + + my.niri = { + enable = true; + package = pkgs.niri-unstable; + }; } diff --git a/modules/default.nix b/modules/default.nix index 2155137..bde6e96 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -2,5 +2,6 @@ { imports = [ ./backup.nix + ./niri.nix ]; } diff --git a/modules/niri.nix b/modules/niri.nix new file mode 100644 index 0000000..565a147 --- /dev/null +++ b/modules/niri.nix @@ -0,0 +1,15 @@ +{ pkgs, config, lib, ... }: +let + cfg = config.my.niri; +in +{ + options.my.niri = { + enable = lib.mkEnableOption "niri"; + package = lib.mkPackageOption pkgs "niri" { }; + }; + + config = lib.mkIf cfg.enable { + programs.niri.package = cfg.package; + programs.niri.enable = true; + }; +}