vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / system / boot / stage-2.nix
blob71ee9144990cba96c2c79bf9ee69da08f2b8c292
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   useHostResolvConf = config.networking.resolvconf.enable && config.networking.useHostResolvConf;
9   bootStage2 = pkgs.substituteAll {
10     src = ./stage-2-init.sh;
11     shellDebug = "${pkgs.bashInteractive}/bin/bash";
12     shell = "${pkgs.bash}/bin/bash";
13     inherit (config.boot) readOnlyNixStore systemdExecutable extraSystemdUnitPaths;
14     inherit (config.system.nixos) distroName;
15     isExecutable = true;
16     inherit useHostResolvConf;
17     inherit (config.system.build) earlyMountScript;
18     path = lib.makeBinPath ([
19       pkgs.coreutils
20       pkgs.util-linux
21     ] ++ lib.optional useHostResolvConf pkgs.openresolv);
22     postBootCommands = pkgs.writeText "local-cmds"
23       ''
24         ${config.boot.postBootCommands}
25         ${config.powerManagement.powerUpCommands}
26       '';
27   };
32   options = {
34     boot = {
36       postBootCommands = mkOption {
37         default = "";
38         example = "rm -f /var/log/messages";
39         type = types.lines;
40         description = ''
41           Shell commands to be executed just before systemd is started.
42         '';
43       };
45       readOnlyNixStore = mkOption {
46         type = types.bool;
47         default = true;
48         description = ''
49           If set, NixOS will enforce the immutability of the Nix store
50           by making {file}`/nix/store` a read-only bind
51           mount.  Nix will automatically make the store writable when
52           needed.
53         '';
54       };
56       systemdExecutable = mkOption {
57         default = "/run/current-system/systemd/lib/systemd/systemd";
58         type = types.str;
59         description = ''
60           The program to execute to start systemd.
61         '';
62       };
64       extraSystemdUnitPaths = mkOption {
65         default = [];
66         type = types.listOf types.str;
67         description = ''
68           Additional paths that get appended to the SYSTEMD_UNIT_PATH environment variable
69           that can contain mutable unit files.
70         '';
71       };
72     };
74   };
77   config = {
79     system.build.bootStage2 = bootStage2;
81   };