more plugins

This commit is contained in:
Robin Appelman 2026-07-10 03:13:10 +02:00
commit c959438b2c
8 changed files with 125 additions and 49 deletions

View file

@ -72,6 +72,7 @@
"sourcemod-plugin-banned" "sourcemod-plugin-banned"
"sourcemod-plugin-who" "sourcemod-plugin-who"
"sourcemod-plugin-webrcon" "sourcemod-plugin-webrcon"
"sourcemod-plugin-afk"
] ]
// { // {
test = pkgs: test = pkgs:

View file

@ -0,0 +1,5 @@
{mkF2Plugin}:
mkF2Plugin (finalAttrs: {
pname = "sourcemod-plugin-afk";
name = "afk";
})

View file

@ -0,0 +1,55 @@
{
stdenvNoCC,
fetchFromGitHub,
nix-update-script,
lib,
mkSourcemodPlugin,
}:
lib.extendMkDerivation {
constructDrv = mkSourcemodPlugin;
excludeDrvArgNames = ["name" "includes"];
extendDrvArgs = finalAttrs: {
name,
includes ? [],
...
}: let
f2Includes = stdenvNoCC.mkDerivation {
pname = "sourcemod-f2-includes";
inherit (finalAttrs) version src;
installPhase = ''
mkdir $out
cp -r includes $out/include
'';
};
in {
pname = "sourcemod-plugin-${name}";
version = "20260702-1782977488895-unstable-2026-07-02";
src = fetchFromGitHub {
owner = "F2";
repo = "F2s-sourcemod-plugins";
rev = "2be8d34329603569a2848f66b68f3ca323c9d937";
hash = "sha256-XN/LBD3P3tWTI9xwO0+a6+dRH4kyDUTNhGWs2FCCHd0=";
};
plugins = ["${name}/${name}.sp"];
includes = includes ++ [f2Includes];
postInstall = ''
if [ -f "${name}.inc" ]; then
mkdir -p $out/addons/sourcemod/scripting/include/
mv "${name}.inc" $out/addons/sourcemod/scripting/include/
fi
'';
passthru = {
updateScript = nix-update-script {
extraArgs = [
"--flake"
"--version=branch"
"--override-filename=nix/sourcemod/plugins/builder/f2-plugin.nix"
];
};
};
};
}

View file

@ -0,0 +1,44 @@
{
stdenvNoCC,
lib,
sourcepawn,
sourcemod-includes,
}:
lib.extendMkDerivation {
constructDrv = stdenvNoCC.mkDerivation;
excludeDrvArgNames = ["includes" "plugin"];
extendDrvArgs = finalAttrs: {
includes ? [],
plugins,
src,
...
}: let
inherit (lib) concatStringsSep map;
spcomp = sourcepawn.buildEnv ([
sourcemod-includes
finalAttrs.src
]
++ includes);
spCompLines = concatStringsSep "\n" (map (plugin: "spcomp ${plugin}") plugins);
in {
nativeBuildInputs = [spcomp];
buildPhase = ''
runHook preBuild
${spCompLines}
runHook preBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/addons/sourcemod/plugins/
mv *.smx $out/addons/sourcemod/plugins/
runHook postInstall
'';
};
}

View file

@ -1,24 +1,20 @@
{ {
fetchFromGitea, fetchFromGitea,
stdenvNoCC,
nix-update-script, nix-update-script,
lib, lib,
sourcepawn, mkSourcemodPlugin,
sourcemod-includes,
}: }:
lib.extendMkDerivation { lib.extendMkDerivation {
constructDrv = stdenvNoCC.mkDerivation; constructDrv = mkSourcemodPlugin;
excludeDrvArgNames = ["name" "version" "rev" "hash" "includes"]; excludeDrvArgNames = ["name" "version" "rev" "hash"];
extendDrvArgs = finalAttrs: { extendDrvArgs = finalAttrs: {
name, name,
version, version,
rev, rev,
hash, hash,
includes ? [sourcemod-includes],
repo ? name, repo ? name,
}: let ...
spcomp = sourcepawn.buildEnv ([sourcemod-includes] ++ includes); }: {
in {
pname = "sourcemod-plugin-${name}"; pname = "sourcemod-plugin-${name}";
inherit version; inherit version;
src = fetchFromGitea { src = fetchFromGitea {
@ -27,25 +23,7 @@ lib.extendMkDerivation {
inherit rev hash repo; inherit rev hash repo;
}; };
nativeBuildInputs = [spcomp]; plugins = ["plugin/*.sp"];
buildPhase = ''
runHook preBuild
spcomp plugin/*.sp
runHook preBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/addons/sourcemod/plugins/
mv *.smx $out/addons/sourcemod/plugins/
runHook postInstall
'';
passthru = { passthru = {
updateScript = nix-update-script { updateScript = nix-update-script {

View file

@ -1,5 +1,7 @@
final: prev: { final: prev: {
mkSourcemodPlugin = final.callPackage ./builder/plugin.nix {};
mkSpirePlugin = final.callPackage ./builder/spire-plugin.nix {}; mkSpirePlugin = final.callPackage ./builder/spire-plugin.nix {};
mkF2Plugin = final.callPackage ./builder/f2-plugin.nix {};
sourcemod-addon-curl = final.callPackage ./curl.nix {}; sourcemod-addon-curl = final.callPackage ./curl.nix {};
sourcemod-addon-steamworks = final.callPackage ./steamworks.nix {}; sourcemod-addon-steamworks = final.callPackage ./steamworks.nix {};
sourcemod-addon-socket = final.callPackage ./socket.nix {}; sourcemod-addon-socket = final.callPackage ./socket.nix {};
@ -16,4 +18,5 @@ final: prev: {
sourcemod-plugin-banned = final.callPackage ./banned.nix {}; sourcemod-plugin-banned = final.callPackage ./banned.nix {};
sourcemod-plugin-who = final.callPackage ./who.nix {}; sourcemod-plugin-who = final.callPackage ./who.nix {};
sourcemod-plugin-webrcon = final.callPackage ./webrcon.nix {}; sourcemod-plugin-webrcon = final.callPackage ./webrcon.nix {};
sourcemod-plugin-afk = final.callPackage ./afk.nix {};
} }

View file

@ -1,9 +1,9 @@
{ {
fetchFromGitHub, fetchFromGitHub,
stdenvNoCC,
nix-update-script, nix-update-script,
mkSourcemodPlugin,
}: }:
stdenvNoCC.mkDerivation (finalAttrs: { mkSourcemodPlugin (finalAttrs: {
pname = "sourcemod-plugin-progressive-ruleset-timer"; pname = "sourcemod-plugin-progressive-ruleset-timer";
version = "0-unstable-2022-09-08"; version = "0-unstable-2022-09-08";
src = fetchFromGitHub { src = fetchFromGitHub {
@ -13,15 +13,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
hash = "sha256-OHPMVDLZOVZpBv/b0N90xTOut3gBJUxr5f0T0PPqlIE="; hash = "sha256-OHPMVDLZOVZpBv/b0N90xTOut3gBJUxr5f0T0PPqlIE=";
}; };
installPhase = '' plugins = ["addons/sourcemod/scripting/improved_match_timer.sp"];
runHook preInstall
mkdir $out
ls -l
mv addons cfg $out/
runHook postInstall
'';
passthru = { passthru = {
updateScript = nix-update-script { updateScript = nix-update-script {

View file

@ -1,9 +1,10 @@
{ {
fetchzip, fetchzip,
stdenvNoCC, mkSourcemodPlugin,
nix-update-script, nix-update-script,
sourcemod-include-library,
}: }:
stdenvNoCC.mkDerivation (finalAttrs: { mkSourcemodPlugin (finalAttrs: {
pname = "sourcemod-plugin-soap-tf2dm"; pname = "sourcemod-plugin-soap-tf2dm";
version = "4.4.8"; version = "4.4.8";
src = fetchzip { src = fetchzip {
@ -12,14 +13,11 @@ stdenvNoCC.mkDerivation (finalAttrs: {
stripRoot = false; stripRoot = false;
}; };
installPhase = '' includes = [sourcemod-include-library "${finalAttrs.src}/addons/sourcemod/scripting"];
runHook preInstall plugins = [
"addons/sourcemod/scripting/soap_tf2dm.sp"
mkdir $out "addons/sourcemod/scripting/soap_tournament.sp"
mv addons cfg $out/ ];
runHook postInstall
'';
passthru = { passthru = {
updateScript = nix-update-script { updateScript = nix-update-script {