diff options
author | hyperfekt <git@hyperfekt.net> | 2022-06-08 13:50:36 +0200 |
---|---|---|
committer | hyperfekt <git@hyperfekt.net> | 2023-03-12 21:24:03 +0100 |
commit | 3fd98e7fcb2fdc1b7699fd7de2bc83c67cf21c4a (patch) | |
tree | 34d8418700ad571c6b1a2b85869a52a3a702007b /nixos | |
parent | 67ff218c7c5724063732f5ba4d6a0e83e304721d (diff) | |
download | nixlib-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')
-rw-r--r-- | nixos/modules/programs/fish.nix | 17 |
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 |