diff --git a/lib/eval-config.nix b/lib/eval-config.nix
index e1cf7ac3cf6..6af1f2af81a 100644
--- a/lib/eval-config.nix
+++ b/lib/eval-config.nix
@@ -7,7 +7,7 @@
rec {
configComponents = [
configuration
- (import ../system/options.nix)
+ { require = import ../modules/module-list.nix; }
];
config =
diff --git a/modules/system/upstart/upstart.nix b/modules/system/upstart/upstart.nix
index 84237d74408..ca9b6e2ddf5 100644
--- a/modules/system/upstart/upstart.nix
+++ b/modules/system/upstart/upstart.nix
@@ -58,13 +58,7 @@ let
optional = cond: service: pkgs.lib.optional cond (makeJob service);
- requiredTTYs = config.requiredTTYs;
-
- jobs = map makeJob []
-
- # User-defined events.
- ++ (map makeJob (config.services.extraJobs));
-
+ jobs = map makeJob config.services.extraJobs;
# Create an etc/event.d directory containing symlinks to the
# specified list of Upstart job files.
diff --git a/modules/tasks/kbd.nix b/modules/tasks/kbd.nix
index 61dc93737af..42511a76156 100644
--- a/modules/tasks/kbd.nix
+++ b/modules/tasks/kbd.nix
@@ -1,7 +1,39 @@
{pkgs, config, ...}:
let
- inherit (pkgs.lib) mkOption;
+
+###### interface
+
+ # most options are defined in i18n.nix
+
+ options = {
+
+ boot.extraTTYs = pkgs.lib.mkOption {
+ default = [];
+ example = [8 9];
+ description = "
+ Tty (virtual console) devices, in addition to the consoles on
+ which mingetty and syslogd run, that must be initialised.
+ Only useful if you have some program that you want to run on
+ some fixed console. For example, the NixOS installation CD
+ opens the manual in a web browser on console 7, so it sets
+ to [7].
+ ";
+ };
+
+ # dummy option so that requiredTTYs can be passed
+ requiredTTYs = pkgs.lib.mkOption {
+ default = [];
+ description = "
+ FIXME: find another place for this option.
+ FIXME: find a good description.
+ ";
+ };
+
+ };
+
+
+###### implementation
# think about where to put this chunk of code!
# required by other pieces as well
@@ -16,26 +48,10 @@ let
in
-###### implementation
-
-# most options are defined in i18n.nix
-
{
+ require = [options];
- inherit requiredTTYs; # pass them to upstart-job/default.nix
-
- # dummy option so that requiredTTYs can be passed, see above (FIXME)
- require = [
- {
- requiredTTYs = mkOption {
- default = [];
- description = "
- FIXME: find another place for this option.
- FIXME: find a good description.
- ";
- };
- }
- ];
+ inherit requiredTTYs; # pass them to ./modules/tasks/tty-backgrounds.nix
services = {
extraJobs = [{
diff --git a/modules/tasks/network-interfaces.nix b/modules/tasks/network-interfaces.nix
index 40803639331..4c57b48bd94 100644
--- a/modules/tasks/network-interfaces.nix
+++ b/modules/tasks/network-interfaces.nix
@@ -1,9 +1,70 @@
{pkgs, config, ...}:
-###### implementation
-
let
+ inherit (pkgs.lib) mkOption;
+
+
+###### interface
+
+ options = {
+
+ networking.hostName = mkOption {
+ default = "nixos";
+ description = "
+ The name of the machine. Leave it empty if you want to obtain
+ it from a DHCP server (if using DHCP).
+ ";
+ };
+
+ networking.nativeIPv6 = mkOption {
+ default = false;
+ description = "
+ Whether to use IPv6 even though gw6c is not used. For example,
+ for Postfix.
+ ";
+ };
+
+ networking.defaultGateway = mkOption {
+ default = "";
+ example = "131.211.84.1";
+ description = "
+ The default gateway. It can be left empty if it is auto-detected through DHCP.
+ ";
+ };
+
+ networking.nameservers = mkOption {
+ default = [];
+ example = ["130.161.158.4" "130.161.33.17"];
+ description = "
+ The list of nameservers. It can be left empty if it is auto-detected through DHCP.
+ ";
+ };
+
+ networking.domain = mkOption {
+ default = "";
+ example = "home";
+ description = "
+ The domain. It can be left empty if it is auto-detected through DHCP.
+ ";
+ };
+
+ networking.localCommands = mkOption {
+ default = "";
+ example = "text=anything; echo You can put $text here.";
+ description = "
+ Shell commands to be executed at the end of the
+ network-interfaces Upstart job. Note that if
+ you are using DHCP to obtain the network configuration,
+ interfaces may not be fully configured yet.
+ ";
+ };
+
+ };
+
+
+###### implementation
+
inherit (pkgs) nettools wirelesstools bash writeText;
cfg = config.networking;
@@ -18,92 +79,91 @@ let
in
-
{
- services = {
- extraJobs = [{
- name = "network-interfaces";
-
- job = ''
- start on udev
- stop on shutdown
-
- start script
- export PATH=${modprobe}/sbin:$PATH
- modprobe af_packet || true
-
- for i in $(cd /sys/class/net && ls -d *); do
- echo "Bringing up network device $i..."
- ${nettools}/sbin/ifconfig $i up || true
- done
-
- # Configure the manually specified interfaces.
- names=(${toString names})
- ipAddresses=(${toString ipAddresses})
- subnetMasks=(${toString subnetMasks})
- essids=(${toString essids})
- wepKeys=(${toString wepKeys})
-
- for ((n = 0; n < ''${#names[*]}; n++)); do
- name=''${names[$n]}
- ipAddress=''${ipAddresses[$n]}
- subnetMask=''${subnetMasks[$n]}
- essid=''${essids[$n]}
- wepKey=''${wepKeys[$n]}
-
- # Set wireless networking stuff.
- if test "$essid" != default; then
- ${wirelesstools}/sbin/iwconfig "$name" essid "$essid" || true
- fi
-
- if test "$wepKey" != nokey; then
- ${wirelesstools}/sbin/iwconfig "$name" key "$(cat "$wepKey")" || true
- fi
-
- # Set IP address / netmask.
- if test "$ipAddress" != dhcp; then
- echo "Configuring interface $name..."
- extraFlags=
- if test "$subnetMask" != default; then
- extraFlags="$extraFlags netmask $subnetMask"
- fi
- ${nettools}/sbin/ifconfig "$name" "$ipAddress" $extraFlags || true
- fi
-
- done
-
- # Set the nameservers.
- if test -n "${toString cfg.nameservers}"; then
- rm -f /etc/resolv.conf
- if test -n "${cfg.domain}"; then
- echo "domain ${cfg.domain}" >> /etc/resolv.conf
- fi
- for i in ${toString cfg.nameservers}; do
- echo "nameserver $i" >> /etc/resolv.conf
- done
+ require = [options];
+
+ services.extraJobs = [{
+ name = "network-interfaces";
+
+ job = ''
+ start on udev
+ stop on shutdown
+
+ start script
+ export PATH=${modprobe}/sbin:$PATH
+ modprobe af_packet || true
+
+ for i in $(cd /sys/class/net && ls -d *); do
+ echo "Bringing up network device $i..."
+ ${nettools}/sbin/ifconfig $i up || true
+ done
+
+ # Configure the manually specified interfaces.
+ names=(${toString names})
+ ipAddresses=(${toString ipAddresses})
+ subnetMasks=(${toString subnetMasks})
+ essids=(${toString essids})
+ wepKeys=(${toString wepKeys})
+
+ for ((n = 0; n < ''${#names[*]}; n++)); do
+ name=''${names[$n]}
+ ipAddress=''${ipAddresses[$n]}
+ subnetMask=''${subnetMasks[$n]}
+ essid=''${essids[$n]}
+ wepKey=''${wepKeys[$n]}
+
+ # Set wireless networking stuff.
+ if test "$essid" != default; then
+ ${wirelesstools}/sbin/iwconfig "$name" essid "$essid" || true
fi
-
- # Set the default gateway.
- if test -n "${cfg.defaultGateway}"; then
- ${nettools}/sbin/route add default gw "${cfg.defaultGateway}" || true
+
+ if test "$wepKey" != nokey; then
+ ${wirelesstools}/sbin/iwconfig "$name" key "$(cat "$wepKey")" || true
fi
-
- # Run any user-specified commands.
- ${bash}/bin/sh ${writeText "local-net-cmds" cfg.localCommands} || true
-
- end script
-
- # Hack: Upstart doesn't yet support what we want: a service that
- # doesn't have a running process associated with it.
- respawn sleep 100000
-
- stop script
- for i in $(cd /sys/class/net && ls -d *); do
- echo "Taking down network device $i..."
- ${nettools}/sbin/ifconfig $i down || true
+
+ # Set IP address / netmask.
+ if test "$ipAddress" != dhcp; then
+ echo "Configuring interface $name..."
+ extraFlags=
+ if test "$subnetMask" != default; then
+ extraFlags="$extraFlags netmask $subnetMask"
+ fi
+ ${nettools}/sbin/ifconfig "$name" "$ipAddress" $extraFlags || true
+ fi
+
+ done
+
+ # Set the nameservers.
+ if test -n "${toString cfg.nameservers}"; then
+ rm -f /etc/resolv.conf
+ if test -n "${cfg.domain}"; then
+ echo "domain ${cfg.domain}" >> /etc/resolv.conf
+ fi
+ for i in ${toString cfg.nameservers}; do
+ echo "nameserver $i" >> /etc/resolv.conf
done
- end script
- '';
- }];
- };
+ fi
+
+ # Set the default gateway.
+ if test -n "${cfg.defaultGateway}"; then
+ ${nettools}/sbin/route add default gw "${cfg.defaultGateway}" || true
+ fi
+
+ # Run any user-specified commands.
+ ${bash}/bin/sh ${writeText "local-net-cmds" cfg.localCommands} || true
+
+ end script
+
+ # Hack: Upstart doesn't yet support what we want: a service that
+ # doesn't have a running process associated with it.
+ respawn sleep 100000
+
+ stop script
+ for i in $(cd /sys/class/net && ls -d *); do
+ echo "Taking down network device $i..."
+ ${nettools}/sbin/ifconfig $i down || true
+ done
+ end script
+ '';
+ }];
}
diff --git a/system/options.nix b/system/options.nix
deleted file mode 100644
index 8c725255487..00000000000
--- a/system/options.nix
+++ /dev/null
@@ -1,84 +0,0 @@
-{pkgs, config, ...}:
-
-let
- inherit (pkgs.lib) mkOption mergeOneOption;
-in
-
-{
-
- boot = {
-
- extraTTYs = mkOption {
- default = [];
- example = [8 9];
- description = "
- Tty (virtual console) devices, in addition to the consoles on
- which mingetty and syslogd run, that must be initialised.
- Only useful if you have some program that you want to run on
- some fixed console. For example, the NixOS installation CD
- opens the manual in a web browser on console 7, so it sets
- to [7].
- ";
- };
-
- };
-
-
- networking = {
-
- hostName = mkOption {
- default = "nixos";
- description = "
- The name of the machine. Leave it empty if you want to obtain
- it from a DHCP server (if using DHCP).
- ";
- };
-
- nativeIPv6 = mkOption {
- default = false;
- description = "
- Whether to use IPv6 even though gw6c is not used. For example,
- for Postfix.
- ";
- };
-
- defaultGateway = mkOption {
- default = "";
- example = "131.211.84.1";
- description = "
- The default gateway. It can be left empty if it is auto-detected through DHCP.
- ";
- };
-
- nameservers = mkOption {
- default = [];
- example = ["130.161.158.4" "130.161.33.17"];
- description = "
- The list of nameservers. It can be left empty if it is auto-detected through DHCP.
- ";
- };
-
- domain = mkOption {
- default = "";
- example = "home";
- description = "
- The domain. It can be left empty if it is auto-detected through DHCP.
- ";
- };
-
- localCommands = mkOption {
- default = "";
- example = "text=anything; echo You can put $text here.";
- description = "
- Shell commands to be executed at the end of the
- network-interfaces Upstart job. Note that if
- you are using DHCP to obtain the network configuration,
- interfaces may not be fully configured yet.
- ";
- };
-
- };
-
-
- require = import ../modules/module-list.nix;
-}