diff --git a/shell.nix b/shell.nix index 510a4df83c..819e7ff9d8 100644 --- a/shell.nix +++ b/shell.nix @@ -1,36 +1,91 @@ +# This shell.nix file is designed for use with cabal build +# It aims to leverage the nix cache in as much as possible +# while reducing Nix maintenance costs. +# It does **not** aim to replace Cabal/Stack with Nix + + { sources ? import nix/sources.nix, nixpkgs ? import sources.nixpkgs {}, compiler ? "default" }: with nixpkgs; -let haskellPackagesForProject = if compiler == "default" - then haskellPackages.ghcWithPackages - else haskell.packages.${compiler}.ghcWithPackages; +let defaultCompiler = "ghc" + lib.replaceStrings ["."] [""] haskellPackages.ghc.version; + haskellPackagesForProject = p: + if compiler == "default" || compiler == defaultCompiler + then haskellPackages.ghcWithPackages p + # for all other compilers there is no Nix cache so dont bother building deps with NIx + else haskell.packages.${compiler}.ghcWithPackages []; compilerWithPackages = haskellPackagesForProject(p: with p; - [ aeson + [ + Diff + Glob + HsYAML-aeson + QuickCheck + aeson + alex async + base16-bytestring + blaze-builder + blaze-markup + brittany + conduit-extra + conduit-parse + cryptohash-sha1 + data-default + data-default-class + data-default-instances-containers + data-default-instances-dlist + data-default-instances-old-locale extra + floskell + fuzzy + generic-deriving + ghc-check gitrev + haddock-library + happy haskell-lsp + haskell-src-exts + hie-bios + hslogger + hspec lens + lsp-test + megaparsec network + opentelemetry optparse-simple + ormolu + parser-combinators + parsers prettyprinter - QuickCheck + prettyprinter-ansi-terminal + primes + psqueues regex-tdfa rope-utf16-splay safe-exceptions shake + sorted-list + strict + stylish-haskell tasty + tasty-ant-xml + tasty-expected-failure tasty-golden tasty-hunit tasty-rerun temporary text + typed-process + unix-compat unordered-containers + xml + yaml + zlib ]); in stdenv.mkDerivation {