diff options
Diffstat (limited to 'haskell/flake.nix')
| -rw-r--r-- | haskell/flake.nix | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/haskell/flake.nix b/haskell/flake.nix new file mode 100644 index 0000000..a637cde --- /dev/null +++ b/haskell/flake.nix @@ -0,0 +1,74 @@ +{ + description = "Haskell project"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs"; + nix-filter.url = "github:numtide/nix-filter"; + flake-parts.url = "github:hercules-ci/flake-parts"; + systems.url = "github:nix-systems/default"; + }; + + outputs = + inputs@{ + self, + flake-parts, + nixpkgs, + nix-filter, + ... + }: + flake-parts.lib.mkFlake { inherit self inputs; } { + systems = import inputs.systems; + + flake.overlays.default = final: prev: { + haskellPackages = prev.haskellPackages.extend ( + hfinal: _hprev: { + PROJECT = + let + src = nix-filter { + root = ./.; + include = [ + "src" + "app" + "package.yaml" + "PROJECT.cabal" + ]; + }; + in + hfinal.callCabal2nix "PROJECT" src { }; + } + ); + }; + + perSystem = + { + config, + pkgs, + system, + ... + }: + { + _module.args.pkkgs = import nixpkgs { + inherit system; + overlays = [ self.overlays.default ]; + }; + + packages = rec { + default = PROJECT; + inherit (pkgs.haskellPackages) PROJECT; + }; + + devShells.default = pkgs.haskellPackages.shellFor { + packages = ps: [ ]; + withHoogle = true; + buildInputs = with pkgs.haskellPackages; [ + cabal-install + hpack + hlint + fast-tags + pkgs.haskell-language-server + ]; + }; + + }; + }; +} |
