nixos-module/overlay.nix

94 lines
3.2 KiB
Nix
Raw Normal View History

2024-03-18 21:26:45 +00:00
{ lix, versionSuffix ? "" }:
2024-03-07 19:27:15 +00:00
final: prev:
let
boehmgc-patched = ((final.boehmgc.override {
enableLargeConfig = true;
}).overrideAttrs (o: {
# cherrypick: boehmgc: disable tests on aarch64-linux
# https://github.com/NixOS/nixpkgs/pull/309418
doCheck = !((final.stdenv.isDarwin && final.stdenv.isx86_64) || (final.stdenv.isLinux && final.stdenv.isAarch64));
2024-03-07 19:27:15 +00:00
patches = (o.patches or [ ]) ++ [
# for clown reasons this version is newer than the one in lix, we should
# fix this and update our nixpkgs pin
(prev.path + "/pkgs/tools/package-management/nix/patches/boehmgc-coroutine-sp-fallback.patch")
] ++ final.lib.optionals (final.lib.versionOlder o.version "8.2.6") [
2024-03-07 19:27:15 +00:00
# https://github.com/ivmai/bdwgc/pull/586
(builtins.path { path = lix + "/boehmgc-traceable_allocator-public.diff"; name = "boehmgc-traceable_allocator-public.patch"; })
2024-03-07 19:27:15 +00:00
];
})
);
lixFunctionArgs = builtins.functionArgs (import (lix + "/package.nix"));
# fix up build-release-notes being required in older versions of Lix.
lixPackageBuildReleaseNotes =
if lixFunctionArgs.build-release-notes or true
then { }
else { build-release-notes = null; };
# This is kind of scary to not override the nix version to pretend to be
# 2.18 since nixpkgs can introduce new breakage in its Nix unstable CLI
# usage.
# https://github.com/nixos/nixpkgs/blob/6afb255d976f85f3359e4929abd6f5149c323a02/nixos/modules/config/nix.nix#L121
lixPkg = final.callPackage (lix + "/package.nix") ({
versionSuffix = "-lix${versionSuffix}";
boehmgc-nix = boehmgc-patched;
} // lixPackageBuildReleaseNotes);
# These packages depend on Nix features that Lix does not support
overridelist_2_18 = [
2024-05-08 14:50:45 +00:00
"attic-client"
"devenv"
2024-05-08 14:50:45 +00:00
"nix-du"
"nix-init"
"nix-prefetch-git"
"nixos-option"
"nurl"
"prefetch-yarn-deps" # force these onto upstream so we are not regularly rebuilding electron
];
override_2_18 = prev.lib.genAttrs overridelist_2_18 (
name: prev.${name}.override {
nix = final.nixVersions.nix_2_18_upstream;
});
inherit (prev) lib;
prefetch-npm-deps-args = lib.functionArgs prev.prefetch-npm-deps.override;
2024-03-07 19:27:15 +00:00
in
override_2_18 //
2024-03-07 19:27:15 +00:00
{
2024-04-16 03:06:52 +00:00
# used for things that one wouldn't necessarily want to update, but we
# nevertheless shove it in the overlay and fixed-point it in case one *does*
# want to do that.
lix-sources = import ./pins.nix;
2024-04-16 03:06:52 +00:00
2024-03-07 19:38:40 +00:00
nixVersions = prev.nixVersions // rec {
2024-03-07 19:27:15 +00:00
# FIXME: do something less scuffed
nix_2_18 = lixPkg;
2024-03-07 19:38:40 +00:00
stable = nix_2_18;
2024-03-07 20:11:49 +00:00
nix_2_18_upstream = prev.nixVersions.nix_2_18;
};
2024-04-16 03:06:52 +00:00
nix-eval-jobs = (prev.nix-eval-jobs.override {
# lix
nix = final.nixVersions.nix_2_18;
}).overrideAttrs (old: {
# FIXME: should this be patches instead?
src = final.lix-sources.nix-eval-jobs;
mesonBuildType = "debugoptimized";
ninjaFlags = old.ninjaFlags or [ ] ++ [ "-v" ];
});
# support both having and missing https://github.com/NixOS/nixpkgs/pull/304913
prefetch-npm-deps =
if (prefetch-npm-deps-args ? nix) || (prefetch-npm-deps-args == {})
then prev.prefetch-npm-deps.override {
nix = final.nixVersions.nix_2_18_upstream;
}
else prev.prefetch-npm-deps;
nix-doc = prev.callPackage ./nix-doc/package.nix { withPlugin = false; };
2024-03-07 19:27:15 +00:00
}