{ inputs = { nixpkgs.url = "nixpkgs/nixos-26.05"; flakelight = { url = "github:nix-community/flakelight"; inputs.nixpkgs.follows = "nixpkgs"; }; steam-fetcher = { url = "github:nix-community/steam-fetcher"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { flakelight, steam-fetcher, ... }: let inherit (builtins) listToAttrs map; inheritPkgs = names: listToAttrs (map (name: { inherit name; value = {pkgs, ...}: pkgs.${name}; }) names); in flakelight ./. { nixpkgs.config = {allowUnfree = true;}; systems = ["x86_64-linux" "i686-linux"]; withOverlays = [ steam-fetcher.overlay (import ./nix/overlay.nix) ]; formatters = pkgs: with pkgs; { "*.nix" = pkgs.lib.getExe alejandra; }; perSystem = pkgs: { 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; hl2sdk = pkgs.hl2sdk; steam-depots = pkgs.steam-depots; }; packages = inheritPkgs [ "ambuild" "sourcepawn" "sourcemod" "srctvplus" "sourcemod-includes" "sourcemod-include-curl" "sourcemod-include-library" "sourcemod-include-steamworks" "sourcemod-include-sha1" "srcds-tf2" "sourcemod-addon-curl" "sourcemod-addon-steamworks" "sourcemod-addon-socket" "sourcemod-plugin-soap-tf2dm" "sourcemod-plugin-progressive-ruleset-timer" "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-afk" ] // { test = pkgs: pkgs.srcds-tf2.customize { cfg = { hostname = "Spire Server"; }; sourcemod = true; plugins = with pkgs; [ sourcemod-addon-curl sourcemod-addon-steamworks sourcemod-addon-socket sourcemod-plugin-mapdownloader sourcemod-plugin-whitelist sourcemod-plugin-nocheats ]; }; 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="; }; }; spEnv = pkgs: pkgs.sourcepawn.buildEnv (with pkgs; [ sourcemod-includes sourcemod-addon-socket ]); }; checks = { buildTestScript = {pkgs, ...}: pkgs.buildSourcePawnScript { name = "test"; src = pkgs.fetchurl { url = "https://codeberg.org/spire/nocheats/raw/commit/5e0e21c241fdf8907d83d9bcf3cce37711b83d14/plugin/nocheats.sp"; sha256 = "sha256-Z3RJhuc9c8YQTo9gnLTBrqL4JpADZgDttrJVyE/MWdM="; }; }; }; devShells.default = {pkgs, ...}: { packages = with pkgs; [nix-update depotdownloader]; }; }; }