diff --git a/flake.nix b/flake.nix index d915b78..38dc9f6 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,3 @@ -# SPDX-FileCopyrightText: 2021 Serokell -# -# SPDX-License-Identifier: CC0-1.0 - { description = "Conway's Game of Life in Haskell"; @@ -13,44 +9,48 @@ outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = nixpkgs.legacyPackages.${system}; - - haskellPackages = pkgs.haskellPackages; - - jailbreakUnbreak = pkg: - pkgs.haskell.lib.doJailbreak (pkg.overrideAttrs (_: { meta = { }; })); - - packageName = "conways-game-of-life"; - + overlays = [ ]; + pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; }; execName = "gol"; - in { - packages.${packageName} = - haskellPackages.callCabal2nix packageName self rec { - # Dependency overrides go here + hp = pkgs.haskellPackages; # pkgs.haskell.packages.ghc921; + project = returnShellEnv: + hp.developPackage { + inherit returnShellEnv; + name = "conways-game-of-life"; + root = ./.; + withHoogle = false; + overrides = self: super: with pkgs.haskell.lib; { + # Use callCabal2nix to override Haskell dependencies here + # cf. https://tek.brick.do/K3VXJd8mEKO7 + # Example: + # > NanoID = self.callCabal2nix "NanoID" inputs.NanoID { }; + # Assumes that you have the 'NanoID' flake input defined. + }; + modifier = drv: + pkgs.haskell.lib.addBuildTools drv (with hp; [ + # Specify your build/dev dependencies here. + ghc + cabal-install + hlint + haskell-language-server + ormolu + + pkgs.mesa + pkgs.mesa_glu + pkgs.freeglut + ]); }; + in + { + # Used by `nix build` & `nix run` (prod exe) + defaultPackage = project false; - defaultPackage = self.packages.${system}.${packageName}; - - apps.${execName} = { + defaultApp = { type = "app"; - program = "${self.packages.${system}.${packageName}}/bin/${execName}"; + program = "${self.defaultPackage.${system}}/bin/${execName}"; }; - defaultApp = self.apps.${system}.${execName}; - - devShell = pkgs.mkShell { - buildInputs = with haskellPackages; [ - ghc - cabal-install - hlint - pkgs.haskell-language-server - pkgs.ormolu - - pkgs.mesa - pkgs.mesa_glu - pkgs.freeglut - ]; - inputsFrom = builtins.attrValues self.packages.${system}; - }; + # Used by `nix develop` (dev shell) + devShell = project true; }); }