about summary refs log tree commit diff
path: root/nixos/modules/programs
diff options
context:
space:
mode:
authorhyperfekt <git@hyperfekt.net>2022-06-08 13:50:36 +0200
committerhyperfekt <git@hyperfekt.net>2023-03-12 21:24:03 +0100
commit3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a (patch)
tree34d8418700ad571c6b1a2b85869a52a3a702007b /nixos/modules/programs
parent67ff218c7c5724063732f5ba4d6a0e83e304721d (diff)
downloadnixlib-3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a.tar
nixlib-3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a.tar.gz
nixlib-3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a.tar.bz2
nixlib-3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a.tar.lz
nixlib-3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a.tar.xz
nixlib-3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a.tar.zst
nixlib-3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a.zip
nixos/fish: fix completion generation for non-derivation packages
environment.systemPackages can include any package, which means it can
be a top-level store path that is not a derivation and thus will not
have a name attribute - their name is extracted from the path instead.
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r--nixos/modules/programs/fish.nix17
1 files changed, 7 insertions, 10 deletions
diff --git a/nixos/modules/programs/fish.nix b/nixos/modules/programs/fish.nix
index 160adc0cad6d..657130aa1b11 100644
--- a/nixos/modules/programs/fish.nix
+++ b/nixos/modules/programs/fish.nix
@@ -258,16 +258,13 @@ in
             preferLocalBuild = true;
             allowSubstitutes = false;
           };
-          generateCompletions = package: pkgs.runCommand
-            "${package.name}_fish-completions"
-            (
-              {
-                inherit package;
-                preferLocalBuild = true;
-                allowSubstitutes = false;
-              }
-              // optionalAttrs (package ? meta.priority) { meta.priority = package.meta.priority; }
-            )
+          generateCompletions = package: pkgs.runCommandLocal
+            ( with lib.strings; let
+                storeLength = stringLength storeDir + 34; # Nix' StorePath::HashLen + 2 for the separating slash and dash
+                pathName = substring storeLength (stringLength package - storeLength) package;
+              in (package.name or pathName) + "_fish-completions")
+            ( { inherit package; } //
+              optionalAttrs (package ? meta.priority) { meta.priority = package.meta.priority; })
             ''
               mkdir -p $out
               if [ -d $package/share/man ]; then