Switch CI to Nix flakes
We also move tests to Flakes. This would allow users to submit PRs with a fork of nixpkgs when they want to test nixpkgs PRs against SNM.
This commit is contained in:
parent
a9f87ca461
commit
a0f9688a31
9 changed files with 111 additions and 103 deletions
52
flake.nix
52
flake.nix
|
@ -4,15 +4,55 @@
|
|||
inputs = {
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
nixpkgs.url = "flake:nixpkgs/nixos-unstable";
|
||||
nixpkgs-21_05.url = "flake:nixpkgs/nixos-21.05";
|
||||
blobs = {
|
||||
url = "gitlab:simple-nixos-mailserver/blobs";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, utils, nixpkgs }: {
|
||||
outputs = { self, utils, blobs, nixpkgs, nixpkgs-21_05 }: let
|
||||
system = "x86_64-linux";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
# We want to test nixos-mailserver on several nixos releases
|
||||
releases = [
|
||||
{
|
||||
name = "unstable";
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
}
|
||||
{
|
||||
name = "21_05";
|
||||
pkgs = nixpkgs-21_05.legacyPackages.${system};
|
||||
}
|
||||
];
|
||||
testNames = [
|
||||
"internal"
|
||||
"external"
|
||||
"clamav"
|
||||
"multiple"
|
||||
];
|
||||
genTest = testName: release: {
|
||||
"name"= "${testName}-${release.name}";
|
||||
"value"= import (./tests/. + "/${testName}.nix") {
|
||||
pkgs = release.pkgs;
|
||||
inherit blobs;
|
||||
};
|
||||
};
|
||||
# Generate an attribute set such as
|
||||
# {
|
||||
# external-unstable = <derivation>;
|
||||
# external-21_05 = <derivation>;
|
||||
# ...
|
||||
# }
|
||||
allTests = pkgs.lib.listToAttrs (
|
||||
pkgs.lib.flatten (map (t: map (r: genTest t r) releases) testNames));
|
||||
|
||||
in {
|
||||
nixosModules.mailserver = import ./.;
|
||||
nixosModule = self.nixosModules.mailserver;
|
||||
} // utils.lib.eachDefaultSystem (system: let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
in {
|
||||
devShell = pkgs.mkShell {
|
||||
hydraJobs.${system} = allTests;
|
||||
checks.${system} = allTests;
|
||||
devShell.${system} = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
(python3.withPackages (p: with p; [
|
||||
sphinx
|
||||
|
@ -22,5 +62,5 @@
|
|||
clamav
|
||||
];
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue