mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-17 16:21:46 +03:00
45 lines
1.2 KiB
Nix
45 lines
1.2 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
|