1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2025-03-13 20:30:02 +00:00

fish: use writeText for foreign-env

This commit is contained in:
Daiderd Jordan 2017-01-24 20:45:40 +01:00 committed by Eric Bailey
parent 75575107a6
commit 367a05488f
No known key found for this signature in database
GPG key ID: 29E1B8D32C1635C4

View file

@ -4,12 +4,21 @@ with lib;
let
cfg = config.programs.fish;
cfge = config.environment;
cfg = config.programs.fish;
foreignEnv = pkgs.writeText "fish-foreign-env" ''
# TODO: environment.shellInit
${cfge.extraInit}
'';
fishVariables =
mapAttrsToList (n: v: ''set -x ${n} "${v}"'') cfg.variables;
loginForeignEnv = pkgs.writeText "fish-login-foreign-env" ''
# TODO: environment.loginShellInit
'';
interactiveForeignEnv = pkgs.writeText "fish-interactive-foreign-env" ''
${cfge.interactiveShellInit}
'';
shell = pkgs.runCommand pkgs.fish.name
{ buildInputs = [ pkgs.makeWrapper ]; }
@ -24,6 +33,9 @@ let
mapAttrsFlatten (k: v: "alias ${k} '${v}'") cfg.shellAliases
);
fishVariables =
mapAttrsToList (n: v: ''set -x ${n} "${v}"'') cfg.variables;
in
{
@ -99,10 +111,6 @@ in
config = mkIf cfg.enable {
environment.etc."fish/foreign-env/shellInit".text = cfge.shellInit;
environment.etc."fish/foreign-env/loginShellInit".text = cfge.loginShellInit;
environment.etc."fish/foreign-env/interactiveShellInit".text = cfge.interactiveShellInit;
environment.etc."fish/config.fish".text = ''
# /etc/fish/config.fish: DO NOT EDIT -- this file has been generated automatically.
@ -112,20 +120,22 @@ in
${config.system.build.setEnvironment}
fenv source /etc/fish/foreign-env/shellInit > /dev/null
fenv source ${foreignEnv}
${cfg.shellInit}
${concatStringsSep "\n" fishVariables}
if status --is-login
fenv source /etc/fish/foreign-env/loginShellInit > /dev/null
# TODO: environment.loginShellInit
${cfg.loginShellInit}
end
if status --is-interactive
${fishAliases}
fenv source /etc/fish/foreign-env/interactiveShellInit > /dev/null
${optionalString (cfge.interactiveShellInit != "") ''
fenv source ${interactiveForeignEnv}
''}
${cfg.interactiveShellInit}
${cfg.promptInit}
end