My NixOS config Part 3: Flake-Parts Crusaders nix.ladas552.me
hjem nix nixos impermanence flake-parts nvfetcher niri noctalia

minecraft over tailscale. Not plugins right now. Will check relay in next commit

ladas552.me 4ec3a97e 83f98bde

verified
+204 -57
+35 -15
_sources/generated.json
··· 50 50 "pinned": false, 51 51 "src": { 52 52 "name": null, 53 - "sha256": "sha256-qXuDUtank46O87jASxczmVMk0iD4JaZi2j9LSBe9VCM=", 53 + "sha256": "sha256-4Qz3yqb9BTisd8XvGvgILvmRNgYBQgJarw5F3fZeLlY=", 54 54 "type": "url", 55 - "url": "https://github.com/imputnet/helium-linux/releases/download/0.9.4.1/helium-0.9.4.1-x86_64_linux.tar.xz" 55 + "url": "https://github.com/imputnet/helium-linux/releases/download/0.10.1.1/helium-0.10.1.1-x86_64_linux.tar.xz" 56 56 }, 57 - "version": "0.9.4.1" 57 + "version": "0.10.1.1" 58 58 }, 59 59 "impermanence": { 60 60 "cargoLock": null, ··· 139 139 }, 140 140 "version": "e32b2dec08ec5a3ac3c7b0b4a500343886816e85" 141 141 }, 142 + "nix-minecraft": { 143 + "cargoLock": null, 144 + "date": "2026-03-11", 145 + "extract": null, 146 + "name": "nix-minecraft", 147 + "passthru": null, 148 + "pinned": false, 149 + "src": { 150 + "deepClone": false, 151 + "fetchSubmodules": false, 152 + "leaveDotGit": false, 153 + "name": null, 154 + "rev": "4d744dff3d8e0d9e7f85e06244ad353bdcf424ff", 155 + "sha256": "sha256-GvveRb/AiCb/dKXculKiNiAMW4CXMPwpeyi6c/S/a7o=", 156 + "sparseCheckout": [], 157 + "type": "git", 158 + "url": "https://github.com/Infinidoge/nix-minecraft" 159 + }, 160 + "version": "4d744dff3d8e0d9e7f85e06244ad353bdcf424ff" 161 + }, 142 162 "nixos-hardware": { 143 163 "cargoLock": null, 144 164 "date": "2026-03-08", ··· 181 201 }, 182 202 "noctalia-dev": { 183 203 "cargoLock": null, 184 - "date": "2026-03-08", 204 + "date": "2026-03-11", 185 205 "extract": null, 186 206 "name": "noctalia-dev", 187 207 "passthru": null, ··· 191 211 "fetchSubmodules": false, 192 212 "leaveDotGit": false, 193 213 "name": null, 194 - "rev": "1fd0b187b50eff28f4f5fe7d93210d6c98b80e6c", 195 - "sha256": "sha256-4iNQ9Up6yRWnjtSfScXJBXICoJ9ZJjj5914W+keAc9c=", 214 + "rev": "13f0b8fce4588bd17c99b53d9cba6d73defed0c2", 215 + "sha256": "sha256-2+oZquEDg+5YLxXmEF3R0Kz40gJNLast6JLRgXFGzjs=", 196 216 "sparseCheckout": [], 197 217 "type": "git", 198 218 "url": "https://github.com/noctalia-dev/noctalia-shell" 199 219 }, 200 - "version": "1fd0b187b50eff28f4f5fe7d93210d6c98b80e6c" 220 + "version": "13f0b8fce4588bd17c99b53d9cba6d73defed0c2" 201 221 }, 202 222 "noctalia-qs": { 203 223 "cargoLock": null, 204 - "date": "2026-03-07", 224 + "date": "2026-03-10", 205 225 "extract": null, 206 226 "name": "noctalia-qs", 207 227 "passthru": null, ··· 211 231 "fetchSubmodules": false, 212 232 "leaveDotGit": false, 213 233 "name": null, 214 - "rev": "b58414209fce1669cff818e50468e926613baa10", 215 - "sha256": "sha256-VwM1+5dwxIhZ0ahTlHnlMOC/Mgn8wGwcPKhM93Q+w9s=", 234 + "rev": "6b9eceefde3d47ca83c544b54bcdd358be4cbd2f", 235 + "sha256": "sha256-YOkWzVq7opym1ovJvSCvqpG6OCDGJwPo/EPeRxcGay4=", 216 236 "sparseCheckout": [], 217 237 "type": "git", 218 238 "url": "https://github.com/noctalia-dev/noctalia-qs" 219 239 }, 220 - "version": "b58414209fce1669cff818e50468e926613baa10" 240 + "version": "6b9eceefde3d47ca83c544b54bcdd358be4cbd2f" 221 241 }, 222 242 "sops-nix": { 223 243 "cargoLock": null, 224 - "date": "2026-03-08", 244 + "date": "2026-03-09", 225 245 "extract": null, 226 246 "name": "sops-nix", 227 247 "passthru": null, ··· 231 251 "fetchSubmodules": false, 232 252 "leaveDotGit": false, 233 253 "name": null, 234 - "rev": "c8e69670b316d6788e435a3aa0bda74eb1b82cc0", 235 - "sha256": "sha256-xTzsSd3r5HBeufSZ3fszAn0ldfKctvsYG7tT2YJg5gY=", 254 + "rev": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784", 255 + "sha256": "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag=", 236 256 "sparseCheckout": [], 237 257 "type": "git", 238 258 "url": "https://github.com/Mic92/sops-nix" 239 259 }, 240 - "version": "c8e69670b316d6788e435a3aa0bda74eb1b82cc0" 260 + "version": "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784" 241 261 } 242 262 }
+29 -15
_sources/generated.nix
··· 32 32 }; 33 33 helium = { 34 34 pname = "helium"; 35 - version = "0.9.4.1"; 35 + version = "0.10.1.1"; 36 36 src = fetchurl { 37 - url = "https://github.com/imputnet/helium-linux/releases/download/0.9.4.1/helium-0.9.4.1-x86_64_linux.tar.xz"; 38 - sha256 = "sha256-qXuDUtank46O87jASxczmVMk0iD4JaZi2j9LSBe9VCM="; 37 + url = "https://github.com/imputnet/helium-linux/releases/download/0.10.1.1/helium-0.10.1.1-x86_64_linux.tar.xz"; 38 + sha256 = "sha256-4Qz3yqb9BTisd8XvGvgILvmRNgYBQgJarw5F3fZeLlY="; 39 39 }; 40 40 }; 41 41 impermanence = { ··· 88 88 }; 89 89 date = "2025-07-12"; 90 90 }; 91 + nix-minecraft = { 92 + pname = "nix-minecraft"; 93 + version = "4d744dff3d8e0d9e7f85e06244ad353bdcf424ff"; 94 + src = fetchgit { 95 + url = "https://github.com/Infinidoge/nix-minecraft"; 96 + rev = "4d744dff3d8e0d9e7f85e06244ad353bdcf424ff"; 97 + fetchSubmodules = false; 98 + deepClone = false; 99 + leaveDotGit = false; 100 + sparseCheckout = [ ]; 101 + sha256 = "sha256-GvveRb/AiCb/dKXculKiNiAMW4CXMPwpeyi6c/S/a7o="; 102 + }; 103 + date = "2026-03-11"; 104 + }; 91 105 nixos-hardware = { 92 106 pname = "nixos-hardware"; 93 107 version = "3966ce987e1a9a164205ac8259a5fe8a64528f72"; ··· 118 132 }; 119 133 noctalia-dev = { 120 134 pname = "noctalia-dev"; 121 - version = "1fd0b187b50eff28f4f5fe7d93210d6c98b80e6c"; 135 + version = "13f0b8fce4588bd17c99b53d9cba6d73defed0c2"; 122 136 src = fetchgit { 123 137 url = "https://github.com/noctalia-dev/noctalia-shell"; 124 - rev = "1fd0b187b50eff28f4f5fe7d93210d6c98b80e6c"; 138 + rev = "13f0b8fce4588bd17c99b53d9cba6d73defed0c2"; 125 139 fetchSubmodules = false; 126 140 deepClone = false; 127 141 leaveDotGit = false; 128 142 sparseCheckout = [ ]; 129 - sha256 = "sha256-4iNQ9Up6yRWnjtSfScXJBXICoJ9ZJjj5914W+keAc9c="; 143 + sha256 = "sha256-2+oZquEDg+5YLxXmEF3R0Kz40gJNLast6JLRgXFGzjs="; 130 144 }; 131 - date = "2026-03-08"; 145 + date = "2026-03-11"; 132 146 }; 133 147 noctalia-qs = { 134 148 pname = "noctalia-qs"; 135 - version = "b58414209fce1669cff818e50468e926613baa10"; 149 + version = "6b9eceefde3d47ca83c544b54bcdd358be4cbd2f"; 136 150 src = fetchgit { 137 151 url = "https://github.com/noctalia-dev/noctalia-qs"; 138 - rev = "b58414209fce1669cff818e50468e926613baa10"; 152 + rev = "6b9eceefde3d47ca83c544b54bcdd358be4cbd2f"; 139 153 fetchSubmodules = false; 140 154 deepClone = false; 141 155 leaveDotGit = false; 142 156 sparseCheckout = [ ]; 143 - sha256 = "sha256-VwM1+5dwxIhZ0ahTlHnlMOC/Mgn8wGwcPKhM93Q+w9s="; 157 + sha256 = "sha256-YOkWzVq7opym1ovJvSCvqpG6OCDGJwPo/EPeRxcGay4="; 144 158 }; 145 - date = "2026-03-07"; 159 + date = "2026-03-10"; 146 160 }; 147 161 sops-nix = { 148 162 pname = "sops-nix"; 149 - version = "c8e69670b316d6788e435a3aa0bda74eb1b82cc0"; 163 + version = "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784"; 150 164 src = fetchgit { 151 165 url = "https://github.com/Mic92/sops-nix"; 152 - rev = "c8e69670b316d6788e435a3aa0bda74eb1b82cc0"; 166 + rev = "d1ff3b1034d5bab5d7d8086a7803c5a5968cd784"; 153 167 fetchSubmodules = false; 154 168 deepClone = false; 155 169 leaveDotGit = false; 156 170 sparseCheckout = [ ]; 157 - sha256 = "sha256-xTzsSd3r5HBeufSZ3fszAn0ldfKctvsYG7tT2YJg5gY="; 171 + sha256 = "sha256-M3zEnq9OElB7zqc+mjgPlByPm1O5t2fbUrH3t/Hm5Ag="; 158 172 }; 159 - date = "2026-03-08"; 173 + date = "2026-03-09"; 160 174 }; 161 175 }
+21 -21
flake.lock
··· 71 71 "smfh": "smfh" 72 72 }, 73 73 "locked": { 74 - "lastModified": 1771212460, 75 - "narHash": "sha256-1RfmXbDIxgwP2/SrYSYd9zdArUaJEm6C3FXpdRlmeso=", 74 + "lastModified": 1773176535, 75 + "narHash": "sha256-SxJl+VllncXrqOv045TulgPHZSEiow7ItsA7GLcJq48=", 76 76 "owner": "feel-co", 77 77 "repo": "hjem", 78 - "rev": "7f2880d705edf541955d98f56cb78f9507384423", 78 + "rev": "0290776d1418a475b785c1eacc91f655d11f331b", 79 79 "type": "github" 80 80 }, 81 81 "original": { ··· 116 116 ] 117 117 }, 118 118 "locked": { 119 - "lastModified": 1772845525, 120 - "narHash": "sha256-Dp5Ir2u4jJDGCgeMRviHvEQDe+U37hMxp6RSNOoMMPc=", 119 + "lastModified": 1773179137, 120 + "narHash": "sha256-EdW2bwzlfme0vbMOcStnNmKlOAA05Bp6su2O8VLGT0k=", 121 121 "owner": "nix-community", 122 122 "repo": "home-manager", 123 - "rev": "27b93804fbef1544cb07718d3f0a451f4c4cd6c0", 123 + "rev": "3f98e2bbc661ec0aaf558d8a283d6955f05f1d09", 124 124 "type": "github" 125 125 }, 126 126 "original": { ··· 152 152 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 153 153 }, 154 154 "locked": { 155 - "lastModified": 1772929239, 156 - "narHash": "sha256-reqhkXft51f56zYw8gc+a261NCelUm7P9b1hRcpkrjU=", 155 + "lastModified": 1773067062, 156 + "narHash": "sha256-tejurku4yJGfHjleCRMK9AzyA0L9EXTTmpno12701iU=", 157 157 "ref": "refs/heads/main", 158 - "rev": "b797e51a0f8ca1693066eae326b4842225a55517", 159 - "revCount": 70, 158 + "rev": "e5b01841c13789e724626342dfe7fee9c54522d2", 159 + "revCount": 72, 160 160 "type": "git", 161 161 "url": "https://codeberg.org/BANanaD3V/niri-nix" 162 162 }, ··· 199 199 }, 200 200 "nixpkgs_2": { 201 201 "locked": { 202 - "lastModified": 1772773019, 203 - "narHash": "sha256-nbKkTH2oRlWaAjeDh/QMraqjfj/C2xJFa53twFzRd8o=", 204 - "rev": "aca4d95fce4914b3892661bcb80b8087293536c6", 202 + "lastModified": 1772963539, 203 + "narHash": "sha256-G4+9cEu8XSqEWYUB6iRgDfrg53av6yyRwAKhSeKbUVw=", 204 + "rev": "9dcb002ca1690658be4a04645215baea8b95f31d", 205 205 "type": "tarball", 206 - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre958961.aca4d95fce49/nixexprs.tar.xz?lastModified=1772773019&rev=aca4d95fce4914b3892661bcb80b8087293536c6" 206 + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre960399.9dcb002ca169/nixexprs.tar.xz?lastModified=1772963539&rev=9dcb002ca1690658be4a04645215baea8b95f31d" 207 207 }, 208 208 "original": { 209 209 "type": "tarball", ··· 240 240 ] 241 241 }, 242 242 "locked": { 243 - "lastModified": 1772875143, 244 - "narHash": "sha256-ENBRe7vCCp/SIG2WRKI2pyAxwnrc9CPuwZ4CtMu4KU4=", 243 + "lastModified": 1773176554, 244 + "narHash": "sha256-i7lgK73pvk5ClHgfVEeIiHFM1S2kjeCF2uvODf2oKlE=", 245 245 "owner": "notashelf", 246 246 "repo": "nvf", 247 - "rev": "6681e33727409d4ccfa687de981b594110a735d6", 247 + "rev": "d057f50cc4ce26d5f8a43cd8ea16a0ac7805b228", 248 248 "type": "github" 249 249 }, 250 250 "original": { ··· 359 359 "sqlite-lib-src": "sqlite-lib-src" 360 360 }, 361 361 "locked": { 362 - "lastModified": 1772710663, 363 - "narHash": "sha256-DoiqADcD2Z5NscMHPZ7a/RX1+VTexHN68P4WL6eAG04=", 362 + "lastModified": 1773147218, 363 + "narHash": "sha256-L2FUTaVxNjob5sxA4TTTedqDyvrPI31c8GSY0hUksKE=", 364 364 "ref": "refs/heads/master", 365 - "rev": "e326cc53ad4e9123552bdf20a192aff6ca1eb135", 366 - "revCount": 2019, 365 + "rev": "ae3c820543b2e0504fd4f251e76a861d24f7d36c", 366 + "revCount": 2031, 367 367 "type": "git", 368 368 "url": "https://tangled.org/@tangled.org/core" 369 369 },
-1
modules/hosts/NixPort/imports.nix
··· 7 7 }; 8 8 in 9 9 { 10 - flake.modules.nixvim.NixPort.imports = [ { inherit custom; } ]; 11 10 flake.modules.nvf.NixPort.imports = [ { inherit custom; } ]; 12 11 flake.modules.nixos."hosts/NixPort".imports = 13 12 with config.flake.modules.nixos;
+1
modules/hosts/NixToks/imports.nix
··· 32 32 karakeep 33 33 kavita 34 34 miniflux 35 + minecraft-server 35 36 nextcloud 36 37 qbittorrent 37 38 distrobox
+1 -1
modules/hosts/NixWool/imports.nix
··· 7 7 }; 8 8 in 9 9 { 10 - flake.modules.nixvim.NixWool.imports = [ { inherit custom; } ]; 11 10 flake.modules.nvf.NixWool.imports = [ { inherit custom; } ]; 12 11 flake.modules.nixos."hosts/NixWool".imports = 13 12 with config.flake.modules.nixos; ··· 30 29 bluesky-pds 31 30 tangled 32 31 run0 32 + minecraft-relay 33 33 # Users 34 34 root 35 35 ladas552
+109
modules/nixosModules/Server/minecraft.nix
··· 1 + { modules, ... }: 2 + { 3 + flake.modules.nixos = { 4 + minecraft-server = 5 + { pkgs, ... }: 6 + { 7 + # module 8 + imports = [ "${modules.nix-minecraft.src}/modules/minecraft-servers.nix" ]; 9 + nixpkgs.overlays = [ 10 + (import "${modules.nix-minecraft.src}/overlay.nix") 11 + ]; 12 + 13 + services.minecraft-servers = { 14 + enable = true; 15 + eula = true; 16 + servers.paper = { 17 + enable = true; 18 + package = pkgs.paperServers.paper-1_21_11; 19 + autoStart = true; 20 + enableReload = true; 21 + # https://docs.papermc.io/paper/aikars-flags/ 22 + jvmOpts = "-Xms4G -Xmx6G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true"; 23 + serverProperties = { 24 + accepts-transfers = false; 25 + allow-flight = false; 26 + broadcast-console-to-ops = true; 27 + broadcast-rcon-to-ops = true; 28 + difficulty = "hard"; 29 + enable-code-of-conduct = false; 30 + enable-jmx-monitoring = false; 31 + enable-query = false; 32 + enable-rcon = false; 33 + enable-status = true; 34 + enforce-secure-profile = false; 35 + enforce-whitelist = false; 36 + entity-broadcast-range-percentage = 100; 37 + force-gamemode = false; 38 + function-permission-level = 2; 39 + gamemode = "survival"; 40 + generate-structures = true; 41 + hardcore = false; 42 + hide-online-players = false; 43 + initial-enabled-packs = "vanilla"; 44 + level-name = "world"; 45 + log-ips = true; 46 + max-chained-neighbor-updates = 1000000; 47 + max-players = 20; 48 + max-tick-time = 60000; 49 + max-world-size = 29999984; 50 + motd = "Boyz server: No backups, no keepInventory, Hard"; 51 + network-compression-threshold = 256; 52 + online-mode = false; 53 + op-permission-level = 4; 54 + pause-when-empty-seconds = 60; 55 + player-idle-timeout = 0; 56 + prevent-proxy-connections = false; 57 + rate-limit = 0; 58 + region-file-compression = "deflate"; 59 + server-port = "25565"; 60 + simulation-distance = 10; 61 + spawn-protection = 16; 62 + status-heartbeat-interval = 0; 63 + sync-chunk-writes = true; 64 + use-native-transport = true; 65 + view-distance = 12; 66 + white-list = false; 67 + }; 68 + }; 69 + }; 70 + 71 + # Only allow Tailscale 72 + networking.firewall.interfaces.tailscale0.allowedTCPPorts = [ 25565 ]; 73 + 74 + # persist for Impermanence 75 + custom.imp.root.directories = [ "/srv/minecraft" ]; 76 + }; 77 + minecraft-relay = { 78 + services.haproxy = { 79 + enable = true; 80 + config = '' 81 + defaults 82 + mode tcp 83 + log global 84 + retries 3 85 + timeout connect 5s 86 + timeout client 2h 87 + timeout server 2h 88 + 89 + frontend minecraft_front 90 + bind *:25565 91 + mode tcp 92 + default_backend minecraft_back 93 + 94 + backend minecraft_back 95 + mode tcp 96 + server mc 100.74.112.27:25565 check 97 + ''; 98 + }; 99 + # Reverse proxy 100 + services.caddy.virtualHosts."minecraft.ladas552.me" = { 101 + extraConfig = '' 102 + handle { 103 + reverse_proxy http://127.0.0.1:25565 104 + } 105 + ''; 106 + }; 107 + }; 108 + }; 109 + }
+1 -1
modules/nixosModules/run0.nix
··· 5 5 # https://github.com/Gerg-L/nixos/blob/96b7bbdb20bdfbeb9d7d733cee47eaac39cf5ec0/nixosModules/security.nix 6 6 environment.shellAliases = { 7 7 #make run0 use aliases 8 - sudo = "run0 --background='' "; 8 + sudo = "run0 --background=''"; 9 9 }; 10 10 services.dbus.implementation = "broker"; 11 11 security = {
+4
nvfetcher.toml
··· 49 49 [nixos-hardware] 50 50 src.git = "https://github.com/nixos/nixos-hardware" 51 51 fetch.git = "https://github.com/nixos/nixos-hardware" 52 + 53 + [nix-minecraft] 54 + src.git = "https://github.com/Infinidoge/nix-minecraft" 55 + fetch.git = "https://github.com/Infinidoge/nix-minecraft"
+3 -3
secrets/secrets.yaml
··· 27 27 RkFQSEYxY3NnMkhpWXdCd1llb2ZYcHMK6BoBQQCJqntA69nPdZxPl066pkxA4c/i 28 28 k4RwkMDyyRLTnFP8jWhqH1AxUzDQluRnmGPJ4wq6DPe5mLKa6649Mg== 29 29 -----END AGE ENCRYPTED FILE----- 30 - lastmodified: "2026-02-16T15:59:29Z" 31 - mac: ENC[AES256_GCM,data:nEVpqlj0tqJ586ymxo8y7mde07XtrtboNMEhsyQPsa9TwdPBDGr3fhNLzu9//6Dq78RUhyGK/t1nfvs5zE/Opaze8SmS4LXZACPrruUC6YFQFvN10H3g8Q/4rJ8xtaU9Q1KVL8fbjCXjmthixS7ORjQ0+wdiPyk3rQamxYK89DE=,iv:7RiCtcXk+a135ARgrA7UwJCs8cwPVMUFIGtMBVx5S9g=,tag:qi/zhUDGQu7dgEFJMbTxxA==,type:str] 30 + lastmodified: "2026-03-11T08:41:57Z" 31 + mac: ENC[AES256_GCM,data:8ZXbYi0mljKTBqWD3YrbUtGt0+HttIj/z5wwVHIDIzOop5GygkBNyhYiyKj9b8bjZuRhrcov67F/K7uK9195v69CiqZAOhfiqRk0AM2z/MU2NlyDrrkjF7KX4vPoarf0qaNZRyWJWqjNQc3R5dhoSsAB/uOKLTypBimxLm+n7oA=,iv:mW0azLclIgz08A006UCcqzxueYno8TtavRi2C7qWh0M=,tag:a3T+e+tEmfunTfywpSKftg==,type:str] 32 32 unencrypted_suffix: _unencrypted 33 - version: 3.11.0 33 + version: 3.12.1