anchor.diff:      ++ (map (vendorDir "conf") pluginPkgs)
       ++ (map (vendorDir "conf") [ localFishConfig shellAliasesFishConfig ]);
   
  -in writeShellScriptBin "fish" ''
  -  ${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
  -  " "$@"
  -'')
  +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
  +    " "$@"
  +  '';
  +})
  
positive.code:   confDirs ? [],
    pluginPkgs ? [],
    localConfig ? "",
    shellAliases ? {}
  }:
  
  let
  
negative.code: { lib, writeShellApplication, fish, writeTextFile }:
  
  lib.makeOverridable ({
    completionDirs ? [],
  