diff options
author | Emery Hemingway <emery@vfemail.net> | 2014-07-25 14:05:57 -0400 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-07-30 16:19:26 +0200 |
commit | 63d259df32ab969c46aa839a77e8d86cb8f734cf (patch) | |
tree | 37823fa540fdc124d84806bcf2f57f8d236efdef /nixos/modules/system | |
parent | 1cc6dc198466eb451beb2daa6314a345f1853dab (diff) | |
download | nixlib-63d259df32ab969c46aa839a77e8d86cb8f734cf.tar nixlib-63d259df32ab969c46aa839a77e8d86cb8f734cf.tar.gz nixlib-63d259df32ab969c46aa839a77e8d86cb8f734cf.tar.bz2 nixlib-63d259df32ab969c46aa839a77e8d86cb8f734cf.tar.lz nixlib-63d259df32ab969c46aa839a77e8d86cb8f734cf.tar.xz nixlib-63d259df32ab969c46aa839a77e8d86cb8f734cf.tar.zst nixlib-63d259df32ab969c46aa839a77e8d86cb8f734cf.zip |
nixos: tmp on tmpfs option
/tmp cleaning is done by systemd rather than stage-2-init enableEmergencyMode moved from systemd to seperate module new option to mount tmp on tmpfs new option to enable additional units shipped with systemd
Diffstat (limited to 'nixos/modules/system')
-rw-r--r-- | nixos/modules/system/boot/emergency-mode.nix | 37 | ||||
-rw-r--r-- | nixos/modules/system/boot/stage-2-init.sh | 6 | ||||
-rw-r--r-- | nixos/modules/system/boot/stage-2.nix | 14 | ||||
-rw-r--r-- | nixos/modules/system/boot/systemd.nix | 27 | ||||
-rw-r--r-- | nixos/modules/system/boot/tmp.nix | 39 |
5 files changed, 88 insertions, 35 deletions
diff --git a/nixos/modules/system/boot/emergency-mode.nix b/nixos/modules/system/boot/emergency-mode.nix new file mode 100644 index 000000000000..9cdab8416192 --- /dev/null +++ b/nixos/modules/system/boot/emergency-mode.nix @@ -0,0 +1,37 @@ +{ config, lib, ... }: + +with lib; + +{ + + ###### interface + + options = { + + systemd.enableEmergencyMode = mkOption { + default = true; + type = types.bool; + description = '' + Whether to enable emergency mode, which is an + <command>sulogin</command> shell started on the console if + mounting a filesystem fails. Since some machines (like EC2 + instances) have no console of any kind, emergency mode doesn't + make sense, and it's better to continue with the boot insofar + as possible. + ''; + }; + + }; + + ###### implementation + + config = { + + systemd.additionalUpstreamSystemUnits = optionals + config.systemd.enableEmergencyMode [ + "emergency.target" "emergency.service" + ]; + + }; + +} \ No newline at end of file diff --git a/nixos/modules/system/boot/stage-2-init.sh b/nixos/modules/system/boot/stage-2-init.sh index 66b8243fbd20..bfc3c9b5da39 100644 --- a/nixos/modules/system/boot/stage-2-init.sh +++ b/nixos/modules/system/boot/stage-2-init.sh @@ -98,12 +98,6 @@ mkdir -m 0755 -p /etc/nixos rm -rf /var/run /var/lock rm -f /etc/{group,passwd,shadow}.lock -if test -n "@cleanTmpDir@"; then - echo -n "cleaning \`/tmp'..." - find /tmp -maxdepth 1 -mindepth 1 -print0 | xargs -0r rm -rf --one-file-system - echo " done" -fi - # Also get rid of temporary GC roots. rm -rf /nix/var/nix/gcroots/tmp /nix/var/nix/temproots diff --git a/nixos/modules/system/boot/stage-2.nix b/nixos/modules/system/boot/stage-2.nix index f53c3b8b8e70..6155bb37cc52 100644 --- a/nixos/modules/system/boot/stage-2.nix +++ b/nixos/modules/system/boot/stage-2.nix @@ -17,7 +17,7 @@ let src = ./stage-2-init.sh; shellDebug = "${pkgs.bashInteractive}/bin/bash"; isExecutable = true; - inherit (config.boot) devShmSize runSize cleanTmpDir; + inherit (config.boot) devShmSize runSize; inherit (config.nix) readOnlyStore; inherit (config.networking) useHostResolvConf; ttyGid = config.ids.gids.tty; @@ -26,8 +26,7 @@ let pkgs.utillinux pkgs.sysvtools pkgs.openresolv - ] ++ (optional config.boot.cleanTmpDir pkgs.findutils) - ++ optional config.nix.readOnlyStore readonlyMountpoint; + ] ++ optional config.nix.readOnlyStore readonlyMountpoint; postBootCommands = pkgs.writeText "local-cmds" '' ${config.boot.postBootCommands} @@ -81,15 +80,6 @@ in ''; }; - # FIXME: should replace this with something that uses systemd-tmpfiles. - cleanTmpDir = mkOption { - type = types.bool; - default = false; - description = '' - Whether to delete all files in <filename>/tmp</filename> during boot. - ''; - }; - }; }; diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix index 777c1ea74d88..455c40693b00 100644 --- a/nixos/modules/system/boot/systemd.nix +++ b/nixos/modules/system/boot/systemd.nix @@ -162,10 +162,7 @@ let "systemd-sysctl.service" ] - ++ optionals cfg.enableEmergencyMode [ - "emergency.target" - "emergency.service" - ]; + ++ cfg.additionalUpstreamSystemUnits; upstreamSystemWants = [ #"basic.target.wants" @@ -637,19 +634,6 @@ in ''; }; - systemd.enableEmergencyMode = mkOption { - default = true; - type = types.bool; - description = '' - Whether to enable emergency mode, which is an - <command>sulogin</command> shell started on the console if - mounting a filesystem fails. Since some machines (like EC2 - instances) have no console of any kind, emergency mode doesn't - make sense, and it's better to continue with the boot insofar - as possible. - ''; - }; - systemd.tmpfiles.rules = mkOption { type = types.listOf types.str; default = []; @@ -692,6 +676,15 @@ in description = "Definition of systemd per-user socket units."; }; + systemd.additionalUpstreamSystemUnits = mkOption { + default = [ ]; + type = types.listOf types.str; + example = [ "debug-shell.service" "systemd-quotacheck.service" ]; + description = '' + Additional units shipped with systemd that shall be enabled. + ''; + }; + }; diff --git a/nixos/modules/system/boot/tmp.nix b/nixos/modules/system/boot/tmp.nix new file mode 100644 index 000000000000..5bf5e2eb2ec5 --- /dev/null +++ b/nixos/modules/system/boot/tmp.nix @@ -0,0 +1,39 @@ +{ config, lib, ... }: + +with lib; + +{ + + ###### interface + + options = { + + boot.cleanTmpDir = mkOption { + type = types.bool; + default = false; + description = '' + Whether to delete all files in <filename>/tmp</filename> during boot. + ''; + }; + + boot.tmpOnTmpfs = mkOption { + type = types.bool; + default = false; + description = '' + Whether to mount a tmpfs on <filename>/tmp</filename> during boot. + ''; + }; + + }; + + ###### implementation + + config = { + + systemd.additionalUpstreamSystemUnits = optional config.boot.tmpOnTmpfs "tmp.mount"; + + systemd.tmpfiles.rules = optional config.boot.cleanTmpDir "D! /tmp 1777 root root"; + + }; + +} \ No newline at end of file |