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}