diff options
| author | Chris Wells <chris@mathematicaster.org> | 2026-02-25 10:39:15 -0600 |
|---|---|---|
| committer | Chris Wells <chris@mathematicaster.org> | 2026-02-25 10:39:15 -0600 |
| commit | f2c4d486c0e5763b9fcd92987128df262233c1a9 (patch) | |
| tree | a78ac2fcd93b60daa80eb12fc8928f251377c35f /haskell/flake.nix | |
| download | templates-f2c4d486c0e5763b9fcd92987128df262233c1a9.tar templates-f2c4d486c0e5763b9fcd92987128df262233c1a9.tar.gz templates-f2c4d486c0e5763b9fcd92987128df262233c1a9.tar.bz2 templates-f2c4d486c0e5763b9fcd92987128df262233c1a9.tar.lz templates-f2c4d486c0e5763b9fcd92987128df262233c1a9.tar.xz templates-f2c4d486c0e5763b9fcd92987128df262233c1a9.tar.zst templates-f2c4d486c0e5763b9fcd92987128df262233c1a9.zip | |
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 + ]; + }; + + }; + }; +} |
