snix/third_party/overlays/tvl.nix
Vincent Ambo d76d699a53 fix(3p/overlays): work around buildkite agent issues with nixpkgs
Buildkite introduced a weird check that determines whether the bootstrap agent
path (?) matches the binary that the agent was started from:

https://github.com/buildkite/agent/pull/3123

They did this to work around some internal development flow problems. However,
this check is toggled by whether or not the `buildNumber` compile-time variable
is set to the special `x` sentinel value.

In their publicly released binaries (which we do not use, of course), this is
set to some other value. In Nix builds they are at the default sentinel value,
causing crashes at startup because of the wrapper script not matching the binary
path:

```
buildkite-agent: fatal: check binary paths: mismatched buildkite-agent paths: host="/nix/store/rmp9g00bppi8yimr0ngnx6490w196in8-buildkite-agent-3.89.0/bin/.buildkite-agent-wrapped" bootstrap="/nix/store/rmp9g00bppi8yimr0ngnx6490w196in8-buildkite-agent-3.89.0/bin/buildkite-agent"
```

To work around this we just set the build "number" to `nix`.

Change-Id: I794861aeaf63764689148cae841ce56f88752186
Reviewed-on: https://cl.tvl.fyi/c/depot/+/13205
Autosubmit: tazjin <tazjin@tvl.su>
Reviewed-by: sterni <sternenseemann@systemli.org>
Tested-by: BuildkiteCI
2025-03-02 21:18:40 +00:00

225 lines
7.2 KiB
Nix

# This overlay is used to make TVL-specific modifications in the
# nixpkgs tree, where required.
{ lib, depot, localSystem, ... }:
self: super:
depot.nix.readTree.drvTargets {
nix_2_3 = (super.nix_2_3.override {
# flaky tests, long painful build, see https://github.com/NixOS/nixpkgs/pull/266443
withAWS = false;
}).overrideAttrs (_: {
# use TVL maintenance branch for 2.3, which has more fixes than upstream
CXXFLAGS = "--std=c++20 -g";
dontStrip = true;
src = self.fetchFromGitHub {
owner = "tvlfyi";
repo = "nix";
rev = "d516e2826128c09588535b67aa27fd3e24288b5f";
sha256 = "04yxxhhq4542gakfh2kylnhq9fagfzv63shrq0qvf8rajflwxr22";
};
});
nix = self.nix_2_3 // {
# avoid duplicate pipeline step
meta = self.nix_2_3.meta or { } // {
ci = self.nix_2_3.meta.ci or { } // {
skip = true;
};
};
};
nix_latest_stable = super.nix.override ({
# flaky tests, long painful build, see https://github.com/NixOS/nixpkgs/pull/266443
withAWS = false;
});
# see b/439; this fix will be upstreamed in nixpkgs
buildkite-agent = super.buildkite-agent.overrideAttrs (old: {
# once PR#386414 propagates here (& len(ldflags) = 2), we can delete this
ldflags = assert (builtins.length old.ldflags) == 1; old.ldflags ++ [
"-X github.com/buildkite/agent/v3/version.buildNumber=nix"
];
});
# No longer builds with Nix 2.3 after
# https://github.com/nixos/nixpkgs/commit/5f9d2d95721cdf20ace744f2db75ad70a7aedd3a
nixos-option = super.nixos-option.override {
nix = self.nix_latest_stable;
};
home-manager = super.home-manager.overrideAttrs (_: {
src = depot.third_party.sources.home-manager;
patches = [ ./patches/0001-home-environment-fix-compatibility-with-Nix-2.3.patch ];
version = "git-"
+ builtins.substring 0 7 depot.third_party.sources.home-manager.rev;
});
niri = super.niri.overrideAttrs (_: {
doCheck = false;
});
# Add our Emacs packages to the fixpoint
emacsPackagesFor = emacs: (
(super.emacsPackagesFor emacs).overrideScope (eself: esuper: {
tvlPackages = depot.tools.emacs-pkgs // depot.third_party.emacs;
# Use the notmuch from nixpkgs instead of from the Emacs
# overlay, to avoid versions being out of sync.
notmuch = super.notmuch.emacs;
# Build EXWM with the depot sources instead.
depotExwm = eself.callPackage depot.third_party.exwm.override { };
# Workaround for magit checking the git version at load time
magit = esuper.magit.overrideAttrs (_: {
propagatedNativeBuildInputs = [
self.git
];
});
# Pin xelb to a newer one until the new maintainers do a release.
xelb = eself.trivialBuild {
pname = "xelb";
version = "0.19-dev"; # invented version, last actual release was 0.18
src = self.fetchFromGitHub {
owner = "emacs-exwm";
repo = "xelb";
rev = "86089eba2de6c818bfa2fac075cb7ad876262798";
sha256 = "1mmlrd2zpcwiv8gh10y7lrpflnbmsycdascrxjr3bfcwa8yx7901";
};
};
# Override telega sources until MELPA updates in nixpkgs resume.
telega = esuper.telega.overrideAttrs (_: {
version = "0.8.291"; # unstable
src = self.fetchFromGitHub {
owner = "zevlg";
repo = "telega.el";
rev = "58b4963b292ceb723d665df100b519eb5a99c676";
sha256 = "1q3ydbm0jhrsyvvdn0mpmxvskq0l53jkh40a5hlx7i3qkinbhbry";
};
});
})
);
# dottime support for notmuch
notmuch = super.notmuch.overrideAttrs (old: {
passthru = old.passthru // {
patches = old.patches ++ [ ./patches/notmuch-dottime.patch ];
};
});
# Avoid builds of mkShell derivations in CI.
mkShell = super.lib.makeOverridable (args: (super.mkShell args).overrideAttrs (_: {
passthru = {
meta.ci.skip = true;
};
}));
crate2nix = super.crate2nix.overrideAttrs (old: {
patches = old.patches or [ ] ++ [
# TODO(Kranzes): Remove in next release.
./patches/crate2nix-0001-Fix-Use-mkDerivation-with-src-instead-of-runCommand.patch
# https://github.com/nix-community/crate2nix/pull/301
./patches/crate2nix-tests-debug.patch
];
});
evans = super.evans.overrideAttrs (old: {
patches = old.patches or [ ] ++ [
# add support for unix domain sockets
# https://github.com/ktr0731/evans/pull/680
./patches/evans-add-support-for-unix-domain-sockets.patch
];
});
# https://gcc.gnu.org/gcc-14/porting_to.html#warnings-as-errors
thttpd = super.thttpd.overrideAttrs (oldAttrs: {
NIX_CFLAGS_COMPILE = oldAttrs.NIX_CFLAGS_COMPILE or [ ] ++ [
"-Wno-error=implicit-int"
"-Wno-error=implicit-function-declaration"
];
});
# https://github.com/NixOS/nixpkgs/pull/329415/files
grpc-health-check = super.rustPlatform.buildRustPackage {
pname = "grpc-health-check";
version = "unstable-2022-08-19";
src = super.fetchFromGitHub {
owner = "paypizza";
repo = "grpc-health-check";
rev = "f61bb5e10beadc5ed53144cc540d66e19fc510bd";
hash = "sha256-nKut9c1HHIacdRcmvlXe0GrtkgCWN6sxJ4ImO0CIDdo=";
};
cargoHash = "sha256-lz+815iE+oXBQ3PfqBO0QBpZY6x1SNR7OU7BjkRszzI=";
nativeBuildInputs = [ super.protobuf ];
# tests fail
doCheck = false;
};
# Imports a patch that fixes usage of this package on versions
# >=1.9. The patch has been proposed upstream, but so far with no
# reactions from the maintainer:
#
# https://github.com/tpm2-software/tpm2-pkcs11/pull/849
tpm2-pkcs11 = super.tpm2-pkcs11.overrideAttrs (old: {
patches = (old.patches or [ ]) ++ [ ./patches/tpm2-pkcs11-190-dbupgrade.patch ];
});
# Dependency isn't supported by Python 3.12
html5validator = super.html5validator.override {
python3 = self.python311;
};
# macFUSE bump containing fix for https://github.com/osxfuse/osxfuse/issues/974
# https://github.com/NixOS/nixpkgs/pull/320197
fuse =
if super.stdenv.isDarwin then
super.fuse.overrideAttrs
(old: rec {
version = "4.8.0";
src = super.fetchurl {
url = "https://github.com/osxfuse/osxfuse/releases/download/macfuse-${version}/macfuse-${version}.dmg";
hash = "sha256-ucTzO2qdN4QkowMVvC3+4pjEVjbwMsB0xFk+bvQxwtQ=";
};
}) else super.fuse;
# somebody renamed 'utillinux' upstream, but didn't rename all use-cases,
# leading to some packages being broken.
#
# temporarily restore the old name to make things work again.
utillinux = self.util-linux;
# harmonia >2.0 broke compatibility with Nix 2.3; revert back for now
harmonia = self.rustPlatform.buildRustPackage rec {
pname = "harmonia";
version = "1.0.2";
doCheck = false;
cargoHash = "sha256-gW/OljEngDQddIovtgwghu7uHLFVZHvWIijPgbOOkDc=";
meta.mainProgram = "harmonia";
src = self.fetchFromGitHub {
owner = "nix-community";
repo = "harmonia";
rev = "refs/tags/harmonia-v${version}";
hash = "sha256-72nDVSvUfZsLa2HbyricOpA0Eb8gxs/VST25b6DNBpM=";
};
nativeBuildInputs = with self; [
pkg-config
nixVersions.nix_2_24
];
buildInputs = with self; [
boost
libsodium
openssl
nlohmann_json
nixVersions.nix_2_24
];
};
}