From f46b3a038f6ab448ee65a255076d0dc181824c35 Mon Sep 17 00:00:00 2001 From: tv Date: Thu, 11 May 2017 20:31:06 +0200 Subject: users-groups module: add per-user packages --- nixos/modules/config/users-groups.nix | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'nixos/modules/config/users-groups.nix') diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix index 57e4940378ba..0e7ffbd3c2e1 100644 --- a/nixos/modules/config/users-groups.nix +++ b/nixos/modules/config/users-groups.nix @@ -244,6 +244,17 @@ let ''; }; + packages = mkOption { + type = types.listOf types.package; + default = []; + example = literalExample "[ pkgs.firefox pkgs.thunderbird ]"; + description = '' + The set of packages that should be made availabe to the user. + This is in contrast to , + which adds packages to all users. + ''; + }; + }; config = mkMerge @@ -568,5 +579,17 @@ in { imports = [ (mkAliasOptionModule [ "users" "extraUsers" ] [ "users" "users" ]) (mkAliasOptionModule [ "users" "extraGroups" ] [ "users" "groups" ]) + { + environment = { + etc = mapAttrs' (name: { packages, ... }: { + name = "per-user-pkgs/${name}"; + value.source = pkgs.symlinkJoin { + name = "per-user-pkgs.${name}"; + paths = packages; + }; + }) (filterAttrs (_: { packages, ... }: packages != []) cfg.users); + profiles = ["/etc/per-user-pkgs/$LOGNAME"]; + }; + } ]; } -- cgit v1.2.3