Peter, Carlos, Would you recommend this as the ideal way to install Haskell in Nixos now?
Aloha, RK. On Tue, Dec 16, 2014 at 11:17 PM, Peter Simons <[email protected]> wrote: > > Hi Carlo, > > > for completeness, could you post a version in which this approach is > > used in conjunction with ghcWithPackages? > > first of all, your ~/.bashrc should contain these settings: > > | NIX_GHC_VERSION=$(ghc --numeric-version) > | export NIX_GHC="$HOME/.nix-profile/bin/ghc" > | export NIX_GHCPKG="$HOME/.nix-profile/bin/ghc-pkg" > | export NIX_GHC_DOCDIR="$HOME/.nix-profile/share/doc/ghc/html" > | export NIX_GHC_LIBDIR="$HOME/.nix-profile/lib/ghc-${NIX_GHC_VERSION}" > > People who use more than one profile and who don't want to commit to a > single location for their active Haskell environment can use the > following instead: > > | NIX_GHC=$(type -p ghc) > | if [ -n "$NIX_GHC" ]; then > | eval $(grep export "$NIX_GHC") > | fi > > The advantage of the first snippet is that you don't need to re-source > your ~/.bashrc after an nix-env update. The advantage of the second > snippet is that these variables will point directly into the /nix store, > so it doesn't matter what the exact path of your profile is. > > Now, here is the setup of the Haskell environment: > > | # ~/.nixpkgs/config.nix > | > | { > | packageOverrides = super: let self = super.pkgs; in > | { > | haskellDevEnv = self.haskellPackages.ghcWithPackages (p: with p; [ > | async attoparsec caseInsensitive fgl GLUT GLURaw haskellSrc > | hashable html HTTP HUnit mtl network OpenGL OpenGLRaw parallel > | parsec QuickCheck random regexBase regexCompat regexPosix split > stm > | syb text transformers unorderedContainers vector /*xhtml*/ zlib > | # tools > | cabalInstall > | ghcMod > | xmonad xmonadContrib xmonadExtras xmobar > | haskintex > | ]); > | > | haskellPackages = super.haskellPackages.override { > | extension = self: super: { > | abcnotation = self.callPackage ./abcnotation.nix {}; > | prettify = self.callPackage ./prettify.nix {}; > | }; > | }; > | }; > | } > > The first stanza defines a derivation that contains GHC plus all those > listed libraries. (Note that because of a bug in GHC 7.8.3 the 'xhtml' > package cannot be included into such a generated environment, so the > package is commented out.) To include this derivation into your user > profile, run "nix-env -iA haskellDevEnv". The argument to > haskellPackages.ghcWithPackages is a function that takes the Haskell > package set as an argument and returns a list of packages to be merged > into one derivation. Taking the package set as an argument allows the > list of libraries to be agnostic of the compiler version you're using. > For example: > > haskellPackages_ghc704.ghcWithPackages (p: [p.mtl]); > haskellPackages_ghc783.ghcWithPackages (p: [p.mtl]); > > Both derivations give you an environment with GHC plus the 'mtl' library, > but one is based on GHC 7.0.4 and the other is based on GHC 7.8.3. > > The second stanza extends the standard Haskell package set from Nixpkgs > with two locally defined packages that were created by running: > > $ cabal2nix cabal://prettify >~/.nixpkgs/prettify.nix > $ cabal2nix cabal://abcnotation >~/.nixpkgs/abcnotation.nix > > These packages are available like any other Nixpkgs Haskell library and > can be used in combination with ghcWithPackages. > > Best regards, > Peter > > _______________________________________________ > nix-dev mailing list > [email protected] > http://lists.science.uu.nl/mailman/listinfo/nix-dev >
_______________________________________________ nix-dev mailing list [email protected] http://lists.science.uu.nl/mailman/listinfo/nix-dev
