40 lines
1.1 KiB
Nix
40 lines
1.1 KiB
Nix
|
{ options, config, pkgs, lib, ... }:
|
||
|
|
||
|
with lib;
|
||
|
with lib.plusultra;
|
||
|
let cfg = config.plusultra.system.env;
|
||
|
in
|
||
|
{
|
||
|
options.plusultra.system.env = with types;
|
||
|
mkOption {
|
||
|
type = attrsOf (oneOf [ str path (listOf (either str path)) ]);
|
||
|
apply = mapAttrs (n: v:
|
||
|
if isList v then
|
||
|
concatMapStringsSep ":" (x: toString x) v
|
||
|
else
|
||
|
(toString v));
|
||
|
default = { };
|
||
|
description = "A set of environment variables to set.";
|
||
|
};
|
||
|
|
||
|
config = {
|
||
|
environment = {
|
||
|
sessionVariables = {
|
||
|
XDG_CACHE_HOME = "$HOME/.cache";
|
||
|
XDG_CONFIG_HOME = "$HOME/.config";
|
||
|
XDG_DATA_HOME = "$HOME/.local/share";
|
||
|
XDG_BIN_HOME = "$HOME/.local/bin";
|
||
|
# To prevent firefox from creating ~/Desktop.
|
||
|
XDG_DESKTOP_DIR = "$HOME";
|
||
|
};
|
||
|
variables = {
|
||
|
# Make some programs "XDG" compliant.
|
||
|
LESSHISTFILE = "$XDG_CACHE_HOME/less.history";
|
||
|
WGETRC = "$XDG_CONFIG_HOME/wgetrc";
|
||
|
};
|
||
|
extraInit = concatStringsSep "\n"
|
||
|
(mapAttrsToList (n: v: ''export ${n}="${v}"'') cfg);
|
||
|
};
|
||
|
};
|
||
|
}
|