diff --git a/modules/installer/tools/tools.nix b/modules/installer/tools/tools.nix new file mode 100644 index 000000000000..b9f643ccca6a --- /dev/null +++ b/modules/installer/tools/tools.nix @@ -0,0 +1,85 @@ +# This module generates nixos-install, nixos-rebuild, +# nixos-hardware-scan, etc. + +{config, pkgs, ...}: + +let + + ### interface + + options = { + + installer.nixpkgsURL = pkgs.lib.mkOption { + default = ""; + example = http://nixos.org/releases/nix/nixpkgs-0.11pre7577; + description = '' + URL of the Nixpkgs distribution to use when building the + installation CD. + ''; + }; + + installer.manifests = pkgs.lib.mkOption { + default = [http://nixos.org/releases/nixpkgs/channels/nixpkgs-unstable/MANIFEST]; + example = + [ http://nixos.org/releases/nixpkgs/channels/nixpkgs-unstable/MANIFEST + http://nixos.org/releases/nixpkgs/channels/nixpkgs-stable/MANIFEST + ]; + description = '' + URLs of manifests to be downloaded when you run + nixos-rebuild to speed up builds. + ''; + }; + + }; + + + ### implementation + + makeProg = args: pkgs.substituteAll (args // { + dir = "bin"; + isExecutable = true; + }); + + nixosInstall = makeProg { + name = "nixos-install"; + src = ./nixos-install.sh; + + inherit (pkgs) perl; + nix = config.environment.nix; + nixpkgsURL = config.installer.nixpkgsURL; + + pathsFromGraph = "${pkgs.path}/build-support/kernel/paths-from-graph.pl"; + + 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; + }; + +in + +{ + require = options; + + environment.extraPackages = + [ nixosInstall + nixosRebuild + nixosHardwareScan + nixosGenSeccureKeys + ]; +}