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:
(pkgs.srcds-tf2.withConfig
{
pkgs.srcds-tf2.customize {
cfg = {
hostname = "Spire Server";
}).withSourcemod {};
};
sourcemod = true;
};
testScript = pkgs:
pkgs.buildSourcePawnScript {
name = "test";

View file

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

View file

@ -63,8 +63,7 @@ in
'';
installPhase = ''
mkdir $out
mv package $out/share
mv package $out
'';
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,
cfg,
gamedir,
name,
writeTextDir,
}: let
@ -8,4 +9,4 @@
lines = mapAttrsToList (key: value: ''${key} "${value}"'') cfg;
text = concatStringsSep "\n" lines;
in
writeTextDir "tf/cfg/${name}" text
writeTextDir "${gamedir}/cfg/${name}" text

View file

@ -12,14 +12,12 @@
system,
callPackage,
depots,
sourcemod-builder,
metamod-source-builder,
gamedir,
hl2sdk,
sdk,
writeTextDir,
}: 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;
fetchSupported = elem system depotdownloader.meta.platforms;
fetcher = input:
@ -69,48 +67,13 @@
}
);
makeWithConfig = base: config: let
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;
};
addons = callPackage ./addons.nix {inherit sdk gamedir;};
mainProgram =
if system == "x86_64-linux"
then "srcds_run_64"
else "srcds_run";
final = stdenvNoCC.mkDerivation (finalAttrs: {
base = stdenvNoCC.mkDerivation (finalAttrs: {
pname = "srcds-tf2";
version = timeToVersion time;
inherit src;
@ -142,7 +105,21 @@
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; {
inherit mainProgram;
@ -157,4 +134,4 @@
};
});
in
final
base