* Include modifications to nixpkgs and static-haskell-nix as patches. * use the patched static-haskell-nix version * Add cachix postgrest
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
{ mkDerivation
|
||||
, array
|
||||
, base
|
||||
, base-compat
|
||||
, base-orphans
|
||||
, binary
|
||||
, bytestring
|
||||
, containers
|
||||
, deepseq
|
||||
, Diff
|
||||
, directory
|
||||
, filepath
|
||||
, integer-logarithms
|
||||
, mtl
|
||||
, optparse-applicative
|
||||
, parsec
|
||||
, pretty
|
||||
, process
|
||||
, QuickCheck
|
||||
, stdenv
|
||||
, stm
|
||||
, tagged
|
||||
, tar
|
||||
, tasty
|
||||
, tasty-golden
|
||||
, tasty-hunit
|
||||
, tasty-quickcheck
|
||||
, temporary
|
||||
, text
|
||||
, time
|
||||
, transformers
|
||||
, tree-diff
|
||||
, unix
|
||||
}:
|
||||
mkDerivation {
|
||||
pname = "Cabal";
|
||||
version = "3.0.0.0";
|
||||
sha256 = "5143ec26d740c1a508c93a8860e64407e7546c29b9817db20ff1595c1968d287";
|
||||
setupHaskellDepends = [ mtl parsec ];
|
||||
libraryHaskellDepends = [
|
||||
array
|
||||
base
|
||||
binary
|
||||
bytestring
|
||||
containers
|
||||
deepseq
|
||||
directory
|
||||
filepath
|
||||
mtl
|
||||
parsec
|
||||
pretty
|
||||
process
|
||||
text
|
||||
time
|
||||
transformers
|
||||
unix
|
||||
];
|
||||
testHaskellDepends = [
|
||||
array
|
||||
base
|
||||
base-compat
|
||||
base-orphans
|
||||
binary
|
||||
bytestring
|
||||
containers
|
||||
deepseq
|
||||
Diff
|
||||
directory
|
||||
filepath
|
||||
integer-logarithms
|
||||
optparse-applicative
|
||||
pretty
|
||||
process
|
||||
QuickCheck
|
||||
stm
|
||||
tagged
|
||||
tar
|
||||
tasty
|
||||
tasty-golden
|
||||
tasty-hunit
|
||||
tasty-quickcheck
|
||||
temporary
|
||||
text
|
||||
tree-diff
|
||||
];
|
||||
doCheck = false;
|
||||
homepage = "http://www.haskell.org/cabal/";
|
||||
description = "A framework for packaging Haskell software";
|
||||
license = stdenv.lib.licenses.bsd3;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
# Turn a Haskell source package (given its name and source) into a derivation
|
||||
# for a fully static executable.
|
||||
{ nixpkgs, compiler, name, src, patches }:
|
||||
let
|
||||
# The nh2/static-haskell-nix project does all the hard work for us for
|
||||
# building static Haskell executables. We apply a patch for PostgREST below
|
||||
# until the respective pull request is merged. See:
|
||||
# https://github.com/nh2/static-haskell-nix/pull/91
|
||||
# statix-haskell-nix builds everything based on Musl instead of glibc, so
|
||||
# there will be a _lot_ to rebuild if you don't use a binary cache.
|
||||
static-haskell-nix =
|
||||
let
|
||||
rev = "749707fc90b781c3e653e67917a7d571fe82ae7b";
|
||||
in
|
||||
builtins.fetchTarball {
|
||||
url = "https://github.com/nh2/static-haskell-nix/archive/${rev}.tar.gz";
|
||||
sha256 = "155spda2lww378bhx68w6dxwqd5y6s9kin3qbgl2m23r3vmk3m3w";
|
||||
};
|
||||
|
||||
patched-static-haskell-nix =
|
||||
patches.applyPatches "patched-static-haskell-nix" static-haskell-nix
|
||||
[
|
||||
patches.static-haskell-nix-postgrest-libpq
|
||||
];
|
||||
|
||||
haskellPackagesOverrides =
|
||||
lib: final: prev:
|
||||
{
|
||||
# Add our source package.
|
||||
"${name}" = prev.callCabal2nix name src {};
|
||||
|
||||
# cabal2nix depends on Cabal 3.0.*, while our pinned version of Nixpkgs
|
||||
# only provides 2.4 or 3.2. So we pinned 3.0.0.0 in ./Cabal.nix
|
||||
cabal2nix =
|
||||
prev.cabal2nix.overrideScope
|
||||
(self: super: { Cabal = self.callPackage ./Cabal.nix {}; });
|
||||
|
||||
# Pinned version of protolude.
|
||||
protolude =
|
||||
prev.callPackage ../overlays/haskell-packages/protolude.nix {};
|
||||
|
||||
# The tests for the packages below took a long time on static
|
||||
# builds, so we disable them for now - to be investigated.
|
||||
happy = lib.dontCheck prev.happy;
|
||||
};
|
||||
|
||||
# This overlay adds our source package and applies adjustments to the
|
||||
# derivation of other packages that it depends on. The overlay applies to
|
||||
# Haskell packages for the given compiler, which we will later use
|
||||
# with the static-haskell-nix survey.
|
||||
overlay =
|
||||
self: super:
|
||||
# Override the set of Haskell packages at
|
||||
# pkgs.haskell.packages."${compiler}".
|
||||
{
|
||||
haskell = super.haskell // {
|
||||
packages = super.haskell.packages // {
|
||||
"${compiler}" =
|
||||
super.haskell.packages."${compiler}".override
|
||||
{ overrides = haskellPackagesOverrides self.haskell.lib; };
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
patchedNixpkgs =
|
||||
patches.applyPatches "patched-nixpkgs" nixpkgs
|
||||
[
|
||||
patches.nixpkgs-revert-ghc-bootstrap
|
||||
];
|
||||
|
||||
# Apply our overlay to the given pkgs.
|
||||
normalPkgs =
|
||||
(import patchedNixpkgs {}).appendOverlays [ overlay ];
|
||||
|
||||
# Each version of GHC needs a specific version of Cabal.
|
||||
defaultCabalPackageVersionComingWithGhc =
|
||||
{
|
||||
ghc883 = "Cabal_3_2_0_0";
|
||||
}."${compiler}";
|
||||
|
||||
# Let the static-haskell-nix project do the hard work of deriving a set of
|
||||
# fully static Haskell executables, including one for the our source package
|
||||
# that we added through the overlay.
|
||||
survey =
|
||||
import "${patched-static-haskell-nix}/survey"
|
||||
{ inherit normalPkgs compiler defaultCabalPackageVersionComingWithGhc; };
|
||||
in
|
||||
# Return the fully static derivation of our source package.
|
||||
survey.haskellPackages."${name}"
|
||||
Reference in New Issue
Block a user