From f10648c7daac646040ee9086979c17da9843bd48 Mon Sep 17 00:00:00 2001 From: Las Safin Date: Tue, 18 Jan 2022 12:50:27 +0000 Subject: [PATCH 1/2] Make depending on for downstream users easier --- cabal.project | 10 +- flake.nix | 282 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 240 insertions(+), 52 deletions(-) diff --git a/cabal.project b/cabal.project index 51d10030d..2291eb51f 100644 --- a/cabal.project +++ b/cabal.project @@ -1,11 +1,3 @@ -allow-newer: *:* - -package plutus-tx-plugin - flags: +use-ghc-stub - packages: ./. -constraints: - aeson > 2 - -benchmarks: true \ No newline at end of file +benchmarks: true diff --git a/flake.nix b/flake.nix index dc1ba4c55..a63a15858 100644 --- a/flake.nix +++ b/flake.nix @@ -128,6 +128,242 @@ ghcVersion = "ghc921"; tools.fourmolu = { }; + haskellModule = system: { + packages = { + basement.src = "${inputs.foundation}/basement"; + basement.components.library.postUnpack = "\n"; + cardano-binary.doHaddock = false; + cardano-binary.ghcOptions = [ "-Wwarn" ]; + cardano-binary.src = "${inputs.cardano-base}/binary"; + cardano-binary.components.library.postUnpack = "\n"; + cardano-crypto-class.components.library.pkgconfig = nixpkgs.lib.mkForce [ [ (import plutus { inherit system; }).pkgs.libsodium-vrf ] ]; + cardano-crypto-class.doHaddock = false; + cardano-crypto-class.ghcOptions = [ "-Wwarn" ]; + cardano-crypto-class.src = "${inputs.cardano-base}/cardano-crypto-class"; + cardano-crypto-class.components.library.postUnpack = "\n"; + cardano-crypto-praos.components.library.pkgconfig = nixpkgs.lib.mkForce [ [ (import plutus { inherit system; }).pkgs.libsodium-vrf ] ]; + cardano-crypto.src = "${inputs.cardano-crypto}"; + cardano-crypto.components.library.postUnpack = "\n"; + cardano-prelude.doHaddock = false; # somehow above options are not applied? + cardano-prelude.ghcOptions = [ "-Wwarn" ]; + cardano-prelude.src = "${inputs.cardano-prelude}/cardano-prelude"; + cardano-prelude.components.library.postUnpack = "\n"; + cryptonite.src = "${inputs.cryptonite}"; + cryptonite.components.library.postUnpack = "\n"; + flat.src = "${inputs.flat}"; + flat.components.library.postUnpack = "\n"; + foundation.src = "${inputs.foundation}/foundation"; + foundation.components.library.postUnpack = "\n"; + memory.src = "${inputs.hs-memory}"; + memory.components.library.postUnpack = "\n"; + plutus-core.src = "${inputs.plutus}/plutus-core"; + plutus-core.components.library.postUnpack = "\n"; + plutus-tx.src = "${inputs.plutus}/plutus-tx"; + plutus-tx.components.library.postUnpack = "\n"; + plutus-ledger-api.src = "${inputs.plutus}/plutus-ledger-api"; + plutus-ledger-api.components.library.postUnpack = "\n"; + #prettyprinter-configurable.src = "${inputs.plutus}/prettyprinter-configurable"; + #prettyprinter-configurable.components.library.postUnpack = "\n"; + protolude.src = "${inputs.protolude}"; + protolude.components.library.postUnpack = "\n"; + word-array.src = "${inputs.plutus}/word-array"; + word-array.components.library.postUnpack = "\n"; + }; + }; + + cabalProjectLocal = '' + package plutus-tx-plugin + flags: +use-ghc-stub + + allow-newer: + cardano-binary:base + , cardano-crypto-class:base + , cardano-prelude:base + , canonical-json:bytestring + , plutus-core:ral + , plutus-core:some + , monoidal-containers:base + , hedgehog:mmorph + , text:deepseq + , hedgehog:template-haskell + , protolude:base + , protolude:ghc-prim + , protolude:transformers-compat + , protolude:hashable + , protolude:bytestring + , size-based:template-haskell + + constraints: + OneTuple ^>= 0.3.1 + , Only ^>= 0.1 + , QuickCheck ^>= 2.14.2 + , StateVar ^>= 1.2.2 + , Stream ^>= 0.4.7.2 + , adjunctions ^>= 4.4 + , aeson ^>= 2.0.3.0 + , algebraic-graphs ^>= 0.6 + , ansi-terminal ^>= 0.11.1 + , ansi-wl-pprint ^>= 0.6.9 + , assoc ^>= 1.0.2 + , async ^>= 2.2.4 + , attoparsec ^>= 0.14.4 + , barbies ^>= 2.0.3.1 + , base-compat ^>= 0.12.1 + , base-compat-batteries ^>= 0.12.1 + , base-orphans ^>= 0.8.6 + , base16-bytestring ^>= 1.0.2.0 + , basement ^>= 0.0.12 + , bifunctors ^>= 5.5.11 + , bimap ^>= 0.4.0 + , bin ^>= 0.1.2 + , boring ^>= 0.2 + , boxes ^>= 0.1.5 + , cabal-doctest ^>= 1.0.9 + , call-stack ^>= 0.4.0 + , canonical-json ^>= 0.6.0.0 + , cardano-binary ^>= 1.5.0 + , cardano-crypto ^>= 1.1.0 + , cardano-crypto-class ^>= 2.0.0 + , cardano-prelude ^>= 0.1.0.0 + , case-insensitive ^>= 1.2.1.0 + , cassava ^>= 0.5.2.0 + , cborg ^>= 0.2.6.0 + , clock ^>= 0.8.2 + , colour ^>= 2.3.6 + , comonad ^>= 5.0.8 + , composition-prelude ^>= 3.0.0.2 + , concurrent-output ^>= 1.10.14 + , constraints ^>= 0.13.2 + , constraints-extras ^>= 0.3.2.1 + , contravariant ^>= 1.5.5 + , cryptonite ^>= 0.29 + , data-default ^>= 0.7.1.1 + , data-default-class ^>= 0.1.2.0 + , data-default-instances-containers ^>= 0.0.1 + , data-default-instances-dlist ^>= 0.0.1 + , data-default-instances-old-locale ^>= 0.0.1 + , data-fix ^>= 0.3.2 + , dec ^>= 0.0.4 + , dependent-map ^>= 0.4.0.0 + , dependent-sum ^>= 0.7.1.0 + , dependent-sum-template ^>= 0.1.1.1 + , deriving-aeson ^>= 0.2.8 + , deriving-compat ^>= 0.6 + , dictionary-sharing ^>= 0.1.0.0 + , distributive ^>= 0.6.2.1 + , dlist ^>= 1.0 + , dom-lt ^>= 0.2.3 + , double-conversion ^>= 2.0.2.0 + , erf ^>= 2.0.0.0 + , exceptions ^>= 0.10.4 + , extra ^>= 1.7.10 + , fin ^>= 0.2.1 + , flat ^>= 0.4.5 + , foldl ^>= 1.4.12 + , formatting ^>= 7.1.3 + , foundation ^>= 0.0.26.1 + , free ^>= 5.1.7 + , half ^>= 0.3.1 + , hashable ^>= 1.4.0.2 + , haskell-lexer ^>= 1.1 + , hedgehog ^>= 1.0.5 + , indexed-traversable ^>= 0.1.2 + , indexed-traversable-instances ^>= 0.1.1 + , integer-logarithms ^>= 1.0.3.1 + , invariant ^>= 0.5.5 + , kan-extensions ^>= 5.2.3 + , lazy-search ^>= 0.1.2.1 + , lazysmallcheck ^>= 0.6 + , lens ^>= 5.1 + , lifted-async ^>= 0.10.2.2 + , lifted-base ^>= 0.2.3.12 + , list-t ^>= 1.0.5.1 + , logict ^>= 0.7.0.3 + , megaparsec ^>= 9.2.0 + , memory ^>= 0.16.0 + , microlens ^>= 0.4.12.0 + , mmorph ^>= 1.2.0 + , monad-control ^>= 1.0.3.1 + , mono-traversable ^>= 1.0.15.3 + , monoidal-containers ^>= 0.6.2.0 + , mtl-compat ^>= 0.2.2 + , newtype ^>= 0.2.2.0 + , newtype-generics ^>= 0.6.1 + , nothunks ^>= 0.1.3 + , old-locale ^>= 1.0.0.7 + , old-time ^>= 1.1.0.3 + , optparse-applicative ^>= 0.16.1.0 + , parallel ^>= 3.2.2.0 + , parser-combinators ^>= 1.3.0 + , plutarch ^>= 1.0.0 + , plutus-core ^>= 0.1.0.0 + , plutus-ledger-api ^>= 0.1.0.0 + , plutus-tx ^>= 0.1.0.0 + , pretty-show ^>= 1.10 + , prettyprinter ^>= 1.7.1 + , prettyprinter-configurable ^>= 0.1.0.0 + , primitive ^>= 0.7.3.0 + , profunctors ^>= 5.6.2 + , protolude ^>= 0.3.0 + , quickcheck-instances ^>= 0.3.27 + , ral ^>= 0.2.1 + , random ^>= 1.2.1 + , rank2classes ^>= 1.4.4 + , recursion-schemes ^>= 5.2.2.2 + , reflection ^>= 2.1.6 + , resourcet ^>= 1.2.4.3 + , safe ^>= 0.3.19 + , safe-exceptions ^>= 0.1.7.2 + , scientific ^>= 0.3.7.0 + , semialign ^>= 1.2.0.1 + , semigroupoids ^>= 5.3.7 + , semigroups ^>= 0.20 + , serialise ^>= 0.2.4.0 + , size-based ^>= 0.1.2.0 + , some ^>= 1.0.3 + , split ^>= 0.2.3.4 + , splitmix ^>= 0.1.0.4 + , stm ^>= 2.5.0.0 + , strict ^>= 0.4.0.1 + , syb ^>= 0.7.2.1 + , tagged ^>= 0.8.6.1 + , tasty ^>= 1.4.2.1 + , tasty-golden ^>= 2.3.5 + , tasty-hedgehog ^>= 1.1.0.0 + , tasty-hunit ^>= 0.10.0.3 + , temporary ^>= 1.3 + , terminal-size ^>= 0.3.2.1 + , testing-type-modifiers ^>= 0.1.0.1 + , text-short ^>= 0.1.5 + , th-abstraction ^>= 0.4.3.0 + , th-compat ^>= 0.1.3 + , th-expand-syns ^>= 0.4.9.0 + , th-extras ^>= 0.0.0.6 + , th-lift ^>= 0.8.2 + , th-lift-instances ^>= 0.1.19 + , th-orphans ^>= 0.13.12 + , th-reify-many ^>= 0.1.10 + , th-utilities ^>= 0.2.4.3 + , these ^>= 1.1.1.1 + , time-compat ^>= 1.9.6.1 + , transformers-base ^>= 0.4.6 + , transformers-compat ^>= 0.7.1 + , type-equality ^>= 1 + , typed-process ^>= 0.2.8.0 + , unbounded-delays ^>= 0.1.1.1 + , universe-base ^>= 1.1.3 + , unliftio-core ^>= 0.2.0.1 + , unordered-containers ^>= 0.2.16.0 + , uuid-types ^>= 1.0.5 + , vector ^>= 0.12.3.1 + , vector-algorithms ^>= 0.8.0.4 + , void ^>= 0.7.3 + , wcwidth ^>= 0.0.2 + , witherable ^>= 0.4.2 + , wl-pprint-annotated ^>= 0.1.0.1 + , word-array ^>= 0.1.0.0 + ''; + projectFor = system: let pkgs = nixpkgsFor system; in let pkgs' = nixpkgsFor' system; in @@ -135,49 +371,9 @@ src = ./.; compiler-nix-name = ghcVersion; cabalProjectFileName = "cabal.project"; + inherit cabalProjectLocal; inherit extraSources; - modules = [{ - packages = { - basement.src = "${inputs.foundation}/basement"; - basement.components.library.postUnpack = "\n"; - cardano-binary.doHaddock = false; - cardano-binary.ghcOptions = [ "-Wwarn" ]; - cardano-binary.src = "${inputs.cardano-base}/binary"; - cardano-binary.components.library.postUnpack = "\n"; - cardano-crypto-class.components.library.pkgconfig = nixpkgs.lib.mkForce [ [ (import plutus { inherit system; }).pkgs.libsodium-vrf ] ]; - cardano-crypto-class.doHaddock = false; - cardano-crypto-class.ghcOptions = [ "-Wwarn" ]; - cardano-crypto-class.src = "${inputs.cardano-base}/cardano-crypto-class"; - cardano-crypto-class.components.library.postUnpack = "\n"; - cardano-crypto-praos.components.library.pkgconfig = nixpkgs.lib.mkForce [ [ (import plutus { inherit system; }).pkgs.libsodium-vrf ] ]; - cardano-crypto.src = "${inputs.cardano-crypto}"; - cardano-crypto.components.library.postUnpack = "\n"; - cardano-prelude.doHaddock = false; # somehow above options are not applied? - cardano-prelude.ghcOptions = [ "-Wwarn" ]; - cardano-prelude.src = "${inputs.cardano-prelude}/cardano-prelude"; - cardano-prelude.components.library.postUnpack = "\n"; - cryptonite.src = "${inputs.cryptonite}"; - cryptonite.components.library.postUnpack = "\n"; - flat.src = "${inputs.flat}"; - flat.components.library.postUnpack = "\n"; - foundation.src = "${inputs.foundation}/foundation"; - foundation.components.library.postUnpack = "\n"; - memory.src = "${inputs.hs-memory}"; - memory.components.library.postUnpack = "\n"; - plutus-core.src = "${inputs.plutus}/plutus-core"; - plutus-core.components.library.postUnpack = "\n"; - plutus-tx.src = "${inputs.plutus}/plutus-tx"; - plutus-tx.components.library.postUnpack = "\n"; - plutus-ledger-api.src = "${inputs.plutus}/plutus-ledger-api"; - plutus-ledger-api.components.library.postUnpack = "\n"; - #prettyprinter-configurable.src = "${inputs.plutus}/prettyprinter-configurable"; - #prettyprinter-configurable.components.library.postUnpack = "\n"; - protolude.src = "${inputs.protolude}"; - protolude.components.library.postUnpack = "\n"; - word-array.src = "${inputs.plutus}/word-array"; - word-array.components.library.postUnpack = "\n"; - }; - }]; + modules = [ (haskellModule system) ]; shell = { withHoogle = true; @@ -222,7 +418,7 @@ ; in { - inherit extraSources; + inherit extraSources cabalProjectLocal haskellModule; project = perSystem projectFor; flake = perSystem (system: (projectFor system).flake { }); From 499cf810872abd8bfcd8a5ed00f943be1b290a1d Mon Sep 17 00:00:00 2001 From: Las Safin Date: Tue, 18 Jan 2022 13:22:57 +0000 Subject: [PATCH 2/2] Remove unnecessary constraint on self --- flake.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/flake.nix b/flake.nix index a63a15858..3262dcb2c 100644 --- a/flake.nix +++ b/flake.nix @@ -295,7 +295,6 @@ , optparse-applicative ^>= 0.16.1.0 , parallel ^>= 3.2.2.0 , parser-combinators ^>= 1.3.0 - , plutarch ^>= 1.0.0 , plutus-core ^>= 0.1.0.0 , plutus-ledger-api ^>= 0.1.0.0 , plutus-tx ^>= 0.1.0.0