let # Pin to specific nixpkgs versions for reproducibility stable = import (fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/nixos-25.11.tar.gz"; sha256 = "0ml5dr3n887vyr5j4hh05d83yw05xlgrkmw5bv0zdqk9d0m2phk6"; }) { config.allowUnfree = true; }; unstable = import (fetchTarball { url = "https://github.com/NixOS/nixpkgs/archive/nixpkgs-unstable.tar.gz"; sha256 = "1515byrd40ylb3z258g4f9mmhn1v608dvmxi8acci8vz4zzr99dv"; }) { config.allowUnfree = true; }; # Haskell packages ghc = stable.haskell.compiler.ghc910; hls = stable.haskell.packages.ghc910.haskell-language-server; in stable.mkShell { name = "hasql-generate-dev"; buildInputs = [ # Haskell toolchain ghc hls unstable.haskellPackages.cabal-install unstable.haskellPackages.hoogle # Formatters & linters stable.stylish-haskell stable.haskellPackages.fourmolu stable.haskellPackages.cabal-fmt stable.hlint # Database tools stable.libpq stable.postgresql_18 # Build dependencies stable.pkg-config stable.zlib # CLI tools stable.direnv unstable.just ]; # Ensure cabal can find native libraries LD_LIBRARY_PATH = "${stable.libpq}/lib:${stable.zlib}/lib"; PKG_CONFIG_PATH = "${stable.libpq}/lib/pkgconfig:${stable.zlib}/lib/pkgconfig"; }