diff --git a/upstart-jobs/manual.nix b/upstart-jobs/manual.nix index c515e95d3dd..882cf8f8251 100644 --- a/upstart-jobs/manual.nix +++ b/upstart-jobs/manual.nix @@ -1,87 +1,106 @@ -{pkgs, config, ...}: +{pkgs, config, ...}: # Show the NixOS manual on tty7 # Originally used only by installation CD let inherit (pkgs.lib) mkOption; + options = { services = { + showManual = { + enable = mkOption { - default = false; - description = " - Whether to show the NixOS manual on the tty7 - "; - }; - ttyNumber = mkOption { - default = "7"; - description = " - TTY number name to show the manual on - "; - }; - browserPackage = mkOption { - default = pkgs.w3m; - description = " - Package containing the browser to be used - "; - }; - browserCommand = mkOption { - default = "bin/w3m"; - description = " - Command (command path is relative to browserPackage) to run the browser - "; - }; - manualFile = mkOption { - default = null; - description = " - NixOS manual HTML file - "; - }; - }; - }; + default = false; + description = " + Whether to show the NixOS manual on the tty7 + "; + }; + + ttyNumber = mkOption { + default = "7"; + description = " + TTY number name to show the manual on + "; + }; + + browserPackage = mkOption { + default = pkgs.w3m; + description = " + Package containing the browser to be used + "; + }; + + browserCommand = mkOption { + default = "bin/w3m"; + description = " + Command (command path is relative to browserPackage) to run the browser + "; + }; + + manualFile = mkOption { + default = null; + description = " + NixOS manual HTML file + "; + }; + + }; # showManual + + }; # services }; - -inherit(pkgs.lib) optional; - -inherit (config.services.showManual) enable ttyNumber browserPackage browserCommand - manualFile; - -realManualFile = if manualFile == null then - (import ../doc/manual {nixpkgs = pkgs;})+"/manual.html" -else manualFile; - in -{ +let + cfg = config.services.showManual; + inherit (cfg) enable ttyNumber browserPackage browserCommand manualFile; + + realManualFile = + if manualFile == null then + (import ../doc/manual {nixpkgs = pkgs;})+"/manual.html" + else + manualFile; + + inherit (pkgs.lib) mkIf mkThenElse; +in + +mkIf enable { require = [ options ]; boot = { - extraTTYs = optional enable ttyNumber; + extraTTYs = [ ttyNumber ]; }; - + services = { - extraJobs = optional enable { + + extraJobs = [{ name = "showManual"; job = '' description "NixOS manual" - - start on udev - stop on shutdown - respawn ${browserPackage}/${browserCommand} ${realManualFile} < /dev/tty${toString ttyNumber} > /dev/tty${toString ttyNumber} 2>&1 + + start on udev + stop on shutdown + respawn ${browserPackage}/${browserCommand} ${realManualFile} < /dev/tty${toString ttyNumber} > /dev/tty${toString ttyNumber} 2>&1 ''; - }; + }]; + ttyBackgrounds = { - specificThemes = optional enable { + specificThemes = [{ tty = ttyNumber; - theme = pkgs.themes "green"; + theme = pkgs.themes "green"; + }]; + }; + + mingetty = { + helpLine = mkThenElse { + thenPart = "\nPress for NixOS manual."; + elsePart = ""; }; }; - mingetty = { - helpLine = if enable then "\nPress for NixOS manual." else ""; - }; + }; }