diff options
author | Roman Melnikov | 2024-06-12 14:07:33 +0200 |
---|---|---|
committer | GitHub | 2024-06-12 14:07:33 +0200 |
commit | 3867348fa92bc892eba5d9ddb2d7a97b9e127a8a (patch) | |
tree | 1c2cf8365dcabb72eb306e0e8577f2772197157b /nix/tests/default.nix | |
parent | 254e9d150aa273591aee1433112a8781fd4ffd71 (diff) | |
parent | d3b11225fcb129ccb5e07b716b7484a93e68771d (diff) |
Merge pull request #272 from stuebinm/fix-nonflake-build
fix nix-build invocation in non-flake builds
Diffstat (limited to 'nix/tests/default.nix')
-rw-r--r-- | nix/tests/default.nix | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/nix/tests/default.nix b/nix/tests/default.nix index 7fe8628..218bbd8 100644 --- a/nix/tests/default.nix +++ b/nix/tests/default.nix @@ -20,12 +20,12 @@ let done <$refs ''; - mkTest = { name ? "", user ? "root", isLocal ? true, deployArgs }: let + mkTest = { name ? "", user ? "root", flakes ? true, isLocal ? true, deployArgs }: let nodes = { server = { nodes, ... }: { imports = [ ./server.nix - (import ./common.nix { inherit inputs pkgs; }) + (import ./common.nix { inherit inputs pkgs flakes; }) ]; virtualisation.additionalPaths = lib.optionals (!isLocal) [ pkgs.hello @@ -35,8 +35,10 @@ let ]; }; client = { nodes, ... }: { - imports = [ (import ./common.nix { inherit inputs pkgs; }) ]; + imports = [ (import ./common.nix { inherit inputs pkgs flakes; }) ]; environment.systemPackages = [ pkgs.deploy-rs.deploy-rs ]; + # nix evaluation takes a lot of memory, especially in non-flake usage + virtualisation.memorySize = lib.mkForce 4096; virtualisation.additionalPaths = lib.optionals isLocal [ pkgs.hello pkgs.figlet @@ -56,11 +58,29 @@ let systems.url = "${inputs.utils.inputs.systems}"; flake-compat.url = "${inputs.flake-compat}"; flake-compat.flake = false; + + enable-flakes.url = "${builtins.toFile "use-flakes" (if flakes then "true" else "false")}"; + enable-flakes.flake = false; ''; flake = builtins.toFile "flake.nix" (lib.replaceStrings [ "##inputs##" ] [ flakeInputs ] (builtins.readFile ./deploy-flake.nix)); + flakeCompat = builtins.toFile "default.nix" '' + (import + ( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + in + fetchTarball { + url = "https://not-used-we-fetch-by-hash"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } + ) + { src = ./.; } + ).defaultNix + ''; + in pkgs.nixosTest { inherit nodes name; @@ -73,11 +93,11 @@ let # Prepare client.succeed("mkdir tmp && cd tmp") client.succeed("cp ${flake} ./flake.nix") + client.succeed("cp ${flakeCompat} ./default.nix") client.succeed("cp ${./server.nix} ./server.nix") client.succeed("cp ${./common.nix} ./common.nix") client.succeed("cp ${serverNetworkJSON} ./network.json") - client.succeed("nix flake lock") - + client.succeed("nix --extra-experimental-features flakes flake lock") # Setup SSH key client.succeed("mkdir -m 700 /root/.ssh") @@ -136,4 +156,10 @@ in { user = "deploy"; deployArgs = "-s .#profile --ssh-opts '-p 22 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null' -- --offline"; }; + # Deployment using a non-flake nix + non-flake-build = mkTest { + name = "local-build"; + flakes = false; + deployArgs = "-s .#server"; + }; } |