From 459cbfa0da30ee118a95c61ccad781464011a488 Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 5 Nov 2024 10:43:59 -0500 Subject: flake-parts/checks: init module (#122) --- modules/flake/checks.nix | 66 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 modules/flake/checks.nix (limited to 'modules') diff --git a/modules/flake/checks.nix b/modules/flake/checks.nix new file mode 100644 index 0000000..63a85fe --- /dev/null +++ b/modules/flake/checks.nix @@ -0,0 +1,66 @@ +{ flake-parts-lib, ... }: +{ + options = { + perSystem = flake-parts-lib.mkPerSystemOption ( + { + config, + lib, + pkgs, + ... + }: + let + namespace = "quickChecks"; + cfg = config.${namespace}; + + checkSubmodule = + { config, name, ... }: + { + options = { + name = lib.mkOption { + type = lib.types.str; + default = "check-" + name; + description = "Name of the derivation used for the script."; + }; + + dependencies = lib.mkOption { + type = lib.types.listOf lib.types.package; + default = [ ]; + description = "Packages used in the script."; + }; + + script = lib.mkOption { + type = lib.types.lines; + description = "Script to run as the check."; + }; + + package = lib.mkOption { + type = lib.types.package; + readOnly = true; + description = "Package that runs the check."; + }; + }; + + config = { + package = pkgs.runCommand config.name { nativeBuildInputs = config.dependencies; } ( + lib.concatLines [ + config.script + "touch $out" + ] + ); + }; + }; + in + { + options.${namespace} = lib.mkOption { + type = lib.types.attrsOf (lib.types.submodule checkSubmodule); + default = { }; + description = "An attribute set of check scripts."; + }; + + config = { + checks = lib.mapAttrs (lib.const (lib.getAttr "package")) cfg; + }; + } + ); + }; +} -- cgit v1.2.3