From 04d7ca486546a7cf6ed3227b418de39ca815349d Mon Sep 17 00:00:00 2001 From: Jermeiah S Date: Wed, 25 Jun 2025 16:41:26 -0400 Subject: [PATCH 1/3] feature: added arma example --- .../nixos/arma-reforger-tofu/default.nix | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 configurations/nixos/arma-reforger-tofu/default.nix diff --git a/configurations/nixos/arma-reforger-tofu/default.nix b/configurations/nixos/arma-reforger-tofu/default.nix new file mode 100644 index 0000000..a11942e --- /dev/null +++ b/configurations/nixos/arma-reforger-tofu/default.nix @@ -0,0 +1,55 @@ +{ + flake, + modulesPath, + config, + ... +}: + +let + inherit (flake) inputs; + inherit (inputs) self; +in +{ + imports = [ + self.nixosModules.default + "${modulesPath}/virtualisation/lxc-container.nix" + ]; + # sample way to make a directory + # systemd.tmpfiles.rules = [ + # "d /var/lib/myapp 0755 myuser mygroup -" + # ]; + + services.yggdrasil.persistentKeys = false; + virtualisation.podman.enable = true; + virtualisation.oci-containers.containers = { + arma = { + image = "ghcr.io/acemod/arma-reforger:latest"; + ports = [ + "2001:2001/udp" + "17777:17777/udp" + "19999:19999/udp" + ]; + volumes = [ + # make sure this is a path that exists + # my recomendation is to use /var/lib/reforger + # be sure to have that directory created + "./reforger/configs:/reforger/Configs" + "./reforger/profile:/home/profile" + "./reforger/workshop:/reforger/workshop" + ]; + environment = { + SERVER_PUBLIC_ADDRESS = "public-ip"; + GAME_NAME = "My Docker Reforger Server"; + }; + }; + }; + deploy = { + enable = false; + }; + networking = { + hostName = "arma-reforger-tofu"; + }; + environment.systemPackages = [ + ]; + system.stateVersion = "25.05"; +} From 1ce2ab2da900edba6ba555cb985883da52dc7780 Mon Sep 17 00:00:00 2001 From: Jermeiah S Date: Wed, 25 Jun 2025 16:41:26 -0400 Subject: [PATCH 2/3] feature: added arma example --- .../nixos/arma-reforger-tofu/default.nix | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 configurations/nixos/arma-reforger-tofu/default.nix diff --git a/configurations/nixos/arma-reforger-tofu/default.nix b/configurations/nixos/arma-reforger-tofu/default.nix new file mode 100644 index 0000000..4665437 --- /dev/null +++ b/configurations/nixos/arma-reforger-tofu/default.nix @@ -0,0 +1,57 @@ +{ + flake, + modulesPath, + config, + ... +}: + +let + inherit (flake) inputs; + inherit (inputs) self; +in +{ + imports = [ + self.nixosModules.default + "${modulesPath}/virtualisation/lxc-container.nix" + ]; + # sample way to make a directory + # systemd.tmpfiles.rules = [ + # "d /var/lib/myapp 0755 myuser mygroup -" + # ]; + # read more options here + # https://search.nixos.org/options?channel=25.05&show=virtualisation.oci-containers.containers.%3Cname%3E.workdir&from=0&size=50&sort=relevance&type=packages&query=oci+containers + # https://wiki.nixos.org/wiki/NixOS_Containers + services.yggdrasil.persistentKeys = false; + virtualisation.podman.enable = true; + virtualisation.oci-containers.containers = { + arma = { + image = "ghcr.io/acemod/arma-reforger:latest"; + ports = [ + "2001:2001/udp" + "17777:17777/udp" + "19999:19999/udp" + ]; + volumes = [ + # make sure this is a path that exists + # my recomendation is to use /var/lib/reforger + # be sure to have that directory created + "./reforger/configs:/reforger/Configs" + "./reforger/profile:/home/profile" + "./reforger/workshop:/reforger/workshop" + ]; + environment = { + SERVER_PUBLIC_ADDRESS = "public-ip"; + GAME_NAME = "My Docker Reforger Server"; + }; + }; + }; + deploy = { + enable = false; + }; + networking = { + hostName = "arma-reforger-tofu"; + }; + environment.systemPackages = [ + ]; + system.stateVersion = "25.05"; +} From 83469322e6e54337ad3870df09cc3b4ac24a6493 Mon Sep 17 00:00:00 2001 From: Jermeiah S Date: Wed, 25 Jun 2025 18:34:50 -0400 Subject: [PATCH 3/3] feature: added nftables config [deploy] this default config allows everything internally but only allows ssh over ygg0 --- modules/nixos/common/firewall.nix | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 modules/nixos/common/firewall.nix diff --git a/modules/nixos/common/firewall.nix b/modules/nixos/common/firewall.nix new file mode 100644 index 0000000..6c93641 --- /dev/null +++ b/modules/nixos/common/firewall.nix @@ -0,0 +1,33 @@ +{ + lib, + pkgs, + config, + ... +}: +{ + networking.nftables = { + enable = true; + ruleset = '' + table inet filter { + chain input { + type filter hook input priority filter; policy accept; + ct state related,established accept + + # Restrict ygg0: only allow SSH in + iifname "ygg0" tcp dport 22 accept + iifname "ygg0" drop + } + + chain forward { + type filter hook forward priority filter; policy accept; + # Optional: drop forwarding via ygg0 + iifname "ygg0" drop + } + + chain output { + type filter hook output priority filter; policy accept; + } + } + ''; + }; +}