Exposing the function via clanLib makes it more accessible to clan modules This allows each module to define its own test without needing to depend on any fileSystem path assumptions in the clan-core repo
81 lines
2.8 KiB
Nix
81 lines
2.8 KiB
Nix
{ self, lib, ... }:
|
|
let
|
|
inherit (lib)
|
|
filter
|
|
pathExists
|
|
;
|
|
in
|
|
{
|
|
imports = filter pathExists [
|
|
./backups/flake-module.nix
|
|
./devshell/flake-module.nix
|
|
./flash/flake-module.nix
|
|
./impure/flake-module.nix
|
|
./installation/flake-module.nix
|
|
./morph/flake-module.nix
|
|
./nixos-documentation/flake-module.nix
|
|
];
|
|
perSystem =
|
|
{
|
|
pkgs,
|
|
lib,
|
|
self',
|
|
...
|
|
}:
|
|
{
|
|
checks =
|
|
let
|
|
nixosTestArgs = {
|
|
# reference to nixpkgs for the current system
|
|
inherit pkgs lib;
|
|
# this gives us a reference to our flake but also all flake inputs
|
|
inherit self;
|
|
inherit (self) clanLib;
|
|
};
|
|
nixosTests = lib.optionalAttrs (pkgs.stdenv.isLinux) {
|
|
# import our test
|
|
secrets = import ./secrets nixosTestArgs;
|
|
container = import ./container nixosTestArgs;
|
|
# Deltachat is currently marked as broken
|
|
# deltachat = import ./deltachat nixosTestArgs;
|
|
borgbackup = import ./borgbackup nixosTestArgs;
|
|
matrix-synapse = import ./matrix-synapse nixosTestArgs;
|
|
mumble = import ./mumble nixosTestArgs;
|
|
dummy-inventory-test = import ./dummy-inventory-test nixosTestArgs;
|
|
data-mesher = import ./data-mesher nixosTestArgs;
|
|
syncthing = import ./syncthing nixosTestArgs;
|
|
zt-tcp-relay = import ./zt-tcp-relay nixosTestArgs;
|
|
postgresql = import ./postgresql nixosTestArgs;
|
|
wayland-proxy-virtwl = import ./wayland-proxy-virtwl nixosTestArgs;
|
|
};
|
|
|
|
flakeOutputs =
|
|
lib.mapAttrs' (
|
|
name: config: lib.nameValuePair "nixos-${name}" config.config.system.build.toplevel
|
|
) (lib.filterAttrs (n: _: !lib.hasPrefix "test-" n) self.nixosConfigurations)
|
|
// lib.mapAttrs' (n: lib.nameValuePair "package-${n}") self'.packages
|
|
// lib.mapAttrs' (n: lib.nameValuePair "devShell-${n}") self'.devShells
|
|
// lib.mapAttrs' (name: config: lib.nameValuePair "home-manager-${name}" config.activation-script) (
|
|
self'.legacyPackages.homeConfigurations or { }
|
|
);
|
|
in
|
|
nixosTests // flakeOutputs;
|
|
legacyPackages = {
|
|
nixosTests =
|
|
let
|
|
nixosTestArgs = {
|
|
# reference to nixpkgs for the current system
|
|
inherit pkgs;
|
|
# this gives us a reference to our flake but also all flake inputs
|
|
inherit self;
|
|
};
|
|
in
|
|
lib.optionalAttrs (pkgs.stdenv.isLinux) {
|
|
# import our test
|
|
secrets = import ./secrets nixosTestArgs;
|
|
container = import ./container nixosTestArgs;
|
|
};
|
|
};
|
|
};
|
|
}
|