From 7d7c17fcfdd356f9d85464b62c634c94e771d249 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 31 Jul 2026 16:54:23 +0200 Subject: [PATCH] Use niri hm module --- environments/niri/default.nix | 6 ++-- environments/niri/home.nix | 14 ++++++-- environments/niri/niri-session.sh | 17 ---------- flake.lock | 56 +++++++++++++++---------------- modules/wm/default.nix | 14 +++++++- nvim/lua/jj-snacks.lua | 17 ++++++++++ nvim/lua/plugins/snacks.lua | 5 +++ 7 files changed, 78 insertions(+), 51 deletions(-) delete mode 100755 environments/niri/niri-session.sh diff --git a/environments/niri/default.nix b/environments/niri/default.nix index 86e8288..9f26b22 100644 --- a/environments/niri/default.nix +++ b/environments/niri/default.nix @@ -8,7 +8,9 @@ ../../modules/gui ]; - programs.niri.enable = true; + services.graphical-desktop.enable = true; + services.gnome.gnome-keyring.enable = true; + services.greetd = { enable = true; settings = { @@ -17,7 +19,7 @@ user = "greeter"; }; initial_session = { - command = ./niri-session.sh; + command = "${pkgs.niri}/bin/niri-session"; user = user; }; }; diff --git a/environments/niri/home.nix b/environments/niri/home.nix index 4cd9742..fe32b12 100644 --- a/environments/niri/home.nix +++ b/environments/niri/home.nix @@ -29,15 +29,23 @@ brightnessctl playerctl hyprpicker + wtype gnome-control-center gnome-weather wdisplays - wtype - niri ]; - xdg.configFile."niri/config.kdl".source = ./niri.kdl; + wayland.windowManager.niri = { + enable = true; + systemd.enable = true; + extraConfig = builtins.readFile ./niri.kdl; + }; + + xdg.configFile."systemd/user/niri.service.d/unset-shlvl.conf".text = '' + [Service] + UnsetEnvironment=SHLVL + ''; services.kanshi = { enable = true; diff --git a/environments/niri/niri-session.sh b/environments/niri/niri-session.sh deleted file mode 100755 index d8e1323..0000000 --- a/environments/niri/niri-session.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -# Snippet from the official niri-session -# We remove the `import-environment` (and login shell sourcing that became useless), this is needed otherwise SHLVL gets in the systemd env and it breaks stuff - -if systemctl --user -q is-active niri.service; then - echo 'A niri session is already running.' - exit 1 -fi - -systemctl --user reset-failed -# still need path to have things like systemctl -systemctl --user import-environment PATH -systemctl --user --wait start niri.service - -systemctl --user start --job-mode=replace-irreversibly niri-shutdown.target -systemctl --user unset-environment WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP NIRI_SOCKET diff --git a/flake.lock b/flake.lock index 9303539..72429b4 100644 --- a/flake.lock +++ b/flake.lock @@ -24,11 +24,11 @@ ] }, "locked": { - "lastModified": 1782949081, - "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", + "lastModified": 1785627969, + "narHash": "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", + "rev": "427bf4bd9435fdf21321c8cc628c24efc14c0f7a", "type": "github" }, "original": { @@ -44,11 +44,11 @@ ] }, "locked": { - "lastModified": 1784913159, - "narHash": "sha256-JWq0BfjO4ktpH5USfQNQzdvHpIDT8fSKD5K7LvdMRFs=", + "lastModified": 1785531816, + "narHash": "sha256-vkMnV0JIyw+g/NmcfoajlGaAO+9a0ezia+FZohQJrik=", "owner": "nix-community", "repo": "home-manager", - "rev": "079a3b5d1aa6a719920a51316253b7d6dd22738d", + "rev": "bf9ce9fec78f95f374e8dd3b503863a3ec128ebe", "type": "github" }, "original": { @@ -106,11 +106,11 @@ ] }, "locked": { - "lastModified": 1784937789, - "narHash": "sha256-OapoKXc31FbcfzT8Cehs3By0HnhgzZxnI42MCRXx6/8=", + "lastModified": 1785888222, + "narHash": "sha256-rvHOnoKN6oB0fMON3kkp0NUFr67DkJGWO0+pbLY6A5I=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "0f46eaeeea58c396929ed4d04ed46282e1e0e33f", + "rev": "c396bf1486829401874db08624ba2dd9fe9b5592", "type": "github" }, "original": { @@ -122,11 +122,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1784934442, - "narHash": "sha256-cMhWsQgVQjkeXc7gvCWIb7YEkGFY/L5GS2MlcHQU7N0=", + "lastModified": 1785887418, + "narHash": "sha256-7uh4OppIw6bJhsC+53lGSQw+zSzDrXVDuu6J3R2K2aM=", "owner": "neovim", "repo": "neovim", - "rev": "63c84e4c1a0224b478c9e7ed48d483d0d749a540", + "rev": "2e3785a702e0f107d22cb32c51f121b157b887b8", "type": "github" }, "original": { @@ -142,11 +142,11 @@ ] }, "locked": { - "lastModified": 1784500460, - "narHash": "sha256-UvORnAxTRHax7RG74W8Z2t4GvIkX6AjJ5kk0QlwZomo=", + "lastModified": 1785389976, + "narHash": "sha256-0tLW8Ff5yt8AH97jw4ZpFJ0OCJ122zIlgWGDmOfU/VU=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "57a3171f94705599a2499248ca5758d5eb47c0e0", + "rev": "15abb8c98f336cd8bd840d71059adebabe60bf04", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1784440659, - "narHash": "sha256-Q5kNLlWngt7TaIIZoxDKWMHjiSaNRVqr70FqWCRRfr4=", + "lastModified": 1785650611, + "narHash": "sha256-q4kR7g+pCcz6NASvoVPYu+CWWUurX03wogtBqGmR4h0=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "4f8d52a3598b0dc7db7a5e7b419e3edd9d1ecfdb", + "rev": "dbc756c9d7287de19b3e0e38c928c47510d42c3e", "type": "github" }, "original": { @@ -198,11 +198,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1784723954, - "narHash": "sha256-1CfD8ZUjCkTgjsneLZ/lxCHhgDfqxxE7/GX0MmsgiqA=", + "lastModified": 1785232496, + "narHash": "sha256-65EQYIRRpTdpH8lUiB6Mvo5uBkG60aBIzAJuALfx+O0=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "a017f5b72210026af5b3ac5949f08d94380a6fbd", + "rev": "2e790b0a6be8ec2b76174ac0931b8ff11919ec98", "type": "github" }, "original": { @@ -280,11 +280,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1784812282, - "narHash": "sha256-kj0RWcISiimYMfvVVXk4O9z73XHY/tPSVYZ24imKdP8=", - "rev": "6d12004108e0e4a5cfa4bd83b14477f040b15773", + "lastModified": 1785747939, + "narHash": "sha256-NqaCaIITVSDaBYdcWcfCyEu1erL7paTPEQbISQp9xwQ=", + "rev": "104240a772428cc2e20d8fd86c9ddbb886bbaff2", "type": "tarball", - "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1040448.6d12004108e0/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1046984.104240a77242/nixexprs.tar.xz" }, "original": { "id": "nixpkgs", @@ -334,11 +334,11 @@ ] }, "locked": { - "lastModified": 1784354557, - "narHash": "sha256-z2XthIV/68GNghbqmaPVrShPIfMPwpZKTA47REKC5bA=", + "lastModified": 1785480078, + "narHash": "sha256-wWRW/Teo+58EMeTpVVEAqYid1qLzpB/PViQJCv7Xxvc=", "owner": "youwen5", "repo": "zen-browser-flake", - "rev": "239dc504b56eabcfc1dce945e7e22ca99694be89", + "rev": "b7d4cc2778143a228675cd8bb7efdfa111638ac8", "type": "github" }, "original": { diff --git a/modules/wm/default.nix b/modules/wm/default.nix index 8d61dff..32e6eae 100644 --- a/modules/wm/default.nix +++ b/modules/wm/default.nix @@ -36,6 +36,16 @@ }; }; + xdg.portal = { + enable = true; + extraPortals = [pkgs.xdg-desktop-portal-gnome pkgs.xdg-desktop-portal-gtk]; + config.common.default = ["gnome" "gtk"]; + }; + environment.pathsToLink = [ + "/share/applications" + "/share/xdg-desktop-portal" + ]; + services.printing.enable = true; security.polkit.enable = true; security.rtkit.enable = true; @@ -54,7 +64,9 @@ polkit_gnome ]; - security.pam.services.hyprlock = {}; + security.pam.services.hyprlock = { + enableGnomeKeyring = true; + }; # Allow gsettings to work environment.sessionVariables.XDG_DATA_DIRS = [ diff --git a/nvim/lua/jj-snacks.lua b/nvim/lua/jj-snacks.lua index f2ff4b4..e7fa6c3 100644 --- a/nvim/lua/jj-snacks.lua +++ b/nvim/lua/jj-snacks.lua @@ -444,6 +444,7 @@ Snacks.picker.jj_show = function(spec) keys = { [""] = { "jj_split", mode = { "i" } }, [""] = { "jj_squash", mode = { "i" } }, + [""] = { "jj_absorb", mode = { "i" } }, [""] = { "jj_gsplit", mode = { "i" } }, [""] = { "jj_gvsplit", mode = { "i" } }, }, @@ -476,6 +477,22 @@ Snacks.picker.jj_show = function(spec) picker:refresh() end, { cwd = items[1].cwd }) end, + jj_absorb = function(picker) + local items = picker:selected({ fallback = true }) + if #items == 0 then + return + end + local cmd = { "jj", "absorb", "--from", show_ref } + for _, item in ipairs(items) do + table.insert(cmd, string.format("file:'%s'", item.file)) + if item.rename then + table.insert(cmd, string.format("file:'%s'", item.rename)) + end + end + Snacks.picker.util.cmd(cmd, function() + picker:refresh() + end, { cwd = items[1].cwd }) + end, jj_gsplit = function(picker, item) picker:close() vim.cmd({ cmd = "Jsplit", args = { show_ref .. ":" .. item.file } }) diff --git a/nvim/lua/plugins/snacks.lua b/nvim/lua/plugins/snacks.lua index 3244e8a..5f833eb 100644 --- a/nvim/lua/plugins/snacks.lua +++ b/nvim/lua/plugins/snacks.lua @@ -51,6 +51,11 @@ return { }, indent = { enabled = true, + filter = function(buf) + return vim.g.snacks_indent ~= false + and vim.b[buf].snacks_indent ~= false + and (vim.bo[buf].buftype == "" or vim.api.nvim_buf_get_name(buf):match("^jj://") ~= nil) + end, indent = { char = "▏", },