diff --git a/hosts/common/programs/web-browser.nix b/hosts/common/programs/web-browser.nix index 136a21fb..26e54764 100644 --- a/hosts/common/programs/web-browser.nix +++ b/hosts/common/programs/web-browser.nix @@ -193,6 +193,9 @@ in sane.programs.web-browser = { inherit package; + # env.BROWSER = "${package}/bin/${cfg.browser.libName}"; + env.BROWSER = cfg.browser.libName; # used by misc tools like xdg-email, as fallback + # uBlock filter list configuration. # specifically, enable the GDPR cookie prompt blocker. # data.toOverwrite.filterLists is additive (i.e. it supplements the default filters) diff --git a/modules/programs.nix b/modules/programs.nix index 748290fd..8f28a66e 100644 --- a/modules/programs.nix +++ b/modules/programs.nix @@ -156,6 +156,7 @@ let # conditionally persist relevant user dirs and create files sane.users = mapAttrs (user: en: optionalAttrs en { inherit (p) persist; + environment = p.env; fs = mkMerge [ # make every fs entry wanted by system boot: (mapAttrs (_path: sane-lib.fs.wanted) p.fs) diff --git a/modules/users.nix b/modules/users.nix index 94e9b2c3..a1110c1d 100644 --- a/modules/users.nix +++ b/modules/users.nix @@ -29,6 +29,15 @@ let entries to pass onto `sane.persist.sys` after prepending the user's home-dir to the path. ''; }; + + environment = mkOption { + type = types.attrsOf types.str; + default = {}; + description = '' + environment variables to place in user's shell profile. + these end up in ~/.profile + ''; + }; }; }; userModule = types.submodule ({ name, config, ... }: { @@ -50,8 +59,20 @@ let }; }; + config = lib.mkMerge [ # if we're the default user, inherit whatever settings were routed to the default user - config = mkIf config.default sane-user-cfg; + (mkIf config.default sane-user-cfg) + { + fs.".profile".symlink.text = + let + env = lib.mapAttrsToList + (key: value: ''export ${key}="${value}"'') + config.environment + ; + in + lib.concatStringsSep "\n" env; + } + ]; }); processUser = user: defn: let