diff --git a/system/ids.nix b/system/ids.nix index fee56a5303b..73fa8c8a0bb 100644 --- a/system/ids.nix +++ b/system/ids.nix @@ -12,6 +12,7 @@ ftp = 8; bitlbee = 9; avahi = 10; + portmap = 11; nixbld = 30000; # start of range of uids nobody = 65534; @@ -24,6 +25,7 @@ vsftpd = 7; ftp = 8; avahi = 10; + portmap = 11; audio = 17; users = 100; diff --git a/system/options.nix b/system/options.nix index a5bc2f1608d..098f28848c8 100644 --- a/system/options.nix +++ b/system/options.nix @@ -923,6 +923,18 @@ }; + portmap = { + + enable = mkOption { + default = false; + description = '' + Whether to enable `portmap', an ONC RPC directory service + notably used by NFS and NIS, and which can be queried + using the rpcinfo(1) command. + ''; + }; + }; + avahi = { enable = mkOption { diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 708e14d2894..1cb50903005 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -158,6 +158,12 @@ let servers = config.services.ntp.servers; }) + # portmap daemon. + ++ optional config.services.portmap.enable + (import ../upstart-jobs/portmap.nix { + inherit (pkgs) makePortmap; + }) + # Avahi daemon. ++ optional config.services.avahi.enable (import ../upstart-jobs/avahi-daemon.nix { diff --git a/upstart-jobs/portmap.nix b/upstart-jobs/portmap.nix new file mode 100644 index 00000000000..18ff06dc1af --- /dev/null +++ b/upstart-jobs/portmap.nix @@ -0,0 +1,35 @@ +{ makePortmap }: + +let uid = (import ../system/ids.nix).uids.portmap; + gid = (import ../system/ids.nix).gids.portmap; +in +{ + name = "portmap"; + + users = [ + { name = "portmap"; + inherit uid; + description = "portmap daemon user"; + home = "/var/empty"; + } + ]; + + groups = [ + { name = "portmap"; + inherit gid; + } + ]; + + job = + let portmap = makePortmap { daemonUID = uid; daemonGID = gid; }; + in + '' +description "ONC RPC portmap" + +start on network-interfaces/started +stop on network-interfaces/stop + +respawn ${portmap}/sbin/portmap +''; + +}