From e52533a67d5a90af49d4eb08e5a146c5005bd921 Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 01/15] Bump nixpkgs --- nixpkgs/github.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nixpkgs/github.json b/nixpkgs/github.json index 3a5419336..1bd897376 100644 --- a/nixpkgs/github.json +++ b/nixpkgs/github.json @@ -1,8 +1,8 @@ { - "owner": "obsidiansystems", + "owner": "nixos", "repo": "nixpkgs", - "branch": "reflex-platform-unstable", + "branch": "haskell-updates", "private": false, - "rev": "22cf53eb29f52af963398de744c422d6fe15a3d4", - "sha256": "1hz0jhf40byn5v44sznx27msy5mx3a8i25pbqyh5dd42rripdd8z" + "rev": "9bd652c4305d1f6b6b59451036fd0a44a13f78d5", + "sha256": "0prw6ixmcw92khcijdi20h2bckfx6jz7i3asw3d8d59ybdniljqd" } From 2dcc307d4698123ad0a950c65952f28cdee46cd5 Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 02/15] Switch to ghc 9.12 --- default.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index 075e77245..d5cc66cc4 100644 --- a/default.nix +++ b/default.nix @@ -306,7 +306,10 @@ let iosSupport = system == "x86_64-darwin"; }) ]); }; - ghcjs = if __useNewerCompiler then ghcjs8_10 else ghcjs8_6; + ghcjs = ghcjs9_12; + ghcjs9_12 = (makeRecursivelyOverridable nixpkgs.pkgsCross.ghcjs.haskell.packages.ghc912).override { + overrides = nixpkgs.haskell.overlays.combined; + }; ghcjs8_6 = (makeRecursivelyOverridable (nixpkgsCross.ghcjs.haskell.packages.ghcjs86.override (old: { ghc = old.ghc.override { bootPkgs = old.ghc.bootPkgs // { happy = old.ghc.bootPkgs.happy_1_19_12; }; @@ -332,7 +335,10 @@ let iosSupport = system == "x86_64-darwin"; overrides = nixpkgsCross.wasm.haskell.overlays.combined; }); - ghc = if __useNewerCompiler then ghc8_10 else ghc8_6; + ghc = ghc9_12; + ghc9_12 = (makeRecursivelyOverridable nixpkgs.haskell.packages.ghc912).override { + overrides = nixpkgs.haskell.overlays.combined; + }; ghcHEAD = (makeRecursivelyOverridable nixpkgs.haskell.packages.ghcHEAD).override { overrides = nixpkgs.haskell.overlays.combined; }; From 8765b69d078cf7b5b55ad43eb677a015ea66d531 Mon Sep 17 00:00:00 2001 From: maralorn Date: Thu, 29 May 2025 21:58:33 +0200 Subject: [PATCH 03/15] Drop all-cabal-hashes overlay We want to track current nixpkgs anyway ;-) --- default.nix | 4 +--- nixpkgs-overlays/all-cabal-hashes/default.nix | 7 ------- 2 files changed, 1 insertion(+), 10 deletions(-) delete mode 100644 nixpkgs-overlays/all-cabal-hashes/default.nix diff --git a/default.nix b/default.nix index d5cc66cc4..466e9542a 100644 --- a/default.nix +++ b/default.nix @@ -124,8 +124,6 @@ let iosSupport = system == "x86_64-darwin"; mobileGhcOverlay = import ./nixpkgs-overlays/mobile-ghc { inherit lib; }; - allCabalHashesOverlay = import ./nixpkgs-overlays/all-cabal-hashes; - nixpkgsArgs = { inherit system; overlays = [ @@ -135,7 +133,7 @@ let iosSupport = system == "x86_64-darwin"; forceStaticLibs splicesEval mobileGhcOverlay - allCabalHashesOverlay + #allCabalHashesOverlay (self: super: { runtimeShellPackage = if (self.stdenv.hostPlatform.isGhcjs || self.stdenv.targetPlatform.isiOS) diff --git a/nixpkgs-overlays/all-cabal-hashes/default.nix b/nixpkgs-overlays/all-cabal-hashes/default.nix deleted file mode 100644 index c2e7be659..000000000 --- a/nixpkgs-overlays/all-cabal-hashes/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -self: _: { - - all-cabal-hashes = self.fetchurl { - url = https://github.com/commercialhaskell/all-cabal-hashes/archive/f297f1f3fc337e2f94783f254cb6db1ee2022adb.tar.gz; - sha256 = "sha256-j2HovXCSBkPircuu6N0ZVTIFUTvET7UC4eaiRITrk2g="; - }; -} From fc503ce3f58711d451a60f3cf7992b15cabd12f5 Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 04/15] Drop GHC patches --- default.nix | 1 - nixpkgs-overlays/ghc.nix | 25 ------------------------- 2 files changed, 26 deletions(-) delete mode 100644 nixpkgs-overlays/ghc.nix diff --git a/default.nix b/default.nix index 466e9542a..80fc81c0e 100644 --- a/default.nix +++ b/default.nix @@ -127,7 +127,6 @@ let iosSupport = system == "x86_64-darwin"; nixpkgsArgs = { inherit system; overlays = [ - (import ./nixpkgs-overlays/ghc.nix { inherit lib; }) hackGetOverlay bindHaskellOverlays forceStaticLibs diff --git a/nixpkgs-overlays/ghc.nix b/nixpkgs-overlays/ghc.nix deleted file mode 100644 index 3d4aaaa21..000000000 --- a/nixpkgs-overlays/ghc.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ lib }: - -self: super: { - cabal2nix-unwrapped = self.haskell.packages.ghc8107.cabal2nix; - cabal-install = self.haskell.packages.ghc8107.cabal-install; - # Apply custom patches to Haskell compilers - haskell = super.haskell // { - compiler = super.haskell.compiler // { - ghc8107 = super.haskell.compiler.ghc8107.overrideAttrs (drv: { - patches = (drv.patches or []) ++ lib.optionals (self.stdenv.targetPlatform.isiOS || self.stdenv.targetPlatform.isAarch64 && self.stdenv.targetPlatform.isDarwin) [ - (super.fetchurl { - url = "https://raw.githubusercontent.com/reflex-frp/reflex-platform/mars/modules/patches/aarch64-darwin/fix_dead_strip.patch"; - sha256 = "sha256-1VcftxpaMmLzMnB8X4M6Xg9o+OmgpaNOeF7Yrn1x0EI="; - }) - ]; - }); - }; - packages = super.haskell.packages // { - ghc8107 = super.haskell.packages.ghc8107.override { - buildHaskellPackages = self.buildPackages.haskell.packages.ghc8107; - ghc = self.buildPackages.haskell.compiler.ghc8107; - }; - }; - }; -} From 9a8b8d5e49a486137200a24cf2b5622db541c60f Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 05/15] Deactivate zlib override It somehow creates an infinite recursion, also only seems to be relevant for cross compilation --- default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/default.nix b/default.nix index 80fc81c0e..05a2ae910 100644 --- a/default.nix +++ b/default.nix @@ -117,9 +117,9 @@ let iosSupport = system == "x86_64-darwin"; configureFlags = ["--enable-shared" "--enable-static"]; }); }; - zlib = super.zlib.override (lib.optionalAttrs - (self.stdenv.hostPlatform != self.stdenv.buildPlatform) - { static = true; shared = true; }); + #zlib = super.zlib.override (lib.optionalAttrs + # (self.stdenv.hostPlatform != self.stdenv.buildPlatform) + # { static = true; shared = true; }); }; mobileGhcOverlay = import ./nixpkgs-overlays/mobile-ghc { inherit lib; }; From 8a81c34f75c127c3e0a3b85dc23837d00ef2882e Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 06/15] Deactivate libiconv override Causes infinite recursion According to @alexfmpe unnecessary since: https://github.com/NixOS/nixpkgs/pull/355543 --- default.nix | 4 ---- 1 file changed, 4 deletions(-) diff --git a/default.nix b/default.nix index 05a2ae910..f8e9f2b6b 100644 --- a/default.nix +++ b/default.nix @@ -167,10 +167,6 @@ let iosSupport = system == "x86_64-darwin"; ''; }); - libiconv = super.libiconv.overrideAttrs (old: lib.optionalAttrs (self.stdenv.hostPlatform.useAndroidPrebuilt or false) { - configureFlags = [ "--disable-shared" "--enable-static" ]; - }); - libffi = if (self.stdenv.hostPlatform.useAndroidPrebuilt or false) then super.libffi_3_3 else super.libffi; }) ] ++ nixpkgsOverlays; From af40daf6c57d560ff284bc7b0842ac0ddfd70b97 Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 07/15] Deactivate polkit override Invalidates cache for unknown reason --- default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/default.nix b/default.nix index f8e9f2b6b..c090a5447 100644 --- a/default.nix +++ b/default.nix @@ -139,9 +139,9 @@ let iosSupport = system == "x86_64-darwin"; then super.buildPackages.runtimeShellPackage else super.runtimeShellPackage; - polkit = super.polkit.override { - gobject-introspection = super.gobject-introspection-unwrapped; - }; + #polkit = super.polkit.override { + # gobject-introspection = super.gobject-introspection-unwrapped; + #}; darwin = super.darwin.overrideScope (dself: dsuper: { ios-deploy = dsuper.ios-deploy.overrideAttrs (_: { From fe26fc6a7d486349633b2bfab79e06ee25f527cd Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 08/15] Update to new pkg-config name --- default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/default.nix b/default.nix index c090a5447..74a0cc6bf 100644 --- a/default.nix +++ b/default.nix @@ -560,7 +560,7 @@ in let this = rec { curl nix-prefetch-scripts nodejs - pkgconfig + pkg-config closurecompiler ; }; From dba43406d6c532f07e2c390799f7d249a608f279 Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 09/15] Drop reflex-ghci reflex-vty is broken in nixpkgs --- default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/default.nix b/default.nix index 74a0cc6bf..ecf6fcc2e 100644 --- a/default.nix +++ b/default.nix @@ -553,7 +553,6 @@ in let this = rec { ghcid hasktags stylish-haskell # Recent stylish-haskell only builds with AMP in place - reflex-ghci ; inherit (nixpkgs) cabal2nix From 2cbfd398f8c8f710afadd45e71acb699913acbcc Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 10/15] Drop stylish-haskell broken on ghc 9.12 --- default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/default.nix b/default.nix index ecf6fcc2e..5314a573b 100644 --- a/default.nix +++ b/default.nix @@ -552,7 +552,6 @@ in let this = rec { cabal-install ghcid hasktags - stylish-haskell # Recent stylish-haskell only builds with AMP in place ; inherit (nixpkgs) cabal2nix From 35148194d3c1156894449d26815a5c1c2bbf7dfa Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 11/15] Install haskell-language-server --- default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/default.nix b/default.nix index 5314a573b..662a050fa 100644 --- a/default.nix +++ b/default.nix @@ -548,6 +548,7 @@ in let this = rec { # Tools that are useful for development under both ghc and ghcjs generalDevTools' = { nativeHaskellPackages ? ghc }: { inherit (nativeHaskellPackages) + haskell-language-server Cabal cabal-install ghcid From 6d20e75889bdcf91a5574bcae3e19ab10780f2e9 Mon Sep 17 00:00:00 2001 From: maralorn Date: Thu, 29 May 2025 22:42:23 +0200 Subject: [PATCH 12/15] =?UTF-8?q?Don=E2=80=99t=20install=20tools=20from=20?= =?UTF-8?q?haskellPackages=20if=20avoidable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/default.nix b/default.nix index 662a050fa..9a379bf2e 100644 --- a/default.nix +++ b/default.nix @@ -550,11 +550,11 @@ in let this = rec { inherit (nativeHaskellPackages) haskell-language-server Cabal - cabal-install - ghcid hasktags ; inherit (nixpkgs) + cabal-install + ghcid cabal2nix curl nix-prefetch-scripts From fd464a79d36c7e26e4f11b2a71d55ba69718c8bf Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 13/15] Drop obsolete pins --- haskell-overlays/default.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 087c50fd5..2cbe5df4a 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -118,8 +118,6 @@ rec { combined-ghc = self: super: foldExtensions [ (self: super: { - hoogle = self.callHackage "hoogle" "5.0.18.3" {}; - hpack = self.callHackage "hpack" "0.34.5" {}; }) (optionalExtension (versionWildcard [ 8 6 ] super.ghc.version) ghc-8_6) (optionalExtension (lib.versionOlder "8.11" super.ghc.version) ghc-head) From ff6f908367789db888b4c9f4a656c12d364d991e Mon Sep 17 00:00:00 2001 From: maralorn Date: Tue, 13 May 2025 18:18:06 +0200 Subject: [PATCH 14/15] Drop untriaged --- haskell-overlays/default.nix | 1 - haskell-overlays/untriaged.nix | 96 ---------------------------------- 2 files changed, 97 deletions(-) delete mode 100644 haskell-overlays/untriaged.nix diff --git a/haskell-overlays/default.nix b/haskell-overlays/default.nix index 2cbe5df4a..5a090e463 100644 --- a/haskell-overlays/default.nix +++ b/haskell-overlays/default.nix @@ -47,7 +47,6 @@ rec { reflexPackages profiling - untriaged (optionalExtension enableExposeAllUnfoldings exposeAllUnfoldings) diff --git a/haskell-overlays/untriaged.nix b/haskell-overlays/untriaged.nix deleted file mode 100644 index 212967497..000000000 --- a/haskell-overlays/untriaged.nix +++ /dev/null @@ -1,96 +0,0 @@ -{ haskellLib -, fetchFromGitHub -, nixpkgs -}: - -with haskellLib; - -self: super: { - - # Need an older version for GHC 8.6 - haddock-api = dontHaddock (doJailbreak (self.callHackage "haddock-api" "2.22.0" {})); - # TODO this conflicts with the pandoc version - # haddock-library = doJailbreak (self.callHackage "haddock-library" "1.7.0" {}); - - # Fixing things that are marked broken in 20.09: - constrained-dynamic = dontCheck (markUnbroken super.constrained-dynamic); - haven = doJailbreak (markUnbroken super.haven); - - # These take over an hour to run, each - cryptonite = dontCheck super.cryptonite; - scientific = dontCheck (self.callHackage "scientific" "0.3.7.0" {}); - - # pandoc 2.16 and dependencies - pandoc = self.callHackage "pandoc" "2.16.2" {}; - citeproc = self.callHackage "citeproc" "0.6" {}; - hslua-marshalling = self.callHackage "hslua-marshalling" "2.0.1" {}; - hslua-module-path = self.callHackage "hslua-module-path" "1.0.0" {}; - hslua-module-version = self.callHackage "hslua-module-version" "1.0.0" {}; - lpeg = self.callHackage "lpeg" "1.0.1" {}; - tasty-bench = self.callHackage "tasty-bench" "0.3.1" {}; - unicode-collation = self.callHackage "unicode-collation" "0.1.3.1" {}; - - # beam packages - beam-core = self.callHackage "beam-core" "0.10.0.0" {}; - beam-migrate = self.callHackage "beam-migrate" "0.5.2.0" {}; - beam-postgres = haskellLib.dontCheck (self.callHackage "beam-postgres" "0.5.3.0" {}); - beam-automigrate = self.callHackage "beam-automigrate" "0.1.3.0" {}; - - # hnix 0.12 and dependencies - hnix = dontCheck - (overrideCabal (self.callCabal2nix "hnix" (nixpkgs.hackGet ./hnix/hnix) {}) (drv: { - librarySystemDepends = (drv.librarySystemDepends or []) ++ [ nixpkgs.nix ]; - testHaskellDepends = (drv.testHaskellDepends or []) ++ [ nixpkgs.nix super.criterion ]; - })); - hnix-store-core = - self.callCabal2nix "hnix" (nixpkgs.hackGet ./hnix/hnix-store + "/hnix-store-core") {}; - hnix-store-remote = - self.callCabal2nix "hnix" (nixpkgs.hackGet ./hnix/hnix-store + "/hnix-store-remote") {}; - neat-interpolation = self.callHackage "neat-interpolation" "0.4" {}; - prettyprinter = self.callHackage "prettyprinter" "1.7.0" {}; - cryptohash-sha512 = doJailbreak super.cryptohash-sha512; - ListLike = self.callHackage "ListLike" "4.7.3" {}; - - # ghcjs-promise is marked broken in nixpkgs - ghcjs-promise = self.callHackage "ghcjs-promise" "0.1.0.3" {}; - - utf8-string = self.callHackage "utf8-string" "1.0.1.1" {}; - - ghcjs-base = doJailbreak (self.callHackage "ghcjs-base" "0.2.1.0" {}); - hlint = self.callHackage "hlint" "3.2.8" {}; - - # aeson 2 support - # jailbreak to allow older primitive version - aeson = doJailbreak (self.callHackage "aeson" "2.1.1.0" {}); - aeson-pretty = overrideCabal (self.callHackage "aeson-pretty" "0.8.9" {}) (drv: { - jailbreak = true; - # support our version of unordered-containers - preConfigure = '' - substituteInPlace Data/Aeson/Encode/Pretty.hs \ - --replace "import qualified Data.HashMap.Strict as H (toList, mapKeys)" "import qualified Data.HashMap.Strict as H (toList)" - ''; - }); - hashable = self.callHackage "hashable" "1.3.5.0" {}; - generically = self.callHackage "generically" "0.1" {}; - OneTuple = self.callHackage "OneTuple" "0.3.1" {}; - attoparsec = self.callHackage "attoparsec" "0.14.4" {}; - quickcheck-instances = self.callHackage "quickcheck-instances" "0.3.28" {}; - vector = self.callHackage "vector" "0.12.3.1" {}; - indexed-traversable = self.callHackage "indexed-traversable" "0.1.2" {}; - semialign = self.callHackage "semialign" "1.2.0.1" {}; - text-short = self.callHackage "text-short" "0.1.5" {}; - time-compat = self.callHackage "time-compat" "1.9.6.1" {}; - base-orphans = self.callHackage "base-orphans" "0.8.7" {}; - yaml = self.callHackage "yaml" "0.11.7.0" {}; - websockets = self.callHackage "websockets" "0.12.7.3" {}; - http2 = self.callHackage "http2" "3.0.3" {}; - HsYAML-aeson = self.callHackage "HsYAML-aeson" "0.2.0.1" {}; - fsnotify = self.callHackage "fsnotify" "0.4.1.0" {}; - unliftio = dontCheck (self.callHackage "unliftio" "0.2.24.0" {}); - sandwich = self.callHackage "sandwich" "0.1.0.6" {}; - ghcid = self.callHackage "ghcid" "0.8.8" {}; - postgresql-simple = self.callHackage "postgresql-simple" "0.6.5" {}; - ghc-lib-parser = super.ghc-lib-parser_8_10_7_20220219; - ghc-lib-parser-ex = super.ghc-lib-parser-ex_8_10_0_24; - stylish-haskell = doJailbreak (self.callHackage "stylish-haskell" "0.13.0.0" {}); # jailbreak to allow newer aeson -} From 88792de686f9f0426e6e01575cf800b6d9f71cda Mon Sep 17 00:00:00 2001 From: maralorn Date: Wed, 11 Jun 2025 11:57:56 +0200 Subject: [PATCH 15/15] Drop most reflex-packages overrides --- haskell-overlays/reflex-packages/default.nix | 306 +++++-------------- 1 file changed, 83 insertions(+), 223 deletions(-) diff --git a/haskell-overlays/reflex-packages/default.nix b/haskell-overlays/reflex-packages/default.nix index f7cc5c535..bf601e5c8 100644 --- a/haskell-overlays/reflex-packages/default.nix +++ b/haskell-overlays/reflex-packages/default.nix @@ -5,36 +5,17 @@ , useWebkit2Gtk }: -with haskellLib; +with haskellLib.compose; self: super: let - universeRepo = self._dep.universe; - reflexDomRepo = self._dep.reflex-dom; - jsaddleSrc = self._dep.jsaddle; - gargoyleSrc = self._dep.gargoyle; - wasmCross = hackGet ../../wasm-cross; - reflexOptimizerFlag = lib.optional (useReflexOptimizer && (self.ghc.cross or null) == null) "-fuse-reflex-optimizer"; useTemplateHaskellFlag = lib.optional (!__useTemplateHaskell) "-f-use-template-haskell"; useWebkit2GtkFlag = if useWebkit2Gtk then ["-fwebkit2gtk"] else ["-f-webkit2gtk"] ++ lib.optional ((nixpkgs.stdenv.hostPlatform.isLinux or false) && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) "-fuse-warp"; # Enable warp on linux if webkit2gtk is disabled. Other platforms have other default runners - inherit (nixpkgs) stdenv; - # Older chromium for reflex-dom-core test suite - nixpkgs_oldChromium = import ../../nixpkgs-old-chromium { - inherit (nixpkgs.stdenv.buildPlatform) system; - overlays = [ (self: super: { - # Disable tests for p11-kit, a dependency of chromium - # They fail on non-NixOS systems - # https://github.com/NixOS/nixpkgs/issues/96715 - p11-kit = super.p11-kit.overrideAttrs (oldAttrs: { - doCheck = false; - }); - })]; - }; in { _dep = super._dep or {} // thunkSet ./dep; @@ -43,206 +24,85 @@ in ## Reflex family ## - reflex = self.callCabal2nixWithOptions "reflex" self._dep.reflex (lib.concatStringsSep " " (lib.concatLists [ - (lib.optional enableTraceReflexEvents "-fdebug-trace-events") - reflexOptimizerFlag - useTemplateHaskellFlag - (lib.optional useFastWeak "-ffast-weak") - ])) {}; - - reflex-todomvc = - let - flags = - if useWebkit2Gtk && nixpkgs.stdenv.hostPlatform.isLinux - then [ "-f-warp" "-f-webkitgtk" "-f-wkwebview" ] - else if (nixpkgs.stdenv.hostPlatform.isLinux && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) - then [ "-fwarp" "-f-webkitgtk" "-f-wkwebview" "-f-webkit2gtk" ] - else if self.ghc.stdenv.targetPlatform.isiOS - then [ "-f-webkit2gtk" "-f-warp" "-f-webkitgtk" ] - else if nixpkgs.stdenv.hostPlatform.isDarwin - then [ "-fwkwebview" "-f-webkit2gtk" "-f-webkitgtk" ] - else []; - in - (haskellLib.doJailbreak (self.callCabal2nixWithOptions "reflex-todomvc" self._dep.reflex-todomvc (lib.concatStringsSep " " flags) {})); - reflex-aeson-orphans = self.callCabal2nix "reflex-aeson-orphans" self._dep.reflex-aeson-orphans {}; - - # The tests for reflex-dom-core are not deterministic, disable them, and run them manually - reflex-dom-core = let - inherit (self) ghc; - noGcTest = stdenv.hostPlatform.system != "x86_64-linux" - || stdenv.hostPlatform != stdenv.buildPlatform - || stdenv.targetPlatform.isiOS - || (ghc.isGhcjs or false); - in haskellLib.overrideCabal - (self.callCabal2nixWithOptions "reflex-dom-core" (reflexDomRepo + "/reflex-dom-core") (lib.concatStringsSep " " (lib.concatLists [ - reflexOptimizerFlag - useTemplateHaskellFlag - (lib.optional enableLibraryProfiling "-fprofile-reflex") - [ "-f-hydration-tests" ] - [ "-f-gc-tests" ] - ])) {}) - (drv: { - # TODO: Get hlint working for cross-compilation - #doCheck = stdenv.hostPlatform == stdenv.buildPlatform && !(ghc.isGhcjs or false); - doCheck = false; - # The headless browser run as part of the tests will exit without this - preBuild = (drv.preBuild or "") + '' - export HOME="$PWD" - ''; - - # Show some output while running tests, so we might notice what's wrong - testTarget = "--show-details=streaming"; - - testHaskellDepends = with self; (drv.testHaskellDepends or []) ++ lib.optionals (!noGcTest) [ - temporary - jsaddle-warp - process - chrome-test-utils - ]; - - testSystemDepends = with nixpkgs; (drv.testSystemDepends or []) ++ lib.optionals (nixpkgs.stdenv.hostPlatform.isLinux) [ - nixpkgs_oldChromium.selenium-server-standalone - nixpkgs_oldChromium.chromium - which - ] ++ lib.optionals (!noGcTest) [ - nixpkgs.iproute2 - ]; - } // lib.optionalAttrs (!noGcTest) { - # The headless browser run as part of gc tests would hang/crash without this - preCheck = '' - export FONTCONFIG_PATH=${nixpkgs.fontconfig.out}/etc/fonts - '' + (drv.preCheck or ""); - }); - - reflex-dom = haskellLib.doJailbreak (haskellLib.overrideCabal (self.callCabal2nixWithOptions "reflex-dom" (reflexDomRepo + "/reflex-dom") (lib.concatStringsSep " " (lib.concatLists [ - reflexOptimizerFlag - useTemplateHaskellFlag - useWebkit2GtkFlag - ])) { }) (drv: { - preConfigure = (drv.preConfigure or "") + '' - sed -i 's|aeson >=1.4 && <1.6|aeson -any|g' *.cabal - ''; - - libraryHaskellDepends = [ - self.reflex - self.reflex-dom-core - self.aeson - ] ++ lib.optional (nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt or false) self.android-activity - ++ lib.optional (nixpkgs.stdenv.hostPlatform.isDarwin or false) self.jsaddle-wkwebview - ++ lib.optional ((nixpkgs.stdenv.hostPlatform.isLinux or false) && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) self.jsaddle-warp; - })); - - chrome-test-utils = self.callCabal2nix "chrome-test-utils" (reflexDomRepo + "/chrome-test-utils") {}; - - ## - ## Terminal / Conventional OS - ## - - reflex-vty = haskellLib.doJailbreak (self.callCabal2nix "reflex-vty" self._dep.reflex-vty {}); - reflex-process = self.callCabal2nix "reflex-process" self._dep.reflex-process {}; - reflex-fsnotify = self.callCabal2nix "reflex-fsnotify" self._dep.reflex-fsnotify {}; - - ## - ## Tooling - ## - - reflex-ghci = dontCheck (self.callCabal2nix "reflex-ghci" self._dep.reflex-ghci {}); - - ## - ## GHCJS and JSaddle - ## - - jsaddle = doJailbreak (self.callCabal2nix "jsaddle" (jsaddleSrc + "/jsaddle") {}); - jsaddle-clib = self.callCabal2nix "jsaddle-clib" (jsaddleSrc + "/jsaddle-clib") {}; - jsaddle-webkit2gtk = overrideCabal (self.callCabal2nix "jsaddle-webkit2gtk" (jsaddleSrc + "/jsaddle-webkit2gtk") {}) (drv: { - preConfigure = "substituteInPlace jsaddle-webkit2gtk.cabal --replace 'aeson >=0.8.0.2 && <2.1' aeson"; - }); - jsaddle-webkitgtk = self.callCabal2nix "jsaddle-webkitgtk" (jsaddleSrc + "/jsaddle-webkitgtk") {}; - jsaddle-wkwebview = overrideCabal (self.callCabal2nix "jsaddle-wkwebview" (jsaddleSrc + "/jsaddle-wkwebview") {}) (drv: { - preConfigure = "substituteInPlace jsaddle-wkwebview.cabal --replace 'aeson >=0.8.0.2 && <2.1' aeson"; - libraryFrameworkDepends = (drv.libraryFrameworkDepends or []) ++ - (if nixpkgs.stdenv.hostPlatform.useiOSPrebuilt then [ - "${nixpkgs.buildPackages.darwin.xcode}/Contents/Developer/Platforms/${nixpkgs.stdenv.hostPlatform.xcodePlatform}.platform/Developer/SDKs/${nixpkgs.stdenv.hostPlatform.xcodePlatform}.sdk/System" - ] else (with nixpkgs.buildPackages.darwin.apple_sdk.frameworks; [ Cocoa WebKit ])); - buildDepends = lib.optional (!nixpkgs.stdenv.hostPlatform.useiOSPrebuilt) [ nixpkgs.buildPackages.darwin.cf-private ]; - }); - - # another broken test - # phantomjs has issues with finding the right port - # jsaddle-warp = dontCheck (addTestToolDepend (self.callCabal2nix "jsaddle-warp" "${jsaddleSrc}/jsaddle-warp" {})); - jsaddle-warp = overrideCabal (dontCheck (self.callCabal2nix "jsaddle-warp" (jsaddleSrc + "/jsaddle-warp") {})) (derv: { - preConfigure = "substituteInPlace jsaddle-warp.cabal --replace 'aeson >=0.8.0.2 && <2.1' aeson"; - }); - - jsaddle-dom = doJailbreak (self.callCabal2nix "jsaddle-dom" self._dep.jsaddle-dom {}); - jsaddle-wasm = self.callCabal2nix "jsaddle-wasm" (hackGet (wasmCross + "/jsaddle-wasm")) {}; - ghcjs-dom = self.callCabal2nix "ghcjs-dom" (self._dep.ghcjs-dom + "/ghcjs-dom") {}; - ghcjs-dom-jsaddle = self.callCabal2nix "ghcjs-dom-jsaddle" (self._dep.ghcjs-dom + "/ghcjs-dom-jsaddle") {}; - ghcjs-dom-jsffi = self.callCabal2nix "ghcjs-dom-jsffi" (self._dep.ghcjs-dom + "/ghcjs-dom-jsffi") {}; - - ## - ## Gargoyle and dependencies - ## - - gargoyle = self.callCabal2nixWithOptions "gargoyle" gargoyleSrc "--subpath gargoyle" {}; - gargoyle-postgresql = haskellLib.overrideCabal - (self.callCabal2nixWithOptions "gargoyle-postgresql" gargoyleSrc "--subpath gargoyle-postgresql" {}) - (drv: { - testSystemDepends = (drv.testSystemDepends or []) ++ [ nixpkgs.postgresql_10 ]; - }); - gargoyle-postgresql-nix = haskellLib.overrideCabal - (self.callCabal2nixWithOptions "gargoyle-postgresql-nix" gargoyleSrc "--subpath gargoyle-postgresql-nix" {}) - (drv: { - librarySystemDepends = (drv.librarySystemDepends or []) ++ [ nixpkgs.postgresql_10 ]; - }); - gargoyle-postgresql-connect = self.callCabal2nixWithOptions "gargoyle-postgresql-connect" gargoyleSrc "--subpath gargoyle-postgresql-connect" {}; - which = self.callHackage "which" "0.2" {}; - - ## - ## Misc other dependencies - ## - - haskell-gi-overloading = dontHaddock (self.callHackage "haskell-gi-overloading" "0.0" {}); - monoidal-containers = self.callHackage "monoidal-containers" "0.6.3.0" {}; - patch = self.callCabal2nix "patch" self._dep.patch {}; - commutative-semigroups = self.callCabal2nix "commutative-semigroups" self._dep.commutative-semigroups {}; - witherable = self.callHackage "witherable" "0.4.2" {}; - - webdriver = markUnbroken (self.callHackage "webdriver" "0.9.0.1" {}); - - # Not on Hackage yet - # Version 1.2.1 not on Hackage yet - hspec-webdriver = self.callCabal2nix "hspec-webdriver" (fetchFromGitHub { - owner = "dfordivam"; - repo = "hspec-webdriver-clone"; - rev = "0d748b7bb7cd74dce0a55a1ec86b01dbb8a71cd8"; - sha256 = "1criynifhvmnqwhrshmzylikqkvlgq98xf72w9cdd2zpjw539qf0"; - }) {}; - - constraints-extras = self.callCabal2nix "constraints-extras" (hackGet ./dep/constraints-extras) {}; - some = self.callHackage "some" "1.0.4" {}; - prim-uniq = self.callHackage "prim-uniq" "0.2" {}; - aeson-gadt-th = self.callHackage "aeson-gadt-th" "0.2.5.1" {}; - dependent-map = self.callCabal2nix "dependent-map" (hackGet ./dep/dependent-map) {}; - dependent-monoidal-map = self.callCabal2nix "dependent-monoidal-map" self._dep.dependent-monoidal-map {}; - dependent-sum = self.callCabal2nix "dependent-sum" self._dep.dependent-sum {}; - dependent-sum-template = self.callCabal2nix "dependent-sum-template" self._dep.dependent-sum-template {}; - dependent-sum-universe-orphans = self.callCabal2nix "dependent-sum-universe-orphans" self._dep.dependent-sum-universe-orphans {}; - dependent-sum-aeson-orphans = self.callCabal2nix "dependent-sum-aeson-orphans" self._dep.dependent-sum-aeson-orphans {}; - - # Need to use `--subpath` because LICENSE in each dir is a symlink to the repo root. - universe = self.callCabal2nixWithOptions "universe" universeRepo "--subpath universe" {}; - universe-base = self.callCabal2nixWithOptions "universe" universeRepo "--subpath universe-base" {}; - universe-dependent-sum = nixpkgs.haskell.lib.doJailbreak (self.callCabal2nixWithOptions "universe" universeRepo "--subpath universe-dependent-sum" {}); - universe-instances-extended = self.callCabal2nixWithOptions "universe" universeRepo "--subpath universe-instances-extended" {}; - universe-reverse-instances = self.callCabal2nixWithOptions "universe" universeRepo "--subpath universe-reverse-instances" {}; - universe-instances-base = self.callCabal2nixWithOptions "universe" universeRepo "--subpath deprecated/universe-instances-base" {}; - - th-abstraction = self.callHackage "th-abstraction" "0.4.3.0" {}; - - vessel = self.callCabal2nix "vessel" self._dep.vessel {}; - - # Slightly newer version to fix - # https://github.com/danfran/cabal-macosx/issues/13 - cabal-macosx = self.callHackage "cabal-macosx" "0.2.4.2" {}; -} + #reflex = self.callCabal2nixWithOptions "reflex" self._dep.reflex (lib.concatStringsSep " " (lib.concatLists [ + # (lib.optional enableTraceReflexEvents "-fdebug-trace-events") + # reflexOptimizerFlag + # useTemplateHaskellFlag + # (lib.optional useFastWeak "-ffast-weak") + #])) {}; + + #reflex-todomvc = + # let + # flags = + # if useWebkit2Gtk && nixpkgs.stdenv.hostPlatform.isLinux + # then [ "-f-warp" "-f-webkitgtk" "-f-wkwebview" ] + # else if (nixpkgs.stdenv.hostPlatform.isLinux && !nixpkgs.stdenv.hostPlatform.useAndroidPrebuilt) + # then [ "-fwarp" "-f-webkitgtk" "-f-wkwebview" "-f-webkit2gtk" ] + # else if self.ghc.stdenv.targetPlatform.isiOS + # then [ "-f-webkit2gtk" "-f-warp" "-f-webkitgtk" ] + # else if nixpkgs.stdenv.hostPlatform.isDarwin + # then [ "-fwkwebview" "-f-webkit2gtk" "-f-webkitgtk" ] + # else []; + # in + # (haskellLib.doJailbreak (self.callCabal2nixWithOptions "reflex-todomvc" self._dep.reflex-todomvc (lib.concatStringsSep " " flags) {})); + #reflex-aeson-orphans = self.callCabal2nix "reflex-aeson-orphans" self._dep.reflex-aeson-orphans {}; + + ## The tests for reflex-dom-core are not deterministic, disable them, and run them manually + #reflex-dom-core = let + # inherit (self) ghc; + # noGcTest = stdenv.hostPlatform.system != "x86_64-linux" + # || stdenv.hostPlatform != stdenv.buildPlatform + # || stdenv.targetPlatform.isiOS + # || (ghc.isGhcjs or false); + #in haskellLib.overrideCabal + # (self.callCabal2nixWithOptions "reflex-dom-core" (reflexDomRepo + "/reflex-dom-core") (lib.concatStringsSep " " (lib.concatLists [ + # reflexOptimizerFlag + # useTemplateHaskellFlag + # (lib.optional enableLibraryProfiling "-fprofile-reflex") + # [ "-f-hydration-tests" ] + # [ "-f-gc-tests" ] + # ])) {}) + # (drv: { + # # TODO: Get hlint working for cross-compilation + # #doCheck = stdenv.hostPlatform == stdenv.buildPlatform && !(ghc.isGhcjs or false); + # doCheck = false; + # # The headless browser run as part of the tests will exit without this + # preBuild = (drv.preBuild or "") + '' + # export HOME="$PWD" + # ''; + + # # Show some output while running tests, so we might notice what's wrong + # testTarget = "--show-details=streaming"; + + # testHaskellDepends = with self; (drv.testHaskellDepends or []) ++ lib.optionals (!noGcTest) [ + # temporary + # jsaddle-warp + # process + # chrome-test-utils + # ]; + + # testSystemDepends = with nixpkgs; (drv.testSystemDepends or []) ++ lib.optionals (nixpkgs.stdenv.hostPlatform.isLinux) [ + # nixpkgs_oldChromium.selenium-server-standalone + # nixpkgs_oldChromium.chromium + # which + # ] ++ lib.optionals (!noGcTest) [ + # nixpkgs.iproute2 + # ]; + # } // lib.optionalAttrs (!noGcTest) { + # # The headless browser run as part of gc tests would hang/crash without this + # preCheck = '' + # export FONTCONFIG_PATH=${nixpkgs.fontconfig.out}/etc/fonts + # '' + (drv.preCheck or ""); + # }); + + reflex-dom = lib.pipe super.reflex-dom [ + (appendConfigureFlags [reflexOptimizerFlag useTemplateHaskellFlag useWebkit2GtkFlag]) + (if useWebkit2Gtk then lib.id else addBuildDepends [self.jsaddle-warp]) + (x: x.override { + jsaddle-webkit2gtk = if useWebkit2Gtk + then self.jsaddle-webkit2gtk + else null; + }) + ]; + + }