Merge pull request #100554 from dnr/feature/pamMount

nixos/pam_mount: add pamMount attribute to users
This commit is contained in:
Jörg Thalheim 2020-10-20 10:40:12 +02:00 committed by GitHub
commit 1a9e02dec6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 2 deletions

View File

@ -139,6 +139,20 @@ let
'';
};
pamMount = mkOption {
type = with types; attrsOf str;
default = {};
description = ''
Attributes for user's entry in
<filename>pam_mount.conf.xml</filename>.
Useful attributes might include <code>path</code>,
<code>options</code>, <code>fstype</code>, and <code>server</code>.
See <link
xlink:href="http://pam-mount.sourceforge.net/pam_mount.conf.5.html" />
for more information.
'';
};
shell = mkOption {
type = types.either types.shellPackage types.path;
default = pkgs.shadow;

View File

@ -39,8 +39,16 @@ in
environment.etc."security/pam_mount.conf.xml" = {
source =
let
extraUserVolumes = filterAttrs (n: u: u.cryptHomeLuks != null) config.users.users;
userVolumeEntry = user: "<volume user=\"${user.name}\" path=\"${user.cryptHomeLuks}\" mountpoint=\"${user.home}\" />\n";
extraUserVolumes = filterAttrs (n: u: u.cryptHomeLuks != null || u.pamMount != {}) config.users.users;
mkAttr = k: v: ''${k}="${v}"'';
userVolumeEntry = user: let
attrs = {
user = user.name;
path = user.cryptHomeLuks;
mountpoint = user.home;
} // user.pamMount;
in
"<volume ${concatStringsSep " " (mapAttrsToList mkAttr attrs)} />\n";
in
pkgs.writeText "pam_mount.conf.xml" ''
<?xml version="1.0" encoding="utf-8" ?>