{ self, inputs, lib, ... }: let inherit (builtins) fromJSON readFile listToAttrs; targetMachines = [ "garage" "mastodon" "peertube" "pixelfed" ]; pathToRoot = /. + (builtins.unsafeDiscardStringContext self); pathFromRoot = ./.; enableAcme = true; in { perSystem = { pkgs, ... }: { checks.deployment-cli = pkgs.testers.runNixOSTest { imports = [ ../common/nixosTest.nix ./nixosTest.nix ]; _module.args.inputs = inputs; inherit targetMachines pathToRoot pathFromRoot enableAcme ; }; }; nixops4Deployments = let makeTargetResource = nodeName: { imports = [ ../common/targetResource.nix ]; _module.args.inputs = inputs; inherit nodeName pathToRoot pathFromRoot enableAcme ; }; ## The deployment function - what we are here to test! ## ## TODO: Modularise `deployment/default.nix` to get rid of the nested ## function calls. makeTestDeployment = args: (import ( builtins.path { path = ../..; name = "source"; } )) { inherit lib; inherit (inputs) nixops4 nixops4-nixos; fediversity = import ../../../services/fediversity; } (listToAttrs ( map (nodeName: { name = "${nodeName}ConfigurationResource"; value = makeTargetResource nodeName; }) targetMachines )) (fromJSON (readFile ../../configuration.sample.json) // args); in { check-deployment-cli-nothing = makeTestDeployment { }; check-deployment-cli-mastodon-pixelfed = makeTestDeployment { mastodon.enable = true; pixelfed.enable = true; }; check-deployment-cli-peertube = makeTestDeployment { peertube.enable = true; }; }; }