mirror of
https://github.com/AsgardEternal/Squad.nix.git
synced 2025-01-04 21:19:27 -06:00
108 lines
3.3 KiB
Org Mode
108 lines
3.3 KiB
Org Mode
* Squad.nix
|
|
|
|
NixOS flake for standing up multiple [[https://joinsquad.com/][Squad]] Servers on
|
|
[[https://nixos.org/][NixOS]].
|
|
|
|
** Installation to a NixOS Flake Config
|
|
|
|
#+BEGIN_SRC nix
|
|
{
|
|
inputs.squad-nix.url = "github:AsgardEternal/Squad.nix";
|
|
|
|
outputs = { self, nixpkgs, squad-nix, ... }: {
|
|
nixosConfigurations.exampleHost = nixpkgs.lib.nixosSystem {
|
|
system = "x86_64-linux";
|
|
modules = [
|
|
# ...
|
|
squad-nix.nixosModules.server
|
|
]
|
|
};
|
|
}
|
|
}
|
|
#+END_SRC
|
|
|
|
** Example Server Configuration
|
|
|
|
#+BEGIN_SRC nix
|
|
services.squad-server = {
|
|
servers."[ASG] Asgard Eternal | New Player Friendly" = {
|
|
enable = true;
|
|
openFirewall = true;
|
|
config = {
|
|
layerRotation = [
|
|
"Gorodok_Invasion_v3"
|
|
"Gorodok_RAAS_v12"
|
|
"Harju_RAAS_v6"
|
|
"Manicouagan_Invasion_v2"
|
|
"Manicouagan_Invasion_v2"
|
|
"Yehorivka_RAAS_v13"
|
|
"Mestia_Invasion_v2"
|
|
];
|
|
admins = {
|
|
Admin = {
|
|
comment = "Admin Group";
|
|
accessLevels = [
|
|
"changemap"
|
|
"pause"
|
|
"balance"
|
|
"chat"
|
|
"kick"
|
|
"ban"
|
|
"cameraman"
|
|
"teamchange"
|
|
"forceteamchange"
|
|
"canseeadminchat"
|
|
"reserve"
|
|
"config"
|
|
"cheat"
|
|
"featuretest"
|
|
];
|
|
members = [
|
|
{
|
|
id = 76561199101367413;
|
|
comment = "Atrocity";
|
|
}
|
|
{
|
|
id = 76561198153769543;
|
|
comment = "MaxRecon";
|
|
}
|
|
# ...
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
#+END_SRC
|
|
|
|
All settings can be viewed within the [[./nixos-modules/squad-servers.nix][Squad Server Module]].
|
|
|
|
** Defaults
|
|
|
|
By default this module does /not/ attempt to increment the in use ports for each server defined.
|
|
It is expected that each server has its ports defined via ~gamePort~, ~rconPort~, ~queryPort~, and ~beaconPort~ if more than one server is defined.
|
|
|
|
The default configuration largely follows the default settings that Squad installs its configs
|
|
as, but there may be options that do not closely follow defaults or shouldn't be modified. One
|
|
such example is map voting. This is due to the lack of functionality for the feature, or due to
|
|
the option not being permitted in Licensed servers.
|
|
|
|
This module attempts to closely follow licensed server configuration requirements.
|
|
|
|
** Security
|
|
|
|
Preference all ~passwordFile~ options over the generic ~password~ option if possible (or
|
|
equivalents, such as ~license.file~ instead of ~license.content~). Using non file options for
|
|
secrets can expose your secrets in the Nix store.
|
|
|
|
By default all secrets are loaded via [[https://systemd.io/CREDENTIALS/][Systemd Credentials]]
|
|
(~systemd.systemd-credentials(7)~).
|
|
|
|
** Purpose of this Repository
|
|
|
|
As part of a migration in Asgard Eternal's infrastructure, we're shifting our primary operating
|
|
system to NixOS. This module was created separately to support that initiative.
|
|
|
|
Interested in joining up with a community to play Squad? Join [[https://discord.gg/asg][Asgard Eternal's Discord]].
|