diff options
Diffstat (limited to 'pkgs/shells/fish/wrapper.nix')
-rw-r--r-- | pkgs/shells/fish/wrapper.nix | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/pkgs/shells/fish/wrapper.nix b/pkgs/shells/fish/wrapper.nix new file mode 100644 index 000000000000..053568bc6b9b --- /dev/null +++ b/pkgs/shells/fish/wrapper.nix @@ -0,0 +1,25 @@ +{ lib, writeShellScriptBin, fish }: + +with lib; + +makeOverridable ({ + completionDirs ? [], + functionDirs ? [], + confDirs ? [], + pluginPkgs ? [] +}: + +let + vendorDir = kind: plugin: "${plugin}/share/fish/vendor_${kind}.d"; + complPath = completionDirs ++ map (vendorDir "completions") pluginPkgs; + funcPath = functionDirs ++ map (vendorDir "functions") pluginPkgs; + confPath = confDirs ++ map (vendorDir "conf") pluginPkgs; + safeConfPath = map escapeShellArg confPath; + +in writeShellScriptBin "fish" '' + ${fish}/bin/fish --init-command " + set --prepend fish_complete_path ${escapeShellArgs complPath} + set --prepend fish_function_path ${escapeShellArgs funcPath} + for c in {${concatStringsSep "," safeConfPath}}/*; source $c; end + " "$@" +'') |