From 12acbd78a4773345686698186fe358110517b3cb Mon Sep 17 00:00:00 2001 From: Ruben Astudillo <ruben.astud@gmail.com> Date: Mon, 1 Aug 2022 11:40:16 -0400 Subject: [PATCH] Update to new version of hs-web3 and GHC 9.2.4 --- default.nix | 10 ++++++++ flake.lock | 58 ++++++++++++++++++++++++++++++++++++++++++ flake.nix | 48 ++++++++++++++++++++++++++++++++++ package.yaml | 2 +- pixura-contracts.cabal | 41 ++++++++++++++++++++++++++--- shell.nix | 29 +++++++++++++++++++++ stack.yaml | 22 +++++++++++++--- stack.yaml.lock | 9 ++++--- 8 files changed, 208 insertions(+), 11 deletions(-) create mode 100644 default.nix create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 shell.nix diff --git a/default.nix b/default.nix new file mode 100644 index 0000000..669937e --- /dev/null +++ b/default.nix @@ -0,0 +1,10 @@ +{ mkDerivation, base, generics-sop, lib, zlib, web3-ethereum }: +mkDerivation { + pname = "pixura-contracts"; + version = "0.3.0.0"; + src = ./.; + libraryHaskellDepends = [ base generics-sop web3-ethereum ]; + libraryPkgconfigDepends = [ zlib ]; + homepage = "https://github.com/Pixura/pixura-contracts#readme"; + license = lib.licenses.bsd3; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..b7c9b7e --- /dev/null +++ b/flake.lock @@ -0,0 +1,58 @@ +{ + "nodes": { + "hs-web3": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1661984067, + "narHash": "sha256-j+BzdnBFjS8qKjAqATzMi7/bxW8jX0/eh4Rv+yHstO8=", + "ref": "master", + "rev": "8f7459b834f7f42e5570e0004fe1fc6d4f7c6c9a", + "revCount": 631, + "type": "git", + "url": "ssh://git@github.com/superrare/hs-web3" + }, + "original": { + "id": "hs-web3", + "type": "indirect" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1661353537, + "narHash": "sha256-1E2IGPajOsrkR49mM5h55OtYnU0dGyre6gl60NXKITE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0e304ff0d9db453a4b230e9386418fd974d5804a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1661353537, + "narHash": "sha256-1E2IGPajOsrkR49mM5h55OtYnU0dGyre6gl60NXKITE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0e304ff0d9db453a4b230e9386418fd974d5804a", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "hs-web3": "hs-web3", + "nixpkgs": "nixpkgs_2" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..d18eeac --- /dev/null +++ b/flake.nix @@ -0,0 +1,48 @@ +{ + # inspired by: https://serokell.io/blog/practical-nix-flakes#packaging-existing-applications + description = "A Hello World in Haskell with a dependency and a devShell"; + inputs = + { + nixpkgs.url = "nixpkgs"; + hs-web3 = + { url = "hs-web3"; + inputs.nixpkgs.url = "nixpkgs"; + }; + }; + outputs = { self, nixpkgs, hs-web3 }: + let + supportedSystems = [ "x86_64-linux" "x86_64-darwin" ]; + forAllSystems = f: nixpkgs.lib.genAttrs supportedSystems (system: f system); + nixpkgsFor = forAllSystems (system: import nixpkgs { + inherit system; + overlays = [ (self.overlay system) ]; + }); + in + { + overlay = (system: final: prev: { + pixura-contracts = final.haskell.packages.ghc924.callPackage (import ./default.nix) { + inherit (final) zlib; + inherit (hs-web3.packages.${system}) web3-ethereum; + }; + }); + packages = forAllSystems (system: { + pixura-contracts = nixpkgsFor.${system}.pixura-contracts; + }); + defaultPackage = forAllSystems (system: self.packages.${system}.pixura-contracts); + checks = self.packages; + devShell = forAllSystems (system: + let haskellPackages = nixpkgsFor.${system}.haskell.packages.ghc924; + in haskellPackages.shellFor + { + packages = p: [self.packages.${system}.pixura-contracts]; + withHoogle = true; + buildInputs = with haskellPackages; + [ + haskell-language-server + cabal-install + ]; + # Change the prompt to show that you are in a devShell + # shellHook = "export PS1='\\e[1;34mdev > \\e[0m'"; + }); + }; +} diff --git a/package.yaml b/package.yaml index 4dd7521..4ca67aa 100644 --- a/package.yaml +++ b/package.yaml @@ -48,7 +48,7 @@ default-extensions: dependencies: - base >=4.7 && <5 - generics-sop - - web3 + - web3-ethereum library: source-dirs: hs-contracts/src ghc-options: -Wall -Werror diff --git a/pixura-contracts.cabal b/pixura-contracts.cabal index 8d09f49..f3073e0 100644 --- a/pixura-contracts.cabal +++ b/pixura-contracts.cabal @@ -1,6 +1,6 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.33.0. +-- This file has been generated from package.yaml by hpack version 0.34.7. -- -- see: https://github.com/sol/hpack -- @@ -57,10 +57,45 @@ library Paths_pixura_contracts hs-source-dirs: hs-contracts/src - default-extensions: ApplicativeDo BangPatterns ConstraintKinds DataKinds DefaultSignatures DeriveFoldable DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable DerivingStrategies EmptyCase ExistentialQuantification FlexibleContexts FlexibleInstances FunctionalDependencies GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NamedFieldPuns OverloadedStrings PatternSynonyms RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TupleSections TypeApplications TypeFamilies TypeFamilyDependencies TypeOperators + default-extensions: + ApplicativeDo + BangPatterns + ConstraintKinds + DataKinds + DefaultSignatures + DeriveFoldable + DeriveFunctor + DeriveGeneric + DeriveLift + DeriveTraversable + DerivingStrategies + EmptyCase + ExistentialQuantification + FlexibleContexts + FlexibleInstances + FunctionalDependencies + GADTs + GeneralizedNewtypeDeriving + InstanceSigs + KindSignatures + LambdaCase + MultiParamTypeClasses + MultiWayIf + NamedFieldPuns + OverloadedStrings + PatternSynonyms + RankNTypes + RecordWildCards + ScopedTypeVariables + StandaloneDeriving + TupleSections + TypeApplications + TypeFamilies + TypeFamilyDependencies + TypeOperators ghc-options: -Wall -Werror build-depends: base >=4.7 && <5 , generics-sop - , web3 + , web3-ethereum default-language: Haskell2010 diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..8fcebbd --- /dev/null +++ b/shell.nix @@ -0,0 +1,29 @@ +{ nixpkgs ? import <nixpkgs> {}, compiler ? "default", doBenchmark ? false }: + +let + + inherit (nixpkgs) pkgs; + + f = { mkDerivation, base, generics-sop, hpack, lib, web3 }: + mkDerivation { + pname = "pixura-contracts"; + version = "0.3.0.0"; + src = ./.; + libraryHaskellDepends = [ base generics-sop ]; + libraryToolDepends = [ hpack ]; + prePatch = "hpack"; + homepage = "https://github.com/Pixura/pixura-contracts#readme"; + license = lib.licenses.bsd3; + }; + + haskellPackages = if compiler == "default" + then pkgs.haskellPackages + else pkgs.haskell.packages.${compiler}; + + variant = if doBenchmark then pkgs.haskell.lib.doBenchmark else pkgs.lib.id; + + drv = variant (haskellPackages.callPackage f {}); + +in + + if pkgs.lib.inNixShell then drv.env else drv diff --git a/stack.yaml b/stack.yaml index 91938f6..7f8f8ae 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,8 +1,24 @@ -resolver: lts-14.6 +resolver: + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/7/28.yaml packages: - "." +allow-newer: true + extra-deps: - - git: https://github.com/Pixura/hs-web3 - commit: 175ca55de9be31054a8246d8c5ed8d7ce7813d83 + - git: https://github.com/superrare/hs-web3 + commit: ac45f1fe34c2290739dcb7603a075c55385c2a51 + subdirs: + - packages/bignum + - packages/crypto + - packages/ethereum + - packages/hexstring + - packages/ipfs + - packages/jsonrpc + - packages/polkadot + - packages/provider + - packages/scale + - packages/solidity + - packages/web3 + - relapse-1.0.0.0@sha256:b89ea23189e07f377be4e2a4deccf3d6ba7f547ed8ad77e27b35d78801efd81c diff --git a/stack.yaml.lock b/stack.yaml.lock index f58f4b5..f5dd099 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -17,7 +17,8 @@ packages: commit: 175ca55de9be31054a8246d8c5ed8d7ce7813d83 snapshots: - completed: - size: 524127 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/14/6.yaml - sha256: dc70dfb45e2c32f54719819bd055f46855dd4b3bd2e58b9f3f38729a2d553fbb - original: lts-14.6 + sha256: 83cd17c52003e19611bd84c678f78fb0d98828ab8bc300a0b53ff2ae4f894ac5 + size: 617444 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/7/28.yaml + original: + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2022/7/28.yaml