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; sourcemod = true;
plugins = with pkgs; [ plugins = with pkgs; [
sourcemod-addon-curl
sourcemod-addon-steamworks
sourcemod-addon-socket
sourcemod-plugin-mapdownloader sourcemod-plugin-mapdownloader
sourcemod-plugin-whitelist sourcemod-plugin-whitelist
sourcemod-plugin-nocheats sourcemod-plugin-nocheats

View file

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

View file

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

View file

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

View file

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

View file

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