base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / ni / nixos-install-tools / package.nix
blobcef57884ab6f43bc509fa443b9ec84aa9abf1695
2   buildEnv,
3   lib,
4   man,
5   nixos,
6   # TODO: replace indirect self-reference by proper self-reference
7   #       https://github.com/NixOS/nixpkgs/pull/119942
8   nixos-install-tools,
9   nixos-install,
10   nixos-enter,
11   runCommand,
12   nixosTests,
13   binlore,
15 let
16   inherit (nixos {}) config;
17   version = config.system.nixos.version;
19 (buildEnv {
20   name = "nixos-install-tools-${version}";
21   paths = lib.attrValues {
22     # See nixos/modules/installer/tools/tools.nix
23     inherit (config.system.build) nixos-generate-config;
24     inherit nixos-install nixos-enter;
25     inherit (config.system.build.manual) nixos-configuration-reference-manpage;
26   };
28   extraOutputsToInstall = ["man"];
30   meta = {
31     description = "The essential commands from the NixOS installer as a package";
32     longDescription = ''
33       With this package, you get the commands like nixos-generate-config and
34       nixos-install that you would otherwise only find on a NixOS system, such
35       as an installer image.
37       This way, you can install NixOS using a machine that only has Nix.
38     '';
39     license = lib.licenses.mit;
40     homepage = "https://nixos.org";
41     platforms = lib.platforms.linux;
42   };
44   passthru.tests = {
45     nixos-tests = lib.recurseIntoAttrs nixosTests.installer;
46     nixos-install-help = runCommand "test-nixos-install-help" {
47       nativeBuildInputs = [
48         man
49         nixos-install-tools
50       ];
51       meta.description = ''
52         Make sure that --help works. It's somewhat non-trivial because it
53         requires man.
54       '';
55     } ''
56       nixos-install --help | grep -F 'NixOS Reference Pages'
57       nixos-install --help | grep -F 'configuration.nix'
58       nixos-generate-config --help | grep -F 'NixOS Reference Pages'
59       nixos-generate-config --help | grep -F 'hardware-configuration.nix'
61       # FIXME: Tries to call unshare, which it must not do for --help
62       # nixos-enter --help | grep -F 'NixOS Reference Pages'
64       touch $out
65     '';
66   };
68   # no documented flags show signs of exec; skim of source suggests
69   # it's just --help execing man
70   passthru.binlore.out = binlore.synthesize nixos-install-tools ''
71     execer cannot bin/nixos-generate-config
72   '';
73 }).overrideAttrs {
74   inherit version;
75   pname = "nixos-install-tools";