From 987aac77945e2bee070723c9758f8173e9e7e974 Mon Sep 17 00:00:00 2001 From: Peter Hoeg Date: Thu, 1 Sep 2016 17:00:20 +0800 Subject: /etc/hosts and /etc/nsswitch.conf cleanups fixes #18183 --- nixos/modules/config/nsswitch.nix | 40 ++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) (limited to 'nixos/modules/config/nsswitch.nix') diff --git a/nixos/modules/config/nsswitch.nix b/nixos/modules/config/nsswitch.nix index 45553ec05663..3f96cea22706 100644 --- a/nixos/modules/config/nsswitch.nix +++ b/nixos/modules/config/nsswitch.nix @@ -10,9 +10,21 @@ let inherit (config.services.samba) nsswins; ldap = (config.users.ldap.enable && config.users.ldap.nsswitch); -in + hostArray = [ "files" "mymachines" ] + ++ optionals nssmdns [ "mdns_minimal [!UNAVAIL=return]" ] + ++ optionals nsswins [ "wins" ] + ++ [ "dns" ] + ++ optionals nssmdns [ "mdns" ] + ++ ["myhostname" ]; -{ + passwdArray = [ "files" ] + ++ optionals ldap [ "ldap" ] + ++ [ "mymachines" ]; + + shadowArray = [ "files" ] + ++ optionals ldap [ "ldap" ]; + +in { options = { # NSS modules. Hacky! @@ -39,17 +51,19 @@ in # Name Service Switch configuration file. Required by the C # library. !!! Factor out the mdns stuff. The avahi module # should define an option used by this module. - environment.etc."nsswitch.conf".text = - '' - passwd: files ${optionalString ldap "ldap"} - group: files ${optionalString ldap "ldap"} - shadow: files ${optionalString ldap "ldap"} - hosts: files ${optionalString nssmdns "mdns_minimal [NOTFOUND=return]"} dns ${optionalString nssmdns "mdns"} ${optionalString nsswins "wins"} myhostname mymachines - networks: files dns - ethers: files - services: files - protocols: files - ''; + environment.etc."nsswitch.conf".text = '' + passwd: ${concatStringsSep " " passwdArray} + group: ${concatStringsSep " " passwdArray} + shadow: ${concatStringsSep " " shadowArray} + + hosts: ${concatStringsSep " " hostArray} + networks: files + + ethers: files + services: files + protocols: files + rpc: files + ''; # Systemd provides nss-myhostname to ensure that our hostname # always resolves to a valid IP address. It returns all locally -- cgit 1.4.1