summaryrefslogtreecommitdiffstats
path: root/krebs/3modules/per-user.nix
diff options
context:
space:
mode:
authortv <tv@shackspace.de>2015-11-07 09:48:06 +0100
committertv <tv@shackspace.de>2015-11-07 09:48:06 +0100
commit8ad05d0f40debdb2dc41aef2db24f77f539f4328 (patch)
tree50c71257fa56bd1d4a67c3ef23cc10620fd387ff /krebs/3modules/per-user.nix
parentd590cf26cd8fa33ed4140bef7a5d689c76455625 (diff)
parentbae469d2a64165a42d93cdb31e231fa75e9813a5 (diff)
Merge remote-tracking branch 'cd/master'
Diffstat (limited to 'krebs/3modules/per-user.nix')
-rw-r--r--krebs/3modules/per-user.nix35
1 files changed, 35 insertions, 0 deletions
diff --git a/krebs/3modules/per-user.nix b/krebs/3modules/per-user.nix
new file mode 100644
index 00000000..ee213ded
--- /dev/null
+++ b/krebs/3modules/per-user.nix
@@ -0,0 +1,35 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ cfg = config.krebs.per-user;
+
+ out = {
+ options.krebs.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