From 9a8454a7a9e10a6e5d789b4049faa3876c1db3df Mon Sep 17 00:00:00 2001 From: Jaka Hudoklin Date: Wed, 11 Dec 2019 20:41:31 +0000 Subject: [PATCH] hasura: init at 1.2.1 --- pkgs/servers/hasura/ci-info.nix | 22 ++++++++ pkgs/servers/hasura/cli.nix | 33 ++++++++++++ pkgs/servers/hasura/default.nix | 63 +++++++++++++++++++++++ pkgs/servers/hasura/dependent-map.nix | 13 +++++ pkgs/servers/hasura/dependent-sum.nix | 10 ++++ pkgs/servers/hasura/ghc-heap-view.nix | 18 +++++++ pkgs/servers/hasura/graphql-engine.nix | 71 ++++++++++++++++++++++++++ pkgs/servers/hasura/graphql-parser.nix | 35 +++++++++++++ pkgs/servers/hasura/immortal.nix | 17 ++++++ pkgs/servers/hasura/network-uri.nix | 18 +++++++ pkgs/servers/hasura/pg-client.nix | 30 +++++++++++ pkgs/servers/hasura/these.nix | 25 +++++++++ pkgs/top-level/all-packages.nix | 6 ++- 13 files changed, 360 insertions(+), 1 deletion(-) create mode 100644 pkgs/servers/hasura/ci-info.nix create mode 100644 pkgs/servers/hasura/cli.nix create mode 100644 pkgs/servers/hasura/default.nix create mode 100644 pkgs/servers/hasura/dependent-map.nix create mode 100644 pkgs/servers/hasura/dependent-sum.nix create mode 100644 pkgs/servers/hasura/ghc-heap-view.nix create mode 100644 pkgs/servers/hasura/graphql-engine.nix create mode 100644 pkgs/servers/hasura/graphql-parser.nix create mode 100644 pkgs/servers/hasura/immortal.nix create mode 100644 pkgs/servers/hasura/network-uri.nix create mode 100644 pkgs/servers/hasura/pg-client.nix create mode 100644 pkgs/servers/hasura/these.nix diff --git a/pkgs/servers/hasura/ci-info.nix b/pkgs/servers/hasura/ci-info.nix new file mode 100644 index 00000000000..53c85a2e5ba --- /dev/null +++ b/pkgs/servers/hasura/ci-info.nix @@ -0,0 +1,22 @@ +{ mkDerivation, aeson, aeson-casing, base, fetchgit, hashable +, hpack, stdenv, template-haskell, text, th-lift-instances +, unordered-containers +}: +mkDerivation { + pname = "ci-info"; + version = "0.1.0.0"; + src = fetchgit { + url = "https://github.com/hasura/ci-info-hs.git"; + sha256 = "0rn1799z4y7z1c6ijrr0gscarg25zmnfq0z9rrmk4ad727vf1ppc"; + rev = "6af5a68450347a02295a9cd050d05a8b2f5c06ab"; + fetchSubmodules = true; + }; + libraryHaskellDepends = [ + aeson aeson-casing base hashable template-haskell text + th-lift-instances unordered-containers + ]; + libraryToolDepends = [ hpack ]; + prePatch = "hpack"; + homepage = "https://github.com/hasura/ci-info-hs#readme"; + license = stdenv.lib.licenses.mit; +} diff --git a/pkgs/servers/hasura/cli.nix b/pkgs/servers/hasura/cli.nix new file mode 100644 index 00000000000..f19ffe12f5d --- /dev/null +++ b/pkgs/servers/hasura/cli.nix @@ -0,0 +1,33 @@ +{ buildGoModule, hasura-graphql-engine }: + +buildGoModule rec { + name = "hasura-${version}"; + version = hasura-graphql-engine.version; + + src = hasura-graphql-engine.src; + modRoot = "./cli"; + + goPackagePath = "github.com/hasura/graphql-engine/cli"; + subPackages = [ "cmd/hasura" ]; + + modSha256 = "0bpb9r0n8n8c1p8sas3qanhvqw45rq8kygb4dmkfhj3d9vlgn6d2"; + + buildFlagsArray = [''-ldflags= + -X github.com/hasura/graphql-engine/cli/version.BuildVersion=${version} + -s + -w + '']; + + postInstall = '' + mkdir -p $out/share/{bash-completion/completions,zsh/site-functions} + + export HOME=$PWD + $out/bin/hasura completion bash > $out/share/bash-completion/completions/hasura + $out/bin/hasura completion zsh > $out/share/zsh/site-functions/_hasura + ''; + + meta = { + inherit (hasura-graphql-engine.meta) license homepage maintainers; + description = "Hasura GraphQL Engine CLI"; + }; +} diff --git a/pkgs/servers/hasura/default.nix b/pkgs/servers/hasura/default.nix new file mode 100644 index 00000000000..08527466035 --- /dev/null +++ b/pkgs/servers/hasura/default.nix @@ -0,0 +1,63 @@ +{ haskell }: + +with haskell.lib; + +let + # version in cabal file is invalid + version = "1.2.1"; + + pkgs = haskell.packages.ghc865.override { + overrides = self: super: { + # cabal2nix --subpath server --maintainer offline --no-check --revision 1.2.1 https://github.com/hasura/graphql-engine.git + hasura-graphql-engine = justStaticExecutables + ((self.callPackage ./graphql-engine.nix { }).overrideDerivation (d: { + name = "graphql-engine-${version}"; + + inherit version; + + # hasura needs VERSION env exported during build + preBuild = "export VERSION=${version}"; + })); + + hasura-cli = self.callPackage ./cli.nix { + hasura-graphql-engine = self.hasura-graphql-engine // { + inherit version; + }; + }; + + # internal dependencies, non published on hackage (find revisions in cabal.project file) + # cabal2nix --revision https://github.com/hasura/ci-info-hs.git + ci-info = self.callPackage ./ci-info.nix { }; + # cabal2nix --revision https://github.com/hasura/graphql-parser-hs.git + graphql-parser = self.callPackage ./graphql-parser.nix { }; + # cabal2nix --revision https://github.com/hasura/pg-client-hs.git + pg-client = self.callPackage ./pg-client.nix { }; + + # version constrained dependencies, without these hasura will not build, + # find versions in graphql-engine.cabal + # cabal2nix cabal://dependent-map-0.2.4.0 + dependent-map = self.callPackage ./dependent-map.nix { }; + # cabal2nix cabal://dependent-sum-0.4 + dependent-sum = self.callPackage ./dependent-sum.nix { }; + # cabal2nix cabal://these-0.7.6 + these = doJailbreak (self.callPackage ./these.nix { }); + # cabal2nix cabal://immortal-0.2.2.1 + immortal = self.callPackage ./immortal.nix { }; + # cabal2nix cabal://network-uri-2.6.1.0 + network-uri = self.callPackage ./network-uri.nix { }; + # cabal2nix cabal://ghc-heap-view-0.6.0 + ghc-heap-view = disableLibraryProfiling (self.callPackage ./ghc-heap-view.nix { }); + + # unmark broewn packages and do required modifications + stm-hamt = doJailbreak (unmarkBroken super.stm-hamt); + superbuffer = dontCheck (doJailbreak (unmarkBroken super.superbuffer)); + Spock-core = dontCheck (unmarkBroken super.Spock-core); + stm-containers = dontCheck (unmarkBroken super.stm-containers); + ekg-json = unmarkBroken super.ekg-json; + list-t = dontCheck (unmarkBroken super.list-t); + primitive-extras = unmarkBroken super.primitive-extras; + }; + }; +in { + inherit (pkgs) hasura-graphql-engine hasura-cli; +} diff --git a/pkgs/servers/hasura/dependent-map.nix b/pkgs/servers/hasura/dependent-map.nix new file mode 100644 index 00000000000..68ebb616b5f --- /dev/null +++ b/pkgs/servers/hasura/dependent-map.nix @@ -0,0 +1,13 @@ +{ mkDerivation, base, containers, dependent-sum, stdenv }: +mkDerivation { + pname = "dependent-map"; + version = "0.2.4.0"; + sha256 = "5db396bdb5d156434af920c074316c3b84b4d39ba8e1cd349c7bb6679cb28246"; + revision = "1"; + editedCabalFile = "0a5f35d1sgfq1cl1r5bgb5pwfjniiycxiif4ycxglaizp8g5rlr1"; + libraryHaskellDepends = [ base containers dependent-sum ]; + homepage = "https://github.com/mokus0/dependent-map"; + description = "Dependent finite maps (partial dependent products)"; + license = "unknown"; + hydraPlatforms = stdenv.lib.platforms.none; +} diff --git a/pkgs/servers/hasura/dependent-sum.nix b/pkgs/servers/hasura/dependent-sum.nix new file mode 100644 index 00000000000..90717b87366 --- /dev/null +++ b/pkgs/servers/hasura/dependent-sum.nix @@ -0,0 +1,10 @@ +{ mkDerivation, base, stdenv }: +mkDerivation { + pname = "dependent-sum"; + version = "0.4"; + sha256 = "a8deecb4153a1878173f8d0a18de0378ab068bc15e5035b9e4cb478e8e4e1a1e"; + libraryHaskellDepends = [ base ]; + homepage = "https://github.com/mokus0/dependent-sum"; + description = "Dependent sum type"; + license = stdenv.lib.licenses.publicDomain; +} diff --git a/pkgs/servers/hasura/ghc-heap-view.nix b/pkgs/servers/hasura/ghc-heap-view.nix new file mode 100644 index 00000000000..54c873baee4 --- /dev/null +++ b/pkgs/servers/hasura/ghc-heap-view.nix @@ -0,0 +1,18 @@ +{ mkDerivation, base, binary, bytestring, Cabal, containers +, deepseq, filepath, ghc-heap, stdenv, template-haskell +, transformers +}: +mkDerivation { + pname = "ghc-heap-view"; + version = "0.6.0"; + sha256 = "99ed6034d02a7a942e1b6ed970e9f7028dcdfd5b5d29fd8a0fb89f1a5e7c5ec8"; + enableSeparateDataOutput = true; + setupHaskellDepends = [ base Cabal filepath ]; + libraryHaskellDepends = [ + base binary bytestring containers ghc-heap template-haskell + transformers + ]; + testHaskellDepends = [ base deepseq ]; + description = "Extract the heap representation of Haskell values and thunks"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/pkgs/servers/hasura/graphql-engine.nix b/pkgs/servers/hasura/graphql-engine.nix new file mode 100644 index 00000000000..05ba895be08 --- /dev/null +++ b/pkgs/servers/hasura/graphql-engine.nix @@ -0,0 +1,71 @@ +{ mkDerivation, aeson, aeson-casing, ansi-wl-pprint, asn1-encoding +, asn1-types, async, attoparsec, attoparsec-iso8601, auto-update +, base, base64-bytestring, byteorder, bytestring, case-insensitive +, ci-info, containers, criterion, cryptonite, data-has, deepseq +, dependent-map, dependent-sum, directory, ekg-core, ekg-json +, fast-logger, fetchgit, file-embed, filepath, generic-arbitrary +, ghc-heap-view, graphql-parser, hashable, hspec, hspec-core +, hspec-expectations-lifted, http-client, http-client-tls +, http-types, immortal, insert-ordered-containers, jose, lens +, lifted-async, lifted-base, list-t, mime-types, monad-control +, monad-time, monad-validate, mtl, mustache, mwc-probability +, mwc-random, natural-transformation, network, network-uri +, optparse-applicative, pem, pg-client, postgresql-binary +, postgresql-libpq, process, profunctors, psqueues, QuickCheck +, regex-tdfa, safe, scientific, semver, shakespeare, split +, Spock-core, stdenv, stm, stm-containers, template-haskell, text +, text-builder, text-conversions, th-lift-instances, these, time +, transformers, transformers-base, unix, unordered-containers +, uri-encode, uuid, vector, wai, wai-websockets, warp, websockets +, wreq, x509, yaml, zlib +}: +mkDerivation { + pname = "graphql-engine"; + version = "1.0.0"; + src = fetchgit { + url = "https://github.com/hasura/graphql-engine.git"; + sha256 = "0hg44zl3gqa8lq7kggwgmgbsgdc7zrv5cxs507vilg11xklsbz4l"; + rev = "27b0b59361cebecd074bd59123f602e7b013bac1"; + fetchSubmodules = true; + }; + postUnpack = "sourceRoot+=/server; echo source root reset to $sourceRoot"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson aeson-casing ansi-wl-pprint asn1-encoding asn1-types async + attoparsec attoparsec-iso8601 auto-update base base64-bytestring + byteorder bytestring case-insensitive ci-info containers cryptonite + data-has deepseq dependent-map dependent-sum directory ekg-core + ekg-json fast-logger file-embed filepath generic-arbitrary + ghc-heap-view graphql-parser hashable http-client http-client-tls + http-types immortal insert-ordered-containers jose lens + lifted-async lifted-base list-t mime-types monad-control monad-time + monad-validate mtl mustache network network-uri + optparse-applicative pem pg-client postgresql-binary + postgresql-libpq process profunctors psqueues QuickCheck regex-tdfa + scientific semver shakespeare split Spock-core stm stm-containers + template-haskell text text-builder text-conversions + th-lift-instances these time transformers transformers-base unix + unordered-containers uri-encode uuid vector wai wai-websockets warp + websockets wreq x509 yaml zlib + ]; + executableHaskellDepends = [ + base bytestring pg-client text text-conversions + ]; + testHaskellDepends = [ + aeson base bytestring hspec hspec-core hspec-expectations-lifted + http-client http-client-tls lifted-base monad-control mtl + natural-transformation optparse-applicative pg-client process + QuickCheck safe split text time transformers-base + unordered-containers + ]; + benchmarkHaskellDepends = [ + async base bytestring criterion deepseq mwc-probability mwc-random + split text vector + ]; + doCheck = false; + homepage = "https://www.hasura.io"; + description = "GraphQL API over Postgres"; + license = stdenv.lib.licenses.asl20; + maintainers = with stdenv.lib.maintainers; [ offline ]; +} diff --git a/pkgs/servers/hasura/graphql-parser.nix b/pkgs/servers/hasura/graphql-parser.nix new file mode 100644 index 00000000000..8066bb83dd0 --- /dev/null +++ b/pkgs/servers/hasura/graphql-parser.nix @@ -0,0 +1,35 @@ +{ mkDerivation, aeson, attoparsec, base, bytestring, containers +, criterion, fetchgit, filepath, hedgehog, hpack, prettyprinter +, protolude, regex-tdfa, scientific, stdenv, template-haskell, text +, text-builder, th-lift-instances, unordered-containers, vector +}: +mkDerivation { + pname = "graphql-parser"; + version = "0.1.0.0"; + src = fetchgit { + url = "https://github.com/hasura/graphql-parser-hs.git"; + sha256 = "0vz0sqqmr1l02d3f1pc5k7rm7vpxmg5d5ijvdcwdm34yw6x5lz1v"; + rev = "623ad78aa46e7ba2ef1aa58134ad6136b0a85071"; + fetchSubmodules = true; + }; + libraryHaskellDepends = [ + aeson attoparsec base bytestring containers filepath hedgehog + prettyprinter protolude regex-tdfa scientific template-haskell text + text-builder th-lift-instances unordered-containers vector + ]; + libraryToolDepends = [ hpack ]; + testHaskellDepends = [ + aeson attoparsec base bytestring containers filepath hedgehog + prettyprinter protolude regex-tdfa scientific template-haskell text + text-builder th-lift-instances unordered-containers vector + ]; + benchmarkHaskellDepends = [ + aeson attoparsec base bytestring containers criterion filepath + hedgehog prettyprinter protolude regex-tdfa scientific + template-haskell text text-builder th-lift-instances + unordered-containers vector + ]; + prePatch = "hpack"; + homepage = "https://github.com/hasura/graphql-parser-hs#readme"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/pkgs/servers/hasura/immortal.nix b/pkgs/servers/hasura/immortal.nix new file mode 100644 index 00000000000..c53f0f18709 --- /dev/null +++ b/pkgs/servers/hasura/immortal.nix @@ -0,0 +1,17 @@ +{ mkDerivation, base, lifted-base, monad-control, stdenv, stm +, tasty, tasty-hunit, transformers, transformers-base +}: +mkDerivation { + pname = "immortal"; + version = "0.2.2.1"; + sha256 = "ed4aa1a2883a693a73fec47c8c2d5332d61a0626a2013403e1a8fb25cc6c8d8e"; + libraryHaskellDepends = [ + base lifted-base monad-control stm transformers-base + ]; + testHaskellDepends = [ + base lifted-base stm tasty tasty-hunit transformers + ]; + homepage = "https://github.com/feuerbach/immortal"; + description = "Spawn threads that never die (unless told to do so)"; + license = stdenv.lib.licenses.mit; +} diff --git a/pkgs/servers/hasura/network-uri.nix b/pkgs/servers/hasura/network-uri.nix new file mode 100644 index 00000000000..45016d470a8 --- /dev/null +++ b/pkgs/servers/hasura/network-uri.nix @@ -0,0 +1,18 @@ +{ mkDerivation, base, deepseq, HUnit, parsec, stdenv +, test-framework, test-framework-hunit, test-framework-quickcheck2 +}: +mkDerivation { + pname = "network-uri"; + version = "2.6.1.0"; + sha256 = "423e0a2351236f3fcfd24e39cdbc38050ec2910f82245e69ca72a661f7fc47f0"; + revision = "1"; + editedCabalFile = "141nj7q0p9wkn5gr41ayc63cgaanr9m59yym47wpxqr3c334bk32"; + libraryHaskellDepends = [ base deepseq parsec ]; + testHaskellDepends = [ + base HUnit test-framework test-framework-hunit + test-framework-quickcheck2 + ]; + homepage = "https://github.com/haskell/network-uri"; + description = "URI manipulation"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/pkgs/servers/hasura/pg-client.nix b/pkgs/servers/hasura/pg-client.nix new file mode 100644 index 00000000000..725e5e7f640 --- /dev/null +++ b/pkgs/servers/hasura/pg-client.nix @@ -0,0 +1,30 @@ +{ mkDerivation, aeson, aeson-casing, attoparsec, base, bytestring +, criterion, fetchgit, file-embed, hashable, hashtables, hasql +, hasql-pool, hasql-transaction, monad-control, mtl +, postgresql-binary, postgresql-libpq, resource-pool, retry +, scientific, stdenv, template-haskell, text, text-builder, th-lift +, th-lift-instances, time, transformers-base, uuid, vector +}: +mkDerivation { + pname = "pg-client"; + version = "0.1.0"; + src = fetchgit { + url = "https://github.com/hasura/pg-client-hs.git"; + sha256 = "1941gj5yp24kx0xb1nd774nwp5vnpsp6m83isqkwpyz9spl4sq7l"; + rev = "70a849d09bea9461e72c5a5bbde06df65aab61c0"; + fetchSubmodules = true; + }; + libraryHaskellDepends = [ + aeson aeson-casing attoparsec base bytestring hashable hashtables + monad-control mtl postgresql-binary postgresql-libpq resource-pool + retry scientific template-haskell text text-builder th-lift + th-lift-instances time transformers-base uuid vector + ]; + testHaskellDepends = [ base ]; + benchmarkHaskellDepends = [ + base bytestring criterion file-embed hashable hasql hasql-pool + hasql-transaction mtl postgresql-libpq text text-builder + ]; + homepage = "https://github.com/hasura/platform"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/pkgs/servers/hasura/these.nix b/pkgs/servers/hasura/these.nix new file mode 100644 index 00000000000..396f9e2a282 --- /dev/null +++ b/pkgs/servers/hasura/these.nix @@ -0,0 +1,25 @@ +{ mkDerivation, aeson, base, base-compat, bifunctors, binary +, containers, data-default-class, deepseq, hashable, keys, lens +, mtl, QuickCheck, quickcheck-instances, semigroupoids, stdenv +, tasty, tasty-quickcheck, transformers, transformers-compat +, unordered-containers, vector, vector-instances +}: +mkDerivation { + pname = "these"; + version = "0.7.6"; + sha256 = "9464b83d98e626360a8ad9836ba77e5201cd1e9c89b95b1b11a28ef3c23ac746"; + libraryHaskellDepends = [ + aeson base base-compat bifunctors binary containers + data-default-class deepseq hashable keys lens mtl QuickCheck + semigroupoids transformers transformers-compat unordered-containers + vector vector-instances + ]; + testHaskellDepends = [ + aeson base base-compat bifunctors binary containers hashable lens + QuickCheck quickcheck-instances tasty tasty-quickcheck transformers + unordered-containers vector + ]; + homepage = "https://github.com/isomorphism/these"; + description = "An either-or-both data type & a generalized 'zip with padding' typeclass"; + license = stdenv.lib.licenses.bsd3; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a99751d4abd..ce4f478b70d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15532,6 +15532,10 @@ in hashi-ui = callPackage ../servers/hashi-ui {}; + inherit (callPackage ../servers/hasura { }) + hasura-cli + hasura-graphql-engine; + heapster = callPackage ../servers/monitoring/heapster { }; hbase = callPackage ../servers/hbase {}; @@ -23619,7 +23623,7 @@ in }; nethack-x11 = callPackage ../games/nethack { x11Mode = true; }; - + netris = callPackage ../games/netris { }; neverball = callPackage ../games/neverball { };