diff --git a/flake.nix b/flake.nix index 9bbf200..50120fa 100644 --- a/flake.nix +++ b/flake.nix @@ -62,6 +62,16 @@ "sourcemod-plugin-progressive-ruleset-timer" "sourcemod-plugin-socket" "sourcemod-plugin-tf2-comp-fixes" + "sourcemod-plugin-mapdownloader" + "sourcemod-plugin-whitelist" + "sourcemod-plugin-nocheats" + "sourcemod-plugin-nochat" + "sourcemod-plugin-autoexec" + "sourcemod-plugin-sdrconnect" + "sourcemod-plugin-setteam" + "sourcemod-plugin-banned" + "sourcemod-plugin-who" + "sourcemod-plugin-webrcon" ] // { test = pkgs: @@ -70,6 +80,12 @@ hostname = "Spire Server"; }; sourcemod = true; + plugins = with pkgs; [ + sourcemod-addon-curl + sourcemod-plugin-mapdownloader + sourcemod-plugin-whitelist + sourcemod-plugin-nocheats + ]; }; testScript = pkgs: pkgs.buildSourcePawnScript { diff --git a/nix/sourcemod/plugins/autoexec.nix b/nix/sourcemod/plugins/autoexec.nix new file mode 100644 index 0000000..2b1f4c9 --- /dev/null +++ b/nix/sourcemod/plugins/autoexec.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "autoexec"; + version = "0.2-unstable-2026-02-03"; + rev = "9ef880d8cd3d2ad362aa42d7f8a77a8161cabb4d"; + hash = "sha256-RxQzFMSudQIOa6f/qaCjPS4qA1cgx0voZYBcHhe2UpU="; +} diff --git a/nix/sourcemod/plugins/banned.nix b/nix/sourcemod/plugins/banned.nix new file mode 100644 index 0000000..332f299 --- /dev/null +++ b/nix/sourcemod/plugins/banned.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "banned"; + version = "0-unstable-2026-06-18"; + rev = "c8186c7bd56e15f2e2e8e5988c0d18058a02df8b"; + hash = "sha256-JA9WeM0Je0aHB/z+6xImztTouJNGkaPwD9Cp4z8Ko+4="; +} diff --git a/nix/sourcemod/plugins/builder/spire-plugin.nix b/nix/sourcemod/plugins/builder/spire-plugin.nix new file mode 100644 index 0000000..2dc5c87 --- /dev/null +++ b/nix/sourcemod/plugins/builder/spire-plugin.nix @@ -0,0 +1,44 @@ +{ + fetchFromGitea, + stdenvNoCC, + nix-update-script, + lib, +}: +lib.extendMkDerivation { + constructDrv = stdenvNoCC.mkDerivation; + excludeDrvArgNames = ["name" "version" "rev" "hash"]; + extendDrvArgs = finalAttrs: { + name, + version, + rev, + hash, + repo ? name, + }: { + pname = "sourcemod-plugin-${name}"; + inherit version; + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "spire"; + inherit rev hash repo; + }; + + installPhase = '' + runHook preInstall + + mkdir -p $out/addons/sourcemod/plugins/ + mv plugin/*.smx $out/addons/sourcemod/plugins/ + + runHook postInstall + ''; + + passthru = { + updateScript = nix-update-script { + extraArgs = [ + "--flake" + "--version=branch" + "--override-filename=nix/sourcemod/plugins/${name}.nix" + ]; + }; + }; + }; +} diff --git a/nix/sourcemod/plugins/curl.nix b/nix/sourcemod/plugins/curl.nix index 7c066cc..9a7a4ad 100644 --- a/nix/sourcemod/plugins/curl.nix +++ b/nix/sourcemod/plugins/curl.nix @@ -4,7 +4,6 @@ nix-update-script, sourcemod, metamod-source, - curl, gsasl, curl-3-compat, sourcepawn, diff --git a/nix/sourcemod/plugins/mapdownloader.nix b/nix/sourcemod/plugins/mapdownloader.nix new file mode 100644 index 0000000..058f981 --- /dev/null +++ b/nix/sourcemod/plugins/mapdownloader.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "mapdownloader"; + version = "0-unstable-2025-10-27"; + rev = "06dbac41712bd62ae3aa1fd442ab2265ee2f488f"; + hash = "sha256-aNlrxrv2K73lKP7hYOER3um4P6fbiV/nF4GDcVaUNbo="; +} diff --git a/nix/sourcemod/plugins/nochat.nix b/nix/sourcemod/plugins/nochat.nix new file mode 100644 index 0000000..14ebb29 --- /dev/null +++ b/nix/sourcemod/plugins/nochat.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "nochat"; + version = "0-unstable-2026-03-28"; + rev = "7c161d4eef058bf3e59146a37ff6ca16594e013b"; + hash = "sha256-cO64QGlM8oGVGaDgac74VjIFLrNe8aPrOo3tvrSD4Eo="; +} diff --git a/nix/sourcemod/plugins/nocheats.nix b/nix/sourcemod/plugins/nocheats.nix new file mode 100644 index 0000000..ac00e83 --- /dev/null +++ b/nix/sourcemod/plugins/nocheats.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "nocheats"; + version = "0-unstable-2020-05-08"; + rev = "5e0e21c241fdf8907d83d9bcf3cce37711b83d14"; + hash = "sha256-1uEw0av8NKpdbeuvzr2LavTl0F3K9k9jW7LYoA3UpIE="; +} diff --git a/nix/sourcemod/plugins/overlay.nix b/nix/sourcemod/plugins/overlay.nix index bb51207..90acd3d 100644 --- a/nix/sourcemod/plugins/overlay.nix +++ b/nix/sourcemod/plugins/overlay.nix @@ -1,8 +1,19 @@ final: prev: { + mkSpirePlugin = final.callPackage ./builder/spire-plugin.nix {}; sourcemod-addon-curl = final.callPackage ./curl.nix {}; sourcemod-plugin-steamworks = final.callPackage ./steamworks.nix {}; sourcemod-plugin-soap-tf2dm = final.callPackage ./soap-tf2dm.nix {}; sourcemod-plugin-progressive-ruleset-timer = final.callPackage ./progressive-ruleset-timer.nix {}; sourcemod-plugin-socket = final.callPackage ./socket.nix {}; sourcemod-plugin-tf2-comp-fixes = final.callPackage ./tf2-comp-fixes.nix {}; + sourcemod-plugin-mapdownloader = final.callPackage ./mapdownloader.nix {}; + sourcemod-plugin-whitelist = final.callPackage ./whitelist.nix {}; + sourcemod-plugin-nocheats = final.callPackage ./nocheats.nix {}; + sourcemod-plugin-nochat = final.callPackage ./nochat.nix {}; + sourcemod-plugin-autoexec = final.callPackage ./autoexec.nix {}; + sourcemod-plugin-sdrconnect = final.callPackage ./sdrconnect.nix {}; + sourcemod-plugin-setteam = final.callPackage ./setteam.nix {}; + sourcemod-plugin-banned = final.callPackage ./banned.nix {}; + sourcemod-plugin-who = final.callPackage ./who.nix {}; + sourcemod-plugin-webrcon = final.callPackage ./webrcon.nix {}; } diff --git a/nix/sourcemod/plugins/sdrconnect.nix b/nix/sourcemod/plugins/sdrconnect.nix new file mode 100644 index 0000000..8d14c6a --- /dev/null +++ b/nix/sourcemod/plugins/sdrconnect.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "sdrconnect"; + version = "0-unstable-2024-03-23"; + rev = "134aeab59bb09c93bfeadea492098ebb671ada9b"; + hash = "sha256-b3m029OnIJKonEWhQSFFHNZsQ4P04NP/ls5f+jmB5nQ="; +} diff --git a/nix/sourcemod/plugins/setteam.nix b/nix/sourcemod/plugins/setteam.nix new file mode 100644 index 0000000..8aa9c2f --- /dev/null +++ b/nix/sourcemod/plugins/setteam.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "setteam"; + version = "0-unstable-2026-06-25"; + rev = "7ae52b678ff52959a76ece3a68359e5d8b554cfa"; + hash = "sha256-Lnq1g7U7kFpyLhO9erw5gRmKcXYo9qTPANL3uY6byx0="; +} diff --git a/nix/sourcemod/plugins/webrcon.nix b/nix/sourcemod/plugins/webrcon.nix new file mode 100644 index 0000000..7b0067c --- /dev/null +++ b/nix/sourcemod/plugins/webrcon.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "webrcon"; + version = "0-unstable-2020-05-08"; + rev = "d407f5b2e85432b9cbd8e8e5ff2a8a2a08a816e9"; + hash = "sha256-EuskFNEutkBOQJb03BYD7mvD3CDqEM3jvzpazLIdZTM="; +} diff --git a/nix/sourcemod/plugins/whitelist.nix b/nix/sourcemod/plugins/whitelist.nix new file mode 100644 index 0000000..1bfeb75 --- /dev/null +++ b/nix/sourcemod/plugins/whitelist.nix @@ -0,0 +1,8 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "whitelist"; + version = "0-unstable-2025-10-29"; + rev = "333c5065514a6c5b2f11e57f8ef0bbe80ac28a74"; + hash = "sha256-1za2Ii772ymjejI0LaT61hmqEmIMnD/7sVXpMJIwMrc="; + repo = "sm_whitelist"; +} diff --git a/nix/sourcemod/plugins/who.nix b/nix/sourcemod/plugins/who.nix new file mode 100644 index 0000000..7e5ab80 --- /dev/null +++ b/nix/sourcemod/plugins/who.nix @@ -0,0 +1,7 @@ +{mkSpirePlugin}: +mkSpirePlugin { + name = "who"; + version = "0-unstable-2025-05-04"; + rev = "e57deb78388d7812a587c5c7db5505b4286b5607"; + hash = "sha256-4vBQROGrMdm09W0/KtdkOAQr973iT9dmXr0+1dAIiq4="; +} diff --git a/nix/srcds/addons.nix b/nix/srcds/addons.nix index 7476fc2..1a15f3d 100644 --- a/nix/srcds/addons.nix +++ b/nix/srcds/addons.nix @@ -5,6 +5,7 @@ gamedir, hl2sdk, sdk, + extraPackages, }: let sdks = { ${sdk} = hl2sdk.${sdk}; @@ -14,7 +15,7 @@ in symlinkJoin { name = "srcds-tf2-src-addons"; - paths = [metaModSdk sourceModSdk]; + paths = [metaModSdk sourceModSdk] ++ extraPackages; postBuild = '' mv $out tmp mkdir $out diff --git a/nix/srcds/overlay.nix b/nix/srcds/overlay.nix index 84183c6..197be17 100644 --- a/nix/srcds/overlay.nix +++ b/nix/srcds/overlay.nix @@ -2,6 +2,7 @@ final: prev: let inherit (prev.lib) toString importJSON listToAttrs map; depotInputs = importJSON ./depots.json; in { + curl-3-compat = final.callPackage ./curl-compat.nix {}; srcds-tf2 = final.callPackage ./default.nix { depots = [ {