go-xkcdreader/overlay.nix
surtur fb0d215760
All checks were successful
continuous-integration/drone/push Build is passing
flake,go: add,use overlay.nix w/ patched Go
2022-05-20 19:52:31 +02:00

64 lines
2.6 KiB
Nix

# heavily inspired by https://github.com/diamondburned/gotk4-nix/blob/d2bd6577f1867cb740b281baa48a895aed494967/overlay.nix
self: super:
let patchelfer = arch: interpreter: super.writeShellScriptBin
"patchelf-${arch}"
"${super.patchelf}/bin/patchelf --set-interpreter ${interpreter} \"$@\"";
in
{
go = super.go.overrideAttrs (old: {
version = "1.18.2";
src = builtins.fetchurl {
url = "https://go.dev/dl/go1.18.2.src.tar.gz";
sha256 = "sha256:1qk7as7a5wx3522ldsq8il1il9ic5xhbl6drg89r4h63l8zd0i1c";
};
doCheck = false;
patches = (old.patches or [ ]) ++ [
# cmd/go/internal/work: concurrent ccompile routines
(super.fetchpatch {
url = "https://github.com/diamondburned/go/commit/ec3e1c9471f170187b6a7c83ab0364253f895c28.patch";
sha256 = "sha256-KXP3gHRVHCVY60HnrLHv+QLib1hSYZOxsMjkbAiNi1g=";
})
# cmd/cgo: concurrent file generation
(super.fetchpatch {
url = "https://github.com/diamondburned/go/commit/50e04befeca9ae63296a73c8d5d2870b904971b4.patch";
sha256 = "sha256-6PNUBlhGj53XS7f3dYOisDQ1PJldqwmWcgBnPE0cZsE=";
})
# the patches are also present locally for archival purposes
# ./patches/diamondburned/go/ec3e1c9471f170187b6a7c83ab0364253f895c28.patch
# ./patches/diamondburned/go/50e04befeca9ae63296a73c8d5d2870b904971b4.patch
# TODO(me): don't forget to download the patch files when bumping the
# urls above
];
});
# might as well be 'buildGoModule = super.buildGo118Module.override' but
# we're overriding just the go package itself and leaving the rest of the
# function alone. letting 'builGoModule' to be updated only with flake's
# nixpkgs updates therefore seems to be the more reasonable option.
buildGoModule = super.buildGoModule.override {
# use the go we just built from sources as 'go' in the buildGoModule func
inherit (self) go;
};
# inherit (super) go-tools;
# See https://sourceware.org/glibc/wiki/ABIList.
patchelf-x86_64 = patchelfer "x86_64" "/lib64/ld-linux-x86-64.so.2";
patchelf-aarch64 = patchelfer "aarch64" "/lib/ld-linux-aarch64.so.1";
#dominikh = {
# go-tools = self.buildGoModule {
# name = "dominikh-go-tools";
# src = super.fetchFromGitHub {
# owner = "dominikh";
# repo = "go-tools";
# rev = "f4a2f64ce2386d1d392f2da44043c5ee3fb48216";
# sha256 = "1yhbz2sf332b6i00slsj4cn8r66x27kddw5vcjygkkiyny1a99qb";
# };
# vendorSha256 = "09jbarlbq47pcxy5zkja8gqvnqjp2mpbxnciv9lhilw9swqqwc0j";
# doCheck = false;
# subPackages = [ "cmd/staticcheck" ];
# };
#};
}