add helper for srcds with sourcemod

This commit is contained in:
Robin Appelman 2026-07-09 18:17:23 +02:00
commit b6860cbb15
6 changed files with 43 additions and 18 deletions

View file

@ -39,7 +39,7 @@
};
perSystem = pkgs: {
sourcemods = pkgs.lib.mapAttrs (name: sdk: pkgs.sourcemod.override {sdks = {${name} = sdk;};}) pkgs.hl2sdk;
sourcemods = pkgs.lib.mapAttrs (name: sdk: pkgs.sourcemod-builder {${name} = sdk;}) pkgs.hl2sdk;
metamods = pkgs.lib.mapAttrs (name: sdk: pkgs.metamod-source-builder {${name} = sdk;}) pkgs.hl2sdk;
hl2sdk = pkgs.hl2sdk;
steam-depots = pkgs.steam-depots;
@ -58,8 +58,17 @@
]
// {
test = pkgs:
pkgs.srcds-tf2.withConfig {
(pkgs.srcds-tf2.withConfig
{
hostname = "Spire Server";
}).withSourcemod {};
testScript = pkgs:
pkgs.buildSourcePawnScript {
name = "test";
src = pkgs.fetchurl {
url = "https://codeberg.org/spire/nocheats/raw/commit/5e0e21c241fdf8907d83d9bcf3cce37711b83d14/plugin/nocheats.sp";
sha256 = "sha256-Z3RJhuc9c8YQTo9gnLTBrqL4JpADZgDttrJVyE/MWdM=";
};
};
};

View file

@ -4,8 +4,7 @@
nix-update-script,
lib,
}: let
inherit (builtins) mapAttrs;
inherit (lib) optionals importJSON;
inherit (lib) importJSON mapAttrs;
revisions = importJSON ./hl2sdks.json;
fetchRev = {
rev,

View file

@ -6,7 +6,8 @@ final: prev: {
ambuild = final.python3Packages.callPackage ./ambuild.nix {};
metamod-source = final.callPackage ./metamod-source.nix {} {};
metamod-source-builder = final.callPackage ./metamod-source.nix {};
sourcemod = final.callPackage ./sourcemod.nix {};
sourcemod = final.callPackage ./sourcemod.nix {} {};
sourcemod-builder = final.callPackage ./sourcemod.nix {};
sourcepawn = final.callPackage ./sourcepawn.nix {};
sourcemod-includes = final.callPackage ./includes/sourcemod-includes.nix {};
buildSourcePawnScript = final.callPackage ./build-sourcepawn-script.nix {};

View file

@ -8,8 +8,7 @@
writeShellScriptBin,
zlib,
writeScript,
sdks ? {},
}: let
}: sdks: let
inherit (builtins) concatStringsSep attrNames attrValues;
inherit (lib) optionals;
combinedSdks = symlinkJoin {

View file

@ -11,8 +11,13 @@
steamworks-sdk-redist,
system,
callPackage,
srcds-tf2,
depots,
sourcemod-builder,
metamod-source-builder,
gamedir,
hl2sdk,
sdk,
writeTextDir,
}: let
inherit (lib) importJSON map toString elem last replaceStrings naturalSort filter any;
depotInputs = importJSON ./depots.json;
@ -76,28 +81,36 @@
};
in
final;
makeWithSourcemod = base: config: let
configFile = callPackage ./cfg.nix {
name = "server.cfg";
cfg = config;
makeWithSourcemod = base: {}: let
sdks = {
${sdk} = hl2sdk.${sdk};
};
metaModSdk = metamod-source-builder sdks;
sourceModSdk = sourcemod-builder sdks;
final = symlinkJoin {
name = "srcds-tf2-src";
paths = [base configFile];
paths = [base metaModSdk sourceModSdk];
passthru = makeWiths final;
postBuild = ''
mv $out/share/cfg/* $out/tf/cfg/
mv $out/share/addons $out/tf/addons
rm -r $out/include $out/share
'';
};
in
final;
makeWiths = base: {
withConfig = makeWithConfig base;
withSourcemod = makeWithSourcemod base;
};
mainProgram =
if system == "x86_64-linux"
then "srcds_run_64"
else "srcds_run";
in
stdenvNoCC.mkDerivation (finalAttrs: {
final = stdenvNoCC.mkDerivation (finalAttrs: {
pname = "srcds-tf2";
version = timeToVersion time;
inherit src;
@ -129,7 +142,7 @@ in
runHook postInstall
'';
passthru = makeWiths srcds-tf2;
passthru = makeWiths final;
meta = with lib; {
inherit mainProgram;
@ -142,4 +155,6 @@ in
license = licenses.unfree;
platforms = ["x86_64-linux" "i686-linux"];
};
})
});
in
final

View file

@ -13,6 +13,8 @@ in {
depot_id = 232250;
}
];
gamedir = "tf";
sdk = "tf2";
};
steam-depots = listToAttrs (map (depot: {
name = "steam-depot-${toString depot.app_id}-${toString depot.depot_id}";