From 4ec6a035a532c7ac6b3ede90d8a5f4f41ca62ad7 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Thu, 17 Oct 2024 15:45:29 -0400 Subject: [PATCH] refactoring --- configuration.nix | 8 ++++---- flake.lock | 20 ++++++++++---------- flake.nix | 15 ++++++--------- services/caddy.nix | 6 +++--- services/gitea.nix | 4 ++-- services/immich.nix | 2 +- services/jellyfin.nix | 8 ++++---- services/llm.nix | 2 +- services/minecraft.nix | 5 ++--- 9 files changed, 33 insertions(+), 37 deletions(-) diff --git a/configuration.nix b/configuration.nix index 0d8d5ec..ed0e7b1 100644 --- a/configuration.nix +++ b/configuration.nix @@ -119,7 +119,7 @@ tmux - (pkgs.writeScriptBin "mc-attach" '' + (pkgs.writeScriptBin "mc-console" '' #!/bin/sh ${pkgs.tmux}/bin/tmux -S /run/minecraft/${service_configs.minecraft.server_name}.sock attach '') @@ -237,9 +237,9 @@ "render" "minecraft" - "gitea" - "jellyfin" - "ollama" + config.services.gitea.group + config.services.jellyfin.group + config.services.caddy.group ]; hashedPasswordFile = "/etc/nixos/secrets/hashedPass"; diff --git a/flake.lock b/flake.lock index 84335b2..de0597e 100644 --- a/flake.lock +++ b/flake.lock @@ -43,11 +43,11 @@ ] }, "locked": { - "lastModified": 1728784327, - "narHash": "sha256-Ib1rAnxE4ZZtO3WE7E4+mwivz37gwNOW5qPToJb9RPQ=", + "lastModified": 1729129578, + "narHash": "sha256-iZnoPpexSDKsCNFWfF6QFsxD/jC+l6GalSqx7Q3L41M=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "14f679c6eaba1ef43b6f6092ba82e24cba97c858", + "rev": "8a5c546a755ecc089ea8355c5b7ccbe284e8f00e", "type": "github" }, "original": { @@ -74,16 +74,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728492678, - "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", + "lastModified": 1729194116, + "narHash": "sha256-JrdCY/CX30eyUhd7u8hmDgZLuG/HsNDqTu8RQQTpQO0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", + "rev": "8e8d47269fef696d0264584a33405bae4c9a4005", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-unstable", + "ref": "master", "repo": "nixpkgs", "type": "github" } @@ -95,11 +95,11 @@ ] }, "locked": { - "lastModified": 1727065535, - "narHash": "sha256-jX83vspAPZnnpFUylUYqP+J1RoZc9w10bbQtsEwD20A=", + "lastModified": 1729072507, + "narHash": "sha256-srn/XjGNtaO34/CX6H85NVIQ1ksBDOSToMiLu+22Tek=", "owner": "SEIAROTg", "repo": "quadlet-nix", - "rev": "51e2beaaf127c8b4460d909c6c29ed9d60bfde0c", + "rev": "5970e7be88ec6d063a79c7669a68918c4827caa0", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 46491c0..3e74686 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,8 @@ description = "Flake for server muffin"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - # nixpkgs.url = "github:NixOS/nixpkgs/master"; + # nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs.url = "github:NixOS/nixpkgs/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; @@ -21,7 +21,7 @@ nix-minecraft, nixos-hardware, ... - }: + }@inputs: let username = "primary"; hostname = "muffin"; @@ -34,11 +34,8 @@ # TODO: add checks to make sure none of these collide ports = { https = 443; - immich = 3001; - jellyfin = 8096; + jellyfin = 8096; # no services.jellyfin option for this torrent = 6011; - minecraft = 25565; - gitea = 3281; ollama = 11434; }; @@ -75,8 +72,7 @@ }; jellyfin = { - data_dir = service_configs.services_dir + "/jellyfin"; - cache_dir = service_configs.services_dir + "/jellyfin_cache"; + dir = service_configs.services_dir + "/jellyfin"; }; ollama = { @@ -92,6 +88,7 @@ hostname eth_interface service_configs + inputs ; }; modules = [ diff --git a/services/caddy.nix b/services/caddy.nix index df814df..1f13e27 100644 --- a/services/caddy.nix +++ b/services/caddy.nix @@ -1,4 +1,4 @@ -{ service_configs, ... }: +{ config, service_configs, ... }: { services.caddy = { enable = true; @@ -15,7 +15,7 @@ ''; "immich.gardling.com".extraConfig = '' - reverse_proxy 127.0.0.1:${builtins.toString service_configs.ports.immich} + reverse_proxy 127.0.0.1:${builtins.toString config.services.immich.port} ''; "jellyfin.gardling.com".extraConfig = '' @@ -26,7 +26,7 @@ ''; ${service_configs.gitea.domain}.extraConfig = '' - reverse_proxy 127.0.0.1:${builtins.toString service_configs.ports.gitea} + reverse_proxy 127.0.0.1:${builtins.toString config.services.gitea.settings.server.HTTP_PORT} ''; }; }; diff --git a/services/gitea.nix b/services/gitea.nix index 76e1500..e930e61 100644 --- a/services/gitea.nix +++ b/services/gitea.nix @@ -16,8 +16,8 @@ settings = { server = { DOMAIN = service_configs.gitea.domain; - ROOT_URL = "https://" + service_configs.gitea.domain; - HTTP_PORT = service_configs.ports.gitea; + ROOT_URL = "https://" + config.services.gitea.settings.server.DOMAIN; + HTTP_PORT = 3281; LANDING_PAGE = "/explore/repos"; }; session = { diff --git a/services/immich.nix b/services/immich.nix index d7ed8e2..20c2f74 100644 --- a/services/immich.nix +++ b/services/immich.nix @@ -8,7 +8,7 @@ services.immich = { enable = true; mediaLocation = service_configs.immich.dir; - port = service_configs.ports.immich; + port = 2283; host = "0.0.0.0"; database = { createDB = false; diff --git a/services/jellyfin.nix b/services/jellyfin.nix index dc492ad..d971c0a 100644 --- a/services/jellyfin.nix +++ b/services/jellyfin.nix @@ -16,8 +16,8 @@ # used for local streaming openFirewall = true; - dataDir = service_configs.jellyfin.data_dir; - cacheDir = service_configs.jellyfin.cache_dir; + dataDir = service_configs.jellyfin.dir; + cacheDir = config.services.jellyfin.dataDir + "/cache"; }; users.users.${config.services.jellyfin.user}.extraGroups = [ @@ -27,7 +27,7 @@ # https://github.com/lyarenei/jellyfin-plugin-listenbrainz/issues/107 system.activationScripts.jellyfinListenBrain.text = '' - cp -v /etc/nixos/secrets/Jellyfin.Plugin.ListenBrainz.xml ${service_configs.jellyfin.data_dir}/plugins/configurations/ - chown ${config.services.jellyfin.user}:${config.services.jellyfin.group} ${service_configs.jellyfin.data_dir}/plugins/configurations/Jellyfin.Plugin.ListenBrainz.xml + cp -v /etc/nixos/secrets/Jellyfin.Plugin.ListenBrainz.xml ${config.services.jellyfin.dataDir}/plugins/configurations/ + chown ${config.services.jellyfin.user}:${config.services.jellyfin.group} ${config.services.jellyfin.dataDir}/plugins/configurations/Jellyfin.Plugin.ListenBrainz.xml ''; } diff --git a/services/llm.nix b/services/llm.nix index 73323a2..ca65410 100644 --- a/services/llm.nix +++ b/services/llm.nix @@ -8,7 +8,7 @@ services.ollama = { enable = true; home = service_configs.ollama.data_dir + "/home"; - models = service_configs.ollama.data_dir + "/home/models"; + models = config.services.ollama.home + "/models"; environmentVariables = { OLLAMA_LLM_LIBRARY = "cpu_avx2"; }; diff --git a/services/minecraft.nix b/services/minecraft.nix index f216c08..328073b 100644 --- a/services/minecraft.nix +++ b/services/minecraft.nix @@ -24,11 +24,10 @@ in enable = true; package = pkgs.fabricServers.fabric-1_21_1; - # Aikar's flags - jvmOpts = "-Xmx${heap_size} -Xms${heap_size} -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+ParallelRefProcEnabled -XX:+PerfDisableSharedMem -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1HeapRegionSize=8M -XX:G1HeapWastePercent=5 -XX:G1MaxNewSizePercent=40 -XX:G1MixedGCCountTarget=4 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1NewSizePercent=30 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:G1ReservePercent=20 -XX:InitiatingHeapOccupancyPercent=15 -XX:MaxGCPauseMillis=200 -XX:MaxTenuringThreshold=1 -XX:SurvivorRatio=32"; + jvmOpts = "-Xmx${heap_size} -Xms${heap_size} -XX:+UseZGC -XX:+ZGenerational"; serverProperties = { - server-port = service_configs.ports.minecraft; + server-port = 25565; enforce-whitelist = true; gamemode = "survival"; white-list = true;