Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update flake.nix to make GHC 9.10,1 and GHC 9.8.2 available #2810

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@
# The versions of GHC that we want to be able to build / develop against
# within the nix environment. Since nix is lazy, only derivations for
# versions of GHC which are used are actually evaluated.
ghcVersions = [ "ghc902" "ghc962" ];
ghcVersions = [ "ghc96" "ghc98" "ghc910" ];

# We pick a single version of GHC to use by default within nix. This is
# probably cleaner than always having N copies of each package / app and
# being forced to refer to them by their GHC version.
defaultGhcVersion = "ghc962";
defaultGhcVersion = "ghc910";

# Overlays are not per-system, so let's only compute them once.
# For each version of GHC we produce a `pkgs.clashPackages-ghcVER`, e.g.
Expand Down Expand Up @@ -83,6 +83,9 @@
in
assert pkgs.lib.asserts.assertOneOf "defaultGhcVersion" defaultGhcVersion ghcVersions;
{
# Export the variable so that other flakes can use it.
ghcVersion = defaultGhcVersion;

packages = {
inherit (pkgs."clashPackages-${defaultGhcVersion}")
clash-benchmark
Expand Down
33 changes: 0 additions & 33 deletions nix/overlay-ghc902.nix

This file was deleted.

60 changes: 60 additions & 0 deletions nix/overlay-ghc910.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{ pkgs }:
final: prev:
let
inherit (pkgs.haskell.lib) dontCheck doJailbreak markUnbroken;
in
{
# Use an older version than the default in nixpkgs. Since rewrite-inspector
# is basically abandonware it catches fire with brick 1.0+.
brick = doJailbreak prev.brick_0_70_1;

# brick 0.70.1 requires vty < 6.0.
vty = doJailbreak (prev.callHackage "vty" "5.39" { });

# Relies on older versions of some libraries.
hint = doJailbreak prev.hint;

# Marked as broken in nixpkgs, since it specifies much older dependencies
# than the defaults in nixpkgs.
rewrite-inspector = doJailbreak (markUnbroken prev.rewrite-inspector);

# Requires some old versions of libraries, but still works.
derive-storable-plugin = doJailbreak prev.derive-storable-plugin;

# Marken as broken, but compiles anyway.
hedgehog-fakedata = doJailbreak (markUnbroken prev.hedgehog-fakedata);

# Fails on GHC 9.10 with:
# library/Text/Regex/PCRE/Heavy.hs:123: failure in expression `head $ scan [re|\s*entry (\d+) (\w+)\s*&?|] (" entry 1 hello &entry 2 hi" :: String)'
# expected: (" entry 1 hello &",["1","hello"])
# but got: <interactive>:55:1: warning: [GHC-63394] [-Wx-partial]
# ^
# In the use of ‘head’
# (imported from Prelude.Compat, but defined in GHC.Internal.List):
# "This is a partial function, it throws an error on empty lists. Use pattern matching, 'Data.List.uncons' or 'Data.Maybe.listToMaybe' instead. Consider refactoring to use "Data.List.NonEmpty"."
# (" entry 1 hello &",["1","hello"])

pcre-heavy = dontCheck prev.pcre-heavy;

# Relies on older versions of text.
string-random = doJailbreak prev.string-random;

# We need the newest version from nixpkgs for these packages.
singletons-base = prev.singletons-base_3_4;

microstache = prev.microstache_1_0_3;

th-desugar = prev.th-desugar_1_17;

singletons-th = prev.singletons-th_3_4;

# nixplgs doesn't include revision 1, changing dependency on template-haskell.
string-interpolate = pkgs.haskell.lib.compose.overrideCabal (drv: {
revision = "1";
editedCabalFile = "sha256-oh0tR+LDFcVzQnm4kSrmhAU+P7wdai536d72Cvhzipg=";
}) (prev.callHackageDirect {
pkg = "string-interpolate";
ver = "0.3.4.0";
sha256 = "sha256-KA8P6cc6N7pZ9/ay3edcEGx4vpKtp+EY7tn8U1NrbG8=";
} { });
}
20 changes: 6 additions & 14 deletions nix/overlay-ghc962.nix → nix/overlay-ghc96.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
{ pkgs }:
final: prev:
let
inherit (pkgs.haskell.lib) doJailbreak dontCheck markUnbroken;
inherit (pkgs.haskell.lib) doJailbreak markUnbroken;
in
{
# Use an older version than the default in nixpkgs. Since rewrite-inspector
# is basically abandonware it catches fire with brick 1.0+.
brick = doJailbreak prev.brick_0_70_1;

vty = prev.callHackage "vty" "5.39" { };

# Marked as broken in nixpkgs, since it needs on a newer hashable than the
# .cabal file currently uploaded to hackage.
concurrent-supply = doJailbreak (markUnbroken prev.concurrent-supply);
Expand All @@ -28,25 +30,15 @@ in
# than the defaults in nixpkgs.
rewrite-inspector = doJailbreak (markUnbroken prev.rewrite-inspector);

# We want a version that matches with singletons-th, but the tests in here
# are also a bit flaky since GHC 9.6 isn't officially supported.
singletons-base = dontCheck prev.singletons-base_3_2;

# Use a newer version than the default in nixpkgs.
singletons-th = prev.singletons-th_3_2;

# Needs a newer text than the .cabal file currently uploaded to hackage.
string-qq = doJailbreak prev.string-qq;

# Needs a newer version than the default in nixpkgs.
th-desugar = prev.th-desugar_1_15;

# Needs a newer base than the .cabal file currently uploaded to hackage.
vector-binary-instances = doJailbreak prev.vector-binary-instances;

# Use an older version than the default in nixpkgs.
th-abstraction = prev.th-abstraction_0_5_0_0;

# type-errors 0.2.0.2 is bounded on doctest >=0.16.0.1 && <0.22
doctest = prev.callHackage "doctest" "0.21.1" { };

# Marken as broken, but compiles anyway.
hedgehog-fakedata = doJailbreak (markUnbroken prev.hedgehog-fakedata);
}
23 changes: 23 additions & 0 deletions nix/overlay-ghc98.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{ pkgs }:
final: prev:
let
inherit (pkgs.haskell.lib) doJailbreak markUnbroken;
in
{
# Use an older version than the default in nixpkgs. Since rewrite-inspector
# is basically abandonware it catches fire with brick 1.0+.
brick = doJailbreak prev.brick_0_70_1;

# brick 0.70.1 requires vty < 6.0.
vty = doJailbreak (prev.callHackage "vty" "5.39" { });

# Marked as broken in nixpkgs, since it specifies much older dependencies
# than the defaults in nixpkgs.
rewrite-inspector = doJailbreak (markUnbroken prev.rewrite-inspector);

# Requires some old versions of libraries, but still works.
derive-storable-plugin = doJailbreak prev.derive-storable-plugin;

# Marken as broken, but compiles anyway.
hedgehog-fakedata = doJailbreak (markUnbroken prev.hedgehog-fakedata);
}
2 changes: 1 addition & 1 deletion nix/overlay.nix
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ let
"${ghc-typelits-natnormalise}"
{ };
# doctest-parallel = hprev.callHackage "doctest-parallel" "0.3.1" { };
doctest-parallel = hprev.callHackageDirect { pkg = "doctest-parallel"; ver = "0.3.1"; sha256 = "sha256-j0mk4RTEau6Cl90E8vMWZiA/ldRRurtLSYbGGE+q/vk="; } {};
# doctest-parallel = hprev.callHackageDirect { pkg = "doctest-parallel"; ver = "0.3.1"; sha256 = "sha256-j0mk4RTEau6Cl90E8vMWZiA/ldRRurtLSYbGGE+q/vk="; } {};
};

# An overlay with the packages in this repository.
Expand Down