Files
config/pkgs/go-raceless/default.nix
2025-10-28 17:01:12 +00:00

55 lines
1.0 KiB
Nix

{ pkgs, go }:
let
go-script = pkgs.writeShellScript "go-raceless" ''
args=("$@")
new_args=()
has_test=false
found_race=false
for arg in "''${args[@]}"; do
if [[ "$arg" == "test" ]]; then
has_test=true
fi
done
if [[ "$has_test" == "true" ]]; then
for arg in "''${args[@]}"; do
if [[ "$arg" != "-race" ]]; then
new_args+=("$arg")
else
found_race=true
fi
done
if [[ "$found_race" == "true" ]]; then
exec ${go}/bin/go "''${new_args[@]}"
fi
fi
exec ${go}/bin/go "$@"
'';
preservedAttrs = pkgs.lib.attrsets.getAttrs [
"CGO_ENABLED"
"GOARCH"
"GOOS"
"meta"
] go;
in
pkgs.symlinkJoin (
{
name = "go-raceless";
paths = [ go ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
rm $out/bin/go
cp ${go-script} $out/bin/go
chmod +x $out/bin/go
'';
}
// preservedAttrs
// {
passthru = go.passthru or { };
}
)