From c5bb43188d66c579e337e107f04b7c6e7d57dc41 Mon Sep 17 00:00:00 2001 From: aszlig Date: Tue, 25 Sep 2018 23:31:43 +0200 Subject: [PATCH] nixos: Fix eval error for documentation.nixos Introduced by 0f3b89bbedc1a33cc1fc3c142e235da2c64614c3. If services.nixosManual.showManual is enabled and documentation.nixos.enable is not, there is no config.system.build.manual available, so evaluation fails. For example this is the case for the installer tests. There is however an assertion which should catch exactly this, but it isn't thrown because the usage of config.system.build.manual is evaluated earlier than the assertions. So I split the assertion off into a separate mkIf to make sure it is shown appropriately and also fixed the installation-device profile to enable documentation.nixos. Signed-off-by: aszlig Cc: @oxij --- .../modules/profiles/installation-device.nix | 1 + nixos/modules/services/misc/nixos-manual.nix | 45 ++++++++++--------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/nixos/modules/profiles/installation-device.nix b/nixos/modules/profiles/installation-device.nix index 9c84d267a33..d51ed195580 100644 --- a/nixos/modules/profiles/installation-device.nix +++ b/nixos/modules/profiles/installation-device.nix @@ -25,6 +25,7 @@ with lib; documentation.enable = mkForce true; # Show the manual. + documentation.nixos.enable = mkForce true; services.nixosManual.showManual = true; # Let the user play Rogue on TTY 8 during the installation. diff --git a/nixos/modules/services/misc/nixos-manual.nix b/nixos/modules/services/misc/nixos-manual.nix index 7202269d342..df3e71c80de 100644 --- a/nixos/modules/services/misc/nixos-manual.nix +++ b/nixos/modules/services/misc/nixos-manual.nix @@ -44,29 +44,30 @@ in }; - config = mkIf cfg.showManual { - - assertions = [{ - assertion = cfgd.enable && cfgd.nixos.enable; - message = "Can't enable `service.nixosManual.showManual` without `documentation.nixos.enable`"; - }]; - - boot.extraTTYs = [ "tty${toString cfg.ttyNumber}" ]; - - systemd.services."nixos-manual" = { - description = "NixOS Manual"; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - ExecStart = "${cfg.browser} ${config.system.build.manual.manualHTMLIndex}"; - StandardInput = "tty"; - StandardOutput = "tty"; - TTYPath = "/dev/tty${toString cfg.ttyNumber}"; - TTYReset = true; - TTYVTDisallocate = true; - Restart = "always"; + config = mkMerge [ + (mkIf cfg.showManual { + assertions = singleton { + assertion = cfgd.enable && cfgd.nixos.enable; + message = "Can't enable `services.nixosManual.showManual` without `documentation.nixos.enable`"; }; - }; + }) + (mkIf (cfg.showManual && cfgd.enable && cfgd.nixos.enable) { + boot.extraTTYs = [ "tty${toString cfg.ttyNumber}" ]; - }; + systemd.services."nixos-manual" = { + description = "NixOS Manual"; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = "${cfg.browser} ${config.system.build.manual.manualHTMLIndex}"; + StandardInput = "tty"; + StandardOutput = "tty"; + TTYPath = "/dev/tty${toString cfg.ttyNumber}"; + TTYReset = true; + TTYVTDisallocate = true; + Restart = "always"; + }; + }; + }) + ]; }