From 5a6fb78d28b5de099fb46b0ca593a9913162540f Mon Sep 17 00:00:00 2001 From: muon Date: Wed, 29 Jan 2025 14:23:09 +0000 Subject: [PATCH] Add vrising server --- hosts/muho/configuration.nix | 2 + modules/nixos/server/docker/default.nix | 2 +- modules/nixos/server/gaming/default.nix | 4 +- modules/nixos/server/gaming/vrising.nix | 57 +++++++++++++++++++++++++ 4 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 modules/nixos/server/gaming/vrising.nix diff --git a/hosts/muho/configuration.nix b/hosts/muho/configuration.nix index f8b8407..24cfc2e 100644 --- a/hosts/muho/configuration.nix +++ b/hosts/muho/configuration.nix @@ -42,6 +42,8 @@ in { mods.server.cal.enable = true; mods.server.chat.enable = true; + mods.server.vrising.enable = true; + mods.tailscale.enable = true; mods.wireguard.id = 3; diff --git a/modules/nixos/server/docker/default.nix b/modules/nixos/server/docker/default.nix index 26dbea8..0c64e33 100644 --- a/modules/nixos/server/docker/default.nix +++ b/modules/nixos/server/docker/default.nix @@ -19,7 +19,7 @@ # Arion works with Docker, but for NixOS-based containers, you need Podman # since NixOS 21.05. - virtualisation.docker.enable = true; + # virtualisation.docker.enable = true; # virtualisation.podman.enable = true; # virtualisation.podman.dockerSocket.enable = true; # virtualisation.podman.defaultNetwork.dnsname.enable = true; diff --git a/modules/nixos/server/gaming/default.nix b/modules/nixos/server/gaming/default.nix index 28351e7..2dc432f 100644 --- a/modules/nixos/server/gaming/default.nix +++ b/modules/nixos/server/gaming/default.nix @@ -6,9 +6,7 @@ }; }; - imports = [ - ./astral.nix - ]; + imports = [ ./astral.nix ./vrising.nix ]; config = lib.mkIf config.mods.server.gaming.enable { mods.server.astral.enable = true; diff --git a/modules/nixos/server/gaming/vrising.nix b/modules/nixos/server/gaming/vrising.nix new file mode 100644 index 0000000..0913b8c --- /dev/null +++ b/modules/nixos/server/gaming/vrising.nix @@ -0,0 +1,57 @@ +# Auto-generated using compose2nix v0.3.2-pre. +{ pkgs, lib, config, ... }: +let cfg = config.mods.server.vrising; +in with lib; { + options.mods.server.vrising = { + enable = mkEnableOption { + default = false; + description = "enables docker containers"; + }; + }; + + config = mkIf cfg.enable { + # Runtime + virtualisation.podman = { + enable = true; + autoPrune.enable = true; + dockerCompat = true; + defaultNetwork.settings = { + # Required for container networking to be able to use names. + dns_enabled = true; + }; + }; + + # Enable container name DNS for non-default Podman networks. + # https://github.com/NixOS/nixpkgs/issues/226365 + networking.firewall.interfaces."podman+".allowedUDPPorts = [ 53 ]; + networking.firewall.allowedUDPPorts = [ 9876 9877 ]; + + virtualisation.oci-containers.backend = "podman"; + + # Containers + virtualisation.oci-containers.containers."vrising-vrising" = { + image = "trueosiris/vrising"; + environment = { "SERVERNAME" = "yapping at the succ"; }; + volumes = [ + "/home/muon/projects/vrising/container/persistentdata:/mnt/vrising/persistentdata:rw" + "/home/muon/projects/vrising/container/server:/mnt/vrising/server:rw" + ]; + ports = [ "0.0.0.0:9876:9876/udp" "0.0.0.0:9877:9877/udp" ]; + log-driver = "journald"; + extraOptions = [ ]; + }; + systemd.services."podman-vrising-vrising" = { + serviceConfig = { Restart = lib.mkOverride 90 "always"; }; + partOf = [ "podman-compose-vrising-root.target" ]; + wantedBy = [ "podman-compose-vrising-root.target" ]; + }; + + # Root service + # When started, this will automatically create all resources and start + # the containers. When stopped, this will teardown all resources. + systemd.targets."podman-compose-vrising-root" = { + unitConfig = { Description = "Root target generated by compose2nix."; }; + wantedBy = [ "multi-user.target" ]; + }; + }; +}