about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--third_party/overlays/haskell/default.nix50
-rw-r--r--third_party/overlays/haskell/extra-pkgs/brick-0.71.1.nix70
-rw-r--r--third_party/overlays/haskell/extra-pkgs/graphmod-1.4.5.1.nix33
-rw-r--r--third_party/sources/sources.json36
-rw-r--r--users/Profpatsch/arglib/arglib-netencode.cabal2
-rw-r--r--users/Profpatsch/cas-serve/cas-serve.cabal2
-rw-r--r--users/Profpatsch/cas-serve/default.nix11
-rw-r--r--users/Profpatsch/execline/exec-helpers.cabal2
-rw-r--r--users/Profpatsch/ical-smolify/ical-smolify.cabal2
-rw-r--r--users/Profpatsch/my-prelude/my-prelude.cabal2
-rw-r--r--users/Profpatsch/netencode/netencode.cabal2
-rw-r--r--users/grfn/xanthous/package.yaml1
-rw-r--r--users/grfn/xanthous/src/Xanthous/Data.hs13
-rw-r--r--users/grfn/xanthous/src/Xanthous/Orphans.hs5
-rw-r--r--users/grfn/xanthous/xanthous.cabal12
15 files changed, 187 insertions, 56 deletions
diff --git a/third_party/overlays/haskell/default.nix b/third_party/overlays/haskell/default.nix
index 54d278a786..6116c5c339 100644
--- a/third_party/overlays/haskell/default.nix
+++ b/third_party/overlays/haskell/default.nix
@@ -7,15 +7,19 @@
 self: super: # overlay parameters for the nixpkgs overlay
 
 let
-  dhall-source = subdir: pkg: super.haskell.lib.overrideSrc pkg {
-    src = "${super.fetchFromGitHub {
-      owner = "Profpatsch";
-      repo = "dhall-haskell";
-      # https://github.com/dhall-lang/dhall-haskell/pull/2426
-      rev = "82123817316192d39f9a3e68b8ce9c9cff0a48ed";
-      sha256 = "sha256-gbHoUKIdLPIttqeV471jsT8OJz6uiI6LpHOwtLbBGHY=";
-    }}/${subdir}";
-  };
+  haskellLib = self.haskell.lib.compose;
+  dhall-source = subdir: pkg:
+    haskellLib.overrideSrc
+      {
+        src = "${super.fetchFromGitHub {
+          owner = "Profpatsch";
+          repo = "dhall-haskell";
+          # https://github.com/dhall-lang/dhall-haskell/pull/2426
+          rev = "5e3a407d8ac826597d935d8398825a0ca73fc4e9";
+          sha256 = "005plj6kgxlkm9npaq07kmsgmiqk50dpwb9li9w1ly4aj1zgfjnd";
+        }}/${subdir}";
+      }
+      (haskellLib.overrideCabal { patches = [ ]; } pkg);
 
 
 in
@@ -25,6 +29,24 @@ in
       # TODO: this is to fix a bug in dhall-nix
       dhall = dhall-source "dhall" hsSuper.dhall;
       dhall-nix = dhall-source "dhall-nix" hsSuper.dhall-nix;
+
+      # TODO(Profpatsch): move cas-serve off superrecord
+      # https://github.com/agrafix/superrecord/pull/35
+      # https://github.com/agrafix/superrecord/pull/37
+      superrecord = haskellLib.overrideSrc
+        {
+          src = self.fetchFromGitHub {
+            owner = "possehl-analytics";
+            repo = "superrecord";
+            rev = "05c8fdd724af5189a9a8be2f30dfa55a67f8b656";
+            sha256 = "0p6a280kils12ycdlp6dd7392940yzzy6xi8pjar975j38fm3x5a";
+          };
+        }
+        hsSuper.superrecord;
+
+      # Use recently-released version that has 9.2 support
+      graphmod = assert hsSuper.graphmod != "1.4.5.1";
+        hsSelf.callPackage ./extra-pkgs/graphmod-1.4.5.1.nix { };
     };
   };
 
@@ -35,6 +57,16 @@ in
         # so we can use GHC 9.0.2 and benefit from upstream binary cache.
         random-fu = hsSelf.callPackage ./extra-pkgs/random-fu-0.2.nix { };
         rvar = hsSelf.callPackage ./extra-pkgs/rvar-0.2.nix { };
+
+        # TODO(grfn): port to brick 1.4
+        # Breaking changes since 0.68:
+        # - handleEditorEvent takes a BrickEvent (0.72)
+        # - EventM gains an additional type argument (1.0)
+        brick = hsSelf.callPackage ./extra-pkgs/brick-0.71.1.nix { };
+
+        # TODO(sterni): upstream into nixpkgs
+        binary-orphans =
+          haskellLib.addBuildDepends [ hsSelf.OneTuple ] hsSuper.binary-orphans;
       };
     };
   };
diff --git a/third_party/overlays/haskell/extra-pkgs/brick-0.71.1.nix b/third_party/overlays/haskell/extra-pkgs/brick-0.71.1.nix
new file mode 100644
index 0000000000..e49be075c6
--- /dev/null
+++ b/third_party/overlays/haskell/extra-pkgs/brick-0.71.1.nix
@@ -0,0 +1,70 @@
+{ mkDerivation
+, base
+, bytestring
+, config-ini
+, containers
+, contravariant
+, data-clist
+, deepseq
+, directory
+, dlist
+, exceptions
+, filepath
+, lib
+, microlens
+, microlens-mtl
+, microlens-th
+, QuickCheck
+, stm
+, template-haskell
+, text
+, text-zipper
+, transformers
+, unix
+, vector
+, vty
+, word-wrap
+}:
+mkDerivation {
+  pname = "brick";
+  version = "0.71.1";
+  sha256 = "49701466384534b131650bec0a2b3c4811b410a3e55a392edef8d5fa6322d254";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    bytestring
+    config-ini
+    containers
+    contravariant
+    data-clist
+    deepseq
+    directory
+    dlist
+    exceptions
+    filepath
+    microlens
+    microlens-mtl
+    microlens-th
+    stm
+    template-haskell
+    text
+    text-zipper
+    transformers
+    unix
+    vector
+    vty
+    word-wrap
+  ];
+  testHaskellDepends = [
+    base
+    containers
+    microlens
+    QuickCheck
+    vector
+    vty
+  ];
+  homepage = "https://github.com/jtdaugherty/brick/";
+  description = "A declarative terminal user interface library";
+  license = lib.licenses.bsd3;
+}
diff --git a/third_party/overlays/haskell/extra-pkgs/graphmod-1.4.5.1.nix b/third_party/overlays/haskell/extra-pkgs/graphmod-1.4.5.1.nix
new file mode 100644
index 0000000000..d11e739cdd
--- /dev/null
+++ b/third_party/overlays/haskell/extra-pkgs/graphmod-1.4.5.1.nix
@@ -0,0 +1,33 @@
+{ mkDerivation
+, base
+, Cabal
+, containers
+, directory
+, dotgen
+, filepath
+, haskell-lexer
+, lib
+, pretty
+}:
+mkDerivation {
+  pname = "graphmod";
+  version = "1.4.5.1";
+  sha256 = "d72b70dd47ba85756e963681307d8dcf341e9d1f0c3b50bd34c33a4e429436cc";
+  isLibrary = true;
+  isExecutable = true;
+  libraryHaskellDepends = [
+    base
+    Cabal
+    containers
+    directory
+    dotgen
+    filepath
+    haskell-lexer
+    pretty
+  ];
+  executableHaskellDepends = [ base ];
+  homepage = "http://github.com/yav/graphmod/wiki";
+  description = "Present the module dependencies of a program as a \"dot\" graph";
+  license = lib.licenses.bsd3;
+  mainProgram = "graphmod";
+}
diff --git a/third_party/sources/sources.json b/third_party/sources/sources.json
index 79d1cb3fad..138811044a 100644
--- a/third_party/sources/sources.json
+++ b/third_party/sources/sources.json
@@ -17,10 +17,10 @@
         "homepage": "",
         "owner": "nix-community",
         "repo": "emacs-overlay",
-        "rev": "1cb4409944f776fbf9ca79bbd25cd8f4c3b70069",
-        "sha256": "0v2bfjy00zcbn7897wxfhgpwmpgdsy1clgryrw7rzrj4mb42q7bg",
+        "rev": "ebbb22510930b5153de22357518ebd8ce7ed93b3",
+        "sha256": "1vmsk0znvjc6qlmiqgpzx07644rhfg0kgxx5l9ig9lrga1wwh8bs",
         "type": "tarball",
-        "url": "https://github.com/nix-community/emacs-overlay/archive/1cb4409944f776fbf9ca79bbd25cd8f4c3b70069.tar.gz",
+        "url": "https://github.com/nix-community/emacs-overlay/archive/ebbb22510930b5153de22357518ebd8ce7ed93b3.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "home-manager": {
@@ -29,10 +29,10 @@
         "homepage": "https://nix-community.github.io/home-manager/",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "d7eee202e597bc7789498a8664082cf0ffedaa8f",
-        "sha256": "0hfys6nblswfblm5m4ii3mnwhnihqpsvxjnd6fwa55k788x500xl",
+        "rev": "c55fa26ce05fee8e063db22918d05a73d430b2ea",
+        "sha256": "01wd61lp6sbhbvjjn0sb1waw5bbklbq4ci8k8i0chbg655yy1cld",
         "type": "tarball",
-        "url": "https://github.com/nix-community/home-manager/archive/d7eee202e597bc7789498a8664082cf0ffedaa8f.tar.gz",
+        "url": "https://github.com/nix-community/home-manager/archive/c55fa26ce05fee8e063db22918d05a73d430b2ea.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "impermanence": {
@@ -65,10 +65,10 @@
         "homepage": "",
         "owner": "nix-community",
         "repo": "napalm",
-        "rev": "61f33f63fbab96e42d4537776091945939ea1a85",
-        "sha256": "14s6niz5z1gqkmkgyqbml63i70w1x67sg3zwnh1f8nqa8vmdyb1i",
+        "rev": "7c25a05cef52dc405f4688422ce0046ca94aadcf",
+        "sha256": "0aff7rikmyy4c2h6981vcv2n05xvllh2dqkhqxgz80z2nfapm7wb",
         "type": "tarball",
-        "url": "https://github.com/nix-community/napalm/archive/61f33f63fbab96e42d4537776091945939ea1a85.tar.gz",
+        "url": "https://github.com/nix-community/napalm/archive/7c25a05cef52dc405f4688422ce0046ca94aadcf.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "nixpkgs": {
@@ -77,10 +77,10 @@
         "homepage": "",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "652e92b8064949a11bc193b90b74cb727f2a1405",
-        "sha256": "19vq1n9m73xfd8d521sxvxgv3fmpdk6lgwvij2cy6h88x58ijdx2",
+        "rev": "fad51abd42ca17a60fc1d4cb9382e2d79ae31836",
+        "sha256": "0jzy84zgjgblp2ph3kb2kj5z2k05vagn6ms5m80pjr2g27m6hr37",
         "type": "tarball",
-        "url": "https://github.com/NixOS/nixpkgs/archive/652e92b8064949a11bc193b90b74cb727f2a1405.tar.gz",
+        "url": "https://github.com/NixOS/nixpkgs/archive/fad51abd42ca17a60fc1d4cb9382e2d79ae31836.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "nixpkgs-stable": {
@@ -101,10 +101,10 @@
         "homepage": "",
         "owner": "oxalica",
         "repo": "rust-overlay",
-        "rev": "631e692192eeeea85cdfb2a9dccbbfce543478b1",
-        "sha256": "1k75xk6b3l7xsygrwjmhxr886bznc4rvwiwavn73kkb08v245qra",
+        "rev": "f4827ef0518463f31a52ab2e5c500c80558fdd78",
+        "sha256": "119fmjgqpnyqdaxk2r0zvah75x2n10lq7vl0bl99rs1qr7xhz2cv",
         "type": "tarball",
-        "url": "https://github.com/oxalica/rust-overlay/archive/631e692192eeeea85cdfb2a9dccbbfce543478b1.tar.gz",
+        "url": "https://github.com/oxalica/rust-overlay/archive/f4827ef0518463f31a52ab2e5c500c80558fdd78.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     },
     "rustsec-advisory-db": {
@@ -113,10 +113,10 @@
         "homepage": "https://rustsec.org",
         "owner": "RustSec",
         "repo": "advisory-db",
-        "rev": "487a60b7a5d4337f3ac33c504f1e03ede505bcdb",
-        "sha256": "102jp2ajbm2gnvh9v4mfg7xkl9a91k0iq3133ml1d9nqz1grk3h4",
+        "rev": "6d5b76eb3be175fd2101b83140df15673531bb7b",
+        "sha256": "07xj50g978j8y4z39zrb1nm071pnw13wnlbhznrbzkm6v6abmsn7",
         "type": "tarball",
-        "url": "https://github.com/RustSec/advisory-db/archive/487a60b7a5d4337f3ac33c504f1e03ede505bcdb.tar.gz",
+        "url": "https://github.com/RustSec/advisory-db/archive/6d5b76eb3be175fd2101b83140df15673531bb7b.tar.gz",
         "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
     }
 }
diff --git a/users/Profpatsch/arglib/arglib-netencode.cabal b/users/Profpatsch/arglib/arglib-netencode.cabal
index 461b42a939..d9a0492473 100644
--- a/users/Profpatsch/arglib/arglib-netencode.cabal
+++ b/users/Profpatsch/arglib/arglib-netencode.cabal
@@ -8,7 +8,7 @@ library
     exposed-modules:          ArglibNetencode
 
     build-depends:
-        base ^>=4.15.1.0,
+        base >=4.15 && <5,
         my-prelude,
         netencode,
         exec-helpers,
diff --git a/users/Profpatsch/cas-serve/cas-serve.cabal b/users/Profpatsch/cas-serve/cas-serve.cabal
index 8740e8737d..98a5ba1064 100644
--- a/users/Profpatsch/cas-serve/cas-serve.cabal
+++ b/users/Profpatsch/cas-serve/cas-serve.cabal
@@ -8,7 +8,7 @@ executable cas-serve
     main-is:          CasServe.hs
 
     build-depends:
-        base ^>=4.15.1.0,
+        base >=4.15 && <5,
         text,
         sqlite-simple,
         http-types,
diff --git a/users/Profpatsch/cas-serve/default.nix b/users/Profpatsch/cas-serve/default.nix
index 2236e92c8e..b25a5ac044 100644
--- a/users/Profpatsch/cas-serve/default.nix
+++ b/users/Profpatsch/cas-serve/default.nix
@@ -7,17 +7,8 @@ let
         pkgs.haskellPackages.wai
         pkgs.haskellPackages.warp
         pkgs.haskellPackages.sqlite-simple
+        pkgs.haskellPackages.superrecord
         depot.users.Profpatsch.my-prelude
-        (pkgs.haskell.lib.dontCheck
-          (pkgs.haskell.lib.overrideSrc pkgs.haskellPackages.superrecord {
-            src = pkgs.fetchFromGitHub {
-              owner = "Profpatsch";
-              repo = "superrecord";
-              rev = "c00e933f582e3fb8d209f6cece91d464faf09082";
-              sha256 = "sha256-UQ2wCoBpUEPcRsI7wNOFGH+vceKF4dcbbGHFVVTkOWw=";
-            };
-          }))
-
       ];
       ghcArgs = [ "-threaded" ];
 
diff --git a/users/Profpatsch/execline/exec-helpers.cabal b/users/Profpatsch/execline/exec-helpers.cabal
index 5441dff1d0..1262a36ec2 100644
--- a/users/Profpatsch/execline/exec-helpers.cabal
+++ b/users/Profpatsch/execline/exec-helpers.cabal
@@ -8,7 +8,7 @@ library
     exposed-modules:          ExecHelpers
 
     build-depends:
-        base ^>=4.15.1.0,
+        base >=4.15 && <5,
         my-prelude
 
     default-language: Haskell2010
diff --git a/users/Profpatsch/ical-smolify/ical-smolify.cabal b/users/Profpatsch/ical-smolify/ical-smolify.cabal
index 6a1bb6ea87..571b8267c8 100644
--- a/users/Profpatsch/ical-smolify/ical-smolify.cabal
+++ b/users/Profpatsch/ical-smolify/ical-smolify.cabal
@@ -8,7 +8,7 @@ executable ical-smolify
     main-is: IcalSmolify.hs
 
     build-depends:
-        base ^>=4.15.1.0,
+        base >=4.15 && <5,
         my-prelude,
         exec-helpers
         data-default
diff --git a/users/Profpatsch/my-prelude/my-prelude.cabal b/users/Profpatsch/my-prelude/my-prelude.cabal
index 7de057e9e1..731a075b80 100644
--- a/users/Profpatsch/my-prelude/my-prelude.cabal
+++ b/users/Profpatsch/my-prelude/my-prelude.cabal
@@ -13,7 +13,7 @@ library
     -- LANGUAGE extensions used by modules in this package.
     -- other-extensions:
     build-depends:
-       base ^>=4.15.1.0
+       base >=4.15 && <5
      , PyF
      , validation-selective
      , these
diff --git a/users/Profpatsch/netencode/netencode.cabal b/users/Profpatsch/netencode/netencode.cabal
index 23c09c9065..1bd1d6052a 100644
--- a/users/Profpatsch/netencode/netencode.cabal
+++ b/users/Profpatsch/netencode/netencode.cabal
@@ -8,7 +8,7 @@ library
     exposed-modules:          Netencode
 
     build-depends:
-        base ^>=4.15.1.0,
+        base >=4.15 && <5,
         hedgehog,
         nonempty-containers,
         deriving-compat,
diff --git a/users/grfn/xanthous/package.yaml b/users/grfn/xanthous/package.yaml
index 630dc69c11..15a36fe964 100644
--- a/users/grfn/xanthous/package.yaml
+++ b/users/grfn/xanthous/package.yaml
@@ -111,6 +111,7 @@ default-extensions:
 
 ghc-options:
 - -Wall
+- -fconstraint-solver-iterations=6 # Xanthous.Data, Xanthous.Command
 
 library:
   source-dirs: src
diff --git a/users/grfn/xanthous/src/Xanthous/Data.hs b/users/grfn/xanthous/src/Xanthous/Data.hs
index c11ceb55aa..1acd14a064 100644
--- a/users/grfn/xanthous/src/Xanthous/Data.hs
+++ b/users/grfn/xanthous/src/Xanthous/Data.hs
@@ -191,7 +191,7 @@ y = lens (\(Position _ yy) -> yy) (\(Position xx _) yy -> Position xx yy)
 
 type Position = Position' Int
 
-instance Arbitrary a => Arbitrary (Position' a) where
+instance (Arg (Position' a) a, Arbitrary a) => Arbitrary (Position' a) where
   arbitrary = genericArbitrary
   shrink (Position px py) = Position <$> shrink px <*> shrink py
 
@@ -313,7 +313,8 @@ data Direction where
   Here      :: Direction
   deriving stock (Show, Eq, Ord, Generic)
   deriving anyclass (CoArbitrary, Function, NFData, ToJSON, FromJSON, Hashable)
-  deriving Arbitrary via GenericArbitrary Direction
+
+deriving via (GenericArbitrary Direction) instance Arbitrary Direction
 
 instance Opposite Direction where
   opposite Up        = Down
@@ -432,7 +433,8 @@ data Neighbors a = Neighbors
   }
   deriving stock (Show, Eq, Ord, Functor, Foldable, Traversable, Generic)
   deriving anyclass (NFData, CoArbitrary, Function, MonoFoldable)
-  deriving Arbitrary via GenericArbitrary (Neighbors a)
+
+deriving via (GenericArbitrary (Neighbors a)) instance (Arg (Neighbors a) a, Arbitrary a) => Arbitrary (Neighbors a)
 
 type instance Element (Neighbors a) = a
 
@@ -768,9 +770,12 @@ data Box a = Box
   , _dimensions    :: V2 a
   }
   deriving stock (Show, Eq, Ord, Functor, Generic)
-  deriving Arbitrary via GenericArbitrary (Box a)
 makeFieldsNoPrefix ''Box
 
+-- It seems to be necessary to have an `Arg (V2 a) a` constraint, as a is passed
+-- to V2 internally, in order to make GHC figure out this deriving via correctly.
+deriving via (GenericArbitrary (Box a)) instance (Arg (V2 a) a, Arbitrary a) => Arbitrary (Box a)
+
 bottomRightCorner :: Num a => Box a -> V2 a
 bottomRightCorner box =
   V2 (box ^. topLeftCorner . L._x + box ^. dimensions . L._x)
diff --git a/users/grfn/xanthous/src/Xanthous/Orphans.hs b/users/grfn/xanthous/src/Xanthous/Orphans.hs
index 385873e7b4..b00c803cfe 100644
--- a/users/grfn/xanthous/src/Xanthous/Orphans.hs
+++ b/users/grfn/xanthous/src/Xanthous/Orphans.hs
@@ -22,6 +22,7 @@ import           Brick.Widgets.Core (getName)
 import           System.Random.Internal (StdGen (..))
 import           System.Random.SplitMix (SMGen ())
 import           Test.QuickCheck
+import           Test.QuickCheck.Arbitrary.Generic (Arg ())
 import           "quickcheck-instances" Test.QuickCheck.Instances ()
 import           Text.Megaparsec (errorBundlePretty)
 import           Text.Megaparsec.Pos
@@ -307,9 +308,7 @@ deriving stock instance Ord a => Ord (MaybeDefault a)
 deriving stock instance Ord Attr
 
 deriving anyclass instance Hashable Graphics.Vty.Input.Events.Key
-deriving anyclass instance NFData Graphics.Vty.Input.Events.Key
 deriving anyclass instance Hashable Graphics.Vty.Input.Events.Modifier
-deriving anyclass instance NFData Graphics.Vty.Input.Events.Modifier
 
 --------------------------------------------------------------------------------
 
@@ -374,7 +373,7 @@ deriving newtype instance (Arbitrary s, CoArbitrary (m (a, s)))
 
 --------------------------------------------------------------------------------
 
-deriving via (GenericArbitrary (V2 a)) instance Arbitrary a => Arbitrary (V2 a)
+deriving via (GenericArbitrary (V2 a)) instance (Arg (V2 a) a, Arbitrary a) => Arbitrary (V2 a)
 instance CoArbitrary a => CoArbitrary (V2 a)
 instance Function a => Function (V2 a)
 
diff --git a/users/grfn/xanthous/xanthous.cabal b/users/grfn/xanthous/xanthous.cabal
index 1555f728ac..12222c2673 100644
--- a/users/grfn/xanthous/xanthous.cabal
+++ b/users/grfn/xanthous/xanthous.cabal
@@ -1,10 +1,10 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.6.
+-- This file has been generated from package.yaml by hpack version 0.35.0.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 107b223a62633bc51425e8f9d5ab489a7a47464953a81ca693efb496c41f1aa3
+-- hash: b3bf8e65d621856081832c9d3c8e8ad38799e23a7f5084dc4f972daa654a0ff3
 
 name:           xanthous
 version:        0.1.0.0
@@ -119,7 +119,7 @@ library
       TypeFamilies
       TypeOperators
       ViewPatterns
-  ghc-options: -Wall
+  ghc-options: -Wall -fconstraint-solver-iterations=6
   build-depends:
       JuicyPixels
     , MonadRandom
@@ -220,7 +220,7 @@ executable xanthous
       TypeFamilies
       TypeOperators
       ViewPatterns
-  ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -O2
+  ghc-options: -Wall -fconstraint-solver-iterations=6 -threaded -rtsopts -with-rtsopts=-N -O2
   build-depends:
       JuicyPixels
     , MonadRandom
@@ -349,7 +349,7 @@ test-suite test
       TypeFamilies
       TypeOperators
       ViewPatterns
-  ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N -O0
+  ghc-options: -Wall -fconstraint-solver-iterations=6 -threaded -rtsopts -with-rtsopts=-N -O0
   build-depends:
       JuicyPixels
     , MonadRandom
@@ -460,7 +460,7 @@ benchmark benchmark
       TypeFamilies
       TypeOperators
       ViewPatterns
-  ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
+  ghc-options: -Wall -fconstraint-solver-iterations=6 -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       JuicyPixels
     , MonadRandom