support propagated runtime inputs for plugins

This commit is contained in:
Robin Appelman 2026-07-10 16:23:29 +02:00
commit fd7ed8b848
6 changed files with 19 additions and 12 deletions

View file

@ -82,9 +82,6 @@
};
sourcemod = true;
plugins = with pkgs; [
sourcemod-addon-curl
sourcemod-addon-steamworks
sourcemod-addon-socket
sourcemod-plugin-mapdownloader
sourcemod-plugin-whitelist
sourcemod-plugin-nocheats

View file

@ -1,11 +1,11 @@
{
mkSpirePlugin,
sourcemod-include-curl,
sourcemod-addon-curl,
}:
mkSpirePlugin {
name = "banned";
version = "0-unstable-2026-06-18";
rev = "c8186c7bd56e15f2e2e8e5988c0d18058a02df8b";
hash = "sha256-JA9WeM0Je0aHB/z+6xImztTouJNGkaPwD9Cp4z8Ko+4=";
includes = [sourcemod-include-curl];
runtimeInputs = [sourcemod-addon-curl];
}

View file

@ -6,11 +6,12 @@
}:
lib.extendMkDerivation {
constructDrv = stdenvNoCC.mkDerivation;
excludeDrvArgNames = ["includes" "plugin" "installIncludes"];
excludeDrvArgNames = ["includes" "plugin" "installIncludes" "runtimeInputs"];
extendDrvArgs = finalAttrs: {
includes ? [],
plugins,
installIncludes ? [],
runtimeInputs ? [],
src,
...
}: let
@ -19,7 +20,8 @@ lib.extendMkDerivation {
sourcemod-includes
finalAttrs.src
]
++ includes);
++ includes
++ runtimeInputs);
spCompLines = concatStringsSep "\n" (map (plugin: "spcomp ${plugin}") plugins);
createInclude = optionalString ((length installIncludes) > 0) "mkdir -p $out/addons/sourcemod/scripting/include/";
installLines = concatStringsSep "\n" (map (installInclude: "cp '${installInclude}' $out/addons/sourcemod/scripting/include/") installIncludes);
@ -46,5 +48,7 @@ lib.extendMkDerivation {
runHook postInstall
'';
passthru.runtimeInputs = runtimeInputs;
};
}

View file

@ -1,11 +1,11 @@
{
mkSpirePlugin,
sourcemod-include-curl,
sourcemod-addon-curl,
}:
mkSpirePlugin {
name = "mapdownloader";
version = "0-unstable-2025-10-27";
rev = "06dbac41712bd62ae3aa1fd442ab2265ee2f488f";
hash = "sha256-aNlrxrv2K73lKP7hYOER3um4P6fbiV/nF4GDcVaUNbo=";
includes = [sourcemod-include-curl];
runtimeInputs = [sourcemod-addon-curl];
}

View file

@ -1,6 +1,6 @@
{
mkSpirePlugin,
sourcemod-include-curl,
sourcemod-addon-curl,
}:
mkSpirePlugin {
name = "whitelist";
@ -8,5 +8,5 @@ mkSpirePlugin {
rev = "333c5065514a6c5b2f11e57f8ef0bbe80ac28a74";
hash = "sha256-1za2Ii772ymjejI0LaT61hmqEmIMnD/7sVXpMJIwMrc=";
repo = "sm_whitelist";
includes = [sourcemod-include-curl];
runtimeInputs = [sourcemod-addon-curl];
}

View file

@ -1,4 +1,5 @@
{
lib,
symlinkJoin,
sourcemod-builder,
metamod-source-builder,
@ -7,18 +8,23 @@
sdk,
extraPackages,
}: let
inherit (lib) foldl unique;
sdks = {
${sdk} = hl2sdk.${sdk};
};
metaModSdk = metamod-source-builder sdks;
sourceModSdk = sourcemod-builder sdks;
flattenRequires = foldl (acc: package: acc ++ [package] ++ (flattenRequires package.runtimeInputs or [])) [];
propagatedExtraPackages = unique (flattenRequires extraPackages);
names = lib.map (p: p.name) propagatedExtraPackages;
in
symlinkJoin {
name = "srcds-tf2-src-addons";
paths = [metaModSdk sourceModSdk] ++ extraPackages;
paths = [metaModSdk sourceModSdk] ++ propagatedExtraPackages;
postBuild = ''
mv $out tmp
mkdir $out
mv tmp $out/${gamedir}
echo ${lib.concatStringsSep ", " names} > $out/addons.txt
'';
}