diff options
-rw-r--r-- | tv/3modules/default.nix | 1 | ||||
-rw-r--r-- | tv/3modules/per-user.nix | 35 |
2 files changed, 36 insertions, 0 deletions
diff --git a/tv/3modules/default.nix b/tv/3modules/default.nix index bb10d8261..3a75d6e43 100644 --- a/tv/3modules/default.nix +++ b/tv/3modules/default.nix @@ -5,5 +5,6 @@ _: ./consul.nix ./ejabberd.nix ./iptables.nix + ./per-user.nix ]; } diff --git a/tv/3modules/per-user.nix b/tv/3modules/per-user.nix new file mode 100644 index 000000000..8d21a01d9 --- /dev/null +++ b/tv/3modules/per-user.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.tv.per-user; + + out = { + options.tv.per-user = api; + config = imp; + }; + + api = mkOption { + type = with types; attrsOf (submodule { + options = { + packages = mkOption { + type = listOf path; + default = []; + }; + }; + }); + default = {}; + }; + + imp = { + environment = { + etc = flip mapAttrs' cfg (name: { packages, ... }: { + name = "per-user/${name}"; + value.source = pkgs.symlinkJoin "per-user.${name}" packages; + }); + profiles = ["/etc/per-user/$LOGNAME"]; + }; + }; + +in out |