forked from Fediversity/Fediversity
82 lines
2.3 KiB
Nix
82 lines
2.3 KiB
Nix
{
|
|
lib,
|
|
sources ? import ../npins,
|
|
...
|
|
}:
|
|
{
|
|
_class = "nixosTest";
|
|
|
|
name = "deployment-basic";
|
|
|
|
sourceFileset = lib.fileset.unions [
|
|
./constants.nix
|
|
./deployment.nix
|
|
];
|
|
|
|
nodes.deployer =
|
|
{ nodes, ... }:
|
|
{
|
|
system.extraDependenciesFromModule =
|
|
{ pkgs, ... }:
|
|
{
|
|
environment.systemPackages = with pkgs; [
|
|
hello
|
|
cowsay
|
|
];
|
|
|
|
virtualisation = {
|
|
## Memory use is expected to be dominated by the NixOS evaluation,
|
|
## which happens on the deployer.
|
|
memorySize = 4096;
|
|
diskSize = 10 * 1024;
|
|
cores = 2;
|
|
};
|
|
|
|
nix.settings = {
|
|
substituters = lib.mkForce [ ];
|
|
hashed-mirrors = null;
|
|
connect-timeout = 1;
|
|
};
|
|
|
|
system.extraDependencies =
|
|
with pkgs;
|
|
[
|
|
jq
|
|
jq.inputDerivation
|
|
sources.nixpkgs
|
|
|
|
pkgs.stdenv
|
|
pkgs.stdenvNoCC
|
|
|
|
pkgs.cowsay
|
|
pkgs.cowsay.inputDerivation # NOTE: Crucial!!!
|
|
|
|
## Some derivations will be different compared to target's initial
|
|
## state, so we'll need to be able to build something similar.
|
|
## Generally the derivation inputs aren't that different, so we
|
|
## use the initial state of the target as a base.
|
|
nodes.target.system.build.toplevel.inputDerivation
|
|
nodes.target.system.build.etc.inputDerivation
|
|
nodes.target.system.path.inputDerivation
|
|
nodes.target.system.build.bootStage1.inputDerivation
|
|
nodes.target.system.build.bootStage2.inputDerivation
|
|
]
|
|
++ lib.concatLists (
|
|
lib.mapAttrsToList (
|
|
_k: v: if v ? source.inputDerivation then [ v.source.inputDerivation ] else [ ]
|
|
) nodes.target.environment.etc
|
|
);
|
|
};
|
|
};
|
|
|
|
extraTestScript = ''
|
|
with subtest("Check the status before deployment"):
|
|
target.fail("cowsay hi 1>&2")
|
|
|
|
with subtest("Run the deployment"):
|
|
deployer.succeed("cd work && tofu apply --show-trace --no-interactive")
|
|
|
|
with subtest("Check the deployment"):
|
|
target.succeed("cowsay hi 1>&2")
|
|
'';
|
|
}
|