From d96d2bbb9b6a291e8b34476e4ecf311c5470db2c Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 9 Jul 2026 18:34:22 +0200 Subject: [PATCH] replace with customize helper --- flake.nix | 8 +++-- nix/sourcemod/metamod-source.nix | 4 +-- nix/sourcemod/sourcemod.nix | 3 +- nix/srcds/addons.nix | 23 ++++++++++++ nix/srcds/cfg.nix | 3 +- nix/srcds/default.nix | 61 ++++++++++---------------------- 6 files changed, 51 insertions(+), 51 deletions(-) create mode 100644 nix/srcds/addons.nix diff --git a/flake.nix b/flake.nix index fad57cc..d005d7d 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; diff --git a/nix/sourcemod/metamod-source.nix b/nix/sourcemod/metamod-source.nix index ae0c943..a081cb8 100644 --- a/nix/sourcemod/metamod-source.nix +++ b/nix/sourcemod/metamod-source.nix @@ -49,8 +49,6 @@ in ''; installPhase = '' - mkdir $out - mv package $out/share - cp -r $src $out/include + mv package $out ''; }) diff --git a/nix/sourcemod/sourcemod.nix b/nix/sourcemod/sourcemod.nix index e04fb3d..629fb4d 100644 --- a/nix/sourcemod/sourcemod.nix +++ b/nix/sourcemod/sourcemod.nix @@ -63,8 +63,7 @@ in ''; installPhase = '' - mkdir $out - mv package $out/share + mv package $out ''; passthru.updateScript = writeScript "update-sourcemod" '' diff --git a/nix/srcds/addons.nix b/nix/srcds/addons.nix new file mode 100644 index 0000000..7476fc2 --- /dev/null +++ b/nix/srcds/addons.nix @@ -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} + ''; + } diff --git a/nix/srcds/cfg.nix b/nix/srcds/cfg.nix index 1568dea..a483b0a 100644 --- a/nix/srcds/cfg.nix +++ b/nix/srcds/cfg.nix @@ -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 diff --git a/nix/srcds/default.nix b/nix/srcds/default.nix index 8fa2bf5..f9d735c 100644 --- a/nix/srcds/default.nix +++ b/nix/srcds/default.nix @@ -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