diff options
Diffstat (limited to 'nixos/modules/installer/tools/tools.nix')
-rw-r--r-- | nixos/modules/installer/tools/tools.nix | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/nixos/modules/installer/tools/tools.nix b/nixos/modules/installer/tools/tools.nix new file mode 100644 index 00000000000..c761d74a890 --- /dev/null +++ b/nixos/modules/installer/tools/tools.nix @@ -0,0 +1,112 @@ +# This module generates nixos-install, nixos-rebuild, +# nixos-hardware-scan, etc. + +{ config, pkgs, modulesPath, ... }: + +let + ### implementation + cfg = config.installer; + + makeProg = args: pkgs.substituteAll (args // { + dir = "bin"; + isExecutable = true; + }); + + nixosBuildVMS = makeProg { + name = "nixos-build-vms"; + src = ./nixos-build-vms/nixos-build-vms.sh; + }; + + nixosInstall = 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"; + }; + + nixosRebuild = makeProg { + name = "nixos-rebuild"; + src = ./nixos-rebuild.sh; + }; + + /* + nixosGenSeccureKeys = makeProg { + name = "nixos-gen-seccure-keys"; + src = ./nixos-gen-seccure-keys.sh; + }; + */ + + nixosHardwareScan = makeProg { + name = "nixos-hardware-scan"; + src = ./nixos-hardware-scan.pl; + inherit (pkgs) perl dmidecode; + }; + + nixosOption = makeProg { + name = "nixos-option"; + src = ./nixos-option.sh; + }; + + nixosVersion = makeProg { + name = "nixos-version"; + src = ./nixos-version.sh; + inherit (config.system) nixosVersion nixosCodeName; + }; + + nixosGui = 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 = + [ nixosBuildVMS + nixosInstall + nixosRebuild + nixosHardwareScan + #nixosGenSeccureKeys + nixosOption + nixosVersion + ] ++ pkgs.lib.optional cfg.enableGraphicalTools nixosGui; + + system.build = { + inherit nixosInstall nixosHardwareScan nixosOption; + }; + }; +} |