diff --git a/flake.nix b/flake.nix index d372c3a446598b8fe02247dc792a5e448babbae8..83a55daf90f52f5b4226788555a4212847ba0f50 100644 --- a/flake.nix +++ b/flake.nix @@ -40,16 +40,7 @@ checks = hslib.checks {}; devShells = hslib.devShells { shellHook = '' - cat >cabal.project.local <<EOF - -- This file is auto-generated by the flake devShell's shellHook. Do - -- not edit this file. Make changes in flake.nix. - tests: true - packages: - -- These aren't released on hackage yet so we have to get them - -- another way. Here, we get them from the Nix store. - -- tahoe-chk - ${tahoe-chk} - EOF + nix run .#generate-cabal-project ''; extraBuildInputs = pkgs: with pkgs; [ @@ -59,6 +50,27 @@ packages = hslib.packages {}; apps.hlint = hslib.apps.hlint {}; + apps.generate-cabal-project = { + type = "app"; + program = "${ + pkgs.writeShellApplication { + name = "generate-cabal-project"; + text = '' + cat >cabal.project.local <<EOF + -- This file is auto-generated by the flake devShell's shellHook. Do + -- not edit this file. Make changes in flake.nix. + tests: true + packages: + -- These aren't released on hackage yet so we have to get them + -- another way. Here, we get them from the Nix store. + -- tahoe-chk + ${tahoe-chk} + EOF + ''; + } + }/bin/generate-cabal-project"; + }; + # Using the working directory of `nix run`, do a build with cabal and # then run the test suite. apps.cabal-test = { @@ -69,6 +81,7 @@ runtimeInputs = with pkgs; [pkg-config haskell.compiler.${ghcVersion} cabal-install]; text = '' + nix run .#generate-cabal-project cabal update hackage.haskell.org cabal build all cabal run tests