{ description = "Description for the project"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; devshell.url = "github:numtide/devshell"; treefmt-nix.url = "github:numtide/treefmt-nix"; haskell-flake.url = "github:srid/haskell-flake"; flake-root.url = "github:srid/flake-root"; }; outputs = inputs@{ flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } { imports = [ # To import a flake module # 1. Add foo to inputs # 2. Add foo as a parameter to the outputs function # 3. Add here: foo.flakeModule inputs.devshell.flakeModule inputs.treefmt-nix.flakeModule inputs.haskell-flake.flakeModule inputs.flake-root.flakeModule ]; systems = [ "x86_64-linux" "aarch64-darwin" ]; perSystem = { config, self', inputs', pkgs, system, ... }: { # Per-system attributes can be defined here. The self' and inputs' # module parameters provide easy access to attributes of the same # system. haskellProjects.default = { # packages.haskell-template.root = ./.; # Auto-discovered by haskell-flake overrides = self: super: { }; devShell = { tools = hp: { treefmt = config.treefmt.build.wrapper; } // config.treefmt.build.programs; hlsCheck.enable = false; }; autoWire = [ "packages" "apps" "checks" ]; # Wire all but the devShell }; packages.default = self'.packages.kompact-site; treefmt.config = { inherit (config.flake-root) projectRootFile; package = pkgs.treefmt; flakeFormatter = false; # For https://github.com/numtide/treefmt-nix/issues/55 programs.ormolu.enable = true; programs.nixpkgs-fmt.enable = true; programs.cabal-fmt.enable = true; programs.hlint.enable = true; # We use fourmolu programs.ormolu.package = pkgs.haskellPackages.fourmolu; settings.formatter.ormolu = { options = [ "--ghc-opt" "-XImportQualifiedPost" ]; }; programs.prettier.enable = true; }; # Equivalent to inputs'.nixpkgs.legacyPackages.hello; devShells.default = pkgs.mkShell { inputsFrom = [ config.haskellProjects.default.outputs.devShell config.flake-root.devShell ]; packages = with pkgs; [ caddy nil nodePackages_latest.vscode-langservers-extracted nodePackages_latest.tailwindcss nodePackages_latest.typescript-language-server haskellPackages.hakyll zlib ]; }; }; flake = { # The usual flake attributes can be defined here, including system- # agnostic ones like nixosModule and system-enumerating ones, although # those are more easily expressed in perSystem. }; }; }