add go-raceless

This commit is contained in:
2025-10-28 11:25:08 +00:00
parent 08ea34ecd6
commit 9fe0bbaefe
5 changed files with 87 additions and 12 deletions

View File

@@ -86,7 +86,7 @@
let let
myData = import ./data.nix; myData = import ./data.nix;
overlays = [ baseOverlays = [
nur.overlays.default nur.overlays.default
zig.overlays.default zig.overlays.default
@@ -107,6 +107,7 @@
vanta-agent = super.callPackage ./pkgs/vanta-agent.nix { }; vanta-agent = super.callPackage ./pkgs/vanta-agent.nix { };
chronoctl = super.callPackage ./pkgs/chronoctl.nix { }; chronoctl = super.callPackage ./pkgs/chronoctl.nix { };
gcloud-wrapped = super.callPackage ./pkgs/gcloud-wrapped { }; gcloud-wrapped = super.callPackage ./pkgs/gcloud-wrapped { };
go-raceless = super.callPackage ./pkgs/go-raceless { };
pkgs-unstable = import nixpkgs-unstable { pkgs-unstable = import nixpkgs-unstable {
inherit (super) system; inherit (super) system;
@@ -129,7 +130,7 @@
vm = nixpkgs.lib.nixosSystem { vm = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
{ nixpkgs.overlays = overlays; } { nixpkgs.overlays = baseOverlays; }
./hosts/vm/configuration.nix ./hosts/vm/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
]; ];
@@ -142,7 +143,7 @@
mtworx = nixpkgs.lib.nixosSystem { mtworx = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
{ nixpkgs.overlays = overlays; } { nixpkgs.overlays = baseOverlays; }
./hosts/mtworx/configuration.nix ./hosts/mtworx/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
nixos-hardware.nixosModules.lenovo-thinkpad-x1-11th-gen nixos-hardware.nixosModules.lenovo-thinkpad-x1-11th-gen
@@ -160,7 +161,7 @@
fwminex = nixpkgs.lib.nixosSystem { fwminex = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
{ nixpkgs.overlays = overlays; } { nixpkgs.overlays = baseOverlays; }
./hosts/fwminex/configuration.nix ./hosts/fwminex/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
nixos-hardware.nixosModules.framework-12th-gen-intel nixos-hardware.nixosModules.framework-12th-gen-intel
@@ -177,7 +178,7 @@
vno3-nk = nixpkgs.lib.nixosSystem { vno3-nk = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
{ nixpkgs.overlays = overlays; } { nixpkgs.overlays = baseOverlays; }
./hosts/vno3-nk/configuration.nix ./hosts/vno3-nk/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
agenix.nixosModules.default agenix.nixosModules.default
@@ -192,7 +193,7 @@
vno1-gdrx = nixpkgs.lib.nixosSystem { vno1-gdrx = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
{ nixpkgs.overlays = overlays; } { nixpkgs.overlays = baseOverlays; }
./hosts/vno1-gdrx/configuration.nix ./hosts/vno1-gdrx/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
nix-index-database.nixosModules.nix-index nix-index-database.nixosModules.nix-index
@@ -209,7 +210,7 @@
fra1-c = nixpkgs.lib.nixosSystem { fra1-c = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
{ nixpkgs.overlays = overlays; } { nixpkgs.overlays = baseOverlays; }
agenix.nixosModules.default agenix.nixosModules.default
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
./hosts/fra1-c/configuration.nix ./hosts/fra1-c/configuration.nix
@@ -299,7 +300,10 @@
// flake-utils.lib.eachDefaultSystem ( // flake-utils.lib.eachDefaultSystem (
system: system:
let let
pkgs = import nixpkgs { inherit system overlays; }; pkgs = import nixpkgs {
inherit system;
overlays = baseOverlays;
};
in in
{ {
devShells.default = pkgs.mkShellNoCC { devShells.default = pkgs.mkShellNoCC {
@@ -321,7 +325,7 @@
// ( // (
let let
pkgs = import nixpkgs { pkgs = import nixpkgs {
inherit overlays; overlays = baseOverlays;
system = "x86_64-linux"; system = "x86_64-linux";
}; };
in in

View File

@@ -33,6 +33,10 @@ in
type = bool; type = bool;
default = false; default = false;
}; };
wrapGo = lib.mkOption {
type = bool;
default = false;
};
email = lib.mkOption { email = lib.mkOption {
type = nullOr str; type = nullOr str;
default = "motiejus@jakstys.lt"; default = "motiejus@jakstys.lt";
@@ -86,7 +90,7 @@ in
inherit lib; inherit lib;
inherit pkgs; inherit pkgs;
inherit (config.mj) stateVersion username; inherit (config.mj) stateVersion username;
inherit (cfg) devTools email; inherit (cfg) devTools email wrapGo;
hmOnly = false; hmOnly = false;
}; };
}; };

View File

@@ -0,0 +1,58 @@
{ pkgs, go }:
let
go-wrapper = pkgs.writeShellApplication {
name = "go";
text = ''
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 "$REAL_GO" "''${new_args[@]}"
fi
fi
exec "$REAL_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
makeWrapper ${go-wrapper}/bin/go $out/bin/go \
--set REAL_GO ${go}/bin/go
'';
}
// preservedAttrs
// {
passthru = go.passthru or { };
}
)

View File

@@ -6,6 +6,7 @@
devTools, devTools,
hmOnly, hmOnly,
username, username,
wrapGo ? false,
... ...
}: }:
let let
@@ -30,8 +31,13 @@ in
(lib.mkIf devTools [ (lib.mkIf devTools [
universal-ctags universal-ctags
(
if wrapGo then
pkgs.go-raceless.override { inherit (pkgs.pkgs-unstable) go; }
else
pkgs.pkgs-unstable.go
)
pkgs-unstable.delve pkgs-unstable.delve
pkgs-unstable.go_1_25
pkgs-unstable.go-tools pkgs-unstable.go-tools
pkgs.zigpkgs."0.15.1" pkgs.zigpkgs."0.15.1"
]) ])

View File

@@ -1,6 +1,9 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
mj.base.users.email = null; mj.base.users = {
email = null;
wrapGo = true;
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
#swc #swc