Merge pull request #278064 from symphorien/nix_config_extra

nixos/nix: add workaround for https://github.com/NixOS/nix/issues/9487
This commit is contained in:
Guillaume Girol 2024-03-15 22:46:51 +01:00 committed by GitHub
commit 1f26e67560
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 27 additions and 1 deletions

View File

@ -14,8 +14,10 @@ let
concatStringsSep
boolToString
escape
filterAttrs
floatToString
getVersion
hasPrefix
isBool
isDerivation
isFloat
@ -95,14 +97,19 @@ let
mkKeyValuePairs = attrs: concatStringsSep "\n" (mapAttrsToList mkKeyValue attrs);
isExtra = key: hasPrefix "extra-" key;
in
pkgs.writeTextFile {
name = "nix.conf";
# workaround for https://github.com/NixOS/nix/issues/9487
# extra-* settings must come after their non-extra counterpart
text = ''
# WARNING: this file is generated from the nix.* options in
# your NixOS configuration, typically
# /etc/nixos/configuration.nix. Do not edit it!
${mkKeyValuePairs cfg.settings}
${mkKeyValuePairs (filterAttrs (key: value: !(isExtra key)) cfg.settings)}
${mkKeyValuePairs (filterAttrs (key: value: isExtra key) cfg.settings)}
${cfg.extraOptions}
'';
checkPhase = lib.optionalString cfg.checkConfig (

View File

@ -613,6 +613,7 @@ in {
nginx-variants = handleTest ./nginx-variants.nix {};
nifi = handleTestOn ["x86_64-linux"] ./web-apps/nifi.nix {};
nitter = handleTest ./nitter.nix {};
nix-config = handleTest ./nix-config.nix {};
nix-ld = handleTest ./nix-ld.nix {};
nix-serve = handleTest ./nix-serve.nix {};
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};

View File

@ -0,0 +1,18 @@
import ./make-test-python.nix ({ pkgs, ... }:
{
name = "nix-config";
nodes.machine = { pkgs, ... }: {
nix.settings = {
nix-path = [ "nonextra=/etc/value.nix" ];
extra-nix-path = [ "extra=/etc/value.nix" ];
};
environment.etc."value.nix".text = "42";
};
testScript = ''
start_all()
machine.wait_for_unit("nix-daemon.socket")
# regression test for the workaround for https://github.com/NixOS/nix/issues/9487
print(machine.succeed("nix-instantiate --find-file extra"))
print(machine.succeed("nix-instantiate --find-file nonextra"))
'';
})