hackage2nix: Split configuration, auto disable hydra builds

We split configuration-hackage2nix.yaml into multiple files.  We bump
cabal2nix-unstable to get support for multiple config files in
hackage2nix.

* The file main.yaml is only supposed to be edited by humans.
* The file stackage.yaml is only supposed to be updated by the
  update-stackage.sh
* The file broken.yaml can be edited by humans, but probably future
  helpers will want to insert broken packages into this file based on
  hydra reports.
* The file transitive-broken.yaml is newly introduced to be generated
  by regenerate-transitive-broken-packages.sh

regenerate-transitive-broken-packages.sh makes a nix query (in
transitive-broken-packages.nix) which evaluates all haskellPackages
once with and once without "allowBroken" this way it get's a list of
packages which are broken by some transitive dependency, but does not
disable packages which have eval errors not caused by a broken package.
This commit is contained in:
Malte Brandy 2021-05-05 22:38:46 +02:00
parent d75130019b
commit 7f236bd4b2
No known key found for this signature in database
GPG Key ID: 226A2D41EF5378C9
10 changed files with 3309 additions and 3175 deletions

View File

@ -1,9 +1,9 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p coreutils haskellPackages.cabal2nix-unstable -I nixpkgs=.
#! nix-shell -i bash -p coreutils haskellPackages.cabal2nix-unstable git nix -I nixpkgs=.
# This script is used to regenerate nixpkgs' Haskell package set, using a tool
# called hackage2nix. hackage2nix looks at
# pkgs/development/haskell-modules/configuration-hackage2nix.yaml and generates
# called hackage2nix. hackage2nix looks at the config files in
# pkgs/development/haskell-modules/configuration-hackage2nix and generates
# a Nix expression for package version specified there, using the Cabal files
# from the Hackage database (available under all-cabal-hashes) and its
# companion tool cabal2nix.
@ -14,10 +14,18 @@
set -euo pipefail
extractionDerivation='with import ./. {}; runCommand "unpacked-cabal-hashes" { } "tar xf ${all-cabal-hashes} --strip-components=1 --one-top-level=$out"'
unpacked_hackage="$(nix-build -E "$extractionDerivation" --no-out-link)"
extraction_derivation='with import ./. {}; runCommand "unpacked-cabal-hashes" { } "tar xf ${all-cabal-hashes} --strip-components=1 --one-top-level=$out"'
unpacked_hackage="$(nix-build -E "$extraction_derivation" --no-out-link)"
config_dir=pkgs/development/haskell-modules/configuration-hackage2nix
hackage2nix --hackage "$unpacked_hackage" --preferred-versions <(for n in "$unpacked_hackage"/*/preferred-versions; do cat "$n"; echo; done) --nixpkgs "$PWD" --config pkgs/development/haskell-modules/configuration-hackage2nix.yaml
hackage2nix \
--hackage "$unpacked_hackage" \
--preferred-versions <(for n in "$unpacked_hackage"/*/preferred-versions; do cat "$n"; echo; done) \
--nixpkgs "$PWD" \
--config "$config_dir/main.yaml" \
--config "$config_dir/stackage.yaml" \
--config "$config_dir/broken.yaml" \
--config "$config_dir/transitive-broken.yaml"
if [[ "${1:-}" == "--do-commit" ]]; then
git add pkgs/development/haskell-modules/hackage-packages.nix

View File

@ -0,0 +1,3 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p coreutils nix gnused -I nixpkgs=.
echo -e $(nix-instantiate --eval --strict maintainers/scripts/haskell/transitive-broken-packages.nix) | sed 's/\"//' > pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml

View File

@ -0,0 +1,21 @@
let
nixpkgs = import ../../..;
inherit (nixpkgs {}) pkgs lib;
getEvaluating = x:
builtins.attrNames (
lib.filterAttrs (
_: v: (builtins.tryEval (v.outPath or null)).success && lib.isDerivation v && !v.meta.broken
) x
);
brokenDeps = lib.subtractLists
(getEvaluating pkgs.haskellPackages)
(getEvaluating (nixpkgs { config.allowBroken = true; }).haskellPackages);
in
''
# This file is automatically generated by
# maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
# It is supposed to list all haskellPackages that cannot evaluate because they
# depend on a dependency marked as broken.
dont-distribute-packages:
${lib.concatMapStringsSep "\n" (x: " - ${x}") brokenDeps}
''

View File

@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p nix curl jq nix-prefetch-github -I nixpkgs=.
#! nix-shell -i bash -p nix curl jq nix-prefetch-github git gnused -I nixpkgs=.
# See regenerate-hackage-packages.sh for details on the purpose of this script.

View File

@ -1,17 +1,18 @@
#! /usr/bin/env bash
#! /usr/bin/env nix-shell
#! nix-shell -i bash -p nix curl jq nix-prefetch-github git gnused gnugrep -I nixpkgs=.
set -eu -o pipefail
tmpfile=$(mktemp "update-stackage.XXXXXXX")
# shellcheck disable=SC2064
config_file="pkgs/development/haskell-modules/configuration-hackage2nix.yaml"
stackage_config="pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml"
trap "rm ${tmpfile} ${tmpfile}.new" 0
touch "$tmpfile" "$tmpfile.new" # Creating files here so that trap creates no errors.
curl -L -s "https://stackage.org/nightly/cabal.config" >"$tmpfile"
old_version=$(grep " # Stackage Nightly" $config_file | sed -E 's/.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*/\1/')
old_version=$(grep "# Stackage Nightly" $stackage_config | sed -E 's/.*([0-9]{4}-[0-9]{2}-[0-9]{2}).*/\1/')
version=$(sed -rn "s/^--.*http:..(www.)?stackage.org.snapshot.nightly-//p" "$tmpfile")
if [[ "$old_version" == "$version" ]]; then
@ -29,6 +30,13 @@ sed -r \
-e '/^$/d' \
< "${tmpfile}" | sort --ignore-case >"${tmpfile}.new"
cat > $stackage_config << EOF
# Stackage Nightly $version
# This file is auto-generated by
# maintainers/scripts/haskell/update-stackage.sh
default-package-overrides:
EOF
# Drop restrictions on some tools where we always want the latest version.
sed -r \
-e '/ cabal-install /d' \
@ -48,17 +56,7 @@ sed -r \
-e '/ ShellCheck /d' \
-e '/ stack /d' \
-e '/ weeder /d' \
< "${tmpfile}.new" > "${tmpfile}"
# Drop the previous configuration ...
# shellcheck disable=SC1004
sed -e '/ # Stackage Nightly/,/^$/c \TODO\
' -i $config_file
# ... and replace it with the new one.
sed -e "/TODO/r $tmpfile" \
-e "s/TODO/ # Stackage Nightly $version/" \
-i $config_file
< "${tmpfile}.new" >> $stackage_config
if [[ "${1:-}" == "--do-commit" ]]; then
git add $config_file

View File

@ -8,10 +8,10 @@
}:
mkDerivation {
pname = "cabal2nix";
version = "unstable-2021-05-01";
version = "unstable-2021-05-06";
src = fetchzip {
url = "https://github.com/NixOS/cabal2nix/archive/849a3507c849e3e2331efbc5ebe391b70a215ddc.tar.gz";
sha256 = "0g91d2bd72l3kkykc47a2raymvgw6427n7cg9ayzvrpldkd0silc";
url = "https://github.com/NixOS/cabal2nix/archive/b598bc4682b0827554b5780acdd6f948d320283b.tar.gz";
sha256 = "04afm56cyhj2l41cvq4z11k92jjchr21a8vg9pjaz438pma7jgw1";
};
isLibrary = true;
isExecutable = true;

View File

@ -0,0 +1,439 @@
# pkgs/development/haskell-modules/configuration-hackage2nix.yaml
compiler: ghc-8.10.4
core-packages:
- array-0.5.4.0
- base-4.14.1.0
- binary-0.8.8.0
- bytestring-0.10.12.0
- Cabal-3.2.1.0
- containers-0.6.2.1
- deepseq-1.4.4.0
- directory-1.3.6.0
- exceptions-0.10.4
- filepath-1.4.2.1
- ghc-8.10.4
- ghc-boot-8.10.4
- ghc-boot-th-8.10.4
- ghc-compact-0.1.0.0
- ghc-heap-8.10.4
- ghc-prim-0.6.1
- ghci-8.10.4
- haskeline-0.8.0.1
- hpc-0.6.1.0
- integer-gmp-1.0.3.0
- libiserv-8.10.4
- mtl-2.2.2
- parsec-3.1.14.0
- pretty-1.1.3.6
- process-1.6.9.0
- rts-1.0
- stm-2.5.0.0
- template-haskell-2.16.0.0
- terminfo-0.4.1.4
- text-1.2.4.1
- time-1.9.3
- transformers-0.5.6.2
- unix-2.7.2.2
- xhtml-3000.2.2.1
# Hack: The following package is a core package of GHCJS. If we don't declare
# it, then hackage2nix will generate a Hackage database where all dependants
# of this library are marked as "broken".
- ghcjs-base-0
# This is a list of packages with versions from the latest Stackage LTS release.
#
# The packages and versions in this list cause the `hackage2nix` tool to
# generate the package at the given version.
#
# For instance, with a line like the following:
#
# - aeson ==1.4.6.0
#
# `hackage2nix` will generate the `aeson` package at version 1.4.6.0 in the
# ./hackage-packages.nix file.
#
# Since the packages in the LTS package set are sometimes older than the latest
# on Hackage, `hackage2nix` is smart enough to also generate the latest version
# of a given package.
#
# In the above example with aeson, if there was version 1.5.0.0 of aeson
# available on Hackage, `hackage2nix` would generate two packages, `aeson`
# at version 1.4.6.0 and `aeson_1_5_0_0` at version 1.5.0.0.
#
# WARNING: This list is generated semiautomatically based on the most recent
# LTS package set. If you want to add entries to it, you must do so before the
# comment saying "# LTS Haskell x.y". Any changes after that comment will be
# lost the next time `update-stackage.sh` runs.
default-package-overrides:
# This was only intended for ghc-7.0.4, and has very old deps, one hidden behind a flag
- MissingH ==1.4.2.0
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
# not yet available in Nixpkgs
- gi-gdkx11 < 4
# Needs Cabal 3.4 for Setup.hs
- gi-javascriptcore < 4.0.23 #
- gi-soup < 2.4.24 #
- gi-webkit2 < 4.0.27 #
# To stay hls 1.0 compatible
- ghcide < 1.1
- hls-retrie-plugin < 1.0.0.1
- lsp < 1.2
- lsp-types < 1.2
- hls-plugin-api < 1.1.0.0
- hls-explicit-imports-plugin < 1.0.0.1
extra-packages:
- base16-bytestring < 1 # required for cabal-install etc.
- Cabal == 2.2.* # required for jailbreak-cabal etc.
- Cabal == 2.4.* # required for cabal-install etc.
- Cabal == 3.2.* # required for cabal-install etc.
- dependent-map == 0.2.4.0 # required by Hasura 1.3.1, 2020-08-20
- dependent-sum == 0.4 # required by Hasura 1.3.1, 2020-08-20
- dhall == 1.29.0 # required for ats-pkg
- Diff < 0.4 # required by liquidhaskell-0.8.10.2: https://github.com/ucsd-progsys/liquidhaskell/issues/1729
- ghc-tcplugins-extra ==0.3.2 # required for polysemy-plugin 0.2.5.0
- haddock == 2.23.* # required on GHC < 8.10.x
- haddock-api == 2.23.* # required on GHC < 8.10.x
- haddock-library ==1.7.* # required by stylish-cabal-0.5.0.0
- happy == 1.19.9 # for purescript
- hinotify == 0.3.9 # for xmonad-0.26: https://github.com/kolmodin/hinotify/issues/29
- hlint < 3.3 # We dont have ghc-lib-parser 9.0.X yet.
- immortal == 0.2.2.1 # required by Hasura 1.3.1, 2020-08-20
- lsp-test < 0.14 # needed for hls 1.0.0
- mmorph == 1.1.3 # Newest working version of mmorph on ghc 8.6.5. needed for hls
- network == 2.6.3.1 # required by pkgs/games/hedgewars/default.nix, 2020-11-15
- optparse-applicative < 0.16 # needed for niv-0.2.19
- refinery == 0.3.* # required by hls-tactics-plugin-1.0.0.0
- resolv == 0.1.1.2 # required to build cabal-install-3.0.0.0 with pre ghc-8.8.x
- sbv == 7.13 # required for pkgs.petrinizer
- gi-gdk == 3.0.24 # 2021-05-07: For haskell-gi 0.25 without gtk4
- gi-gtk < 4.0 # 2021-05-07: For haskell-gi 0.25 without gtk4
- gi-gdkx11 == 3.0.11 # 2021-05-07: For haskell-gi 0.25 without gtk4
package-maintainers:
peti:
- cabal-install
- cabal2nix
- cabal2spec
- distribution-nixpkgs
- funcmp
- git-annex
- hackage-db
- hledger
- hledger-interest
- hledger-ui
- hledger-web
- hopenssl
- hsdns
- hsemail
- hsyslog
- jailbreak-cabal
- language-nix
- logging-facade-syslog
- nix-paths
- pandoc
- structured-haskell-mode
- titlecase
- xmonad
- xmonad-contrib
gridaphobe:
- located-base
jb55:
# - bson-lens
- cased
- elm-export-persistent
# - pipes-mongodb
- streaming-wai
kiwi:
- config-schema
- config-value
- glirc
- irc-core
- matterhorn
- mattermost-api
- mattermost-api-qc
- Unique
psibi:
- path-pieces
- persistent
- persistent-sqlite
- persistent-template
- shakespeare
abbradar:
- Agda
roberth:
- arion-compose
- hercules-ci-agent
- hercules-ci-api
- hercules-ci-api-agent
- hercules-ci-api-core
- hercules-ci-cli
- hercules-ci-cnix-expr
- hercules-ci-cnix-store
cdepillabout:
- pretty-simple
- spago
terlar:
- nix-diff
maralorn:
- reflex-dom
- cabal-fmt
- shh
- neuron
- releaser
- taskwarrior
- haskell-language-server
- shake-bench
- iCalendar
- stm-containers
sorki:
- cayenne-lpp
- data-stm32
- gcodehs
- nix-derivation
- nix-narinfo
- ttn
- ttn-client
- update-nix-fetchgit
- zre
utdemir:
- nix-tree
turion:
- rhine
- rhine-gloss
- essence-of-live-coding
- essence-of-live-coding-gloss
- essence-of-live-coding-pulse
- essence-of-live-coding-quickcheck
- Agda
- dunai
- finite-typelits
- pulse-simple
- simple-affine-space
sternenseemann:
# also maintain upstream package
- spacecookie
- gopher-proxy
# other packages I can help out for
- systemd
- fast-logger
- flat
- Euterpea2
- utc
- socket
- gitit
- yarn-lock
- yarn2nix
poscat:
- hinit
bdesham:
- pinboard-notes-backup
unsupported-platforms:
alsa-mixer: [ x86_64-darwin ]
alsa-pcm: [ x86_64-darwin ]
alsa-seq: [ x86_64-darwin ]
AWin32Console: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
barbly: [ i686-linux, x86_64-linux, aarch64-linux, armv7l-linux ]
bdcs-api: [ x86_64-darwin ]
bindings-sane: [ x86_64-darwin ]
bindings-directfb: [ x86_64-darwin ]
cut-the-crap: [ x86_64-darwin ]
d3d11binding: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
DirectSound: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
dx9base: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
dx9d3d: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
dx9d3dx: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Euterpea: [ x86_64-darwin ]
freenect: [ x86_64-darwin ]
FTGL: [ x86_64-darwin ]
gi-dbusmenugtk3: [ x86_64-darwin ]
gi-dbusmenu: [ x86_64-darwin ]
gi-ggit: [ x86_64-darwin ]
gi-ibus: [ x86_64-darwin ]
gi-ostree: [ x86_64-darwin ]
gi-vte: [ x86_64-darwin ]
gnome-keyring: [ x86_64-darwin ]
gtk-mac-integration: [ i686-linux, x86_64-linux, aarch64-linux, armv7l-linux ]
gtk-sni-tray: [ x86_64-darwin ]
gtk-sni-tray: [ x86_64-darwin ]
haskell-snake: [ x86_64-darwin ]
hcwiid: [ x86_64-darwin ]
HFuse: [ x86_64-darwin ]
hidapi: [ x86_64-darwin ]
hommage-ds: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
HSoM: [ x86_64-darwin ]
iwlib: [ x86_64-darwin ]
libmodbus: [ x86_64-darwin ]
libsystemd-journal: [ x86_64-darwin ]
libsystemd-journal: [ x86_64-darwin ]
libtelnet: [ x86_64-darwin ]
libzfs: [ x86_64-darwin ]
linearEqSolver: [ aarch64-linux ]
lio-fs: [ x86_64-darwin ]
logging-facade-journald: [ x86_64-darwin ]
midi-alsa: [ x86_64-darwin ]
mpi-hs: [ aarch64-linux, x86_64-darwin ]
mpi-hs-binary: [ aarch64-linux, x86_64-darwin ]
mpi-hs-cereal: [ aarch64-linux, x86_64-darwin ]
mpi-hs-store: [ aarch64-linux, x86_64-darwin ]
mplayer-spot: [ aarch64-linux ]
oculus: [ x86_64-darwin ]
pam: [ x86_64-darwin ]
piyo: [ x86_64-darwin ]
PortMidi-simple: [ x86_64-darwin ]
PortMidi: [ x86_64-darwin ]
posix-api: [ x86_64-darwin ]
Raincat: [ x86_64-darwin ]
reactivity: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
reflex-dom: [ x86_64-darwin ]
rtlsdr: [ x86_64-darwin ]
rubberband: [ x86_64-darwin ]
sbv: [ aarch64-linux ]
sdl2-mixer: [ x86_64-darwin ]
sdl2-ttf: [ x86_64-darwin ]
synthesizer-alsa: [ x86_64-darwin ]
taffybar: [ x86_64-darwin ]
termonad: [ x86_64-darwin ]
tokyotyrant-haskell: [ x86_64-darwin ]
udev: [ x86_64-darwin ]
vrpn: [ x86_64-darwin ]
vulkan: [ i686-linux, armv7l-linux, x86_64-darwin ]
VulkanMemoryAllocator: [ i686-linux, armv7l-linux ]
VulkanMemoryAllocator: [ x86_64-darwin ]
vulkan-utils: [ x86_64-darwin ]
webkit2gtk3-javascriptcore: [ x86_64-darwin ]
Win32-console: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-dhcp-server: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-errors: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-extras: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-junction-point: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-notify: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-security: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-services: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
Win32-services-wrapper: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
xattr: [ x86_64-darwin ]
xgboost-haskell: [ aarch64-linux, armv7l-linux ]
XInput: [ i686-linux, x86_64-linux, x86_64-darwin, aarch64-linux, armv7l-linux ]
xmobar: [ x86_64-darwin ]
xmonad-extras: [ x86_64-darwin ]
xmonad-volume: [ x86_64-darwin ]
dont-distribute-packages:
# Depends on shine, which is a ghcjs project.
- shine-varying
# these packages depend on software with an unfree license
- accelerate-bignum
- accelerate-blas
- accelerate-cublas
- accelerate-cuda
- accelerate-cufft
- accelerate-examples
- accelerate-fft
- accelerate-fourier-benchmark
- accelerate-io-array
- accelerate-io-bmp
- accelerate-io-bytestring
- accelerate-io-cereal
- accelerate-io-JuicyPixels
- accelerate-io-repa
- accelerate-io-vector
- accelerate-kullback-liebler
- accelerate-llvm-ptx
- bindings-yices
- boolector
- ccelerate-cuda
- containers-accelerate
- cplex-hs
- cublas
- cuda # 2020-08-18 because of dependency nvidia-x11
- cufft
- cusolver
- cusparse
- gloss-raster-accelerate
- hashable-accelerate
- libnvvm
- matlab
- nvvm
- Obsidian
- odpic-raw
- patch-image
# license for input data unclear, dependency not on Hackage
# see https://github.com/NixOS/nixpkgs/pull/88604
- tensorflow-mnist
- yices-easy
- yices-painless
# these packages don't evaluate because they have broken (system) dependencies
- XML
- comark
- couch-simple
- diagrams-hsqml
- diagrams-reflex
- dialog
- fltkhs-demos
- fltkhs-fluid-demos
- fltkhs-hello-world
- fltkhs-themes
- ghcjs-dom-hello
- ghcjs-dom-webkit
- gi-javascriptcore
- gi-webkit
- gi-webkit2
- gi-webkit2webextension
- gsmenu
- haste-gapi
- haste-perch
- hbro
- hplayground
- hs-mesos
- hsqml
- hsqml-datamodel
- hsqml-datamodel-vinyl
- hsqml-datemodel-vinyl
- hsqml-demo-manic
- hsqml-demo-morris
- hsqml-demo-notes
- hsqml-demo-notes
- hsqml-demo-samples
- hsqml-morris
- hsqml-morris
- hstorchat
- imprevu-happstack
- jsaddle-webkit2gtk
- jsaddle-webkitgtk
- jsc
- lambdacat
- leksah
- manatee-all
- manatee-browser
- manatee-reader
- markup-preview
- nomyx-api
- nomyx-core
- nomyx-language
- nomyx-library
- nomyx-server
- passman-cli
- passman-core
- reflex-dom-colonnade
- reflex-dom-contrib
- reflex-dom-fragment-shader-canvas
- reflex-dom-helpers
- reflex-jsx
- sneathlane-haste
- spike
- tianbar
- trasa-reflex
- treersec
- wai-middleware-brotli
- web-browser-in-haskell
- webkit
- webkitgtk3
- webkitgtk3-javascriptcore
- websnap

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,121 @@
# This file is automatically generated by
# maintainers/scripts/haskell/regenerate-transitive-broken-packages.sh
# It is supposed to list all haskellPackages that cannot evaluate because they
# depend on a dependency marked as broken.
dont-distribute-packages:
- AesonBson
- HGamer3D-API
- HGamer3D-CAudio-Binding
- HGamer3D-OIS-Binding
- HipmunkPlayground
- Holumbus-Distribution
- Holumbus-MapReduce
- Holumbus-Storage
- KiCS
- KiCS-debugger
- KiCS-prophecy
- RESTng
- ViennaRNA-bindings
- XML
- acme-safe
- aeson-bson
- approx-rand-test
- barley
- bson-mapping
- clash-prelude-quickcheck
- click-clack
- cloudyfs
- cognimeta-utils
- comark
- comonad-random
- containers-accelerate
- definitive-graphics
- ecdsa
- effective-aspects-mzv
- eliminators_0_8
- fltkhs-demos
- fltkhs-fluid-demos
- fltkhs-hello-world
- fltkhs-themes
- fluent-logger-conduit
- gi-gtk_4_0_4
- goat
- gridfs
- gsmenu
- gtk2hs-cast-glade
- gtk2hs-cast-gnomevfs
- gtk2hs-cast-gtkglext
- gtk2hs-cast-gtksourceview2
- hakyll-contrib-i18n
- hascat
- hascat-lib
- hascat-setup
- hascat-system
- haste-gapi
- haste-perch
- hatexmpp3
- hplayground
- hs2dot
- hsqml-datamodel-vinyl
- hsqml-demo-morris
- hsqml-morris
- hubris
- hxt-binary
- hxt-filter
- imprevu-happstack
- javaclass
- keera-posture
- lambdabot-xmpp
- leksah
- liquidhaskell-cabal-demo
- mp3decoder
- network-pgi
- nomyx-api
- nomyx-core
- nomyx-language
- nomyx-library
- nomyx-server
- one-liner_2_0
- openpgp-crypto-api
- patch-image
- perdure
- persistent-mysql_2_12_1_0
- persistent-postgresql_2_12_1_1
- persistent-sqlite_2_12_0_0
- pontarius-mediaserver
- pontarius-xmpp-extras
- pontarius-xpmn
- procrastinating-structure
- reactive
- redHandlers
- reflex-dom-colonnade
- regex-genex
- ribosome
- ribosome-root
- ribosome-test
- ripple
- robot
- roguestar-engine
- roguestar-gl
- roguestar-glut
- route-generator
- sc2hs
- sexpresso
- shine-varying
- singleton-nats_0_4_6
- smtp2mta
- sneathlane-haste
- sock2stream
- starrover2
- text-xml-generic
- trasa-reflex
- treersec
- tuple-hlist
- wai-dispatch
- wai-hastache
- wai-middleware-brotli
- wai-session-tokyocabinet
- wx
- wxc
- wxcore