sourcemod-addon-socket from source

This commit is contained in:
Robin Appelman 2026-07-09 23:44:42 +02:00
commit 7eeba3211f
9 changed files with 117 additions and 22 deletions

2
.gitignore vendored
View file

@ -1,4 +1,4 @@
result
result*
.direnv
tmp
depots

View file

@ -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

38
nix/sourcemod/amtl.nix Normal file
View file

@ -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;
};
}

View file

@ -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
'';
})

View file

@ -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 {};

View file

@ -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 {};

View file

@ -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" "";
};
})

View file

@ -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" ''

View file

@ -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 = {