anchor.diff:    fishAliases = concatStringsSep "\n" (
       mapAttrsFlatten (k: v: "alias ${k} '${v}'") cfg.shellAliases
     );
  +
  +  fishVariables =
  +    mapAttrsToList (n: v: ''set -x ${n} "${v}"'') cfg.variables;
   
   in
   
  
positive.code: 
    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.
  
  
negative.code: 
        ${config.system.build.setEnvironment}
  
        fenv source ${foreignEnv}
        ${cfg.shellInit}
  
        ${concatStringsSep "\n" fishVariables}
  
        if status --is-login
          # TODO: environment.loginShellInit
          ${cfg.loginShellInit}
        end
  
        if status --is-interactive
          ${fishAliases}
          ${optionalString (cfge.interactiveShellInit != "") ''
            fenv source ${interactiveForeignEnv}
          ''}
  
          ${cfg.interactiveShellInit}
          ${cfg.promptInit}
        end
  