query
On this page

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
      " "$@"
    '';
  }