treewide: use attrs instead of list for types.loaOf options

rnhmjoj 1d61efb7 6bd13ccd

Changed files
+810 -1005
nixos
modules
config
installer
programs
security
services
audio
backup
cluster
kubernetes
continuous-integration
buildbot
gocd-agent
gocd-server
jenkins
databases
editors
hardware
logging
mail
misc
monitoring
network-filesystems
networking
printing
scheduling
search
security
system
ttys
web-apps
web-servers
x11
system
virtualisation
+5 -8
nixos/modules/config/i18n.nix
···
};
# ‘/etc/locale.conf’ is used by systemd.
-
environment.etc = singleton
-
{ target = "locale.conf";
-
source = pkgs.writeText "locale.conf"
-
''
-
LANG=${config.i18n.defaultLocale}
-
${concatStringsSep "\n" (mapAttrsToList (n: v: ''${n}=${v}'') config.i18n.extraLocaleSettings)}
-
'';
-
};
};
}
···
};
# ‘/etc/locale.conf’ is used by systemd.
+
environment.etc."locale.conf".source = pkgs.writeText "locale.conf"
+
''
+
LANG=${config.i18n.defaultLocale}
+
${concatStringsSep "\n" (mapAttrsToList (n: v: ''${n}=${v}'') config.i18n.extraLocaleSettings)}
+
'';
};
}
+3 -1
nixos/modules/config/ldap.nix
···
config = mkIf cfg.enable {
-
environment.etc = optional (!cfg.daemon.enable) ldapConfig;
system.activationScripts = mkIf (!cfg.daemon.enable) {
ldap = stringAfter [ "etc" "groups" "users" ] ''
···
config = mkIf cfg.enable {
+
environment.etc = optionalAttrs (!cfg.daemon.enable) {
+
"ldap.conf" = ldapConfig;
+
};
system.activationScripts = mkIf (!cfg.daemon.enable) {
ldap = stringAfter [ "etc" "groups" "users" ] ''
+11 -16
nixos/modules/config/pulseaudio.nix
···
config = mkMerge [
{
-
environment.etc = singleton {
-
target = "pulse/client.conf";
-
source = clientConf;
};
hardware.pulseaudio.configFile = mkDefault "${getBin overriddenPackage}/etc/pulse/default.pa";
···
sound.enable = true;
-
environment.etc = [
-
{ target = "asound.conf";
-
source = alsaConf; }
-
{ target = "pulse/daemon.conf";
-
source = writeText "daemon.conf" (lib.generators.toKeyValue {} cfg.daemon.config); }
-
{ target = "openal/alsoft.conf";
-
source = writeText "alsoft.conf" "drivers=pulse"; }
-
{ target = "libao.conf";
-
source = writeText "libao.conf" "default_driver=pulse"; }
-
];
# Disable flat volumes to enable relative ones
hardware.pulseaudio.daemon.config.flat-volumes = mkDefault "no";
···
})
(mkIf nonSystemWide {
-
environment.etc = singleton {
-
target = "pulse/default.pa";
-
source = myConfigFile;
};
systemd.user = {
services.pulseaudio = {
···
config = mkMerge [
{
+
environment.etc = {
+
"pulse/client.conf".source = clientConf;
};
hardware.pulseaudio.configFile = mkDefault "${getBin overriddenPackage}/etc/pulse/default.pa";
···
sound.enable = true;
+
environment.etc = {
+
"asound.conf".source = alsaConf;
+
"pulse/daemon.conf".source = writeText "daemon.conf"
+
(lib.generators.toKeyValue {} cfg.daemon.config);
+
"openal/alsoft.conf".source = writeText "alsoft.conf" "drivers=pulse";
+
"libao.conf".source = writeText "libao.conf" "default_driver=pulse";
+
};
# Disable flat volumes to enable relative ones
hardware.pulseaudio.daemon.config.flat-volumes = mkDefault "no";
···
})
(mkIf nonSystemWide {
+
environment.etc = {
+
"pulse/default.pa".source = myConfigFile;
};
systemd.user = {
services.pulseaudio = {
+2 -3
nixos/modules/installer/cd-dvd/system-tarball-pc.nix
···
/* fake entry, just to have a happy stage-1. Users
may boot without having stage-1 though */
-
fileSystems = [
{ mountPoint = "/";
device = "/dev/something";
-
}
-
];
nixpkgs.config = {
packageOverrides = p: {
···
/* fake entry, just to have a happy stage-1. Users
may boot without having stage-1 though */
+
fileSystems.fake =
{ mountPoint = "/";
device = "/dev/something";
+
};
nixpkgs.config = {
packageOverrides = p: {
+2 -3
nixos/modules/installer/cd-dvd/system-tarball-sheevaplug.nix
···
/* fake entry, just to have a happy stage-1. Users
may boot without having stage-1 though */
-
fileSystems = [
{ mountPoint = "/";
device = "/dev/something";
-
}
-
];
services.mingetty = {
# Some more help text.
···
/* fake entry, just to have a happy stage-1. Users
may boot without having stage-1 though */
+
fileSystems.fake =
{ mountPoint = "/";
device = "/dev/something";
+
};
services.mingetty = {
# Some more help text.
+1 -1
nixos/modules/installer/cd-dvd/system-tarball.nix
···
# In stage 1 of the boot, mount the CD/DVD as the root FS by label
# so that we don't need to know its device.
-
fileSystems = [ ];
# boot.initrd.availableKernelModules = [ "mvsdio" "reiserfs" "ext3" "ext4" ];
···
# In stage 1 of the boot, mount the CD/DVD as the root FS by label
# so that we don't need to know its device.
+
fileSystems = { };
# boot.initrd.availableKernelModules = [ "mvsdio" "reiserfs" "ext3" "ext4" ];
+6 -3
nixos/modules/programs/dconf.nix
···
cfg = config.programs.dconf;
mkDconfProfile = name: path:
-
{ source = path; target = "dconf/profile/${name}"; };
in
{
···
###### implementation
config = mkIf (cfg.profiles != {} || cfg.enable) {
-
environment.etc = optionals (cfg.profiles != {})
-
(mapAttrsToList mkDconfProfile cfg.profiles);
services.dbus.packages = [ pkgs.dconf ];
···
cfg = config.programs.dconf;
mkDconfProfile = name: path:
+
{
+
name = "dconf/profile/${name}";
+
value.source = path;
+
};
in
{
···
###### implementation
config = mkIf (cfg.profiles != {} || cfg.enable) {
+
environment.etc = optionalAttrs (cfg.profiles != {})
+
(mapAttrs' mkDconfProfile cfg.profiles);
services.dbus.packages = [ pkgs.dconf ];
+11 -15
nixos/modules/programs/shadow.nix
···
config.users.defaultUserShell;
environment.etc =
-
[ { # /etc/login.defs: global configuration for pwdutils. You
-
# cannot login without it!
-
source = pkgs.writeText "login.defs" loginDefs;
-
target = "login.defs";
-
}
-
{ # /etc/default/useradd: configuration for useradd.
-
source = pkgs.writeText "useradd"
-
''
-
GROUP=100
-
HOME=/home
-
SHELL=${utils.toShellPath config.users.defaultUserShell}
-
'';
-
target = "default/useradd";
-
}
-
];
security.pam.services =
{ chsh = { rootOK = true; };
···
config.users.defaultUserShell;
environment.etc =
+
{ # /etc/login.defs: global configuration for pwdutils. You
+
# cannot login without it!
+
"login.defs".source = pkgs.writeText "login.defs" loginDefs;
+
# /etc/default/useradd: configuration for useradd.
+
"default/useradd".source = pkgs.writeText "useradd"
+
''
+
GROUP=100
+
HOME=/home
+
SHELL=${utils.toShellPath config.users.defaultUserShell}
+
'';
+
};
security.pam.services =
{ chsh = { rootOK = true; };
+15 -13
nixos/modules/security/duosec.nix
···
accept_env_factor=${boolToStr cfg.acceptEnvFactor}
'';
-
loginCfgFile = optional cfg.ssh.enable
-
{ source = pkgs.writeText "login_duo.conf" configFileLogin;
-
mode = "0600";
-
user = "sshd";
-
target = "duo/login_duo.conf";
-
};
-
pamCfgFile = optional cfg.pam.enable
-
{ source = pkgs.writeText "pam_duo.conf" configFilePam;
-
mode = "0600";
-
user = "sshd";
-
target = "duo/pam_duo.conf";
-
};
in
{
options = {
···
environment.systemPackages = [ pkgs.duo-unix ];
security.wrappers.login_duo.source = "${pkgs.duo-unix.out}/bin/login_duo";
-
environment.etc = loginCfgFile ++ pamCfgFile;
/* If PAM *and* SSH are enabled, then don't do anything special.
If PAM isn't used, set the default SSH-only options. */
···
accept_env_factor=${boolToStr cfg.acceptEnvFactor}
'';
+
loginCfgFile = optionalAttrs cfg.ssh.enable {
+
"duo/login_duo.conf" =
+
{ source = pkgs.writeText "login_duo.conf" configFileLogin;
+
mode = "0600";
+
user = "sshd";
+
};
+
};
+
pamCfgFile = optional cfg.pam.enable {
+
"duo/pam_duo.conf" =
+
{ source = pkgs.writeText "pam_duo.conf" configFilePam;
+
mode = "0600";
+
user = "sshd";
+
};
+
};
in
{
options = {
···
environment.systemPackages = [ pkgs.duo-unix ];
security.wrappers.login_duo.source = "${pkgs.duo-unix.out}/bin/login_duo";
+
environment.etc = loginCfgFile // pamCfgFile;
/* If PAM *and* SSH are enabled, then don't do anything special.
If PAM isn't used, set the default SSH-only options. */
+4 -5
nixos/modules/security/pam.nix
···
motd = pkgs.writeText "motd" config.users.motd;
-
makePAMService = pamService:
-
{ source = pkgs.writeText "${pamService.name}.pam" pamService.text;
-
target = "pam.d/${pamService.name}";
};
in
···
};
};
-
environment.etc =
-
mapAttrsToList (n: v: makePAMService v) config.security.pam.services;
security.pam.services =
{ other.text =
···
motd = pkgs.writeText "motd" config.users.motd;
+
makePAMService = name: service:
+
{ name = "pam.d/${name}";
+
value.source = pkgs.writeText "${name}.pam" service.text;
};
in
···
};
};
+
environment.etc = mapAttrs' makePAMService config.security.pam.services;
security.pam.services =
{ other.text =
+2 -3
nixos/modules/security/pam_mount.nix
···
config = mkIf (cfg.enable || anyPamMount) {
environment.systemPackages = [ pkgs.pam_mount ];
-
environment.etc = [{
-
target = "security/pam_mount.conf.xml";
source =
let
extraUserVolumes = filterAttrs (n: u: u.cryptHomeLuks != null) config.users.users;
···
${concatStringsSep "\n" cfg.extraVolumes}
</pam_mount>
'';
-
}];
};
}
···
config = mkIf (cfg.enable || anyPamMount) {
environment.systemPackages = [ pkgs.pam_mount ];
+
environment.etc."security/pam_mount.conf.xml" = {
source =
let
extraUserVolumes = filterAttrs (n: u: u.cryptHomeLuks != null) config.users.users;
···
${concatStringsSep "\n" cfg.extraVolumes}
</pam_mount>
'';
+
};
};
}
+2 -3
nixos/modules/security/rtkit.nix
···
services.dbus.packages = [ pkgs.rtkit ];
-
users.users = singleton
-
{ name = "rtkit";
-
uid = config.ids.uids.rtkit;
description = "RealtimeKit daemon";
};
···
services.dbus.packages = [ pkgs.rtkit ];
+
users.users.rtkit =
+
{ uid = config.ids.uids.rtkit;
description = "RealtimeKit daemon";
};
+1 -2
nixos/modules/security/sudo.nix
···
security.pam.services.sudo = { sshAgentAuth = true; };
-
environment.etc = singleton
{ source =
pkgs.runCommand "sudoers"
{
···
# Make sure that the sudoers file is syntactically valid.
# (currently disabled - NIXOS-66)
"${pkgs.buildPackages.sudo}/sbin/visudo -f $src -c && cp $src $out";
-
target = "sudoers";
mode = "0440";
};
···
security.pam.services.sudo = { sshAgentAuth = true; };
+
environment.etc.sudoers =
{ source =
pkgs.runCommand "sudoers"
{
···
# Make sure that the sudoers file is syntactically valid.
# (currently disabled - NIXOS-66)
"${pkgs.buildPackages.sudo}/sbin/visudo -f $src -c && cp $src $out";
mode = "0440";
};
+12 -12
nixos/modules/services/audio/mpd.nix
···
};
};
-
users.users = optionalAttrs (cfg.user == name) (singleton {
-
inherit uid;
-
inherit name;
-
group = cfg.group;
-
extraGroups = [ "audio" ];
-
description = "Music Player Daemon user";
-
home = "${cfg.dataDir}";
-
});
-
users.groups = optionalAttrs (cfg.group == name) (singleton {
-
inherit name;
-
gid = gid;
-
});
};
}
···
};
};
+
users.users = optionalAttrs (cfg.user == name) {
+
${name} = {
+
inherit uid;
+
group = cfg.group;
+
extraGroups = [ "audio" ];
+
description = "Music Player Daemon user";
+
home = "${cfg.dataDir}";
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == name) {
+
${name}.gid = gid;
+
};
};
}
+4 -3
nixos/modules/services/backup/mysql-backup.nix
···
};
config = mkIf cfg.enable {
-
users.users = optionalAttrs (cfg.user == defaultUser) (singleton
-
{ name = defaultUser;
isSystemUser = true;
createHome = false;
home = cfg.location;
group = "nogroup";
-
});
services.mysql.ensureUsers = [{
name = cfg.user;
···
};
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == defaultUser) {
+
${defaultUser} = {
isSystemUser = true;
createHome = false;
home = cfg.location;
group = "nogroup";
+
};
+
};
services.mysql.ensureUsers = [{
name = cfg.user;
+1 -2
nixos/modules/services/cluster/kubernetes/default.nix
···
"d /var/lib/kubernetes 0755 kubernetes kubernetes -"
];
-
users.users = singleton {
-
name = "kubernetes";
uid = config.ids.uids.kubernetes;
description = "Kubernetes user";
extraGroups = [ "docker" ];
···
"d /var/lib/kubernetes 0755 kubernetes kubernetes -"
];
+
users.users.kubernetes = {
uid = config.ids.uids.kubernetes;
description = "Kubernetes user";
extraGroups = [ "docker" ];
+11 -10
nixos/modules/services/continuous-integration/buildbot/master.nix
···
config = mkIf cfg.enable {
users.groups = optional (cfg.group == "buildbot") {
-
name = "buildbot";
};
-
users.users = optional (cfg.user == "buildbot") {
-
name = "buildbot";
-
description = "Buildbot User.";
-
isNormalUser = true;
-
createHome = true;
-
home = cfg.home;
-
group = cfg.group;
-
extraGroups = cfg.extraGroups;
-
useDefaultShell = true;
};
systemd.services.buildbot-master = {
···
config = mkIf cfg.enable {
users.groups = optional (cfg.group == "buildbot") {
+
buildbot = { };
};
+
users.users = optionalAttrs (cfg.user == "buildbot") {
+
buildbot = {
+
description = "Buildbot User.";
+
isNormalUser = true;
+
createHome = true;
+
home = cfg.home;
+
group = cfg.group;
+
extraGroups = cfg.extraGroups;
+
useDefaultShell = true;
+
};
};
systemd.services.buildbot-master = {
+11 -10
nixos/modules/services/continuous-integration/buildbot/worker.nix
···
services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass);
users.groups = optional (cfg.group == "bbworker") {
-
name = "bbworker";
};
-
users.users = optional (cfg.user == "bbworker") {
-
name = "bbworker";
-
description = "Buildbot Worker User.";
-
isNormalUser = true;
-
createHome = true;
-
home = cfg.home;
-
group = cfg.group;
-
extraGroups = cfg.extraGroups;
-
useDefaultShell = true;
};
systemd.services.buildbot-worker = {
···
services.buildbot-worker.workerPassFile = mkDefault (pkgs.writeText "buildbot-worker-password" cfg.workerPass);
users.groups = optional (cfg.group == "bbworker") {
+
bbworker = { };
};
+
users.users = optionalAttrs (cfg.user == "bbworker") {
+
bbworker = {
+
description = "Buildbot Worker User.";
+
isNormalUser = true;
+
createHome = true;
+
home = cfg.home;
+
group = cfg.group;
+
extraGroups = cfg.extraGroups;
+
useDefaultShell = true;
+
};
};
systemd.services.buildbot-worker = {
+12 -12
nixos/modules/services/continuous-integration/gocd-agent/default.nix
···
};
config = mkIf cfg.enable {
-
users.groups = optional (cfg.group == "gocd-agent") {
-
name = "gocd-agent";
-
gid = config.ids.gids.gocd-agent;
};
-
users.users = optional (cfg.user == "gocd-agent") {
-
name = "gocd-agent";
-
description = "gocd-agent user";
-
createHome = true;
-
home = cfg.workDir;
-
group = cfg.group;
-
extraGroups = cfg.extraGroups;
-
useDefaultShell = true;
-
uid = config.ids.uids.gocd-agent;
};
systemd.services.gocd-agent = {
···
};
config = mkIf cfg.enable {
+
users.groups = optionalAttrs (cfg.group == "gocd-agent") {
+
gocd-agent.gid = config.ids.gids.gocd-agent;
};
+
users.users = optionalAttrs (cfg.user == "gocd-agent") {
+
gocd-agent = {
+
description = "gocd-agent user";
+
createHome = true;
+
home = cfg.workDir;
+
group = cfg.group;
+
extraGroups = cfg.extraGroups;
+
useDefaultShell = true;
+
uid = config.ids.uids.gocd-agent;
+
};
};
systemd.services.gocd-agent = {
+12 -12
nixos/modules/services/continuous-integration/gocd-server/default.nix
···
};
config = mkIf cfg.enable {
-
users.groups = optional (cfg.group == "gocd-server") {
-
name = "gocd-server";
-
gid = config.ids.gids.gocd-server;
};
-
users.users = optional (cfg.user == "gocd-server") {
-
name = "gocd-server";
-
description = "gocd-server user";
-
createHome = true;
-
home = cfg.workDir;
-
group = cfg.group;
-
extraGroups = cfg.extraGroups;
-
useDefaultShell = true;
-
uid = config.ids.uids.gocd-server;
};
systemd.services.gocd-server = {
···
};
config = mkIf cfg.enable {
+
users.groups = optionalAttrs (cfg.group == "gocd-server") {
+
gocd-server.gid = config.ids.gids.gocd-server;
};
+
users.users = optionalAttrs (cfg.user == "gocd-server") {
+
gocd-server = {
+
description = "gocd-server user";
+
createHome = true;
+
home = cfg.workDir;
+
group = cfg.group;
+
extraGroups = cfg.extraGroups;
+
useDefaultShell = true;
+
uid = config.ids.uids.gocd-server;
+
};
};
systemd.services.gocd-server = {
+12 -12
nixos/modules/services/continuous-integration/jenkins/default.nix
···
pkgs.dejavu_fonts
];
-
users.groups = optional (cfg.group == "jenkins") {
-
name = "jenkins";
-
gid = config.ids.gids.jenkins;
};
-
users.users = optional (cfg.user == "jenkins") {
-
name = "jenkins";
-
description = "jenkins user";
-
createHome = true;
-
home = cfg.home;
-
group = cfg.group;
-
extraGroups = cfg.extraGroups;
-
useDefaultShell = true;
-
uid = config.ids.uids.jenkins;
};
systemd.services.jenkins = {
···
pkgs.dejavu_fonts
];
+
users.groups = optionalAttrs (cfg.group == "jenkins") {
+
jenkins.gid = config.ids.gids.jenkins;
};
+
users.users = optionalAttrs (cfg.user == "jenkins") {
+
jenkins = {
+
description = "jenkins user";
+
createHome = true;
+
home = cfg.home;
+
group = cfg.group;
+
extraGroups = cfg.extraGroups;
+
useDefaultShell = true;
+
uid = config.ids.uids.jenkins;
+
};
};
systemd.services.jenkins = {
+10 -10
nixos/modules/services/continuous-integration/jenkins/slave.nix
···
config = mkIf (cfg.enable && !masterCfg.enable) {
users.groups = optional (cfg.group == "jenkins") {
-
name = "jenkins";
-
gid = config.ids.gids.jenkins;
};
-
users.users = optional (cfg.user == "jenkins") {
-
name = "jenkins";
-
description = "jenkins user";
-
createHome = true;
-
home = cfg.home;
-
group = cfg.group;
-
useDefaultShell = true;
-
uid = config.ids.uids.jenkins;
};
};
}
···
config = mkIf (cfg.enable && !masterCfg.enable) {
users.groups = optional (cfg.group == "jenkins") {
+
jenkins.gid = config.ids.gids.jenkins;
};
+
users.users = optionalAttrs (cfg.user == "jenkins") {
+
jenkins = {
+
description = "jenkins user";
+
createHome = true;
+
home = cfg.home;
+
group = cfg.group;
+
useDefaultShell = true;
+
uid = config.ids.uids.jenkins;
+
};
};
};
}
+7 -7
nixos/modules/services/databases/cockroachdb.nix
···
environment.systemPackages = [ crdb ];
-
users.users = optionalAttrs (cfg.user == "cockroachdb") (singleton
-
{ name = "cockroachdb";
description = "CockroachDB Server User";
uid = config.ids.uids.cockroachdb;
group = cfg.group;
-
});
-
users.groups = optionalAttrs (cfg.group == "cockroachdb") (singleton
-
{ name = "cockroachdb";
-
gid = config.ids.gids.cockroachdb;
-
});
networking.firewall.allowedTCPPorts = lib.optionals cfg.openPorts
[ cfg.http.port cfg.listen.port ];
···
environment.systemPackages = [ crdb ];
+
users.users = optionalAttrs (cfg.user == "cockroachdb") {
+
cockroachdb = {
description = "CockroachDB Server User";
uid = config.ids.uids.cockroachdb;
group = cfg.group;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "cockroachdb") {
+
cockroachdb.gid = config.ids.gids.cockroachdb;
+
};
networking.firewall.allowedTCPPorts = lib.optionals cfg.openPorts
[ cfg.http.port cfg.listen.port ];
+7 -7
nixos/modules/services/databases/foundationdb.nix
···
environment.systemPackages = [ pkg ];
-
users.users = optionalAttrs (cfg.user == "foundationdb") (singleton
-
{ name = "foundationdb";
description = "FoundationDB User";
uid = config.ids.uids.foundationdb;
group = cfg.group;
-
});
-
users.groups = optionalAttrs (cfg.group == "foundationdb") (singleton
-
{ name = "foundationdb";
-
gid = config.ids.gids.foundationdb;
-
});
networking.firewall.allowedTCPPortRanges = mkIf cfg.openFirewall
[ { from = cfg.listenPortStart;
···
environment.systemPackages = [ pkg ];
+
users.users = optionalAttrs (cfg.user == "foundationdb") {
+
foundationdb = {
description = "FoundationDB User";
uid = config.ids.uids.foundationdb;
group = cfg.group;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "foundationdb") {
+
foundationdb.gid = config.ids.gids.foundationdb;
+
};
networking.firewall.allowedTCPPortRanges = mkIf cfg.openFirewall
[ { from = cfg.listenPortStart;
+7 -7
nixos/modules/services/databases/influxdb.nix
···
'';
};
-
users.users = optional (cfg.user == "influxdb") {
-
name = "influxdb";
-
uid = config.ids.uids.influxdb;
-
description = "Influxdb daemon user";
};
-
users.groups = optional (cfg.group == "influxdb") {
-
name = "influxdb";
-
gid = config.ids.gids.influxdb;
};
};
···
'';
};
+
users.users = optionalAttrs (cfg.user == "influxdb") {
+
influxdb = {
+
uid = config.ids.uids.influxdb;
+
description = "Influxdb daemon user";
+
};
};
+
users.groups = optionalAttrs (cfg.group == "influxdb") {
+
influxdb.gid = config.ids.gids.influxdb;
};
};
+3 -4
nixos/modules/services/databases/memcached.nix
···
config = mkIf config.services.memcached.enable {
-
users.users = optional (cfg.user == "memcached") {
-
name = "memcached";
-
description = "Memcached server user";
-
isSystemUser = true;
};
environment.systemPackages = [ memcached ];
···
config = mkIf config.services.memcached.enable {
+
users.users = optionalAttrs (cfg.user == "memcached") {
+
memcached.description = "Memcached server user";
+
memcached.isSystemUser = true;
};
environment.systemPackages = [ memcached ];
+1 -2
nixos/modules/services/databases/neo4j.nix
···
environment.systemPackages = [ cfg.package ];
-
users.users = singleton {
-
name = "neo4j";
uid = config.ids.uids.neo4j;
description = "Neo4j daemon user";
home = cfg.directories.home;
···
environment.systemPackages = [ cfg.package ];
+
users.users.neo4j = {
uid = config.ids.uids.neo4j;
description = "Neo4j daemon user";
home = cfg.directories.home;
+2 -3
nixos/modules/services/databases/virtuoso.nix
···
config = mkIf cfg.enable {
-
users.users = singleton
-
{ name = virtuosoUser;
-
uid = config.ids.uids.virtuoso;
description = "virtuoso user";
home = stateDir;
};
···
config = mkIf cfg.enable {
+
users.users.${virtuosoUser} =
+
{ uid = config.ids.uids.virtuoso;
description = "virtuoso user";
home = stateDir;
};
+8 -7
nixos/modules/services/editors/infinoted.nix
···
};
config = mkIf (cfg.enable) {
-
users.users = optional (cfg.user == "infinoted")
-
{ name = "infinoted";
-
description = "Infinoted user";
-
group = cfg.group;
-
isSystemUser = true;
};
-
users.groups = optional (cfg.group == "infinoted")
-
{ name = "infinoted";
};
systemd.services.infinoted =
···
};
config = mkIf (cfg.enable) {
+
users.users = optionalAttrs (cfg.user == "infinoted")
+
{ infinoted = {
+
description = "Infinoted user";
+
group = cfg.group;
+
isSystemUser = true;
+
};
};
+
users.groups = optionalAttrs (cfg.group == "infinoted")
+
{ infinoted = { };
};
systemd.services.infinoted =
+3 -3
nixos/modules/services/hardware/bluetooth.nix
···
environment.systemPackages = [ bluez-bluetooth ];
-
environment.etc = singleton {
-
source = pkgs.writeText "main.conf" (generators.toINI { } cfg.config + optionalString (cfg.extraConfig != null) cfg.extraConfig);
-
target = "bluetooth/main.conf";
};
services.udev.packages = [ bluez-bluetooth ];
···
environment.systemPackages = [ bluez-bluetooth ];
+
environment.etc."bluetooth/main.conf"= {
+
source = pkgs.writeText "main.conf"
+
(generators.toINI { } cfg.config + optionalString (cfg.extraConfig != null) cfg.extraConfig);
};
services.udev.packages = [ bluez-bluetooth ];
+4 -7
nixos/modules/services/hardware/sane_extra_backends/brscan4.nix
···
{
options = {
-
hardware.sane.brscan4.enable =
mkEnableOption "Brother's brscan4 scan backend" // {
description = ''
When enabled, will automatically register the "brscan4" sane
-
backend and bring configuration files to their expected location.
'';
};
···
pkgs.brscan4
];
-
environment.etc = singleton {
-
target = "opt/brother/scanner/brscan4";
-
source = "${etcFiles}/etc/opt/brother/scanner/brscan4";
-
};
assertions = [
{ assertion = all (x: !(null != x.ip && null != x.nodename)) netDeviceList;
-
message = ''
When describing a network device as part of the attribute list
`hardware.sane.brscan4.netDevices`, only one of its `ip` or `nodename`
···
{
options = {
+
hardware.sane.brscan4.enable =
mkEnableOption "Brother's brscan4 scan backend" // {
description = ''
When enabled, will automatically register the "brscan4" sane
+
backend and bring configuration files to their expected location.
'';
};
···
pkgs.brscan4
];
+
environment.etc."opt/brother/scanner/brscan4" =
+
{ source = "${etcFiles}/etc/opt/brother/scanner/brscan4"; };
assertions = [
{ assertion = all (x: !(null != x.ip && null != x.nodename)) netDeviceList;
message = ''
When describing a network device as part of the attribute list
`hardware.sane.brscan4.netDevices`, only one of its `ip` or `nodename`
+7 -7
nixos/modules/services/hardware/tcsd.nix
···
serviceConfig.ExecStart = "${pkgs.trousers}/sbin/tcsd -f -c ${tcsdConf}";
};
-
users.users = optionalAttrs (cfg.user == "tss") (singleton
-
{ name = "tss";
group = "tss";
uid = config.ids.uids.tss;
-
});
-
users.groups = optionalAttrs (cfg.group == "tss") (singleton
-
{ name = "tss";
-
gid = config.ids.gids.tss;
-
});
};
}
···
serviceConfig.ExecStart = "${pkgs.trousers}/sbin/tcsd -f -c ${tcsdConf}";
};
+
users.users = optionalAttrs (cfg.user == "tss") {
+
tss = {
group = "tss";
uid = config.ids.uids.tss;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "tss") {
+
tss.gid = config.ids.gids.tss;
+
};
};
}
+8 -7
nixos/modules/services/hardware/tlp.nix
···
services.udev.packages = [ tlp ];
-
environment.etc = [{ source = confFile;
-
target = "default/tlp";
-
}
-
] ++ optional enableRDW {
-
source = "${tlp}/etc/NetworkManager/dispatcher.d/99tlp-rdw-nm";
-
target = "NetworkManager/dispatcher.d/99tlp-rdw-nm";
-
};
environment.systemPackages = [ tlp ];
···
services.udev.packages = [ tlp ];
+
environment.etc =
+
{
+
"default/tlp".source = confFile;
+
} // optionalAttrs enableRDW {
+
"NetworkManager/dispatcher.d/99tlp-rdw-nm" = {
+
source = "${tlp}/etc/NetworkManager/dispatcher.d/99tlp-rdw-nm";
+
};
+
};
environment.systemPackages = [ tlp ];
+4 -7
nixos/modules/services/hardware/udev.nix
···
boot.kernelParams = mkIf (!config.networking.usePredictableInterfaceNames) [ "net.ifnames=0" ];
environment.etc =
-
[ { source = udevRules;
-
target = "udev/rules.d";
-
}
-
{ source = hwdbBin;
-
target = "udev/hwdb.bin";
-
}
-
];
system.requiredKernelConfig = with config.lib.kernelConfig; [
(isEnabled "UNIX")
···
boot.kernelParams = mkIf (!config.networking.usePredictableInterfaceNames) [ "net.ifnames=0" ];
environment.etc =
+
{
+
"udev/rules.d".source = udevRules;
+
"udev/hwdb.bin".source = hwdbBin;
+
};
system.requiredKernelConfig = with config.lib.kernelConfig; [
(isEnabled "UNIX")
+7 -6
nixos/modules/services/hardware/usbmuxd.nix
···
config = mkIf cfg.enable {
-
users.users = optional (cfg.user == defaultUserGroup) {
-
name = cfg.user;
-
description = "usbmuxd user";
-
group = cfg.group;
-
isSystemUser = true;
};
users.groups = optional (cfg.group == defaultUserGroup) {
-
name = cfg.group;
};
# Give usbmuxd permission for Apple devices
···
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == defaultUserGroup) {
+
${cfg.user} = {
+
description = "usbmuxd user";
+
group = cfg.group;
+
isSystemUser = true;
+
};
};
users.groups = optional (cfg.group == defaultUserGroup) {
+
${cfg.group} = { };
};
# Give usbmuxd permission for Apple devices
+4 -3
nixos/modules/services/logging/logcheck.nix
···
mapAttrsToList writeIgnoreRule cfg.ignore
++ mapAttrsToList writeIgnoreCronRule cfg.ignoreCron;
-
users.users = optionalAttrs (cfg.user == "logcheck") (singleton
-
{ name = "logcheck";
uid = config.ids.uids.logcheck;
shell = "/bin/sh";
description = "Logcheck user account";
extraGroups = cfg.extraGroups;
-
});
system.activationScripts.logcheck = ''
mkdir -m 700 -p /var/{lib,lock}/logcheck
···
mapAttrsToList writeIgnoreRule cfg.ignore
++ mapAttrsToList writeIgnoreCronRule cfg.ignoreCron;
+
users.users = optionalAttrs (cfg.user == "logcheck") {
+
logcheck = {
uid = config.ids.uids.logcheck;
shell = "/bin/sh";
description = "Logcheck user account";
extraGroups = cfg.extraGroups;
+
};
+
};
system.activationScripts.logcheck = ''
mkdir -m 700 -p /var/{lib,lock}/logcheck
+23 -27
nixos/modules/services/mail/dovecot.nix
···
++ optional cfg.enablePop3 "pop3"
++ optional cfg.enableLmtp "lmtp";
-
users.users = [
-
{ name = "dovenull";
-
uid = config.ids.uids.dovenull2;
-
description = "Dovecot user for untrusted logins";
-
group = "dovenull";
-
}
-
] ++ optional (cfg.user == "dovecot2")
-
{ name = "dovecot2";
-
uid = config.ids.uids.dovecot2;
description = "Dovecot user";
group = cfg.group;
-
}
-
++ optional (cfg.createMailUser && cfg.mailUser != null)
-
({ name = cfg.mailUser;
-
description = "Virtual Mail User";
-
} // optionalAttrs (cfg.mailGroup != null) {
-
group = cfg.mailGroup;
-
});
-
users.groups = optional (cfg.group == "dovecot2")
-
{ name = "dovecot2";
-
gid = config.ids.gids.dovecot2;
-
}
-
++ optional (cfg.createMailUser && cfg.mailGroup != null)
-
{ name = cfg.mailGroup;
-
}
-
++ singleton
-
{ name = "dovenull";
-
gid = config.ids.gids.dovenull2;
-
};
environment.etc."dovecot/modules".source = modulesDir;
environment.etc."dovecot/dovecot.conf".source = cfg.configFile;
···
++ optional cfg.enablePop3 "pop3"
++ optional cfg.enableLmtp "lmtp";
+
users.users = {
+
dovenull =
+
{ uid = config.ids.uids.dovenull2;
+
description = "Dovecot user for untrusted logins";
+
group = "dovenull";
+
};
+
} // optionalAttrs (cfg.user == "dovecot2") {
+
dovecot2 =
+
{ uid = config.ids.uids.dovecot2;
description = "Dovecot user";
group = cfg.group;
+
};
+
} // optionalAttrs (cfg.createMailUser && cfg.mailUser != null) {
+
${cfg.mailUser} =
+
{ description = "Virtual Mail User"; } //
+
optionalAttrs (cfg.mailGroup != null)
+
{ group = cfg.mailGroup; };
+
};
+
users.groups = {
+
dovenull.gid = config.ids.gids.dovenull2;
+
} // optionalAttrs (cfg.group == "dovecot2") {
+
dovecot2.gid = config.ids.gids.dovecot2;
+
} // optionalAttrs (cfg.createMailUser && cfg.mailGroup != null) {
+
${cfg.mailgroup} = { };
+
};
environment.etc."dovecot/modules".source = modulesDir;
environment.etc."dovecot/dovecot.conf".source = cfg.configFile;
+7 -7
nixos/modules/services/mail/dspam.nix
···
config = mkIf cfg.enable (mkMerge [
{
-
users.users = optionalAttrs (cfg.user == "dspam") (singleton
-
{ name = "dspam";
group = cfg.group;
uid = config.ids.uids.dspam;
-
});
-
users.groups = optionalAttrs (cfg.group == "dspam") (singleton
-
{ name = "dspam";
-
gid = config.ids.gids.dspam;
-
});
environment.systemPackages = [ dspam ];
···
config = mkIf cfg.enable (mkMerge [
{
+
users.users = optionalAttrs (cfg.user == "dspam") {
+
dspam = {
group = cfg.group;
uid = config.ids.uids.dspam;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "dspam") {
+
dspam.gid = config.ids.gids.dspam;
+
};
environment.systemPackages = [ dspam ];
+2 -4
nixos/modules/services/mail/exim.nix
···
systemPackages = [ cfg.package ];
};
-
users.users = singleton {
-
name = cfg.user;
description = "Exim mail transfer agent user";
uid = config.ids.uids.exim;
group = cfg.group;
};
-
users.groups = singleton {
-
name = cfg.group;
gid = config.ids.gids.exim;
};
···
systemPackages = [ cfg.package ];
};
+
users.users.${cfg.user} = {
description = "Exim mail transfer agent user";
uid = config.ids.uids.exim;
group = cfg.group;
};
+
users.groups.${cfg.group} = {
gid = config.ids.gids.exim;
};
+2 -4
nixos/modules/services/mail/mlmmj.nix
···
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = cfg.user;
description = "mlmmj user";
home = stateDir;
createHome = true;
···
useDefaultShell = true;
};
-
users.groups = singleton {
-
name = cfg.group;
gid = config.ids.gids.mlmmj;
};
···
config = mkIf cfg.enable {
+
users.users.${cfg.user} = {
description = "mlmmj user";
home = stateDir;
createHome = true;
···
useDefaultShell = true;
};
+
users.groups.${cfg.group} = {
gid = config.ids.gids.mlmmj;
};
+2 -5
nixos/modules/services/mail/nullmailer.nix
···
};
users = {
-
users = singleton {
-
name = cfg.user;
description = "Nullmailer relay-only mta user";
group = cfg.group;
};
-
groups = singleton {
-
name = cfg.group;
-
};
};
systemd.tmpfiles.rules = [
···
};
users = {
+
users.${cfg.user} = {
description = "Nullmailer relay-only mta user";
group = cfg.group;
};
+
groups.${cfg.group} = { };
};
systemd.tmpfiles.rules = [
+7 -7
nixos/modules/services/mail/opendkim.nix
···
config = mkIf cfg.enable {
-
users.users = optionalAttrs (cfg.user == "opendkim") (singleton
-
{ name = "opendkim";
group = cfg.group;
uid = config.ids.uids.opendkim;
-
});
-
users.groups = optionalAttrs (cfg.group == "opendkim") (singleton
-
{ name = "opendkim";
-
gid = config.ids.gids.opendkim;
-
});
environment.systemPackages = [ pkgs.opendkim ];
···
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == "opendkim") {
+
opendkim = {
group = cfg.group;
uid = config.ids.uids.opendkim;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "opendkim") {
+
opendkimgid = config.ids.gids.opendkim;
+
};
environment.systemPackages = [ pkgs.opendkim ];
+10 -11
nixos/modules/services/mail/postfix.nix
···
setgid = true;
};
-
users.users = optional (user == "postfix")
-
{ name = "postfix";
-
description = "Postfix mail server user";
-
uid = config.ids.uids.postfix;
-
group = group;
};
users.groups =
-
optional (group == "postfix")
-
{ name = group;
-
gid = config.ids.gids.postfix;
}
-
++ optional (setgidGroup == "postdrop")
-
{ name = setgidGroup;
-
gid = config.ids.gids.postdrop;
};
systemd.services.postfix =
···
setgid = true;
};
+
users.users = optionalAttrs (user == "postfix")
+
{ postfix = {
+
description = "Postfix mail server user";
+
uid = config.ids.uids.postfix;
+
group = group;
+
};
};
users.groups =
+
optionalAttrs (group == "postfix")
+
{ group.gid = config.ids.gids.postfix;
}
+
++ optionalAttrs (setgidGroup == "postdrop")
+
{ ${setgidGroup}.gid = config.ids.gids.postdrop;
};
systemd.services.postfix =
+7 -7
nixos/modules/services/mail/postsrsd.nix
···
services.postsrsd.domain = mkDefault config.networking.hostName;
-
users.users = optionalAttrs (cfg.user == "postsrsd") (singleton
-
{ name = "postsrsd";
group = cfg.group;
uid = config.ids.uids.postsrsd;
-
});
-
users.groups = optionalAttrs (cfg.group == "postsrsd") (singleton
-
{ name = "postsrsd";
-
gid = config.ids.gids.postsrsd;
-
});
systemd.services.postsrsd = {
description = "PostSRSd SRS rewriting server";
···
services.postsrsd.domain = mkDefault config.networking.hostName;
+
users.users = optionalAttrs (cfg.user == "postsrsd") {
+
postsrsd = {
group = cfg.group;
uid = config.ids.uids.postsrsd;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "postsrsd") {
+
postsrsd.gid = config.ids.gids.postsrsd;
+
};
systemd.services.postsrsd = {
description = "PostSRSd SRS rewriting server";
+2 -4
nixos/modules/services/mail/rspamd.nix
···
# Allow users to run 'rspamc' and 'rspamadm'.
environment.systemPackages = [ pkgs.rspamd ];
-
users.users = singleton {
-
name = cfg.user;
description = "rspamd daemon";
uid = config.ids.uids.rspamd;
group = cfg.group;
};
-
users.groups = singleton {
-
name = cfg.group;
gid = config.ids.gids.rspamd;
};
···
# Allow users to run 'rspamc' and 'rspamadm'.
environment.systemPackages = [ pkgs.rspamd ];
+
users.users.${cfg.user} = {
description = "rspamd daemon";
uid = config.ids.uids.rspamd;
group = cfg.group;
};
+
users.groups.${cfg.group} = {
gid = config.ids.gids.rspamd;
};
+2 -4
nixos/modules/services/mail/spamassassin.nix
···
systemPackages = [ pkgs.spamassassin ];
};
-
users.users = singleton {
-
name = "spamd";
description = "Spam Assassin Daemon";
uid = config.ids.uids.spamd;
group = "spamd";
};
-
users.groups = singleton {
-
name = "spamd";
gid = config.ids.gids.spamd;
};
···
systemPackages = [ pkgs.spamassassin ];
};
+
users.users.spamd = {
description = "Spam Assassin Daemon";
uid = config.ids.uids.spamd;
group = "spamd";
};
+
users.groups.spamd = {
gid = config.ids.gids.spamd;
};
+1 -2
nixos/modules/services/misc/apache-kafka.nix
···
environment.systemPackages = [cfg.package];
-
users.users = singleton {
-
name = "apache-kafka";
uid = config.ids.uids.apache-kafka;
description = "Apache Kafka daemon user";
home = head cfg.logDirs;
···
environment.systemPackages = [cfg.package];
+
users.users.apache-kafka = {
uid = config.ids.uids.apache-kafka;
description = "Apache Kafka daemon user";
home = head cfg.logDirs;
+6 -10
nixos/modules/services/misc/bepasty.nix
···
})
) cfg.servers;
-
users.users = [{
-
uid = config.ids.uids.bepasty;
-
name = user;
-
group = group;
-
home = default_home;
-
}];
-
users.groups = [{
-
name = group;
-
gid = config.ids.gids.bepasty;
-
}];
};
}
···
})
) cfg.servers;
+
users.users.${user} =
+
{ uid = config.ids.uids.bepasty;
+
group = group;
+
home = default_home;
+
};
+
users.groups.${group}.gid = config.ids.gids.bepasty;
};
}
+4 -3
nixos/modules/services/misc/cgminer.nix
···
config = mkIf config.services.cgminer.enable {
-
users.users = optionalAttrs (cfg.user == "cgminer") (singleton
-
{ name = "cgminer";
uid = config.ids.uids.cgminer;
description = "Cgminer user";
-
});
environment.systemPackages = [ cfg.package ];
···
config = mkIf config.services.cgminer.enable {
+
users.users = optionalAttrs (cfg.user == "cgminer") {
+
cgminer = {
uid = config.ids.uids.cgminer;
description = "Cgminer user";
+
};
+
};
environment.systemPackages = [ cfg.package ];
+4 -7
nixos/modules/services/misc/couchpotato.nix
···
};
};
-
users.users = singleton
-
{ name = "couchpotato";
-
group = "couchpotato";
home = "/var/lib/couchpotato/";
description = "CouchPotato daemon user";
uid = config.ids.uids.couchpotato;
};
-
users.groups = singleton
-
{ name = "couchpotato";
-
gid = config.ids.gids.couchpotato;
-
};
};
}
···
};
};
+
users.users.couchpotato =
+
{ group = "couchpotato";
home = "/var/lib/couchpotato/";
description = "CouchPotato daemon user";
uid = config.ids.uids.couchpotato;
};
+
users.groups.couchpotato =
+
{ gid = config.ids.gids.couchpotato; };
};
}
+3 -7
nixos/modules/services/misc/dictd.nix
···
# get the command line client on system path to make some use of the service
environment.systemPackages = [ pkgs.dict ];
-
users.users = singleton
-
{ name = "dictd";
-
group = "dictd";
description = "DICT.org dictd server";
home = "${dictdb}/share/dictd";
uid = config.ids.uids.dictd;
};
-
users.groups = singleton
-
{ name = "dictd";
-
gid = config.ids.gids.dictd;
-
};
systemd.services.dictd = {
description = "DICT.org Dictionary Server";
···
# get the command line client on system path to make some use of the service
environment.systemPackages = [ pkgs.dict ];
+
users.users.dictd =
+
{ group = "dictd";
description = "DICT.org dictd server";
home = "${dictdb}/share/dictd";
uid = config.ids.uids.dictd;
};
+
users.groups.dictd.gid = config.ids.gids.dictd;
systemd.services.dictd = {
description = "DICT.org Dictionary Server";
+1 -2
nixos/modules/services/misc/etcd.nix
···
environment.systemPackages = [ pkgs.etcdctl ];
-
users.users = singleton {
-
name = "etcd";
uid = config.ids.uids.etcd;
description = "Etcd daemon user";
home = cfg.dataDir;
···
environment.systemPackages = [ pkgs.etcdctl ];
+
users.users.etcd = {
uid = config.ids.uids.etcd;
description = "Etcd daemon user";
home = cfg.dataDir;
+1 -2
nixos/modules/services/misc/exhibitor.nix
···
sed -i 's/'"$replace_what"'/'"$replace_with"'/g' ${cfg.baseDir}/zookeeper/bin/zk*.sh
'';
};
-
users.users = singleton {
-
name = "zookeeper";
uid = config.ids.uids.zookeeper;
description = "Zookeeper daemon user";
home = cfg.baseDir;
···
sed -i 's/'"$replace_what"'/'"$replace_with"'/g' ${cfg.baseDir}/zookeeper/bin/zk*.sh
'';
};
+
users.users.zookeeper = {
uid = config.ids.uids.zookeeper;
description = "Zookeeper daemon user";
home = cfg.baseDir;
+3 -7
nixos/modules/services/misc/felix.nix
···
###### implementation
config = mkIf cfg.enable {
-
users.groups = singleton
-
{ name = "osgi";
-
gid = config.ids.gids.osgi;
-
};
-
users.users = singleton
-
{ name = "osgi";
-
uid = config.ids.uids.osgi;
description = "OSGi user";
home = "/homeless-shelter";
};
···
###### implementation
config = mkIf cfg.enable {
+
users.groups.osgi.gid = config.ids.gids.osgi;
+
users.users.osgi =
+
{ uid = config.ids.uids.osgi;
description = "OSGi user";
home = "/homeless-shelter";
};
+2 -3
nixos/modules/services/misc/folding-at-home.nix
···
config = mkIf cfg.enable {
-
users.users = singleton
-
{ name = fahUser;
-
uid = config.ids.uids.foldingathome;
description = "Folding@Home user";
home = stateDir;
};
···
config = mkIf cfg.enable {
+
users.users.${fahUser} =
+
{ uid = config.ids.uids.foldingathome;
description = "Folding@Home user";
home = stateDir;
};
+4 -10
nixos/modules/services/misc/gitlab.nix
···
# Use postfix to send out mails.
services.postfix.enable = mkDefault true;
-
users.users = [
-
{ name = cfg.user;
-
group = cfg.group;
home = "${cfg.statePath}/home";
shell = "${pkgs.bash}/bin/bash";
uid = config.ids.uids.gitlab;
-
}
-
];
-
users.groups = [
-
{ name = cfg.group;
-
gid = config.ids.gids.gitlab;
-
}
-
];
systemd.tmpfiles.rules = [
"d /run/gitlab 0755 ${cfg.user} ${cfg.group} -"
···
# Use postfix to send out mails.
services.postfix.enable = mkDefault true;
+
users.users.${cfg.user} =
+
{ group = cfg.group;
home = "${cfg.statePath}/home";
shell = "${pkgs.bash}/bin/bash";
uid = config.ids.uids.gitlab;
+
};
+
users.groups.${cfg.group}.gid = config.ids.gids.gitlab;
systemd.tmpfiles.rules = [
"d /run/gitlab 0755 ${cfg.user} ${cfg.group} -"
+3 -7
nixos/modules/services/misc/gpsd.nix
···
config = mkIf cfg.enable {
-
users.users = singleton
-
{ name = "gpsd";
-
inherit uid;
description = "gpsd daemon user";
home = "/var/empty";
};
-
users.groups = singleton
-
{ name = "gpsd";
-
inherit gid;
-
};
systemd.services.gpsd = {
description = "GPSD daemon";
···
config = mkIf cfg.enable {
+
users.users.gpsd =
+
{ inherit uid;
description = "gpsd daemon user";
home = "/var/empty";
};
+
users.groups.gpsd = { inherit gid; };
systemd.services.gpsd = {
description = "GPSD daemon";
+12 -12
nixos/modules/services/misc/headphones.nix
···
config = mkIf cfg.enable {
-
users.users = optionalAttrs (cfg.user == name) (singleton {
-
name = name;
-
uid = config.ids.uids.headphones;
-
group = cfg.group;
-
description = "headphones user";
-
home = cfg.dataDir;
-
createHome = true;
-
});
-
users.groups = optionalAttrs (cfg.group == name) (singleton {
-
name = name;
-
gid = config.ids.gids.headphones;
-
});
systemd.services.headphones = {
description = "Headphones Server";
···
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == name) {
+
${name} = {
+
uid = config.ids.uids.headphones;
+
group = cfg.group;
+
description = "headphones user";
+
home = cfg.dataDir;
+
createHome = true;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == name) {
+
${name}.gid = config.ids.gids.headphones;
+
};
systemd.services.headphones = {
description = "Headphones Server";
+6 -7
nixos/modules/services/misc/matrix-synapse.nix
···
};
config = mkIf cfg.enable {
-
users.users = [
-
{ name = "matrix-synapse";
group = "matrix-synapse";
home = cfg.dataDir;
createHome = true;
shell = "${pkgs.bash}/bin/bash";
uid = config.ids.uids.matrix-synapse;
-
} ];
-
users.groups = [
-
{ name = "matrix-synapse";
-
gid = config.ids.gids.matrix-synapse;
-
} ];
services.postgresql = mkIf (usePostgresql && cfg.create_local_database) {
enable = mkDefault true;
···
};
config = mkIf cfg.enable {
+
users.users.matrix-synapse =
+
{ name = "";
group = "matrix-synapse";
home = cfg.dataDir;
createHome = true;
shell = "${pkgs.bash}/bin/bash";
uid = config.ids.uids.matrix-synapse;
+
};
+
users.groups.matrix-synapse = {
+
gid = config.ids.gids.matrix-synapse;
+
};
services.postgresql = mkIf (usePostgresql && cfg.create_local_database) {
enable = mkDefault true;
+12 -12
nixos/modules/services/misc/mediatomb.nix
···
serviceConfig.User = "${cfg.user}";
};
-
users.groups = optionalAttrs (cfg.group == "mediatomb") (singleton {
-
name = "mediatomb";
-
gid = gid;
-
});
-
users.users = optionalAttrs (cfg.user == "mediatomb") (singleton {
-
name = "mediatomb";
-
isSystemUser = true;
-
group = cfg.group;
-
home = "${cfg.dataDir}";
-
createHome = true;
-
description = "Mediatomb DLNA Server User";
-
});
networking.firewall = {
allowedUDPPorts = [ 1900 cfg.port ];
···
serviceConfig.User = "${cfg.user}";
};
+
users.groups = optionalAttrs (cfg.group == "mediatomb") {
+
mediatomb.gid = gid;
+
};
+
users.users = optionalAttrs (cfg.user == "mediatomb") {
+
mediatomb = {
+
isSystemUser = true;
+
group = cfg.group;
+
home = "${cfg.dataDir}";
+
createHome = true;
+
description = "Mediatomb DLNA Server User";
+
};
+
};
networking.firewall = {
allowedUDPPorts = [ 1900 cfg.port ];
+6 -4
nixos/modules/services/misc/nix-daemon.nix
···
isNix23 = versionAtLeast nixVersion "2.3pre";
-
makeNixBuildUser = nr:
-
{ name = "nixbld${toString nr}";
description = "Nix build user ${toString nr}";
/* For consistency with the setgid(2), setuid(2), and setgroups(2)
···
group = "nixbld";
extraGroups = [ "nixbld" ];
};
-
nixbldUsers = map makeNixBuildUser (range 1 cfg.nrBuildUsers);
nixConf =
assert versionAtLeast nixVersion "2.2";
···
users.users = nixbldUsers;
-
services.xserver.displayManager.hiddenUsers = map ({ name, ... }: name) nixbldUsers;
system.activationScripts.nix = stringAfter [ "etc" "users" ]
''
···
isNix23 = versionAtLeast nixVersion "2.3pre";
+
makeNixBuildUser = nr: {
+
name = "nixbld${toString nr}";
+
value = {
description = "Nix build user ${toString nr}";
/* For consistency with the setgid(2), setuid(2), and setgroups(2)
···
group = "nixbld";
extraGroups = [ "nixbld" ];
};
+
};
+
nixbldUsers = listToAttrs (map makeNixBuildUser (range 1 cfg.nrBuildUsers));
nixConf =
assert versionAtLeast nixVersion "2.2";
···
users.users = nixbldUsers;
+
services.xserver.displayManager.hiddenUsers = attrNames nixbldUsers;
system.activationScripts.nix = stringAfter [ "etc" "users" ]
''
+7 -7
nixos/modules/services/misc/octoprint.nix
···
config = mkIf cfg.enable {
-
users.users = optionalAttrs (cfg.user == "octoprint") (singleton
-
{ name = "octoprint";
group = cfg.group;
uid = config.ids.uids.octoprint;
-
});
-
users.groups = optionalAttrs (cfg.group == "octoprint") (singleton
-
{ name = "octoprint";
-
gid = config.ids.gids.octoprint;
-
});
systemd.tmpfiles.rules = [
"d '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -"
···
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == "octoprint") {
+
octoprint = {
group = cfg.group;
uid = config.ids.uids.octoprint;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "octoprint") {
+
octoprint.gid = config.ids.gids.octoprint;
+
};
systemd.tmpfiles.rules = [
"d '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -"
+7 -7
nixos/modules/services/misc/redmine.nix
···
};
-
users.users = optionalAttrs (cfg.user == "redmine") (singleton
-
{ name = "redmine";
group = cfg.group;
home = cfg.stateDir;
uid = config.ids.uids.redmine;
-
});
-
users.groups = optionalAttrs (cfg.group == "redmine") (singleton
-
{ name = "redmine";
-
gid = config.ids.gids.redmine;
-
});
warnings = optional (cfg.database.password != "")
''config.services.redmine.database.password will be stored as plaintext
···
};
+
users.users = optionalAttrs (cfg.user == "redmine") {
+
redmine = {
group = cfg.group;
home = cfg.stateDir;
uid = config.ids.uids.redmine;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "redmine") {
+
redmine.gid = config.ids.gids.redmine;
+
};
warnings = optional (cfg.database.password != "")
''config.services.redmine.database.password will be stored as plaintext
+2 -3
nixos/modules/services/misc/ripple-data-api.nix
···
];
};
-
users.users = singleton
-
{ name = "ripple-data-api";
-
description = "Ripple data api user";
uid = config.ids.uids.ripple-data-api;
};
};
···
];
};
+
users.users.ripple-data-api =
+
{ description = "Ripple data api user";
uid = config.ids.uids.ripple-data-api;
};
};
+2 -3
nixos/modules/services/misc/rippled.nix
···
config = mkIf cfg.enable {
-
users.users = singleton
-
{ name = "rippled";
-
description = "Ripple server user";
uid = config.ids.uids.rippled;
home = cfg.databasePath;
createHome = true;
···
config = mkIf cfg.enable {
+
users.users.rippled =
+
{ description = "Ripple server user";
uid = config.ids.uids.rippled;
home = cfg.databasePath;
createHome = true;
+4 -9
nixos/modules/services/misc/serviio.nix
···
};
};
-
users.users = [
-
{
-
name = "serviio";
-
group = "serviio";
home = cfg.dataDir;
description = "Serviio Media Server User";
createHome = true;
isSystemUser = true;
-
}
-
];
-
users.groups = [
-
{ name = "serviio";}
-
];
networking.firewall = {
allowedTCPPorts = [
···
};
};
+
users.users.serviio =
+
{ group = "serviio";
home = cfg.dataDir;
description = "Serviio Media Server User";
createHome = true;
isSystemUser = true;
+
};
+
users.groups.serviio = { };
networking.firewall = {
allowedTCPPorts = [
+12 -12
nixos/modules/services/misc/sickbeard.nix
···
config = mkIf cfg.enable {
-
users.users = optionalAttrs (cfg.user == name) (singleton {
-
name = name;
-
uid = config.ids.uids.sickbeard;
-
group = cfg.group;
-
description = "sickbeard user";
-
home = cfg.dataDir;
-
createHome = true;
-
});
-
users.groups = optionalAttrs (cfg.group == name) (singleton {
-
name = name;
-
gid = config.ids.gids.sickbeard;
-
});
systemd.services.sickbeard = {
description = "Sickbeard Server";
···
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == name) {
+
${name} = {
+
uid = config.ids.uids.sickbeard;
+
group = cfg.group;
+
description = "sickbeard user";
+
home = cfg.dataDir;
+
createHome = true;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == name) {
+
${name}.gid = config.ids.gids.sickbeard;
+
};
systemd.services.sickbeard = {
description = "Sickbeard Server";
+1 -2
nixos/modules/services/misc/siproxd.nix
···
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = "siproxyd";
uid = config.ids.uids.siproxd;
};
···
config = mkIf cfg.enable {
+
users.users.siproxyd = {
uid = config.ids.uids.siproxd;
};
+8 -8
nixos/modules/services/misc/taskserver/default.nix
···
(mkIf cfg.enable {
environment.systemPackages = [ nixos-taskserver ];
-
users.users = optional (cfg.user == "taskd") {
-
name = "taskd";
-
uid = config.ids.uids.taskd;
-
description = "Taskserver user";
-
group = cfg.group;
};
-
users.groups = optional (cfg.group == "taskd") {
-
name = "taskd";
-
gid = config.ids.gids.taskd;
};
services.taskserver.config = {
···
(mkIf cfg.enable {
environment.systemPackages = [ nixos-taskserver ];
+
users.users = optionalAttrs (cfg.user == "taskd") {
+
taskd = {
+
uid = config.ids.uids.taskd;
+
description = "Taskserver user";
+
group = cfg.group;
+
};
};
+
users.groups = optionalAttrs (cfg.group == "taskd") {
+
taskd.gid = config.ids.gids.taskd;
};
services.taskserver.config = {
+9 -15
nixos/modules/services/misc/uhub.nix
···
enable = mkOption {
type = types.bool;
default = false;
-
description = "Whether to enable the uhub ADC hub.";
};
port = mkOption {
type = types.int;
default = 1511;
-
description = "TCP port to bind the hub to.";
};
address = mkOption {
type = types.str;
default = "any";
-
description = "Address to bind the hub to.";
};
enableTLS = mkOption {
type = types.bool;
default = false;
-
description = "Whether to enable TLS support.";
};
hubConfig = mkOption {
type = types.lines;
default = "";
-
description = "Contents of uhub configuration file.";
};
aclConfig = mkOption {
···
plugins = {
authSqlite = {
-
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the Sqlite authentication database plugin";
-
};
file = mkOption {
type = types.path;
example = "/var/db/uhub-users";
···
config = mkIf cfg.enable {
users = {
-
users = singleton {
-
name = "uhub";
-
uid = config.ids.uids.uhub;
-
};
-
groups = singleton {
-
name = "uhub";
-
gid = config.ids.gids.uhub;
-
};
};
systemd.services.uhub = {
···
enable = mkOption {
type = types.bool;
default = false;
+
description = "Whether to enable the uhub ADC hub.";
};
port = mkOption {
type = types.int;
default = 1511;
+
description = "TCP port to bind the hub to.";
};
address = mkOption {
type = types.str;
default = "any";
+
description = "Address to bind the hub to.";
};
enableTLS = mkOption {
type = types.bool;
default = false;
+
description = "Whether to enable TLS support.";
};
hubConfig = mkOption {
type = types.lines;
default = "";
+
description = "Contents of uhub configuration file.";
};
aclConfig = mkOption {
···
plugins = {
authSqlite = {
+
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable the Sqlite authentication database plugin";
+
};
file = mkOption {
type = types.path;
example = "/var/db/uhub-users";
···
config = mkIf cfg.enable {
users = {
+
users.uhub.uid = config.ids.uids.uhub;
+
groups.uhub.gid = config.ids.gids.uhub;
};
systemd.services.uhub = {
+1 -2
nixos/modules/services/misc/zookeeper.nix
···
'';
};
-
users.users = singleton {
-
name = "zookeeper";
uid = config.ids.uids.zookeeper;
description = "Zookeeper daemon user";
home = cfg.dataDir;
···
'';
};
+
users.users.zookeeper = {
uid = config.ids.uids.zookeeper;
description = "Zookeeper daemon user";
home = cfg.dataDir;
+4 -3
nixos/modules/services/monitoring/collectd.nix
···
};
};
-
users.users = optional (cfg.user == "collectd") {
-
name = "collectd";
-
isSystemUser = true;
};
};
}
···
};
};
+
users.users = optionalAttrs (cfg.user == "collectd") {
+
collectd = {
+
isSystemUser = true;
+
};
};
};
}
+11 -10
nixos/modules/services/monitoring/datadog-agent.nix
···
# Generate Datadog configuration files for each configured checks.
# This works because check configurations have predictable paths,
# and because JSON is a valid subset of YAML.
-
makeCheckConfigs = entries: mapAttrsToList (name: conf: {
-
source = pkgs.writeText "${name}-check-conf.yaml" (builtins.toJSON conf);
-
target = "datadog-agent/conf.d/${name}.d/conf.yaml";
}) entries;
defaultChecks = {
···
# Assemble all check configurations and the top-level agent
# configuration.
-
etcfiles = with pkgs; with builtins; [{
-
source = writeText "datadog.yaml" (toJSON ddConf);
-
target = "datadog-agent/datadog.yaml";
-
}] ++ makeCheckConfigs (cfg.checks // defaultChecks);
# Apply the configured extraIntegrations to the provided agent
# package. See the documentation of `dd-agent/integrations-core.nix`
···
config = mkIf cfg.enable {
environment.systemPackages = [ datadogPkg pkgs.sysstat pkgs.procps pkgs.iproute ];
-
users.extraUsers.datadog = {
description = "Datadog Agent User";
uid = config.ids.uids.datadog;
group = "datadog";
···
createHome = true;
};
-
users.extraGroups.datadog.gid = config.ids.gids.datadog;
systemd.services = let
makeService = attrs: recursiveUpdate {
···
Restart = "always";
RestartSec = 2;
};
-
restartTriggers = [ datadogPkg ] ++ map (etc: etc.source) etcfiles;
} attrs;
in {
datadog-agent = makeService {
···
# Generate Datadog configuration files for each configured checks.
# This works because check configurations have predictable paths,
# and because JSON is a valid subset of YAML.
+
makeCheckConfigs = entries: mapAttrs' (name: conf: {
+
name = "datadog-agent/conf.d/${name}.d/conf.yaml";
+
value.source = pkgs.writeText "${name}-check-conf.yaml" (builtins.toJSON conf);
}) entries;
defaultChecks = {
···
# Assemble all check configurations and the top-level agent
# configuration.
+
etcfiles = with pkgs; with builtins;
+
{ "datadog-agent/datadog.yaml" = {
+
source = writeText "datadog.yaml" (toJSON ddConf);
+
};
+
} // makeCheckConfigs (cfg.checks // defaultChecks);
# Apply the configured extraIntegrations to the provided agent
# package. See the documentation of `dd-agent/integrations-core.nix`
···
config = mkIf cfg.enable {
environment.systemPackages = [ datadogPkg pkgs.sysstat pkgs.procps pkgs.iproute ];
+
users.users.datadog = {
description = "Datadog Agent User";
uid = config.ids.uids.datadog;
group = "datadog";
···
createHome = true;
};
+
users.groups.datadog.gid = config.ids.gids.datadog;
systemd.services = let
makeService = attrs: recursiveUpdate {
···
Restart = "always";
RestartSec = 2;
};
+
restartTriggers = [ datadogPkg ] ++ attrNames etcfiles;
} attrs;
in {
datadog-agent = makeService {
+29 -31
nixos/modules/services/monitoring/dd-agent/dd-agent.nix
···
etcfiles =
let
defaultConfd = import ./dd-agent-defaults.nix;
-
in (map (f: { source = "${pkgs.dd-agent}/agent/conf.d-system/${f}";
-
target = "dd-agent/conf.d/${f}";
-
}) defaultConfd) ++ [
-
{ source = ddConf;
-
target = "dd-agent/datadog.conf";
-
}
-
{ source = diskConfig;
-
target = "dd-agent/conf.d/disk.yaml";
-
}
-
{ source = networkConfig;
-
target = "dd-agent/conf.d/network.yaml";
-
} ] ++
-
(optional (cfg.postgresqlConfig != null)
-
{ source = postgresqlConfig;
-
target = "dd-agent/conf.d/postgres.yaml";
-
}) ++
-
(optional (cfg.nginxConfig != null)
-
{ source = nginxConfig;
-
target = "dd-agent/conf.d/nginx.yaml";
-
}) ++
-
(optional (cfg.mongoConfig != null)
-
{ source = mongoConfig;
-
target = "dd-agent/conf.d/mongo.yaml";
-
}) ++
-
(optional (cfg.processConfig != null)
-
{ source = processConfig;
-
target = "dd-agent/conf.d/process.yaml";
-
}) ++
-
(optional (cfg.jmxConfig != null)
-
{ source = jmxConfig;
-
target = "dd-agent/conf.d/jmx.yaml";
});
in {
···
etcfiles =
let
defaultConfd = import ./dd-agent-defaults.nix;
+
in
+
listToAttrs (map (f: {
+
name = "dd-agent/conf.d/${f}";
+
value.source = "${pkgs.dd-agent}/agent/conf.d-system/${f}";
+
}) defaultConfd) //
+
{
+
"dd-agent/datadog.conf".source = ddConf;
+
"dd-agent/conf.d/disk.yaml".source = diskConfig;
+
"dd-agent/conf.d/network.yaml".source = networkConfig;
+
} //
+
(optionalAttrs (cfg.postgresqlConfig != null)
+
{
+
"dd-agent/conf.d/postgres.yaml".source = postgresqlConfig;
+
}) //
+
(optionalAttrs (cfg.nginxConfig != null)
+
{
+
"dd-agent/conf.d/nginx.yaml".source = nginxConfig;
+
}) //
+
(optionalAttrs (cfg.mongoConfig != null)
+
{
+
"dd-agent/conf.d/mongo.yaml".source = mongoConfig;
+
}) //
+
(optionalAttrs (cfg.processConfig != null)
+
{
+
"dd-agent/conf.d/process.yaml".source = processConfig;
+
}) //
+
(optionalAttrs (cfg.jmxConfig != null)
+
{
+
"dd-agent/conf.d/jmx.yaml".source = jmxConfig;
});
in {
+1 -2
nixos/modules/services/monitoring/fusion-inventory.nix
···
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = "fusion-inventory";
description = "FusionInventory user";
isSystemUser = true;
};
···
config = mkIf cfg.enable {
+
users.users.fusion-inventory = {
description = "FusionInventory user";
isSystemUser = true;
};
+1 -2
nixos/modules/services/monitoring/graphite.nix
···
cfg.web.enable || cfg.api.enable ||
cfg.seyren.enable || cfg.pager.enable || cfg.beacon.enable
) {
-
users.users = singleton {
-
name = "graphite";
uid = config.ids.uids.graphite;
description = "Graphite daemon user";
home = dataDir;
···
cfg.web.enable || cfg.api.enable ||
cfg.seyren.enable || cfg.pager.enable || cfg.beacon.enable
) {
+
users.users.graphite = {
uid = config.ids.uids.graphite;
description = "Graphite daemon user";
home = dataDir;
+1 -2
nixos/modules/services/monitoring/heapster.nix
···
};
};
-
users.users = singleton {
-
name = "heapster";
uid = config.ids.uids.heapster;
description = "Heapster user";
};
···
};
};
+
users.users.heapsterrs = {
uid = config.ids.uids.heapster;
description = "Heapster user";
};
+4 -6
nixos/modules/services/monitoring/munin.nix
···
environment.systemPackages = [ pkgs.munin ];
-
users.users = [{
-
name = "munin";
description = "Munin monitoring user";
group = "munin";
uid = config.ids.uids.munin;
home = "/var/lib/munin";
-
}];
-
users.groups = [{
-
name = "munin";
gid = config.ids.gids.munin;
-
}];
}) (mkIf nodeCfg.enable {
···
environment.systemPackages = [ pkgs.munin ];
+
users.users.munin = {
description = "Munin monitoring user";
group = "munin";
uid = config.ids.uids.munin;
home = "/var/lib/munin";
+
};
+
users.groups.munin = {
gid = config.ids.gids.munin;
+
};
}) (mkIf nodeCfg.enable {
+1 -5
nixos/modules/services/monitoring/nagios.nix
···
# This isn't needed, it's just so that the user can type "nagiostats
# -c /etc/nagios.cfg".
-
environment.etc = [
-
{ source = nagiosCfgFile;
-
target = "nagios.cfg";
-
}
-
];
environment.systemPackages = [ pkgs.nagios ];
systemd.services.nagios = {
···
# This isn't needed, it's just so that the user can type "nagiostats
# -c /etc/nagios.cfg".
+
environment.etc."nagios.cfg".source = nagiosCfgFile;
environment.systemPackages = [ pkgs.nagios ];
systemd.services.nagios = {
+6 -5
nixos/modules/services/monitoring/netdata.nix
···
{ domain = "netdata"; type = "hard"; item = "nofile"; value = "30000"; }
];
-
users.users = optional (cfg.user == defaultUser) {
-
name = defaultUser;
-
isSystemUser = true;
};
-
users.groups = optional (cfg.group == defaultUser) {
-
name = defaultUser;
};
};
···
{ domain = "netdata"; type = "hard"; item = "nofile"; value = "30000"; }
];
+
users.users = optionalAttrs (cfg.user == defaultUser) {
+
${defaultUser} = {
+
isSystemUser = true;
+
};
};
+
users.groups = optionalAttrs (cfg.group == defaultUser) {
+
${defaultUser} = { };
};
};
+1 -2
nixos/modules/services/monitoring/statsd.nix
···
message = "Only builtin backends (graphite, console, repeater) or backends enumerated in `pkgs.nodePackages` are allowed!";
}) cfg.backends;
-
users.users = singleton {
-
name = "statsd";
uid = config.ids.uids.statsd;
description = "Statsd daemon user";
};
···
message = "Only builtin backends (graphite, console, repeater) or backends enumerated in `pkgs.nodePackages` are allowed!";
}) cfg.backends;
+
users.use.statsdrs = {
uid = config.ids.uids.statsd;
description = "Statsd daemon user";
};
+2 -3
nixos/modules/services/monitoring/telegraf.nix
···
};
};
-
users.users = [{
-
name = "telegraf";
uid = config.ids.uids.telegraf;
description = "telegraf daemon user";
-
}];
};
}
···
};
};
+
users.users.telegraf = {
uid = config.ids.uids.telegraf;
description = "telegraf daemon user";
+
};
};
}
+13 -30
nixos/modules/services/monitoring/ups.nix
···
environment.NUT_STATEPATH = "/var/lib/nut/";
};
-
environment.etc = [
-
{ source = pkgs.writeText "nut.conf"
''
MODE = ${cfg.mode}
'';
-
target = "nut/nut.conf";
-
}
-
{ source = pkgs.writeText "ups.conf"
''
maxstartdelay = ${toString cfg.maxStartDelay}
···
"}
'';
-
target = "nut/ups.conf";
-
}
-
{ source = cfg.schedulerRules;
-
target = "nut/upssched.conf";
-
}
# These file are containing private informations and thus should not
# be stored inside the Nix store.
/*
-
{ source = ;
-
target = "nut/upsd.conf";
-
}
-
{ source = ;
-
target = "nut/upsd.users";
-
}
-
{ source = ;
-
target = "nut/upsmon.conf;
-
}
*/
-
];
power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample";
···
/*
-
users.users = [
-
{ name = "nut";
-
uid = 84;
home = "/var/lib/nut";
createHome = true;
group = "nut";
description = "UPnP A/V Media Server user";
-
}
-
];
-
users.groups = [
-
{ name = "nut";
-
gid = 84;
-
}
-
];
*/
};
···
environment.NUT_STATEPATH = "/var/lib/nut/";
};
+
environment.etc = {
+
"nut/nut.conf".source = pkgs.writeText "nut.conf"
''
MODE = ${cfg.mode}
'';
+
"nut/ups.conf".source = pkgs.writeText "ups.conf"
''
maxstartdelay = ${toString cfg.maxStartDelay}
···
"}
'';
+
"nut/upssched.conf".source = cfg.schedulerRules;
# These file are containing private informations and thus should not
# be stored inside the Nix store.
/*
+
"nut/upsd.conf".source = "";
+
"nut/upsd.users".source = "";
+
"nut/upsmon.conf".source = "";
*/
+
};
power.ups.schedulerRules = mkDefault "${pkgs.nut}/etc/upssched.conf.sample";
···
/*
+
users.users.nut =
+
{ uid = 84;
home = "/var/lib/nut";
createHome = true;
group = "nut";
description = "UPnP A/V Media Server user";
+
};
+
users.groups."nut" =
+
{ gid = 84; };
*/
};
+3 -4
nixos/modules/services/network-filesystems/ceph.nix
···
in
generators.toINI {} totalConfig;
-
users.users = singleton {
-
name = "ceph";
uid = config.ids.uids.ceph;
description = "Ceph daemon user";
group = "ceph";
extraGroups = [ "disk" ];
};
-
users.groups = singleton {
-
name = "ceph";
gid = config.ids.gids.ceph;
};
···
in
generators.toINI {} totalConfig;
+
users.users.ceph = {
uid = config.ids.uids.ceph;
description = "Ceph daemon user";
group = "ceph";
extraGroups = [ "disk" ];
};
+
+
users.groups.ceph = {
gid = config.ids.gids.ceph;
};
+12 -11
nixos/modules/services/network-filesystems/davfs2.nix
···
environment.systemPackages = [ pkgs.davfs2 ];
environment.etc."davfs2/davfs2.conf".source = cfgFile;
-
users.groups = optionalAttrs (cfg.davGroup == "davfs2") (singleton {
-
name = "davfs2";
-
gid = config.ids.gids.davfs2;
-
});
-
users.users = optionalAttrs (cfg.davUser == "davfs2") (singleton {
-
name = "davfs2";
-
createHome = false;
-
group = cfg.davGroup;
-
uid = config.ids.uids.davfs2;
-
description = "davfs2 user";
-
});
};
}
···
environment.systemPackages = [ pkgs.davfs2 ];
environment.etc."davfs2/davfs2.conf".source = cfgFile;
+
users.groups = optionalAttrs (cfg.davGroup == "davfs2") {
+
davfs2.gid = config.ids.gids.davfs2;
+
};
+
+
users.users = optionalAttrs (cfg.davUser == "davfs2") {
+
davfs2 = {
+
createHome = false;
+
group = cfg.davGroup;
+
uid = config.ids.uids.davfs2;
+
description = "davfs2 user";
+
};
+
};
};
}
+2 -4
nixos/modules/services/network-filesystems/drbd.nix
···
options drbd usermode_helper=/run/current-system/sw/bin/drbdadm
'';
-
environment.etc = singleton
-
{ source = pkgs.writeText "drbd.conf" cfg.config;
-
target = "drbd.conf";
-
};
systemd.services.drbd = {
after = [ "systemd-udev.settle.service" "network.target" ];
···
options drbd usermode_helper=/run/current-system/sw/bin/drbdadm
'';
+
environment.etc.drbd.conf =
+
{ source = pkgs.writeText "drbd.conf" cfg.config; };
systemd.services.drbd = {
after = [ "systemd-udev.settle.service" "network.target" ];
+2 -3
nixos/modules/services/networking/bind.nix
···
networking.resolvconf.useLocalResolver = mkDefault true;
-
users.users = singleton
-
{ name = bindUser;
-
uid = config.ids.uids.bind;
description = "BIND daemon user";
};
···
networking.resolvconf.useLocalResolver = mkDefault true;
+
users.users.${bindUser} =
+
{ uid = config.ids.uids.bind;
description = "BIND daemon user";
};
+1 -2
nixos/modules/services/networking/bitlbee.nix
···
config = mkMerge [
(mkIf config.services.bitlbee.enable {
-
users.users = singleton {
-
name = "bitlbee";
uid = bitlbeeUid;
description = "BitlBee user";
home = "/var/lib/bitlbee";
···
config = mkMerge [
(mkIf config.services.bitlbee.enable {
+
users.users.bitlbee = {
uid = bitlbeeUid;
description = "BitlBee user";
home = "/var/lib/bitlbee";
+2 -4
nixos/modules/services/networking/charybdis.nix
···
config = mkIf cfg.enable (lib.mkMerge [
{
-
users.users = singleton {
-
name = cfg.user;
description = "Charybdis IRC daemon user";
uid = config.ids.uids.ircd;
group = cfg.group;
};
-
users.groups = singleton {
-
name = cfg.group;
gid = config.ids.gids.ircd;
};
···
config = mkIf cfg.enable (lib.mkMerge [
{
+
users.users.${cfg.user} = {
description = "Charybdis IRC daemon user";
uid = config.ids.uids.ircd;
group = cfg.group;
};
+
users.groups.${cfg.group} = {
gid = config.ids.gids.ircd;
};
+6 -8
nixos/modules/services/networking/coturn.nix
···
};
config = mkIf cfg.enable {
-
users.users = [
-
{ name = "turnserver";
-
uid = config.ids.uids.turnserver;
description = "coturn TURN server user";
-
} ];
-
users.groups = [
-
{ name = "turnserver";
-
gid = config.ids.gids.turnserver;
members = [ "turnserver" ];
-
} ];
systemd.services.coturn = {
description = "coturn TURN server";
···
};
config = mkIf cfg.enable {
+
users.users.turnserver =
+
{ uid = config.ids.uids.turnserver;
description = "coturn TURN server user";
+
};
+
users.groups.turnserver =
+
{ gid = config.ids.gids.turnserver;
members = [ "turnserver" ];
+
};
systemd.services.coturn = {
description = "coturn TURN server";
+1 -5
nixos/modules/services/networking/dhcpcd.nix
···
environment.systemPackages = [ dhcpcd ];
-
environment.etc =
-
[ { source = exitHook;
-
target = "dhcpcd.exit-hook";
-
}
-
];
powerManagement.resumeCommands = mkIf config.systemd.services.dhcpcd.enable
''
···
environment.systemPackages = [ dhcpcd ];
+
environment.etc."dhcpcd.exit-hook".source = exitHook;
powerManagement.resumeCommands = mkIf config.systemd.services.dhcpcd.enable
''
+1 -2
nixos/modules/services/networking/dnschain.nix
···
'';
};
-
users.users = singleton {
-
name = username;
description = "DNSChain daemon user";
home = dataDir;
createHome = true;
···
'';
};
+
users.users.${username} = {
description = "DNSChain daemon user";
home = dataDir;
createHome = true;
+1 -2
nixos/modules/services/networking/dnsmasq.nix
···
services.dbus.packages = [ dnsmasq ];
-
users.users = singleton {
-
name = "dnsmasq";
uid = config.ids.uids.dnsmasq;
description = "Dnsmasq daemon user";
};
···
services.dbus.packages = [ dnsmasq ];
+
users.users.dnsmasq = {
uid = config.ids.uids.dnsmasq;
description = "Dnsmasq daemon user";
};
+7 -7
nixos/modules/services/networking/ejabberd.nix
···
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
-
users.users = optionalAttrs (cfg.user == "ejabberd") (singleton
-
{ name = "ejabberd";
group = cfg.group;
home = cfg.spoolDir;
createHome = true;
uid = config.ids.uids.ejabberd;
-
});
-
users.groups = optionalAttrs (cfg.group == "ejabberd") (singleton
-
{ name = "ejabberd";
-
gid = config.ids.gids.ejabberd;
-
});
systemd.services.ejabberd = {
description = "ejabberd server";
···
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
+
users.users = optionalAttrs (cfg.user == "ejabberd") {
+
ejabberd = {
group = cfg.group;
home = cfg.spoolDir;
createHome = true;
uid = config.ids.uids.ejabberd;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "ejabberd") {
+
ejabberd.gid = config.ids.gids.ejabberd;
+
};
systemd.services.ejabberd = {
description = "ejabberd server";
+2 -3
nixos/modules/services/networking/gale.nix
···
systemPackages = [ pkgs.gale ];
};
-
users.users = [{
-
name = cfg.user;
description = "Gale daemon";
uid = config.ids.uids.gale;
group = cfg.group;
home = home;
createHome = true;
-
}];
users.groups = [{
name = cfg.group;
···
systemPackages = [ pkgs.gale ];
};
+
users.users.${cfg.user} = {
description = "Gale daemon";
uid = config.ids.uids.gale;
group = cfg.group;
home = home;
createHome = true;
+
};
users.groups = [{
name = cfg.group;
+6 -6
nixos/modules/services/networking/git-daemon.nix
···
config = mkIf cfg.enable {
-
users.users = if cfg.user != "git" then {} else singleton
-
{ name = "git";
uid = config.ids.uids.git;
description = "Git daemon user";
};
-
users.groups = if cfg.group != "git" then {} else singleton
-
{ name = "git";
-
gid = config.ids.gids.git;
-
};
systemd.services.git-daemon = {
after = [ "network.target" ];
···
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user != "git") {
+
git = {
uid = config.ids.uids.git;
description = "Git daemon user";
};
+
};
+
users.groups = optionalAttrs (cfg.group != "git") {
+
git.gid = config.ids.gids.git;
+
};
systemd.services.git-daemon = {
after = [ "network.target" ];
+1 -2
nixos/modules/services/networking/hans.nix
···
};
};
-
users.users = singleton {
-
name = hansUser;
description = "Hans daemon user";
isSystemUser = true;
};
···
};
};
+
users.users.${hansUser} = {
description = "Hans daemon user";
isSystemUser = true;
};
+9 -9
nixos/modules/services/networking/i2pd.nix
···
(sec "addressbook")
(strOpt "defaulturl" cfg.addressbook.defaulturl)
] ++ (optionalEmptyList "subscriptions" cfg.addressbook.subscriptions)
-
++ (flip map
-
(collect (proto: proto ? port && proto ? address && proto ? name) cfg.proto)
(proto: let protoOpts = [
-
(sec proto.name)
(boolOpt "enabled" proto.enable)
(strOpt "address" proto.address)
(intOpt "port" proto.port)
···
tunnelConf = let opts = [
notice
-
(flip map
-
(collect (tun: tun ? port && tun ? destination) cfg.outTunnels)
(tun: let outTunOpts = [
-
(sec tun.name)
"type = client"
(intOpt "port" tun.port)
(strOpt "destination" tun.destination)
···
++ (if tun ? crypto.tagsToSend then
optionalNullInt "crypto.tagstosend" tun.crypto.tagsToSend else []);
in concatStringsSep "\n" outTunOpts))
-
(flip map
-
(collect (tun: tun ? port && tun ? address) cfg.inTunnels)
(tun: let inTunOpts = [
-
(sec tun.name)
"type = server"
(intOpt "port" tun.port)
(strOpt "host" tun.address)
···
(sec "addressbook")
(strOpt "defaulturl" cfg.addressbook.defaulturl)
] ++ (optionalEmptyList "subscriptions" cfg.addressbook.subscriptions)
+
++ (flip mapAttrs
+
(collect (name: proto: proto ? port && proto ? address && proto ? name) cfg.proto)
(proto: let protoOpts = [
+
(sec name)
(boolOpt "enabled" proto.enable)
(strOpt "address" proto.address)
(intOpt "port" proto.port)
···
tunnelConf = let opts = [
notice
+
(flip mapAttrs
+
(collect (name: tun: tun ? port && tun ? destination) cfg.outTunnels)
(tun: let outTunOpts = [
+
(sec name)
"type = client"
(intOpt "port" tun.port)
(strOpt "destination" tun.destination)
···
++ (if tun ? crypto.tagsToSend then
optionalNullInt "crypto.tagstosend" tun.crypto.tagsToSend else []);
in concatStringsSep "\n" outTunOpts))
+
(flip mapAttrs
+
(collect (name: tun: tun ? port && tun ? address) cfg.inTunnels)
(tun: let inTunOpts = [
+
(sec name)
"type = server"
(intOpt "port" tun.port)
(strOpt "host" tun.address)
+1 -2
nixos/modules/services/networking/iodine.nix
···
};
};
-
users.users = singleton {
-
name = iodinedUser;
uid = config.ids.uids.iodined;
description = "Iodine daemon user";
};
···
};
};
+
users.users.${iodinedUser} = {
uid = config.ids.uids.iodined;
description = "Iodine daemon user";
};
+2 -3
nixos/modules/services/networking/ircd-hybrid/default.nix
···
config = mkIf config.services.ircdHybrid.enable {
-
users.users = singleton
-
{ name = "ircd";
-
description = "IRCD owner";
group = "ircd";
uid = config.ids.uids.ircd;
};
···
config = mkIf config.services.ircdHybrid.enable {
+
users.users.ircd =
+
{ description = "IRCD owner";
group = "ircd";
uid = config.ids.uids.ircd;
};
+2 -3
nixos/modules/services/networking/kippo.nix
···
${cfg.extraConfig}
'';
-
users.users = singleton {
-
name = "kippo";
description = "kippo web server privilege separation user";
uid = 108; # why does config.ids.uids.kippo give an error?
};
-
users.groups = singleton { name = "kippo";gid=108; };
systemd.services.kippo = with pkgs; {
description = "Kippo Web Server";
···
${cfg.extraConfig}
'';
+
users.users.kippo = {
description = "kippo web server privilege separation user";
uid = 108; # why does config.ids.uids.kippo give an error?
};
+
users.groups.kippo.gid = 108;
systemd.services.kippo = with pkgs; {
description = "Kippo Web Server";
+3 -7
nixos/modules/services/networking/kresd.nix
···
config = mkIf cfg.enable {
environment.etc."kresd.conf".source = configFile; # not required
-
users.users = singleton
-
{ name = "kresd";
-
uid = config.ids.uids.kresd;
group = "kresd";
description = "Knot-resolver daemon user";
};
-
users.groups = singleton
-
{ name = "kresd";
-
gid = config.ids.gids.kresd;
-
};
systemd.sockets.kresd = rec {
wantedBy = [ "sockets.target" ];
···
config = mkIf cfg.enable {
environment.etc."kresd.conf".source = configFile; # not required
+
users.users.kresd =
+
{ uid = config.ids.uids.kresd;
group = "kresd";
description = "Knot-resolver daemon user";
};
+
users.groups.kresd.gid = config.ids.gids.kresd;
systemd.sockets.kresd = rec {
wantedBy = [ "sockets.target" ];
+7 -6
nixos/modules/services/networking/matterbridge.nix
···
warnings = optional options.services.matterbridge.configFile.isDefined
"The option services.matterbridge.configFile is insecure and should be replaced with services.matterbridge.configPath";
-
users.users = optional (cfg.user == "matterbridge")
-
{ name = "matterbridge";
-
group = "matterbridge";
-
isSystemUser = true;
};
-
users.groups = optional (cfg.group == "matterbridge")
-
{ name = "matterbridge";
};
systemd.services.matterbridge = {
···
warnings = optional options.services.matterbridge.configFile.isDefined
"The option services.matterbridge.configFile is insecure and should be replaced with services.matterbridge.configPath";
+
users.users = optionalAttrs (cfg.user == "matterbridge")
+
{ matterbridge = {
+
group = "matterbridge";
+
isSystemUser = true;
+
};
};
+
users.groups = optionalAttrs (cfg.group == "matterbridge")
+
{ matterbridge = { };
};
systemd.services.matterbridge = {
+5 -4
nixos/modules/services/networking/mjpg-streamer.nix
···
config = mkIf cfg.enable {
-
users.users = optional (cfg.user == "mjpg-streamer") {
-
name = "mjpg-streamer";
-
uid = config.ids.uids.mjpg-streamer;
-
group = cfg.group;
};
systemd.services.mjpg-streamer = {
···
config = mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == "mjpg-streamer") {
+
mjpg-streamer = {
+
uid = config.ids.uids.mjpg-streamer;
+
group = cfg.group;
+
};
};
systemd.services.mjpg-streamer = {
+3 -5
nixos/modules/services/networking/monero.nix
···
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = "monero";
uid = config.ids.uids.monero;
description = "Monero daemon user";
home = dataDir;
createHome = true;
};
-
users.groups = singleton {
-
name = "monero";
-
gid = config.ids.gids.monero;
};
systemd.services.monero = {
···
config = mkIf cfg.enable {
+
users.users.monero = {
uid = config.ids.uids.monero;
description = "Monero daemon user";
home = dataDir;
createHome = true;
};
+
users.groups.monero = {
+
gid = config.ids.gids.monero;
};
systemd.services.monero = {
+5 -8
nixos/modules/services/networking/mxisd.nix
···
};
config = mkIf cfg.enable {
-
users.users = [
{
-
name = "mxisd";
group = "mxisd";
home = cfg.dataDir;
createHome = true;
shell = "${pkgs.bash}/bin/bash";
uid = config.ids.uids.mxisd;
-
}
-
];
-
users.groups = [
{
-
name = "mxisd";
gid = config.ids.gids.mxisd;
-
}
-
];
systemd.services.mxisd = {
description = "a federated identity server for the matrix ecosystem";
···
};
config = mkIf cfg.enable {
+
users.users.mxisd =
{
group = "mxisd";
home = cfg.dataDir;
createHome = true;
shell = "${pkgs.bash}/bin/bash";
uid = config.ids.uids.mxisd;
+
};
+
users.groups.mxisd =
{
+
name = "";
gid = config.ids.gids.mxisd;
+
};
systemd.services.mxisd = {
description = "a federated identity server for the matrix ecosystem";
+2 -4
nixos/modules/services/networking/namecoind.nix
···
config = ${configFile}
'';
-
users.users = singleton {
-
name = "namecoin";
uid = config.ids.uids.namecoin;
description = "Namecoin daemon user";
home = dataDir;
createHome = true;
};
-
users.groups = singleton {
-
name = "namecoin";
gid = config.ids.gids.namecoin;
};
···
config = ${configFile}
'';
+
users.users.namecoin = {
uid = config.ids.uids.namecoin;
description = "Namecoin daemon user";
home = dataDir;
createHome = true;
};
+
users.groups.namecoin = {
gid = config.ids.gids.namecoin;
};
+49 -52
nixos/modules/services/networking/networkmanager.nix
···
}
];
-
environment.etc = with pkgs; [
-
{ source = configFile;
-
target = "NetworkManager/NetworkManager.conf";
}
-
{ source = "${networkmanager-openvpn}/lib/NetworkManager/VPN/nm-openvpn-service.name";
-
target = "NetworkManager/VPN/nm-openvpn-service.name";
-
}
-
{ source = "${networkmanager-vpnc}/lib/NetworkManager/VPN/nm-vpnc-service.name";
-
target = "NetworkManager/VPN/nm-vpnc-service.name";
-
}
-
{ source = "${networkmanager-openconnect}/lib/NetworkManager/VPN/nm-openconnect-service.name";
-
target = "NetworkManager/VPN/nm-openconnect-service.name";
-
}
-
{ source = "${networkmanager-fortisslvpn}/lib/NetworkManager/VPN/nm-fortisslvpn-service.name";
-
target = "NetworkManager/VPN/nm-fortisslvpn-service.name";
-
}
-
{ source = "${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name";
-
target = "NetworkManager/VPN/nm-l2tp-service.name";
-
}
-
{ source = "${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name";
-
target = "NetworkManager/VPN/nm-iodine-service.name";
-
}
-
] ++ optional (cfg.appendNameservers != [] || cfg.insertNameservers != [])
-
{ source = overrideNameserversScript;
-
target = "NetworkManager/dispatcher.d/02overridedns";
-
}
-
++ lib.imap1 (i: s: {
-
inherit (s) source;
-
target = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
-
mode = "0544";
-
}) cfg.dispatcherScripts
-
++ optional cfg.enableStrongSwan
-
{ source = "${pkgs.networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name";
-
target = "NetworkManager/VPN/nm-strongswan-service.name";
-
};
environment.systemPackages = cfg.packages;
-
users.groups = [{
-
name = "networkmanager";
-
gid = config.ids.gids.networkmanager;
-
}
-
{
-
name = "nm-openvpn";
-
gid = config.ids.gids.nm-openvpn;
-
}];
-
users.users = [{
-
name = "nm-openvpn";
-
uid = config.ids.uids.nm-openvpn;
-
extraGroups = [ "networkmanager" ];
-
}
-
{
-
name = "nm-iodine";
-
isSystemUser = true;
-
group = "networkmanager";
-
}];
systemd.packages = cfg.packages;
···
}
];
+
environment.etc = with pkgs; {
+
"NetworkManager/NetworkManager.conf".source = configFile;
+
+
"NetworkManager/VPN/nm-openvpn-service.name".source =
+
"${networkmanager-openvpn}/lib/NetworkManager/VPN/nm-openvpn-service.name";
+
+
"NetworkManager/VPN/nm-vpnc-service.name".source =
+
"${networkmanager-vpnc}/lib/NetworkManager/VPN/nm-vpnc-service.name";
+
+
"NetworkManager/VPN/nm-openconnect-service.name".source =
+
"${networkmanager-openconnect}/lib/NetworkManager/VPN/nm-openconnect-service.name";
+
+
"NetworkManager/VPN/nm-fortisslvpn-service.name".source =
+
"${networkmanager-fortisslvpn}/lib/NetworkManager/VPN/nm-fortisslvpn-service.name";
+
+
"NetworkManager/VPN/nm-l2tp-service.name".source =
+
"${networkmanager-l2tp}/lib/NetworkManager/VPN/nm-l2tp-service.name";
+
+
"NetworkManager/VPN/nm-iodine-service.name".source =
+
"${networkmanager-iodine}/lib/NetworkManager/VPN/nm-iodine-service.name";
}
+
// optionalAttrs (cfg.appendNameservers != [] || cfg.insertNameservers != [])
+
{
+
"NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
+
}
+
// optionalAttrs cfg.enableStrongSwan
+
{
+
"NetworkManager/VPN/nm-strongswan-service.name".source =
+
"${pkgs.networkmanager_strongswan}/lib/NetworkManager/VPN/nm-strongswan-service.name";
+
}
+
// listToAttrs (lib.imap1 (i: s:
+
{
+
name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
+
value = { mode = "0544"; inherit (s) source; };
+
}) cfg.dispatcherScripts);
environment.systemPackages = cfg.packages;
+
users.groups = {
+
networkmanager.gid = config.ids.gids.networkmanager;
+
nm-openvpn.gid = config.ids.gids.nm-openvpn;
+
};
+
+
users.users = {
+
nm-openvpn = {
+
uid = config.ids.uids.nm-openvpn;
+
extraGroups = [ "networkmanager" ];
+
};
+
nm-iodine = {
+
isSystemUser = true;
+
group = "networkmanager";
+
};
+
};
systemd.packages = cfg.packages;
+2 -3
nixos/modules/services/networking/nntp-proxy.nix
···
config = mkIf cfg.enable {
-
users.users = singleton
-
{ name = proxyUser;
-
uid = config.ids.uids.nntp-proxy;
description = "NNTP-Proxy daemon user";
};
···
config = mkIf cfg.enable {
+
users.users.${proxyUser} =
+
{ uid = config.ids.uids.nntp-proxy;
description = "NNTP-Proxy daemon user";
};
+2 -6
nixos/modules/services/networking/nsd.nix
···
environment.systemPackages = [ nsdPkg ];
-
users.groups = singleton {
-
name = username;
-
gid = config.ids.gids.nsd;
-
};
-
users.users = singleton {
-
name = username;
description = "NSD service user";
home = stateDir;
createHome = true;
···
environment.systemPackages = [ nsdPkg ];
+
users.groups.${username}.gid = config.ids.gids.nsd;
+
users.users.${username} = {
description = "NSD service user";
home = stateDir;
createHome = true;
+3 -7
nixos/modules/services/networking/ntp/chrony.nix
···
environment.systemPackages = [ pkgs.chrony ];
-
users.groups = singleton
-
{ name = "chrony";
-
gid = config.ids.gids.chrony;
-
};
-
users.users = singleton
-
{ name = "chrony";
-
uid = config.ids.uids.chrony;
group = "chrony";
description = "chrony daemon user";
home = stateDir;
···
environment.systemPackages = [ pkgs.chrony ];
+
users.groups.chrony.gid = config.ids.gids.chrony;
+
users.users.chrony =
+
{ uid = config.ids.uids.chrony;
group = "chrony";
description = "chrony daemon user";
home = stateDir;
+2 -3
nixos/modules/services/networking/ntp/ntpd.nix
···
systemd.services.systemd-timedated.environment = { SYSTEMD_TIMEDATED_NTP_SERVICES = "ntpd.service"; };
-
users.users = singleton
-
{ name = ntpUser;
-
uid = config.ids.uids.ntp;
description = "NTP daemon user";
home = stateDir;
};
···
systemd.services.systemd-timedated.environment = { SYSTEMD_TIMEDATED_NTP_SERVICES = "ntpd.service"; };
+
users.users.${ntpUser} =
+
{ uid = config.ids.uids.ntp;
description = "NTP daemon user";
home = stateDir;
};
+1 -2
nixos/modules/services/networking/ntp/openntpd.nix
···
environment.etc."ntpd.conf".text = configFile;
-
users.users = singleton {
-
name = "ntp";
uid = config.ids.uids.ntp;
description = "OpenNTP daemon user";
home = "/var/empty";
···
environment.etc."ntpd.conf".text = configFile;
+
users.users.ntp = {
uid = config.ids.uids.ntp;
description = "OpenNTP daemon user";
home = "/var/empty";
+2 -5
nixos/modules/services/networking/owamp.nix
···
###### implementation
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = "owamp";
group = "owamp";
description = "Owamp daemon";
isSystemUser = true;
};
-
users.groups = singleton {
-
name = "owamp";
-
};
systemd.services.owamp = {
description = "Owamp server";
···
###### implementation
config = mkIf cfg.enable {
+
users.users.owamp = {
group = "owamp";
description = "Owamp daemon";
isSystemUser = true;
};
+
users.groups.owamp = { };
systemd.services.owamp = {
description = "Owamp server";
+2 -4
nixos/modules/services/networking/pdnsd.nix
···
};
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = pdnsdUser;
uid = config.ids.uids.pdnsd;
group = pdnsdGroup;
description = "pdnsd user";
};
-
users.groups = singleton {
-
name = pdnsdGroup;
gid = config.ids.gids.pdnsd;
};
···
};
config = mkIf cfg.enable {
+
users.users.${pdnsdUser} = {
uid = config.ids.uids.pdnsd;
group = pdnsdGroup;
description = "pdnsd user";
};
+
users.groups.${pdnsdGroup} = {
gid = config.ids.gids.pdnsd;
};
+4 -6
nixos/modules/services/networking/polipo.nix
···
config = mkIf cfg.enable {
-
users.users = singleton
-
{ name = "polipo";
-
uid = config.ids.uids.polipo;
description = "Polipo caching proxy user";
home = "/var/cache/polipo";
createHome = true;
};
-
users.groups = singleton
-
{ name = "polipo";
-
gid = config.ids.gids.polipo;
members = [ "polipo" ];
};
···
config = mkIf cfg.enable {
+
users.users.polipo =
+
{ uid = config.ids.uids.polipo;
description = "Polipo caching proxy user";
home = "/var/cache/polipo";
createHome = true;
};
+
users.groups.polipo =
+
{ gid = config.ids.gids.polipo;
members = [ "polipo" ];
};
+6 -4
nixos/modules/services/networking/pppd.nix
···
enabledConfigs = filter (f: f.enable) (attrValues cfg.peers);
mkEtc = peerCfg: {
-
"ppp/peers/${peerCfg.name}".text = peerCfg.config;
};
mkSystemd = peerCfg: {
-
"pppd-${peerCfg.name}" = {
restartTriggers = [ config.environment.etc."ppp/peers/${peerCfg.name}".source ];
before = [ "network.target" ];
wants = [ "network.target" ];
···
};
};
-
etcFiles = map mkEtc enabledConfigs;
-
systemdConfigs = map mkSystemd enabledConfigs;
in mkIf cfg.enable {
environment.etc = mkMerge etcFiles;
···
enabledConfigs = filter (f: f.enable) (attrValues cfg.peers);
mkEtc = peerCfg: {
+
name = "ppp/peers/${peerCfg.name}";
+
value.text = peerCfg.config;
};
mkSystemd = peerCfg: {
+
name = "pppd-${peerCfg.name}";
+
value = {
restartTriggers = [ config.environment.etc."ppp/peers/${peerCfg.name}".source ];
before = [ "network.target" ];
wants = [ "network.target" ];
···
};
};
+
etcFiles = listToAttrs (map mkEtc enabledConfigs);
+
systemdConfigs = listToAttrs (map mkSystemd enabledConfigs);
in mkIf cfg.enable {
environment.etc = mkMerge etcFiles;
+4 -7
nixos/modules/services/networking/prayer.nix
···
config = mkIf config.services.prayer.enable {
environment.systemPackages = [ prayer ];
-
users.users = singleton
-
{ name = prayerUser;
-
uid = config.ids.uids.prayer;
description = "Prayer daemon user";
home = stateDir;
};
-
users.groups = singleton
-
{ name = prayerGroup;
-
gid = config.ids.gids.prayer;
-
};
systemd.services.prayer = {
wantedBy = [ "multi-user.target" ];
···
config = mkIf config.services.prayer.enable {
environment.systemPackages = [ prayer ];
+
users.users.${prayerUser} =
+
{ uid = config.ids.uids.prayer;
description = "Prayer daemon user";
home = stateDir;
};
+
users.groups.${prayerGroup} =
+
{ gid = config.ids.gids.prayer; };
systemd.services.prayer = {
wantedBy = [ "multi-user.target" ];
+4 -7
nixos/modules/services/networking/radicale.nix
···
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
-
users.users = singleton
-
{ name = "radicale";
-
uid = config.ids.uids.radicale;
description = "radicale user";
home = "/var/lib/radicale";
createHome = true;
};
-
users.groups = singleton
-
{ name = "radicale";
-
gid = config.ids.gids.radicale;
-
};
systemd.services.radicale = {
description = "A Simple Calendar and Contact Server";
···
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
+
users.users.radicale =
+
{ uid = config.ids.uids.radicale;
description = "radicale user";
home = "/var/lib/radicale";
createHome = true;
};
+
users.groups.radicale =
+
{ gid = config.ids.gids.radicale; };
systemd.services.radicale = {
description = "A Simple Calendar and Contact Server";
+2 -3
nixos/modules/services/networking/shairport-sync.nix
···
services.avahi.publish.enable = true;
services.avahi.publish.userServices = true;
-
users.users = singleton
-
{ name = cfg.user;
-
description = "Shairport user";
isSystemUser = true;
createHome = true;
home = "/var/lib/shairport-sync";
···
services.avahi.publish.enable = true;
services.avahi.publish.userServices = true;
+
users.users.${cfg.user} =
+
{ description = "Shairport user";
isSystemUser = true;
createHome = true;
home = "/var/lib/shairport-sync";
+1 -2
nixos/modules/services/networking/shout.nix
···
};
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = "shout";
uid = config.ids.uids.shout;
description = "Shout daemon user";
home = shoutHome;
···
};
config = mkIf cfg.enable {
+
users.users.shout = {
uid = config.ids.uids.shout;
description = "Shout daemon user";
home = shoutHome;
+1 -2
nixos/modules/services/networking/smokeping.nix
···
fping6.source = "${pkgs.fping}/bin/fping6";
};
environment.systemPackages = [ pkgs.fping ];
-
users.users = singleton {
-
name = cfg.user;
isNormalUser = false;
isSystemUser = true;
uid = config.ids.uids.smokeping;
···
fping6.source = "${pkgs.fping}/bin/fping6";
};
environment.systemPackages = [ pkgs.fping ];
+
users.users.${cfg.user} = {
isNormalUser = false;
isSystemUser = true;
uid = config.ids.uids.smokeping;
+1 -3
nixos/modules/services/networking/supybot.nix
···
environment.systemPackages = [ pkgs.pythonPackages.limnoria ];
-
users.users = singleton {
-
name = "supybot";
uid = config.ids.uids.supybot;
group = "supybot";
description = "Supybot IRC bot user";
···
};
users.groups.supybot = {
-
name = "supybot";
gid = config.ids.gids.supybot;
};
···
environment.systemPackages = [ pkgs.pythonPackages.limnoria ];
+
users.users.supybotrs = {
uid = config.ids.uids.supybot;
group = "supybot";
description = "Supybot IRC bot user";
···
};
users.groups.supybot = {
gid = config.ids.gids.supybot;
};
+1 -2
nixos/modules/services/networking/tcpcrypt.nix
···
config = mkIf cfg.enable {
-
users.users = singleton {
-
name = "tcpcryptd";
uid = config.ids.uids.tcpcryptd;
description = "tcpcrypt daemon user";
};
···
config = mkIf cfg.enable {
+
users.users.tcpcryptd = {
uid = config.ids.uids.tcpcryptd;
description = "tcpcrypt daemon user";
};
+2 -3
nixos/modules/services/networking/tox-bootstrapd.nix
···
config = mkIf config.services.toxBootstrapd.enable {
-
users.users = singleton
-
{ name = "tox-bootstrapd";
-
uid = config.ids.uids.tox-bootstrapd;
description = "Tox bootstrap daemon user";
inherit home;
createHome = true;
···
config = mkIf config.services.toxBootstrapd.enable {
+
users.users.tox-bootstrapd =
+
{ uid = config.ids.uids.tox-bootstrapd;
description = "Tox bootstrap daemon user";
inherit home;
createHome = true;
+11 -10
nixos/modules/services/networking/vsftpd.nix
···
message = "vsftpd: If enableVirtualUsers is true, you need to setup both the userDbPath and localUsers options.";
}];
-
users.users =
-
[ { name = "vsftpd";
-
uid = config.ids.uids.vsftpd;
-
description = "VSFTPD user";
-
home = if cfg.localRoot != null
-
then cfg.localRoot # <= Necessary for virtual users.
-
else "/homeless-shelter";
-
}
-
] ++ optional cfg.anonymousUser
-
{ name = "ftp";
uid = config.ids.uids.ftp;
group = "ftp";
description = "Anonymous FTP user";
home = cfg.anonymousUserHome;
};
users.groups.ftp.gid = config.ids.gids.ftp;
···
message = "vsftpd: If enableVirtualUsers is true, you need to setup both the userDbPath and localUsers options.";
}];
+
users.users = {
+
"vsftpd" = {
+
uid = config.ids.uids.vsftpd;
+
description = "VSFTPD user";
+
home = if cfg.localRoot != null
+
then cfg.localRoot # <= Necessary for virtual users.
+
else "/homeless-shelter";
+
};
+
} // optionalAttrs cfg.anonymousUser {
+
"ftp" = { name = "ftp";
uid = config.ids.uids.ftp;
group = "ftp";
description = "Anonymous FTP user";
home = cfg.anonymousUserHome;
};
+
};
users.groups.ftp.gid = config.ids.gids.ftp;
+14 -12
nixos/modules/services/networking/znc/default.nix
···
'';
};
-
users.users = optional (cfg.user == defaultUser)
-
{ name = defaultUser;
-
description = "ZNC server daemon owner";
-
group = defaultUser;
-
uid = config.ids.uids.znc;
-
home = cfg.dataDir;
-
createHome = true;
};
-
users.groups = optional (cfg.user == defaultUser)
-
{ name = defaultUser;
-
gid = config.ids.gids.znc;
-
members = [ defaultUser ];
-
};
};
}
···
'';
};
+
users.users = optionalAttrs (cfg.user == defaultUser) {
+
${defaultUser} =
+
{ description = "ZNC server daemon owner";
+
group = defaultUser;
+
uid = config.ids.uids.znc;
+
home = cfg.dataDir;
+
createHome = true;
+
};
};
+
users.groups = optionalAttrs (cfg.user == defaultUser) {
+
${defaultUser} =
+
{ gid = config.ids.gids.znc;
+
members = [ defaultUser ];
+
};
+
};
};
}
+2 -3
nixos/modules/services/printing/cupsd.nix
···
config = mkIf config.services.printing.enable {
-
users.users = singleton
-
{ name = "cups";
-
uid = config.ids.uids.cups;
group = "lp";
description = "CUPS printing services";
};
···
config = mkIf config.services.printing.enable {
+
users.users.cups =
+
{ uid = config.ids.uids.cups;
group = "lp";
description = "CUPS printing services";
};
+3 -7
nixos/modules/services/scheduling/atd.nix
···
security.pam.services.atd = {};
-
users.users = singleton
-
{ name = "atd";
-
uid = config.ids.uids.atd;
description = "atd user";
home = "/var/empty";
};
-
users.groups = singleton
-
{ name = "atd";
-
gid = config.ids.gids.atd;
-
};
systemd.services.atd = {
description = "Job Execution Daemon (atd)";
···
security.pam.services.atd = {};
+
users.users.atd =
+
{ uid = config.ids.uids.atd;
description = "atd user";
home = "/var/empty";
};
+
users.groups.atd.gid = config.ids.gids.atd;
systemd.services.atd = {
description = "Job Execution Daemon (atd)";
+3 -2
nixos/modules/services/scheduling/fcron.nix
···
services.fcron.systab = systemCronJobs;
-
environment.etc =
[ (allowdeny "allow" (cfg.allow))
(allowdeny "deny" cfg.deny)
# see man 5 fcron.conf
···
gid = config.ids.gids.fcron;
mode = "0644";
}
-
];
environment.systemPackages = [ pkgs.fcron ];
users.users.fcron = {
···
services.fcron.systab = systemCronJobs;
+
environment.etc = listToAttrs
+
(map (x: { name = x.target; value = x; })
[ (allowdeny "allow" (cfg.allow))
(allowdeny "deny" cfg.deny)
# see man 5 fcron.conf
···
gid = config.ids.gids.fcron;
mode = "0644";
}
+
]);
environment.systemPackages = [ pkgs.fcron ];
users.users.fcron = {
+11 -11
nixos/modules/services/search/hound.nix
···
};
config = mkIf cfg.enable {
-
users.groups = optional (cfg.group == "hound") {
-
name = "hound";
-
gid = config.ids.gids.hound;
};
-
users.users = optional (cfg.user == "hound") {
-
name = "hound";
-
description = "hound code search";
-
createHome = true;
-
home = cfg.home;
-
group = cfg.group;
-
extraGroups = cfg.extraGroups;
-
uid = config.ids.uids.hound;
};
systemd.services.hound = {
···
};
config = mkIf cfg.enable {
+
users.groups = optionalAttrs (cfg.group == "hound") {
+
hound.gid = config.ids.gids.hound;
};
+
users.users = optionalAttrs (cfg.user == "hound") {
+
hound = {
+
description = "hound code search";
+
createHome = true;
+
home = cfg.home;
+
group = cfg.group;
+
extraGroups = cfg.extraGroups;
+
uid = config.ids.uids.hound;
+
};
};
systemd.services.hound = {
+1 -2
nixos/modules/services/search/kibana.nix
···
environment.systemPackages = [ cfg.package ];
-
users.users = singleton {
-
name = "kibana";
uid = config.ids.uids.kibana;
description = "Kibana service user";
home = cfg.dataDir;
···
environment.systemPackages = [ cfg.package ];
+
users.users.kibana = {
uid = config.ids.uids.kibana;
description = "Kibana service user";
home = cfg.dataDir;
+7 -7
nixos/modules/services/search/solr.nix
···
};
};
-
users.users = optionalAttrs (cfg.user == "solr") (singleton
-
{ name = "solr";
group = cfg.group;
home = cfg.stateDir;
createHome = true;
uid = config.ids.uids.solr;
-
});
-
users.groups = optionalAttrs (cfg.group == "solr") (singleton
-
{ name = "solr";
-
gid = config.ids.gids.solr;
-
});
};
···
};
};
+
users.users = optionalAttrs (cfg.user == "solr") {
+
solr = {
group = cfg.group;
home = cfg.stateDir;
createHome = true;
uid = config.ids.uids.solr;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "solr") {
+
solr.gid = config.ids.gids.solr;
+
};
};
+3 -6
nixos/modules/services/security/clamav.nix
···
config = mkIf (cfg.updater.enable || cfg.daemon.enable) {
environment.systemPackages = [ pkg ];
-
users.users = singleton {
-
name = clamavUser;
uid = config.ids.uids.clamav;
group = clamavGroup;
description = "ClamAV daemon user";
home = stateDir;
};
-
users.groups = singleton {
-
name = clamavGroup;
-
gid = config.ids.gids.clamav;
-
};
environment.etc."clamav/freshclam.conf".source = freshclamConfigFile;
environment.etc."clamav/clamd.conf".source = clamdConfigFile;
···
config = mkIf (cfg.updater.enable || cfg.daemon.enable) {
environment.systemPackages = [ pkg ];
+
users.users.${clamavUser} = {
uid = config.ids.uids.clamav;
group = clamavGroup;
description = "ClamAV daemon user";
home = stateDir;
};
+
users.groups.${clamavGroup} =
+
{ gid = config.ids.gids.clamav; };
environment.etc."clamav/freshclam.conf".source = freshclamConfigFile;
environment.etc."clamav/clamd.conf".source = clamdConfigFile;
+5 -9
nixos/modules/services/security/fprot.nix
···
services.fprot.updater.licenseKeyfile = mkDefault "${pkgs.fprot}/opt/f-prot/license.key";
environment.systemPackages = [ pkgs.fprot ];
-
environment.etc = singleton {
source = "${pkgs.fprot}/opt/f-prot/f-prot.conf";
-
target = "f-prot.conf";
};
-
users.users = singleton
-
{ name = fprotUser;
-
uid = config.ids.uids.fprot;
description = "F-Prot daemon user";
home = stateDir;
};
-
users.groups = singleton
-
{ name = fprotGroup;
-
gid = config.ids.gids.fprot;
-
};
services.cron.systemCronJobs = [ "*/${toString cfg.updater.frequency} * * * * root start fprot-updater" ];
···
services.fprot.updater.licenseKeyfile = mkDefault "${pkgs.fprot}/opt/f-prot/license.key";
environment.systemPackages = [ pkgs.fprot ];
+
environment.etc."f-prot.conf" = {
source = "${pkgs.fprot}/opt/f-prot/f-prot.conf";
};
+
users.users.${fprotUser} =
+
{ uid = config.ids.uids.fprot;
description = "F-Prot daemon user";
home = stateDir;
};
+
users.groups.${fprotGroup} =
+
{ gid = config.ids.gids.fprot; };
services.cron.systemCronJobs = [ "*/${toString cfg.updater.frequency} * * * * root start fprot-updater" ];
+4 -5
nixos/modules/services/security/torsocks.nix
···
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.torsocks (wrapTorsocks "torsocks-faster" cfg.fasterServer) ];
-
environment.etc =
-
[ { source = pkgs.writeText "torsocks.conf" (configFile cfg.server);
-
target = "tor/torsocks.conf";
-
}
-
];
};
}
···
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.torsocks (wrapTorsocks "torsocks-faster" cfg.fasterServer) ];
+
environment.etc."tor/torsocks.conf" =
+
{
+
source = pkgs.writeText "torsocks.conf" (configFile cfg.server);
+
};
};
}
+1 -4
nixos/modules/services/system/dbus.nix
···
environment.systemPackages = [ pkgs.dbus.daemon pkgs.dbus ];
-
environment.etc = singleton
-
{ source = configDir;
-
target = "dbus-1";
-
};
users.users.messagebus = {
uid = config.ids.uids.messagebus;
···
environment.systemPackages = [ pkgs.dbus.daemon pkgs.dbus ];
+
environment.etc."dbus-1".source = configDir;
users.users.messagebus = {
uid = config.ids.uids.messagebus;
+4
nixos/modules/services/system/localtime.nix
···
# Install the systemd unit.
systemd.packages = [ pkgs.localtime.out ];
systemd.services.localtime = {
wantedBy = [ "multi-user.target" ];
serviceConfig.Restart = "on-failure";
···
# Install the systemd unit.
systemd.packages = [ pkgs.localtime.out ];
+
users.users.localtimed = {
+
description = "Taskserver user";
+
};
+
systemd.services.localtime = {
wantedBy = [ "multi-user.target" ];
serviceConfig.Restart = "on-failure";
+1 -2
nixos/modules/services/ttys/agetty.nix
···
enable = mkDefault config.boot.isContainer;
};
-
environment.etc = singleton
{ # Friendly greeting on the virtual consoles.
source = pkgs.writeText "issue" ''
···
${config.services.mingetty.helpLine}
'';
-
target = "issue";
};
};
···
enable = mkDefault config.boot.isContainer;
};
+
environment.etc.issue =
{ # Friendly greeting on the virtual consoles.
source = pkgs.writeText "issue" ''
···
${config.services.mingetty.helpLine}
'';
};
};
+4 -6
nixos/modules/services/web-apps/frab.nix
···
config = mkIf cfg.enable {
environment.systemPackages = [ frab-rake ];
-
users.users = [
-
{ name = cfg.user;
-
group = cfg.group;
home = "${cfg.statePath}";
isSystemUser = true;
-
}
-
];
-
users.groups = [ { name = cfg.group; } ];
systemd.tmpfiles.rules = [
"d '${cfg.statePath}/system/attachments' - ${cfg.user} ${cfg.group} - -"
···
config = mkIf cfg.enable {
environment.systemPackages = [ frab-rake ];
+
users.users.${cfg.user} =
+
{ group = cfg.group;
home = "${cfg.statePath}";
isSystemUser = true;
+
};
+
users.groups.${cfg.group} = { };
systemd.tmpfiles.rules = [
"d '${cfg.statePath}/system/attachments' - ${cfg.user} ${cfg.group} - -"
+10 -10
nixos/modules/services/web-apps/mattermost.nix
···
config = mkMerge [
(mkIf cfg.enable {
-
users.users = optionalAttrs (cfg.user == "mattermost") (singleton {
-
name = "mattermost";
-
group = cfg.group;
-
uid = config.ids.uids.mattermost;
-
home = cfg.statePath;
-
});
-
users.groups = optionalAttrs (cfg.group == "mattermost") (singleton {
-
name = "mattermost";
-
gid = config.ids.gids.mattermost;
-
});
services.postgresql.enable = cfg.localDatabaseCreate;
···
config = mkMerge [
(mkIf cfg.enable {
+
users.users = optionalAttrs (cfg.user == "mattermost") {
+
mattermost = {
+
group = cfg.group;
+
uid = config.ids.uids.mattermost;
+
home = cfg.statePath;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "mattermost") {
+
mattermost.gid = config.ids.gids.mattermost;
+
};
services.postgresql.enable = cfg.localDatabaseCreate;
+7 -7
nixos/modules/services/web-servers/apache-httpd/default.nix
···
}
];
-
users.users = optionalAttrs (mainCfg.user == "wwwrun") (singleton
-
{ name = "wwwrun";
group = mainCfg.group;
description = "Apache httpd user";
uid = config.ids.uids.wwwrun;
-
});
-
users.groups = optionalAttrs (mainCfg.group == "wwwrun") (singleton
-
{ name = "wwwrun";
-
gid = config.ids.gids.wwwrun;
-
});
security.acme.certs = mapAttrs (name: hostOpts: {
user = mainCfg.user;
···
}
];
+
users.users = optionalAttrs (mainCfg.user == "wwwrun") {
+
wwwrun = {
group = mainCfg.group;
description = "Apache httpd user";
uid = config.ids.uids.wwwrun;
+
};
+
};
+
users.groups = optionalAttrs (mainCfg.group == "wwwrun") {
+
wwwrun.gid = config.ids.gids.wwwrun;
+
};
security.acme.certs = mapAttrs (name: hostOpts: {
user = mainCfg.user;
+8 -7
nixos/modules/services/web-servers/nginx/default.nix
···
listToAttrs acmePairs
);
-
users.users = optionalAttrs (cfg.user == "nginx") (singleton
-
{ name = "nginx";
group = cfg.group;
uid = config.ids.uids.nginx;
-
});
-
users.groups = optionalAttrs (cfg.group == "nginx") (singleton
-
{ name = "nginx";
-
gid = config.ids.gids.nginx;
-
});
};
}
···
listToAttrs acmePairs
);
+
users.users = optionalAttrs (cfg.user == "nginx") {
+
nginx = {
group = cfg.group;
uid = config.ids.uids.nginx;
+
};
+
};
+
+
users.groups = optionalAttrs (cfg.group == "nginx") {
+
nginx.gid = config.ids.gids.nginx;
+
};
};
}
+3 -7
nixos/modules/services/web-servers/tomcat.nix
···
config = mkIf config.services.tomcat.enable {
-
users.groups = singleton
-
{ name = "tomcat";
-
gid = config.ids.gids.tomcat;
-
};
-
users.users = singleton
-
{ name = "tomcat";
-
uid = config.ids.uids.tomcat;
description = "Tomcat user";
home = "/homeless-shelter";
extraGroups = cfg.extraGroups;
···
config = mkIf config.services.tomcat.enable {
+
users.groups.tomcat.gid = config.ids.gids.tomcat;
+
users.users.tomcat =
+
{ uid = config.ids.uids.tomcat;
description = "Tomcat user";
home = "/homeless-shelter";
extraGroups = cfg.extraGroups;
+7 -7
nixos/modules/services/web-servers/unit/default.nix
···
};
};
-
users.users = optionalAttrs (cfg.user == "unit") (singleton {
-
name = "unit";
-
group = cfg.group;
isSystemUser = true;
-
});
-
users.groups = optionalAttrs (cfg.group == "unit") (singleton {
-
name = "unit";
-
});
};
}
···
};
};
+
users.users = optionalAttrs (cfg.user == "unit") {
+
unit.group = cfg.group;
isSystemUser = true;
+
};
+
users.groups = optionalAttrs (cfg.group == "unit") {
+
unit = { };
+
};
+
};
}
+7 -7
nixos/modules/services/web-servers/uwsgi.nix
···
};
};
-
users.users = optionalAttrs (cfg.user == "uwsgi") (singleton
-
{ name = "uwsgi";
group = cfg.group;
uid = config.ids.uids.uwsgi;
-
});
-
users.groups = optionalAttrs (cfg.group == "uwsgi") (singleton
-
{ name = "uwsgi";
-
gid = config.ids.gids.uwsgi;
-
});
};
}
···
};
};
+
users.users = optionalAttrs (cfg.user == "uwsgi") {
+
uwsgi = {
group = cfg.group;
uid = config.ids.uids.uwsgi;
+
};
+
};
+
users.groups = optionalAttrs (cfg.group == "uwsgi") {
+
uwsgi.gid = config.ids.gids.uwsgi;
+
};
};
}
+1 -4
nixos/modules/services/x11/desktop-managers/enlightenment.nix
···
security.wrappers = (import "${e.enlightenment}/e-wrappers.nix").security.wrappers;
-
environment.etc = singleton
-
{ source = xcfg.xkbDir;
-
target = "X11/xkb";
-
};
fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
···
security.wrappers = (import "${e.enlightenment}/e-wrappers.nix").security.wrappers;
+
environment.etc."X11/xkb".source = xcfg.xkbDir;
fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
+1 -4
nixos/modules/services/x11/desktop-managers/plasma5.nix
···
"/share"
];
-
environment.etc = singleton {
-
source = xcfg.xkbDir;
-
target = "X11/xkb";
-
};
# Enable GTK applications to load SVG icons
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
···
"/share"
];
+
environment.etc."X11/xkb".source = xcfg.xkbDir;
# Enable GTK applications to load SVG icons
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
+7 -6
nixos/modules/services/x11/hardware/libinput.nix
···
environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ];
-
environment.etc = [
-
(let cfgPath = "X11/xorg.conf.d/40-libinput.conf"; in {
-
source = pkgs.xorg.xf86inputlibinput.out + "/share/" + cfgPath;
-
target = cfgPath;
-
})
-
];
services.udev.packages = [ pkgs.libinput.out ];
···
environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ];
+
environment.etc =
+
let cfgPath = "X11/xorg.conf.d/40-libinput.conf";
+
in {
+
${cfgPath} = {
+
source = pkgs.xorg.xf86inputlibinput.out + "/share/" + cfgPath;
+
};
+
};
services.udev.packages = [ pkgs.libinput.out ];
+11 -19
nixos/modules/services/x11/xserver.nix
···
];
environment.etc =
-
(optionals cfg.exportConfiguration
-
[ { source = "${configFile}";
-
target = "X11/xorg.conf";
-
}
# -xkbdir command line option does not seems to be passed to xkbcomp.
-
{ source = "${cfg.xkbDir}";
-
target = "X11/xkb";
-
}
-
])
# localectl looks into 00-keyboard.conf
-
++ [
-
{
-
text = ''
Section "InputClass"
Identifier "Keyboard catchall"
MatchIsKeyboard "on"
···
Option "XkbVariant" "${cfg.xkbVariant}"
EndSection
'';
-
target = "X11/xorg.conf.d/00-keyboard.conf";
}
-
]
# Needed since 1.18; see https://bugs.freedesktop.org/show_bug.cgi?id=89023#c5
-
++ (let cfgPath = "/X11/xorg.conf.d/10-evdev.conf"; in
-
[{
-
source = xorg.xf86inputevdev.out + "/share" + cfgPath;
-
target = cfgPath;
-
}]
-
);
environment.systemPackages =
[ xorg.xorgserver.out
···
];
environment.etc =
+
(optionalAttrs cfg.exportConfiguration
+
{
+
"X11/xorg.conf".source = "${configFile}";
# -xkbdir command line option does not seems to be passed to xkbcomp.
+
"X11/xkb".source = "${cfg.xkbDir}";
+
})
# localectl looks into 00-keyboard.conf
+
//{
+
"X11/xorg.conf.d/00-keyboard.conf".text = ''
Section "InputClass"
Identifier "Keyboard catchall"
MatchIsKeyboard "on"
···
Option "XkbVariant" "${cfg.xkbVariant}"
EndSection
'';
}
# Needed since 1.18; see https://bugs.freedesktop.org/show_bug.cgi?id=89023#c5
+
// (let cfgPath = "/X11/xorg.conf.d/10-evdev.conf"; in
+
{
+
${cfgPath}.source = xorg.xf86inputevdev.out + "/share" + cfgPath;
+
});
environment.systemPackages =
[ xorg.xorgserver.out
+2 -3
nixos/modules/system/boot/kernel.nix
···
# Create /etc/modules-load.d/nixos.conf, which is read by
# systemd-modules-load.service to load required kernel modules.
-
environment.etc = singleton
-
{ target = "modules-load.d/nixos.conf";
-
source = kernelModulesConf;
};
systemd.services.systemd-modules-load =
···
# Create /etc/modules-load.d/nixos.conf, which is read by
# systemd-modules-load.service to load required kernel modules.
+
environment.etc =
+
{ "modules-load.d/nixos.conf".source = kernelModulesConf;
};
systemd.services.systemd-modules-load =
+5 -5
nixos/modules/system/boot/networkd.nix
···
'';
};
-
unitFiles = map (name: {
-
target = "systemd/network/${name}";
-
source = "${cfg.units.${name}.unit}/${name}";
-
}) (attrNames cfg.units);
in
{
···
systemd.services.systemd-networkd = {
wantedBy = [ "multi-user.target" ];
-
restartTriggers = map (f: f.source) (unitFiles);
# prevent race condition with interface renaming (#39069)
requires = [ "systemd-udev-settle.service" ];
after = [ "systemd-udev-settle.service" ];
···
'';
};
+
unitFiles = listToAttrs (map (name: {
+
name = "systemd/network/${name}";
+
value.source = "${cfg.units.${name}.unit}/${name}";
+
}) (attrNames cfg.units));
in
{
···
systemd.services.systemd-networkd = {
wantedBy = [ "multi-user.target" ];
+
restartTriggers = attrNames unitFiles;
# prevent race condition with interface renaming (#39069)
requires = [ "systemd-udev-settle.service" ];
after = [ "systemd-udev-settle.service" ];
+11 -18
nixos/modules/virtualisation/xen-dom0.nix
···
environment.etc =
-
[ { source = "${cfg.package}/etc/xen/xl.conf";
-
target = "xen/xl.conf";
-
}
-
{ source = "${cfg.package}/etc/xen/scripts";
-
target = "xen/scripts";
-
}
-
{ text = ''
-
source ${cfg.package}/etc/default/xendomains
-
${cfg.domains.extraConfig}
-
'';
-
target = "default/xendomains";
-
}
-
]
-
++ lib.optionals (builtins.compareVersions cfg.package.version "4.10" >= 0) [
# in V 4.10 oxenstored requires /etc/xen/oxenstored.conf to start
-
{ source = "${cfg.package}/etc/xen/oxenstored.conf";
-
target = "xen/oxenstored.conf";
-
}
-
];
# Xen provides udev rules.
services.udev.packages = [ cfg.package ];
···
environment.etc =
+
{
+
"xen/xl.conf".source = "${cfg.package}/etc/xen/xl.conf";
+
"xen/scripts".source = "${cfg.package}/etc/xen/scripts";
+
"default/xendomains".text = ''
+
source ${cfg.package}/etc/default/xendomains
+
${cfg.domains.extraConfig}
+
'';
+
}
+
// optionalAttrs (builtins.compareVersions cfg.package.version "4.10" >= 0) {
# in V 4.10 oxenstored requires /etc/xen/oxenstored.conf to start
+
"xen/oxenstored.conf".source = "${cfg.package}/etc/xen/oxenstored.conf";
+
};
# Xen provides udev rules.
services.udev.packages = [ cfg.package ];