{ description = "feedback"; nixConfig = { extra-substituters = "https://feedback.cachix.org"; extra-trusted-public-keys = "feedback.cachix.org-1:8PNDEJ4GTCbsFUwxVWE/ulyoBMDqqL23JA44yB0j1jI="; }; inputs = { nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-23.05"; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; validity.url = "github:NorfairKing/validity"; validity.flake = false; autodocodec.url = "github:NorfairKing/autodocodec"; autodocodec.flake = false; safe-coloured-text.url = "github:NorfairKing/safe-coloured-text"; safe-coloured-text.flake = false; fast-myers-diff.url = "github:NorfairKing/fast-myers-diff"; fast-myers-diff.flake = false; sydtest.url = "github:NorfairKing/sydtest"; sydtest.flake = false; dekking.url = "github:NorfairKing/dekking"; dekking.flake = false; }; outputs = { self , nixpkgs , pre-commit-hooks , validity , safe-coloured-text , sydtest , fast-myers-diff , autodocodec , dekking }: let system = "x86_64-linux"; pkgsFor = nixpkgs: import nixpkgs { inherit system; config.allowUnfree = true; overlays = [ self.overlays.${system} (import (autodocodec + "/nix/overlay.nix")) (import (safe-coloured-text + "/nix/overlay.nix")) (import (sydtest + "/nix/overlay.nix")) (import (fast-myers-diff + "/nix/overlay.nix")) (import (validity + "/nix/overlay.nix")) (import (dekking + "/nix/overlay.nix")) ]; }; pkgs = pkgsFor nixpkgs; in { overlays.${system} = import ./nix/overlay.nix; packages.${system}.default = pkgs.feedback; checks.${system} = { release = self.packages.${system}.default; shell = self.devShells.${system}.default; coverage-report = pkgs.dekking.makeCoverageReport { name = "test-coverage-report"; coverables = [ "feedback" ]; coverage = [ "feedback-test-harness" ]; }; pre-commit = pre-commit-hooks.lib.${system}.run { src = ./.; hooks = { hlint.enable = true; hpack.enable = true; ormolu.enable = true; nixpkgs-fmt.enable = true; nixpkgs-fmt.excludes = [ ".*/default.nix" ]; cabal2nix.enable = true; }; }; }; devShells.${system}.default = pkgs.haskellPackages.shellFor { name = "feedback-shell"; packages = p: [ p.feedback p.feedback-test-harness ]; withHoogle = true; doBenchmark = true; buildInputs = (with pkgs; [ feedback niv zlib cabal-install ]) ++ (with pre-commit-hooks.packages.${system}; [ hlint hpack nixpkgs-fmt ormolu cabal2nix ]); shellHook = self.checks.${system}.pre-commit.shellHook + pkgs.feedback.shellHook; }; }; }