From db43751ec32eb2c38662947c0d34621a7b47cc7f Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Mon, 1 Sep 2025 16:49:02 +0800 Subject: [PATCH] gnu: niri: Install completions. * gnu/packages/wm.scm (niri) [arguments] <#:phases>: Install completions. [native-inputs]: Add self when cross-compiling. Change-Id: If9a6725ee13c87b5a76b959c3d6fe9804e884415 --- gnu/packages/wm.scm | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index c6fab44607ef4e38f59d9bab9b078368c3143624..63796fe5cd507df96724ba42073448715f84e7da 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -1941,6 +1941,10 @@ limited size and a few external dependencies. It is configurable via (build-system cargo-build-system) (arguments (list #:install-source? #f + #:modules + '((ice-9 match) + (guix build utils) + (guix build cargo-build-system)) #:phases #~(modify-phases %standard-phases (add-after 'unpack 'use-guix-vendored-dependencies @@ -1977,9 +1981,31 @@ limited size and a few external dependencies. It is configurable via (in-vicinity #$output "share/wayland-sessions")) (install-file "resources/niri-portals.conf" - (in-vicinity #$output "share/xdg-desktop-portal"))))))) + (in-vicinity #$output "share/xdg-desktop-portal")))) + (add-after 'install 'install-completions + (lambda* (#:key native-inputs #:allow-other-keys) + (for-each + (match-lambda + ((shell . path) + (mkdir-p (in-vicinity #$output (dirname path))) + (let ((binary + (if #$(%current-target-system) + (search-input-file native-inputs "bin/nir") + (in-vicinity #$output "bin/niri")))) + (with-output-to-file (in-vicinity #$output path) + (lambda _ + (invoke binary "completions" shell)))))) + '(("bash" . "share/bash-completion/completions/niri") + ("elvish" . "share/elvish/lib/niri") + ("fish" . "share/fish/vendor_completions.d/niri.fish") + ("nushell" . "share/nushell/vendor/autoload/niri") + ("zsh" . "share/zsh/site-functions/_niri")))))))) (native-inputs - (list pkg-config)) + (append + (if (%current-target-system) + (list this-package) + '()) + (list pkg-config))) (inputs (cons* clang dbus