forked from mirrors/nixpkgs
c5bb43188d
Introduced by 0f3b89bbed
.
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 <aszlig@nix.build>
Cc: @oxij
74 lines
1.8 KiB
Nix
74 lines
1.8 KiB
Nix
# This module optionally starts a browser that shows the NixOS manual
|
|
# on one of the virtual consoles which is useful for the installation
|
|
# CD.
|
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
cfg = config.services.nixosManual;
|
|
cfgd = config.documentation;
|
|
in
|
|
|
|
{
|
|
|
|
options = {
|
|
|
|
# TODO(@oxij): rename this to `.enable` eventually.
|
|
services.nixosManual.showManual = mkOption {
|
|
type = types.bool;
|
|
default = false;
|
|
description = ''
|
|
Whether to show the NixOS manual on one of the virtual
|
|
consoles.
|
|
'';
|
|
};
|
|
|
|
services.nixosManual.ttyNumber = mkOption {
|
|
type = types.int;
|
|
default = 8;
|
|
description = ''
|
|
Virtual console on which to show the manual.
|
|
'';
|
|
};
|
|
|
|
services.nixosManual.browser = mkOption {
|
|
type = types.path;
|
|
default = "${pkgs.w3m-nographics}/bin/w3m";
|
|
description = ''
|
|
Browser used to show the manual.
|
|
'';
|
|
};
|
|
|
|
};
|
|
|
|
|
|
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";
|
|
};
|
|
};
|
|
})
|
|
];
|
|
|
|
}
|