wrapFish
pkgs.wrapFish
Functor
Docs pulled from | This Revision | 10 minutes ago
No reference documentation found yet.
Contribute now!
Contribute
Enhance the ecosystem with your expertise! Contribute to fill the gaps in documentation. Your input can make a difference.
Noogle detected
This is a Functor
Learn about functors
Implementation
The following is the current implementation of this function.
{
completionDirs ? [ ],
functionDirs ? [ ],
confDirs ? [ ],
pluginPkgs ? [ ],
localConfig ? "",
shellAliases ? { },
runtimeInputs ? [ ],
}:
let
aliasesStr = builtins.concatStringsSep "\n" (
lib.mapAttrsToList (k: v: "alias ${k} ${lib.escapeShellArg v}") shellAliases
);
shellAliasesFishConfig = writeTextFile {
name = "wrapfish.aliases.fish";
destination = "/share/fish/vendor_conf.d/aliases.fish";
text = ''
status is-interactive; and begin
# Aliases
${aliasesStr}
end
'';
};
localFishConfig = writeTextFile {
name = "wrapfish.local.fish";
destination = "/share/fish/vendor_conf.d/config.local.fish";
text = localConfig;
};
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)
++ (map (vendorDir "conf") [
localFishConfig
shellAliasesFishConfig
]);
in
writeShellApplication {
inherit runtimeInputs;
name = "fish";
text = ''
${fish}/bin/fish --init-command "
set --prepend fish_complete_path ${lib.escapeShellArgs complPath}
set --prepend fish_function_path ${lib.escapeShellArgs funcPath}
set --local fish_conf_source_path ${lib.escapeShellArgs confPath}
for c in \$fish_conf_source_path/*; source \$c; end
" "$@"
'';
}