From 74a3931147d801f3c773ad303e6edc356e1dd5d2 Mon Sep 17 00:00:00 2001 From: Andrea Bedini Date: Tue, 30 Aug 2022 13:56:58 +0200 Subject: [PATCH] Build a cabal install plan purely in nix --- dist-newstyle/cache/plan.json | 1 + flake.lock | 403 +--------------------------------- flake.nix | 204 +++++++++++++---- 3 files changed, 168 insertions(+), 440 deletions(-) create mode 100644 dist-newstyle/cache/plan.json diff --git a/dist-newstyle/cache/plan.json b/dist-newstyle/cache/plan.json new file mode 100644 index 0000000..6970c00 --- /dev/null +++ b/dist-newstyle/cache/plan.json @@ -0,0 +1 @@ +{"cabal-version":"3.8.1.0","cabal-lib-version":"3.8.1.0","compiler-id":"ghc-8.10.7","os":"linux","arch":"x86_64","install-plan":[{"type":"pre-existing","id":"Cabal-3.2.1.0","pkg-name":"Cabal","pkg-version":"3.2.1.0","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","process-1.6.13.2","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2"]},{"type":"configured","id":"Cabal-syntax-3.8.1.0-164a57621aafac99db1df6a24dd4154b102814d7eb5cec469e1d162a1ce49756","pkg-name":"Cabal-syntax","pkg-version":"3.8.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4936765e9a7a8ecbf8fdbe9067f6d972bc0299220063abb2632a9950af64b966","pkg-src-sha256":"07e8ddb19fe01781485f1522b6afc22aba680b0ab28ebe6bbfb84a2dd698ce0f","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","mtl-2.2.2","parsec-3.1.14.0","pretty-1.1.3.6","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"OneTuple-0.3.1-802e4a70a5766ef5481debc126ec452ee3d97d3c7c253bbe30760c14944d48ce","pkg-name":"OneTuple","pkg-version":"0.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fc32cb744477befa450a538ea4975cc523f0a2f1585cb5a36e9936a3d18e9a3c","pkg-src-sha256":"98853682d52fb4cc37a45cd186fbd77cf2565d3df5171acc4cf026427e103eef","depends":["base-4.14.3.0","base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"QuickCheck-2.14.2-1444127565c1704291277aded18ef3fd47b7d91b39f440b4e5c49854fc3fc021","pkg-name":"QuickCheck","pkg-version":"2.14.2","flags":{"old-random":false,"templatehaskell":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4ce29211223d5e6620ebceba34a3ca9ccf1c10c0cf387d48aea45599222ee5aa","pkg-src-sha256":"d87b6c85696b601175274361fa62217894401e401e150c3c5d4013ac53cd36f3","depends":["base-4.14.3.0","containers-0.6.5.1","deepseq-1.4.4.0","random-1.2.1.1-9d37d2460648674af8af08b416b705f47c736f149bdb8710aee1c07002adf864","splitmix-0.1.0.4-ecf05af7ba88b161057dd38db998065e9449310e23cbacac97d6a6e83c32b8d5","template-haskell-2.16.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"StateVar-1.2.2-72ea4dd6ad21cffce72b1541c4ffcb909991ddf4cabce283446595712981c9d2","pkg-name":"StateVar","pkg-version":"1.2.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3c022c00485fe165e3080d5da6b3ca9c9b02f62c5deebc584d1b3d1309ce673e","pkg-src-sha256":"5e4b39da395656a59827b0280508aafdc70335798b50e5d6fd52596026251825","depends":["base-4.14.3.0","stm-2.5.0.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"aeson-2.1.0.0-87d2baa1ff57c4cf9b04254fc2d676c73c21899366baf1994ee99c18ca1a3917","pkg-name":"aeson","pkg-version":"2.1.0.0","flags":{"cffi":false,"ordered-keymap":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"127f381d97f397c7c56bc5b99d0b5e4c9926be0bcfd8df67115f17392b13e17a","pkg-src-sha256":"0a763ef5fa16da678e5a1ee8c394825b6723182a9a755709170edc08b8f73c94","depends":["OneTuple-0.3.1-802e4a70a5766ef5481debc126ec452ee3d97d3c7c253bbe30760c14944d48ce","QuickCheck-2.14.2-1444127565c1704291277aded18ef3fd47b7d91b39f440b4e5c49854fc3fc021","attoparsec-0.14.4-ea425ac3bdf8a067cdc7834b30b76db0f2374290a3e3c8054f8744104fa88678","base-4.14.3.0","base-compat-batteries-0.12.2-d4d0b75b079db2b233ef98dbc2d2790efe58e1f2ed1cf1e7b834f6faabc45e56","bytestring-0.10.12.0","containers-0.6.5.1","data-fix-0.3.2-260e01d0d5f644f0c8e6a2f5ef17678cde058f26d4518897ae5e48af1b8ee7bf","deepseq-1.4.4.0","dlist-1.0-b0d9a07669322bdf764a280f6d6c62da10cdcb19e05fbf433a3d0dadaa0f8f2c","generically-0.1-5909705cacef0cebcc10af46b8156e74f75df0f8c2dabf6b1b2e5c10feaee738","ghc-prim-0.6.1","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","indexed-traversable-0.1.2-84d6c7f80dd2b1558c6378cef15cefa0dd20fc82c17c29394f2b2e14d91088e3","primitive-0.7.4.0-1f467cdf5ae0e3f57c2662ad3086a910f91351056b170d263e1c1e48eecf77cf","scientific-0.3.7.0-96aaabc4f92e72fcc53787fcd9a6bb49dbea421d076da35e3d71d74c4f0bdea8","semialign-1.2.0.1-917379bcdcb221d1f97546cead5c27c60b9dd46f56d6ecd368b16d6e7764e3f9","strict-0.4.0.1-df559ece60ef5b2bfaab1331b20b63321cd56a4d2afd812e520003ec16920629","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","template-haskell-2.16.0.0","text-1.2.4.1","text-short-0.1.5-893678e9704f222c74d55e3da838c9442f7dd08f45a2f1f89e69e622094af2b4","th-abstraction-0.4.4.0-41f34e48b023b3806c51561002c557ccc046c2b622296784e16b7a29a177d940","these-1.1.1.1-e2b0a1929fd32b68cf0c903cfcc901fec3b3a8a5b78d5831c177220bf4b4ea1d","time-1.9.3","time-compat-1.9.6.1-1368d9f160dbe5251ea450c158448f98ae9f4657d74f282d628e2259f62c3c1a","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","uuid-types-1.0.5-0cc959dd60a1d55146b3d7bf145d2b6e1870b58fd73d1b5ba5b9ffa343d565f1","vector-0.13.0.0-ab344f8d08087660da8a7d8adbeb5c07fae0a9d6880520c83664f8c7bb3f8aef","witherable-0.4.2-260756213e94c0a040c1205df331c02499ebb8387efb4e0d09ff30404056f779"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ansi-terminal-0.11.3-2e7dd3c96a4af0247fcd092a93fcdc5b6651a7af200c5de86898499d214fd862","pkg-name":"ansi-terminal","pkg-version":"0.11.3","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cc499d5f4c09a7213cd752ee69dbb5a5b8f3d1c777274e609eea4bca5c68ac8c","pkg-src-sha256":"f4d563ecf71fb1d304bcdcad478d97efd9f61f6d9d4797a5d56e7722a92a9e6b","depends":["base-4.14.3.0","colour-2.3.6-005b1108275085df34d8b16d95e24ace05b61a584a4d34362ec4222572b7933f"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ansi-wl-pprint-0.6.9-b0e03a7784dccc14e6ab252f540af5c3791a336ca2274ba583ac22079b5361fb","pkg-name":"ansi-wl-pprint","pkg-version":"0.6.9","flags":{"example":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"212144ea0623b1170807a4162db05d87f26cf10b334aeadd0edb377aba06a1ce","pkg-src-sha256":"a7b2e8e7cd3f02f2954e8b17dc60a0ccd889f49e2068ebb15abfa1d42f7a4eac","depends":["ansi-terminal-0.11.3-2e7dd3c96a4af0247fcd092a93fcdc5b6651a7af200c5de86898499d214fd862","base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"array-0.5.4.0","pkg-name":"array","pkg-version":"0.5.4.0","depends":["base-4.14.3.0"]},{"type":"configured","id":"assoc-1.0.2-aba0a117dd6de51d6a5396379b2cf91bbd284578c7783e634d2788ef66f5cc5f","pkg-name":"assoc","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"93b8d43aa081e4205116a139f7cf690f608968161d19ebfb23d884d19b082b57","pkg-src-sha256":"d8988dc6e8718c7a3456515b769c9336aeeec730cf86fc5175247969ff8f144f","depends":["base-4.14.3.0","bifunctors-5.5.12-61f7f6c5ec9029b24a2113c4e89668fb0a89f056a71035f9b3da74952f96dca4","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"attoparsec-0.14.4-ea425ac3bdf8a067cdc7834b30b76db0f2374290a3e3c8054f8744104fa88678","pkg-name":"attoparsec","pkg-version":"0.14.4","flags":{"developer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c0569d86c02cadd403017ea414dcb5e4f7de5380de0d8a92b9337cad84cd5e02","pkg-src-sha256":"3f337fe58624565de12426f607c23e60c7b09c86b4e3adfc827ca188c9979e6c","depends":["array-0.5.4.0","attoparsec-0.14.4-l-attoparsec-internal-493be6238a55027008e3e6ae85bec846d85540101279384db990d1c303527c53","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","ghc-prim-0.6.1","scientific-0.3.7.0-96aaabc4f92e72fcc53787fcd9a6bb49dbea421d076da35e3d71d74c4f0bdea8","text-1.2.4.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"attoparsec-0.14.4-l-attoparsec-internal-493be6238a55027008e3e6ae85bec846d85540101279384db990d1c303527c53","pkg-name":"attoparsec","pkg-version":"0.14.4","flags":{"developer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c0569d86c02cadd403017ea414dcb5e4f7de5380de0d8a92b9337cad84cd5e02","pkg-src-sha256":"3f337fe58624565de12426f607c23e60c7b09c86b4e3adfc827ca188c9979e6c","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib:attoparsec-internal"},{"type":"pre-existing","id":"base-4.14.3.0","pkg-name":"base","pkg-version":"4.14.3.0","depends":["ghc-prim-0.6.1","integer-gmp-1.0.3.0","rts"]},{"type":"configured","id":"base-compat-0.12.2-565befe2c86ee48b65e8349cfccdd6be86bcc10a72c913333a1bda47b16cc502","pkg-name":"base-compat","pkg-version":"0.12.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"85d820a15e3f00f1781ac939cb9cdccdcc6f38c43e4c74a6e83e5d75f67b61a0","pkg-src-sha256":"a62adc883a5ac436f80e4ae02c3c56111cf1007492f267c291139a668d2150bd","depends":["base-4.14.3.0","ghc-prim-0.6.1","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base-compat-batteries-0.12.2-d4d0b75b079db2b233ef98dbc2d2790efe58e1f2ed1cf1e7b834f6faabc45e56","pkg-name":"base-compat-batteries","pkg-version":"0.12.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ecf0bb2b39be54f1ffa185d37663702b0651d34d1cdcc32d32bb8f7279396afe","pkg-src-sha256":"ede9092e07f904e0759160bf1ecd3fb7eb043bae6dc89a37c3dc94829ec5eb99","depends":["OneTuple-0.3.1-802e4a70a5766ef5481debc126ec452ee3d97d3c7c253bbe30760c14944d48ce","base-4.14.3.0","base-compat-0.12.2-565befe2c86ee48b65e8349cfccdd6be86bcc10a72c913333a1bda47b16cc502","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","pkg-name":"base-orphans","pkg-version":"0.8.7","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"58d5514b688ec037f53b9d60097b9d87f6b3847da68f65124987d67222c3a334","pkg-src-sha256":"888fd67f0dbe932778f5b170922ce80d0dcab1680ee98f1d6fcc362f20d9e447","depends":["base-4.14.3.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base16-bytestring-1.0.2.0-70aa3bac4d0b73533e1209155fdef8d1d52241185b590a3762ddab4fe7278b61","pkg-name":"base16-bytestring","pkg-version":"1.0.2.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"64abad7816ab8cabed8489e29f807b3a6f828e0b2cec0eae404323d69d36df9a","pkg-src-sha256":"1d5a91143ef0e22157536093ec8e59d226a68220ec89378d5dcaeea86472c784","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base64-0.4.2.4-0c0e5b5d95095b18e0e3debfdad7bfb211346a8b27f91bd1a6a12ff168c71867","pkg-name":"base64","pkg-version":"0.4.2.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"11bae5596109231fefda169b97fd4be94cdd738b19f2f49593167e4810515226","pkg-src-sha256":"640a2d0afcb07e1de2e0a13a5e942b0265781c5942bd642a8793e7b019be3585","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","text-1.2.4.1","text-short-0.1.5-893678e9704f222c74d55e3da838c9442f7dd08f45a2f1f89e69e622094af2b4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"base64-bytestring-1.2.1.0-3545a003991d706deff106a156708d03bce06cbc505ffc2e134f4db41d4ee516","pkg-name":"base64-bytestring","pkg-version":"1.2.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"50ec0e229255d4c45cbdd568da011311b8887f304b931564886016f4984334d8","pkg-src-sha256":"fbf8ed30edde271eb605352021431d8f1b055f95a56af31fe2eacf6bdfdc49c9","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"bifunctors-5.5.12-61f7f6c5ec9029b24a2113c4e89668fb0a89f056a71035f9b3da74952f96dca4","pkg-name":"bifunctors","pkg-version":"5.5.12","flags":{"semigroups":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"be0f858c893274deab8aa21f9e43b2f5931d9419604f23f82bb5c8a5d9b2c3e9","pkg-src-sha256":"c6067772009772764cdbd585057cc88902876378686bc391fe7b0d1eb66e715d","depends":["base-4.14.3.0","base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","comonad-5.0.8-00ee7a5db7a015249380333c4ccd5a22dabf9662672661808bc1bccc51663814","containers-0.6.5.1","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","template-haskell-2.16.0.0","th-abstraction-0.4.4.0-41f34e48b023b3806c51561002c557ccc046c2b622296784e16b7a29a177d940","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"binary-0.8.8.0","pkg-name":"binary","pkg-version":"0.8.8.0","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1"]},{"type":"pre-existing","id":"bytestring-0.10.12.0","pkg-name":"bytestring","pkg-version":"0.10.12.0","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"]},{"type":"configured","id":"case-insensitive-1.2.1.0-ef50f528a375a5ad3c71c5aedf2d423f9e593d9ba59ee40a151a99c9d4866025","pkg-name":"case-insensitive","pkg-version":"1.2.1.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9dfd3171fc7698cf8d931727d3af3a7b389135b583e46b5adac1f9d2026fff61","pkg-src-sha256":"296dc17e0c5f3dfb3d82ced83e4c9c44c338ecde749b278b6eae512f1d04e406","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"clock-0.8.3-8edc1978ba02d226f705fef2fcf476ca3b4387311e7c503360833185a136fe79","pkg-name":"clock","pkg-version":"0.8.3","flags":{"llvm":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a692159828c2cd278eaec317b3a7e9fb6d7b787c8a19f086004d15d9fa1fd72c","pkg-src-sha256":"845ce5db4c98cefd517323e005f87effceff886987305e421c4ef616dc0505d1","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"colour-2.3.6-005b1108275085df34d8b16d95e24ace05b61a584a4d34362ec4222572b7933f","pkg-name":"colour","pkg-version":"2.3.6","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ebdcbf15023958838a527e381ab3c3b1e99ed12d1b25efeb7feaa4ad8c37664a","pkg-src-sha256":"2cd35dcd6944a5abc9f108a5eb5ee564b6b1fa98a9ec79cefcc20b588991f871","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"comonad-5.0.8-00ee7a5db7a015249380333c4ccd5a22dabf9662672661808bc1bccc51663814","pkg-name":"comonad","pkg-version":"5.0.8","flags":{"containers":true,"distributive":true,"indexed-traversable":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"1f1aabd73ec7f80f20cf078a748a60cd48d8e57277802fdf6a9ab3601a9b8f7e","pkg-src-sha256":"ef6cdf2cc292cc43ee6aa96c581b235fdea8ab44a0bffb24dc79ae2b2ef33d13","depends":["base-4.14.3.0","containers-0.6.5.1","distributive-0.6.2.1-8785ff14c2e0677eaaa5fcf627e5943228beae11ad08adadd337ed1fc417e826","indexed-traversable-0.1.2-84d6c7f80dd2b1558c6378cef15cefa0dd20fc82c17c29394f2b2e14d91088e3","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","transformers-0.5.6.2","transformers-compat-0.7.2-92023744dd56bc9e9f1d627099ccaee305b2b7f7c6d02cae5154a3db1ce40dea"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"containers-0.6.5.1","pkg-name":"containers","pkg-version":"0.6.5.1","depends":["array-0.5.4.0","base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"configured","id":"contravariant-1.5.5-db83032095a68ebc42d39746dd4e19e4f6e37c7873237a6584c0b6157e6b8461","pkg-name":"contravariant","pkg-version":"1.5.5","flags":{"semigroups":true,"statevar":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"470ed0e040e879e2da4af1b2c8f94e199f6135852a8107858d5ae0a95365835f","pkg-src-sha256":"062fd66580d7aad0b5ba93e644ffa7feee69276ef50f20d4ed9f1deb7642dffa","depends":["StateVar-1.2.2-72ea4dd6ad21cffce72b1541c4ffcb909991ddf4cabce283446595712981c9d2","base-4.14.3.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"cryptohash-sha256-0.11.102.1-b7a551372a693f86d20a41b71c855fc42fda023dffe9c298ae27a04d47c48de8","pkg-name":"cryptohash-sha256","pkg-version":"0.11.102.1","flags":{"exe":false,"use-cbits":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"facd0c04925ef925ec05243471fd16055229fdf51f64db1a1049de0cc6c6dfc3","pkg-src-sha256":"73a7dc7163871a80837495039a099967b11f5c4fe70a118277842f7a713c6bf6","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"data-fix-0.3.2-260e01d0d5f644f0c8e6a2f5ef17678cde058f26d4518897ae5e48af1b8ee7bf","pkg-name":"data-fix","pkg-version":"0.3.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bdea17f6b17c1d327f53ae6806e1bc3ca7813b46742a93c6088c72837c8ae77c","pkg-src-sha256":"3a172d3bc0639c327345e965f9d9023e099425814b28dcdb7b60ff66d66219cc","depends":["base-4.14.3.0","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"deepseq-1.4.4.0","pkg-name":"deepseq","pkg-version":"1.4.4.0","depends":["array-0.5.4.0","base-4.14.3.0"]},{"type":"pre-existing","id":"directory-1.3.6.0","pkg-name":"directory","pkg-version":"1.3.6.0","depends":["base-4.14.3.0","filepath-1.4.2.1","time-1.9.3","unix-2.7.2.2"]},{"type":"configured","id":"distributive-0.6.2.1-8785ff14c2e0677eaaa5fcf627e5943228beae11ad08adadd337ed1fc417e826","pkg-name":"distributive","pkg-version":"0.6.2.1","flags":{"semigroups":true,"tagged":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0f99f5541cca04acf89b64432b03422b6408e830a8dff30e6c4334ef1a48680c","pkg-src-sha256":"d7351392e078f58caa46630a4b9c643e1e2e9dddee45848c5c8358e7b1316b91","depends":["base-4.14.3.0","base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"dlist-1.0-b0d9a07669322bdf764a280f6d6c62da10cdcb19e05fbf433a3d0dadaa0f8f2c","pkg-name":"dlist","pkg-version":"1.0","flags":{"werror":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"124cb3aa1decebd5171b46601b1f74cca6cfae12d266ace3799b86dd05ef7cb4","pkg-src-sha256":"173d637328bb173fcc365f30d29ff4a94292a1e0e5558aeb3dfc11de81510115","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"ed25519-0.0.5.0-4ae151eea836514248981a8a7fe1e1cf84de2cc9b054f6d836ce1317368af85e","pkg-name":"ed25519","pkg-version":"0.0.5.0","flags":{"no-donna":true,"test-doctests":true,"test-hlint":true,"test-properties":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"24ac7b5f3d9fa3c2f70262b329f2a75f24e7fd829f88c189b388efa1bcd67eb2","pkg-src-sha256":"d8a5958ebfa9309790efade64275dc5c441b568645c45ceed1b0c6ff36d6156d","depends":["base-4.14.3.0","bytestring-0.10.12.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"exceptions-0.10.4","pkg-name":"exceptions","pkg-version":"0.10.4","depends":["base-4.14.3.0","mtl-2.2.2","stm-2.5.0.1","template-haskell-2.16.0.0","transformers-0.5.6.2"]},{"type":"configured","id":"extra-1.7.10-64fa55676120fe404b68bdc5b995e5d40bd6017bafd0142450988687be47cab2","pkg-name":"extra","pkg-version":"1.7.10","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e384751317577554f873812358fab022da02aa9a286c9341308fac83f4d766c5","pkg-src-sha256":"9fdfe67986c89b6cc7a648904a997f4b774f8173cec3de64289d9c45224c4140","depends":["base-4.14.3.0","clock-0.8.3-8edc1978ba02d226f705fef2fcf476ca3b4387311e7c503360833185a136fe79","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2","time-1.9.3","unix-2.7.2.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"filepath-1.4.2.1","pkg-name":"filepath","pkg-version":"1.4.2.1","depends":["base-4.14.3.0"]},{"type":"configured","id":"filepattern-0.1.2-20f284a40572c676bccc06c715cdbfc4aa9310d7b7bef0e08ae1a3c529b1c352","pkg-name":"filepattern","pkg-version":"0.1.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"aec816ff25418d1b03ba75189e568f490eb86efc47f586d43363fa338e422e81","pkg-src-sha256":"d92912ee0db0b8c50d6b2ffdc1ae91ee30e2704b47896aa325b42b58a2fcf65b","depends":["base-4.14.3.0","directory-1.3.6.0","extra-1.7.10-64fa55676120fe404b68bdc5b995e5d40bd6017bafd0142450988687be47cab2","filepath-1.4.2.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"foliage-0.6.0.0-inplace-foliage","pkg-name":"foliage","pkg-version":"0.6.0.0","flags":{},"style":"local","pkg-src":{"type":"local","path":"/home/andrea/code/foliage/."},"dist-dir":"/home/andrea/code/foliage/dist-newstyle/build/x86_64-linux/ghc-8.10.7/foliage-0.6.0.0/x/foliage","build-info":"/home/andrea/code/foliage/dist-newstyle/build/x86_64-linux/ghc-8.10.7/foliage-0.6.0.0/x/foliage/build-info.json","depends":["Cabal-3.2.1.0","aeson-2.1.0.0-87d2baa1ff57c4cf9b04254fc2d676c73c21899366baf1994ee99c18ca1a3917","base-4.14.3.0","base64-0.4.2.4-0c0e5b5d95095b18e0e3debfdad7bfb211346a8b27f91bd1a6a12ff168c71867","bytestring-0.10.12.0","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-b7a551372a693f86d20a41b71c855fc42fda023dffe9c298ae27a04d47c48de8","directory-1.3.6.0","filepath-1.4.2.1","hackage-security-0.6.2.2-0cf91c1f51991a53e097795ea06c65df27ce4735bb98aff0d5c61690ec744a66","optparse-applicative-0.17.0.0-055745ef0013d51835b9b2ccd453dd6627887574d87669c74b14b3d7594f8f32","shake-0.19.6-e646fef814bdc7fd418d2a2c5af4f826e7edc3e6af7ccd75d90c1740ab0c536a","tar-0.5.1.1-13b72cfc0dd17a5610bf310d94e58bf563420a9714095f04e966cb92173d2b24","text-1.2.4.1","time-1.9.3","time-compat-1.9.6.1-1368d9f160dbe5251ea450c158448f98ae9f4657d74f282d628e2259f62c3c1a","tomland-1.3.3.1-5a08eb01881218c4833114903cccabafd599f5246271f6b9dafa58a51310555f","with-utf8-1.0.2.3-831ebe72727725ebdb82eeca969d56d883aa40283d6e60c43cd91d415c15bbbf","zlib-0.6.3.0-d20f1d6d07e70f2284ec7d0f68ce14b38764a5c67b1a8000271a616df38657ce"],"exe-depends":[],"component-name":"exe:foliage","bin-file":"/home/andrea/code/foliage/dist-newstyle/build/x86_64-linux/ghc-8.10.7/foliage-0.6.0.0/x/foliage/build/foliage/foliage"},{"type":"configured","id":"generically-0.1-5909705cacef0cebcc10af46b8156e74f75df0f8c2dabf6b1b2e5c10feaee738","pkg-name":"generically","pkg-version":"0.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"16d54a08bcdf708395c2200a28ffcba55e90479dc96ed617dbb94f0411f7a7af","pkg-src-sha256":"d5b72880e1d00b24b6c221978d060bea620acc412cdcb62521f3016cbd3f2b71","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"ghc-boot-th-8.10.7","pkg-name":"ghc-boot-th","pkg-version":"8.10.7","depends":["base-4.14.3.0"]},{"type":"pre-existing","id":"ghc-prim-0.6.1","pkg-name":"ghc-prim","pkg-version":"0.6.1","depends":["rts"]},{"type":"configured","id":"hackage-security-0.6.2.2-0cf91c1f51991a53e097795ea06c65df27ce4735bb98aff0d5c61690ec744a66","pkg-name":"hackage-security","pkg-version":"0.6.2.2","flags":{"base48":true,"cabal-syntax":true,"lukko":true,"mtl21":false,"old-directory":false,"use-network-uri":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"07f1d0529029acfb0d40aaeeecd668f61502aa3a294a982066dd9078e3d6724a","pkg-src-sha256":"a833a31610220506557e96fb6e3e8b05a2e1db8e7ebc06e91bbb699ddde0b276","depends":["Cabal-syntax-3.8.1.0-164a57621aafac99db1df6a24dd4154b102814d7eb5cec469e1d162a1ce49756","base-4.14.3.0","base16-bytestring-1.0.2.0-70aa3bac4d0b73533e1209155fdef8d1d52241185b590a3762ddab4fe7278b61","base64-bytestring-1.2.1.0-3545a003991d706deff106a156708d03bce06cbc505ffc2e134f4db41d4ee516","bytestring-0.10.12.0","containers-0.6.5.1","cryptohash-sha256-0.11.102.1-b7a551372a693f86d20a41b71c855fc42fda023dffe9c298ae27a04d47c48de8","directory-1.3.6.0","ed25519-0.0.5.0-4ae151eea836514248981a8a7fe1e1cf84de2cc9b054f6d836ce1317368af85e","filepath-1.4.2.1","ghc-prim-0.6.1","lukko-0.1.1.3-195fd1edcb01903fdb8723aaf4d8e621608926c56eb1d3987e143cb0f61c3c65","mtl-2.2.2","network-3.1.2.7-2d72df787370b1f16d6201e748b2276c2e80f11c5a492979e113b32cf6851dd5","network-uri-2.6.4.1-ff31666b88c254c489c14ea1599c7eded8d0a4254dd7644f81c9dd3b02ff6399","parsec-3.1.14.0","pretty-1.1.3.6","tar-0.5.1.1-13b72cfc0dd17a5610bf310d94e58bf563420a9714095f04e966cb92173d2b24","template-haskell-2.16.0.0","time-1.9.3","transformers-0.5.6.2","zlib-0.6.3.0-d20f1d6d07e70f2284ec7d0f68ce14b38764a5c67b1a8000271a616df38657ce"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","pkg-name":"hashable","pkg-version":"1.4.1.0","flags":{"containers":true,"integer-gmp":true,"random-initial-seed":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"50b2f002c68fe67730ee7a3cd8607486197dd99b084255005ad51ecd6970a41b","pkg-src-sha256":"e1b305c280e66ad827edeaedd6933b9fc4174f626882877eab2a08344e665e87","depends":["base-4.14.3.0","base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"heaps-0.4-7cd7f81fe8e434fb927c09a81c78e17029735eb735dadd2e0095eccad2f28315","pkg-name":"heaps","pkg-version":"0.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"66b19fcd813b0e4db3e0bac541bd46606c3b13d3d081d9f9666f4be0f5ff14b8","pkg-src-sha256":"89329df8b95ae99ef272e41e7a2d0fe2f1bb7eacfcc34bc01664414b33067cfd","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"hsc2hs-0.68.8-e-hsc2hs-d18ce01474ef463552864ad1bba448558b2bdd3f8c058d7ed1ebcc62c9423db9","pkg-name":"hsc2hs","pkg-version":"0.68.8","flags":{"in-ghc-tree":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"988c29f9b25293f44a29cf5164e2ec07a9f95e8d92c4ab3985e4915abf213a69","pkg-src-sha256":"78341efbc917a84a07f2143bee9203e2555072054d495717aa73d89d9df77a52","depends":["base-4.14.3.0","containers-0.6.5.1","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2"],"exe-depends":[],"component-name":"exe:hsc2hs","bin-file":"/home/andrea/.cabal/store/ghc-8.10.7/hsc2hs-0.68.8-e-hsc2hs-d18ce01474ef463552864ad1bba448558b2bdd3f8c058d7ed1ebcc62c9423db9/bin/hsc2hs"},{"type":"configured","id":"indexed-traversable-0.1.2-84d6c7f80dd2b1558c6378cef15cefa0dd20fc82c17c29394f2b2e14d91088e3","pkg-name":"indexed-traversable","pkg-version":"0.1.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"52a1b708abd921f91a5977f6ae53c4aa2b33f7c30be0fff17173f658b34c5350","pkg-src-sha256":"516858ee7198b1fed1b93c665157f9855fd947379db7f115d48c1b0d670e698d","depends":["array-0.5.4.0","base-4.14.3.0","containers-0.6.5.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"indexed-traversable-instances-0.1.1.1-45a424aab6e4e3304ae802765e572942f89f6608fe9a44f71c7211ddc10ad715","pkg-name":"indexed-traversable-instances","pkg-version":"0.1.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"04b9fac300cde96de9aaaa0c4237a85045308d0bd4ba360e318febf34ec0bd3a","pkg-src-sha256":"895ee5063d59e2b58930ca6fa54885bb11f19c8b7c7ba6c7b014f9431cdcc0b0","depends":["OneTuple-0.3.1-802e4a70a5766ef5481debc126ec452ee3d97d3c7c253bbe30760c14944d48ce","base-4.14.3.0","indexed-traversable-0.1.2-84d6c7f80dd2b1558c6378cef15cefa0dd20fc82c17c29394f2b2e14d91088e3","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","vector-0.13.0.0-ab344f8d08087660da8a7d8adbeb5c07fae0a9d6880520c83664f8c7bb3f8aef"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"integer-gmp-1.0.3.0","pkg-name":"integer-gmp","pkg-version":"1.0.3.0","depends":["ghc-prim-0.6.1"]},{"type":"configured","id":"integer-logarithms-1.0.3.1-b5e8bfff5cbd870ed5f69b506a02d0b6ed40ccff7a566b3c15120743f6a3fc29","pkg-name":"integer-logarithms","pkg-version":"1.0.3.1","flags":{"check-bounds":false,"integer-gmp":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d59bfd1d39808217af2b68789d3c0e57cb7199d47405a276060d88fef4f4017d","pkg-src-sha256":"9b0a9f9fab609b15cd015865721fb05f744a1bc77ae92fd133872de528bbea7f","depends":["array-0.5.4.0","base-4.14.3.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-dgtable-0.5.2-611975c124efb7e3dff07d621d374704168c1a98c4cd9abc0371f555da021a8f","pkg-name":"js-dgtable","pkg-version":"0.5.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"f75cb4fa53c88c65794becdd48eb0d3b2b8abd89a3d5c19e87af91f5225c15e4","pkg-src-sha256":"e28dd65bee8083b17210134e22e01c6349dc33c3b7bd17705973cd014e9f20ac","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-flot-0.8.3-163b76cdce2eb5fca3a158e8cc58c1e0a0378fc57e814b8623da9effed6e9420","pkg-name":"js-flot","pkg-version":"0.8.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"4c1c447a9a2fba0adba6d30678302a30c32b9dfde9e7aa9e9156483e1545096d","pkg-src-sha256":"1ba2f2a6b8d85da76c41f526c98903cbb107f8642e506c072c1e7e3c20fe5e7a","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"js-jquery-3.3.1-4b07853b823d103c8e45e6bee9e6183531d323a3c9cb9656aae62acb0f43e44e","pkg-name":"js-jquery","pkg-version":"3.3.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"59ab6c79159549ef94b584abce8e6d3b336014c2cce1337b59a8f637e2856df5","pkg-src-sha256":"e0e0681f0da1130ede4e03a051630ea439c458cb97216cdb01771ebdbe44069b","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"lukko-0.1.1.3-195fd1edcb01903fdb8723aaf4d8e621608926c56eb1d3987e143cb0f61c3c65","pkg-name":"lukko","pkg-version":"0.1.1.3","flags":{"ofd-locking":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c084c043a40632d3cafcac50fb5eeff84d91edb070a54baa94945f1c976f97c0","pkg-src-sha256":"a80efb60cfa3dae18682c01980d76d5f7e413e191cd186992e1bf7388d48ab1f","depends":["base-4.14.3.0"],"exe-depends":["hsc2hs-0.68.8-e-hsc2hs-d18ce01474ef463552864ad1bba448558b2bdd3f8c058d7ed1ebcc62c9423db9"],"component-name":"lib"},{"type":"configured","id":"megaparsec-9.2.1-4532d70efdbe517a11248fb2e6330912154c3a3a0c380188781ef6b3f22431d8","pkg-name":"megaparsec","pkg-version":"9.2.1","flags":{"dev":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d3756f634324f4d3ae57088bbf544723871cdb584508fc9b5c9e33ad9de3d313","pkg-src-sha256":"6b278397baa4ae66d613330465c919e909ced077ec308b18827b43cf6715e9ff","depends":["base-4.14.3.0","bytestring-0.10.12.0","case-insensitive-1.2.1.0-ef50f528a375a5ad3c71c5aedf2d423f9e593d9ba59ee40a151a99c9d4866025","containers-0.6.5.1","deepseq-1.4.4.0","mtl-2.2.2","parser-combinators-1.3.0-b1222433768b13ba9b34ad0413e6f7b0d39235ddfaca2e9539feb6d1ae9258db","scientific-0.3.7.0-96aaabc4f92e72fcc53787fcd9a6bb49dbea421d076da35e3d71d74c4f0bdea8","text-1.2.4.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"mtl-2.2.2","pkg-name":"mtl","pkg-version":"2.2.2","depends":["base-4.14.3.0","transformers-0.5.6.2"]},{"type":"configured","id":"network-3.1.2.7-2d72df787370b1f16d6201e748b2276c2e80f11c5a492979e113b32cf6851dd5","pkg-name":"network","pkg-version":"3.1.2.7","flags":{"devel":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"e3d78b13db9512aeb106e44a334ab42b7aa48d26c097299084084cb8be5c5568","pkg-src-sha256":"7f7620fef1a1af3d3d6747f510e73223a5c600e7d7fd9ace073d1222bdc63d85","components":{"lib":{"depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","directory-1.3.6.0"],"exe-depends":["hsc2hs-0.68.8-e-hsc2hs-d18ce01474ef463552864ad1bba448558b2bdd3f8c058d7ed1ebcc62c9423db9"]}}},{"type":"configured","id":"network-uri-2.6.4.1-ff31666b88c254c489c14ea1599c7eded8d0a4254dd7644f81c9dd3b02ff6399","pkg-name":"network-uri","pkg-version":"2.6.4.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"a4765164ed0a2d1668446eb2e03460ce98645fbf083598c690846af79b7de10d","pkg-src-sha256":"57856db93608a4d419f681b881c9b8d4448800d5a687587dc37e8a9e0b223584","depends":["base-4.14.3.0","deepseq-1.4.4.0","parsec-3.1.14.0","template-haskell-2.16.0.0","th-compat-0.1.4-48dc6cd2ec378d23db0c17330a958f5e66a0de465f8eb6c69a7f1b96ae087312"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"optparse-applicative-0.17.0.0-055745ef0013d51835b9b2ccd453dd6627887574d87669c74b14b3d7594f8f32","pkg-name":"optparse-applicative","pkg-version":"0.17.0.0","flags":{"process":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"0713e54cbb341e5cae979e2ac441eb3a5ff42e303001f432bd58c19e5638bdda","pkg-src-sha256":"825b2e4d3dafe0ba64a073366a88062b3712b81f851793d9ce2327bee70af724","depends":["ansi-wl-pprint-0.6.9-b0e03a7784dccc14e6ab252f540af5c3791a336ca2274ba583ac22079b5361fb","base-4.14.3.0","process-1.6.13.2","transformers-0.5.6.2","transformers-compat-0.7.2-92023744dd56bc9e9f1d627099ccaee305b2b7f7c6d02cae5154a3db1ce40dea"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"parsec-3.1.14.0","pkg-name":"parsec","pkg-version":"3.1.14.0","depends":["base-4.14.3.0","bytestring-0.10.12.0","mtl-2.2.2","text-1.2.4.1"]},{"type":"configured","id":"parser-combinators-1.3.0-b1222433768b13ba9b34ad0413e6f7b0d39235ddfaca2e9539feb6d1ae9258db","pkg-name":"parser-combinators","pkg-version":"1.3.0","flags":{"dev":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"edd54ba56cbae8fadbcceebcfef31b2c70a835e92e5eda41151b939c40647281","pkg-src-sha256":"9310ef0d49f8a8922acda10b1cded9854cbee04dea717effc6ee5983072e4447","depends":["base-4.14.3.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"pretty-1.1.3.6","pkg-name":"pretty","pkg-version":"1.1.3.6","depends":["base-4.14.3.0","deepseq-1.4.4.0","ghc-prim-0.6.1"]},{"type":"configured","id":"primitive-0.7.4.0-1f467cdf5ae0e3f57c2662ad3086a910f91351056b170d263e1c1e48eecf77cf","pkg-name":"primitive","pkg-version":"0.7.4.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"89b88a3e08493b7727fa4089b0692bfbdf7e1e666ef54635f458644eb8358764","pkg-src-sha256":"5b2d6dc2812eb2f6a115f05fcbe3e723d3aeff7894b012c617e075130581add5","depends":["base-4.14.3.0","deepseq-1.4.4.0","template-haskell-2.16.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"process-1.6.13.2","pkg-name":"process","pkg-version":"1.6.13.2","depends":["base-4.14.3.0","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","unix-2.7.2.2"]},{"type":"configured","id":"random-1.2.1.1-9d37d2460648674af8af08b416b705f47c736f149bdb8710aee1c07002adf864","pkg-name":"random","pkg-version":"1.2.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dea1f11e5569332dc6c8efaad1cb301016a5587b6754943a49f9de08ae0e56d9","pkg-src-sha256":"3e1272f7ed6a4d7bd1712b90143ec326fee9b225789222379fea20a9c90c9b76","depends":["base-4.14.3.0","bytestring-0.10.12.0","deepseq-1.4.4.0","mtl-2.2.2","splitmix-0.1.0.4-ecf05af7ba88b161057dd38db998065e9449310e23cbacac97d6a6e83c32b8d5"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"rts","pkg-name":"rts","pkg-version":"1.0.1","depends":[]},{"type":"configured","id":"safe-exceptions-0.1.7.3-aefff72b86bad3421bbd49b6bdf2e54adcb8640d84b103b9f21907bc76ed540e","pkg-name":"safe-exceptions","pkg-version":"0.1.7.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6e9b1b233af80cc0aa17ea858d2641ba146fb11cbcc5970a52649e89d77282e2","pkg-src-sha256":"91ce28d8f8a6efd31788d4827ed5cdcb9a546ad4053a86c56f7947c66a30b5bf","depends":["base-4.14.3.0","deepseq-1.4.4.0","exceptions-0.10.4","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"scientific-0.3.7.0-96aaabc4f92e72fcc53787fcd9a6bb49dbea421d076da35e3d71d74c4f0bdea8","pkg-name":"scientific","pkg-version":"0.3.7.0","flags":{"bytestring-builder":false,"integer-simple":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"517444c944dad9db8235d7b311d7b9a0839a519ee3178288b5a9606256e0c7d8","pkg-src-sha256":"a3a121c4b3d68fb8b9f8c709ab012e48f090ed553609247a805ad070d6b343a9","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","integer-gmp-1.0.3.0","integer-logarithms-1.0.3.1-b5e8bfff5cbd870ed5f69b506a02d0b6ed40ccff7a566b3c15120743f6a3fc29","primitive-0.7.4.0-1f467cdf5ae0e3f57c2662ad3086a910f91351056b170d263e1c1e48eecf77cf","template-haskell-2.16.0.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"selective-0.5-c2c78c9bf9c9c89dd26b124ab47e74552eb3b9ff475c9bd53b25e933a15945a4","pkg-name":"selective","pkg-version":"0.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"dff7715af7cc652f2e695e17674e2b1016ea4f675357291dc78a1f7a3ee5a17f","pkg-src-sha256":"b0fda80309a83d8f9eed9b8798b3c8c6626600154948323a8d80ab8e2c2f8da3","depends":["base-4.14.3.0","containers-0.6.5.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"semialign-1.2.0.1-917379bcdcb221d1f97546cead5c27c60b9dd46f56d6ecd368b16d6e7764e3f9","pkg-name":"semialign","pkg-version":"1.2.0.1","flags":{"semigroupoids":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ee3468e349e72ec0a604ae05573a4de7181d97d10366254244a0cca8a76d6c35","pkg-src-sha256":"d900697041ae4b0cca3243273a2b3e80bcf74d937405d6a5ff34dc33ee952132","depends":["base-4.14.3.0","containers-0.6.5.1","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","indexed-traversable-0.1.2-84d6c7f80dd2b1558c6378cef15cefa0dd20fc82c17c29394f2b2e14d91088e3","indexed-traversable-instances-0.1.1.1-45a424aab6e4e3304ae802765e572942f89f6608fe9a44f71c7211ddc10ad715","semigroupoids-5.3.7-908a0fc5a57ffdf20eaa5f219920d3b2142d7ed195555191afb77de32a3dbe6b","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","these-1.1.1.1-e2b0a1929fd32b68cf0c903cfcc901fec3b3a8a5b78d5831c177220bf4b4ea1d","transformers-0.5.6.2","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","vector-0.13.0.0-ab344f8d08087660da8a7d8adbeb5c07fae0a9d6880520c83664f8c7bb3f8aef"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"semigroupoids-5.3.7-908a0fc5a57ffdf20eaa5f219920d3b2142d7ed195555191afb77de32a3dbe6b","pkg-name":"semigroupoids","pkg-version":"5.3.7","flags":{"comonad":true,"containers":true,"contravariant":true,"distributive":true,"tagged":true,"unordered-containers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"fb1a86c250997c269106645724a67bc358235245cf385b589f855ac070d4ada0","pkg-src-sha256":"6d45cdb6c58c75ca588859b80b2c92b6f48590a03e065c24ce5d767a6a963799","depends":["base-4.14.3.0","base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","bifunctors-5.5.12-61f7f6c5ec9029b24a2113c4e89668fb0a89f056a71035f9b3da74952f96dca4","comonad-5.0.8-00ee7a5db7a015249380333c4ccd5a22dabf9662672661808bc1bccc51663814","containers-0.6.5.1","contravariant-1.5.5-db83032095a68ebc42d39746dd4e19e4f6e37c7873237a6584c0b6157e6b8461","distributive-0.6.2.1-8785ff14c2e0677eaaa5fcf627e5943228beae11ad08adadd337ed1fc417e826","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","template-haskell-2.16.0.0","transformers-0.5.6.2","transformers-compat-0.7.2-92023744dd56bc9e9f1d627099ccaee305b2b7f7c6d02cae5154a3db1ce40dea","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"shake-0.19.6-e-shake-04de988fe4de6e98d0f2067e464719949cceb9ae42b22219b2fc5a8d16bb91c2","pkg-name":"shake","pkg-version":"0.19.6","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","pkg-src-sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","directory-1.3.6.0","extra-1.7.10-64fa55676120fe404b68bdc5b995e5d40bd6017bafd0142450988687be47cab2","filepath-1.4.2.1","filepattern-0.1.2-20f284a40572c676bccc06c715cdbfc4aa9310d7b7bef0e08ae1a3c529b1c352","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","heaps-0.4-7cd7f81fe8e434fb927c09a81c78e17029735eb735dadd2e0095eccad2f28315","js-dgtable-0.5.2-611975c124efb7e3dff07d621d374704168c1a98c4cd9abc0371f555da021a8f","js-flot-0.8.3-163b76cdce2eb5fca3a158e8cc58c1e0a0378fc57e814b8623da9effed6e9420","js-jquery-3.3.1-4b07853b823d103c8e45e6bee9e6183531d323a3c9cb9656aae62acb0f43e44e","primitive-0.7.4.0-1f467cdf5ae0e3f57c2662ad3086a910f91351056b170d263e1c1e48eecf77cf","process-1.6.13.2","random-1.2.1.1-9d37d2460648674af8af08b416b705f47c736f149bdb8710aee1c07002adf864","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","utf8-string-1.0.2-e0dec0cb269d870cf4ce7c7046b52e087c28eb892bd20000fda419f3259c0719"],"exe-depends":[],"component-name":"exe:shake","bin-file":"/home/andrea/.cabal/store/ghc-8.10.7/shake-0.19.6-e-shake-04de988fe4de6e98d0f2067e464719949cceb9ae42b22219b2fc5a8d16bb91c2/bin/shake"},{"type":"configured","id":"shake-0.19.6-e646fef814bdc7fd418d2a2c5af4f826e7edc3e6af7ccd75d90c1740ab0c536a","pkg-name":"shake","pkg-version":"0.19.6","flags":{"cloud":false,"embed-files":false,"portable":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ca49ff48ad82cdea18824a6fa7bd15f62ded882988316bd724fcc97fa5031b6a","pkg-src-sha256":"7d9db837bfd67acaaabdb3cea29acc15559ede82dd9f75d438589268031cd542","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","directory-1.3.6.0","extra-1.7.10-64fa55676120fe404b68bdc5b995e5d40bd6017bafd0142450988687be47cab2","filepath-1.4.2.1","filepattern-0.1.2-20f284a40572c676bccc06c715cdbfc4aa9310d7b7bef0e08ae1a3c529b1c352","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","heaps-0.4-7cd7f81fe8e434fb927c09a81c78e17029735eb735dadd2e0095eccad2f28315","js-dgtable-0.5.2-611975c124efb7e3dff07d621d374704168c1a98c4cd9abc0371f555da021a8f","js-flot-0.8.3-163b76cdce2eb5fca3a158e8cc58c1e0a0378fc57e814b8623da9effed6e9420","js-jquery-3.3.1-4b07853b823d103c8e45e6bee9e6183531d323a3c9cb9656aae62acb0f43e44e","primitive-0.7.4.0-1f467cdf5ae0e3f57c2662ad3086a910f91351056b170d263e1c1e48eecf77cf","process-1.6.13.2","random-1.2.1.1-9d37d2460648674af8af08b416b705f47c736f149bdb8710aee1c07002adf864","time-1.9.3","transformers-0.5.6.2","unix-2.7.2.2","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","utf8-string-1.0.2-e0dec0cb269d870cf4ce7c7046b52e087c28eb892bd20000fda419f3259c0719"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"splitmix-0.1.0.4-ecf05af7ba88b161057dd38db998065e9449310e23cbacac97d6a6e83c32b8d5","pkg-name":"splitmix","pkg-version":"0.1.0.4","flags":{"optimised-mixer":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"804e2574bc7e32d08cbab91e47ee6287b4df7d50851d73f9e778f94a9a7814c7","pkg-src-sha256":"6d065402394e7a9117093dbb4530a21342c9b1e2ec509516c8a8d0ffed98ecaa","depends":["base-4.14.3.0","deepseq-1.4.4.0"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"stm-2.5.0.1","pkg-name":"stm","pkg-version":"2.5.0.1","depends":["array-0.5.4.0","base-4.14.3.0"]},{"type":"configured","id":"strict-0.4.0.1-df559ece60ef5b2bfaab1331b20b63321cd56a4d2afd812e520003ec16920629","pkg-name":"strict","pkg-version":"0.4.0.1","flags":{"assoc":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d6205a748eb8db4cd17a7179be970c94598809709294ccfa43159c7f3cc4bf5d","pkg-src-sha256":"dff6abc08ad637e51891bb8b475778c40926c51219eda60fd64f0d9680226241","depends":["assoc-1.0.2-aba0a117dd6de51d6a5396379b2cf91bbd284578c7783e634d2788ef66f5cc5f","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","text-1.2.4.1","these-1.1.1.1-e2b0a1929fd32b68cf0c903cfcc901fec3b3a8a5b78d5831c177220bf4b4ea1d","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tagged-0.8.6.1-2eea1558b46bda8b2e8ad3636e69c3043df0ac87651423c57c39822bf07aaea7","pkg-name":"tagged","pkg-version":"0.8.6.1","flags":{"deepseq":true,"transformers":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8a24aef29b8e35447ccc56658ea07c2aded30bfa8130ea057e382936e17c74a6","pkg-src-sha256":"f5e0fcf95f0bb4aa63f428f2c01955a41ea1a42cfcf39145ed631f59a9616c02","depends":["base-4.14.3.0","deepseq-1.4.4.0","template-haskell-2.16.0.0","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tar-0.5.1.1-13b72cfc0dd17a5610bf310d94e58bf563420a9714095f04e966cb92173d2b24","pkg-name":"tar","pkg-version":"0.5.1.1","flags":{"old-bytestring":false,"old-time":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"bc14969ea4adfec6eee20264decf4a07c4002b38b2aa802d58d86b1a2cf7b895","pkg-src-sha256":"b384449f62b2b0aa3e6d2cb1004b8060b01f21ec93e7b63e7af6d8fad8a9f1de","depends":["array-0.5.4.0","base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","directory-1.3.6.0","filepath-1.4.2.1","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"template-haskell-2.16.0.0","pkg-name":"template-haskell","pkg-version":"2.16.0.0","depends":["base-4.14.3.0","ghc-boot-th-8.10.7","ghc-prim-0.6.1","pretty-1.1.3.6"]},{"type":"pre-existing","id":"text-1.2.4.1","pkg-name":"text","pkg-version":"1.2.4.1","depends":["array-0.5.4.0","base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","integer-gmp-1.0.3.0","template-haskell-2.16.0.0"]},{"type":"configured","id":"text-short-0.1.5-893678e9704f222c74d55e3da838c9442f7dd08f45a2f1f89e69e622094af2b4","pkg-name":"text-short","pkg-version":"0.1.5","flags":{"asserts":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"ebb77383743e214138cf9387875bc7d2665c5584b2e489fe1461240f19e7b53e","pkg-src-sha256":"a35ec6cde2ada084c1a050dc5885be5ab01f851b93d744cf0facbc1c18002dda","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","ghc-prim-0.6.1","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","template-haskell-2.16.0.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"th-abstraction-0.4.4.0-41f34e48b023b3806c51561002c557ccc046c2b622296784e16b7a29a177d940","pkg-name":"th-abstraction","pkg-version":"0.4.4.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"89aa9d81c94883c9e16c3534041f31949194011fdcf43be450f090bfb300b58d","pkg-src-sha256":"49a016ac02c6c240467661a582d8ae91a18a85e6117786658782e1d72bf5afda","depends":["base-4.14.3.0","containers-0.6.5.1","ghc-prim-0.6.1","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"th-compat-0.1.4-48dc6cd2ec378d23db0c17330a958f5e66a0de465f8eb6c69a7f1b96ae087312","pkg-name":"th-compat","pkg-version":"0.1.4","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"6ca77c4e80b4e4109e30549c269631a9cc295c8fc2431ce4123972a5f80f7bfc","pkg-src-sha256":"d8f97ac14ab47b6b8a7b0fdb4ff95426322ec56badd01652ac15da4a44d4bab8","depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"th-env-0.1.1-abb4bfbb72797d8b52b08a9eeb2d780e0097615725bfd349630c06452aa5382f","pkg-name":"th-env","pkg-version":"0.1.1","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"d700cc05d43a4acfc011ddbe3f4664435ff27c6b940950f55dd989e30486e2de","pkg-src-sha256":"fc01b166df6ba45f6ce157165eb786da208dbab41252fd81134f8ba02cf3f505","depends":["base-4.14.3.0","template-haskell-2.16.0.0","th-compat-0.1.4-48dc6cd2ec378d23db0c17330a958f5e66a0de465f8eb6c69a7f1b96ae087312"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"these-1.1.1.1-e2b0a1929fd32b68cf0c903cfcc901fec3b3a8a5b78d5831c177220bf4b4ea1d","pkg-name":"these","pkg-version":"1.1.1.1","flags":{"assoc":true},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"2991c13e264b0c35c696c8f5f85c428c53bc42e93b1dfbd19a582052112d948a","pkg-src-sha256":"d798c9f56e17def441e8f51e54cc11afdb3e76c6a9d1e9ee154e9a78da0bf508","depends":["assoc-1.0.2-aba0a117dd6de51d6a5396379b2cf91bbd284578c7783e634d2788ef66f5cc5f","base-4.14.3.0","binary-0.8.8.0","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"time-1.9.3","pkg-name":"time","pkg-version":"1.9.3","depends":["base-4.14.3.0","deepseq-1.4.4.0"]},{"type":"configured","id":"time-compat-1.9.6.1-1368d9f160dbe5251ea450c158448f98ae9f4657d74f282d628e2259f62c3c1a","pkg-name":"time-compat","pkg-version":"1.9.6.1","flags":{"old-locale":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"5cf5fa19d32742816fa1423085cbfd626aef433101c0b97bf0e8f720a6f369d8","pkg-src-sha256":"ad07bb00eb9678c2136d3680752b00acc4cbc522654bb3199bf31c61ef1e6b80","depends":["base-4.14.3.0","base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","time-1.9.3"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"tomland-1.3.3.1-5a08eb01881218c4833114903cccabafd599f5246271f6b9dafa58a51310555f","pkg-name":"tomland","pkg-version":"1.3.3.1","flags":{"build-play-tomland":false,"build-readme":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"83a8fd26a97164100541f7b26aa40ffdc6f230b21e94cbb3eae1fb7093c4356e","pkg-src-sha256":"ef71644e1851bb940492238ca62407bddc2949f9831838ecff6f90a95287e6c1","depends":["base-4.14.3.0","bytestring-0.10.12.0","containers-0.6.5.1","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","megaparsec-9.2.1-4532d70efdbe517a11248fb2e6330912154c3a3a0c380188781ef6b3f22431d8","mtl-2.2.2","parser-combinators-1.3.0-b1222433768b13ba9b34ad0413e6f7b0d39235ddfaca2e9539feb6d1ae9258db","text-1.2.4.1","time-1.9.3","transformers-0.5.6.2","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","validation-selective-0.1.0.2-4434900303823f19a21c0e9064021505c6212624bbcf5d9218dbcee7df7ec6e4"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"transformers-0.5.6.2","pkg-name":"transformers","pkg-version":"0.5.6.2","depends":["base-4.14.3.0"]},{"type":"configured","id":"transformers-compat-0.7.2-92023744dd56bc9e9f1d627099ccaee305b2b7f7c6d02cae5154a3db1ce40dea","pkg-name":"transformers-compat","pkg-version":"0.7.2","flags":{"five":false,"five-three":true,"four":false,"generic-deriving":true,"mtl":true,"three":false,"two":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"044fb9955f63ee138fcebedfdcbe54afe741f2d5892a2d0bdf3a8052bd342643","pkg-src-sha256":"b62c7304c9f3cbc9463d0739aa85cb9489f217ea092b9d625d417514fbcc9d6a","depends":["base-4.14.3.0","ghc-prim-0.6.1","transformers-0.5.6.2"],"exe-depends":[],"component-name":"lib"},{"type":"pre-existing","id":"unix-2.7.2.2","pkg-name":"unix","pkg-version":"2.7.2.2","depends":["base-4.14.3.0","bytestring-0.10.12.0","time-1.9.3"]},{"type":"configured","id":"unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","pkg-name":"unordered-containers","pkg-version":"0.2.19.1","flags":{"debug":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"db11042bb0356c0adea277d0794743829125b4c99455af6af2bd5f7bd5e88a39","pkg-src-sha256":"1b27bec5e0d522b27a6029ebf4c4a6d40acbc083c787008e32fb55c4b1d128d2","depends":["base-4.14.3.0","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","template-haskell-2.16.0.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"utf8-string-1.0.2-e0dec0cb269d870cf4ce7c7046b52e087c28eb892bd20000fda419f3259c0719","pkg-name":"utf8-string","pkg-version":"1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"79416292186feeaf1f60e49ac5a1ffae9bf1b120e040a74bf0e81ca7f1d31d3f","pkg-src-sha256":"ee48deada7600370728c4156cb002441de770d0121ae33a68139a9ed9c19b09a","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"uuid-types-1.0.5-0cc959dd60a1d55146b3d7bf145d2b6e1870b58fd73d1b5ba5b9ffa343d565f1","pkg-name":"uuid-types","pkg-version":"1.0.5","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"9ca76986e3950af5e908502be2373e2292d6dc57ec10f5aeb41d7dc3a1961782","pkg-src-sha256":"ad68b89b7a64c07dd5c250a11be2033ee929318ff51ec7b4e4b54e1b4deba7dd","depends":["base-4.14.3.0","binary-0.8.8.0","bytestring-0.10.12.0","deepseq-1.4.4.0","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","random-1.2.1.1-9d37d2460648674af8af08b416b705f47c736f149bdb8710aee1c07002adf864","template-haskell-2.16.0.0","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"validation-selective-0.1.0.2-4434900303823f19a21c0e9064021505c6212624bbcf5d9218dbcee7df7ec6e4","pkg-name":"validation-selective","pkg-version":"0.1.0.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"c878846bfffeba69efa3b4866025f249656e0e0a129fed6d446eb602382d328b","pkg-src-sha256":"016fde31529afad0cfe70ec3215fa85e38147582248696af6b135df950655bbf","depends":["base-4.14.3.0","deepseq-1.4.4.0","selective-0.5-c2c78c9bf9c9c89dd26b124ab47e74552eb3b9ff475c9bd53b25e933a15945a4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vector-0.13.0.0-ab344f8d08087660da8a7d8adbeb5c07fae0a9d6880520c83664f8c7bb3f8aef","pkg-name":"vector","pkg-version":"0.13.0.0","flags":{"boundschecks":true,"internalchecks":false,"unsafechecks":false,"wall":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"54528e95501742b99462cc543891f21177e7db34d960ce8e3cbb25afb16a9c89","pkg-src-sha256":"c5d3167d15e12f52e00879ddf304a591672a74e369cc47bc5c7fa1d5a8d15b4f","depends":["base-4.14.3.0","deepseq-1.4.4.0","primitive-0.7.4.0-1f467cdf5ae0e3f57c2662ad3086a910f91351056b170d263e1c1e48eecf77cf","vector-stream-0.1.0.0-cdb72a4d1f63cff876dd09fe59add102134c408cddeb9dd9430e286500a22bb4"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"vector-stream-0.1.0.0-cdb72a4d1f63cff876dd09fe59add102134c408cddeb9dd9430e286500a22bb4","pkg-name":"vector-stream","pkg-version":"0.1.0.0","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"09b0f8dc4e51936b9d6b04791f0aa03f7c9759b5fb7140eac8a9461cda1e55a3","pkg-src-sha256":"a888210f6467f155090653734be5cc920406a07227e0d3adb59096716fdb806c","depends":["base-4.14.3.0","ghc-prim-0.6.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"with-utf8-1.0.2.3-831ebe72727725ebdb82eeca969d56d883aa40283d6e60c43cd91d415c15bbbf","pkg-name":"with-utf8","pkg-version":"1.0.2.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3de710e4aa70856ab0845373bfde4746920fd45b8641bfaa3bd5cd2c200c4704","pkg-src-sha256":"0707ce5868c96379ed4f8486e1791a798cf2a254fda9801a7fb65944aeb5b035","depends":["base-4.14.3.0","safe-exceptions-0.1.7.3-aefff72b86bad3421bbd49b6bdf2e54adcb8640d84b103b9f21907bc76ed540e","text-1.2.4.1"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"with-utf8-1.0.2.3-e-utf8-troubleshoot-267b1bf01852e2a11274156a9412be00176cbe2c7763fbb15fdb8e7e3a8d4538","pkg-name":"with-utf8","pkg-version":"1.0.2.3","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"3de710e4aa70856ab0845373bfde4746920fd45b8641bfaa3bd5cd2c200c4704","pkg-src-sha256":"0707ce5868c96379ed4f8486e1791a798cf2a254fda9801a7fb65944aeb5b035","depends":["base-4.14.3.0","directory-1.3.6.0","filepath-1.4.2.1","process-1.6.13.2","safe-exceptions-0.1.7.3-aefff72b86bad3421bbd49b6bdf2e54adcb8640d84b103b9f21907bc76ed540e","text-1.2.4.1","th-env-0.1.1-abb4bfbb72797d8b52b08a9eeb2d780e0097615725bfd349630c06452aa5382f"],"exe-depends":[],"component-name":"exe:utf8-troubleshoot","bin-file":"/home/andrea/.cabal/store/ghc-8.10.7/with-utf8-1.0.2.3-e-utf8-troubleshoot-267b1bf01852e2a11274156a9412be00176cbe2c7763fbb15fdb8e7e3a8d4538/bin/utf8-troubleshoot"},{"type":"configured","id":"witherable-0.4.2-260756213e94c0a040c1205df331c02499ebb8387efb4e0d09ff30404056f779","pkg-name":"witherable","pkg-version":"0.4.2","flags":{},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"cccb36175e088abb4291ee5044b8c04d71acd5c36636902d2520f91508dd4bb8","pkg-src-sha256":"790d2bb274283419173bd89104439860675a9410f70f21912973ecd9098b4104","depends":["base-4.14.3.0","base-orphans-0.8.7-2e63b02a231c60dc1867d037a0c16f56822014b1e427c4c1d49489c1790efb89","containers-0.6.5.1","hashable-1.4.1.0-0d4188fb494cffec85d5fbed96aedec8d00d45196c37ed89544916637a42e21d","indexed-traversable-0.1.2-84d6c7f80dd2b1558c6378cef15cefa0dd20fc82c17c29394f2b2e14d91088e3","indexed-traversable-instances-0.1.1.1-45a424aab6e4e3304ae802765e572942f89f6608fe9a44f71c7211ddc10ad715","transformers-0.5.6.2","unordered-containers-0.2.19.1-19deaa4915990d7562259e08e4bc69b4ed4f70b8e075c41c8dee08edbe606713","vector-0.13.0.0-ab344f8d08087660da8a7d8adbeb5c07fae0a9d6880520c83664f8c7bb3f8aef"],"exe-depends":[],"component-name":"lib"},{"type":"configured","id":"zlib-0.6.3.0-d20f1d6d07e70f2284ec7d0f68ce14b38764a5c67b1a8000271a616df38657ce","pkg-name":"zlib","pkg-version":"0.6.3.0","flags":{"bundled-c-zlib":false,"non-blocking-ffi":false,"pkg-config":false},"style":"global","pkg-src":{"type":"repo-tar","repo":{"type":"secure-repo","uri":"http://hackage.haskell.org/"}},"pkg-cabal-sha256":"8214a9d37580f17f8b675109578a5dbe6853559eef156e34dc2233f1123ace33","pkg-src-sha256":"9eaa989ad4534438b5beb51c1d3a4c8f6a088fdff0b259a5394fbf39aaee04da","depends":["base-4.14.3.0","bytestring-0.10.12.0"],"exe-depends":[],"component-name":"lib"}]} \ No newline at end of file diff --git a/flake.lock b/flake.lock index f21ff47..d6c2c5a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,88 +1,5 @@ { "nodes": { - "HTTP": { - "flake": false, - "locked": { - "lastModified": 1451647621, - "narHash": "sha256-oHIyw3x0iKBexEo49YeUDV1k74ZtyYKGR2gNJXXRxts=", - "owner": "phadej", - "repo": "HTTP", - "rev": "9bc0996d412fef1787449d841277ef663ad9a915", - "type": "github" - }, - "original": { - "owner": "phadej", - "repo": "HTTP", - "type": "github" - } - }, - "cabal-32": { - "flake": false, - "locked": { - "lastModified": 1603716527, - "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", - "owner": "haskell", - "repo": "cabal", - "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.2", - "repo": "cabal", - "type": "github" - } - }, - "cabal-34": { - "flake": false, - "locked": { - "lastModified": 1640353650, - "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", - "owner": "haskell", - "repo": "cabal", - "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.4", - "repo": "cabal", - "type": "github" - } - }, - "cabal-36": { - "flake": false, - "locked": { - "lastModified": 1641652457, - "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", - "owner": "haskell", - "repo": "cabal", - "rev": "f27667f8ec360c475027dcaee0138c937477b070", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "3.6", - "repo": "cabal", - "type": "github" - } - }, - "cardano-shell": { - "flake": false, - "locked": { - "lastModified": 1608537748, - "narHash": "sha256-PulY1GfiMgKVnBci3ex4ptk2UNYMXqGjJOxcPy2KYT4=", - "owner": "input-output-hk", - "repo": "cardano-shell", - "rev": "9392c75087cb9a3d453998f4230930dea3a95725", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "cardano-shell", - "type": "github" - } - }, "flake-utils": { "locked": { "lastModified": 1659877975, @@ -98,336 +15,24 @@ "type": "github" } }, - "flake-utils_2": { - "locked": { - "lastModified": 1644229661, - "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "ghc-8.6.5-iohk": { - "flake": false, - "locked": { - "lastModified": 1600920045, - "narHash": "sha256-DO6kxJz248djebZLpSzTGD6s8WRpNI9BTwUeOf5RwY8=", - "owner": "input-output-hk", - "repo": "ghc", - "rev": "95713a6ecce4551240da7c96b6176f980af75cae", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "ref": "release/8.6.5-iohk", - "repo": "ghc", - "type": "github" - } - }, - "hackage": { - "flake": false, - "locked": { - "lastModified": 1661130976, - "narHash": "sha256-6eTbXPY0ZPKC32xi1KVHsqM+QC34LpQnM1He9tygBQY=", - "owner": "input-output-hk", - "repo": "hackage.nix", - "rev": "14df7a1e633059997ecd3182d8272a1f13e99c62", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "hackage.nix", - "type": "github" - } - }, - "haskell-nix": { - "inputs": { - "HTTP": "HTTP", - "cabal-32": "cabal-32", - "cabal-34": "cabal-34", - "cabal-36": "cabal-36", - "cardano-shell": "cardano-shell", - "flake-utils": "flake-utils_2", - "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", - "hackage": "hackage", - "hpc-coveralls": "hpc-coveralls", - "hydra": "hydra", - "nix-tools": "nix-tools", - "nixpkgs": [ - "haskell-nix", - "nixpkgs-unstable" - ], - "nixpkgs-2003": "nixpkgs-2003", - "nixpkgs-2105": "nixpkgs-2105", - "nixpkgs-2111": "nixpkgs-2111", - "nixpkgs-2205": "nixpkgs-2205", - "nixpkgs-unstable": "nixpkgs-unstable", - "old-ghc-nix": "old-ghc-nix", - "stackage": "stackage" - }, - "locked": { - "lastModified": 1661131248, - "narHash": "sha256-UCbiKv4DWeGVeOknUbQqJkk0sZAn34CSntjIG12uWOg=", - "owner": "input-output-hk", - "repo": "haskell.nix", - "rev": "e36a34c4abc02287ec79bf88a0c993f6b66f9945", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "haskell.nix", - "type": "github" - } - }, - "hpc-coveralls": { - "flake": false, - "locked": { - "lastModified": 1607498076, - "narHash": "sha256-8uqsEtivphgZWYeUo5RDUhp6bO9j2vaaProQxHBltQk=", - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "rev": "14df0f7d229f4cd2e79f8eabb1a740097fdfa430", - "type": "github" - }, - "original": { - "owner": "sevanspowell", - "repo": "hpc-coveralls", - "type": "github" - } - }, - "hydra": { - "inputs": { - "nix": "nix", - "nixpkgs": [ - "haskell-nix", - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1646878427, - "narHash": "sha256-KtbrofMtN8GlM7D+n90kixr7QpSlVmdN+vK5CA/aRzc=", - "owner": "NixOS", - "repo": "hydra", - "rev": "28b682b85b7efc5cf7974065792a1f22203a5927", - "type": "github" - }, - "original": { - "id": "hydra", - "type": "indirect" - } - }, - "lowdown-src": { - "flake": false, - "locked": { - "lastModified": 1633514407, - "narHash": "sha256-Dw32tiMjdK9t3ETl5fzGrutQTzh2rufgZV4A/BbxuD4=", - "owner": "kristapsdz", - "repo": "lowdown", - "rev": "d2c2b44ff6c27b936ec27358a2653caaef8f73b8", - "type": "github" - }, - "original": { - "owner": "kristapsdz", - "repo": "lowdown", - "type": "github" - } - }, - "nix": { - "inputs": { - "lowdown-src": "lowdown-src", - "nixpkgs": "nixpkgs", - "nixpkgs-regression": "nixpkgs-regression" - }, - "locked": { - "lastModified": 1643066034, - "narHash": "sha256-xEPeMcNJVOeZtoN+d+aRwolpW8mFSEQx76HTRdlhPhg=", - "owner": "NixOS", - "repo": "nix", - "rev": "a1cd7e58606a41fcf62bf8637804cf8306f17f62", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "2.6.0", - "repo": "nix", - "type": "github" - } - }, - "nix-tools": { - "flake": false, - "locked": { - "lastModified": 1659569011, - "narHash": "sha256-wHS0H5+TERmDnPCfzH4A+rSR5TvjYMWus9BNeNAMyUM=", - "owner": "input-output-hk", - "repo": "nix-tools", - "rev": "555d57e1ea81b79945f2608aa261df20f6b602a5", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "nix-tools", - "type": "github" - } - }, "nixpkgs": { "locked": { - "lastModified": 1632864508, - "narHash": "sha256-d127FIvGR41XbVRDPVvozUPQ/uRHbHwvfyKHwEt5xFM=", + "lastModified": 1661353537, + "narHash": "sha256-1E2IGPajOsrkR49mM5h55OtYnU0dGyre6gl60NXKITE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "82891b5e2c2359d7e58d08849e4c89511ab94234", + "rev": "0e304ff0d9db453a4b230e9386418fd974d5804a", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-21.05-small", "type": "indirect" } }, - "nixpkgs-2003": { - "locked": { - "lastModified": 1620055814, - "narHash": "sha256-8LEHoYSJiL901bTMVatq+rf8y7QtWuZhwwpKE2fyaRY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1db42b7fe3878f3f5f7a4f2dc210772fd080e205", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-20.03-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2105": { - "locked": { - "lastModified": 1655034179, - "narHash": "sha256-rf1/7AbzuYDw6+8Xvvf3PtEOygymLBrFsFxvext5ZjI=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "046ee4af7a9f016a364f8f78eeaa356ba524ac31", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2111": { - "locked": { - "lastModified": 1656782578, - "narHash": "sha256-1eMCBEqJplPotTo/SZ/t5HU6Sf2I8qKlZi9MX7jv9fw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "573603b7fdb9feb0eb8efc16ee18a015c667ab1b", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-21.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-2205": { - "locked": { - "lastModified": 1657876628, - "narHash": "sha256-URmf0O2cQ/3heg2DJOeLyU/JmfVMqG4X5t9crQXMaeY=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "549d82bdd40f760a438c3c3497c1c61160f3de55", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-22.05-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-regression": { - "locked": { - "lastModified": 1643052045, - "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "github" - }, - "original": { - "id": "nixpkgs", - "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", - "type": "indirect" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1657888067, - "narHash": "sha256-GnwJoFBTPfW3+mz7QEeJEEQ9OMHZOiIJ/qDhZxrlKh8=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "65fae659e31098ca4ac825a6fef26d890aaf3f4e", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "old-ghc-nix": { - "flake": false, - "locked": { - "lastModified": 1631092763, - "narHash": "sha256-sIKgO+z7tj4lw3u6oBZxqIhDrzSkvpHtv0Kki+lh9Fg=", - "owner": "angerman", - "repo": "old-ghc-nix", - "rev": "af48a7a7353e418119b6dfe3cd1463a657f342b8", - "type": "github" - }, - "original": { - "owner": "angerman", - "ref": "master", - "repo": "old-ghc-nix", - "type": "github" - } - }, "root": { "inputs": { "flake-utils": "flake-utils", - "haskell-nix": "haskell-nix", - "nixpkgs": [ - "haskell-nix", - "nixpkgs-unstable" - ] - } - }, - "stackage": { - "flake": false, - "locked": { - "lastModified": 1661044553, - "narHash": "sha256-a/RFN+0b4iv30IPJ8wsiod3R+A1jEAj7lhR5G/F/+JY=", - "owner": "input-output-hk", - "repo": "stackage.nix", - "rev": "e26c8280c6adf0e8bc9bb90b81d017cd29c590bd", - "type": "github" - }, - "original": { - "owner": "input-output-hk", - "repo": "stackage.nix", - "type": "github" + "nixpkgs": "nixpkgs" } } }, diff --git a/flake.nix b/flake.nix index 0be27bf..9d11d0a 100644 --- a/flake.nix +++ b/flake.nix @@ -1,47 +1,169 @@ { - description = "Foliage is a tool to create custom Haskell package repositories, in a fully reproducible way."; + inputs = { flake-utils.url = "github:numtide/flake-utils"; }; - inputs = { - nixpkgs.follows = "haskell-nix/nixpkgs-unstable"; - haskell-nix.url = "github:input-output-hk/haskell.nix"; - flake-utils.url = "github:numtide/flake-utils"; - }; + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachSystem [ "x86_64-linux" ] (system: + let + pkgs = import nixpkgs { inherit system; }; + inherit (pkgs) lib; - outputs = { self, nixpkgs, flake-utils, haskell-nix }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { inherit system; inherit (haskell-nix) config; overlays = [haskell-nix.overlay]; }; - project = pkgs.haskell-nix.cabalProject { - src = ./.; - compiler-nix-name = "ghc8107"; - shell.tools = { - cabal = {}; - hlint = {}; - haskell-language-server = {}; + plan = lib.importJSON ./dist-newstyle/cache/plan.json; + + # whatever, we do have the right versions in the plan + cabal-install = pkgs.cabal-install; + ghc = pkgs.haskell.compiler.ghc8107; + + fetchHackageSdist = { package, version, sha256 }: + builtins.fetchurl { + inherit sha256; + url = + "https://hackage.haskell.org/package/${package}-${version}/${package}-${version}.tar.gz"; + name = "${package}-${version}.tar.gz"; + }; + + fetchCabalFileByHash = { package, version, sha256 }: + builtins.fetchurl { + inherit sha256; + url = "https://casa.fpcomplete.com/${sha256}"; + name = "${package}-${version}-cabal-file-${sha256}"; + }; + + fetchComponentSrc = + { pkg-name, pkg-version, pkg-src, pkg-src-sha256, pkg-cabal-sha256 }: + if pkg-src.type == "repo-tar" then + builtins.fetchurl { + url = + "${pkg-src.repo.uri}package/${pkg-name}-${pkg-version}/${pkg-name}-${pkg-version}.tar.gz"; + name = "${pkg-name}-${pkg-version}.tar.gz"; + sha256 = pkg-src-sha256; + } + else if pkg-src.type == "local" then + # simplifying (and terrifying) assumption + ./. + else + abort "boh"; + + inherit (plan) install-plan; + + install-plan-map = + lib.mapAttrs (_: builtins.head) (lib.groupBy (p: p.id) install-plan); + + externalDeps = [ pkgs.zlib ]; + + buildComponent = n: + + let + all-depends = builtins.concatMap (n: + (lib.optionals (n ? depends) n.depends) + ++ (lib.optionals (n ? exe-depends) n.exe-depends)) ([ n ] + ++ lib.optionals (n ? components) + (builtins.attrValues n.components)); + + in pkgs.stdenv.mkDerivation { + name = n.id; + + propagatedBuildInputs = externalDeps ++ builtins.map buildComponent + (builtins.filter (n: n.type == "configured") + (builtins.map (d: install-plan-map.${d}) all-depends)); + + setupHook = pkgs.writeScript "setup-hook.sh" '' + ghcPackagesHook() { + if [[ -d "$1/packages.conf" ]]; then + if [[ ! -d $out/packages.conf ]]; then + mkdir -p $out/packages.conf + fi + # collect all the package specification files + for n in $1/packages.conf/*.conf; do + cp --no-clobber $n $out/packages.conf + done + fi + } + + addEnvHooks "$targetOffset" ghcPackagesHook + ''; + + postUnpack = if n ? pkg-cabal-sha256 then '' + echo "Updating ${n.pkg-name}.cabal with the revision ${n.pkg-cabal-sha256}" + cp ${ + fetchCabalFileByHash { + package = n.pkg-name; + version = n.pkg-version; + sha256 = n.pkg-cabal-sha256; + } + } $sourceRoot/${n.pkg-name}.cabal + '' else + ""; + + configurePhase = let + components = + map (c: if c == "lib" then "lib:" + n.pkg-name else c) + (if n ? component-name then + [ n.component-name ] + else if n ? components then + (builtins.attrNames n.components) + else + abort "boh"); + + in '' + runHook preConfigure + + mkdir -p $out + + if [[ ! -d $out/packages.conf ]]; then + mkdir $out/packages.conf + fi + ${ghc}/bin/ghc-pkg --package-db $out/packages.conf recache + ${ghc}/bin/ghc-pkg --package-db $out/packages.conf check + + if grep 'build-type:\s\+Configure' ${n.pkg-name}.cabal; then + export BUILD_TYPE=Configure + else + export BUILD_TYPE=Simple + fi + + ${cabal-install}/bin/cabal act-as-setup \ + --build-type=$BUILD_TYPE \ + configure -- \ + --verbose=2 \ + --cid=${n.id} \ + --prefix $out \ + --package-db=$out/packages.conf \ + --with-compiler=${ghc}/bin/ghc \ + ${builtins.concatStringsSep " " components} + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + ${cabal-install}/bin/cabal act-as-setup build + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + ${cabal-install}/bin/cabal act-as-setup install + runHook postInstall + ''; + + src = fetchComponentSrc { + inherit (n) + pkg-name pkg-version pkg-src pkg-src-sha256 pkg-cabal-sha256; + }; + }; + + allPackages = lib.mapAttrs (_: buildComponent) install-plan-map; + + localPackages = lib.mapAttrs (_: buildComponent) + (lib.filterAttrs (n: v: v ? style && v.style == "local") + install-plan-map); + + in { + packages = allPackages // { + default = builtins.head (builtins.attrValues localPackages); }; - shell.buildInputs = with pkgs; [ - nixpkgs-fmt - ]; - modules = [{ - packages.foliage.components.exes.foliage.dontStrip = false; - }]; - }; - in { - packages.default = project.foliage.components.exes.foliage; - devShell = pkgs.mkShell { - name = "foliage-dev-shell"; - }; - }); - - nixConfig = { - extra-substituters = [ - "https://cache.iog.io" - "https://foliage.cachix.org" - ]; - extra-trusted-public-keys = [ - "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" - "foliage.cachix.org-1:kAFyYLnk8JcRURWReWZCatM9v3Rk24F5wNMpEj14Q/g=" - ]; - }; + devShells.default = + pkgs.mkShell { buildInputs = [ ghc cabal-install ]; }; + }); }