1# This module generates nixos-install, nixos-rebuild,
2# nixos-generate-config, etc.
3
4{ config, lib, pkgs, modulesPath, ... }:
5
6with lib;
7
8let
9 cfg = config.installer;
10
11 makeProg = args: pkgs.substituteAll (args // {
12 dir = "bin";
13 isExecutable = true;
14 });
15
16 nixos-build-vms = makeProg {
17 name = "nixos-build-vms";
18 src = ./nixos-build-vms/nixos-build-vms.sh;
19 };
20
21 nixos-install = makeProg {
22 name = "nixos-install";
23 src = ./nixos-install.sh;
24 nix = config.nix.package.out;
25 path = makeBinPath [ nixos-enter ];
26 };
27
28 nixos-rebuild =
29 let fallback = import ./nix-fallback-paths.nix; in
30 makeProg {
31 name = "nixos-rebuild";
32 src = ./nixos-rebuild.sh;
33 nix = config.nix.package.out;
34 nix_x86_64_linux = fallback.x86_64-linux;
35 nix_i686_linux = fallback.i686-linux;
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.nixos) release;
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.nixos) version codeName revision;
55 };
56
57 nixos-enter = makeProg {
58 name = "nixos-enter";
59 src = ./nixos-enter.sh;
60 };
61
62in
63
64{
65
66 config = {
67
68 environment.systemPackages =
69 [ nixos-build-vms
70 nixos-install
71 nixos-rebuild
72 nixos-generate-config
73 nixos-option
74 nixos-version
75 nixos-enter
76 ];
77
78 system.build = {
79 inherit nixos-install nixos-prepare-root nixos-generate-config nixos-option nixos-rebuild nixos-enter;
80 };
81
82 };
83
84}