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 rsync;
25 nix = config.nix.package.out;
26 cacert = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
27 root_uid = config.ids.uids.root;
28 nixbld_gid = config.ids.gids.nixbld;
29
30 nixClosure = pkgs.runCommand "closure"
31 { exportReferencesGraph = ["refs" config.nix.package.out]; }
32 "cp refs $out";
33 };
34
35 nixos-rebuild = makeProg {
36 name = "nixos-rebuild";
37 src = ./nixos-rebuild.sh;
38 nix = config.nix.package.out;
39 };
40
41 nixos-generate-config = makeProg {
42 name = "nixos-generate-config";
43 src = ./nixos-generate-config.pl;
44 path = [ pkgs.btrfs-progs ];
45 perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
46 inherit (config.system) nixosRelease;
47 };
48
49 nixos-option = makeProg {
50 name = "nixos-option";
51 src = ./nixos-option.sh;
52 };
53
54 nixos-version = makeProg {
55 name = "nixos-version";
56 src = ./nixos-version.sh;
57 inherit (config.system) nixosVersion nixosCodeName nixosRevision;
58 };
59
60in
61
62{
63
64 config = {
65
66 environment.systemPackages =
67 [ nixos-build-vms
68 nixos-install
69 nixos-rebuild
70 nixos-generate-config
71 nixos-option
72 nixos-version
73 ];
74
75 system.build = {
76 inherit nixos-install nixos-generate-config nixos-option nixos-rebuild;
77 };
78
79 };
80
81}