1# This module generates nixos-install, nixos-rebuild,
2# nixos-generate-config, etc.
3
4{ config, pkgs, modulesPath, ... }:
5
6let
7
8 cfg = config.installer;
9
10 makeProg = args: pkgs.substituteAll (args // {
11 dir = "bin";
12 isExecutable = true;
13 });
14
15 nixos-build-vms = makeProg {
16 name = "nixos-build-vms";
17 src = ./nixos-build-vms/nixos-build-vms.sh;
18 };
19
20 nixos-install = makeProg {
21 name = "nixos-install";
22 src = ./nixos-install.sh;
23
24 inherit (pkgs) perl pathsFromGraph;
25 nix = config.nix.package;
26
27 nixClosure = pkgs.runCommand "closure"
28 { exportReferencesGraph = ["refs" config.nix.package]; }
29 "cp refs $out";
30 };
31
32 nixos-rebuild = makeProg {
33 name = "nixos-rebuild";
34 src = ./nixos-rebuild.sh;
35 nix = config.nix.package;
36 };
37
38 nixos-generate-config = makeProg {
39 name = "nixos-generate-config";
40 src = ./nixos-generate-config.pl;
41 path = [ pkgs.btrfs-progs ];
42 perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
43 inherit (config.system) nixosRelease;
44 };
45
46 nixos-option = makeProg {
47 name = "nixos-option";
48 src = ./nixos-option.sh;
49 };
50
51 nixos-version = makeProg {
52 name = "nixos-version";
53 src = ./nixos-version.sh;
54 inherit (config.system) nixosVersion nixosCodeName nixosRevision;
55 };
56
57in
58
59{
60
61 config = {
62
63 environment.systemPackages =
64 [ nixos-build-vms
65 nixos-install
66 nixos-rebuild
67 nixos-generate-config
68 nixos-option
69 nixos-version
70 ];
71
72 system.build = {
73 inherit nixos-install nixos-generate-config nixos-option nixos-rebuild;
74 };
75
76 };
77
78}