nixcfg/modules/nixos/system/env/default.nix
2024-01-11 10:31:04 +00:00

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);
};
};
}