1# This module generates nixos-install, nixos-rebuild,
2# nixos-generate-config, etc.
3
4{ config, lib, pkgs, ... }:
5
6with lib;
7
8let
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-install = makeProg {
20 name = "nixos-install";
21 src = ./nixos-install.sh;
22 nix = config.nix.package.out;
23 path = makeBinPath [ nixos-enter ];
24 };
25
26 nixos-rebuild =
27 let fallback = import ./nix-fallback-paths.nix; in
28 makeProg {
29 name = "nixos-rebuild";
30 src = ./nixos-rebuild.sh;
31 nix = config.nix.package.out;
32 nix_x86_64_linux = fallback.x86_64-linux;
33 nix_i686_linux = fallback.i686-linux;
34 };
35
36 nixos-generate-config = makeProg {
37 name = "nixos-generate-config";
38 src = ./nixos-generate-config.pl;
39 path = [ pkgs.btrfs-progs ];
40 perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
41 inherit (config.system.nixos) release;
42 };
43
44 nixos-option = makeProg {
45 name = "nixos-option";
46 src = ./nixos-option.sh;
47 };
48
49 nixos-version = makeProg {
50 name = "nixos-version";
51 src = ./nixos-version.sh;
52 inherit (config.system.nixos) version codeName revision;
53 };
54
55 nixos-enter = makeProg {
56 name = "nixos-enter";
57 src = ./nixos-enter.sh;
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 nixos-enter
74 ];
75
76 system.build = {
77 inherit nixos-install nixos-generate-config nixos-option nixos-rebuild nixos-enter;
78 };
79
80 };
81
82}