From d4636fa2548a1980b3541dd386b6977c56218964 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sat, 27 Feb 2016 20:42:55 +0100 Subject: [PATCH] Revert "Add a way to pin a NixOS version within the module system." This reverts commit a5992ad61b314104aff7e28a41ce101a1b0e7c35. Motivation: https://github.com/NixOS/nixpkgs/commit/a5992ad61b314104aff7e28a41ce101a1b0e7c35#commitcomment-14986820 --- nixos/default.nix | 16 +--- .../manual/configuration/configuration.xml | 1 - nixos/doc/manual/default.nix | 1 - .../doc/manual/release-notes/rl-unstable.xml | 13 --- nixos/modules/misc/nixos.nix | 82 ------------------ nixos/modules/misc/nixos.xml | 84 ------------------- nixos/modules/module-list.nix | 1 - nixos/release.nix | 1 - nixos/tests/nixos-pin-version.nix | 57 ------------- 9 files changed, 4 insertions(+), 252 deletions(-) delete mode 100644 nixos/modules/misc/nixos.nix delete mode 100644 nixos/modules/misc/nixos.xml delete mode 100644 nixos/tests/nixos-pin-version.nix diff --git a/nixos/default.nix b/nixos/default.nix index 6359d10c8805..5d69b79e13a6 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -1,20 +1,12 @@ { configuration ? import ./lib/from-env.nix "NIXOS_CONFIG" , system ? builtins.currentSystem -, extraModules ? [] - # This attribute is used to specify a different nixos version, a different - # system or additional modules which might be set conditionally. -, reEnter ? false }: let - reEnterModule = { - config.nixos.path = with (import ../lib); mkIf reEnter (mkForce null); - config.nixos.configuration = configuration; - }; eval = import ./lib/eval-config.nix { inherit system; - modules = [ configuration reEnterModule ] ++ extraModules; + modules = [ configuration ]; }; inherit (eval) pkgs; @@ -22,14 +14,14 @@ let # This is for `nixos-rebuild build-vm'. vmConfig = (import ./lib/eval-config.nix { inherit system; - modules = [ configuration reEnterModule ./modules/virtualisation/qemu-vm.nix ] ++ extraModules; + modules = [ configuration ./modules/virtualisation/qemu-vm.nix ]; }).config; # This is for `nixos-rebuild build-vm-with-bootloader'. vmWithBootLoaderConfig = (import ./lib/eval-config.nix { inherit system; modules = - [ configuration reEnterModule + [ configuration ./modules/virtualisation/qemu-vm.nix { virtualisation.useBootLoader = true; } ]; @@ -38,7 +30,7 @@ let in { - inherit (eval.config.nixos.reflect) config options; + inherit (eval) config options; system = eval.config.system.build.toplevel; diff --git a/nixos/doc/manual/configuration/configuration.xml b/nixos/doc/manual/configuration/configuration.xml index ff00c4feb31a..caba8fb1f4ad 100644 --- a/nixos/doc/manual/configuration/configuration.xml +++ b/nixos/doc/manual/configuration/configuration.xml @@ -28,7 +28,6 @@ effect after you run nixos-rebuild. - diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix index 4eda7f94ab4a..4ce6ea1c1118 100644 --- a/nixos/doc/manual/default.nix +++ b/nixos/doc/manual/default.nix @@ -58,7 +58,6 @@ let cp ${../../modules/services/databases/postgresql.xml} configuration/postgresql.xml cp ${../../modules/services/misc/gitlab.xml} configuration/gitlab.xml cp ${../../modules/security/acme.xml} configuration/acme.xml - cp ${../../modules/misc/nixos.xml} configuration/nixos.xml ln -s ${optionsDocBook} options-db.xml echo "${version}" > version ''; diff --git a/nixos/doc/manual/release-notes/rl-unstable.xml b/nixos/doc/manual/release-notes/rl-unstable.xml index 5bad7f63b61e..ddbd80a8a00d 100644 --- a/nixos/doc/manual/release-notes/rl-unstable.xml +++ b/nixos/doc/manual/release-notes/rl-unstable.xml @@ -11,19 +11,6 @@ has the following highlights: - - You can now pin a specific version of NixOS in your configuration.nix - by setting: - - -nixos.path = ./nixpkgs-unstable-2015-12-06/nixos; - - - This will make NixOS re-evaluate your configuration with the modules of - the specified NixOS version at the given path. For more details, see - - - Firefox and similar browsers are now wrapped by default. The package and attribute names are plain firefox diff --git a/nixos/modules/misc/nixos.nix b/nixos/modules/misc/nixos.nix deleted file mode 100644 index 84365b640a48..000000000000 --- a/nixos/modules/misc/nixos.nix +++ /dev/null @@ -1,82 +0,0 @@ -{ config, options, lib, ... }: - -# This modules is used to inject a different NixOS version as well as its -# argument such that one can pin a specific version with the versionning -# system of the configuration. -let - nixosReentry = import config.nixos.path { - inherit (config.nixos) configuration extraModules; - inherit (config.nixpkgs) system; - reEnter = true; - }; -in - -with lib; - -{ - options = { - nixos.path = mkOption { - default = null; - example = literalExample "./nixpkgs-15.09/nixos"; - type = types.nullOr types.path; - description = '' - This option give the ability to evaluate the current set of modules - with a different version of NixOS. This option can be used version - the version of NixOS with the configuration without relying on the - NIX_PATH environment variable. - ''; - }; - - nixos.system = mkOption { - example = "i686-linux"; - type = types.uniq types.str; - description = '' - Name of the system used to compile NixOS. - ''; - }; - - nixos.extraModules = mkOption { - default = []; - example = literalExample "[ ./sshd-config.nix ]"; - type = types.listOf (types.either (types.submodule ({...}:{options={};})) types.path); - description = '' - Define additional modules which would be loaded to evaluate the - configuration. - ''; - }; - - nixos.configuration = mkOption { - type = types.unspecified; - internal = true; - description = '' - Option used by nixos/default.nix to re-inject - the same configuration module as the one used for the current - execution. - ''; - }; - - nixos.reflect = mkOption { - default = { inherit config options; }; - type = types.unspecified; - internal = true; - description = '' - Provides config and options - computed by the module system and given as argument to all - modules. These are used for introspection of options and - configuration by tools such as nixos-option. - ''; - }; - }; - - config = mkMerge [ - (mkIf (config.nixos.path != null) (mkForce { - system.build.toplevel = nixosReentry.system; - system.build.vm = nixosReentry.vm; - nixos.reflect = { inherit (nixosReentry) config options; }; - })) - - { meta.maintainers = singleton lib.maintainers.pierron; - meta.doc = ./nixos.xml; - } - ]; -} diff --git a/nixos/modules/misc/nixos.xml b/nixos/modules/misc/nixos.xml deleted file mode 100644 index 064bdd80b3c9..000000000000 --- a/nixos/modules/misc/nixos.xml +++ /dev/null @@ -1,84 +0,0 @@ - - -NixOS Reentry - - - - -Source: modules/misc/nixos.nix - - - -NixOS reentry can be used for both pinning the evaluation to a -specific version of NixOS, and to dynamically add additional modules into -the Module evaluation. - -
NixOS Version Pinning - -To pin a specific version of NixOS, you need a version that you can -either clone localy, or that you can fetch remotely. - -If you already have a cloned version of NixOS in the directory -/etc/nixos/nixpkgs-16-03, then you can specify the - with either the path or the relative path of -your NixOS clone. For example, you can add the following to your -/etc/nixos/configuration.nix file: - - -nixos.path = ./nixpkgs-16-03/nixos; - - - -Another option is to fetch a specific version of NixOS, with either -the fetchTarball builtin, or the -pkgs.fetchFromGitHub function and use the result as an -input. - - -nixos.path = "${builtins.fetchTarball https://github.com/NixOS/nixpkgs/archive/1f27976e03c15183191d1b4aa1a40d1f14666cd2.tar.gz}/nixos"; - - - -
- - -
Adding Module Dynamically - -To add additional module, the recommended way is to use statically -known modules in the list of imported arguments as described in . Unfortunately, this recommended method has -limitation, such that the list of imported files cannot be selected based on -the content of the configuration. - -Fortunately, NixOS reentry system can be used as an alternative to register -new imported modules based on the content of the configuration. To do so, -one should define both and - options. - - -nixos.path = <nixos>; -nixos.extraModules = - if config.networking.hostName == "server" then - [ ./server.nix ] else [ ./client.nix ]; - - -Also note, that the above can be reimplemented in a different way which is -not as expensive, by using mkIf at the top each -configuration if both modules are present on the file system (see ) and by always inmporting both -modules. - -
- -
Options - -FIXME: auto-generated list of module options. - -
- - -
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index f41e17189a42..a50b17068f66 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -58,7 +58,6 @@ ./misc/lib.nix ./misc/locate.nix ./misc/meta.nix - ./misc/nixos.nix ./misc/nixpkgs.nix ./misc/passthru.nix ./misc/version.nix diff --git a/nixos/release.nix b/nixos/release.nix index d9f3e46b27c0..cfe152cc163d 100644 --- a/nixos/release.nix +++ b/nixos/release.nix @@ -284,7 +284,6 @@ in rec { tests.networkingProxy = callTest tests/networking-proxy.nix {}; tests.nfs3 = callTest tests/nfs.nix { version = 3; }; tests.nfs4 = callTest tests/nfs.nix { version = 4; }; - tests.nixosPinVersion = callTest tests/nixos-pin-version.nix {}; tests.nsd = callTest tests/nsd.nix {}; tests.openssh = callTest tests/openssh.nix {}; tests.panamax = hydraJob (import tests/panamax.nix { system = "x86_64-linux"; }); diff --git a/nixos/tests/nixos-pin-version.nix b/nixos/tests/nixos-pin-version.nix deleted file mode 100644 index 91fba2e759d2..000000000000 --- a/nixos/tests/nixos-pin-version.nix +++ /dev/null @@ -1,57 +0,0 @@ -{ system ? builtins.currentSystem }: - -with import ../lib/testing.nix { inherit system; }; -let -in - -pkgs.stdenv.mkDerivation rec { - name = "nixos-pin-version"; - src = ../..; - buildInputs = with pkgs; [ nix gnugrep ]; - - withoutPath = pkgs.writeText "configuration.nix" '' - { - nixos.extraModules = [ ({lib, ...}: { system.nixosRevision = lib.mkForce "ABCDEF"; }) ]; - } - ''; - - withPath = pkgs.writeText "configuration.nix" '' - { - nixos.path = ${src}/nixos ; - nixos.extraModules = [ ({lib, ...}: { system.nixosRevision = lib.mkForce "ABCDEF"; }) ]; - } - ''; - - phases = "buildPhase"; - buildPhase = '' - datadir="${pkgs.nix}/share" - export TEST_ROOT=$(pwd)/test-tmp - export NIX_STORE_DIR=$TEST_ROOT/store - export NIX_LOCALSTATE_DIR=$TEST_ROOT/var - export NIX_LOG_DIR=$TEST_ROOT/var/log/nix - export NIX_STATE_DIR=$TEST_ROOT/var/nix - export NIX_DB_DIR=$TEST_ROOT/db - export NIX_CONF_DIR=$TEST_ROOT/etc - export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests - export NIX_BUILD_HOOK= - export PAGER=cat - cacheDir=$TEST_ROOT/binary-cache - nix-store --init - - export NIX_PATH="nixpkgs=$src:nixos=$src/nixos:nixos-config=${withoutPath}" ; - if test $(nix-instantiate $src/nixos -A config.system.nixosRevision --eval-only) != '"ABCDEF"' ; then :; - else - echo "Unexpected re-entry without the nixos.path option defined."; - exit 1; - fi; - - export NIX_PATH="nixpkgs=$src:nixos=$src/nixos:nixos-config=${withPath}" ; - if test $(nix-instantiate $src/nixos -A config.system.nixosRevision --eval-only) = '"ABCDEF"' ; then :; - else - echo "Expected a re-entry when the nixos.path option is defined."; - exit 1; - fi; - - touch $out; - ''; -}