mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-28 14:22:50 +03:00
wrapFish: add fish shell wrapper package
This adds a wrapper for fish which allows creating shells pre-initialised with some completions, functions, and configuration scripts from given paths or from fish plugin packages (`pkgs.fishPlugins.*`). This is especially handy when one wants to try a plugin in an ephemeral shell. GitHub: see https://github.com/NixOS/nixpkgs/pull/107834#discussion_r550612519
This commit is contained in:
parent
a14ea3aecc
commit
ae5c662182
25
pkgs/shells/fish/wrapper.nix
Normal file
25
pkgs/shells/fish/wrapper.nix
Normal file
@ -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
|
||||
" "$@"
|
||||
'')
|
@ -8843,6 +8843,8 @@ in
|
||||
|
||||
fish = callPackage ../shells/fish { };
|
||||
|
||||
wrapFish = callPackage ../shells/fish/wrapper.nix { };
|
||||
|
||||
fishPlugins = recurseIntoAttrs (callPackage ../shells/fish/plugins { });
|
||||
|
||||
ion = callPackage ../shells/ion {
|
||||
|
Loading…
Reference in New Issue
Block a user