mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-25 12:42:02 +03:00
46 lines
1.3 KiB
Nix
46 lines
1.3 KiB
Nix
{ nixpkgs
|
|
, idris
|
|
, flake-utils
|
|
, system
|
|
, stdenv
|
|
, runCommand
|
|
, lib
|
|
}:
|
|
let
|
|
withTests = tests: drv:
|
|
let testDrvs = lib.mapAttrs
|
|
(name: testScript:
|
|
runCommand "${drv.name}-test-${name}"
|
|
{} ''
|
|
${testScript}
|
|
touch "$out"
|
|
'') tests;
|
|
in testDrvs;
|
|
createTemplate = flake: inputs: type: let
|
|
self = import flake;
|
|
template = self.outputs ({ inherit self nixpkgs idris flake-utils; } // inputs);
|
|
templateBuild = template.packages.${system}.${type};
|
|
in templateBuild;
|
|
|
|
templateBuildDefault = createTemplate ./templates/pkg/flake.nix {} "build";
|
|
templateBuildDefaultLibrary = createTemplate ./templates/pkg/flake.nix {} "installLibrary";
|
|
templateBuildWithDeps = createTemplate ./templates/pkgWithDeps/flake.nix
|
|
{ pkg = templateBuildDefaultLibrary; } "build";
|
|
|
|
testsTemplate = {
|
|
checkFoo = ''
|
|
${templateBuildDefault}/bin/runMyPkg \
|
|
| grep "Foo"
|
|
'';
|
|
};
|
|
testsTemplateWithDeps = {
|
|
checkBar = ''
|
|
${templateBuildWithDeps}/bin/runMyPkg2 \
|
|
| grep "Bar"
|
|
'';
|
|
};
|
|
in
|
|
withTests testsTemplate templateBuildDefault
|
|
// withTests testsTemplateWithDeps templateBuildWithDeps
|
|
// { idris2Tests = idris.defaultPackage.${system}.overrideAttrs (a: { doCheck = true; }); }
|