diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 315a6e0862fc4475b70c41578ad6aa7e10c6c5ee..fafeb820b17ed203e244c63caa73c1f973854f99 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,6 +15,7 @@ build: PACKAGE: - Agda - JuicyPixels + - VulkanMemoryAllocator - brick - composite-base - hint @@ -33,6 +34,7 @@ build: - sdl2-image - sdl2-mixer - sdl2-ttf + - vulkan - wai-app-static devour: diff --git a/README.md b/README.md index e6c0ecb69d53db29a33beeb6052d23477a608b55..590605e430a06aefe9b4477bb1fa7bd013d3ed0e 100644 --- a/README.md +++ b/README.md @@ -6,16 +6,15 @@ extends While horizon-core only contains packages required to bootstrap the horizon toolchain, horizon-advance contains packages required for canary testing -any compatibility issues with GHC mainline. - -Businesses and individuals who require advance warning of particular -open source packages for compatibility issues are encouraged to file -a request here. +any compatibility issues with GHC mainline. This includes a mix of things +that make heavy use of system libraries, or perhaps template-haskell or +type-checker plugins. The following things are always expected to be here: * Agda * JuicyPixels +* VulkanMemoryAllocator * brick * composite-base * hint @@ -35,6 +34,7 @@ The following things are always expected to be here: * sdl2-mixer * sdl2-ttf * wai-app-static +* vulkan This is the master branch building against the GHC 9.12 pre-release. diff --git a/configuration.nix b/configuration.nix index 625f723abf098fbb2ba98397ac308056e44d3b99..0a5ca6b9ebb50d44ec57aaa2c51d9eae1fed609d 100644 --- a/configuration.nix +++ b/configuration.nix @@ -58,6 +58,8 @@ final: prev: { postgresql-libpq-configure = addPkgconfigDepend prev.postgresql-libpq-configure pkgs.postgresql; + vulkan = prev.callPackage ./pkgs/vulkan.nix { vulkan = pkgs.vulkan-loader; }; + zlib = prev.callPackage ./pkgs/zlib.nix { inherit (pkgs) zlib; }; } diff --git a/horizon.dhall b/horizon.dhall index e6744253518c042beca70265204dfe893e7b6d78..f0bf11f345a08ceecacaba83825a685bb16c1b8f 100644 --- a/horizon.dhall +++ b/horizon.dhall @@ -8,6 +8,7 @@ let packages = , Only = H.callHackage "Only" "0.1" , RSA = H.callHackage "RSA" "2.4.1" , STMonadTrans = H.callHackage "STMonadTrans" "0.4.8" + , VulkanMemoryAllocator = H.callHackage "VulkanMemoryAllocator" "0.11.0.1" , aeson-typescript = H.callHackage "aeson-typescript" "0.6.3.0" , authenticate-oauth = H.callHackage "authenticate-oauth" "1.7" , base64 = H.callHackage "base64" "1.0" @@ -65,6 +66,7 @@ let packages = , hxt-charproperties = H.callHackage "hxt-charproperties" "9.5.0.0" , hxt-regex-xmlschema = H.callHackage "hxt-regex-xmlschema" "9.2.0.7" , hxt-unicode = H.callHackage "hxt-unicode" "9.0.2.4" + , inline-c = H.callHackage "inline-c" "0.9.1.10" , insert-ordered-containers = H.callHackage "insert-ordered-containers" "0.2.6" , io-streams = H.callHackage "io-streams" "1.5.2.2" @@ -170,6 +172,7 @@ let packages = , uuid = H.callHackage "uuid" "1.3.16" , vector-hashtables = H.callHackage "vector-hashtables" "0.1.2.0" , vinyl = H.callHackage "vinyl" "0.14.3" + , vulkan = H.callHackage "vulkan" "3.26.2" , wai-app-static = H.callHackage "wai-app-static" "3.1.9" , wai-extra = H.callHackage "wai-extra" "3.1.15" , webdriver = H.callHackage "webdriver" "0.12.0.0" diff --git a/horizon.lock b/horizon.lock index 7c875a42c3832a61a019fae3c31a9de8a902c000..7b0fadb8fb88badd1426db48ef8a738bd664421c 100644 --- a/horizon.lock +++ b/horizon.lock @@ -22,6 +22,10 @@ , mapValue = "3aad1a5a3d3a50cd7fcc00a9f1aee5a2d9de7ccb757c441d7f2036e31ef74392" } +, { mapKey = "VulkanMemoryAllocator" + , mapValue = + "bf4031301e99bb1b361cf84c96a73f0e8f9f9e9a907eccecbd582a379bb157fb" + } , { mapKey = "aeson-typescript" , mapValue = "8318137885b308ff64dc033ab2da68570e947a247407838b62e874343a9e18e8" @@ -214,6 +218,10 @@ , mapValue = "51842564d5164e5343626153affa5804555de5523fb3f362bbb4f011c4ef09b4" } +, { mapKey = "inline-c" + , mapValue = + "cd06cb210b2962062b6fc208d40f546487f49a5dcd777433f6fc34d60df14aa6" + } , { mapKey = "insert-ordered-containers" , mapValue = "03c7cf01ac7ec68aba7b787a6353a598011d3d26194a1e8ed14270b3bbae1b39" @@ -578,6 +586,10 @@ , mapValue = "7c1db280b3209be20d3044b990f2c6a1f170832ab6a70605c23103676f09aba7" } +, { mapKey = "vulkan" + , mapValue = + "6786aaf81cb17130abaa7ec0fe1aae90fa0e55471542d5e36ade489fcde6a343" + } , { mapKey = "wai-app-static" , mapValue = "91e738d5f409ba43ae0a474bc9ea722cf240845ae253742bceb2af397af825d0" diff --git a/overlay.nix b/overlay.nix index 4d3f749f07c2830e31b2ef9b4655667c5245e27b..7f2019cc985c081657b4ffd916809da15347a30b 100644 --- a/overlay.nix +++ b/overlay.nix @@ -14,6 +14,8 @@ final: prev: with pkgs.haskell.lib; { STMonadTrans = f final prev "STMonadTrans" (final.callPackage (./pkgs/STMonadTrans.nix) { }); + VulkanMemoryAllocator = f final prev "VulkanMemoryAllocator" (final.callPackage (./pkgs/VulkanMemoryAllocator.nix) { }); + aeson-typescript = f final prev "aeson-typescript" (final.callPackage (./pkgs/aeson-typescript.nix) { }); authenticate-oauth = f final prev "authenticate-oauth" (final.callPackage (./pkgs/authenticate-oauth.nix) { }); @@ -110,6 +112,8 @@ final: prev: with pkgs.haskell.lib; { hxt-unicode = f final prev "hxt-unicode" (final.callPackage (./pkgs/hxt-unicode.nix) { }); + inline-c = f final prev "inline-c" (final.callPackage (./pkgs/inline-c.nix) { }); + insert-ordered-containers = f final prev "insert-ordered-containers" (final.callPackage (./pkgs/insert-ordered-containers.nix) { }); io-streams = f final prev "io-streams" (final.callPackage (./pkgs/io-streams.nix) { }); @@ -292,6 +296,8 @@ final: prev: with pkgs.haskell.lib; { vinyl = f final prev "vinyl" (final.callPackage (./pkgs/vinyl.nix) { }); + vulkan = f final prev "vulkan" (final.callPackage (./pkgs/vulkan.nix) { }); + wai-app-static = f final prev "wai-app-static" (final.callPackage (./pkgs/wai-app-static.nix) { }); wai-extra = f final prev "wai-extra" (final.callPackage (./pkgs/wai-extra.nix) { }); diff --git a/pkgs/VulkanMemoryAllocator.nix b/pkgs/VulkanMemoryAllocator.nix new file mode 100644 index 0000000000000000000000000000000000000000..16d13ff6bc558da7dfa402493d21db9098becfbb --- /dev/null +++ b/pkgs/VulkanMemoryAllocator.nix @@ -0,0 +1,25 @@ +{ mkDerivation, base, bytestring, lib, system-cxx-std-lib +, transformers, vector, vulkan +}: +mkDerivation { + pname = "VulkanMemoryAllocator"; + version = "0.11.0.1"; + sha256 = "d5256ebe9bdeeb0939776d626cb845d894f4eaaea6647b550dd16a2498ce0f6d"; + isLibrary = true; + isExecutable = false; + enableSeparateDataOutput = false; + libraryHaskellDepends = [ + base bytestring system-cxx-std-lib transformers vector vulkan + ]; + enableLibraryProfiling = true; + enableExecutableProfiling = true; + doHaddock = true; + jailbreak = true; + doCheck = false; + doBenchmark = false; + hyperlinkSource = false; + homepage = "https://github.com/expipiplus1/vulkan#readme"; + description = "Bindings to the VulkanMemoryAllocator library"; + license = lib.licenses.bsd3; + broken = false; +} \ No newline at end of file diff --git a/pkgs/inline-c.nix b/pkgs/inline-c.nix new file mode 100644 index 0000000000000000000000000000000000000000..ebdedd944a9b6fb4d054a99a53da80704239e28c --- /dev/null +++ b/pkgs/inline-c.nix @@ -0,0 +1,33 @@ +{ mkDerivation, QuickCheck, base, bytestring, containers, hashable +, hspec, lib, mtl, parsec, parsers, prettyprinter, raw-strings-qq +, regex-posix, split, template-haskell, transformers +, unordered-containers, vector +}: +mkDerivation { + pname = "inline-c"; + version = "0.9.1.10"; + sha256 = "6d0d2e8e49f27925713d7d4550c2e901418b7dfbd6b288e0d3a8fd47165ea4b1"; + isLibrary = true; + isExecutable = true; + enableSeparateDataOutput = false; + libraryHaskellDepends = [ + base bytestring containers hashable mtl parsec parsers + prettyprinter template-haskell transformers unordered-containers + vector + ]; + testHaskellDepends = [ + base containers hashable hspec parsers prettyprinter QuickCheck + raw-strings-qq regex-posix split template-haskell transformers + unordered-containers vector + ]; + enableLibraryProfiling = true; + enableExecutableProfiling = true; + doHaddock = true; + jailbreak = true; + doCheck = false; + doBenchmark = false; + hyperlinkSource = false; + description = "Write Haskell source files including C code inline. No FFI required."; + license = lib.licenses.mit; + broken = false; +} \ No newline at end of file diff --git a/pkgs/vulkan.nix b/pkgs/vulkan.nix new file mode 100644 index 0000000000000000000000000000000000000000..18fc64b721bedce3800100c53a5decadf9624fda --- /dev/null +++ b/pkgs/vulkan.nix @@ -0,0 +1,29 @@ +{ mkDerivation, base, bytestring, containers, inline-c, lib, tasty +, tasty-discover, tasty-hunit, template-haskell, transformers +, vector, vulkan +}: +mkDerivation { + pname = "vulkan"; + version = "3.26.2"; + sha256 = "0ca86754fdf6eb66a9e6b8da896637705a204dd949b3e81f4a7a902f18cb1ef8"; + isLibrary = true; + isExecutable = false; + enableSeparateDataOutput = false; + libraryHaskellDepends = [ base bytestring transformers vector ]; + libraryPkgconfigDepends = [ vulkan ]; + testHaskellDepends = [ + base containers inline-c tasty tasty-hunit template-haskell + ]; + testToolDepends = [ tasty-discover ]; + enableLibraryProfiling = true; + enableExecutableProfiling = true; + doHaddock = true; + jailbreak = true; + doCheck = false; + doBenchmark = false; + hyperlinkSource = false; + homepage = "https://github.com/expipiplus1/vulkan#readme"; + description = "Bindings to the Vulkan graphics API"; + license = lib.licenses.bsd3; + broken = false; +}