summaryrefslogtreecommitdiff
path: root/pkgs/development/haskell-modules/configuration-nix.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/haskell-modules/configuration-nix.nix')
-rw-r--r--pkgs/development/haskell-modules/configuration-nix.nix249
1 files changed, 113 insertions, 136 deletions
diff --git a/pkgs/development/haskell-modules/configuration-nix.nix b/pkgs/development/haskell-modules/configuration-nix.nix
index ba00d2000737..52f9e94401f1 100644
--- a/pkgs/development/haskell-modules/configuration-nix.nix
+++ b/pkgs/development/haskell-modules/configuration-nix.nix
@@ -101,17 +101,6 @@ self: super: builtins.intersectAttrs super {
ormolu = enableSeparateBinOutput super.ormolu;
ghcid = enableSeparateBinOutput super.ghcid;
- # Ensure the necessary frameworks for Darwin.
- OpenAL = if pkgs.stdenv.isDarwin
- then addExtraLibrary super.OpenAL pkgs.darwin.apple_sdk.frameworks.OpenAL
- else super.OpenAL;
-
- # Ensure the necessary frameworks for Darwin.
- proteaaudio = if pkgs.stdenv.isDarwin
- then addExtraLibrary super.proteaaudio pkgs.darwin.apple_sdk.frameworks.AudioToolbox
- else super.proteaaudio;
-
-
hzk = overrideCabal super.hzk (drv: {
preConfigure = "sed -i -e /include-dirs/d hzk.cabal";
configureFlags = [ "--extra-include-dirs=${pkgs.zookeeper_mt}/include/zookeeper" ];
@@ -131,39 +120,11 @@ self: super: builtins.intersectAttrs super {
# Foreign dependency name clashes with another Haskell package.
libarchive-conduit = super.libarchive-conduit.override { archive = pkgs.libarchive; };
- # Fix Darwin build.
- halive = if pkgs.stdenv.isDarwin
- then addBuildDepend super.halive pkgs.darwin.apple_sdk.frameworks.AppKit
- else super.halive;
-
# Heist's test suite requires system pandoc
heist = overrideCabal super.heist (drv: {
testToolDepends = [pkgs.pandoc];
});
- # the system-fileio tests use canonicalizePath, which fails in the sandbox
- system-fileio = if pkgs.stdenv.isDarwin then dontCheck super.system-fileio else super.system-fileio;
-
- # Prevents needing to add `security_tool` as a run-time dependency for
- # everything using x509-system to give access to the `security` executable.
- x509-system =
- if pkgs.stdenv.hostPlatform.isDarwin && !pkgs.stdenv.cc.nativeLibc
- then
- # darwin.security_tool is broken in Mojave (#45042)
-
- # We will use the system provided security for now.
- # Beware this WILL break in sandboxes!
-
- # TODO(matthewbauer): If someone really needs this to work in sandboxes,
- # I think we can add a propagatedImpureHost dep here, but I’m hoping to
- # get a proper fix available soonish.
- overrideCabal super.x509-system (drv: {
- postPatch = (drv.postPatch or "") + ''
- substituteInPlace System/X509/MacOS.hs --replace security /usr/bin/security
- '';
- })
- else super.x509-system;
-
# https://github.com/NixOS/cabal2nix/issues/136 and https://github.com/NixOS/cabal2nix/issues/216
gio = disableHardening (addPkgconfigDepend (addBuildTool super.gio self.buildHaskellPackages.gtk2hs-buildtools) pkgs.glib) ["fortify"];
glib = disableHardening (addPkgconfigDepend (addBuildTool super.glib self.buildHaskellPackages.gtk2hs-buildtools) pkgs.glib) ["fortify"];
@@ -266,12 +227,6 @@ self: super: builtins.intersectAttrs super {
# /homeless-shelter. Disabled.
purescript = dontCheck super.purescript;
- # https://github.com/haskell-foundation/foundation/pull/412
- foundation =
- if pkgs.stdenv.isDarwin
- then dontCheck super.foundation
- else super.foundation;
-
# Hardcoded include path
poppler = overrideCabal super.poppler (drv: {
postPatch = ''
@@ -283,23 +238,8 @@ self: super: builtins.intersectAttrs super {
# Uses OpenGL in testing
caramia = dontCheck super.caramia;
- llvm-hs =
- let llvmHsWithLlvm9 = super.llvm-hs.override { llvm-config = pkgs.llvm_9; };
- in
- if pkgs.stdenv.isDarwin
- then
- overrideCabal llvmHsWithLlvm9 (oldAttrs: {
- # One test fails on darwin.
- doCheck = false;
- # llvm-hs's Setup.hs file tries to add the lib/ directory from LLVM8 to
- # the DYLD_LIBRARY_PATH environment variable. This messes up clang
- # when called from GHC, probably because clang is version 7, but we are
- # using LLVM8.
- preCompileBuildDriver = oldAttrs.preCompileBuildDriver or "" + ''
- substituteInPlace Setup.hs --replace "addToLdLibraryPath libDir" "pure ()"
- '';
- })
- else llvmHsWithLlvm9;
+ # requires llvm 9 specifically https://github.com/llvm-hs/llvm-hs/#building-from-source
+ llvm-hs = super.llvm-hs.override { llvm-config = pkgs.llvm_9; };
# Needs help finding LLVM.
spaceprobe = addBuildTool super.spaceprobe self.llvmPackages.llvm;
@@ -307,7 +247,7 @@ self: super: builtins.intersectAttrs super {
# Tries to run GUI in tests
leksah = dontCheck (overrideCabal super.leksah (drv: {
executableSystemDepends = (drv.executableSystemDepends or []) ++ (with pkgs; [
- gnome3.adwaita-icon-theme # Fix error: Icon 'window-close' not present in theme ...
+ gnome.adwaita-icon-theme # Fix error: Icon 'window-close' not present in theme ...
wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system
gtk3 # Fix error: GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' is not installed
]);
@@ -322,14 +262,6 @@ self: super: builtins.intersectAttrs super {
# Patch to consider NIX_GHC just like xmonad does
dyre = appendPatch super.dyre ./patches/dyre-nix.patch;
- yesod-bin = if pkgs.stdenv.isDarwin
- then addBuildDepend super.yesod-bin pkgs.darwin.apple_sdk.frameworks.Cocoa
- else super.yesod-bin;
-
- hmatrix = if pkgs.stdenv.isDarwin
- then addBuildDepend super.hmatrix pkgs.darwin.apple_sdk.frameworks.Accelerate
- else super.hmatrix;
-
# https://github.com/edwinb/EpiVM/issues/13
# https://github.com/edwinb/EpiVM/issues/14
epic = addExtraLibraries (addBuildTool super.epic self.buildHaskellPackages.happy) [pkgs.boehmgc pkgs.gmp];
@@ -405,43 +337,8 @@ self: super: builtins.intersectAttrs super {
# Looks like Avahi provides the missing library
dnssd = super.dnssd.override { dns_sd = pkgs.avahi.override { withLibdnssdCompat = true; }; };
- # Ensure the necessary frameworks are propagatedBuildInputs on darwin
- OpenGLRaw = overrideCabal super.OpenGLRaw (drv: {
- librarySystemDepends =
- pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends;
- libraryHaskellDepends = drv.libraryHaskellDepends
- ++ pkgs.lib.optionals pkgs.stdenv.isDarwin
- [ pkgs.darwin.apple_sdk.frameworks.OpenGL ];
- preConfigure = pkgs.lib.optionalString pkgs.stdenv.isDarwin ''
- frameworkPaths=($(for i in $nativeBuildInputs; do if [ -d "$i"/Library/Frameworks ]; then echo "-F$i/Library/Frameworks"; fi done))
- frameworkPaths=$(IFS=, ; echo "''${frameworkPaths[@]}")
- configureFlags+=$(if [ -n "$frameworkPaths" ]; then echo -n "--ghc-options=-optl=$frameworkPaths"; fi)
- '';
- });
- GLURaw = overrideCabal super.GLURaw (drv: {
- librarySystemDepends =
- pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends;
- libraryHaskellDepends = drv.libraryHaskellDepends
- ++ pkgs.lib.optionals pkgs.stdenv.isDarwin
- [ pkgs.darwin.apple_sdk.frameworks.OpenGL ];
- });
- bindings-GLFW = overrideCabal super.bindings-GLFW (drv: {
- doCheck = false; # requires an active X11 display
- librarySystemDepends =
- pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends;
- libraryHaskellDepends = drv.libraryHaskellDepends
- ++ pkgs.lib.optionals pkgs.stdenv.isDarwin
- (with pkgs.darwin.apple_sdk.frameworks;
- [ AGL Cocoa OpenGL IOKit Kernel CoreVideo
- pkgs.darwin.CF ]);
- });
- OpenCL = overrideCabal super.OpenCL (drv: {
- librarySystemDepends =
- pkgs.lib.optionals (!pkgs.stdenv.isDarwin) drv.librarySystemDepends;
- libraryHaskellDepends = drv.libraryHaskellDepends
- ++ pkgs.lib.optionals pkgs.stdenv.isDarwin
- [ pkgs.darwin.apple_sdk.frameworks.OpenCL ];
- });
+ # requires an X11 display
+ bindings-GLFW = dontCheck super.bindings-GLFW;
# requires an X11 display in test suite
gi-gtk-declarative = dontCheck super.gi-gtk-declarative;
@@ -474,16 +371,8 @@ self: super: builtins.intersectAttrs super {
testHaskellDepends = (drv.testHaskellDepends or []) ++ [ self.test-framework self.test-framework-hunit ];
});
- # cabal2nix likes to generate dependencies on hinotify when hfsevents is really required
- # on darwin: https://github.com/NixOS/cabal2nix/issues/146.
- hinotify = if pkgs.stdenv.isDarwin then self.hfsevents else super.hinotify;
-
- # FSEvents API is very buggy and tests are unreliable. See
- # http://openradar.appspot.com/10207999 and similar issues.
# https://github.com/haskell-fswatch/hfsnotify/issues/62
- fsnotify = if pkgs.stdenv.isDarwin
- then addBuildDepend (dontCheck super.fsnotify) pkgs.darwin.apple_sdk.frameworks.Cocoa
- else dontCheck super.fsnotify;
+ fsnotify = dontCheck super.fsnotify;
hidapi = addExtraLibrary super.hidapi pkgs.udev;
@@ -596,7 +485,7 @@ self: super: builtins.intersectAttrs super {
# Compile manpages (which are in RST and are compiled with Sphinx).
futhark = with pkgs;
- overrideCabal (addBuildTools super.futhark [makeWrapper python37Packages.sphinx])
+ overrideCabal (addBuildTools super.futhark [makeWrapper python3Packages.sphinx])
(_drv: {
postBuild = (_drv.postBuild or "") + ''
make -C docs man
@@ -657,10 +546,6 @@ self: super: builtins.intersectAttrs super {
spago =
let
- # spago requires an older version of megaparsec, but it appears to work
- # fine with newer versions.
- spagoWithOverrides = doJailbreak super.spago;
-
docsSearchApp_0_0_10 = pkgs.fetchurl {
url = "https://github.com/purescript/purescript-docs-search/releases/download/v0.0.10/docs-search-app.js";
sha256 = "0m5ah29x290r0zk19hx2wix2djy7bs4plh9kvjz6bs9r45x25pa5";
@@ -681,17 +566,8 @@ self: super: builtins.intersectAttrs super {
sha256 = "1hjdprm990vyxz86fgq14ajn0lkams7i00h8k2i2g1a0hjdwppq6";
};
- spagoFixHpack = overrideCabal spagoWithOverrides (drv: {
+ spagoDocs = overrideCabal super.spago (drv: {
postUnpack = (drv.postUnpack or "") + ''
- # The source for spago is pulled directly from GitHub. It uses a
- # package.yaml file with hpack, not a .cabal file. In the package.yaml file,
- # it uses defaults from the master branch of the hspec repo. It will try to
- # fetch these at build-time (but it will fail if running in the sandbox).
- #
- # The following line modifies the package.yaml to not pull in
- # defaults from the hspec repo.
- substituteInPlace "$sourceRoot/package.yaml" --replace 'defaults: hspec/hspec@master' ""
-
# Spago includes the following two files directly into the binary
# with Template Haskell. They are fetched at build-time from the
# `purescript-docs-search` repo above. If they cannot be fetched at
@@ -717,9 +593,8 @@ self: super: builtins.intersectAttrs super {
'';
});
- # Because of the problem above with pulling in hspec defaults to the
- # package.yaml file, the tests are disabled.
- spagoWithoutChecks = dontCheck spagoFixHpack;
+ # Tests require network access.
+ spagoWithoutChecks = dontCheck spagoDocs;
in
spagoWithoutChecks;
@@ -741,7 +616,7 @@ self: super: builtins.intersectAttrs super {
primitive_0_7_1_0 = dontCheck super.primitive_0_7_1_0;
cut-the-crap =
- let path = pkgs.lib.makeBinPath [ pkgs.ffmpeg_3 pkgs.youtube-dl ];
+ let path = pkgs.lib.makeBinPath [ pkgs.ffmpeg pkgs.youtube-dl ];
in overrideCabal (addBuildTool super.cut-the-crap pkgs.makeWrapper) (_drv: {
postInstall = ''
wrapProgram $out/bin/cut-the-crap \
@@ -826,4 +701,106 @@ self: super: builtins.intersectAttrs super {
# Tests access internet
prune-juice = dontCheck super.prune-juice;
+
+ # based on https://github.com/gibiansky/IHaskell/blob/aafeabef786154d81ab7d9d1882bbcd06fc8c6c4/release.nix
+ ihaskell = overrideCabal super.ihaskell (drv: {
+ configureFlags = (drv.configureFlags or []) ++ [
+ # ihaskell's cabal file forces building a shared executable,
+ # but without passing --enable-executable-dynamic, the RPATH
+ # contains /build/ and leads to a build failure with nix
+ "--enable-executable-dynamic"
+ ];
+ preCheck = ''
+ export HOME=$TMPDIR/home
+ export PATH=$PWD/dist/build/ihaskell:$PATH
+ export GHC_PACKAGE_PATH=$PWD/dist/package.conf.inplace/:$GHC_PACKAGE_PATH
+ '';
+ });
+
+ # tests need to execute the built executable
+ stutter = overrideCabal super.stutter (drv: {
+ preCheck = ''
+ export PATH=dist/build/stutter:$PATH
+ '' + (drv.preCheck or "");
+ });
+
+ # Install man page and generate shell completions
+ pinboard-notes-backup = overrideCabal
+ (generateOptparseApplicativeCompletion "pnbackup" super.pinboard-notes-backup)
+ (drv: {
+ postInstall = ''
+ install -D man/pnbackup.1 $out/share/man/man1/pnbackup.1
+ '' + (drv.postInstall or "");
+ });
+
+ # set more accurate set of platforms instead of maintaining
+ # an ever growing list of platforms to exclude via unsupported-platforms
+ cpuid = overrideCabal super.cpuid {
+ platforms = pkgs.lib.platforms.x86;
+ };
+
+ # Pass the correct libarchive into the package.
+ streamly-archive = super.streamly-archive.override { archive = pkgs.libarchive; };
+
+ # passes the -msse2 flag which only works on x86 platforms
+ hsignal = overrideCabal super.hsignal {
+ platforms = pkgs.lib.platforms.x86;
+ };
+
+ # uses x86 intrinsics
+ blake3 = overrideCabal super.blake3 {
+ platforms = pkgs.lib.platforms.x86;
+ };
+
+ # uses x86 intrinsics, see also https://github.com/NixOS/nixpkgs/issues/122014
+ crc32c = overrideCabal super.crc32c {
+ platforms = pkgs.lib.platforms.x86;
+ };
+
+ # uses x86 intrinsics
+ seqalign = overrideCabal super.seqalign {
+ platforms = pkgs.lib.platforms.x86;
+ };
+
+ hls-brittany-plugin = overrideCabal super.hls-brittany-plugin (drv: {
+ testToolDepends = [ pkgs.git ];
+ preCheck = ''
+ export HOME=$TMPDIR/home
+ '';
+ });
+ hls-class-plugin = overrideCabal super.hls-class-plugin (drv: {
+ testToolDepends = [ pkgs.git ];
+ preCheck = ''
+ export HOME=$TMPDIR/home
+ '';
+ });
+ # Tests have file permissions expections that don‘t work with the nix store.
+ hls-stylish-haskell-plugin = dontCheck super.hls-stylish-haskell-plugin;
+ hls-haddock-comments-plugin = overrideCabal super.hls-haddock-comments-plugin (drv: {
+ testToolDepends = [ pkgs.git ];
+ preCheck = ''
+ export HOME=$TMPDIR/home
+ '';
+ });
+ hls-eval-plugin = overrideCabal super.hls-eval-plugin (drv: {
+ preCheck = ''
+ export HOME=$TMPDIR/home
+ '';
+ });
+
+ taglib = overrideCabal super.taglib (drv: {
+ librarySystemDepends = [
+ pkgs.zlib
+ ] ++ (drv.librarySystemDepends or []);
+ });
+
+ # uses x86 assembler
+ inline-asm = overrideCabal super.inline-asm {
+ platforms = pkgs.lib.platforms.x86;
+ };
+
+ # uses x86 assembler in C bits
+ hw-prim-bits = overrideCabal super.hw-prim-bits {
+ platforms = pkgs.lib.platforms.x86;
+ };
}