diff --git a/etc/default.nix b/etc/default.nix
index ea37a91adb1..42037c8d440 100644
--- a/etc/default.nix
+++ b/etc/default.nix
@@ -47,35 +47,10 @@ let
pamConsolePerms = ./security/console.perms;
- # These should be moved into the corresponding configuration files.
- configFiles = [
- { # TCP/UDP port assignments.
- source = pkgs.iana_etc + "/etc/services";
- target = "services";
- }
-
- { # IP protocol numbers.
- source = pkgs.iana_etc + "/etc/protocols";
- target = "protocols";
- }
-
- { # RPC program numbers.
- source = pkgs.glibc + "/etc/rpc";
- target = "rpc";
- }
-
- { # Hostname-to-IP mappings.
- source = pkgs.substituteAll {
- src = ./hosts;
- extraHosts = config.networking.extraHosts;
- };
- target = "hosts";
- }
-
- ]
+ configFiles =
# A bunch of PAM configuration files for various programs.
- ++ (map
+ (map
(program:
let isLDAPEnabled = config.users.ldap.enable; in
{ source = pkgs.substituteAll {
diff --git a/etc/hosts b/etc/hosts
deleted file mode 100644
index 71dd03ed229..00000000000
--- a/etc/hosts
+++ /dev/null
@@ -1,2 +0,0 @@
-@extraHosts@
-127.0.0.1 localhost
diff --git a/modules/config/networking.nix b/modules/config/networking.nix
new file mode 100644
index 00000000000..ff4d0f3fee4
--- /dev/null
+++ b/modules/config/networking.nix
@@ -0,0 +1,49 @@
+# /etc files related to networking, such as /etc/services.
+
+{config, pkgs, ...}:
+
+let
+
+ options = {
+
+ networking.extraHosts = pkgs.lib.mkOption {
+ default = "";
+ example = "192.168.0.1 lanlocalhost";
+ description = ''
+ Additional entries to be appended to /etc/hosts.
+ '';
+ };
+
+ };
+
+in
+
+{
+ require = [options];
+
+ environment.etc =
+ [ { # /etc/services: TCP/UDP port assignments.
+ source = pkgs.iana_etc + "/etc/services";
+ target = "services";
+ }
+
+ { # /etc/protocols: IP protocol numbers.
+ source = pkgs.iana_etc + "/etc/protocols";
+ target = "protocols";
+ }
+
+ { # /etc/rpc: RPC program numbers.
+ source = pkgs.glibc + "/etc/rpc";
+ target = "rpc";
+ }
+
+ { # /etc/hosts: Hostname-to-IP mappings.
+ source = pkgs.writeText "hosts"
+ ''
+ ${config.networking.extraHosts}
+ 127.0.0.1 localhost
+ '';
+ target = "hosts";
+ }
+ ];
+}
diff --git a/modules/module-list.nix b/modules/module-list.nix
index a8ca8a006b5..2f72d14d2b7 100644
--- a/modules/module-list.nix
+++ b/modules/module-list.nix
@@ -1,6 +1,7 @@
[ # This file has been generated by gen-module-list.sh
./config/fonts.nix
./config/i18n.nix
+ ./config/networking.nix
./config/nsswitch.nix
./config/system-path.nix
./config/timezone.nix
diff --git a/system/options.nix b/system/options.nix
index 8e3308174e7..eb51250d28e 100644
--- a/system/options.nix
+++ b/system/options.nix
@@ -42,14 +42,6 @@ in
";
};
- extraHosts = mkOption {
- default = "";
- example = "192.168.0.1 lanlocalhost";
- description = ''
- Additional entries to be appended to /etc/hosts.
- '';
- };
-
defaultGateway = mkOption {
default = "";
example = "131.211.84.1";