From 73097676945129da7111b126445bb67c6d8a0c5a Mon Sep 17 00:00:00 2001 From: James Santucci Date: Wed, 21 Jan 2026 16:02:58 -0800 Subject: [PATCH 1/2] Override haskell packages so flake build works random must be on 1.3.1 for dataframe, which is incompatible with time-compat's tests, so skip time-compat's tests --- flake.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/flake.nix b/flake.nix index 0885547f..f25a98ac 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,8 @@ hsPkgs = pkgs.haskellPackages.extend (self: super: { dataframe = self.callCabal2nix "dataframe" ./. { }; + random = pkgs.haskellPackages.callHackage "random" "1.3.1" { }; + time-compat = pkgs.haskell.lib.dontCheck super.time-compat; }); in { From a58e9affb0acbcc678cb40d93b6098f361aa7b63 Mon Sep 17 00:00:00 2001 From: James Santucci Date: Wed, 21 Jan 2026 16:01:17 -0800 Subject: [PATCH 2/2] Use the package definition to construct the dev shell Using the package means that e.g. `cabal repl` works with all of the dependencies / package-defined code, so you can ``` $ cabal repl [...] Ok, 46 modules loaded. ghci> import DataFrame.IO.CSV ghci> readCsv "foo.csv" --------- a | b ----|---- Int | Int ----|---- 1 | 2 3 | 4 5 | 6 ``` --- flake.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index f25a98ac..0eae9846 100644 --- a/flake.nix +++ b/flake.nix @@ -22,12 +22,14 @@ default = hsPkgs.dataframe; }; - devShells.default = pkgs.mkShell { - buildInputs = with pkgs; [ + devShells.default = hsPkgs.shellFor { + packages = ps: [ (ps.callCabal2nix "dataframe" ./. { }) ]; + nativeBuildInputs = with pkgs; [ ghc cabal-install haskell-language-server ]; + withHoogle = true; }; }); }