# This module generates nixos-install, nixos-rebuild, # nixos-generate-config, etc. { config, pkgs, modulesPath, ... }: let cfg = config.installer; makeProg = args: pkgs.substituteAll (args // { dir = "bin"; isExecutable = true; }); nixos-build-vms = makeProg { name = "nixos-build-vms"; src = ./nixos-build-vms/nixos-build-vms.sh; }; nixos-install = makeProg { name = "nixos-install"; src = ./nixos-install.sh; inherit (pkgs) perl pathsFromGraph; nix = config.environment.nix; nixClosure = pkgs.runCommand "closure" { exportReferencesGraph = ["refs" config.environment.nix]; } "cp refs $out"; }; nixos-rebuild = makeProg { name = "nixos-rebuild"; src = ./nixos-rebuild.sh; }; nixos-generate-config = makeProg { name = "nixos-generate-config"; src = ./nixos-generate-config.pl; perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl"; inherit (pkgs) dmidecode; }; nixos-option = makeProg { name = "nixos-option"; src = ./nixos-option.sh; }; nixos-version = makeProg { name = "nixos-version"; src = ./nixos-version.sh; inherit (config.system) nixosVersion nixosCodeName; }; nixos-gui = pkgs.xulrunnerWrapper { launcher = "nixos-gui"; application = pkgs.stdenv.mkDerivation { name = "nixos-gui"; buildCommand = '' cp -r "$gui" "$out" # Do not force the copy if the file exists in the sources (this # happens for developpers) test -e "$out/chrome/content/jquery-1.5.2.js" || cp -f "$jquery" "$out/chrome/content/jquery-1.5.2.js" ''; gui = pkgs.lib.cleanSource "${modulesPath}/../gui"; jquery = pkgs.fetchurl { url = http://code.jquery.com/jquery-1.5.2.min.js; sha256 = "8f0a19ee8c606b35a10904951e0a27da1896eafe33c6e88cb7bcbe455f05a24a"; }; }; }; in { options = { installer.enableGraphicalTools = pkgs.lib.mkOption { default = false; type = with pkgs.lib.types; bool; example = true; description = '' Enable the installation of graphical tools. ''; }; }; config = { environment.systemPackages = [ nixos-build-vms nixos-install nixos-rebuild nixos-generate-config nixos-option nixos-version ] ++ pkgs.lib.optional cfg.enableGraphicalTools nixos-gui; system.build = { inherit nixos-install nixos-generate-config nixos-option; }; }; }