1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- {
- description = "Agda is a dependently typed programming language / interactive theorem prover.";
- inputs.flake-utils.url = "github:numtide/flake-utils";
- outputs = { self, nixpkgs, flake-utils }: (flake-utils.lib.eachDefaultSystem (system: {
- packages = let
- pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; };
- in {
- inherit (pkgs.haskellPackages) Agda;
- # TODO agda2-mode
- };
- defaultPackage = self.packages.${system}.Agda;
- })) // {
- overlay = final: prev: {
- haskellPackages = prev.haskellPackages.override {
- overrides = self.haskellOverlay;
- };
- };
- haskellOverlay = final: prev: let
- inherit (final) callCabal2nixWithOptions;
- shortRev = builtins.substring 0 9 self.rev;
- postfix = if self ? revCount then "${toString self.revCount}_${shortRev}" else "Dirty";
- in {
- # TODO use separate evaluation system?
- Agda = callCabal2nixWithOptions "Agda" ./. "--flag enable-cluster-counting --flag optimise-heavily" ({
- mkDerivation = args: final.mkDerivation (args // {
- version = "${args.version}-pre${postfix}";
- postInstall = "$out/bin/agda-mode compile";
- # TODO Make check phase work
- # At least requires:
- # Setting AGDA_BIN (or using the Makefile, which at least requires cabal-install)
- # Making agda-stdlib available (or disabling the relevant tests somehow)
- doCheck = false;
- });
- });
- };
- };
- }
|