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