From 594de43cd84d6117394c0e2c1078e77719f3e219 Mon Sep 17 00:00:00 2001 From: nek0 Date: Mon, 12 Jul 2021 12:23:45 +0200 Subject: [PATCH] remove haskell.nix build infrastructure in favour of haskellPackages --- cabal.project | 2 +- default.nix | 30 --- nix/.plan.nix/mateamt.nix | 116 ----------- nix/default.nix | 15 -- nix/pkgs.nix | 395 -------------------------------------- nix/sources.json | 38 ---- nix/sources.nix | 174 ----------------- shell.nix | 114 +++++++---- 8 files changed, 81 insertions(+), 803 deletions(-) delete mode 100644 default.nix delete mode 100644 nix/.plan.nix/mateamt.nix delete mode 100644 nix/default.nix delete mode 100644 nix/pkgs.nix delete mode 100644 nix/sources.json delete mode 100644 nix/sources.nix diff --git a/cabal.project b/cabal.project index aabc54d..18eabdd 100644 --- a/cabal.project +++ b/cabal.project @@ -1,4 +1,4 @@ -index-state: 2021-02-05T00:00:00Z +-- index-state: 2021-02-05T00:00:00Z packages: ./ tests: true diff --git a/default.nix b/default.nix deleted file mode 100644 index 005c924..0000000 --- a/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -let - # Read in the Niv sources - sources = import ./nix/sources.nix {}; - # If ./nix/sources.nix file is not found run: - # niv init - # niv add input-output-hk/haskell.nix -n haskellNix - - # Fetch the haskell.nix commit we have pinned with Niv - haskellNix = import sources.haskellNix {}; - # If haskellNix is not found run: - # niv add input-output-hk/haskell.nix -n haskellNix - - # Import nixpkgs and pass the haskell.nix provided nixpkgsArgs - pkgs = import - # haskell.nix provides access to the nixpkgs pins which are used by our CI, - # hence you will be more likely to get cache hits when using these. - # But you can also just use your own, e.g. ''. - haskellNix.sources.nixpkgs-2009 - # These arguments passed to nixpkgs, include some patches and also - # the haskell.nix functionality itself as an overlay. - haskellNix.nixpkgsArgs; -in pkgs.haskell-nix.project { - # 'cleanGit' cleans a source directory based on the files known by git - src = pkgs.haskell-nix.haskellLib.cleanGit { - name = "haskell-nix-project"; - src = ./.; - }; - # Specify the GHC version to use. - compiler-nix-name = "ghc8104"; # Not required for `stack.yaml` based projects. -} diff --git a/nix/.plan.nix/mateamt.nix b/nix/.plan.nix/mateamt.nix deleted file mode 100644 index 58fd401..0000000 --- a/nix/.plan.nix/mateamt.nix +++ /dev/null @@ -1,116 +0,0 @@ -{ system - , compiler - , flags - , pkgs - , hsPkgs - , pkgconfPkgs - , errorHandler - , config - , ... }: - { - flags = { develop = false; }; - package = { - specVersion = "3.0"; - identifier = { name = "mateamt"; version = "0.0.0.0"; }; - license = "AGPL-3.0-or-later"; - copyright = ""; - maintainer = "nek0@nek0.eu"; - author = "nek0"; - homepage = "https://gitea.nek0.eu/nek0/mateamt/"; - url = ""; - synopsis = "A whole new matemat"; - description = ""; - buildType = "Simple"; - isLocal = true; - }; - components = { - "library" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."text" or (errorHandler.buildDepError "text")) - (hsPkgs."time" or (errorHandler.buildDepError "time")) - (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."containers" or (errorHandler.buildDepError "containers")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring")) - (hsPkgs."base64-bytestring" or (errorHandler.buildDepError "base64-bytestring")) - (hsPkgs."random-bytestring" or (errorHandler.buildDepError "random-bytestring")) - (hsPkgs."servant" or (errorHandler.buildDepError "servant")) - (hsPkgs."servant-server" or (errorHandler.buildDepError "servant-server")) - (hsPkgs."servant-rawm" or (errorHandler.buildDepError "servant-rawm")) - (hsPkgs."servant-rawm-server" or (errorHandler.buildDepError "servant-rawm-server")) - (hsPkgs."opaleye" or (errorHandler.buildDepError "opaleye")) - (hsPkgs."aeson" or (errorHandler.buildDepError "aeson")) - (hsPkgs."profunctors" or (errorHandler.buildDepError "profunctors")) - (hsPkgs."product-profunctors" or (errorHandler.buildDepError "product-profunctors")) - (hsPkgs."postgresql-simple" or (errorHandler.buildDepError "postgresql-simple")) - (hsPkgs."warp" or (errorHandler.buildDepError "warp")) - (hsPkgs."wai" or (errorHandler.buildDepError "wai")) - (hsPkgs."wai-logger" or (errorHandler.buildDepError "wai-logger")) - (hsPkgs."http-types" or (errorHandler.buildDepError "http-types")) - (hsPkgs."http-api-data" or (errorHandler.buildDepError "http-api-data")) - (hsPkgs."stm" or (errorHandler.buildDepError "stm")) - (hsPkgs."pureMD5" or (errorHandler.buildDepError "pureMD5")) - (hsPkgs."extra" or (errorHandler.buildDepError "extra")) - ]; - buildable = true; - }; - exes = { - "mateamt" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."mateamt" or (errorHandler.buildDepError "mateamt")) - (hsPkgs."text" or (errorHandler.buildDepError "text")) - (hsPkgs."time" or (errorHandler.buildDepError "time")) - (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."containers" or (errorHandler.buildDepError "containers")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."base16-bytestring" or (errorHandler.buildDepError "base16-bytestring")) - (hsPkgs."opaleye" or (errorHandler.buildDepError "opaleye")) - (hsPkgs."postgresql-simple" or (errorHandler.buildDepError "postgresql-simple")) - (hsPkgs."postgresql-simple-migration" or (errorHandler.buildDepError "postgresql-simple-migration")) - (hsPkgs."stm" or (errorHandler.buildDepError "stm")) - (hsPkgs."network" or (errorHandler.buildDepError "network")) - (hsPkgs."servant" or (errorHandler.buildDepError "servant")) - (hsPkgs."servant-server" or (errorHandler.buildDepError "servant-server")) - (hsPkgs."warp" or (errorHandler.buildDepError "warp")) - (hsPkgs."wai" or (errorHandler.buildDepError "wai")) - (hsPkgs."wai-logger" or (errorHandler.buildDepError "wai-logger")) - (hsPkgs."wai-middleware-throttle" or (errorHandler.buildDepError "wai-middleware-throttle")) - (hsPkgs."HsYAML" or (errorHandler.buildDepError "HsYAML")) - (hsPkgs."optparse-applicative" or (errorHandler.buildDepError "optparse-applicative")) - (hsPkgs."case-insensitive" or (errorHandler.buildDepError "case-insensitive")) - (hsPkgs."iproute" or (errorHandler.buildDepError "iproute")) - (hsPkgs."clock" or (errorHandler.buildDepError "clock")) - ]; - buildable = true; - }; - }; - tests = { - "mateamt-test" = { - depends = [ - (hsPkgs."base" or (errorHandler.buildDepError "base")) - (hsPkgs."mateamt" or (errorHandler.buildDepError "mateamt")) - (hsPkgs."text" or (errorHandler.buildDepError "text")) - (hsPkgs."time" or (errorHandler.buildDepError "time")) - (hsPkgs."mtl" or (errorHandler.buildDepError "mtl")) - (hsPkgs."containers" or (errorHandler.buildDepError "containers")) - (hsPkgs."bytestring" or (errorHandler.buildDepError "bytestring")) - (hsPkgs."hspec" or (errorHandler.buildDepError "hspec")) - (hsPkgs."hspec-wai" or (errorHandler.buildDepError "hspec-wai")) - (hsPkgs."hspec-wai-json" or (errorHandler.buildDepError "hspec-wai-json")) - (hsPkgs."warp" or (errorHandler.buildDepError "warp")) - (hsPkgs."wai" or (errorHandler.buildDepError "wai")) - (hsPkgs."pg-transact" or (errorHandler.buildDepError "pg-transact")) - (hsPkgs."tmp-postgres" or (errorHandler.buildDepError "tmp-postgres")) - (hsPkgs."resource-pool" or (errorHandler.buildDepError "resource-pool")) - (hsPkgs."postgresql-simple" or (errorHandler.buildDepError "postgresql-simple")) - ]; - build-tools = [ - (hsPkgs.buildPackages.hspec-discover.components.exes.hspec-discover or (pkgs.buildPackages.hspec-discover or (errorHandler.buildToolDepError "hspec-discover:hspec-discover"))) - ]; - buildable = true; - }; - }; - }; - } // rec { src = (pkgs.lib).mkDefault .././../.; } \ No newline at end of file diff --git a/nix/default.nix b/nix/default.nix deleted file mode 100644 index 11b5d96..0000000 --- a/nix/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ haskellNixSrc ? builtins.fetchTarball https://github.com/input-output-hk/haskell.nix/archive/master.tar.gz -, haskellNix ? import haskellNixSrc {} -, nixpkgs ? haskellNix.sources.nixpkgs }: - -let - pkgs = import nixpkgs haskellNix.nixpkgsArgs; - - pkgSet = pkgs.haskell-nix.mkCabalProjectPkgSet { - plan-pkgs = import ./pkgs.nix; - pkg-def-extras = []; - modules = []; - }; - -in - pkgSet.config.hsPkgs diff --git a/nix/pkgs.nix b/nix/pkgs.nix deleted file mode 100644 index 1091d02..0000000 --- a/nix/pkgs.nix +++ /dev/null @@ -1,395 +0,0 @@ -{ - pkgs = hackage: - { - packages = { - "warp".revision = (((hackage."warp")."3.3.13").revisions).default; - "postgresql-simple-migration".revision = (((hackage."postgresql-simple-migration")."0.1.15.0").revisions).default; - "cookie".revision = (((hackage."cookie")."0.4.5").revisions).default; - "void".revision = (((hackage."void")."0.7.3").revisions).default; - "byteorder".revision = (((hackage."byteorder")."1.0.4").revisions).default; - "singleton-bool".revision = (((hackage."singleton-bool")."0.1.5").revisions).default; - "tf-random".revision = (((hackage."tf-random")."0.5").revisions).default; - "Only".revision = (((hackage."Only")."0.1").revisions).default; - "cereal".revision = (((hackage."cereal")."0.5.8.1").revisions).default; - "exceptions".revision = (((hackage."exceptions")."0.10.4").revisions).default; - "binary".revision = (((hackage."binary")."0.8.8.0").revisions).default; - "attoparsec-iso8601".revision = (((hackage."attoparsec-iso8601")."1.0.2.0").revisions).default; - "product-profunctors".revision = (((hackage."product-profunctors")."0.11.0.1").revisions).default; - "ghc-prim".revision = (((hackage."ghc-prim")."0.6.1").revisions).default; - "utf8-string".revision = (((hackage."utf8-string")."1.0.2").revisions).default; - "hspec-wai".revision = (((hackage."hspec-wai")."0.11.0").revisions).default; - "old-time".revision = (((hackage."old-time")."1.1.0.3").revisions).default; - "bifunctors".revision = (((hackage."bifunctors")."5.5.10").revisions).default; - "hspec-wai-json".revision = (((hackage."hspec-wai-json")."0.11.0").revisions).default; - "extra".revision = (((hackage."extra")."1.7.9").revisions).default; - "split".revision = (((hackage."split")."0.2.3.4").revisions).default; - "data-fix".revision = (((hackage."data-fix")."0.3.0").revisions).default; - "stm".revision = (((hackage."stm")."2.5.0.0").revisions).default; - "dec".revision = (((hackage."dec")."0.0.3").revisions).default; - "unix-time".revision = (((hackage."unix-time")."0.4.7").revisions).default; - "http2".revision = (((hackage."http2")."2.0.5").revisions).default; - "base-compat-batteries".revision = (((hackage."base-compat-batteries")."0.11.2").revisions).default; - "appar".revision = (((hackage."appar")."0.1.8").revisions).default; - "hourglass".revision = (((hackage."hourglass")."0.2.12").revisions).default; - "case-insensitive".revision = (((hackage."case-insensitive")."1.2.1.0").revisions).default; - "network-byte-order".revision = (((hackage."network-byte-order")."0.1.6").revisions).default; - "sop-core".revision = (((hackage."sop-core")."0.5.0.1").revisions).default; - "unix".revision = (((hackage."unix")."2.7.2.2").revisions).default; - "mtl".revision = (((hackage."mtl")."2.2.2").revisions).default; - "network-uri".revision = (((hackage."network-uri")."2.6.3.0").revisions).default; - "network-info".revision = (((hackage."network-info")."0.2.0.10").revisions).default; - "asn1-parse".revision = (((hackage."asn1-parse")."0.9.5").revisions).default; - "servant-rawm-server".revision = (((hackage."servant-rawm-server")."1.0.0.1").revisions).default; - "zlib".revision = (((hackage."zlib")."0.6.2.2").revisions).default; - "rts".revision = (((hackage."rts")."1.0").revisions).default; - "mmorph".revision = (((hackage."mmorph")."1.1.3").revisions).default; - "easy-file".revision = (((hackage."easy-file")."0.2.2").revisions).default; - "servant-rawm".revision = (((hackage."servant-rawm")."1.0.0.0").revisions).default; - "th-expand-syns".revision = (((hackage."th-expand-syns")."0.4.6.0").revisions).default; - "cryptonite".revision = (((hackage."cryptonite")."0.28").revisions).default; - "postgresql-simple".revision = (((hackage."postgresql-simple")."0.6.4").revisions).default; - "clock".revision = (((hackage."clock")."0.8.2").revisions).default; - "safe-exceptions".revision = (((hackage."safe-exceptions")."0.1.7.1").revisions).default; - "cryptohash-md5".revision = (((hackage."cryptohash-md5")."0.11.100.1").revisions).default; - "th-orphans".revision = (((hackage."th-orphans")."0.13.11").revisions).default; - "pem".revision = (((hackage."pem")."0.2.4").revisions).default; - "http-api-data".revision = (((hackage."http-api-data")."0.4.2").revisions).default; - "syb".revision = (((hackage."syb")."0.7.2.1").revisions).default; - "token-bucket".revision = (((hackage."token-bucket")."0.1.0.1").revisions).default; - "distributive".revision = (((hackage."distributive")."0.6.2.1").revisions).default; - "asn1-encoding".revision = (((hackage."asn1-encoding")."0.9.6").revisions).default; - "bytestring-builder".revision = (((hackage."bytestring-builder")."0.10.8.2.0").revisions).default; - "QuickCheck".revision = (((hackage."QuickCheck")."2.14.2").revisions).default; - "scientific".revision = (((hackage."scientific")."0.3.6.2").revisions).default; - "time-manager".revision = (((hackage."time-manager")."0.0.0").revisions).default; - "hspec-discover".revision = (((hackage."hspec-discover")."2.7.8").revisions).default; - "aeson-qq".revision = (((hackage."aeson-qq")."0.8.3").revisions).default; - "deepseq".revision = (((hackage."deepseq")."1.4.4.0").revisions).default; - "haskell-src-meta".revision = (((hackage."haskell-src-meta")."0.8.5").revisions).default; - "random".revision = (((hackage."random")."1.1").revisions).default; - "temporary".revision = (((hackage."temporary")."1.3").revisions).default; - "opaleye".revision = (((hackage."opaleye")."0.7.1.0").revisions).default; - "uuid-types".revision = (((hackage."uuid-types")."1.0.3").revisions).default; - "string-conversions".revision = (((hackage."string-conversions")."0.4.0.1").revisions).default; - "optparse-applicative".revision = (((hackage."optparse-applicative")."0.16.1.0").revisions).default; - "network".revision = (((hackage."network")."3.1.2.1").revisions).default; - "word8".revision = (((hackage."word8")."0.1.3").revisions).default; - "crypto-api".revision = (((hackage."crypto-api")."0.13.3").revisions).default; - "splitmix".revision = (((hackage."splitmix")."0.1.0.3").revisions).default; - "async".revision = (((hackage."async")."2.2.2").revisions).default; - "dlist".revision = (((hackage."dlist")."1.0").revisions).default; - "postgres-options".revision = (((hackage."postgres-options")."0.2.0.0").revisions).default; - "semigroups".revision = (((hackage."semigroups")."0.19.1").revisions).default; - "HUnit".revision = (((hackage."HUnit")."1.6.2.0").revisions).default; - "pureMD5".revision = (((hackage."pureMD5")."2.1.3").revisions).default; - "parsec".revision = (((hackage."parsec")."3.1.14.0").revisions).default; - "th-reify-many".revision = (((hackage."th-reify-many")."0.1.9").revisions).default; - "http-media".revision = (((hackage."http-media")."0.8.0.0").revisions).default; - "directory".revision = (((hackage."directory")."1.3.6.0").revisions).default; - "transformers-compat".revision = (((hackage."transformers-compat")."0.6.6").revisions).default; - "template-haskell".revision = (((hackage."template-haskell")."2.16.0.0").revisions).default; - "hspec-expectations".revision = (((hackage."hspec-expectations")."0.8.2").revisions).default; - "psqueues".revision = (((hackage."psqueues")."0.2.7.2").revisions).default; - "vector".revision = (((hackage."vector")."0.12.2.0").revisions).default; - "call-stack".revision = (((hackage."call-stack")."0.3.0").revisions).default; - "primitive".revision = (((hackage."primitive")."0.7.1.0").revisions).default; - "cryptohash".revision = (((hackage."cryptohash")."0.11.9").revisions).default; - "profunctors".revision = (((hackage."profunctors")."5.6.1").revisions).default; - "time-locale-compat".revision = (((hackage."time-locale-compat")."0.1.1.5").revisions).default; - "safe".revision = (((hackage."safe")."0.3.19").revisions).default; - "blaze-builder".revision = (((hackage."blaze-builder")."0.4.2.1").revisions).default; - "base-compat".revision = (((hackage."base-compat")."0.11.2").revisions).default; - "math-functions".revision = (((hackage."math-functions")."0.3.4.1").revisions).default; - "uri-bytestring".revision = (((hackage."uri-bytestring")."0.3.3.0").revisions).default; - "time-compat".revision = (((hackage."time-compat")."1.9.5").revisions).default; - "cache".revision = (((hackage."cache")."0.1.3.0").revisions).default; - "ansi-terminal".revision = (((hackage."ansi-terminal")."0.11").revisions).default; - "tagged".revision = (((hackage."tagged")."0.8.6.1").revisions).default; - "x509".revision = (((hackage."x509")."1.7.5").revisions).default; - "haskell-src-exts".revision = (((hackage."haskell-src-exts")."1.23.1").revisions).default; - "unliftio-core".revision = (((hackage."unliftio-core")."0.2.0.1").revisions).default; - "containers".revision = (((hackage."containers")."0.6.2.1").revisions).default; - "integer-logarithms".revision = (((hackage."integer-logarithms")."1.0.3.1").revisions).default; - "these".revision = (((hackage."these")."1.1.1.1").revisions).default; - "tmp-postgres".revision = (((hackage."tmp-postgres")."1.34.1.0").revisions).default; - "streaming-commons".revision = (((hackage."streaming-commons")."0.2.2.1").revisions).default; - "bytestring".revision = (((hackage."bytestring")."0.10.12.0").revisions).default; - "ansi-wl-pprint".revision = (((hackage."ansi-wl-pprint")."0.6.9").revisions).default; - "mwc-random".revision = (((hackage."mwc-random")."0.14.0.0").revisions).default; - "wai".revision = (((hackage."wai")."3.2.3").revisions).default; - "basement".revision = (((hackage."basement")."0.0.11").revisions).default; - "setenv".revision = (((hackage."setenv")."0.1.1.3").revisions).default; - "cryptohash-sha1".revision = (((hackage."cryptohash-sha1")."0.11.100.1").revisions).default; - "old-locale".revision = (((hackage."old-locale")."1.0.0.7").revisions).default; - "StateVar".revision = (((hackage."StateVar")."1.2.1").revisions).default; - "vault".revision = (((hackage."vault")."0.3.1.4").revisions).default; - "mime-types".revision = (((hackage."mime-types")."0.1.0.9").revisions).default; - "pcg-random".revision = (((hackage."pcg-random")."0.1.3.7").revisions).default; - "contravariant".revision = (((hackage."contravariant")."1.5.3").revisions).default; - "generic-monoid".revision = (((hackage."generic-monoid")."0.1.0.1").revisions).default; - "HsYAML".revision = (((hackage."HsYAML")."0.2.1.0").revisions).default; - "indexed-traversable".revision = (((hackage."indexed-traversable")."0.1.1").revisions).default; - "blaze-markup".revision = (((hackage."blaze-markup")."0.8.2.7").revisions).default; - "postgresql-libpq".revision = (((hackage."postgresql-libpq")."0.9.4.3").revisions).default; - "uuid".revision = (((hackage."uuid")."1.3.13").revisions).default; - "text".revision = (((hackage."text")."1.2.4.1").revisions).default; - "assoc".revision = (((hackage."assoc")."1.0.2").revisions).default; - "unordered-containers".revision = (((hackage."unordered-containers")."0.2.13.0").revisions).default; - "base64-bytestring".revision = (((hackage."base64-bytestring")."1.0.0.3").revisions).default; - "base".revision = (((hackage."base")."4.14.1.0").revisions).default; - "comonad".revision = (((hackage."comonad")."5.0.8").revisions).default; - "hspec".revision = (((hackage."hspec")."2.7.8").revisions).default; - "time".revision = (((hackage."time")."1.9.3").revisions).default; - "th-compat".revision = (((hackage."th-compat")."0.1").revisions).default; - "data-default-class".revision = (((hackage."data-default-class")."0.1.2.0").revisions).default; - "base16-bytestring".revision = (((hackage."base16-bytestring")."1.0.1.0").revisions).default; - "iproute".revision = (((hackage."iproute")."1.7.10").revisions).default; - "transformers".revision = (((hackage."transformers")."0.5.6.2").revisions).default; - "hashable".revision = (((hackage."hashable")."1.3.0.0").revisions).default; - "quickcheck-io".revision = (((hackage."quickcheck-io")."0.2.0").revisions).default; - "wai-extra".revision = (((hackage."wai-extra")."3.1.6").revisions).default; - "attoparsec".revision = (((hackage."attoparsec")."0.13.2.4").revisions).default; - "blaze-html".revision = (((hackage."blaze-html")."0.9.1.2").revisions).default; - "colour".revision = (((hackage."colour")."2.3.5").revisions).default; - "transformers-base".revision = (((hackage."transformers-base")."0.4.5.2").revisions).default; - "file-embed".revision = (((hackage."file-embed")."0.0.13.0").revisions).default; - "byteable".revision = (((hackage."byteable")."0.1.1").revisions).default; - "strict".revision = (((hackage."strict")."0.4.0.1").revisions).default; - "entropy".revision = (((hackage."entropy")."0.4.1.6").revisions).default; - "wai-middleware-throttle".revision = (((hackage."wai-middleware-throttle")."0.3.0.1").revisions).default; - "filepath".revision = (((hackage."filepath")."1.4.2.1").revisions).default; - "auto-update".revision = (((hackage."auto-update")."0.1.6").revisions).default; - "resource-pool".revision = (((hackage."resource-pool")."0.2.3.2").revisions).default; - "asn1-types".revision = (((hackage."asn1-types")."0.3.4").revisions).default; - "port-utils".revision = (((hackage."port-utils")."0.2.1.0").revisions).default; - "hspec-core".revision = (((hackage."hspec-core")."2.7.8").revisions).default; - "unix-compat".revision = (((hackage."unix-compat")."0.5.3").revisions).default; - "monad-control".revision = (((hackage."monad-control")."1.0.2.3").revisions).default; - "process".revision = (((hackage."process")."1.6.9.0").revisions).default; - "pg-transact".revision = (((hackage."pg-transact")."0.3.1.1").revisions).default; - "wai-logger".revision = (((hackage."wai-logger")."2.3.6").revisions).default; - "th-lift".revision = (((hackage."th-lift")."0.8.2").revisions).default; - "resourcet".revision = (((hackage."resourcet")."1.2.4.2").revisions).default; - "pretty".revision = (((hackage."pretty")."1.1.3.6").revisions).default; - "aeson".revision = (((hackage."aeson")."1.5.5.1").revisions).default; - "wai-app-static".revision = (((hackage."wai-app-static")."3.1.7.2").revisions).default; - "http-types".revision = (((hackage."http-types")."0.12.3").revisions).default; - "ghc-boot-th".revision = (((hackage."ghc-boot-th")."8.10.3").revisions).default; - "th-lift-instances".revision = (((hackage."th-lift-instances")."0.1.18").revisions).default; - "servant-server".revision = (((hackage."servant-server")."0.18.2").revisions).default; - "base-orphans".revision = (((hackage."base-orphans")."0.8.4").revisions).default; - "http-date".revision = (((hackage."http-date")."0.0.10").revisions).default; - "random-bytestring".revision = (((hackage."random-bytestring")."0.1.3.2").revisions).default; - "servant".revision = (((hackage."servant")."0.18.2").revisions).default; - "th-abstraction".revision = (((hackage."th-abstraction")."0.4.2.0").revisions).default; - "memory".revision = (((hackage."memory")."0.15.0").revisions).default; - "fast-logger".revision = (((hackage."fast-logger")."3.0.2").revisions).default; - "bsb-http-chunked".revision = (((hackage."bsb-http-chunked")."0.0.0.4").revisions).default; - "array".revision = (((hackage."array")."0.5.4.0").revisions).default; - "simple-sendfile".revision = (((hackage."simple-sendfile")."0.2.30").revisions).default; - "integer-gmp".revision = (((hackage."integer-gmp")."1.0.3.0").revisions).default; - }; - compiler = { - version = "8.10.3"; - nix-name = "ghc8103"; - packages = { - "warp" = "3.3.13"; - "postgresql-simple-migration" = "0.1.15.0"; - "cookie" = "0.4.5"; - "void" = "0.7.3"; - "byteorder" = "1.0.4"; - "singleton-bool" = "0.1.5"; - "tf-random" = "0.5"; - "Only" = "0.1"; - "cereal" = "0.5.8.1"; - "exceptions" = "0.10.4"; - "binary" = "0.8.8.0"; - "attoparsec-iso8601" = "1.0.2.0"; - "product-profunctors" = "0.11.0.1"; - "ghc-prim" = "0.6.1"; - "utf8-string" = "1.0.2"; - "hspec-wai" = "0.11.0"; - "old-time" = "1.1.0.3"; - "bifunctors" = "5.5.10"; - "hspec-wai-json" = "0.11.0"; - "extra" = "1.7.9"; - "split" = "0.2.3.4"; - "data-fix" = "0.3.0"; - "stm" = "2.5.0.0"; - "dec" = "0.0.3"; - "unix-time" = "0.4.7"; - "http2" = "2.0.5"; - "base-compat-batteries" = "0.11.2"; - "appar" = "0.1.8"; - "hourglass" = "0.2.12"; - "case-insensitive" = "1.2.1.0"; - "network-byte-order" = "0.1.6"; - "sop-core" = "0.5.0.1"; - "unix" = "2.7.2.2"; - "mtl" = "2.2.2"; - "network-uri" = "2.6.3.0"; - "network-info" = "0.2.0.10"; - "asn1-parse" = "0.9.5"; - "servant-rawm-server" = "1.0.0.1"; - "zlib" = "0.6.2.2"; - "rts" = "1.0"; - "mmorph" = "1.1.3"; - "easy-file" = "0.2.2"; - "servant-rawm" = "1.0.0.0"; - "th-expand-syns" = "0.4.6.0"; - "cryptonite" = "0.28"; - "postgresql-simple" = "0.6.4"; - "clock" = "0.8.2"; - "safe-exceptions" = "0.1.7.1"; - "cryptohash-md5" = "0.11.100.1"; - "th-orphans" = "0.13.11"; - "pem" = "0.2.4"; - "http-api-data" = "0.4.2"; - "syb" = "0.7.2.1"; - "token-bucket" = "0.1.0.1"; - "distributive" = "0.6.2.1"; - "asn1-encoding" = "0.9.6"; - "bytestring-builder" = "0.10.8.2.0"; - "QuickCheck" = "2.14.2"; - "scientific" = "0.3.6.2"; - "time-manager" = "0.0.0"; - "hspec-discover" = "2.7.8"; - "aeson-qq" = "0.8.3"; - "deepseq" = "1.4.4.0"; - "haskell-src-meta" = "0.8.5"; - "random" = "1.1"; - "temporary" = "1.3"; - "opaleye" = "0.7.1.0"; - "uuid-types" = "1.0.3"; - "string-conversions" = "0.4.0.1"; - "optparse-applicative" = "0.16.1.0"; - "network" = "3.1.2.1"; - "word8" = "0.1.3"; - "crypto-api" = "0.13.3"; - "splitmix" = "0.1.0.3"; - "async" = "2.2.2"; - "dlist" = "1.0"; - "postgres-options" = "0.2.0.0"; - "semigroups" = "0.19.1"; - "HUnit" = "1.6.2.0"; - "pureMD5" = "2.1.3"; - "parsec" = "3.1.14.0"; - "th-reify-many" = "0.1.9"; - "http-media" = "0.8.0.0"; - "directory" = "1.3.6.0"; - "transformers-compat" = "0.6.6"; - "template-haskell" = "2.16.0.0"; - "hspec-expectations" = "0.8.2"; - "psqueues" = "0.2.7.2"; - "vector" = "0.12.2.0"; - "call-stack" = "0.3.0"; - "primitive" = "0.7.1.0"; - "cryptohash" = "0.11.9"; - "profunctors" = "5.6.1"; - "time-locale-compat" = "0.1.1.5"; - "safe" = "0.3.19"; - "blaze-builder" = "0.4.2.1"; - "base-compat" = "0.11.2"; - "math-functions" = "0.3.4.1"; - "uri-bytestring" = "0.3.3.0"; - "time-compat" = "1.9.5"; - "cache" = "0.1.3.0"; - "ansi-terminal" = "0.11"; - "tagged" = "0.8.6.1"; - "x509" = "1.7.5"; - "haskell-src-exts" = "1.23.1"; - "unliftio-core" = "0.2.0.1"; - "containers" = "0.6.2.1"; - "integer-logarithms" = "1.0.3.1"; - "these" = "1.1.1.1"; - "tmp-postgres" = "1.34.1.0"; - "streaming-commons" = "0.2.2.1"; - "bytestring" = "0.10.12.0"; - "ansi-wl-pprint" = "0.6.9"; - "mwc-random" = "0.14.0.0"; - "wai" = "3.2.3"; - "basement" = "0.0.11"; - "setenv" = "0.1.1.3"; - "cryptohash-sha1" = "0.11.100.1"; - "old-locale" = "1.0.0.7"; - "StateVar" = "1.2.1"; - "vault" = "0.3.1.4"; - "mime-types" = "0.1.0.9"; - "pcg-random" = "0.1.3.7"; - "contravariant" = "1.5.3"; - "generic-monoid" = "0.1.0.1"; - "HsYAML" = "0.2.1.0"; - "indexed-traversable" = "0.1.1"; - "blaze-markup" = "0.8.2.7"; - "postgresql-libpq" = "0.9.4.3"; - "uuid" = "1.3.13"; - "text" = "1.2.4.1"; - "assoc" = "1.0.2"; - "unordered-containers" = "0.2.13.0"; - "base64-bytestring" = "1.0.0.3"; - "base" = "4.14.1.0"; - "comonad" = "5.0.8"; - "hspec" = "2.7.8"; - "time" = "1.9.3"; - "th-compat" = "0.1"; - "data-default-class" = "0.1.2.0"; - "base16-bytestring" = "1.0.1.0"; - "iproute" = "1.7.10"; - "transformers" = "0.5.6.2"; - "hashable" = "1.3.0.0"; - "quickcheck-io" = "0.2.0"; - "wai-extra" = "3.1.6"; - "attoparsec" = "0.13.2.4"; - "blaze-html" = "0.9.1.2"; - "colour" = "2.3.5"; - "transformers-base" = "0.4.5.2"; - "file-embed" = "0.0.13.0"; - "byteable" = "0.1.1"; - "strict" = "0.4.0.1"; - "entropy" = "0.4.1.6"; - "wai-middleware-throttle" = "0.3.0.1"; - "filepath" = "1.4.2.1"; - "auto-update" = "0.1.6"; - "resource-pool" = "0.2.3.2"; - "asn1-types" = "0.3.4"; - "port-utils" = "0.2.1.0"; - "hspec-core" = "2.7.8"; - "unix-compat" = "0.5.3"; - "monad-control" = "1.0.2.3"; - "process" = "1.6.9.0"; - "pg-transact" = "0.3.1.1"; - "wai-logger" = "2.3.6"; - "th-lift" = "0.8.2"; - "resourcet" = "1.2.4.2"; - "pretty" = "1.1.3.6"; - "aeson" = "1.5.5.1"; - "wai-app-static" = "3.1.7.2"; - "http-types" = "0.12.3"; - "ghc-boot-th" = "8.10.3"; - "th-lift-instances" = "0.1.18"; - "servant-server" = "0.18.2"; - "base-orphans" = "0.8.4"; - "http-date" = "0.0.10"; - "random-bytestring" = "0.1.3.2"; - "servant" = "0.18.2"; - "th-abstraction" = "0.4.2.0"; - "memory" = "0.15.0"; - "fast-logger" = "3.0.2"; - "bsb-http-chunked" = "0.0.0.4"; - "array" = "0.5.4.0"; - "simple-sendfile" = "0.2.30"; - "integer-gmp" = "1.0.3.0"; - }; - }; - }; - extras = hackage: - { packages = { mateamt = ./.plan.nix/mateamt.nix; }; }; - modules = [ - ({ lib, ... }: - { - packages = { - "mateamt" = { flags = { "develop" = lib.mkOverride 900 false; }; }; - }; - }) - ]; - } \ No newline at end of file diff --git a/nix/sources.json b/nix/sources.json deleted file mode 100644 index d575d6e..0000000 --- a/nix/sources.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "haskellNix": { - "branch": "master", - "description": "Alternative Haskell Infrastructure for Nixpkgs", - "homepage": "https://input-output-hk.github.io/haskell.nix", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "70e3bc77ce844b59e235e5ae48364862f1b229b2", - "sha256": "0pmmr85xpx3ciwra8gxg6qh5vrg925wbwzgc820f3rn989xc1c72", - "type": "tarball", - "url": "https://github.com/input-output-hk/haskell.nix/archive/70e3bc77ce844b59e235e5ae48364862f1b229b2.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - }, - "niv": { - "branch": "master", - "description": "Easy dependency management for Nix projects", - "homepage": "https://github.com/nmattia/niv", - "owner": "nmattia", - "repo": "niv", - "rev": "1819632b5823e0527da28ad82fecd6be5136c1e9", - "sha256": "08jz17756qchq0zrqmapcm33nr4ms9f630mycc06i6zkfwl5yh5i", - "type": "tarball", - "url": "https://github.com/nmattia/niv/archive/1819632b5823e0527da28ad82fecd6be5136c1e9.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - }, - "nixpkgs": { - "branch": "release-21.05", - "description": "Nix Packages collection", - "homepage": "", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "43e16aa54fd8d73553f210b1be3d63ec1ee43f2c", - "sha256": "026bcvkmnph9wsjjpb6bwllcf445310infwg61givhz0y5hjdxfx", - "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/43e16aa54fd8d73553f210b1be3d63ec1ee43f2c.tar.gz", - "url_template": "https://github.com///archive/.tar.gz" - } -} diff --git a/nix/sources.nix b/nix/sources.nix deleted file mode 100644 index 1938409..0000000 --- a/nix/sources.nix +++ /dev/null @@ -1,174 +0,0 @@ -# This file has been generated by Niv. - -let - - # - # The fetchers. fetch_ fetches specs of type . - # - - fetch_file = pkgs: name: spec: - let - name' = sanitizeName name + "-src"; - in - if spec.builtin or true then - builtins_fetchurl { inherit (spec) url sha256; name = name'; } - else - pkgs.fetchurl { inherit (spec) url sha256; name = name'; }; - - fetch_tarball = pkgs: name: spec: - let - name' = sanitizeName name + "-src"; - in - if spec.builtin or true then - builtins_fetchTarball { name = name'; inherit (spec) url sha256; } - else - pkgs.fetchzip { name = name'; inherit (spec) url sha256; }; - - fetch_git = name: spec: - let - ref = - if spec ? ref then spec.ref else - if spec ? branch then "refs/heads/${spec.branch}" else - if spec ? tag then "refs/tags/${spec.tag}" else - abort "In git source '${name}': Please specify `ref`, `tag` or `branch`!"; - in - builtins.fetchGit { url = spec.repo; inherit (spec) rev; inherit ref; }; - - fetch_local = spec: spec.path; - - fetch_builtin-tarball = name: throw - ''[${name}] The niv type "builtin-tarball" is deprecated. You should instead use `builtin = true`. - $ niv modify ${name} -a type=tarball -a builtin=true''; - - fetch_builtin-url = name: throw - ''[${name}] The niv type "builtin-url" will soon be deprecated. You should instead use `builtin = true`. - $ niv modify ${name} -a type=file -a builtin=true''; - - # - # Various helpers - # - - # https://github.com/NixOS/nixpkgs/pull/83241/files#diff-c6f540a4f3bfa4b0e8b6bafd4cd54e8bR695 - sanitizeName = name: - ( - concatMapStrings (s: if builtins.isList s then "-" else s) - ( - builtins.split "[^[:alnum:]+._?=-]+" - ((x: builtins.elemAt (builtins.match "\\.*(.*)" x) 0) name) - ) - ); - - # The set of packages used when specs are fetched using non-builtins. - mkPkgs = sources: system: - let - sourcesNixpkgs = - import (builtins_fetchTarball { inherit (sources.nixpkgs) url sha256; }) { inherit system; }; - hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath; - hasThisAsNixpkgsPath = == ./.; - in - if builtins.hasAttr "nixpkgs" sources - then sourcesNixpkgs - else if hasNixpkgsPath && ! hasThisAsNixpkgsPath then - import {} - else - abort - '' - Please specify either (through -I or NIX_PATH=nixpkgs=...) or - add a package called "nixpkgs" to your sources.json. - ''; - - # The actual fetching function. - fetch = pkgs: name: spec: - - if ! builtins.hasAttr "type" spec then - abort "ERROR: niv spec ${name} does not have a 'type' attribute" - else if spec.type == "file" then fetch_file pkgs name spec - else if spec.type == "tarball" then fetch_tarball pkgs name spec - else if spec.type == "git" then fetch_git name spec - else if spec.type == "local" then fetch_local spec - else if spec.type == "builtin-tarball" then fetch_builtin-tarball name - else if spec.type == "builtin-url" then fetch_builtin-url name - else - abort "ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}"; - - # If the environment variable NIV_OVERRIDE_${name} is set, then use - # the path directly as opposed to the fetched source. - replace = name: drv: - let - saneName = stringAsChars (c: if isNull (builtins.match "[a-zA-Z0-9]" c) then "_" else c) name; - ersatz = builtins.getEnv "NIV_OVERRIDE_${saneName}"; - in - if ersatz == "" then drv else - # this turns the string into an actual Nix path (for both absolute and - # relative paths) - if builtins.substring 0 1 ersatz == "/" then /. + ersatz else /. + builtins.getEnv "PWD" + "/${ersatz}"; - - # Ports of functions for older nix versions - - # a Nix version of mapAttrs if the built-in doesn't exist - mapAttrs = builtins.mapAttrs or ( - f: set: with builtins; - listToAttrs (map (attr: { name = attr; value = f attr set.${attr}; }) (attrNames set)) - ); - - # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/lists.nix#L295 - range = first: last: if first > last then [] else builtins.genList (n: first + n) (last - first + 1); - - # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L257 - stringToCharacters = s: map (p: builtins.substring p 1 s) (range 0 (builtins.stringLength s - 1)); - - # https://github.com/NixOS/nixpkgs/blob/0258808f5744ca980b9a1f24fe0b1e6f0fecee9c/lib/strings.nix#L269 - stringAsChars = f: s: concatStrings (map f (stringToCharacters s)); - concatMapStrings = f: list: concatStrings (map f list); - concatStrings = builtins.concatStringsSep ""; - - # https://github.com/NixOS/nixpkgs/blob/8a9f58a375c401b96da862d969f66429def1d118/lib/attrsets.nix#L331 - optionalAttrs = cond: as: if cond then as else {}; - - # fetchTarball version that is compatible between all the versions of Nix - builtins_fetchTarball = { url, name ? null, sha256 }@attrs: - let - inherit (builtins) lessThan nixVersion fetchTarball; - in - if lessThan nixVersion "1.12" then - fetchTarball ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) - else - fetchTarball attrs; - - # fetchurl version that is compatible between all the versions of Nix - builtins_fetchurl = { url, name ? null, sha256 }@attrs: - let - inherit (builtins) lessThan nixVersion fetchurl; - in - if lessThan nixVersion "1.12" then - fetchurl ({ inherit url; } // (optionalAttrs (!isNull name) { inherit name; })) - else - fetchurl attrs; - - # Create the final "sources" from the config - mkSources = config: - mapAttrs ( - name: spec: - if builtins.hasAttr "outPath" spec - then abort - "The values in sources.json should not have an 'outPath' attribute" - else - spec // { outPath = replace name (fetch config.pkgs name spec); } - ) config.sources; - - # The "config" used by the fetchers - mkConfig = - { sourcesFile ? if builtins.pathExists ./sources.json then ./sources.json else null - , sources ? if isNull sourcesFile then {} else builtins.fromJSON (builtins.readFile sourcesFile) - , system ? builtins.currentSystem - , pkgs ? mkPkgs sources system - }: rec { - # The sources, i.e. the attribute set of spec name to spec - inherit sources; - - # The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers - inherit pkgs; - }; - -in -mkSources (mkConfig {}) // { __functor = _: settings: mkSources (mkConfig settings); } diff --git a/shell.nix b/shell.nix index 5155480..3c5d4bf 100644 --- a/shell.nix +++ b/shell.nix @@ -1,37 +1,83 @@ +{ nixpkgs ? import {}, compiler ? "default", doBenchmark ? false }: + let - project = import ./default.nix; + + inherit (nixpkgs) pkgs; + + pg-transact = with haskellPackages; callPackage( + { mkDerivation, async, base, bytestring, exceptions, hspec + , hspec-expectations-lifted, lib, monad-control, postgresql-libpq + , postgresql-simple, tmp-postgres, transformers + }: + mkDerivation { + pname = "pg-transact"; + version = "0.3.1.1"; + sha256 = "8d5d61ebafdcb8e94d563e74bc9646519e45a2fddf327a708b0a59e5160c20fc"; + libraryHaskellDepends = [ + base bytestring exceptions monad-control postgresql-simple + transformers + ]; + testHaskellDepends = [ + async base bytestring exceptions hspec hspec-expectations-lifted + postgresql-libpq postgresql-simple tmp-postgres + ]; + doCheck = false; + homepage = "https://github.com/jfischoff/pg-transact#readme"; + description = "A postgresql-simple transaction monad"; + license = lib.licenses.bsd3; + }) {}; + + f = { mkDerivation, aeson, base, base16-bytestring + , base64-bytestring, bytestring, case-insensitive, clock + , containers, directory, extra, haskell-gettext, hspec + , hspec-discover, hspec-wai, hspec-wai-json, http-api-data + , http-types, iproute, lib, mime-mail, mtl, network, opaleye + , optparse-applicative, postgresql-simple + , postgresql-simple-migration, product-profunctors, profunctors + , pureMD5, random-bytestring, resource-pool, servant, servant-rawm + , servant-rawm-server, servant-server, stm, text, time + , tmp-postgres, wai, wai-logger, wai-middleware-throttle, warp + , yaml + }: + mkDerivation { + pname = "mateamt"; + version = "0.0.0.0"; + src = ./.; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson base base16-bytestring base64-bytestring bytestring + containers directory extra haskell-gettext http-api-data http-types + mime-mail mtl opaleye postgresql-simple product-profunctors + profunctors pureMD5 random-bytestring servant servant-rawm + servant-rawm-server servant-server stm text time wai wai-logger + warp + ]; + executableHaskellDepends = [ + base base16-bytestring bytestring case-insensitive clock containers + iproute mtl network opaleye optparse-applicative postgresql-simple + postgresql-simple-migration servant servant-server stm text time + wai wai-logger wai-middleware-throttle warp yaml + ]; + testHaskellDepends = [ + base bytestring containers hspec hspec-wai hspec-wai-json mtl + pg-transact postgresql-simple resource-pool text time tmp-postgres + wai warp + ]; + testToolDepends = [ hspec-discover ]; + homepage = "https://gitea.nek0.eu/nek0/mateamt/"; + description = "A whole new matemat"; + license = lib.licenses.agpl3Plus; + }; + + 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 - project.shellFor { - # ALL of these arguments are optional. - # List of packages from the project you want to work on in - # the shell (default is all the projects local packages). - #packages = ps: with ps; [ - #]; - - # Builds a Hoogle documentation index of all dependencies, - # and provides a "hoogle" command to search the index. - withHoogle = true; - - # Some common tools can be added with the `tools` argument - tools = { - cabal = "latest"; # Selects the latest version in the hackage.nix snapshot - hlint = "latest"; # Selects the latest version in the hackage.nix snapshot - haskell-language-server = "latest"; - hspec-discover = "latest"; - }; - # See overlays/tools.nix for more details - - # Some you may need to get some other way. - buildInputs = [ (import {}).git ]; - - # Sellect cross compilers to include. - crossPlatforms = ps: with ps; [ - #ghcjs # Adds support for `js-unknown-ghcjs-cabal build` in the shell - # mingwW64 # Adds support for `x86_64-W64-mingw32-cabal build` in the shell - ]; - - # Prevents cabal from choosing alternate plans, so that - # *all* dependencies are provided by Nix. - exactDeps = false; - } + if pkgs.lib.inNixShell then drv.env else drv