mirror of
https://codeberg.org/spire/nix.git
synced 2026-08-02 12:25:00 +02:00
add helper for srcds with sourcemod
This commit is contained in:
parent
b848ca3bc9
commit
b6860cbb15
6 changed files with 43 additions and 18 deletions
15
flake.nix
15
flake.nix
|
|
@ -39,7 +39,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
perSystem = pkgs: {
|
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;
|
metamods = pkgs.lib.mapAttrs (name: sdk: pkgs.metamod-source-builder {${name} = sdk;}) pkgs.hl2sdk;
|
||||||
hl2sdk = pkgs.hl2sdk;
|
hl2sdk = pkgs.hl2sdk;
|
||||||
steam-depots = pkgs.steam-depots;
|
steam-depots = pkgs.steam-depots;
|
||||||
|
|
@ -58,8 +58,17 @@
|
||||||
]
|
]
|
||||||
// {
|
// {
|
||||||
test = pkgs:
|
test = pkgs:
|
||||||
pkgs.srcds-tf2.withConfig {
|
(pkgs.srcds-tf2.withConfig
|
||||||
hostname = "Spire Server";
|
{
|
||||||
|
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=";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,7 @@
|
||||||
nix-update-script,
|
nix-update-script,
|
||||||
lib,
|
lib,
|
||||||
}: let
|
}: let
|
||||||
inherit (builtins) mapAttrs;
|
inherit (lib) importJSON mapAttrs;
|
||||||
inherit (lib) optionals importJSON;
|
|
||||||
revisions = importJSON ./hl2sdks.json;
|
revisions = importJSON ./hl2sdks.json;
|
||||||
fetchRev = {
|
fetchRev = {
|
||||||
rev,
|
rev,
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@ final: prev: {
|
||||||
ambuild = final.python3Packages.callPackage ./ambuild.nix {};
|
ambuild = final.python3Packages.callPackage ./ambuild.nix {};
|
||||||
metamod-source = final.callPackage ./metamod-source.nix {} {};
|
metamod-source = final.callPackage ./metamod-source.nix {} {};
|
||||||
metamod-source-builder = 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 {};
|
sourcepawn = final.callPackage ./sourcepawn.nix {};
|
||||||
sourcemod-includes = final.callPackage ./includes/sourcemod-includes.nix {};
|
sourcemod-includes = final.callPackage ./includes/sourcemod-includes.nix {};
|
||||||
buildSourcePawnScript = final.callPackage ./build-sourcepawn-script.nix {};
|
buildSourcePawnScript = final.callPackage ./build-sourcepawn-script.nix {};
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,7 @@
|
||||||
writeShellScriptBin,
|
writeShellScriptBin,
|
||||||
zlib,
|
zlib,
|
||||||
writeScript,
|
writeScript,
|
||||||
sdks ? {},
|
}: sdks: let
|
||||||
}: let
|
|
||||||
inherit (builtins) concatStringsSep attrNames attrValues;
|
inherit (builtins) concatStringsSep attrNames attrValues;
|
||||||
inherit (lib) optionals;
|
inherit (lib) optionals;
|
||||||
combinedSdks = symlinkJoin {
|
combinedSdks = symlinkJoin {
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,13 @@
|
||||||
steamworks-sdk-redist,
|
steamworks-sdk-redist,
|
||||||
system,
|
system,
|
||||||
callPackage,
|
callPackage,
|
||||||
srcds-tf2,
|
|
||||||
depots,
|
depots,
|
||||||
|
sourcemod-builder,
|
||||||
|
metamod-source-builder,
|
||||||
|
gamedir,
|
||||||
|
hl2sdk,
|
||||||
|
sdk,
|
||||||
|
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;
|
||||||
depotInputs = importJSON ./depots.json;
|
depotInputs = importJSON ./depots.json;
|
||||||
|
|
@ -76,28 +81,36 @@
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
final;
|
final;
|
||||||
makeWithSourcemod = base: config: let
|
makeWithSourcemod = base: {}: let
|
||||||
configFile = callPackage ./cfg.nix {
|
sdks = {
|
||||||
name = "server.cfg";
|
${sdk} = hl2sdk.${sdk};
|
||||||
cfg = config;
|
|
||||||
};
|
};
|
||||||
|
metaModSdk = metamod-source-builder sdks;
|
||||||
|
sourceModSdk = sourcemod-builder sdks;
|
||||||
final = symlinkJoin {
|
final = symlinkJoin {
|
||||||
name = "srcds-tf2-src";
|
name = "srcds-tf2-src";
|
||||||
paths = [base configFile];
|
paths = [base metaModSdk sourceModSdk];
|
||||||
passthru = makeWiths final;
|
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
|
in
|
||||||
final;
|
final;
|
||||||
makeWiths = base: {
|
makeWiths = base: {
|
||||||
withConfig = makeWithConfig 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";
|
||||||
in
|
|
||||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
final = stdenvNoCC.mkDerivation (finalAttrs: {
|
||||||
pname = "srcds-tf2";
|
pname = "srcds-tf2";
|
||||||
version = timeToVersion time;
|
version = timeToVersion time;
|
||||||
inherit src;
|
inherit src;
|
||||||
|
|
@ -129,7 +142,7 @@ in
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
|
|
||||||
passthru = makeWiths srcds-tf2;
|
passthru = makeWiths final;
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
inherit mainProgram;
|
inherit mainProgram;
|
||||||
|
|
@ -142,4 +155,6 @@ in
|
||||||
license = licenses.unfree;
|
license = licenses.unfree;
|
||||||
platforms = ["x86_64-linux" "i686-linux"];
|
platforms = ["x86_64-linux" "i686-linux"];
|
||||||
};
|
};
|
||||||
})
|
});
|
||||||
|
in
|
||||||
|
final
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ in {
|
||||||
depot_id = 232250;
|
depot_id = 232250;
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
gamedir = "tf";
|
||||||
|
sdk = "tf2";
|
||||||
};
|
};
|
||||||
steam-depots = listToAttrs (map (depot: {
|
steam-depots = listToAttrs (map (depot: {
|
||||||
name = "steam-depot-${toString depot.app_id}-${toString depot.depot_id}";
|
name = "steam-depot-${toString depot.app_id}-${toString depot.depot_id}";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue