replace with customize helper

This commit is contained in:
Robin Appelman 2026-07-09 18:34:22 +02:00
commit d96d2bbb9b
6 changed files with 51 additions and 51 deletions

View file

@ -58,10 +58,12 @@
] ]
// { // {
test = pkgs: test = pkgs:
(pkgs.srcds-tf2.withConfig pkgs.srcds-tf2.customize {
{ cfg = {
hostname = "Spire Server"; hostname = "Spire Server";
}).withSourcemod {}; };
sourcemod = true;
};
testScript = pkgs: testScript = pkgs:
pkgs.buildSourcePawnScript { pkgs.buildSourcePawnScript {
name = "test"; name = "test";

View file

@ -49,8 +49,6 @@ in
''; '';
installPhase = '' installPhase = ''
mkdir $out mv package $out
mv package $out/share
cp -r $src $out/include
''; '';
}) })

View file

@ -63,8 +63,7 @@ in
''; '';
installPhase = '' installPhase = ''
mkdir $out mv package $out
mv package $out/share
''; '';
passthru.updateScript = writeScript "update-sourcemod" '' passthru.updateScript = writeScript "update-sourcemod" ''

23
nix/srcds/addons.nix Normal file
View file

@ -0,0 +1,23 @@
{
symlinkJoin,
sourcemod-builder,
metamod-source-builder,
gamedir,
hl2sdk,
sdk,
}: let
sdks = {
${sdk} = hl2sdk.${sdk};
};
metaModSdk = metamod-source-builder sdks;
sourceModSdk = sourcemod-builder sdks;
in
symlinkJoin {
name = "srcds-tf2-src-addons";
paths = [metaModSdk sourceModSdk];
postBuild = ''
mv $out tmp
mkdir $out
mv tmp $out/${gamedir}
'';
}

View file

@ -1,6 +1,7 @@
{ {
lib, lib,
cfg, cfg,
gamedir,
name, name,
writeTextDir, writeTextDir,
}: let }: let
@ -8,4 +9,4 @@
lines = mapAttrsToList (key: value: ''${key} "${value}"'') cfg; lines = mapAttrsToList (key: value: ''${key} "${value}"'') cfg;
text = concatStringsSep "\n" lines; text = concatStringsSep "\n" lines;
in in
writeTextDir "tf/cfg/${name}" text writeTextDir "${gamedir}/cfg/${name}" text

View file

@ -12,14 +12,12 @@
system, system,
callPackage, callPackage,
depots, depots,
sourcemod-builder,
metamod-source-builder,
gamedir, gamedir,
hl2sdk, hl2sdk,
sdk, sdk,
writeTextDir, writeTextDir,
}: let }: let
inherit (lib) importJSON map toString elem last replaceStrings naturalSort filter any; inherit (lib) importJSON map toString elem last replaceStrings naturalSort filter any optionals;
depotInputs = importJSON ./depots.json; depotInputs = importJSON ./depots.json;
fetchSupported = elem system depotdownloader.meta.platforms; fetchSupported = elem system depotdownloader.meta.platforms;
fetcher = input: fetcher = input:
@ -69,48 +67,13 @@
} }
); );
makeWithConfig = base: config: let addons = callPackage ./addons.nix {inherit sdk gamedir;};
configFile = callPackage ./cfg.nix {
name = "server.cfg";
cfg = config;
};
final = symlinkJoin {
name = "srcds-tf2-src";
paths = [base configFile];
passthru = makeWiths final;
};
in
final;
makeWithSourcemod = base: {}: let
sdks = {
${sdk} = hl2sdk.${sdk};
};
metaModSdk = metamod-source-builder sdks;
sourceModSdk = sourcemod-builder sdks;
final = symlinkJoin {
name = "srcds-tf2-src";
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 = mainProgram =
if system == "x86_64-linux" if system == "x86_64-linux"
then "srcds_run_64" then "srcds_run_64"
else "srcds_run"; else "srcds_run";
base = stdenvNoCC.mkDerivation (finalAttrs: {
final = stdenvNoCC.mkDerivation (finalAttrs: {
pname = "srcds-tf2"; pname = "srcds-tf2";
version = timeToVersion time; version = timeToVersion time;
inherit src; inherit src;
@ -142,7 +105,21 @@
runHook postInstall runHook postInstall
''; '';
passthru = makeWiths final; passthru = {
customize = {
cfg ? {},
sourcemod ? false,
}: let
configFile = callPackage ./cfg.nix {
name = "server.cfg";
inherit cfg gamedir;
};
in
symlinkJoin {
name = "srcds-tf2-src-sourcemod";
paths = [base configFile] ++ (optionals sourcemod [addons]);
};
};
meta = with lib; { meta = with lib; {
inherit mainProgram; inherit mainProgram;
@ -157,4 +134,4 @@
}; };
}); });
in in
final base