{ pkgs ? import { }, qpkgs ? let src = fetchTree (builtins.parseFlakeRef "github:Qyriad/nur-packages"); in import src { inherit pkgs; }, lib ? qpkgs.lib, dynix ? qpkgs.callPackage ../modules-package.nix { }, }: let runDynixTest = testModule: pkgs.testers.runNixOSTest { imports = [ testModule ]; # Why is this argument called "extraBaseModule**s**" but take a single module argument... # Also note this is an extra base module for each node of the test, # not an extra test module. extraBaseModules = { name, config, options, modulesPath, ... }: { imports = (import "${modulesPath}/module-list.nix") ++ [ ./module-allow-rebuild-in-vm.nix "${modulesPath}/testing/test-instrumentation.nix" (toString dynix) ]; environment.systemPackages = [ dynix ]; systemd.services."install-dynix" = { enable = true; serviceConfig.Type = "oneshot"; serviceConfig.RemainAfterExit = true; path = [ config.system.path ]; wantedBy = [ "multi-user.target" ]; after = [ "default.target" ]; script = '' nix profile install -vv "$(realpath /run/current-system/sw/share/nixos/modules/dynix/)" ''; }; passthru = { inherit options; }; # Just making something in this strict in `name`, # which is only present as an argument for nodes and I don't want to # confuse that with the test modules. warnings = builtins.seq name [ ]; }; }; in lib.makeScope lib.callPackageWith (self: { gotosocial = runDynixTest ./gotosocial/test.nix; harmonia = runDynixTest ./harmonia/test.nix; #tzupdate = runDynixTest ./tzupdate/test.nix; })