1# This module generates nixos-install, nixos-rebuild,
2# nixos-generate-config, etc.
3
4{ config, pkgs, modulesPath, ... }:
5
6let
7 cfg = config.installer;
8
9 makeProg = args: pkgs.substituteAll (args // {
10 dir = "bin";
11 isExecutable = true;
12 });
13
14 nixos-build-vms = makeProg {
15 name = "nixos-build-vms";
16 src = ./nixos-build-vms/nixos-build-vms.sh;
17 };
18
19 nixos-prepare-root = makeProg {
20 name = "nixos-prepare-root";
21 src = ./nixos-prepare-root.sh;
22
23 nix = pkgs.nixUnstable;
24 inherit (pkgs) perl pathsFromGraph rsync utillinux coreutils;
25 };
26
27 nixos-install = makeProg {
28 name = "nixos-install";
29 src = ./nixos-install.sh;
30
31 inherit (pkgs) perl pathsFromGraph rsync;
32 nix = config.nix.package.out;
33 cacert = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
34 root_uid = config.ids.uids.root;
35 nixbld_gid = config.ids.gids.nixbld;
36 prepare_root = nixos-prepare-root;
37
38 nixClosure = pkgs.runCommand "closure"
39 { exportReferencesGraph = ["refs" config.nix.package.out]; }
40 "cp refs $out";
41 };
42
43 nixos-rebuild =
44 let fallback = import ./nix-fallback-paths.nix; in
45 makeProg {
46 name = "nixos-rebuild";
47 src = ./nixos-rebuild.sh;
48 nix = config.nix.package.out;
49 nix_x86_64_linux = fallback.x86_64-linux;
50 nix_i686_linux = fallback.i686-linux;
51 };
52
53 nixos-generate-config = makeProg {
54 name = "nixos-generate-config";
55 src = ./nixos-generate-config.pl;
56 path = [ pkgs.btrfs-progs ];
57 perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
58 inherit (config.system) nixosRelease;
59 };
60
61 nixos-option = makeProg {
62 name = "nixos-option";
63 src = ./nixos-option.sh;
64 };
65
66 nixos-version = makeProg {
67 name = "nixos-version";
68 src = ./nixos-version.sh;
69 inherit (config.system) nixosVersion nixosCodeName nixosRevision;
70 };
71
72in
73
74{
75
76 config = {
77
78 environment.systemPackages =
79 [ nixos-build-vms
80 nixos-prepare-root
81 nixos-install
82 nixos-rebuild
83 nixos-generate-config
84 nixos-option
85 nixos-version
86 ];
87
88 system.build = {
89 inherit nixos-install nixos-prepare-root nixos-generate-config nixos-option nixos-rebuild;
90 };
91
92 };
93
94}