2021-05-01 16:00:40 +00:00
|
|
|
/*
|
2021-05-15 02:49:00 +00: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 16:00:40 +00:00
|
|
|
To debug this expression you can use `hydra-eval-jobs` from
|
2024-08-22 12:57:02 +00:00
|
|
|
`pkgs.hydra` which prints the jobset description
|
2021-05-01 16:00:40 +00:00
|
|
|
to `stdout`:
|
|
|
|
|
|
|
|
$ hydra-eval-jobs -I . pkgs/top-level/release-haskell.nix
|
|
|
|
*/
|
2023-03-10 13:43:00 +00:00
|
|
|
{ supportedSystems ? [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ] }:
|
2021-05-01 16:00:40 +00:00
|
|
|
|
|
|
|
let
|
|
|
|
|
|
|
|
releaseLib = import ./release-lib.nix {
|
|
|
|
inherit supportedSystems;
|
|
|
|
};
|
|
|
|
|
|
|
|
inherit (releaseLib)
|
2021-07-19 04:49:24 +00:00
|
|
|
lib
|
2021-05-01 16:00:40 +00:00
|
|
|
mapTestOn
|
2021-07-19 04:49:24 +00:00
|
|
|
packagePlatforms
|
|
|
|
pkgs
|
2021-05-01 16:00:40 +00:00
|
|
|
;
|
|
|
|
|
2021-07-19 04:49:24 +00:00
|
|
|
# Helper function which traverses a (nested) set
|
2021-05-01 16:00:40 +00: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 04:49:24 +00: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 16:00:40 +00:00
|
|
|
accumulateDerivations = jobList:
|
|
|
|
lib.concatMap (
|
|
|
|
attrs:
|
|
|
|
if lib.isDerivation attrs
|
|
|
|
then [ attrs ]
|
2023-02-14 18:11:59 +00:00
|
|
|
else lib.optionals (lib.isAttrs attrs) (accumulateDerivations (lib.attrValues attrs))
|
2021-05-01 16:00:40 +00:00
|
|
|
) jobList;
|
|
|
|
|
|
|
|
# names of all subsets of `pkgs.haskell.packages`
|
2023-03-24 01:39:15 +00:00
|
|
|
#
|
|
|
|
# compilerNames looks like the following:
|
|
|
|
#
|
|
|
|
# ```
|
|
|
|
# {
|
|
|
|
# ghc810 = "ghc810";
|
2024-01-25 13:32:55 +00:00
|
|
|
# ghc8107Binary = "ghc8107Binary";
|
2023-03-24 01:39:15 +00:00
|
|
|
# ghc8107 = "ghc8107";
|
|
|
|
# ghc924 = "ghc924";
|
|
|
|
# ...
|
|
|
|
# }
|
|
|
|
# ```
|
2021-05-01 16:00:40 +00:00
|
|
|
compilerNames = lib.mapAttrs (name: _: name) pkgs.haskell.packages;
|
|
|
|
|
|
|
|
# list of all compilers to test specific packages on
|
2021-10-12 12:09:47 +00:00
|
|
|
released = with compilerNames; [
|
2022-09-21 14:23:37 +00:00
|
|
|
ghc8107
|
|
|
|
ghc902
|
2022-11-07 14:25:37 +00:00
|
|
|
ghc925
|
2023-02-18 17:34:10 +00:00
|
|
|
ghc926
|
2023-02-28 22:16:54 +00:00
|
|
|
ghc927
|
2023-05-27 08:18:10 +00:00
|
|
|
ghc928
|
2023-04-20 15:50:25 +00:00
|
|
|
ghc945
|
2023-08-08 10:19:53 +00:00
|
|
|
ghc946
|
2023-08-30 14:18:57 +00:00
|
|
|
ghc947
|
2023-12-20 09:51:32 +00:00
|
|
|
ghc948
|
2023-09-26 23:13:19 +00:00
|
|
|
ghc963
|
2024-01-16 20:40:36 +00:00
|
|
|
ghc964
|
2024-04-16 10:05:53 +00:00
|
|
|
ghc965
|
2024-07-12 18:18:08 +00:00
|
|
|
ghc966
|
2023-10-10 04:53:34 +00:00
|
|
|
ghc981
|
2024-02-26 19:18:28 +00:00
|
|
|
ghc982
|
2024-05-12 05:02:43 +00:00
|
|
|
ghc9101
|
2021-05-01 16:00:40 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
# packagePlatforms applied to `haskell.packages.*`
|
2023-03-24 01:39:15 +00: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 16:00:40 +00: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 01:39:15 +00: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 16:00:40 +00:00
|
|
|
versionedCompilerJobs = config: mapTestOn {
|
|
|
|
haskell.packages =
|
2023-03-24 02:32:47 +00: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 02:43:31 +00:00
|
|
|
#
|
|
|
|
# onlyConfigJobs will also remove all platforms from a job that are not
|
|
|
|
# supported by the GHC it is compiled with.
|
2023-03-24 02:32:47 +00:00
|
|
|
onlyConfigJobs = ghc: jobs:
|
2023-03-24 02:43:31 +00: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 02:32:47 +00:00
|
|
|
in
|
|
|
|
lib.mapAttrs onlyConfigJobs compilerPlatforms;
|
2021-05-01 16:00:40 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
# hydra jobs for `pkgs` of which we import a subset of
|
2021-05-04 13:38:20 +00:00
|
|
|
pkgsPlatforms = packagePlatforms pkgs;
|
2021-05-01 16:00:40 +00:00
|
|
|
|
2021-05-01 21:37:42 +00: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 16:27:47 +00:00
|
|
|
recursiveUpdateMany = builtins.foldl' lib.recursiveUpdate {};
|
2021-05-01 16:00:40 +00:00
|
|
|
|
2021-07-18 09:15:49 +00: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 06:18:30 +00:00
|
|
|
removeMany = itemsToRemove: list: lib.foldr lib.remove list itemsToRemove;
|
|
|
|
|
2021-07-18 09:15:49 +00: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 06:18:30 +00:00
|
|
|
removePlatforms = platformsToRemove: packageSet:
|
|
|
|
lib.mapAttrsRecursive
|
|
|
|
(_: val:
|
|
|
|
if lib.isList val
|
|
|
|
then removeMany platformsToRemove val
|
|
|
|
else val
|
|
|
|
)
|
|
|
|
packageSet;
|
2021-05-22 13:05:10 +00:00
|
|
|
|
2021-05-08 23:49:17 +00:00
|
|
|
jobs = recursiveUpdateMany [
|
|
|
|
(mapTestOn {
|
2021-05-08 16:27:47 +00:00
|
|
|
haskellPackages = packagePlatforms pkgs.haskellPackages;
|
2022-04-10 23:36:54 +00: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 15:20:16 +00:00
|
|
|
}));
|
2021-05-01 16:00:40 +00:00
|
|
|
|
2021-07-13 13:19:36 +00:00
|
|
|
tests.haskell = packagePlatforms pkgs.tests.haskell;
|
2021-05-08 16:27:47 +00:00
|
|
|
|
2022-05-19 06:37:08 +00:00
|
|
|
nixosTests = {
|
|
|
|
inherit (packagePlatforms pkgs.nixosTests)
|
|
|
|
agda
|
|
|
|
xmonad
|
|
|
|
xmonad-xdg-autostart
|
|
|
|
;
|
|
|
|
};
|
|
|
|
|
2021-07-15 10:35:15 +00:00
|
|
|
agdaPackages = packagePlatforms pkgs.agdaPackages;
|
|
|
|
|
2021-05-08 16:27:47 +00:00
|
|
|
# top-level packages that depend on haskellPackages
|
|
|
|
inherit (pkgsPlatforms)
|
|
|
|
agda
|
2024-06-07 13:01:29 +00:00
|
|
|
alex
|
2021-05-08 16:27:47 +00:00
|
|
|
arion
|
|
|
|
bench
|
|
|
|
blucontrol
|
|
|
|
cabal-install
|
|
|
|
cabal2nix
|
|
|
|
cachix
|
2024-04-09 20:41:25 +00:00
|
|
|
# carp broken on 2024-04-09
|
2024-06-07 13:01:29 +00:00
|
|
|
changelog-d
|
|
|
|
cornelis
|
2021-05-08 16:27:47 +00:00
|
|
|
cedille
|
|
|
|
client-ip-echo
|
|
|
|
darcs
|
|
|
|
dconf2nix
|
|
|
|
dhall
|
|
|
|
dhall-bash
|
|
|
|
dhall-docs
|
|
|
|
dhall-lsp-server
|
|
|
|
dhall-json
|
|
|
|
dhall-nix
|
2024-06-07 13:01:29 +00:00
|
|
|
dhall-nixpkgs
|
|
|
|
dhall-yaml
|
2021-05-08 16:27:47 +00:00
|
|
|
diagrams-builder
|
2024-06-07 13:01:29 +00:00
|
|
|
echidna
|
2021-05-08 16:27:47 +00:00
|
|
|
elm2nix
|
2022-11-11 17:03:41 +00:00
|
|
|
emanote
|
2021-05-08 16:27:47 +00:00
|
|
|
fffuu
|
|
|
|
futhark
|
|
|
|
ghcid
|
|
|
|
git-annex
|
|
|
|
git-brunch
|
|
|
|
gitit
|
|
|
|
glirc
|
|
|
|
hadolint
|
2024-06-07 13:01:29 +00:00
|
|
|
happy
|
2021-05-08 16:27:47 +00:00
|
|
|
haskell-ci
|
|
|
|
haskell-language-server
|
|
|
|
hasura-graphql-engine
|
|
|
|
hci
|
|
|
|
hercules-ci-agent
|
|
|
|
hinit
|
|
|
|
hedgewars
|
|
|
|
hledger
|
2021-09-26 13:10:31 +00:00
|
|
|
hledger-check-fancyassertions
|
2021-05-08 16:27:47 +00:00
|
|
|
hledger-iadd
|
|
|
|
hledger-interest
|
|
|
|
hledger-ui
|
|
|
|
hledger-web
|
|
|
|
hlint
|
|
|
|
hpack
|
2024-06-07 13:01:29 +00:00
|
|
|
hscolour
|
2021-05-08 16:27:47 +00:00
|
|
|
icepeak
|
|
|
|
ihaskell
|
2022-01-21 12:40:28 +00:00
|
|
|
jacinda
|
2021-05-08 16:27:47 +00:00
|
|
|
jl
|
2024-06-07 13:01:29 +00:00
|
|
|
json2yaml
|
2021-05-08 16:27:47 +00:00
|
|
|
koka
|
|
|
|
krank
|
|
|
|
lambdabot
|
2022-04-20 10:03:29 +00:00
|
|
|
lhs2tex
|
2021-05-08 16:27:47 +00:00
|
|
|
madlang
|
|
|
|
matterhorn
|
2024-04-18 14:32:02 +00:00
|
|
|
mkjson
|
2021-05-08 16:27:47 +00:00
|
|
|
mueval
|
2022-04-20 07:56:35 +00:00
|
|
|
naproche
|
2021-05-08 16:27:47 +00:00
|
|
|
niv
|
|
|
|
nix-delegate
|
|
|
|
nix-deploy
|
|
|
|
nix-diff
|
|
|
|
nix-linter
|
|
|
|
nix-output-monitor
|
|
|
|
nix-script
|
|
|
|
nix-tree
|
|
|
|
nixfmt
|
2024-04-22 09:12:09 +00:00
|
|
|
nixfmt-classic
|
|
|
|
nixfmt-rfc-style
|
2021-05-08 16:27:47 +00:00
|
|
|
nota
|
2021-06-03 09:51:34 +00:00
|
|
|
nvfetcher
|
2024-08-24 08:05:33 +00:00
|
|
|
oama
|
2021-05-08 16:27:47 +00:00
|
|
|
ormolu
|
2024-10-04 16:15:13 +00:00
|
|
|
pakcs
|
2021-05-08 16:27:47 +00:00
|
|
|
pandoc
|
|
|
|
place-cursor-at
|
|
|
|
pinboard-notes-backup
|
|
|
|
pretty-simple
|
2024-06-07 13:01:29 +00:00
|
|
|
purenix
|
2021-05-08 16:27:47 +00:00
|
|
|
shake
|
|
|
|
shellcheck
|
2024-06-07 13:01:29 +00:00
|
|
|
shellcheck-minimal
|
2021-05-08 16:27:47 +00:00
|
|
|
sourceAndTags
|
|
|
|
spacecookie
|
|
|
|
spago
|
2024-02-10 17:11:36 +00:00
|
|
|
specup
|
2021-05-08 16:27:47 +00:00
|
|
|
splot
|
|
|
|
stack
|
|
|
|
stack2nix
|
|
|
|
stutter
|
|
|
|
stylish-haskell
|
|
|
|
taffybar
|
|
|
|
tamarin-prover
|
|
|
|
taskell
|
2022-10-15 15:49:02 +00:00
|
|
|
termonad
|
2021-05-08 16:27:47 +00:00
|
|
|
tldr-hs
|
|
|
|
tweet-hs
|
|
|
|
update-nix-fetchgit
|
2021-06-03 09:51:34 +00:00
|
|
|
uusi
|
2021-05-08 16:27:47 +00:00
|
|
|
uqm
|
|
|
|
uuagc
|
2024-03-16 22:55:22 +00:00
|
|
|
# vaultenv: broken by connection on 2024-03-16
|
2021-05-08 16:27:47 +00:00
|
|
|
wstunnel
|
|
|
|
xmobar
|
2022-07-14 12:28:32 +00:00
|
|
|
xmonadctl
|
2021-05-08 16:27:47 +00:00
|
|
|
xmonad-with-packages
|
|
|
|
zsh-git-prompt
|
|
|
|
;
|
2021-05-01 16:00:40 +00:00
|
|
|
|
2022-04-07 22:35:11 +00:00
|
|
|
# Members of the elmPackages set that are Haskell derivations
|
|
|
|
elmPackages = {
|
|
|
|
inherit (pkgsPlatforms.elmPackages)
|
|
|
|
elm
|
|
|
|
elm-format
|
|
|
|
elm-instrument
|
2024-06-06 09:48:15 +00:00
|
|
|
elmi-to-json
|
2022-04-07 22:35:11 +00:00
|
|
|
;
|
|
|
|
};
|
2021-07-18 06:14:30 +00:00
|
|
|
|
2021-07-18 06:17:02 +00:00
|
|
|
# GHCs linked to musl.
|
2024-09-09 09:47:55 +00:00
|
|
|
pkgsMusl =
|
2021-07-18 06:18:30 +00:00
|
|
|
removePlatforms
|
|
|
|
[
|
2021-07-24 12:12:00 +00: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 12:21:22 +00:00
|
|
|
"aarch64-darwin"
|
2021-07-18 06:18:30 +00:00
|
|
|
]
|
|
|
|
{
|
2024-09-09 09:47:55 +00:00
|
|
|
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.
|
|
|
|
ghc865Binary = {};
|
|
|
|
|
|
|
|
ghcjs = {};
|
|
|
|
ghcjs810 = {};
|
|
|
|
};
|
|
|
|
|
|
|
|
# Get some cache going for MUSL-enabled GHC.
|
|
|
|
haskellPackages =
|
|
|
|
{
|
|
|
|
inherit (packagePlatforms pkgs.pkgsMusl.haskellPackages)
|
|
|
|
hello
|
|
|
|
lens
|
|
|
|
random
|
|
|
|
;
|
|
|
|
};
|
2021-07-18 06:18:30 +00:00
|
|
|
};
|
|
|
|
|
2021-07-18 06:14:30 +00:00
|
|
|
# Test some statically linked packages to catch regressions
|
|
|
|
# and get some cache going for static compilation with GHC.
|
2023-12-20 10:02:08 +00:00
|
|
|
# Use native-bignum to avoid GMP linking problems (LGPL)
|
2022-04-29 09:21:18 +00:00
|
|
|
pkgsStatic =
|
2021-07-18 06:14:30 +00:00
|
|
|
removePlatforms
|
|
|
|
[
|
|
|
|
"aarch64-linux" # times out on Hydra
|
2023-03-12 12:21:22 +00:00
|
|
|
|
|
|
|
# Static doesn't work on darwin
|
|
|
|
"x86_64-darwin"
|
|
|
|
"aarch64-darwin"
|
2022-02-25 23:47:55 +00:00
|
|
|
] {
|
2022-04-29 09:21:18 +00:00
|
|
|
haskellPackages = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsStatic.haskellPackages)
|
2022-02-25 23:47:55 +00:00
|
|
|
hello
|
|
|
|
lens
|
|
|
|
random
|
2022-03-01 23:03:02 +00:00
|
|
|
QuickCheck
|
2022-04-29 09:21:18 +00:00
|
|
|
cabal2nix
|
2022-07-25 21:42:29 +00:00
|
|
|
terminfo # isn't bundled for cross
|
2022-04-29 13:27:02 +00:00
|
|
|
xhtml # isn't bundled for cross
|
2022-02-25 23:47:55 +00:00
|
|
|
;
|
|
|
|
};
|
|
|
|
|
2023-12-20 10:02:08 +00:00
|
|
|
haskell.packages.native-bignum.ghc948 = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc948)
|
2022-02-25 23:47:55 +00:00
|
|
|
hello
|
|
|
|
lens
|
|
|
|
random
|
2022-03-01 23:03:02 +00:00
|
|
|
QuickCheck
|
2022-04-29 09:21:18 +00:00
|
|
|
cabal2nix
|
2022-07-25 21:42:29 +00:00
|
|
|
terminfo # isn't bundled for cross
|
2022-04-29 13:27:02 +00:00
|
|
|
xhtml # isn't bundled for cross
|
2021-07-18 06:14:30 +00:00
|
|
|
;
|
2022-02-25 23:47:55 +00:00
|
|
|
};
|
2023-12-20 09:59:08 +00:00
|
|
|
|
2024-02-26 19:18:28 +00:00
|
|
|
haskell.packages.native-bignum.ghc982 = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsStatic.haskell.packages.native-bignum.ghc982)
|
2023-12-20 09:59:08 +00:00
|
|
|
hello
|
|
|
|
random
|
|
|
|
QuickCheck
|
|
|
|
terminfo # isn't bundled for cross
|
|
|
|
;
|
|
|
|
};
|
2021-07-18 06:14:30 +00:00
|
|
|
};
|
2023-01-05 14:34:56 +00:00
|
|
|
|
2024-09-19 12:01:13 +00:00
|
|
|
pkgsCross = {
|
|
|
|
ghcjs =
|
|
|
|
removePlatforms
|
|
|
|
[
|
|
|
|
# Hydra output size of 3GB is exceeded
|
|
|
|
"aarch64-linux"
|
|
|
|
]
|
|
|
|
{
|
|
|
|
haskellPackages = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskellPackages)
|
|
|
|
ghc
|
|
|
|
hello
|
|
|
|
microlens
|
|
|
|
;
|
|
|
|
};
|
2024-04-12 14:50:59 +00:00
|
|
|
|
2024-09-19 12:01:13 +00:00
|
|
|
haskell.packages.ghc98 = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghc98)
|
|
|
|
ghc
|
|
|
|
hello
|
|
|
|
microlens
|
|
|
|
;
|
|
|
|
};
|
|
|
|
|
|
|
|
haskell.packages.ghcHEAD = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsCross.ghcjs.haskell.packages.ghcHEAD)
|
|
|
|
ghc
|
|
|
|
hello
|
|
|
|
microlens
|
|
|
|
;
|
|
|
|
};
|
2023-01-15 20:23:21 +00:00
|
|
|
};
|
|
|
|
|
2024-09-19 12:01:13 +00:00
|
|
|
riscv64 = {
|
|
|
|
# Cross compilation of GHC
|
|
|
|
haskell.compiler = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsCross.riscv64.haskell.compiler)
|
|
|
|
# Our oldest GHC which still uses its own expression. 8.10.7 can
|
|
|
|
# theoretically be used to chain bootstrap all GHCs on riscv64
|
|
|
|
# which doesn't have official bindists.
|
|
|
|
ghc8107
|
|
|
|
# Latest GHC we are able to cross-compile.
|
|
|
|
ghc948
|
2023-01-15 20:23:21 +00:00
|
|
|
;
|
2023-02-19 11:17:23 +00:00
|
|
|
};
|
2024-09-19 12:01:13 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
aarch64-multiplatform = {
|
|
|
|
# Cross compilation of GHC
|
|
|
|
haskell.compiler = {
|
|
|
|
inherit (packagePlatforms pkgs.pkgsCross.aarch64-multiplatform.haskell.compiler)
|
|
|
|
# Uses a separate expression and LLVM backend for aarch64.
|
|
|
|
ghc8107
|
|
|
|
# Latest GHC we are able to cross-compile. Uses NCG backend.
|
|
|
|
ghc948
|
|
|
|
;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2021-05-08 23:49:17 +00:00
|
|
|
})
|
2021-05-08 16:27:47 +00: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 04:53:34 +00:00
|
|
|
cabal-install = lib.subtractLists [
|
2024-07-25 14:54:51 +00:00
|
|
|
# It is recommended to use pkgs.cabal-install instead of cabal-install
|
|
|
|
# from the package sets. Due to (transitively) requiring recent versions
|
|
|
|
# of core packages, it is not always reasonable to get cabal-install to
|
|
|
|
# work with older compilers.
|
|
|
|
compilerNames.ghc8107
|
|
|
|
compilerNames.ghc902
|
|
|
|
compilerNames.ghc925
|
|
|
|
compilerNames.ghc926
|
|
|
|
compilerNames.ghc927
|
|
|
|
compilerNames.ghc928
|
|
|
|
compilerNames.ghc945
|
|
|
|
compilerNames.ghc946
|
|
|
|
compilerNames.ghc947
|
|
|
|
compilerNames.ghc948
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
2024-07-19 20:12:08 +00:00
|
|
|
Cabal_3_10_3_0 = released;
|
|
|
|
Cabal-syntax_3_10_3_0 = released;
|
|
|
|
Cabal_3_12_1_0 = released;
|
|
|
|
Cabal-syntax_3_12_1_0 = released;
|
2023-10-10 04:53:34 +00:00
|
|
|
cabal2nix = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
|
|
|
cabal2nix-unstable = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
2023-07-03 10:31:30 +00:00
|
|
|
funcmp = released;
|
2023-03-18 20:07:20 +00:00
|
|
|
haskell-language-server = lib.subtractLists [
|
2023-10-06 15:51:51 +00:00
|
|
|
# Support ceased as of 2.3.0.0
|
2024-01-01 12:41:29 +00:00
|
|
|
compilerNames.ghc8107
|
2024-01-06 17:23:25 +00:00
|
|
|
# Support ceased as of 2.5.0.0
|
|
|
|
compilerNames.ghc902
|
2023-03-18 20:07:20 +00:00
|
|
|
] released;
|
|
|
|
hoogle = lib.subtractLists [
|
|
|
|
] released;
|
|
|
|
hlint = lib.subtractLists [
|
2024-03-16 21:42:22 +00:00
|
|
|
compilerNames.ghc902
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
|
|
|
hpack = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-03-18 20:07:20 +00:00
|
|
|
] released;
|
2021-12-21 14:31:51 +00:00
|
|
|
hsdns = released;
|
|
|
|
jailbreak-cabal = released;
|
2023-10-10 04:53:34 +00:00
|
|
|
language-nix = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
2023-07-03 08:32:22 +00:00
|
|
|
large-hashable = [
|
|
|
|
compilerNames.ghc928
|
|
|
|
];
|
2021-12-21 14:31:51 +00:00
|
|
|
nix-paths = released;
|
2023-10-10 04:53:34 +00:00
|
|
|
titlecase = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
2021-12-21 14:31:51 +00:00
|
|
|
ghc-api-compat = [
|
2022-09-21 15:03:11 +00:00
|
|
|
compilerNames.ghc8107
|
|
|
|
compilerNames.ghc902
|
2021-12-21 14:31:51 +00:00
|
|
|
];
|
2022-02-18 14:06:51 +00:00
|
|
|
ghc-bignum = [
|
2022-09-21 15:03:11 +00:00
|
|
|
compilerNames.ghc8107
|
2022-02-18 14:06:51 +00:00
|
|
|
];
|
2023-10-10 04:53:34 +00:00
|
|
|
ghc-lib = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
|
|
|
ghc-lib-parser = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
|
|
|
ghc-lib-parser-ex = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
2023-07-25 11:01:20 +00:00
|
|
|
ghc-source-gen = [
|
|
|
|
# Feel free to remove these as they break,
|
|
|
|
compilerNames.ghc8107
|
|
|
|
compilerNames.ghc902
|
|
|
|
compilerNames.ghc928
|
|
|
|
];
|
2024-06-04 12:51:22 +00:00
|
|
|
ghc-tags = lib.subtractLists [
|
|
|
|
compilerNames.ghc9101
|
|
|
|
] released;
|
2023-10-10 04:53:34 +00:00
|
|
|
hashable = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2023-10-10 04:53:34 +00:00
|
|
|
] released;
|
2024-05-13 15:16:02 +00:00
|
|
|
primitive = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2024-05-13 15:16:02 +00:00
|
|
|
] released;
|
2024-01-16 20:36:18 +00:00
|
|
|
weeder = lib.subtractLists [
|
2024-05-12 05:02:43 +00:00
|
|
|
compilerNames.ghc9101
|
2024-01-16 20:36:18 +00:00
|
|
|
] released;
|
2021-05-08 16:27:47 +00: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 05:39:14 +00:00
|
|
|
constituents =
|
2024-04-16 21:48:22 +00:00
|
|
|
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
|
2024-04-16 21:51:18 +00:00
|
|
|
jobs.shellcheck
|
2024-04-16 21:48:22 +00:00
|
|
|
# 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 16:00:40 +00:00
|
|
|
};
|
2021-05-08 16:27:47 +00: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 21:37:42 +00:00
|
|
|
};
|
2021-07-18 06:00:58 +00:00
|
|
|
|
|
|
|
muslGHCs = pkgs.releaseTools.aggregate {
|
|
|
|
name = "haskell-pkgsMusl-ghcs";
|
|
|
|
meta = {
|
|
|
|
description = "GHCs built with musl";
|
|
|
|
maintainers = with lib.maintainers; [
|
|
|
|
nh2
|
|
|
|
];
|
|
|
|
};
|
|
|
|
constituents = accumulateDerivations [
|
2021-09-19 13:08:51 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc8107Binary
|
2022-09-21 15:03:11 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc8107
|
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc902
|
2022-11-07 14:25:37 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc925
|
2023-02-18 17:34:10 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc926
|
2023-02-28 22:16:54 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc927
|
2023-05-27 08:18:10 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghc928
|
2021-09-26 19:08:13 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.ghcHEAD
|
2022-09-21 15:03:11 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.integer-simple.ghc8107
|
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc902
|
2022-11-07 14:25:37 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc925
|
2023-02-18 17:34:10 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc926
|
2023-02-28 22:16:54 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc927
|
2023-05-27 08:18:10 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghc928
|
2021-09-26 19:08:13 +00:00
|
|
|
jobs.pkgsMusl.haskell.compiler.native-bignum.ghcHEAD
|
2021-07-18 06:00:58 +00:00
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2021-05-22 13:05:10 +00: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 04:49:24 +00:00
|
|
|
constituents = accumulateDerivations [
|
2023-12-20 10:02:08 +00:00
|
|
|
jobs.pkgsStatic.haskell.packages.native-bignum.ghc948 # non-hadrian
|
2022-04-29 09:21:18 +00:00
|
|
|
jobs.pkgsStatic.haskellPackages
|
2024-02-26 19:18:28 +00:00
|
|
|
jobs.pkgsStatic.haskell.packages.native-bignum.ghc982
|
2021-05-25 10:38:30 +00:00
|
|
|
];
|
2021-05-22 13:05:10 +00:00
|
|
|
};
|
2021-05-08 16:27:47 +00:00
|
|
|
}
|
2021-05-08 23:49:17 +00:00
|
|
|
];
|
2021-05-01 16:00:40 +00:00
|
|
|
|
|
|
|
in jobs
|