selfprivacy-tests/flake.nix

95 lines
2.5 KiB
Nix

{
description = "Tests for SelfPrivacy";
inputs.nixpkgs.url = github:nixos/nixpkgs;
outputs = { self, nixpkgs }:
let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
lib = nixpkgs.lib;
# Generate a user-friendly version number. TODO
version = (builtins.substring 0 8 self.lastModifiedDate) + self.shortRev;
makeTestProgram = { name, script, env-vars }:
pkgs.runCommandLocal name
{
nativeBuildInputs = [ pkgs.makeWrapper ];
} ''
install -m755 ${script} -D $out/bin/${name}
patchShebangs $out/bin/${name}
wrapProgram $out/bin/${name} \
${lib.strings.concatMapStringsSep "\n"
({name, value}: ''--set ${name} "${value}"'') env-vars} \
--prefix PATH : ${with pkgs; lib.makeBinPath [
curl
diffutils
gnutar
gzip
jd-diff-patch
jq
openssh
]}
'';
scripts-with-envs = [
{
name = "query-minimum-services";
script = ./query-services-state.sh;
env-vars = [{
name = "EXPECTED_RESPONSE_FILE";
value = ./minimal-services-expected-response.json;
}];
}
{
name = "query-all-services";
script = ./query-services-state.sh;
env-vars = [{
name = "EXPECTED_RESPONSE_FILE";
value = ./all-services-expected-response.json;
}];
}
{
name = "enable-service";
script = ./enable-service.sh;
env-vars = [ ];
}
{
name = "nixos-rebuild";
script = ./nixos-rebuild.sh;
env-vars = [ ];
}
];
in
{
packages.${system} = lib.attrsets.listToAttrs
(map
(a@{ name, ... }: lib.attrsets.nameValuePair name (makeTestProgram a))
scripts-with-envs
)
//
{
library = pkgs.writeText "library.sh" (lib.strings.concatStrings [
(builtins.readFile ./library.sh)
"export PATH=$PATH:"
(lib.makeBinPath
(map (x: self.packages.${system}.${x.name}) scripts-with-envs))
]);
};
devShells.${system}.default = pkgs.mkShell
{
packages = with pkgs;
[
curl
diffutils
gzip
jd-diff-patch
jq
openssh
gnutar
iputils
];
};
};
}