From 2fc94b76fe49a609a4c8fb174a594feabd52d3ea Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 9 Nov 2007 18:49:45 +0000 Subject: [PATCH] * Eliminate all calls to config.get. svn path=/nixos/trunk/; revision=9619 --- configuration/rescue-cd.nix | 2 +- default.nix | 2 +- etc/default.nix | 41 ++++++++-------- etc/ldap.conf.nix | 6 +-- helpers/setuid/default.nix | 2 +- system/config.nix | 40 ---------------- system/fonts.nix | 4 +- system/system.nix | 60 ++++++++++++------------ system/users-groups.nix | 2 +- upstart-jobs/default.nix | 91 ++++++++++++++++++------------------ upstart-jobs/gw6c.nix | 12 ++--- upstart-jobs/httpd.nix | 61 +++++++++++------------- upstart-jobs/ifplugd.nix | 2 +- upstart-jobs/ircd-hybrid.nix | 23 +++++---- upstart-jobs/xfs.nix | 3 +- upstart-jobs/xserver.nix | 56 +++++++++++----------- 16 files changed, 178 insertions(+), 229 deletions(-) delete mode 100644 system/config.nix diff --git a/configuration/rescue-cd.nix b/configuration/rescue-cd.nix index 6f1a8a739248..51128301e974 100644 --- a/configuration/rescue-cd.nix +++ b/configuration/rescue-cd.nix @@ -144,7 +144,7 @@ rec { timeout 60 label linux kernel vmlinuz - append initrd=initrd ${toString (system.config.get ["boot" "kernelParams"])} + append initrd=initrd ${toString (system.config.boot.kernelParams)} "; diff --git a/default.nix b/default.nix index 9fb40052084e..09c9a1569d88 100644 --- a/default.nix +++ b/default.nix @@ -28,7 +28,7 @@ in nixFallback = system.nix; - manifests = system.config.get ["installer" "manifests"]; # exported here because nixos-rebuild uses it + manifests = system.config.installer.manifests; # exported here because nixos-rebuild uses it upstartJobsCombined = system.upstartJobs; diff --git a/etc/default.nix b/etc/default.nix index d1946df6d91c..01b79872efed 100644 --- a/etc/default.nix +++ b/etc/default.nix @@ -3,8 +3,7 @@ let - optional = option: file: - if config.get option then [file] else []; + optional = pkgs.lib.optional; # !!! ugh, these files shouldn't be created here. @@ -47,7 +46,7 @@ import ../helpers/make-etc.nix { { # Hostname-to-IP mappings. source = pkgs.substituteAll{ src = ./hosts; - extraHosts = config.get ["networking" "extraHosts"]; + extraHosts = config.networking.extraHosts; }; target = "hosts"; } @@ -105,8 +104,8 @@ import ../helpers/make-etc.nix { src = ./profile.sh; inherit systemPath wrapperDir; inherit (pkgs) systemKernel glibc; - timeZone = config.get ["time" "timeZone"]; - defaultLocale = config.get ["i18n" "defaultLocale"]; + timeZone = config.time.timeZone; + defaultLocale = config.i18n.defaultLocale; }; target = "profile"; } @@ -120,10 +119,10 @@ import ../helpers/make-etc.nix { source = pkgs.writeText "nix.conf" " # WARNING: this file is generated. build-users-group = nixbld - build-max-jobs = ${toString (config.get ["nix" "maxJobs"])} - build-use-chroot = ${if config.get ["nix" "useChroot"] then "true" else "false"} + build-max-jobs = ${toString (config.nix.maxJobs)} + build-use-chroot = ${if config.nix.useChroot then "true" else "false"} build-chroot-dirs = /dev /proc /bin /etc - ${config.get ["nix" "extraOptions"]} + ${config.nix.extraOptions} "; target = "nix.conf"; # will be symlinked from /nix/etc/nix/nix.conf in activate-configuration.sh. } @@ -131,19 +130,19 @@ import ../helpers/make-etc.nix { ] # Configuration for ssmtp. - ++ (optional ["networking" "defaultMailServer" "directDelivery"] { + ++ optional config.networking.defaultMailServer.directDelivery { source = pkgs.writeText "ssmtp.conf" " -mailhub=${config.get ["networking" "defaultMailServer" "hostName"]} -UseTLS=${if config.get ["networking" "defaultMailServer" "useTLS"] then "YES" else "NO"} -UseSTARTTLS=${if config.get ["networking" "defaultMailServer" "useSTARTTLS"] then "YES" else "NO"} +mailhub=${config.networking.defaultMailServer.hostName} +UseTLS=${if config.networking.defaultMailServer.useTLS then "YES" else "NO"} +UseSTARTTLS=${if config.networking.defaultMailServer.useSTARTTLS then "YES" else "NO"} #Debug=YES "; target = "ssmtp/ssmtp.conf"; - }) + } # Configuration file for fontconfig used to locate # (X11) client-rendered fonts. - ++ (optional ["fonts" "enableFontConfig"] { + ++ optional config.fonts.enableFontConfig { source = pkgs.runCommand "fonts.conf" { fontDirectories = import ../system/fonts.nix {inherit pkgs config;}; @@ -156,21 +155,21 @@ UseSTARTTLS=${if config.get ["networking" "defaultMailServer" "useSTARTTLS"] the > $out "; target = "fonts/fonts.conf"; - }) + } # LDAP configuration. - ++ (optional ["users" "ldap" "enable"] { + ++ optional config.users.ldap.enable { source = import ./ldap.conf.nix { inherit (pkgs) writeText; inherit config; }; target = "ldap.conf"; - }) + } # "sudo" configuration. - ++ (optional ["security" "sudo" "enable"] { + ++ optional config.security.sudo.enable { source = pkgs.runCommand "sudoers" - { src = pkgs.writeText "sudoers-in" (config.get ["security" "sudo" "configFile"]); + { src = pkgs.writeText "sudoers-in" (config.security.sudo.configFile); } # Make sure that the sudoers file is syntactically valid. # (currently disabled - NIXOS-66) @@ -178,12 +177,12 @@ UseSTARTTLS=${if config.get ["networking" "defaultMailServer" "useSTARTTLS"] the "cp $src $out"; target = "sudoers"; mode = "0440"; - }) + } # A bunch of PAM configuration files for various programs. ++ (map (program: - let isLDAPEnabled = config.get ["users" "ldap" "enable"]; in + let isLDAPEnabled = config.users.ldap.enable; in { source = pkgs.substituteAll { src = ./pam.d + ("/" + program); inherit (pkgs) pam_unix2 pam_console; diff --git a/etc/ldap.conf.nix b/etc/ldap.conf.nix index 5a3b227e2d59..b4113b80ec05 100644 --- a/etc/ldap.conf.nix +++ b/etc/ldap.conf.nix @@ -5,11 +5,11 @@ writeText "ldap.conf" " -uri ${config.get ["users" "ldap" "server"]} -base ${config.get ["users" "ldap" "base"]} +uri ${config.users.ldap.server} +base ${config.users.ldap.base} ${ -if config.get ["users" "ldap" "useTLS"] then " +if config.users.ldap.useTLS then " ssl start_tls tls_checkpeer no " else "" diff --git a/helpers/setuid/default.nix b/helpers/setuid/default.nix index 412b5ed22089..559ecca162f2 100644 --- a/helpers/setuid/default.nix +++ b/helpers/setuid/default.nix @@ -5,4 +5,4 @@ stdenv.mkDerivation { builder = ./builder.sh; setuidWrapper = ./setuid-wrapper.c; inherit wrapperDir; -} \ No newline at end of file +} diff --git a/system/config.nix b/system/config.nix deleted file mode 100644 index e058959dfc50..000000000000 --- a/system/config.nix +++ /dev/null @@ -1,40 +0,0 @@ -# Given a configuration, this function returns an object with a `get' -# method for retrieving the values of options, falling back to the -# defaults declared in options.nix if no value is given for an -# option. - -pkgs: config: - -let - - lib = pkgs.library; - - # The option declarations, i.e., option names with defaults and - # documentation. - declarations = import ./options.nix {inherit pkgs; inherit (lib) mkOption;}; - - configFilled = lib.addDefaultOptionValues declarations config; - - # Get the option named `name' from the user configuration, using - # its default value if it's not defined. - get = name: - /* - let - decl = - lib.findSingle (decl: lib.eqLists decl.name name) - (abort ("Undeclared option `" + printName name + "'.")) - (abort ("Multiple declarations for option `" + printName name + "'.")) - declarations; - default = - if !decl ? default - then abort ("Option `" + printName name + "' has no default.") - else decl.default; - in lib.getAttr name default config; - */ - let - default = abort ("Undeclared option `" + printName name + "'."); - in lib.getAttr name default configFilled; - - printName = name: lib.concatStrings (lib.intersperse "." name); - -in configFilled // {inherit get;} diff --git a/system/fonts.nix b/system/fonts.nix index 75906d3e8c7b..f63735c698d8 100644 --- a/system/fonts.nix +++ b/system/fonts.nix @@ -20,6 +20,6 @@ pkgs.xorg.fontcursormisc ] -++ pkgs.lib.optional (config.get ["fonts" "enableGhostscriptFonts"]) "${pkgs.ghostscript}/share/ghostscript/fonts" +++ pkgs.lib.optional (config.fonts.enableGhostscriptFonts) "${pkgs.ghostscript}/share/ghostscript/fonts" -++ ((config.get ["fonts" "extraFonts"]) pkgs) +++ ((config.fonts.extraFonts) pkgs) diff --git a/system/system.nix b/system/system.nix index 63decdf97dd1..4ae2f0914561 100644 --- a/system/system.nix +++ b/system/system.nix @@ -7,8 +7,10 @@ rec { # Make a configuration object from which we can retrieve option # values. - config = import ./config.nix pkgs configuration; - + config = pkgs.lib.addDefaultOptionValues optionDeclarations configuration; + + optionDeclarations = import ./options.nix {inherit pkgs; inherit (pkgs.lib) mkOption;}; + pkgs = import ../pkgs/top-level/all-packages.nix {system = platform;}; @@ -27,7 +29,7 @@ rec { allPackages = import ../pkgs/top-level/all-packages.nix; }; - manifests = config.get ["installer" "manifests"]; # exported here because nixos-rebuild uses it + manifests = config.installer.manifests; # exported here because nixos-rebuild uses it nix = pkgs.nixUnstable; # we need the exportReferencesGraph feature @@ -53,8 +55,8 @@ rec { inherit (pkgsStatic) utillinux; inherit (pkgsDiet) udev; e2fsprogs = pkgs.e2fsprogsDiet; - devicemapper = if config.get ["boot" "initrd" "lvm"] then pkgs.devicemapperStatic else null; - lvm2 = if config.get ["boot" "initrd" "lvm"] then pkgs.lvm2Static else null; + devicemapper = if config.boot.initrd.lvm then pkgs.devicemapperStatic else null; + lvm2 = if config.boot.initrd.lvm then pkgs.lvm2Static else null; allowedReferences = []; # prevent accidents like glibc being included in the initrd } " @@ -76,12 +78,12 @@ rec { inherit (pkgs) substituteAll; inherit (pkgsDiet) module_init_tools; inherit extraUtils; - autoDetectRootDevice = config.get ["boot" "autoDetectRootDevice"]; + autoDetectRootDevice = config.boot.autoDetectRootDevice; fileSystems = pkgs.lib.filter (fs: fs.mountPoint == "/" || (fs ? neededForBoot && fs.neededForBoot)) - (config.get ["fileSystems"]); - rootLabel = config.get ["boot" "rootLabel"]; + (config.fileSystems); + rootLabel = config.boot.rootLabel; inherit stage2Init; modulesDir = modulesClosure; modules = rootModules; @@ -98,7 +100,7 @@ rec { { object = bootStage1; symlink = "/init"; } - ] ++ (if config.get ["boot" "initrd" "enableSplashScreen"] then [ + ] ++ (if config.boot.initrd.enableSplashScreen then [ { object = pkgs.runCommand "splashutils" {} " ensureDir $out/bin cp ${pkgs.splashutils}/bin/splash_helper $out/bin @@ -108,7 +110,7 @@ rec { } { object = import ../helpers/unpack-theme.nix { inherit (pkgs) stdenv; - theme = config.get ["services" "ttyBackgrounds" "defaultTheme"]; + theme = config.services.ttyBackgrounds.defaultTheme; }; symlink = "/etc/splash"; } @@ -120,7 +122,7 @@ rec { nixosInstall = import ../installer/nixos-install.nix { inherit (pkgs) perl runCommand substituteAll; inherit nix; - nixpkgsURL = config.get ["installer" "nixpkgsURL"]; + nixpkgsURL = config.installer.nixpkgsURL; }; nixosRebuild = import ../installer/nixos-rebuild.nix { @@ -134,7 +136,7 @@ rec { # NSS modules. Hacky! nssModules = - if config.get ["users" "ldap" "enable"] then [pkgs.nss_ldap] else []; + if config.users.ldap.enable then [pkgs.nss_ldap] else []; nssModulesPath = pkgs.lib.concatStrings (pkgs.lib.intersperse ":" (map (mod: mod + "/lib") nssModules)); @@ -228,11 +230,11 @@ rec { nixosCheckout setuidWrapper ] - ++ pkgs.lib.optional (config.get ["security" "sudo" "enable"]) pkgs.sudo - ++ pkgs.lib.optional (config.get ["networking" "defaultMailServer" "directDelivery"]) pkgs.ssmtp + ++ pkgs.lib.optional (config.security.sudo.enable) pkgs.sudo + ++ pkgs.lib.optional (config.networking.defaultMailServer.directDelivery) pkgs.ssmtp ++ pkgs.lib.concatLists (map (job: job.extraPath) upstartJobs.jobs) - ++ (config.get ["environment" "extraPackages"]) pkgs - ++ pkgs.lib.optional (config.get ["fonts" "enableFontDir"]) fontDir; + ++ (config.environment.extraPackages) pkgs + ++ pkgs.lib.optional (config.fonts.enableFontDir) fontDir; # We don't want to put all of `startPath' and `path' in $PATH, since @@ -261,12 +263,12 @@ rec { isExecutable = true; inherit etc wrapperDir systemPath modprobe defaultShell kernel; - readOnlyRoot = config.get ["boot" "readOnlyRoot"]; - hostName = config.get ["networking" "hostName"]; + readOnlyRoot = config.boot.readOnlyRoot; + hostName = config.networking.hostName; setuidPrograms = - config.get ["security" "setuidPrograms"] ++ - config.get ["security" "extraSetuidPrograms"] ++ - pkgs.lib.optional (config.get ["security" "sudo" "enable"]) "sudo"; + config.security.setuidPrograms ++ + config.security.extraSetuidPrograms ++ + pkgs.lib.optional (config.security.sudo.enable) "sudo"; inherit (usersGroups) createUsersGroups usersList groupsList; @@ -286,7 +288,7 @@ rec { inherit (pkgs) substituteAll writeText coreutils utillinux udev upstart; inherit kernel activateConfiguration; - readOnlyRoot = config.get ["boot" "readOnlyRoot"]; + readOnlyRoot = config.boot.readOnlyRoot; upstartPath = [ pkgs.coreutils pkgs.findutils @@ -294,7 +296,7 @@ rec { pkgs.gnused pkgs.upstart ]; - bootLocal = config.get ["boot" "localCommands"]; + bootLocal = config.boot.localCommands; }; @@ -305,8 +307,8 @@ rec { isExecutable = true; inherit (pkgs) bash; path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep]; - copyKernels = config.get ["boot" "copyKernels"]; - extraGrubEntries = config.get ["boot" "extraGrubEntries"]; + copyKernels = config.boot.copyKernels; + extraGrubEntries = config.boot.extraGrubEntries; }; @@ -320,10 +322,10 @@ rec { builder = ./system.sh; switchToConfiguration = ./switch-to-configuration.sh; inherit (pkgs) grub coreutils gnused gnugrep diffutils findutils upstart; - grubDevice = config.get ["boot" "grubDevice"]; + grubDevice = config.boot.grubDevice; kernelParams = - (config.get ["boot" "kernelParams"]) ++ - (config.get ["boot" "extraKernelParams"]); + (config.boot.kernelParams) ++ + (config.boot.extraKernelParams); inherit bootStage2; inherit activateConfiguration; inherit grubMenuBuilder; @@ -340,7 +342,7 @@ rec { pkgs.diffutils pkgs.upstart # for initctl ]; - configurationName = config.get ["boot" "configurationName"]; + configurationName = config.boot.configurationName; }) (pkgs.getConfig ["checkConfigurationOptions"] false) config.declarations configuration ; } diff --git a/system/users-groups.nix b/system/users-groups.nix index 1a77d302c5a3..ebbc308c4f02 100644 --- a/system/users-groups.nix +++ b/system/users-groups.nix @@ -82,4 +82,4 @@ rec { usersList = pkgs.writeText "users" (pkgs.lib.concatStrings (map (u: "${u.name}\n${u.description}\n${toString u.uid}\n${u.group}\n${toString u.extraGroups}\n${u.home}\n${u.shell}\n") systemUsers)); groupsList = pkgs.writeText "groups" (pkgs.lib.concatStrings (map (g: "${g.name}\n${toString g.gid}\n") systemGroups)); -} \ No newline at end of file +} diff --git a/upstart-jobs/default.nix b/upstart-jobs/default.nix index 7ac0e5d95039..06131fab7259 100644 --- a/upstart-jobs/default.nix +++ b/upstart-jobs/default.nix @@ -6,11 +6,10 @@ let inherit (pkgs) runCommand; }; - optional = option: service: - if config.get option then [(makeJob service)] else []; + optional = cond: service: pkgs.lib.optional cond (makeJob service); requiredTTYs = - (config.get ["services" "mingetty" "ttys"]) + (config.services.mingetty.ttys) ++ [10] /* !!! sync with syslog.conf */ ; in @@ -30,11 +29,11 @@ import ../upstart-jobs/gather.nix { inherit (pkgs) stdenv writeText substituteAll udev procps; inherit (pkgs.lib) cleanSource; firmwareDirs = - pkgs.lib.optional (config.get ["networking" "enableIntel2200BGFirmware"]) pkgs.ipw2200fw + pkgs.lib.optional (config.networking.enableIntel2200BGFirmware) pkgs.ipw2200fw ++ - (config.get ["services" "udev" "addFirmware"]); + (config.services.udev.addFirmware); extraUdevPkgs = - pkgs.lib.optional (config.get ["services" "hal" "enable"]) pkgs.hal; + pkgs.lib.optional (config.services.hal.enable) pkgs.hal; }) # Makes LVM logical volumes available. @@ -52,30 +51,30 @@ import ../upstart-jobs/gather.nix { # Hardware scan; loads modules for PCI devices. (import ../upstart-jobs/hardware-scan.nix { inherit modprobe; - doHardwareScan = config.get ["boot" "hardwareScan"]; - kernelModules = config.get ["boot" "kernelModules"]; + doHardwareScan = config.boot.hardwareScan; + kernelModules = config.boot.kernelModules; }) # Mount file systems. (import ../upstart-jobs/filesystems.nix { inherit (pkgs) utillinux e2fsprogs; - fileSystems = config.get ["fileSystems"]; + fileSystems = config.fileSystems; }) # Swapping. (import ../upstart-jobs/swap.nix { inherit (pkgs) utillinux library; - swapDevices = config.get ["swapDevices"]; + swapDevices = config.swapDevices; }) # Network interfaces. (import ../upstart-jobs/network-interfaces.nix { inherit modprobe; inherit (pkgs) nettools wirelesstools bash writeText; - nameservers = config.get ["networking" "nameservers"]; - defaultGateway = config.get ["networking" "defaultGateway"]; - interfaces = config.get ["networking" "interfaces"]; - localCommands = config.get ["networking" "localCommands"]; + nameservers = config.networking.nameservers; + defaultGateway = config.networking.defaultGateway; + interfaces = config.networking.interfaces; + localCommands = config.networking.localCommands; }) # Nix daemon - required for multi-user Nix. @@ -99,9 +98,9 @@ import ../upstart-jobs/gather.nix { (import ../upstart-jobs/kbd.nix { inherit (pkgs) glibc kbd gzip; ttyNumbers = requiredTTYs; - defaultLocale = config.get ["i18n" "defaultLocale"]; - consoleFont = config.get ["i18n" "consoleFont"]; - consoleKeyMap = config.get ["i18n" "consoleKeyMap"]; + defaultLocale = config.i18n.defaultLocale; + consoleFont = config.i18n.consoleFont; + consoleKeyMap = config.i18n.consoleKeyMap; }) # Handles the maintenance/stalled event (single-user shell). @@ -115,47 +114,47 @@ import ../upstart-jobs/gather.nix { ] # DHCP client. - ++ optional ["networking" "useDHCP"] + ++ optional config.networking.useDHCP (import ../upstart-jobs/dhclient.nix { inherit (pkgs) nettools dhcp lib; - interfaces = config.get ["networking" "interfaces"]; + interfaces = config.networking.interfaces; }) # ifplugd daemon for monitoring Ethernet cables. - ++ optional ["networking" "interfaceMonitor" "enable"] + ++ optional config.networking.interfaceMonitor.enable (import ../upstart-jobs/ifplugd.nix { inherit (pkgs) ifplugd writeScript bash; inherit config; }) # DHCP server. - ++ optional ["services" "dhcpd" "enable"] + ++ optional config.services.dhcpd.enable (import ../upstart-jobs/dhcpd.nix { inherit (pkgs) dhcp; - configFile = config.get ["services" "dhcpd" "configFile"]; - interfaces = config.get ["services" "dhcpd" "interfaces"]; + configFile = config.services.dhcpd.configFile; + interfaces = config.services.dhcpd.interfaces; }) # SSH daemon. - ++ optional ["services" "sshd" "enable"] + ++ optional config.services.sshd.enable (import ../upstart-jobs/sshd.nix { inherit (pkgs) writeText openssh glibc; inherit (pkgs.xorg) xauth; inherit nssModulesPath; - forwardX11 = config.get ["services" "sshd" "forwardX11"]; - allowSFTP = config.get ["services" "sshd" "allowSFTP"]; + forwardX11 = config.services.sshd.forwardX11; + allowSFTP = config.services.sshd.allowSFTP; }) # NTP daemon. - ++ optional ["services" "ntp" "enable"] + ++ optional config.services.ntp.enable (import ../upstart-jobs/ntpd.nix { inherit modprobe; inherit (pkgs) ntp glibc writeText; - servers = config.get ["services" "ntp" "servers"]; + servers = config.services.ntp.servers; }) # X server. - ++ optional ["services" "xserver" "enable"] + ++ optional config.services.xserver.enable (import ../upstart-jobs/xserver.nix { inherit config; inherit (pkgs) writeText lib xterm slim xorg mesa @@ -165,64 +164,64 @@ import ../upstart-jobs/gather.nix { libX11 = pkgs.xlibs.libX11; libXext = pkgs.xlibs.libXext; fontDirectories = import ../system/fonts.nix {inherit pkgs config;}; - isClone = config.get ["services" "xserver" "isClone"]; + isClone = config.services.xserver.isClone; }) # Apache httpd. - ++ optional ["services" "httpd" "enable"] + ++ optional config.services.httpd.enable (import ../upstart-jobs/httpd.nix { inherit config pkgs; inherit (pkgs) glibc; }) # Samba service. - ++ optional ["services" "samba" "enable"] + ++ optional config.services.samba.enable (import ../upstart-jobs/samba.nix { inherit pkgs; inherit (pkgs) glibc samba; }) # CUPS (printing) daemon. - ++ optional ["services" "printing" "enable"] + ++ optional config.services.printing.enable (import ../upstart-jobs/cupsd.nix { inherit (pkgs) writeText cups; }) # Gateway6 - ++ optional ["services" "gw6c" "enable"] + ++ optional config.services.gw6c.enable (import ../upstart-jobs/gw6c.nix { inherit config pkgs; }) # X Font Server - ++ optional ["services" "xfs" "enable"] + ++ optional config.services.xfs.enable (import ../upstart-jobs/xfs.nix { inherit config pkgs; }) - ++ optional ["services" "ircdHybrid" "enable"] + ++ optional config.services.ircdHybrid.enable (import ../upstart-jobs/ircd-hybrid.nix { inherit config pkgs; }) # ALSA sound support. - ++ optional ["sound" "enable"] + ++ optional config.sound.enable (import ../upstart-jobs/alsa.nix { inherit modprobe; inherit (pkgs) alsaUtils; }) # D-Bus system-wide daemon. - ++ optional ["services" "dbus" "enable"] + ++ optional config.services.dbus.enable (import ../upstart-jobs/dbus.nix { inherit (pkgs) stdenv dbus; dbusServices = - pkgs.lib.optional (config.get ["services" "hal" "enable"]) pkgs.hal; + pkgs.lib.optional (config.services.hal.enable) pkgs.hal; }) # HAL daemon. - ++ optional ["services" "hal" "enable"] + ++ optional config.services.hal.enable (import ../upstart-jobs/hal.nix { inherit (pkgs) stdenv hal; }) @@ -243,11 +242,11 @@ import ../upstart-jobs/gather.nix { inherit ttyNumber; loginProgram = "${pkgs.pam_login}/bin/login"; })) - (config.get ["services" "mingetty" "ttys"]) + (config.services.mingetty.ttys) ) # Transparent TTY backgrounds. - ++ optional ["services" "ttyBackgrounds" "enable"] + ++ optional config.services.ttyBackgrounds.enable (import ../upstart-jobs/tty-backgrounds.nix { inherit (pkgs) stdenv splashutils; @@ -256,8 +255,8 @@ import ../upstart-jobs/gather.nix { let specificThemes = - config.get ["services" "ttyBackgrounds" "defaultSpecificThemes"] - ++ config.get ["services" "ttyBackgrounds" "specificThemes"]; + config.services.ttyBackgrounds.defaultSpecificThemes + ++ config.services.ttyBackgrounds.specificThemes; overridenTTYs = map (x: x.tty) specificThemes; @@ -270,14 +269,14 @@ import ../upstart-jobs/gather.nix { in (map (ttyNumber: { tty = ttyNumber; - theme = config.get ["services" "ttyBackgrounds" "defaultTheme"]; + theme = config.services.ttyBackgrounds.defaultTheme; }) defaultTTYs) ++ specificThemes; }) # User-defined events. - ++ (map makeJob (config.get ["services" "extraJobs"])) + ++ (map makeJob (config.services.extraJobs)) # For the built-in logd job. ++ [(makeJob { jobDrv = pkgs.upstart; })]; diff --git a/upstart-jobs/gw6c.nix b/upstart-jobs/gw6c.nix index 65884770bfeb..416bcd91841d 100644 --- a/upstart-jobs/gw6c.nix +++ b/upstart-jobs/gw6c.nix @@ -1,16 +1,16 @@ {config, pkgs}: let - getCfg = option: config.get ["services" "gw6c" option]; + cfg = config.services.gw6c; procps = pkgs.procps; gw6cService = import ../services/gw6c { inherit (pkgs) stdenv gw6c coreutils procps upstart iputils gnused gnugrep; - username = getCfg "username"; - password = getCfg "password"; - server = getCfg "server"; - keepAlive = getCfg "keepAlive"; - everPing = getCfg "everPing"; + username = cfg.username; + password = cfg.password; + server = cfg.server; + keepAlive = cfg.keepAlive; + everPing = cfg.everPing; }; in { diff --git a/upstart-jobs/httpd.nix b/upstart-jobs/httpd.nix index 4829a3ebef29..fcc89740b5a3 100644 --- a/upstart-jobs/httpd.nix +++ b/upstart-jobs/httpd.nix @@ -2,34 +2,30 @@ let - getCfg = option: config.get ["services" "httpd" option]; - getCfgs = options: config.get (["services" "httpd"] ++ options); - getCfgSvn = option: config.get ["services" "httpd" "subservices" "subversion" option]; - getCfgsSvn = options: config.get (["services" "httpd" "subservices" "subversion"] ++ options); + cfg = config.services.httpd; + cfgSvn = cfg.subservices.subversion; - optional = conf: subService: - if conf then [subService] else []; + optional = pkgs.lib.optional; - hostName = getCfg "hostName"; - httpPort = getCfg "httpPort"; - httpsPort = getCfg "httpsPort"; - user = getCfg "user"; - group = getCfg "group"; - adminAddr = getCfg "adminAddr"; - logDir = getCfg "logDir"; - stateDir = getCfg "stateDir"; + hostName = cfg.hostName; + httpPort = cfg.httpPort; + httpsPort = cfg.httpsPort; + user = cfg.user; + group = cfg.group; + adminAddr = cfg.adminAddr; + logDir = cfg.logDir; + stateDir = cfg.stateDir; enableSSL = false; - noUserDir = getCfg "noUserDir"; - extraDirectories = getCfg "extraDirectories"; + noUserDir = cfg.noUserDir; + extraDirectories = cfg.extraDirectories; - startingDependency = if (config.get [ "services" "gw6c" "enable" ]) - then "gw6c" else "network-interfaces"; + startingDependency = if config.services.gw6c.enable then "gw6c" else "network-interfaces"; webServer = import ../../services/apache-httpd { inherit (pkgs) apacheHttpd coreutils; stdenv = pkgs.stdenvNewSetupScript; - php = if getCfg "mod_php" then pkgs.php else null; + php = if cfg.mod_php then pkgs.php else null; inherit hostName httpPort httpsPort user group adminAddr logDir stateDir @@ -38,8 +34,8 @@ let subServices = # The Subversion subservice. - (optional (getCfgSvn "enable") ( - let dataDir = getCfgSvn "dataDir"; in + (optional cfgSvn.enable ( + let dataDir = cfgSvn.dataDir; in import ../../services/subversion ({ reposDir = dataDir + "/repos"; dbDir = dataDir + "/db"; @@ -55,17 +51,17 @@ let else "http://" + hostName + ":" + (toString httpPort); - notificationSender = getCfgSvn "notificationSender"; - autoVersioning = getCfgSvn "autoVersioning"; - userCreationDomain = getCfgSvn "userCreationDomain"; + notificationSender = cfgSvn.notificationSender; + autoVersioning = cfgSvn.autoVersioning; + userCreationDomain = cfgSvn.userCreationDomain; inherit pkgs; } // - ( if getCfgsSvn ["organization" "name"] != null then + ( if cfgSvn.organization.name != null then { - orgName = getCfgsSvn ["organization" "name"]; - orgLogoFile = getCfgsSvn ["organization" "logo"]; - orgUrl = getCfgsSvn ["organization" "url"]; + orgName = cfgSvn.organization.name; + orgLogoFile = cfgSvn.organization.logo; + orgUrl = cfgSvn.organization.url; } else # use the default from the subversion service @@ -76,12 +72,9 @@ let ) ++ - (optional (getCfgs ["extraSubservices" "enable"]) - (map (service : service webServer pkgs) - (getCfgs ["extraSubservices" "services"]) - ) - ) - ; + (optional cfg.extraSubservices.enable + (map (service : service webServer pkgs) cfg.extraSubservices.services) + ); }; in diff --git a/upstart-jobs/ifplugd.nix b/upstart-jobs/ifplugd.nix index a1b755a7ad69..4536ee8b41e5 100644 --- a/upstart-jobs/ifplugd.nix +++ b/upstart-jobs/ifplugd.nix @@ -29,7 +29,7 @@ start on network-interfaces/started stop on network-interfaces/stop respawn ${ifplugd}/sbin/ifplugd --no-daemon --no-startup --no-shutdown \\ - ${if config.get ["networking" "interfaceMonitor" "beep"] then "" else "--no-beep"} \\ + ${if config.networking.interfaceMonitor.beep then "" else "--no-beep"} \\ --run ${plugScript}"; } diff --git a/upstart-jobs/ircd-hybrid.nix b/upstart-jobs/ircd-hybrid.nix index 5c172fb8a4e9..77639d950429 100644 --- a/upstart-jobs/ircd-hybrid.nix +++ b/upstart-jobs/ircd-hybrid.nix @@ -1,23 +1,22 @@ {config, pkgs}: let - getCfg = option: config.get ["services" "ircdHybrid" option]; + cfg = config.services.ircdHybrid; ircdService = import ../services/ircd-hybrid { stdenv = pkgs.stdenvNewSetupScript; inherit (pkgs) ircdHybrid coreutils su iproute gnugrep procps; - serverName = getCfg "serverName"; - sid = getCfg "sid"; - description = getCfg "description"; - rsaKey = getCfg "rsaKey"; - certificate = getCfg "certificate"; - adminEmail = getCfg "adminEmail"; - extraIPs = getCfg "extraIPs"; - extraPort = getCfg "extraPort"; - gw6cEnabled = config.get ["services" "gw6c" "enable"]; + serverName = cfg.serverName; + sid = cfg.sid; + description = cfg.description; + rsaKey = cfg.rsaKey; + certificate = cfg.certificate; + adminEmail = cfg.adminEmail; + extraIPs = cfg.extraIPs; + extraPort = cfg.extraPort; + gw6cEnabled = config.services.gw6c.enable; }; - startingDependency = if (config.get [ "services" "gw6c" "enable" ]) - then "gw6c" else "network-interfaces"; + startingDependency = if config.services.gw6c.enable then "gw6c" else "network-interfaces"; in { diff --git a/upstart-jobs/xfs.nix b/upstart-jobs/xfs.nix index 19f7f6d4db4d..59468c30f4d6 100644 --- a/upstart-jobs/xfs.nix +++ b/upstart-jobs/xfs.nix @@ -3,8 +3,7 @@ }: let configFile = ./xfs.conf; - startingDependency = if (config.get [ "services" "gw6c" "enable" ]) - then "gw6c" else "network-interfaces"; + startingDependency = if config.services.gw6c.enable then "gw6c" else "network-interfaces"; in rec { name = "xfs"; diff --git a/upstart-jobs/xserver.nix b/upstart-jobs/xserver.nix index aa82cb1e0a4b..88b13ffb4f8c 100644 --- a/upstart-jobs/xserver.nix +++ b/upstart-jobs/xserver.nix @@ -23,8 +23,7 @@ let - getCfg = option: config.get ["services" "xserver" option]; - getCfg2 = option: config.get (["services" "xserver"] ++ option); + cfg = config.services.xserver; optional = condition: x: if condition then [x] else []; @@ -34,11 +33,11 @@ let #berylemerald # Get a bunch of user settings. - videoDriver = getCfg "videoDriver"; - resolutions = map (res: "\"${toString res.x}x${toString res.y}\"") (getCfg "resolutions"); - sessionType = getCfg "sessionType"; - sessionStarter = getCfg "sessionStarter"; - renderingFlag = getCfg "renderingFlag"; + videoDriver = cfg.videoDriver; + resolutions = map (res: "\"${toString res.x}x${toString res.y}\"") (cfg.resolutions); + sessionType = cfg.sessionType; + sessionStarter = cfg.sessionStarter; + renderingFlag = cfg.renderingFlag; sessionCmd = @@ -49,7 +48,7 @@ let windowManager = - let wm = getCfg "windowManager"; in + let wm = cfg.windowManager; in if wm != "" then wm else if sessionType == "gnome" then "metacity" else if sessionType == "kde" then "none" /* started by startkde */ else @@ -68,18 +67,18 @@ let ++ optional (videoDriver == "sis") xorg.xf86videosis ++ optional (videoDriver == "i810") xorg.xf86videoi810 ++ optional (videoDriver == "intel") xorg.xf86videointel - ++ (optional (getCfg "isSynaptics") [(synaptics+"/"+xorg.xorgserver) /*xorg.xf86inputevdev*/]); + ++ (optional (cfg.isSynaptics) [(synaptics+"/"+xorg.xorgserver) /*xorg.xf86inputevdev*/]); configFile = stdenv.mkDerivation { name = "xserver.conf"; src = ./xserver.conf; inherit fontDirectories videoDriver resolutions isClone; - synapticsInputDevice = (if getCfg "isSynaptics" then " + synapticsInputDevice = (if cfg.isSynaptics then " Section \"InputDevice\" Identifier \"Touchpad[0]\" Driver \"synaptics\" - Option \"Device\" \"${getCfg "devSynaptics"}\" + Option \"Device\" \"${cfg.devSynaptics}\" Option \"Protocol\" \"PS/2\" Option \"LeftEdge\" \"1700\" Option \"RightEdge\" \"5300\" @@ -100,25 +99,25 @@ let Option \"TapButton3\" \"3\" EndSection " else ""); - xkbOptions = if (getCfg "xkbOptions") == "" then "" else - " Option \"XkbOptions\" \"${getCfg "xkbOptions"}\""; + xkbOptions = if (cfg.xkbOptions) == "" then "" else + " Option \"XkbOptions\" \"${cfg.xkbOptions}\""; - layout = getCfg "layout"; + layout = cfg.layout; - corePointer = if getCfg "isSynaptics" then "Touchpad[0]" else "Mouse[0]"; + corePointer = if cfg.isSynaptics then "Touchpad[0]" else "Mouse[0]"; internalAGPGART = - if (getCfg "useInternalAGPGART") == "yes" then + if (cfg.useInternalAGPGART) == "yes" then " Option \"UseInternalAGPGART\" \"yes\"" - else if (getCfg "useInternalAGPGART") == "no" then + else if (cfg.useInternalAGPGART) == "no" then " Option \"UseInternalAGPGART\" \"no\"" else " "; - extraDeviceConfig = getCfg "extraDeviceConfig"; - extraMonitorSettings = getCfg "extraMonitorSettings"; - extraModules = getCfg "extraModules"; - serverLayoutOptions = getCfg "serverLayoutOptions"; - defaultDepth = getCfg "defaultDepth"; + extraDeviceConfig = cfg.extraDeviceConfig; + extraMonitorSettings = cfg.extraMonitorSettings; + extraModules = cfg.extraModules; + serverLayoutOptions = cfg.serverLayoutOptions; + defaultDepth = cfg.defaultDepth; buildCommand = " buildCommand= # urgh, don't substitute this @@ -197,7 +196,7 @@ let fi - ${if getCfg "startSSHAgent" then " + ${if cfg.startSSHAgent then " ### Start the SSH agent. export SSH_ASKPASS=${x11_ssh_askpass}/libexec/x11-ssh-askpass eval $(${openssh}/bin/ssh-agent) @@ -299,7 +298,7 @@ let "-config ${configFile}" ":${toString display}" "vt${toString tty}" "-xkbdir" "${xkeyboard_config}/etc/X11/xkb" - ] ++ (if ! config.get ["services" "xserver" "tcpEnable"] + ] ++ (if ! config.services.xserver.tcpEnable then ["-nolisten tcp"] else []); @@ -315,17 +314,16 @@ login_cmd exec ${stdenv.bash}/bin/sh ${clientScript} # Unpack the SLiM theme, or use the default. slimThemesDir = let - theme = getCfg2 ["slim" "theme"]; unpackedTheme = stdenv.mkDerivation { name = "slim-theme"; buildCommand = " ensureDir $out cd $out - unpackFile ${theme} + unpackFile ${cfg.slim.theme} ln -s * default "; }; - in if theme == null then "${slim}/share/slim/themes" else unpackedTheme; + in if cfg.slim.theme == null then "${slim}/share/slim/themes" else unpackedTheme; in @@ -384,7 +382,7 @@ rec { rm -f /var/run/opengl-driver ${if videoDriver == "nvidia" then "ln -sf ${nvidiaDrivers} /var/run/opengl-driver" - else if getCfg "driSupport" + else if cfg.driSupport then "ln -sf ${mesa} /var/run/opengl-driver" else "" } @@ -401,7 +399,7 @@ rec { ${if videoDriver == "nvidia" then "env XORG_DRI_DRIVER_PATH=${nvidiaDrivers}/X11R6/lib/modules/drivers/" - else if getCfg "driSupport" + else if cfg.driSupport then "env XORG_DRI_DRIVER_PATH=${mesa}/lib/modules/dri" else "" }