summaryrefslogtreecommitdiffstats
path: root/nixos/modules/config/nsswitch.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-10 13:28:20 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-10 13:28:20 +0200
commit5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010 (patch)
treea6c0f605be6de3f372ae69905b331f9f75452da7 /nixos/modules/config/nsswitch.nix
parent6070bc016bd2fd945b04347e25cfd3738622d2ac (diff)
Move all of NixOS to nixos/ in preparation of the repository merge
Diffstat (limited to 'nixos/modules/config/nsswitch.nix')
-rw-r--r--nixos/modules/config/nsswitch.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/nixos/modules/config/nsswitch.nix b/nixos/modules/config/nsswitch.nix
new file mode 100644
index 000000000000..ad62b5597be8
--- /dev/null
+++ b/nixos/modules/config/nsswitch.nix
@@ -0,0 +1,63 @@
+# Configuration for the Name Service Switch (/etc/nsswitch.conf).
+
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+
+ inherit (config.services.avahi) nssmdns;
+ inherit (config.services.samba) nsswins;
+
+in
+
+{
+ options = {
+
+ # NSS modules. Hacky!
+ system.nssModules = mkOption {
+ internal = true;
+ default = [];
+ description = ''
+ Search path for NSS (Name Service Switch) modules. This allows
+ several DNS resolution methods to be specified via
+ <filename>/etc/nsswitch.conf</filename>.
+ '';
+ merge = mergeListOption;
+ apply = list:
+ {
+ inherit list;
+ path = makeLibraryPath list;
+ };
+ };
+
+ };
+
+ config = {
+
+ environment.etc =
+ [ # 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.
+ { source = pkgs.writeText "nsswitch.conf"
+ ''
+ passwd: files ldap
+ group: files ldap
+ shadow: files ldap
+ hosts: files ${optionalString nssmdns "mdns_minimal [NOTFOUND=return]"} dns ${optionalString nssmdns "mdns"} ${optionalString nsswins "wins"} myhostname
+ networks: files dns
+ ethers: files
+ services: files
+ protocols: files
+ '';
+ target = "nsswitch.conf";
+ }
+ ];
+
+ # Use nss-myhostname to ensure that our hostname always resolves to
+ # a valid IP address. It returns all locally configured IP
+ # addresses, or ::1 and 127.0.0.2 as fallbacks.
+ system.nssModules = [ pkgs.systemd ];
+
+ };
+}