From 5a063def51c72611c98fa2aadaa4c938a12271fa Mon Sep 17 00:00:00 2001 From: sterni Date: Tue, 27 Dec 2022 14:32:52 +0100 Subject: chore(3p/sources): Bump channels & overlays The main change is that nixpkgs updated to GHC 9.2 and Stackage LTS-20, so we suffer from a bit of churn. * //3p/overlays/haskell: - use updated dhall-nix patch for hnix 0.16 - use superrecord fork with fixes for GHC 9.2 - use graphmod-1.4.5.1 which has support for GHC 9.2 * //users/Profpatsch: relax constraints on base in Haskell pkgs * //users/Profpatsch/cas-serve: inherit superrecord from 3p * //users/grfn/xanthous: - //3p/overlays/haskell for 8.10.7: * Provide missing dependency of binary-orphans. Fix already commited upstream as e238c3fdaab710a2ce0135e5a77cd7e6bb023a22, can be dropped when channel advances. * Downgrade to brick 0.71.1, the latest version xanthous supports. - Adjust to generic-arbitrary >= 1.0, providing Arg constraints where necessary. - Increase constraint-solver-iterations to 6 (default 4), so Xanthous.Command and Xanthous.Data can be typechecked. - Drop NFData instances for Key and Modifier which have been added to vty upstream. Change-Id: I2170438c2ce8130b65f1a9fe07c4fecab5683d66 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7654 Autosubmit: sterni Reviewed-by: tazjin Reviewed-by: grfn Reviewed-by: Profpatsch Tested-by: BuildkiteCI --- third_party/overlays/haskell/default.nix | 50 +++++++++++++--- .../overlays/haskell/extra-pkgs/brick-0.71.1.nix | 70 ++++++++++++++++++++++ .../haskell/extra-pkgs/graphmod-1.4.5.1.nix | 33 ++++++++++ third_party/sources/sources.json | 36 +++++------ users/Profpatsch/arglib/arglib-netencode.cabal | 2 +- users/Profpatsch/cas-serve/cas-serve.cabal | 2 +- users/Profpatsch/cas-serve/default.nix | 11 +--- users/Profpatsch/execline/exec-helpers.cabal | 2 +- users/Profpatsch/ical-smolify/ical-smolify.cabal | 2 +- users/Profpatsch/my-prelude/my-prelude.cabal | 2 +- users/Profpatsch/netencode/netencode.cabal | 2 +- users/grfn/xanthous/package.yaml | 1 + users/grfn/xanthous/src/Xanthous/Data.hs | 13 ++-- users/grfn/xanthous/src/Xanthous/Orphans.hs | 5 +- users/grfn/xanthous/xanthous.cabal | 12 ++-- 15 files changed, 187 insertions(+), 56 deletions(-) create mode 100644 third_party/overlays/haskell/extra-pkgs/brick-0.71.1.nix create mode 100644 third_party/overlays/haskell/extra-pkgs/graphmod-1.4.5.1.nix 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///archive/.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///archive/.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///archive/.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///archive/.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///archive/.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///archive/.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 -- cgit 1.4.1