aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/modules/tasks/filesystems/nfs.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/modules/tasks/filesystems/nfs.nix')
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/tasks/filesystems/nfs.nix48
1 files changed, 35 insertions, 13 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/modules/tasks/filesystems/nfs.nix b/infra/libkookie/nixpkgs/nixos/modules/tasks/filesystems/nfs.nix
index ddcc0ed8f5a4..fd35c35d32ad 100644
--- a/infra/libkookie/nixpkgs/nixos/modules/tasks/filesystems/nfs.nix
+++ b/infra/libkookie/nixpkgs/nixos/modules/tasks/filesystems/nfs.nix
@@ -10,20 +10,9 @@ let
rpcMountpoint = "${nfsStateDir}/rpc_pipefs";
- idmapdConfFile = pkgs.writeText "idmapd.conf" ''
- [General]
- Pipefs-Directory = ${rpcMountpoint}
- ${optionalString (config.networking.domain != null)
- "Domain = ${config.networking.domain}"}
-
- [Mapping]
- Nobody-User = nobody
- Nobody-Group = nogroup
-
- [Translation]
- Method = nsswitch
- '';
+ format = pkgs.formats.ini {};
+ idmapdConfFile = format.generate "idmapd.conf" cfg.idmapd.settings;
nfsConfFile = pkgs.writeText "nfs.conf" cfg.extraConfig;
requestKeyConfFile = pkgs.writeText "request-key.conf" ''
create id_resolver * * ${pkgs.nfs-utils}/bin/nfsidmap -t 600 %k %d
@@ -38,6 +27,25 @@ in
options = {
services.nfs = {
+ idmapd.settings = mkOption {
+ type = format.type;
+ default = {};
+ description = ''
+ libnfsidmap configuration. Refer to
+ <link xlink:href="https://linux.die.net/man/5/idmapd.conf"/>
+ for details.
+ '';
+ example = literalExample ''
+ {
+ Translation = {
+ GSS-Methods = "static,nsswitch";
+ };
+ Static = {
+ "root/hostname.domain.com@REALM.COM" = "root";
+ };
+ }
+ '';
+ };
extraConfig = mkOption {
type = types.lines;
default = "";
@@ -54,6 +62,20 @@ in
services.rpcbind.enable = true;
+ services.nfs.idmapd.settings = {
+ General = mkMerge [
+ { Pipefs-Directory = rpcMountpoint; }
+ (mkIf (config.networking.domain != null) { Domain = config.networking.domain; })
+ ];
+ Mapping = {
+ Nobody-User = "nobody";
+ Nobody-Group = "nogroup";
+ };
+ Translation = {
+ Method = "nsswitch";
+ };
+ };
+
system.fsPackages = [ pkgs.nfs-utils ];
boot.initrd.kernelModules = mkIf inInitrd [ "nfs" ];