2021-05-01 18:00:40 +02:00
|
|
|
/*
|
2021-05-15 04:49:00 +02:00
|
|
|
This is the Hydra jobset for the `haskell-updates` branch in Nixpkgs.
|
|
|
|
You can see the status of this jobset at
|
|
|
|
https://hydra.nixos.org/jobset/nixpkgs/haskell-updates.
|
|
|
|
|
2021-05-01 18:00:40 +02:00
|
|
|
To debug this expression you can use `hydra-eval-jobs` from
|
2022-05-10 21:52:13 +02:00
|
|
|
`pkgs.hydra_unstable` which prints the jobset description
|
2021-05-01 18:00:40 +02:00
|
|
|
to `stdout`:
|
|
|
|
|
|
|
|
$ hydra-eval-jobs -I . pkgs/top-level/release-haskell.nix
|
|
|
|
*/
|
2023-03-10 14:43:00 +01:00
|
|
|
{ supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ] }:
|
2021-05-01 18:00:40 +02:00
|
|
|
|
|
|
|
let
|
|
|
|
|
|
|
|
releaseLib = import ./release-lib.nix {
|
|
|
|
inherit supportedSystems;
|
|
|
|
};
|
|
|
|
|
|
|
|
inherit (releaseLib)
|
2021-07-19 06:49:24 +02:00
|
|
|
lib
|
2021-05-01 18:00:40 +02:00
|
|
|
mapTestOn
|
2021-07-19 06:49:24 +02:00
|
|
|
packagePlatforms
|
|
|
|
pkgs
|
2021-05-01 18:00:40 +02:00
|
|
|
;
|
|
|
|
|
2021-07-19 06:49:24 +02:00
|
|
|
# Helper function which traverses a (nested) set
|
2021-05-01 18:00:40 +02:00
|
|
|
# of derivations produced by mapTestOn and flattens
|
|
|
|
# it to a list of derivations suitable to be passed
|
|
|
|
# to `releaseTools.aggregate` as constituents.
|
2021-07-19 06:49:24 +02:00
|
|
|
# Removes all non derivations from the input jobList.
|
|
|
|
#
|
|
|
|
# accumulateDerivations :: [ Either Derivation AttrSet ] -> [ Derivation ]
|
|
|
|
#
|
|
|
|
# > accumulateDerivations [ drv1 "string" { foo = drv2; bar = { baz = drv3; }; } ]
|
|
|
|
# [ drv1 drv2 drv3 ]
|
2021-05-01 18:00:40 +02:00
|
|
|
accumulateDerivations = jobList:
|
|
|
|
lib.concatMap (
|
|
|
|
attrs:
|
|
|
|
if lib.isDerivation attrs
|
|
|
|
then [ attrs ]
|
2023-02-14 19:11:59 +01:00
|
|
|
else lib.optionals (lib.isAttrs attrs) (accumulateDerivations (lib.attrValues attrs))
|
2021-05-01 18:00:40 +02:00
|
|
|
) jobList;
|
|
|
|
|
|
|
|
# names of all subsets of `pkgs.haskell.packages`
|
2023-03-24 02:39:15 +01:00
|
|
|
#
|
|
|
|
# compilerNames looks like the following:
|
|
|
|
#
|
|
|
|
# ```
|
|
|
|
# {
|
|
|
|
# ghc810 = "ghc810";
|
|
|
|
# ghc8102Binary = "ghc8102Binary";
|
|
|
|
# ghc8102BinaryMinimal = "ghc8102BinaryMinimal";
|
|
|
|
# ghc8107 = "ghc8107";
|
|
|
|
# ghc924 = "ghc924";
|
|
|
|
# ...
|
|
|
|
# }
|
|
|
|
# ```
|
2021-05-01 18:00:40 +02:00
|
|
|
compilerNames = lib.mapAttrs (name: _: name) pkgs.haskell.packages;
|
|
|
|
|
|
|
|
# list of all compilers to test specific packages on
|
2021-10-12 14:09:47 +02:00
|
|
|
released = with compilerNames; [
|
2022-09-21 16:23:37 +02:00
|
|
|
ghc8107
|
|
|
|
ghc902
|
2022-11-07 15:25:37 +01:00
|
|
|
ghc925
|
2023-02-18 18:34:10 +01:00
|
|
|
ghc926
|
2023-02-28 23:16:54 +01:00
|
|
|
ghc927
|
2023-05-27 10:18:10 +02:00
|
|
|
ghc928
|
2023-04-20 17:50:25 +02:00
|
|
|
ghc945
|
2023-08-08 12:19:53 +02:00
|
|
|
ghc946
|
2023-08-30 16:18:57 +02:00
|
|
|
ghc947
|
2023-12-20 10:51:32 +01:00
|
|
|
ghc948
|
2023-09-27 01:13:19 +02:00
|
|
|
ghc963
|
2024-01-16 21:40:36 +01:00
|
|
|
ghc964
|
2023-10-10 06:53:34 +02:00
|
|
|
ghc981
|
2021-05-01 18:00:40 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
# packagePlatforms applied to `haskell.packages.*`
|
2023-03-24 02:39:15 +01:00
|
|
|
#
|
|
|
|
# This returns an attr set that looks like the following, where each Haskell
|
|
|
|
# package in the compiler attr set has its list of supported platforms as its
|
|
|
|
# value.
|
|
|
|
#
|
|
|
|
# ```
|
|
|
|
# {
|
|
|
|
# ghc810 = {
|
|
|
|
# conduit = [ ... ];
|
|
|
|
# lens = [ "i686-cygwin" "x86_64-cygwin" ... "x86_64-windows" "i686-windows" ]
|
|
|
|
# ...
|
|
|
|
# };
|
|
|
|
# ghc902 = { ... };
|
|
|
|
# ...
|
|
|
|
# }
|
|
|
|
# ```
|
2021-05-01 18:00:40 +02:00
|
|
|
compilerPlatforms = lib.mapAttrs
|
|
|
|
(_: v: packagePlatforms v)
|
|
|
|
pkgs.haskell.packages;
|
|
|
|
|
|
|
|
# This function lets you specify specific packages
|
|
|
|
# which are to be tested on a list of specific GHC
|
|
|
|
# versions and returns a job set for all specified
|
2023-03-24 02:39:15 +01:00
|
|
|
# combinations.
|
|
|
|
#
|
|
|
|
# You can call versionedCompilerJobs like the following:
|
|
|
|
#
|
|
|
|
# ```
|
|
|
|
# versionedCompilerJobs {
|
|
|
|
# ghc-tags = ["ghc902" "ghc924"];
|
|
|
|
# }
|
|
|
|
# ```
|
|
|
|
#
|
|
|
|
# This would produce an output like the following:
|
|
|
|
#
|
|
|
|
# ```
|
|
|
|
# {
|
|
|
|
# haskell.packages = {
|
|
|
|
# ghc884 = {};
|
|
|
|
# ghc810 = {};
|
|
|
|
# ghc902 = {
|
|
|
|
# ghc-tags = {
|
|
|
|
# aarch64-darwin = <derivation...>;
|
|
|
|
# aarch64-linux = <derivation...>;
|
|
|
|
# ...
|
|
|
|
# };
|
|
|
|
# };
|
|
|
|
# ghc924 = {
|
|
|
|
# ghc-tags = { ... };
|
|
|
|
# };
|
|
|
|
# ...
|
|
|
|
# };
|
|
|
|
# }
|
|
|
|
# ```
|
2021-05-01 18:00:40 +02:00
|
|
|
versionedCompilerJobs = config: mapTestOn {
|
|
|
|
haskell.packages =
|
2023-03-24 03:32:47 +01:00
|
|
|
let
|
|
|
|
# Mapping function that takes an attrset of jobs, and
|
|
|
|
# removes all jobs that are not specified in config.
|
|
|
|
#
|
|
|
|
# For example, imagine a call to onlyConfigJobs like:
|
|
|
|
#
|
|
|
|
# ```
|
|
|
|
# onlyConfigJobs
|
|
|
|
# "ghc902"
|
|
|
|
# {
|
|
|
|
# conduit = [ ... ];
|
|
|
|
# lens = [ "i686-cygwin" "x86_64-cygwin" ... "x86_64-windows" "i686-windows" ];
|
|
|
|
# }
|
|
|
|
# ```
|
|
|
|
#
|
|
|
|
# onlyConfigJobs pulls out only those jobs that are specified in config.
|
|
|
|
#
|
|
|
|
# For instance, if config is `{ lens = [ "ghc902" ]; }`, then the above
|
|
|
|
# example call to onlyConfigJobs will return:
|
|
|
|
#
|
|
|
|
# ```
|
|
|
|
# { lens = [ "i686-cygwin" "x86_64-cygwin" ... "x86_64-windows" "i686-windows" ]; }
|
|
|
|
# ```
|
|
|
|
#
|
|
|
|
# If config is `{ lens = [ "ghc8107" ]; }`, then the above example call
|
|
|
|
# to onlyConfigJobs returns `{}`.
|
2023-03-24 03:43:31 +01:00
|
|
|
#
|
|
|
|
# onlyConfigJobs will also remove all platforms from a job that are not
|
|
|
|
# supported by the GHC it is compiled with.
|
2023-03-24 03:32:47 +01:00
|
|
|
onlyConfigJobs = ghc: jobs:
|
2023-03-24 03:43:31 +01:00
|
|
|
let
|
|
|
|
configFilteredJobset =
|
|
|
|
lib.filterAttrs
|
|
|
|
(jobName: platforms: lib.elem ghc (config."${jobName}" or []))
|
|
|
|
jobs;
|
|
|
|
|
|
|
|
# Remove platforms from each job that are not supported by GHC.
|
|
|
|
# This is important so that we don't build jobs for platforms
|
|
|
|
# where GHC can't be compiled.
|
|
|
|
jobsetWithGHCPlatforms =
|
|
|
|
lib.mapAttrs
|
|
|
|
(_: platforms: lib.intersectLists jobs.ghc platforms)
|
|
|
|
configFilteredJobset;
|
|
|
|
in
|
|
|
|
jobsetWithGHCPlatforms;
|
2023-03-24 03:32:47 +01:00
|
|
|
in
|
|
|
|
lib.mapAttrs onlyConfigJobs compilerPlatforms;
|
2021-05-01 18:00:40 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
# hydra jobs for `pkgs` of which we import a subset of
|
2021-05-04 15:38:20 +02:00
|
|
|
pkgsPlatforms = packagePlatforms pkgs;
|
2021-05-01 18:00:40 +02:00
|
|
|
|
2021-05-01 23:37:42 +02:00
|
|
|
# names of packages in an attribute set that are maintained
|
|
|
|
maintainedPkgNames = set: builtins.attrNames
|
|
|
|
(lib.filterAttrs (
|
|
|
|
_: v: builtins.length (v.meta.maintainers or []) > 0
|
|
|
|
) set);
|
|
|
|
|
2021-05-08 18:27:47 +02:00
|
|
|
recursiveUpdateMany = builtins.foldl' lib.recursiveUpdate {};
|
2021-05-01 18:00:40 +02:00
|
|
|
|
2021-07-18 11:15:49 +02:00
|
|
|
# Remove multiple elements from a list at once.
|
|
|
|
#
|
|
|
|
# removeMany
|
|
|
|
# :: [a] -- list of elements to remove
|
|
|
|
# -> [a] -- list of elements from which to remove
|
|
|
|
# -> [a]
|
|
|
|
#
|
|
|
|
# > removeMany ["aarch64-linux" "x86_64-darwin"] ["aarch64-linux" "x86_64-darwin" "x86_64-linux"]
|
|
|
|
# ["x86_64-linux"]
|
2021-07-18 08:18:30 +02:00
|
|
|
removeMany = itemsToRemove: list: lib.foldr lib.remove list itemsToRemove;
|
|
|
|
|
2021-07-18 11:15:49 +02:00
|
|
|
# Recursively remove platforms from the values in an attribute set.
|
|
|
|
#
|
|
|
|
# removePlatforms
|
|
|
|
# :: [String]
|
|
|
|
# -> AttrSet
|
|
|
|
# -> AttrSet
|
|
|
|
#
|
|
|
|
# > attrSet = {
|
|
|
|
# foo = ["aarch64-linux" "x86_64-darwin" "x86_64-linux"];
|
|
|
|
# bar.baz = ["aarch64-linux" "x86_64-linux"];
|
|
|
|
# bar.quux = ["aarch64-linux" "x86_64-darwin"];
|
|
|
|
# }
|
|
|
|
# > removePlatforms ["aarch64-linux" "x86_64-darwin"] attrSet
|
|
|
|
# {
|
|
|
|
# foo = ["x86_64-linux"];
|
|
|
|
# bar = {
|
|
|
|
# baz = ["x86_64-linux"];
|
|
|
|
# quux = [];
|
|
|
|
# };
|
|
|
|
# }
|
2021-07-18 08:18:30 +02:00
|
|
|
removePlatforms = platformsToRemove: packageSet:
|
|
|
|
lib.mapAttrsRecursive
|
|
|
|
(_: val:
|
|
|
|
if lib.isList val
|
|
|
|
then removeMany platformsToRemove val
|
|
|
|
else val
|
|
|
|
)
|
|
|
|
packageSet;
|
2021-05-22 15:05:10 +02:00
|
|
|
|
2021-05-09 01:49:17 +02:00
|
|
|
jobs = recursiveUpdateMany [
|
|
|
|
(mapTestOn {
|
2021-05-08 18:27:47 +02:00
|
|
|
haskellPackages = packagePlatforms pkgs.haskellPackages;
|
2022-04-11 01:36:54 +02:00
|
|
|
haskell.compiler = packagePlatforms pkgs.haskell.compiler // (lib.genAttrs [
|
|
|
|
"ghcjs"
|
|
|
|
"ghcjs810"
|
|
|
|
] (ghcjsName: {
|
|
|
|
# We can't build ghcjs itself, since it exceeds 3GB (Hydra's output limit) due
|
|
|
|
# to the size of its bundled libs. We can however save users a bit of compile
|
|
|
|
# time by building the bootstrap ghcjs on Hydra. For this reason, we overwrite
|
|
|
|
# the ghcjs attributes in haskell.compiler with a reference to the bootstrap
|
|
|
|
# ghcjs attribute in their bootstrap package set (exposed via passthru) which
|
|
|
|
# would otherwise be ignored by Hydra.
|
|
|
|
bootGhcjs = (packagePlatforms pkgs.haskell.compiler.${ghcjsName}.passthru).bootGhcjs;
|
2022-09-21 17:20:16 +02:00
|
|
|
}));
|
2021-05-01 18:00:40 +02:00
|
|
|
|
2021-07-13 15:19:36 +02:00
|
|
|
tests.haskell = packagePlatforms pkgs.tests.haskell;
|
2021-05-08 18:27:47 +02:00
|
|
|
|
2022-05-19 08:37:08 +02:00
|
|
|
nixosTests = {
|
|
|
|
inherit (packagePlatforms pkgs.nixosTests)
|
|
|
|
agda
|
|
|
|
xmonad
|
|
|
|
xmonad-xdg-autostart
|
|
|
|
;
|
|
|
|
};
|
|
|
|
|
2021-07-15 12:35:15 +02:00
|
|
|
agdaPackages = packagePlatforms pkgs.agdaPackages;
|
|
|
|
|
2021-05-08 18:27:47 +02:00
|
|
|
# top-level packages that depend on haskellPackages
|
|
|
|
inherit (pkgsPlatforms)
|
|
|
|
agda
|
|
|
|
arion
|
|
|
|
bench
|
|
|
|
bustle
|
|
|
|
blucontrol
|
|
|
|
cabal-install
|
|
|
|
cabal2nix
|
|
|
|
cachix
|
|
|
|
carp
|
|
|
|
cedille
|
|
|
|
client-ip-echo
|
|
|
|
darcs
|
|
|
|
dconf2nix
|
|
|
|
dhall
|
|
|
|
dhall-bash
|
|
|
|
dhall-docs
|
|
|
|
dhall-lsp-server
|
|
|
|
dhall-json
|
|
|
|
dhall-nix
|
|
|
|
diagrams-builder
|
|
|
|
elm2nix
|
2022-11-11 18:03:41 +01:00
|
|
|
emanote
|
2021-05-08 18:27:47 +02:00
|
|
|
fffuu
|
|
|
|
futhark
|
|
|
|
ghcid
|
|
|
|
git-annex
|
|
|
|
git-brunch
|
|
|
|
gitit
|
|
|
|
glirc
|
|
|
|
hadolint
|
|
|
|
haskell-ci
|
|
|
|
haskell-language-server
|
|
|
|
hasura-graphql-engine
|
|
|
|
hci
|
|
|
|
hercules-ci-agent
|
|
|
|
hinit
|
|
|
|
hedgewars
|
|
|
|
hledger
|
2021-09-26 15:10:31 +02:00
|
|
|
hledger-check-fancyassertions
|
2021-05-08 18:27:47 +02:00
|
|
|
hledger-iadd
|
|
|
|
hledger-interest
|
|
|
|
hledger-ui
|
|
|
|
hledger-web
|
|
|
|
hlint
|
|
|
|
hpack
|
2021-11-05 07:01:17 +01:00
|
|
|
# hyper-haskell # depends on electron-10.4.7 which is marked as insecure
|
2022-11-20 08:45:35 +01:00
|
|
|
# hyper-haskell-server-with-packages # hyper-haskell-server is broken
|
2021-05-08 18:27:47 +02:00
|
|
|
icepeak
|
|
|
|
ihaskell
|
2022-01-21 13:40:28 +01:00
|
|
|
jacinda
|
2021-05-08 18:27:47 +02:00
|
|
|
jl
|
|
|
|
koka
|
|
|
|
krank
|
|
|
|
lambdabot
|
2022-04-20 12:03:29 +02:00
|
|
|
lhs2tex
|
2021-05-08 18:27:47 +02:00
|
|
|
madlang
|
2023-09-01 11:51:52 +02:00
|
|
|
mailctl
|
2021-05-08 18:27:47 +02:00
|
|
|
matterhorn
|
|
|
|
mueval
|
2022-04-20 09:56:35 +02:00
|
|
|
naproche
|
2021-05-08 18:27:47 +02:00
|
|
|
niv
|
|
|
|
nix-delegate
|
|
|
|
nix-deploy
|
|
|
|
nix-diff
|
|
|
|
nix-linter
|
|
|
|
nix-output-monitor
|
|
|
|
nix-script
|
|
|
|
nix-tree
|
|
|
|
nixfmt
|
|
|
|
nota
|
2021-06-03 11:51:34 +02:00
|
|
|
nvfetcher
|
2021-05-08 18:27:47 +02:00
|
|
|
ormolu
|
2024-01-08 12:43:41 +01:00
|
|
|
pakcs
|
2021-05-08 18:27:47 +02:00
|
|
|
pandoc
|
|
|
|
petrinizer
|
|
|
|
place-cursor-at
|
|
|
|
pinboard-notes-backup
|
|
|
|
pretty-simple
|
|
|
|
shake
|
|
|
|
shellcheck
|
|
|
|
sourceAndTags
|
|
|
|
spacecookie
|
|
|
|
spago
|
|
|
|
splot
|
|
|
|
stack
|
|
|
|
stack2nix
|
|
|
|
stutter
|
|
|
|
stylish-haskell
|
|
|
|
taffybar
|
|
|
|
tamarin-prover
|
|
|
|
taskell
|
2022-10-15 17:49:02 +02:00
|
|
|
termonad
|
2021-05-08 18:27:47 +02:00
|
|
|
tldr-hs
|
|
|
|
tweet-hs
|
|
|
|
update-nix-fetchgit
|
2021-06-03 11:51:34 +02:00
|
|
|
uusi
|
2021-05-08 18:27:47 +02:00
|
|
|
uqm
|
|
|
|
uuagc
|
|
|
|
vaultenv
|
|
|
|
wstunnel
|
|
|
|
xmobar
|
2022-07-14 14:28:32 +02:00
|
|
|
xmonadctl
|
2021-05-08 18:27:47 +02:00
|
|
|
xmonad-with-packages
|
|
|
|
yi
|
|
|
|
zsh-git-prompt
|
|
|
|
;
|
2021-05-01 18:00:40 +02:00
|
|
|
|
2022-04-08 00:35:11 +02:00
|
|
|
# Members of the elmPackages set that are Haskell derivations
|
|
|
|
elmPackages = {
|
|
|
|
inherit (pkgsPlatforms.elmPackages)
|
|
|
|
elm
|
|
|
|
elm-format
|
|
|
|
elm-instrument
|
|
|
|
elmi-to-json
|
|
|
|
;
|
|
|
|
};
|
2021-07-18 08:14:30 +02:00
|
|
|
|
2021-07-18 08:17:02 +02:00
|
|
|
# GHCs linked to musl.
|
2021-09-26 21:07:21 +02:00
|
|
|
pkgsMusl.haskell.compiler = lib.recursiveUpdate
|
|
|
|
(packagePlatforms pkgs.pkgsMusl.haskell.compiler)
|
|
|
|
{
|
|
|
|
# remove musl ghc865Binary since it is known to be broken and
|
|
|
|
# causes an evaluation error on darwin.
|
|
|
|
# TODO: remove ghc865Binary altogether and use ghc8102Binary
|
|
|
|
ghc865Binary = {};
|
2021-07-18 08:17:02 +02:00
|
|
|
|
2021-09-26 21:07:21 +02:00
|
|
|
ghcjs = {};
|
|
|
|
ghcjs810 = {};
|
|
|
|
};
|
2021-07-18 08:17:02 +02:00
|
|
|
|
2021-07-18 08:18:30 +02:00
|
|
|
# Get some cache going for MUSL-enabled GHC.
|
|
|
|
pkgsMusl.haskellPackages =
|
|
|
|
removePlatforms
|
|
|
|
[
|
2021-07-24 14:12:00 +02:00
|
|
|
# pkgsMusl is compiled natively with musl. It is not
|
|
|
|
# cross-compiled (unlike pkgsStatic). We can only
|
|
|
|
# natively bootstrap GHC with musl on x86_64-linux because
|
|
|
|
# upstream doesn't provide a musl bindist for aarch64.
|
|
|
|
"aarch64-linux"
|
|
|
|
|
|
|
|
# musl only supports linux, not darwin.
|
|
|
|
"x86_64-darwin"
|
2023-03-12 13:21:22 +01:00
|
|
|
"aarch64-darwin"
|
2021-07-18 08:18:30 +02:00
|
|
|
]
|
|
|
|
{
|
|
|
|
inherit (packagePlatforms pkgs.pkgsMusl.haskellPackages)
|
|
|
|
hello
|
|
|
|
lens
|
|
|
|
random
|
|
|
|
;
|
|
|
|
};
|
|
|
|
|
2021-07-18 08:14:30 +02:00
|
|
|
# Test some statically linked packages to catch regressions
|
|
|
|
# and get some cache going for static compilation with GHC.
|
2023-12-20 11:02:08 +01:00
|
|
|
# Use native-bignum to avoid GMP linking problems (LGPL)
|
2022-04-29 11:21:18 +02:00
|
|
|
pkgsStatic =
|
2021-07-18 08:14:30 +02:00
|
|
|
removePlatforms
|
|
|
|
[
|
|
|
|
"aarch64-linux" # times out on Hydra
|
2023-03-12 13:21:22 +01:00
|
|
|
|
|
|
|
# Static doesn't work on darwin
|
|
|
|
"x86_64-darwin"
|
|
|
|
"aarch64-darwin"
|
2022-02-26 00:47:55 +01:00
|
|
|
] {
|
2022-04-29 11:21:18 +02:00
|
|
|
haskellPackages = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsStatic.haskellPackages)
|
2022-02-26 00:47:55 +01:00
|
|
|
hello
|
|
|
|
lens
|
|
|
|
random
|
2022-03-02 00:03:02 +01:00
|
|
|
QuickCheck
|
2022-04-29 11:21:18 +02:00
|
|
|
cabal2nix
|
2022-07-25 23:42:29 +02:00
|
|
|
terminfo # isn't bundled for cross
|
2022-04-29 15:27:02 +02:00
|
|
|
xhtml # isn't bundled for cross
|
2022-02-26 00:47:55 +01:00
|
|
|
;
|
|
|
|
};
|
|
|
|
|
2023-12-20 11:02:08 +01:00
|
|
|
haskell.packages.native-bignum.ghc948 = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc948)
|
2022-02-26 00:47:55 +01:00
|
|
|
hello
|
|
|
|
lens
|
|
|
|
random
|
2022-03-02 00:03:02 +01:00
|
|
|
QuickCheck
|
2022-04-29 11:21:18 +02:00
|
|
|
cabal2nix
|
2022-07-25 23:42:29 +02:00
|
|
|
terminfo # isn't bundled for cross
|
2022-04-29 15:27:02 +02:00
|
|
|
xhtml # isn't bundled for cross
|
2021-07-18 08:14:30 +02:00
|
|
|
;
|
2022-02-26 00:47:55 +01:00
|
|
|
};
|
2023-12-20 10:59:08 +01:00
|
|
|
|
|
|
|
haskell.packages.native-bignum.ghc981 = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc981)
|
|
|
|
hello
|
|
|
|
random
|
|
|
|
QuickCheck
|
|
|
|
terminfo # isn't bundled for cross
|
|
|
|
;
|
|
|
|
};
|
2021-07-18 08:14:30 +02:00
|
|
|
};
|
2023-01-05 15:34:56 +01:00
|
|
|
|
2023-01-15 21:23:21 +01:00
|
|
|
pkgsCross.ghcjs =
|
2023-02-19 12:17:23 +01:00
|
|
|
removePlatforms
|
|
|
|
[
|
|
|
|
# Hydra output size of 3GB is exceeded
|
|
|
|
"aarch64-linux"
|
|
|
|
]
|
|
|
|
{
|
2023-01-15 21:23:21 +01:00
|
|
|
haskellPackages = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskellPackages)
|
|
|
|
ghc
|
|
|
|
hello
|
|
|
|
;
|
|
|
|
};
|
|
|
|
|
|
|
|
haskell.packages.ghcHEAD = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghcHEAD)
|
|
|
|
ghc
|
|
|
|
hello
|
|
|
|
;
|
|
|
|
};
|
2023-02-19 12:17:23 +01:00
|
|
|
};
|
2021-05-09 01:49:17 +02:00
|
|
|
})
|
2021-05-08 18:27:47 +02:00
|
|
|
(versionedCompilerJobs {
|
|
|
|
# Packages which should be checked on more than the
|
|
|
|
# default GHC version. This list can be used to test
|
|
|
|
# the state of the package set with newer compilers
|
|
|
|
# and to confirm that critical packages for the
|
|
|
|
# package sets (like Cabal, jailbreak-cabal) are
|
|
|
|
# working as expected.
|
2023-10-10 06:53:34 +02:00
|
|
|
cabal-install = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
2023-11-10 18:30:19 +01:00
|
|
|
Cabal_3_10_2_1 = lib.subtractLists [
|
2023-10-10 06:53:34 +02:00
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
|
|
|
Cabal-syntax_3_10_1_0 = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
|
|
|
cabal2nix = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
|
|
|
cabal2nix-unstable = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
2023-07-03 12:31:30 +02:00
|
|
|
funcmp = released;
|
2023-03-18 21:07:20 +01:00
|
|
|
haskell-language-server = lib.subtractLists [
|
2023-10-06 17:51:51 +02:00
|
|
|
# Support ceased as of 2.3.0.0
|
2024-01-01 13:41:29 +01:00
|
|
|
compilerNames.ghc8107
|
2024-01-06 18:23:25 +01:00
|
|
|
# Support ceased as of 2.5.0.0
|
|
|
|
compilerNames.ghc902
|
2023-03-18 21:07:20 +01:00
|
|
|
] released;
|
|
|
|
hoogle = lib.subtractLists [
|
2023-09-27 01:13:19 +02:00
|
|
|
compilerNames.ghc963
|
2023-10-10 06:53:34 +02:00
|
|
|
compilerNames.ghc981
|
2023-03-18 21:07:20 +01:00
|
|
|
] released;
|
|
|
|
hlint = lib.subtractLists [
|
2023-09-27 01:13:19 +02:00
|
|
|
compilerNames.ghc963
|
2023-10-10 06:53:34 +02:00
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
|
|
|
hpack = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
2023-03-18 21:07:20 +01:00
|
|
|
] released;
|
2021-12-21 15:31:51 +01:00
|
|
|
hsdns = released;
|
|
|
|
jailbreak-cabal = released;
|
2023-10-10 06:53:34 +02:00
|
|
|
language-nix = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
2023-07-03 10:32:22 +02:00
|
|
|
large-hashable = [
|
|
|
|
compilerNames.ghc928
|
|
|
|
];
|
2021-12-21 15:31:51 +01:00
|
|
|
nix-paths = released;
|
2023-10-10 06:53:34 +02:00
|
|
|
titlecase = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
2021-12-21 15:31:51 +01:00
|
|
|
ghc-api-compat = [
|
2022-09-21 17:03:11 +02:00
|
|
|
compilerNames.ghc8107
|
|
|
|
compilerNames.ghc902
|
2021-12-21 15:31:51 +01:00
|
|
|
];
|
2022-02-18 15:06:51 +01:00
|
|
|
ghc-bignum = [
|
2022-09-21 17:03:11 +02:00
|
|
|
compilerNames.ghc8107
|
2022-02-18 15:06:51 +01:00
|
|
|
];
|
2023-10-10 06:53:34 +02:00
|
|
|
ghc-lib = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
|
|
|
ghc-lib-parser = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
|
|
|
ghc-lib-parser-ex = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
2023-07-25 13:01:20 +02:00
|
|
|
ghc-source-gen = [
|
|
|
|
# Feel free to remove these as they break,
|
|
|
|
# ghc-source-gen currently doesn't support GHC 9.4
|
|
|
|
compilerNames.ghc8107
|
|
|
|
compilerNames.ghc902
|
|
|
|
compilerNames.ghc928
|
|
|
|
];
|
2023-10-15 00:47:25 +02:00
|
|
|
ghc-tags = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
2023-10-10 06:53:34 +02:00
|
|
|
hashable = lib.subtractLists [
|
|
|
|
compilerNames.ghc981
|
|
|
|
] released;
|
2023-07-01 13:57:38 +02:00
|
|
|
primitive = released;
|
2022-05-31 14:42:54 +02:00
|
|
|
weeder = [
|
2022-09-21 17:03:11 +02:00
|
|
|
compilerNames.ghc8107
|
|
|
|
compilerNames.ghc902
|
2022-11-07 15:25:37 +01:00
|
|
|
compilerNames.ghc925
|
2023-02-18 18:34:10 +01:00
|
|
|
compilerNames.ghc926
|
2023-02-28 23:16:54 +01:00
|
|
|
compilerNames.ghc927
|
2023-05-27 10:18:10 +02:00
|
|
|
compilerNames.ghc928
|
2023-04-20 17:50:25 +02:00
|
|
|
compilerNames.ghc945
|
2023-08-08 12:19:53 +02:00
|
|
|
compilerNames.ghc946
|
2023-08-30 16:18:57 +02:00
|
|
|
compilerNames.ghc947
|
2023-12-20 10:51:32 +01:00
|
|
|
compilerNames.ghc948
|
2023-09-27 01:13:19 +02:00
|
|
|
compilerNames.ghc963
|
2022-05-31 14:42:54 +02:00
|
|
|
];
|
2021-05-08 18:27:47 +02:00
|
|
|
})
|
|
|
|
{
|
|
|
|
mergeable = pkgs.releaseTools.aggregate {
|
|
|
|
name = "haskell-updates-mergeable";
|
|
|
|
meta = {
|
|
|
|
description = ''
|
|
|
|
Critical haskell packages that should work at all times,
|
|
|
|
serves as minimum requirement for an update merge
|
|
|
|
'';
|
|
|
|
maintainers = lib.teams.haskell.members;
|
|
|
|
};
|
2023-03-29 07:39:14 +02:00
|
|
|
constituents =
|
|
|
|
let
|
|
|
|
# Filter out all Darwin derivations. We don't want flakey Darwin
|
|
|
|
# derivations and flakey Hydra Darwin builders to block the
|
|
|
|
# mergeable job from successfully building.
|
|
|
|
filterInLinux =
|
|
|
|
lib.filter (drv: drv.system == "x86_64-linux" || drv.system == "aarch64-linux");
|
|
|
|
in
|
|
|
|
filterInLinux
|
|
|
|
(accumulateDerivations [
|
|
|
|
# haskell specific tests
|
|
|
|
jobs.tests.haskell
|
|
|
|
# important top-level packages
|
|
|
|
jobs.cabal-install
|
|
|
|
jobs.cabal2nix
|
|
|
|
jobs.cachix
|
|
|
|
jobs.darcs
|
|
|
|
jobs.haskell-language-server
|
|
|
|
jobs.hledger
|
|
|
|
jobs.hledger-ui
|
|
|
|
jobs.hpack
|
|
|
|
jobs.niv
|
|
|
|
jobs.pandoc
|
|
|
|
jobs.stack
|
|
|
|
jobs.stylish-haskell
|
|
|
|
# important haskell (library) packages
|
|
|
|
jobs.haskellPackages.cabal-plan
|
|
|
|
jobs.haskellPackages.distribution-nixpkgs
|
|
|
|
jobs.haskellPackages.hackage-db
|
|
|
|
jobs.haskellPackages.xmonad
|
|
|
|
jobs.haskellPackages.xmonad-contrib
|
|
|
|
# haskell packages maintained by @peti
|
|
|
|
# imported from the old hydra jobset
|
|
|
|
jobs.haskellPackages.hopenssl
|
|
|
|
jobs.haskellPackages.hsemail
|
|
|
|
jobs.haskellPackages.hsyslog
|
|
|
|
]);
|
2021-05-01 18:00:40 +02:00
|
|
|
};
|
2021-05-08 18:27:47 +02:00
|
|
|
maintained = pkgs.releaseTools.aggregate {
|
|
|
|
name = "maintained-haskell-packages";
|
|
|
|
meta = {
|
|
|
|
description = "Aggregate jobset of all haskell packages with a maintainer";
|
|
|
|
maintainers = lib.teams.haskell.members;
|
|
|
|
};
|
|
|
|
constituents = accumulateDerivations
|
|
|
|
(builtins.map
|
|
|
|
(name: jobs.haskellPackages."${name}")
|
|
|
|
(maintainedPkgNames pkgs.haskellPackages));
|
2021-05-01 23:37:42 +02:00
|
|
|
};
|
2021-07-18 08:00:58 +02:00
|
|
|
|
|
|
|
muslGHCs = pkgs.releaseTools.aggregate {
|
|
|
|
name = "haskell-pkgsMusl-ghcs";
|
|
|
|
meta = {
|
|
|
|
description = "GHCs built with musl";
|
|
|
|
maintainers = with lib.maintainers; [
|
|
|
|
nh2
|
|
|
|
];
|
|
|
|
};
|
|
|
|
constituents = accumulateDerivations [
|
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc8102Binary
|
2021-09-19 15:08:51 +02:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc8107Binary
|
2022-09-21 17:03:11 +02:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc8107
|
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc902
|
2022-11-07 15:25:37 +01:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc925
|
2023-02-18 18:34:10 +01:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc926
|
2023-02-28 23:16:54 +01:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc927
|
2023-05-27 10:18:10 +02:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc928
|
2021-09-26 21:08:13 +02:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghcHEAD
|
2022-09-21 17:03:11 +02:00
|
|
|
jobs.pkgsMusl.haskell.compiler.integer-simple.ghc8107
|
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc902
|
2022-11-07 15:25:37 +01:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc925
|
2023-02-18 18:34:10 +01:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc926
|
2023-02-28 23:16:54 +01:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc927
|
2023-05-27 10:18:10 +02:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc928
|
2021-09-26 21:08:13 +02:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD
|
2021-07-18 08:00:58 +02:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-05-22 15:05:10 +02:00
|
|
|
staticHaskellPackages = pkgs.releaseTools.aggregate {
|
|
|
|
name = "static-haskell-packages";
|
|
|
|
meta = {
|
|
|
|
description = "Static haskell builds using the pkgsStatic infrastructure";
|
|
|
|
maintainers = [
|
|
|
|
lib.maintainers.sternenseemann
|
|
|
|
lib.maintainers.rnhmjoj
|
|
|
|
];
|
|
|
|
};
|
2021-07-19 06:49:24 +02:00
|
|
|
constituents = accumulateDerivations [
|
2023-12-20 11:02:08 +01:00
|
|
|
jobs.pkgsStatic.haskell.packages.native-bignum.ghc948 # non-hadrian
|
2022-04-29 11:21:18 +02:00
|
|
|
jobs.pkgsStatic.haskellPackages
|
2023-12-20 10:59:08 +01:00
|
|
|
jobs.pkgsStatic.haskell.packages.native-bignum.ghc981
|
2021-05-25 12:38:30 +02:00
|
|
|
];
|
2021-05-22 15:05:10 +02:00
|
|
|
};
|
2021-05-08 18:27:47 +02:00
|
|
|
}
|
2021-05-09 01:49:17 +02:00
|
|
|
];
|
2021-05-01 18:00:40 +02:00
|
|
|
|
|
|
|
in jobs
|