From 3ff89d8f12b0f2b3ef4cfb9873df6c76a1d9c761 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 12 Jun 2024 16:31:01 +0200 Subject: [PATCH 1/5] haskell-modules: Add replacements-by-name --- .../haskell-modules/non-hackage-packages.nix | 15 +++++++++++++++ .../replacements-by-name/README.md | 7 +++++++ 2 files changed, 22 insertions(+) create mode 100644 pkgs/development/haskell-modules/replacements-by-name/README.md diff --git a/pkgs/development/haskell-modules/non-hackage-packages.nix b/pkgs/development/haskell-modules/non-hackage-packages.nix index bb995435fc600..532a57ca5824c 100644 --- a/pkgs/development/haskell-modules/non-hackage-packages.nix +++ b/pkgs/development/haskell-modules/non-hackage-packages.nix @@ -1,5 +1,19 @@ { pkgs, haskellLib }: +let + inherit (pkgs) lib; + inherit (lib.strings) hasSuffix removeSuffix; + + pathsByName = + lib.concatMapAttrs + (name: type: + lib.optionalAttrs (type == "regular" && hasSuffix ".nix" name) { + ${removeSuffix ".nix" name} = ./replacements-by-name + "/${name}"; + } + ) + (builtins.readDir ./replacements-by-name); +in + # EXTRA HASKELL PACKAGES NOT ON HACKAGE # # This file should only contain packages that are not in ./hackage-packages.nix. @@ -42,3 +56,4 @@ self: super: { hercules-ci-optparse-applicative = self.callPackage ../misc/haskell/hercules-ci-optparse-applicative.nix {}; } +// lib.mapAttrs (_name: path: self.callPackage path {}) pathsByName diff --git a/pkgs/development/haskell-modules/replacements-by-name/README.md b/pkgs/development/haskell-modules/replacements-by-name/README.md new file mode 100644 index 0000000000000..ce9f2bfd2f753 --- /dev/null +++ b/pkgs/development/haskell-modules/replacements-by-name/README.md @@ -0,0 +1,7 @@ +# haskell-modules/replacements-by-name + +This directory is scanned, and all `.nix` files are called in order to replace their respective packages in the `haskellPackages` set. +They're loaded after `hackage-packages.nix` but before any overrides are applied. +See [non-hackage-packages.nix](../non-hackage-packages.nix) for the implementation. + +This is used for selective backports of updates, as the hackage package set won't be updated in its entirety. From 58d1220784e306dac7f108a4320f5194f461e31a Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 12 Jun 2024 16:32:51 +0200 Subject: [PATCH 2/5] haskellPackages.hercules-ci-cnix-store: 0.3.5.1 -> 0.3.6.0 --- .../hercules-ci-cnix-store.nix | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-store.nix diff --git a/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-store.nix b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-store.nix new file mode 100644 index 0000000000000..07bd67252cf4b --- /dev/null +++ b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-store.nix @@ -0,0 +1,26 @@ +{ mkDerivation, base, boost, bytestring, Cabal +, cabal-pkg-config-version-hook, conduit, containers, exceptions +, hspec, hspec-discover, inline-c, inline-c-cpp, lib, nix +, protolude, template-haskell, temporary, text, unix, unliftio-core +, vector +}: +mkDerivation { + pname = "hercules-ci-cnix-store"; + version = "0.3.6.0"; + sha256 = "07aa51577193274d71e1fa8c794d9b70780bf3b2c9d851d517ec95df715b850a"; + setupHaskellDepends = [ base Cabal cabal-pkg-config-version-hook ]; + libraryHaskellDepends = [ + base bytestring conduit containers inline-c inline-c-cpp protolude + template-haskell unix unliftio-core vector + ]; + librarySystemDepends = [ boost ]; + libraryPkgconfigDepends = [ nix ]; + testHaskellDepends = [ + base bytestring containers exceptions hspec inline-c inline-c-cpp + protolude temporary text + ]; + testToolDepends = [ hspec-discover ]; + homepage = "https://docs.hercules-ci.com"; + description = "Haskell bindings for Nix's libstore"; + license = lib.licenses.asl20; +} From 196d3fdd2ccbe0744367279899aca1b2fbdd384e Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 12 Jun 2024 16:33:19 +0200 Subject: [PATCH 3/5] haskellPackages.hercules-ci-cnix-expr: 0.3.6.2 -> 0.3.6.4 --- .../hercules-ci-cnix-expr.nix | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-expr.nix diff --git a/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-expr.nix b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-expr.nix new file mode 100644 index 0000000000000..9e8e975b2dda1 --- /dev/null +++ b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-cnix-expr.nix @@ -0,0 +1,29 @@ +{ mkDerivation, aeson, base, boost, bytestring, Cabal +, cabal-pkg-config-version-hook, conduit, containers, directory +, exceptions, filepath, hercules-ci-cnix-store, hspec +, hspec-discover, inline-c, inline-c-cpp, lib, nix, process +, protolude, QuickCheck, scientific, temporary, text, unliftio +, unordered-containers, vector +}: +mkDerivation { + pname = "hercules-ci-cnix-expr"; + version = "0.3.6.4"; + sha256 = "6cc5cc25bd5a246ac81bd1d7903951c01ba21eff025705b71e0421976325ad50"; + setupHaskellDepends = [ base Cabal cabal-pkg-config-version-hook ]; + libraryHaskellDepends = [ + aeson base bytestring conduit containers directory exceptions + filepath hercules-ci-cnix-store inline-c inline-c-cpp protolude + scientific text unliftio unordered-containers vector + ]; + librarySystemDepends = [ boost ]; + libraryPkgconfigDepends = [ nix ]; + testHaskellDepends = [ + aeson base bytestring containers filepath hercules-ci-cnix-store + hspec process protolude QuickCheck scientific temporary text + unordered-containers vector + ]; + testToolDepends = [ hspec-discover ]; + homepage = "https://docs.hercules-ci.com"; + description = "Bindings for the Nix evaluator"; + license = lib.licenses.asl20; +} From b061bebc7b7e205dfbb85c4010b58713f94b9bb1 Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 12 Jun 2024 16:33:46 +0200 Subject: [PATCH 4/5] haskellPackages.hercules-ci-cnix-api: 0.8.3.0 -> 0.8.4.0 --- .../replacements-by-name/hercules-ci-api.nix | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pkgs/development/haskell-modules/replacements-by-name/hercules-ci-api.nix diff --git a/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-api.nix b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-api.nix new file mode 100644 index 0000000000000..edd3ac13b10ef --- /dev/null +++ b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-api.nix @@ -0,0 +1,39 @@ +{ mkDerivation, aeson, base, bytestring, containers, cookie +, exceptions, hashable, hercules-ci-api-core, hspec, http-api-data +, http-media, insert-ordered-containers, lens, lens-aeson, lib +, memory, network-uri, openapi3, profunctors, protolude, QuickCheck +, quickcheck-classes, servant, servant-auth, servant-auth-swagger +, servant-openapi3, servant-swagger, servant-swagger-ui-core +, string-conv, swagger2, text, time, uuid, vector +}: +mkDerivation { + pname = "hercules-ci-api"; + version = "0.8.4.0"; + sha256 = "6e7701d374ba9c3fc0491985f67e1d4a1ac477cc1eff6e37e1dcdc00e29a45dc"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + aeson base bytestring containers cookie exceptions hashable + hercules-ci-api-core http-api-data http-media lens lens-aeson + memory network-uri openapi3 profunctors servant servant-auth + servant-auth-swagger servant-openapi3 servant-swagger + servant-swagger-ui-core string-conv swagger2 text time uuid + ]; + executableHaskellDepends = [ + aeson base bytestring containers cookie exceptions hashable + http-api-data http-media insert-ordered-containers lens memory + network-uri openapi3 profunctors servant servant-auth + servant-auth-swagger servant-openapi3 servant-swagger + servant-swagger-ui-core string-conv swagger2 text time uuid + ]; + testHaskellDepends = [ + aeson base bytestring containers exceptions hashable + hercules-ci-api-core hspec http-api-data http-media protolude + QuickCheck quickcheck-classes servant servant-auth string-conv text + time uuid vector + ]; + homepage = "https://github.com/hercules-ci/hercules-ci-agent#readme"; + description = "Hercules CI API definition with Servant"; + license = lib.licenses.asl20; + mainProgram = "hercules-gen-swagger"; +} From 297e4fdabbe312343c5f706a4ed4a71907f35faa Mon Sep 17 00:00:00 2001 From: Robert Hensing Date: Wed, 12 Jun 2024 16:34:10 +0200 Subject: [PATCH 5/5] haskellPackages.hercules-ci-agent: 0.10.2 -> 0.10.4 --- .../hercules-ci-agent.nix | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 pkgs/development/haskell-modules/replacements-by-name/hercules-ci-agent.nix diff --git a/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-agent.nix b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-agent.nix new file mode 100644 index 0000000000000..ffa5f704cb85a --- /dev/null +++ b/pkgs/development/haskell-modules/replacements-by-name/hercules-ci-agent.nix @@ -0,0 +1,66 @@ +{ mkDerivation, aeson, async, attoparsec, base, base64-bytestring +, bifunctors, binary, binary-conduit, boost, bytestring, Cabal +, cabal-pkg-config-version-hook, cachix, cachix-api, conduit +, conduit-extra, containers, directory, dlist, exceptions +, file-embed, filepath, hercules-ci-api, hercules-ci-api-agent +, hercules-ci-api-core, hercules-ci-cnix-expr +, hercules-ci-cnix-store, hostname, hspec, hspec-discover +, http-client, http-client-tls, http-conduit, HUnit, inline-c +, inline-c-cpp, katip, lens, lens-aeson, lib, lifted-async +, lifted-base, monad-control, mtl, network, network-uri, nix +, optparse-applicative, process, process-extras, profunctors +, protolude, QuickCheck, safe-exceptions, scientific, servant +, servant-auth-client, servant-client, servant-client-core, stm +, tagged, temporary, text, time, tls, tomland, transformers +, transformers-base, unbounded-delays, unix, unliftio +, unliftio-core, unordered-containers, uuid, vector, websockets +, wuss +}: +mkDerivation { + pname = "hercules-ci-agent"; + version = "0.10.4"; + sha256 = "8daf98cb6817bc08cc1bcde0275fb9c4dc1727449b3d797a99e64ed009be54af"; + isLibrary = true; + isExecutable = true; + setupHaskellDepends = [ base Cabal cabal-pkg-config-version-hook ]; + libraryHaskellDepends = [ + aeson async base binary binary-conduit bytestring conduit + containers directory dlist exceptions file-embed filepath + hercules-ci-api-agent hercules-ci-api-core hercules-ci-cnix-expr + hercules-ci-cnix-store katip lens lens-aeson lifted-async + lifted-base monad-control mtl network network-uri process + process-extras protolude safe-exceptions stm tagged temporary text + time tls transformers transformers-base unbounded-delays unix + unliftio unliftio-core uuid vector websockets wuss + ]; + executableHaskellDepends = [ + aeson async attoparsec base base64-bytestring bifunctors binary + binary-conduit bytestring cachix cachix-api conduit conduit-extra + containers directory dlist exceptions filepath hercules-ci-api + hercules-ci-api-agent hercules-ci-api-core hercules-ci-cnix-expr + hercules-ci-cnix-store hostname http-client http-client-tls + http-conduit inline-c inline-c-cpp katip lens lens-aeson + lifted-async lifted-base monad-control mtl network network-uri + optparse-applicative process process-extras profunctors protolude + safe-exceptions scientific servant servant-auth-client + servant-client servant-client-core stm temporary text time tomland + transformers transformers-base unix unliftio unliftio-core + unordered-containers uuid vector websockets wuss + ]; + executableSystemDepends = [ boost ]; + executablePkgconfigDepends = [ nix ]; + testHaskellDepends = [ + aeson async attoparsec base bifunctors binary binary-conduit + bytestring conduit containers exceptions filepath + hercules-ci-api-agent hercules-ci-api-core hercules-ci-cnix-store + hspec HUnit katip lens lens-aeson lifted-async lifted-base + monad-control mtl process profunctors protolude QuickCheck + safe-exceptions scientific stm tagged temporary text tomland + transformers transformers-base unliftio-core unordered-containers + uuid vector + ]; + testToolDepends = [ hspec-discover ]; + homepage = "https://docs.hercules-ci.com"; + description = "Runs Continuous Integration tasks on your machines"; + license = lib.licenses.asl20; +}