Skip to content

Commit

Permalink
Update flake.nix to make GHC 9.10.1 and GHC 9.8.2 available (#2810)
Browse files Browse the repository at this point in the history
* Update GHC 9.6.2 to 9.6.6.

* Enable GHC 9.8.2 and remove GHC 9.0.2.

* Export ghcVersion from flake.nix.

* Remove Hackage calls for packages already in nixpkgs.

* Add GHC 9.10.1.

* Add comments to overlays.

* Make GHC 9.10 the default in flake.nix.

* Remove commented code.
  • Loading branch information
diegodiv authored Feb 10, 2025
1 parent fbd486e commit a50b496
Show file tree
Hide file tree
Showing 7 changed files with 118 additions and 72 deletions.
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=";
} { });
}
23 changes: 9 additions & 14 deletions nix/overlay-ghc962.nix → nix/overlay-ghc96.nix
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
{ 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);

# Use a branch with changes to support GHC 9.6.1.
hint =
Expand All @@ -25,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: 0 additions & 2 deletions nix/overlay.nix
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ let
"ghc-typelits-natnormalise"
"${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="; } {};
};

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

0 comments on commit a50b496

Please sign in to comment.