From 7eeba3211f3549acc844760aec136720589a6375 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 9 Jul 2026 23:44:42 +0200 Subject: [PATCH] sourcemod-addon-socket from source --- .gitignore | 2 +- flake.nix | 3 +- nix/sourcemod/amtl.nix | 38 ++++++++++++++++ nix/sourcemod/metamod-source.nix | 6 +++ nix/sourcemod/overlay.nix | 5 ++- nix/sourcemod/plugins/overlay.nix | 2 +- nix/sourcemod/plugins/socket.nix | 72 +++++++++++++++++++++++-------- nix/sourcemod/sourcemod.nix | 6 +++ nix/sourcemod/sourcepawn.nix | 5 +++ 9 files changed, 117 insertions(+), 22 deletions(-) create mode 100644 nix/sourcemod/amtl.nix diff --git a/.gitignore b/.gitignore index d38ec2a..7a1c5d3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -result +result* .direnv tmp depots diff --git a/flake.nix b/flake.nix index 852cf06..e07e0b2 100644 --- a/flake.nix +++ b/flake.nix @@ -58,9 +58,9 @@ "srcds-tf2" "sourcemod-addon-curl" "sourcemod-addon-steamworks" + "sourcemod-addon-socket" "sourcemod-plugin-soap-tf2dm" "sourcemod-plugin-progressive-ruleset-timer" - "sourcemod-plugin-socket" "sourcemod-plugin-tf2-comp-fixes" "sourcemod-plugin-mapdownloader" "sourcemod-plugin-whitelist" @@ -83,6 +83,7 @@ plugins = with pkgs; [ sourcemod-addon-curl sourcemod-addon-steamworks + sourcemod-addon-socket sourcemod-plugin-mapdownloader sourcemod-plugin-whitelist sourcemod-plugin-nocheats diff --git a/nix/sourcemod/amtl.nix b/nix/sourcemod/amtl.nix new file mode 100644 index 0000000..03501de --- /dev/null +++ b/nix/sourcemod/amtl.nix @@ -0,0 +1,38 @@ +{ + lib, + stdenvNoCC, + fetchFromGitHub, + nix-update-script, +}: +stdenvNoCC.mkDerivation { + pname = "amtl"; + version = "2.2-unstable-2026-06-06"; + + src = fetchFromGitHub { + owner = "alliedmodders"; + repo = "amtl"; + rev = "bfede4005e4eb1ce5e4cfeb34da4f2c6a379b85a"; + hash = "sha256-XMW6Pb/ez6N49VPWIFi3a+fx2paYrzZuHL0TDq7PmVo="; + }; + + installPhase = '' + mkdir -p $out + cp -r amtl $out/include + ln -s $out/include $out/include/amtl + ''; + + passthru = { + updateScript = nix-update-script { + extraArgs = [ + "--flake" + "--version=branch" + ]; + }; + }; + + meta = with lib; { + homepage = "https://github.com/alliedmodders/amtl"; + description = "AlliedModders C++ Template Library"; + license = licenses.bsd3; + }; +} diff --git a/nix/sourcemod/metamod-source.nix b/nix/sourcemod/metamod-source.nix index a081cb8..2ca656d 100644 --- a/nix/sourcemod/metamod-source.nix +++ b/nix/sourcemod/metamod-source.nix @@ -17,6 +17,8 @@ in pname = "metamod-source"; version = "1.12.0.1224"; + outputs = ["out" "dev"]; + NIX_CFLAGS_COMPILE = "-Wno-error=format-truncation -Wno-error=ignored-attributes -Wno-error=template-id-cdtor"; src = fetchFromGitHub { @@ -50,5 +52,9 @@ in installPhase = '' mv package $out + + mkdir $dev + cp -r $src/public $dev/public + ln -s $dev/public $dev/include ''; }) diff --git a/nix/sourcemod/overlay.nix b/nix/sourcemod/overlay.nix index 21cfb78..3aa39d2 100644 --- a/nix/sourcemod/overlay.nix +++ b/nix/sourcemod/overlay.nix @@ -4,8 +4,11 @@ final: prev: inherit (final) fetchFromGitHub lib nix-update-script; inherit (final.stdenvNoCC) mkDerivation; }; + amtl = final.callPackage ./amtl.nix {}; ambuild = final.python3Packages.callPackage ./ambuild.nix {}; - metamod-source = final.callPackage ./metamod-source.nix {} {}; + metamod-source = final.callPackage ./metamod-source.nix {} { + sdk2013 = final.hl2sdk.sdk2013; + }; metamod-source-builder = final.callPackage ./metamod-source.nix {}; sourcemod = final.callPackage ./sourcemod.nix {} {}; sourcemod-builder = final.callPackage ./sourcemod.nix {}; diff --git a/nix/sourcemod/plugins/overlay.nix b/nix/sourcemod/plugins/overlay.nix index 2b96314..89f4087 100644 --- a/nix/sourcemod/plugins/overlay.nix +++ b/nix/sourcemod/plugins/overlay.nix @@ -2,9 +2,9 @@ final: prev: { mkSpirePlugin = final.callPackage ./builder/spire-plugin.nix {}; sourcemod-addon-curl = final.callPackage ./curl.nix {}; sourcemod-addon-steamworks = final.callPackage ./steamworks.nix {}; + sourcemod-addon-socket = final.callPackage ./socket.nix {}; sourcemod-plugin-soap-tf2dm = final.callPackage ./soap-tf2dm.nix {}; sourcemod-plugin-progressive-ruleset-timer = final.callPackage ./progressive-ruleset-timer.nix {}; - sourcemod-plugin-socket = final.callPackage ./socket.nix {}; sourcemod-plugin-tf2-comp-fixes = final.callPackage ./tf2-comp-fixes.nix {}; sourcemod-plugin-mapdownloader = final.callPackage ./mapdownloader.nix {}; sourcemod-plugin-whitelist = final.callPackage ./whitelist.nix {}; diff --git a/nix/sourcemod/plugins/socket.nix b/nix/sourcemod/plugins/socket.nix index 7d1a37f..cd92470 100644 --- a/nix/sourcemod/plugins/socket.nix +++ b/nix/sourcemod/plugins/socket.nix @@ -1,27 +1,63 @@ { + fetchFromGitHub, fetchzip, - stdenvNoCC, + stdenv, writeScript, -}: -stdenvNoCC.mkDerivation (finalAttrs: { - pname = "sourcemod-plugin-socket"; - version = "3.0.1"; - src = fetchzip { - url = "https://codeberg.org/spire/docker-comp-server/raw/branch/master/socket_${finalAttrs.version}.zip"; - sha256 = "sha256-EDCEyzSynz8Uotgx6xVmEiGgXf1FBtOzW1YNfsOad+U="; + amtl, + sourcemod, + metamod-source, + sourcepawn, + boost186, +}: let + msinttypes = fetchzip { + url = "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/msinttypes/msinttypes-r26.zip"; + hash = "sha256-uMSuHXikaHQSt35FQ3o5uUjTjyP950O0DYTtQstbBvo="; stripRoot = false; }; +in + stdenv.mkDerivation (finalAttrs: { + pname = "sourcemod-addon-socket"; + version = "3.0.1"; + src = fetchFromGitHub { + owner = "nefarius"; + repo = "sm-ext-socket"; + rev = "ed6bf7a12bd3f801610592301e12062b367fa27b"; + hash = "sha256-M13Nt58tlXXBO1fB2Y3vQLyD4Wlzrwd6mHWSf5JTUwY="; + }; - installPhase = '' - runHook preInstall + postPatch = '' + substituteInPlace Makefile \ + --replace-fail " -m32" "" \ + --replace-fail "LINK = -lpthread -Wl,-Bstatic -static-libgcc -lboost_thread -lboost_system -lstdc++ -Wl,-Bdynamic" \ + "LINK = -lpthread -lboost_thread -lstdc++" \ - mkdir $out - mv addons $out/ + substituteInPlace Socket.cpp \ + --replace-fail "boost::system::posix_error" "boost::system::errc" + ''; - runHook postInstall - ''; + nativebuildInputs = [ + boost186 + ]; - passthru = { - updateScript = writeScript "update-null" ""; - }; -}) + buildInputs = [ + boost186 + sourcemod.dev + amtl + msinttypes + sourcepawn.dev + metamod-source.dev + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/addons/sourcemod/extensions/x64 + cp Release/socket.ext.so $out/addons/sourcemod/extensions/x64 + + runHook postInstall + ''; + + passthru = { + updateScript = writeScript "update-null" ""; + }; + }) diff --git a/nix/sourcemod/sourcemod.nix b/nix/sourcemod/sourcemod.nix index 629fb4d..5acc0e7 100644 --- a/nix/sourcemod/sourcemod.nix +++ b/nix/sourcemod/sourcemod.nix @@ -28,6 +28,8 @@ in pname = "sourcemod"; version = "1.12.0.7239"; + outputs = ["out" "dev"]; + src = fetchFromGitHub { owner = "alliedmodders"; repo = finalAttrs.pname; @@ -64,6 +66,10 @@ in installPhase = '' mv package $out + + mkdir $dev + cp -r $src/public $dev/public + ln -s $dev/public $dev/include ''; passthru.updateScript = writeScript "update-sourcemod" '' diff --git a/nix/sourcemod/sourcepawn.nix b/nix/sourcemod/sourcepawn.nix index 403e8cf..10a8795 100644 --- a/nix/sourcemod/sourcepawn.nix +++ b/nix/sourcemod/sourcepawn.nix @@ -17,6 +17,8 @@ pname = "sourcepawn"; version = "1.12"; + outputs = ["out" "dev"]; + NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare -Wno-error=unused-but-set-variable -Wno-error=maybe-uninitialized -Wno-error=ignored-attributes -Wno-error=deprecated-declarations"; src = fetchFromGitHub { @@ -45,6 +47,9 @@ installPhase = '' mkdir -p $out/bin cp spcomp/*/spcomp spshell/*/spshell verifier/*/verifier $out/bin + + mkdir $dev + cp -r $src/include $dev/include ''; passthru = {