From ad6cc085f42f6ca900f14914f3b5344771e38e22 Mon Sep 17 00:00:00 2001 From: xunuwu Date: Tue, 3 Feb 2026 08:48:30 +0100 Subject: [PATCH 1/5] comment out battery percentage thing in bar --- home/desktop/sway/__waybar.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/home/desktop/sway/__waybar.nix b/home/desktop/sway/__waybar.nix index 562ccbe..4730b9b 100644 --- a/home/desktop/sway/__waybar.nix +++ b/home/desktop/sway/__waybar.nix @@ -32,11 +32,11 @@ "sway/window" = { max-length = 80; }; - "custom/miao-battery-percentage" = { - return-type = "json"; - exec = "${lib.getExe self.packages.${pkgs.stdenv.hostPlatform.system}.miao-battery-percentage}"; - restart-interval = "60"; - }; + # "custom/miao-battery-percentage" = { + # return-type = "json"; + # exec = "${lib.getExe self.packages.${pkgs.stdenv.hostPlatform.system}.miao-battery-percentage}"; + # restart-interval = "60"; + # }; "custom/keyboard-state" = { return-type = "json"; exec = "${lib.getExe self.packages.${pkgs.stdenv.hostPlatform.system}.keyboard-state}"; From f3afcb060b72714cfad0045a0ec9fd5a02c4c5ef Mon Sep 17 00:00:00 2001 From: xunuwu Date: Thu, 19 Feb 2026 20:08:52 +0100 Subject: [PATCH 2/5] update and run mc modpack on server :> --- flake.lock | 144 ++++++++---------- home/desktop/sway/__waybar.nix | 2 +- hosts/hopper/hardware.nix | 1 + .../create-ultimate-selection-2.pw.toml | 13 ++ .../create-ultimate-selection-2/index.toml | 6 + .../lab/create-ultimate-selection-2/pack.toml | 12 ++ hosts/hopper/profiles/lab/minecraft.nix | 32 +++- .../hopper/profiles/lab/navidrome/default.nix | 8 +- hosts/nixdesk/default.nix | 1 + sys/profiles/core/docs.nix | 2 +- 10 files changed, 133 insertions(+), 88 deletions(-) create mode 100644 hosts/hopper/profiles/lab/create-ultimate-selection-2/create-ultimate-selection-2.pw.toml create mode 100644 hosts/hopper/profiles/lab/create-ultimate-selection-2/index.toml create mode 100644 hosts/hopper/profiles/lab/create-ultimate-selection-2/pack.toml diff --git a/flake.lock b/flake.lock index a66110e..ec6ef8c 100644 --- a/flake.lock +++ b/flake.lock @@ -142,11 +142,11 @@ ] }, "locked": { - "lastModified": 1768923567, - "narHash": "sha256-GVJ0jKsyXLuBzRMXCDY6D5J8wVdwP1DuQmmvYL/Vw/Q=", + "lastModified": 1771469470, + "narHash": "sha256-GnqdqhrguKNN3HtVfl6z+zbV9R9jhHFm3Z8nu7R6ml0=", "owner": "nix-community", "repo": "disko", - "rev": "00395d188e3594a1507f214a2f15d4ce5c07cb28", + "rev": "4707eec8d1d2db5182ea06ed48c820a86a42dc13", "type": "github" }, "original": { @@ -163,11 +163,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1769054619, - "narHash": "sha256-LCc0gbSgjehdy41Gi1H5WNxEuW9PtRHFVaPXoFzslQU=", + "lastModified": 1771494902, + "narHash": "sha256-G2yfLhPTuW4nSQCWdXzqknm9uop7OR+zQuoGll5rxLA=", "owner": "rycee", "repo": "nur-expressions", - "rev": "6509620630f68dc02ac3e99f15a67760778444ff", + "rev": "07b71eb895d1f977c763899b985ee4980412dc57", "type": "gitlab" }, "original": { @@ -232,11 +232,11 @@ ] }, "locked": { - "lastModified": 1768135262, - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -250,11 +250,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1768135262, - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -272,11 +272,11 @@ ] }, "locked": { - "lastModified": 1768135262, - "narHash": "sha256-PVvu7OqHBGWN16zSi6tEmPwwHQ4rLPU9Plvs8/1TUBY=", + "lastModified": 1769996383, + "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "80daad04eddbbf5a4d883996a73f3f542fa437ac", + "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", "type": "github" }, "original": { @@ -343,24 +343,6 @@ } }, "flake-utils_2": { - "inputs": { - "systems": "systems_2" - }, - "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { "inputs": { "systems": "systems_5" }, @@ -415,11 +397,11 @@ }, "hardware": { "locked": { - "lastModified": 1769086393, - "narHash": "sha256-3ymIZ8s3+hu7sDl/Y48o6bwMxorfKrmn97KuWiw1vjY=", + "lastModified": 1771423359, + "narHash": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "9f7ba891ea5fc3ededd7804f1a23fafadbcb26ca", + "rev": "740a22363033e9f1bb6270fbfb5a9574067af15b", "type": "github" }, "original": { @@ -456,11 +438,11 @@ ] }, "locked": { - "lastModified": 1769102673, - "narHash": "sha256-/qvRFjn1s3bIJdSKG6IpaE6ML3j9anQKUqGhmt4Qe+E=", + "lastModified": 1771519029, + "narHash": "sha256-H59Qf82wv5kBXVoyXsmUKW+9J3o8FqgY4uKaLdsLdLg=", "owner": "nix-community", "repo": "home-manager", - "rev": "b0491fe55680bd19be8e74847969dad9d7784658", + "rev": "167e0b6837115e672ec5f58e2b0ea39093abe807", "type": "github" }, "original": { @@ -496,11 +478,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1768941735, - "narHash": "sha256-OyxsfXNcOkt06/kM+4bnuC8moDx+t7Qr+RB0BBa83Ig=", + "lastModified": 1769548169, + "narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=", "owner": "nix-community", "repo": "impermanence", - "rev": "69ecf31e8fddc9354a4b418f3a517445d486bb54", + "rev": "7b1d382faf603b6d264f58627330f9faa5cba149", "type": "github" }, "original": { @@ -519,11 +501,11 @@ ] }, "locked": { - "lastModified": 1769040284, - "narHash": "sha256-zgZfWwXyL9EDqkTEk0y7hB2wUrsNhpTjoVZpmGa3VHw=", + "lastModified": 1771459510, + "narHash": "sha256-ZlLdKt0MpgzPIjBraJvKDdy62wj2ffLllMgZNLUjxsM=", "owner": "nix-community", "repo": "neovim-nightly-overlay", - "rev": "ce27c2327ff2e41f79aa0b5933b931708d6f6804", + "rev": "93414035e92a7ebc016b2931af9b7ffb01d398ba", "type": "github" }, "original": { @@ -535,11 +517,11 @@ "neovim-src": { "flake": false, "locked": { - "lastModified": 1768992167, - "narHash": "sha256-pCe5bvBt8VYF/IrDY2RDmA0412YR5Uq0kbYRp/zBI4g=", + "lastModified": 1771458370, + "narHash": "sha256-rtLD1cwnEGPNQdGpZClJJZfcuWJl3pNYKaaoIhbVMd0=", "owner": "neovim", "repo": "neovim", - "rev": "25ce44845d2adf94dfc91c70eb792a50d8274aa1", + "rev": "ac84a3f3b6eebd4b3ba426b2d60a99204b05f436", "type": "github" }, "original": { @@ -556,11 +538,11 @@ ] }, "locked": { - "lastModified": 1768874893, - "narHash": "sha256-1WCbVm2Dqqb+HEuahu06l8lQ393P8jIAHEjM3jhm4gc=", + "lastModified": 1771504976, + "narHash": "sha256-E6vYsfrmSugowvC30inu7cpChPXYl68Sjs+p7/3ZitY=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "12c404b997930a1fe8ffcaa231f85fd8ebc6338a", + "rev": "06154d726ba4eb01c9b2d18edcc3d2476c83d3bc", "type": "github" }, "original": { @@ -576,11 +558,11 @@ ] }, "locked": { - "lastModified": 1765267181, - "narHash": "sha256-d3NBA9zEtBu2JFMnTBqWj7Tmi7R5OikoU2ycrdhQEws=", + "lastModified": 1771130777, + "narHash": "sha256-UIKOwG0D9XVIJfNWg6+gENAvQP+7LO46eO0Jpe+ItJ0=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "82befcf7dc77c909b0f2a09f5da910ec95c5b78f", + "rev": "efec7aaad8d43f8e5194df46a007456093c40f88", "type": "github" }, "original": { @@ -592,17 +574,17 @@ "nix-minecraft": { "inputs": { "flake-compat": "flake-compat", - "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" - ] + ], + "systems": "systems_2" }, "locked": { - "lastModified": 1768962252, - "narHash": "sha256-HyWOOHcySV8rl36gs4+n0sxPinxpwWOgwXibfFPYeZ0=", + "lastModified": 1771469368, + "narHash": "sha256-yGRHre2BINQJBDAyUwxyzvgAce22J4pNdpLS8roo6fY=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "433cf697394104123e1fd02fa689534ac1733bfa", + "rev": "a708458be9b9421e377c54d86807d3490db53816", "type": "github" }, "original": { @@ -617,11 +599,11 @@ "nixpkgs": "nixpkgs_2" }, "locked": { - "lastModified": 1768840529, - "narHash": "sha256-e22ou8nikeThx9x9/y29VdMEW4Fm7DBzlhp9ndDJUGE=", + "lastModified": 1771243519, + "narHash": "sha256-oeHgjE5GpACBjDeXrTczIl6cKmHltLbk7inNSMgGFFQ=", "owner": "nix-community", "repo": "nixos-wsl", - "rev": "b8e9a758fa2e08d8ac5c3be5d4b1fcc92fd3ce84", + "rev": "a2cb8eeecfbf4a1ce0083e6a32680b1bec8b045c", "type": "github" }, "original": { @@ -648,11 +630,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1765674936, - "narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=", + "lastModified": 1769909678, + "narHash": "sha256-cBEymOf4/o3FD5AZnzC3J9hLbiZ+QDT/KDuyHXVJOpM=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85", + "rev": "72716169fe93074c333e8d0173151350670b824c", "type": "github" }, "original": { @@ -678,11 +660,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1768564909, - "narHash": "sha256-Kell/SpJYVkHWMvnhqJz/8DqQg2b6PguxVWOuadbHCc=", + "lastModified": 1770019141, + "narHash": "sha256-VKS4ZLNx4PNrABoB0L8KUpc1fE7CLpQXQs985tGfaCU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4bae1bd10c9c57b2cf517953ab70060a828ee6f", + "rev": "cb369ef2efd432b3cdf8622b0ffc0a97a02f3137", "type": "github" }, "original": { @@ -694,11 +676,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1769018530, - "narHash": "sha256-MJ27Cy2NtBEV5tsK+YraYr2g851f3Fl1LpNHDzDX15c=", + "lastModified": 1771369470, + "narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "88d3861acdd3d2f0e361767018218e51810df8a1", + "rev": "0182a361324364ae3f436a63005877674cf45efb", "type": "github" }, "original": { @@ -741,11 +723,11 @@ ] }, "locked": { - "lastModified": 1769111606, - "narHash": "sha256-oWQSTDeEfdHQccVtOOIoaLM/wVTrpmscgIeHVWz9p4c=", + "lastModified": 1771523465, + "narHash": "sha256-8uRhbSmeUcH3mC13BEyKUxM+a7nHIvIfZF3da5tXfeM=", "owner": "xunuwu", "repo": "nvim-config", - "rev": "cd11d2167f061c630264f5d30a30634763f0a7d2", + "rev": "1e2e80774f0a8d9d1b484af42413f11e989ddaf4", "type": "github" }, "original": { @@ -849,11 +831,11 @@ ] }, "locked": { - "lastModified": 1768863606, - "narHash": "sha256-1IHAeS8WtBiEo5XiyJBHOXMzECD6aaIOJmpQKzRRl64=", + "lastModified": 1771166946, + "narHash": "sha256-UFc4lfGBr+wJmwgDGJDn1cVD6DTr0/8TdronNUiyXlU=", "owner": "Mic92", "repo": "sops-nix", - "rev": "c7067be8db2c09ab1884de67ef6c4f693973f4a2", + "rev": "2d0cf89b4404529778bc82de7e42b5754e0fe4fa", "type": "github" }, "original": { @@ -883,11 +865,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1768744881, - "narHash": "sha256-3+h7OxqfrPIB/tRsiZXWE9sCbTm7NQN5Ie428p+S6BA=", + "lastModified": 1771428844, + "narHash": "sha256-rTzo6bZEsdT7yHUZ0B4BYe32XQZzm8SiWKvWLJnxerE=", "owner": "nix-community", "repo": "stylix", - "rev": "06684f00cfbee14da96fd4307b966884de272d3a", + "rev": "801843d10e9e22d7a00f660d069e2de70aa2980a", "type": "github" }, "original": { @@ -1088,7 +1070,7 @@ "wayland-appusage": { "inputs": { "crane": "crane_3", - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_2", "nixpkgs": [ "nixpkgs" ] diff --git a/home/desktop/sway/__waybar.nix b/home/desktop/sway/__waybar.nix index 4730b9b..1f0f5cc 100644 --- a/home/desktop/sway/__waybar.nix +++ b/home/desktop/sway/__waybar.nix @@ -7,7 +7,7 @@ programs.waybar = { enable = true; package = pkgs.waybar.overrideAttrs (final: prev: { - patches = [./waybar-workspace.patch]; + # patches = [./waybar-workspace.patch]; }); settings = [ { diff --git a/hosts/hopper/hardware.nix b/hosts/hopper/hardware.nix index 5b38a29..99bcd34 100644 --- a/hosts/hopper/hardware.nix +++ b/hosts/hopper/hardware.nix @@ -70,6 +70,7 @@ }; "/home" = { device = "/dev/disk/by-uuid/1297e638-f2ff-49a2-a362-314ac7eeaabc"; + neededForBoot = true; fsType = "btrfs"; options = ["subvol=home" "compress=zstd"]; }; diff --git a/hosts/hopper/profiles/lab/create-ultimate-selection-2/create-ultimate-selection-2.pw.toml b/hosts/hopper/profiles/lab/create-ultimate-selection-2/create-ultimate-selection-2.pw.toml new file mode 100644 index 0000000..ba7d762 --- /dev/null +++ b/hosts/hopper/profiles/lab/create-ultimate-selection-2/create-ultimate-selection-2.pw.toml @@ -0,0 +1,13 @@ +name = "Create Ultimate Selection 2 – Create Quests | Create Addons [1.21.1]" +filename = "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip" +side = "both" + +[download] +hash-format = "sha1" +hash = "f1bb7067d9a58492d1634d0ff5f15bee68ed1f7b" +mode = "metadata:curseforge" + +[update] +[update.curseforge] +file-id = 7634594 +project-id = 1324409 diff --git a/hosts/hopper/profiles/lab/create-ultimate-selection-2/index.toml b/hosts/hopper/profiles/lab/create-ultimate-selection-2/index.toml new file mode 100644 index 0000000..86bce5f --- /dev/null +++ b/hosts/hopper/profiles/lab/create-ultimate-selection-2/index.toml @@ -0,0 +1,6 @@ +hash-format = "sha256" + +[[files]] +file = "create-ultimate-selection-2.pw.toml" +hash = "9ab2c65f33afcf236a0f406422cc1a6b7c6989f7da57a49f967699259d6e4e3e" +metafile = true diff --git a/hosts/hopper/profiles/lab/create-ultimate-selection-2/pack.toml b/hosts/hopper/profiles/lab/create-ultimate-selection-2/pack.toml new file mode 100644 index 0000000..b367a8b --- /dev/null +++ b/hosts/hopper/profiles/lab/create-ultimate-selection-2/pack.toml @@ -0,0 +1,12 @@ +name = "Packwiz Create Ultimate Selection" +version = "1.0.0" +pack-format = "packwiz:1.1.0" + +[index] +file = "index.toml" +hash-format = "sha256" +hash = "c1e5db361e3f6a0150a60e69742ea490985603d455146b1498075cfb2f718a55" + +[versions] +minecraft = "1.21.1" +neoforge = "21.1.219" diff --git a/hosts/hopper/profiles/lab/minecraft.nix b/hosts/hopper/profiles/lab/minecraft.nix index 724478c..e431256 100644 --- a/hosts/hopper/profiles/lab/minecraft.nix +++ b/hosts/hopper/profiles/lab/minecraft.nix @@ -7,8 +7,38 @@ enable = true; eula = true; openFirewall = true; - servers.owo = { + servers.createpack = let + modpackZip = pkgs.fetchurl { + url = "https://git.xunuwu.xyz/xun/nixos-config/releases/download/create-ultimate-bundle-thing/Create%20Ultimate%20Selection%202%20MC%201.21.1-5.2.0.zip"; + name = "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip"; + hash = "sha256-+ykE2GE5lWQVLfcKyleKmQ+GXC+yN54yIgh7mPxxj4g="; # Replace with actual hash: run `nix-prefetch-url --name 'Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip' 'https://www.curseforge.com/minecraft/modpacks/create-ultimate-selection-2/download/7634594/file'` and paste the output here + }; + baseModpack = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.fetchPackwizModpack { + src = ./create-ultimate-selection-2; + packHash = "sha256-0i4RWfJLWayYkefzeePbQY48nr/TdbX/sUVFfppkKvM="; # Leave empty initially; update with the correct value after the first failed build (see instructions below) + }; + modpack = baseModpack.overrideAttrs (old: { + buildPhase = + '' + cp ${modpackZip} "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip" + '' + + old.buildPhase; + }); + in { enable = true; + package = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.neoforgeServers.neoforge-1_21_1; + serverProperties = { + motd = "createpack!!"; + max-players = 5; + difficulty = "normal"; + allow-flight = true; + view-distance = 16; + }; + jvmOpts = "-Xms1024M -Xmx6144M"; + symlinks.mods = "${modpack}/mods"; + }; + servers.owo = { + enable = false; package = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.fabricServers.fabric-1_21_5; serverProperties = { max-players = 5; diff --git a/hosts/hopper/profiles/lab/navidrome/default.nix b/hosts/hopper/profiles/lab/navidrome/default.nix index 621e329..abdf6f2 100644 --- a/hosts/hopper/profiles/lab/navidrome/default.nix +++ b/hosts/hopper/profiles/lab/navidrome/default.nix @@ -7,10 +7,10 @@ services.navidrome = { enable = true; - package = pkgs.navidrome.overrideAttrs { - patches = [./scrobbleAlbumArtist.patch]; - doCheck = false; - }; + # package = pkgs.navidrome.overrideAttrs { + # patches = [./scrobbleAlbumArtist.patch]; + # doCheck = false; + # }; settings = { MusicFolder = "/media/library/music"; Address = config.vpnNamespaces."wg".bridgeAddress; diff --git a/hosts/nixdesk/default.nix b/hosts/nixdesk/default.nix index 0293133..5cfc41d 100644 --- a/hosts/nixdesk/default.nix +++ b/hosts/nixdesk/default.nix @@ -132,6 +132,7 @@ "rider" "clion" "idea-ultimate" + "android-studio" "android-studio-stable" "krunker" ]; diff --git a/sys/profiles/core/docs.nix b/sys/profiles/core/docs.nix index ccb1e12..39130f4 100644 --- a/sys/profiles/core/docs.nix +++ b/sys/profiles/core/docs.nix @@ -4,7 +4,7 @@ man.generateCaches = false; # this does slow down builds by quite a lot }; environment.systemPackages = with pkgs; [ - linux-manual + # linux-manual man-pages man-pages-posix ]; From 671a2c0dce512670950aab773515ba095318d0f0 Mon Sep 17 00:00:00 2001 From: xunuwu Date: Thu, 19 Feb 2026 22:21:24 +0100 Subject: [PATCH 3/5] fix mc server completely --- hosts/hopper/profiles/lab/minecraft.nix | 246 +++++++++++++++++++++--- 1 file changed, 214 insertions(+), 32 deletions(-) diff --git a/hosts/hopper/profiles/lab/minecraft.nix b/hosts/hopper/profiles/lab/minecraft.nix index e431256..200c09d 100644 --- a/hosts/hopper/profiles/lab/minecraft.nix +++ b/hosts/hopper/profiles/lab/minecraft.nix @@ -2,41 +2,223 @@ inputs, pkgs, ... -}: { +}: let + # neoforgeVersion = "21.1.219"; + # vanillaServer = pkgs.fetchurl { + # url = "https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar"; + # name = "minecraft_server.1.21.1.jar"; + # hash = "sha256-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX="; # Replace with actual hash: run `nix-prefetch-url 'https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar' --name 'minecraft_server.1.21.1.jar'` + # }; + # neoforgeInstaller = pkgs.fetchurl { + # url = "https://maven.neoforged.net/releases/net/neoforged/neoforge/${neoforgeVersion}/neoforge-${neoforgeVersion}-installer.jar"; + # hash = "sha256-FA3w+hf9Q4hIBR7Po9CRCBUVrRK/40+hJkBQN7oB3kQ="; # Replace with actual hash: run `nix-prefetch-url 'https://maven.neoforged.net/releases/net/neoforged/neoforge/21.1.219/neoforge-21.1.219-installer.jar'` + # }; + # modpackZip = pkgs.fetchurl { + # url = "https://git.xunuwu.xyz/xun/nixos-config/releases/download/create-ultimate-bundle-thing/Create%20Ultimate%20Selection%202%20MC%201.21.1-5.2.0.zip"; + # name = "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip"; + # hash = "sha256-+ykE2GE5lWQVLfcKyleKmQ+GXC+yN54yIgh7mPxxj4g="; # Replace with actual hash: run `nix-prefetch-url --name 'Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip' 'https://www.curseforge.com/minecraft/modpacks/create-ultimate-selection-2/download/7634594/file'` and paste the output here + # }; + modpackZip = pkgs.fetchurl { + url = "https://git.xunuwu.xyz/xun/nixos-config/releases/download/create-ultimate-thing-full/Create%20Ultimate%20Selection%202%20Serverpack%20MC%201.21.1-5.3.0.zip"; + name = "Create Ultimate Selection 2 MC 1.21.1-5.3.0.zip"; + # hash = ""; # Replace with actual hash: run `nix-prefetch-url --name 'Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip' 'https://www.curseforge.com/minecraft/modpacks/create-ultimate-selection-2/download/7634594/file'` and paste the output here + hash = "sha256-xDChlZWivNNjYnmSCUIyrxfvqXAHrbvql7jyEDvVXvA="; + }; + # baseModpack = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.fetchPackwizModpack { + # src = ./create-ultimate-selection-2; + # packHash = "sha256-0i4RWfJLWayYkefzeePbQY48nr/TdbX/sUVFfppkKvM="; # Leave empty initially; update with the correct value after the first failed build (see instructions below) + # }; + # modpack = baseModpack.overrideAttrs (old: { + # buildPhase = + # '' + # cp ${modpackZip} "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip" + # '' + # + old.buildPhase; + # }); + neoforge = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.neoforgeServers.neoforge-1_21_1; + serverPackage = pkgs.stdenv.mkDerivation { + name = "minecraft-createpack-server"; + nativeBuildInputs = [pkgs.unzip]; + dontUnpack = true; + installPhase = '' + # mkdir -p $out + # cp -r ${neoforge}/* $out + # unzip ${modpackZip} -d temp + # cp -r temp/overrides/* $out/ + # rm -rf temp + + mkdir -p $out + # 1. Base NeoForge from nix-minecraft + cp -r ${neoforge}/* $out/ + + # 2. Overlay the full official server pack (this brings ALL mods + libraries) + unzip ${modpackZip} -d temp + cp -r temp/* $out/ 2>/dev/null || true + rm -rf temp + ''; + }; + # serverPackage = pkgs.stdenv.mkDerivation { + # name = "minecraft-createpack-server"; + # src = modpackZip; + # # nativeBuildInputs = [pkgs.unzip pkgs.jdk21 pkgs.breakpointHook]; + # nativeBuildInputs = [pkgs.unzip pkgs.jdk21]; + # dontPatch = true; + # buildPhase = '' + # mkdir server + # # unzip ${modpackZip} + # cp -r overrides/* server/ + # ''; + # # buildPhase = '' + # # mkdir server + # # cd server + # # java -jar ${neoforgeInstaller} --installServer + # # cd .. + # # unzip ${modpackZip} + # # cp -r overrides/* server/ + # # ''; + # installPhase = '' + # mkdir -p $out + # cp -r server/* $out + # ''; + # }; +in { + users.users.minecraft-createpack = { + isSystemUser = true; + group = "minecraft-createpack"; + }; + users.groups.minecraft-createpack = {}; + + networking.firewall.allowedTCPPorts = [25565]; + + systemd.tmpfiles.rules = [ + "d /srv/minecraft 0755 root root - -" + "d /srv/minecraft/createpack 0770 minecraft-createpack minecraft-createpack - -" + "Z /srv/minecraft/createpack - minecraft-createpack minecraft-createpack - -" + ]; + systemd.services.minecraft-createpack = { + description = "Minecraft Create Ultimate Selection 2 Server"; + wantedBy = ["multi-user.target"]; + after = ["network.target"]; + serviceConfig = { + User = "minecraft-createpack"; + Group = "minecraft-createpack"; + WorkingDirectory = "/srv/minecraft/createpack"; + Restart = "always"; + RestartSec = "5s"; + # ExecStart = "${pkgs.jdk21}/bin/java -Xms1024M -Xmx6144M -jar ${serverPackage}/neoforge-1.21.1-21.1.219.jar nogui"; + ExecStart = '' + ${pkgs.jdk21}/bin/java \ + @user_jvm_args.txt \ + @libraries/net/neoforged/neoforge/21.1.219/unix_args.txt \ + nogui + ''; + # ExecStart = "${pkgs.bash}/bin/bash ${serverPackage}/run.sh nogui"; + }; + # preStart = '' + # set -euo pipefail + # + # echo "=== minecraft-createpack preStart running as $(whoami) in $(pwd) ===" + # + # # Preserve world across restarts + # if [ -d world ]; then + # mv world ../world-tmp || true + # fi + # + # # Clean slate + copy fresh files from the derivation + # rm -rf ./* .[!.]* ..?* || true + # cp -r ${serverPackage}/* . + # + # # Restore world + # if [ -d ../world-tmp ]; then + # mv ../world-tmp world + # fi + # + # chmod -R u+rwX . + # chown -R minecraft-createpack:minecraft-createpack . + # + # echo "eula=true" > eula.txt + # + # cat > server.properties < user_jvm_args.txt </dev/null || true + fi + done + + # Gentle sync — only updates static server files, never touches your world + ${pkgs.rsync}/bin/rsync -a --delete \ + --exclude='world' --exclude='logs' --exclude='crash-reports' \ + --exclude='backups' --exclude='screenshots' \ + --exclude='user_jvm_args.txt' --exclude='server.properties' --exclude='eula.txt' \ + ${serverPackage}/ ./ + + # Restore user data + for dir in world logs crash-reports backups screenshots; do + if [ -d "../$dir-tmp" ]; then + mv "../$dir-tmp" "$dir" + fi + done + + chown -R minecraft-createpack:minecraft-createpack . + chmod -R u+rwX . + + echo "eula=true" > eula.txt + + cat > server.properties <<'EOF' + motd=createpack!! + max-players=5 + difficulty=normal + allow-flight=true + view-distance=16 + EOF + + cat > user_jvm_args.txt <<'EOF' + -Xms1024M + -Xmx6144M + EOF + + echo "=== preStart finished ===" + ''; + }; + services.minecraft-servers = { - enable = true; + enable = false; eula = true; openFirewall = true; - servers.createpack = let - modpackZip = pkgs.fetchurl { - url = "https://git.xunuwu.xyz/xun/nixos-config/releases/download/create-ultimate-bundle-thing/Create%20Ultimate%20Selection%202%20MC%201.21.1-5.2.0.zip"; - name = "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip"; - hash = "sha256-+ykE2GE5lWQVLfcKyleKmQ+GXC+yN54yIgh7mPxxj4g="; # Replace with actual hash: run `nix-prefetch-url --name 'Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip' 'https://www.curseforge.com/minecraft/modpacks/create-ultimate-selection-2/download/7634594/file'` and paste the output here - }; - baseModpack = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.fetchPackwizModpack { - src = ./create-ultimate-selection-2; - packHash = "sha256-0i4RWfJLWayYkefzeePbQY48nr/TdbX/sUVFfppkKvM="; # Leave empty initially; update with the correct value after the first failed build (see instructions below) - }; - modpack = baseModpack.overrideAttrs (old: { - buildPhase = - '' - cp ${modpackZip} "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip" - '' - + old.buildPhase; - }); - in { - enable = true; - package = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.neoforgeServers.neoforge-1_21_1; - serverProperties = { - motd = "createpack!!"; - max-players = 5; - difficulty = "normal"; - allow-flight = true; - view-distance = 16; - }; - jvmOpts = "-Xms1024M -Xmx6144M"; - symlinks.mods = "${modpack}/mods"; - }; + managementSystem.systemd-socket.enable = true; + # servers.createpack = { + # enable = true; + # package = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.neoforgeServers.neoforge-1_21_1; + # serverProperties = { + # motd = "createpack!!"; + # max-players = 5; + # difficulty = "normal"; + # allow-flight = true; + # view-distance = 16; + # }; + # jvmOpts = "-Xms1024M -Xmx6144M"; + # symlinks.mods = "${modpack}/mods"; + # }; servers.owo = { enable = false; package = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.fabricServers.fabric-1_21_5; From a56c2bb160b6a47c5add2deac23e7747961c75b9 Mon Sep 17 00:00:00 2001 From: xunuwu Date: Thu, 19 Feb 2026 23:24:57 +0100 Subject: [PATCH 4/5] clean up mc server stuff --- hosts/hopper/profiles/lab/minecraft.nix | 117 ------------------------ 1 file changed, 117 deletions(-) diff --git a/hosts/hopper/profiles/lab/minecraft.nix b/hosts/hopper/profiles/lab/minecraft.nix index 200c09d..a70c814 100644 --- a/hosts/hopper/profiles/lab/minecraft.nix +++ b/hosts/hopper/profiles/lab/minecraft.nix @@ -3,84 +3,25 @@ pkgs, ... }: let - # neoforgeVersion = "21.1.219"; - # vanillaServer = pkgs.fetchurl { - # url = "https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar"; - # name = "minecraft_server.1.21.1.jar"; - # hash = "sha256-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX="; # Replace with actual hash: run `nix-prefetch-url 'https://piston-data.mojang.com/v1/objects/59353fb40c36d304f2035d51e7d6e6baa98dc05c/server.jar' --name 'minecraft_server.1.21.1.jar'` - # }; - # neoforgeInstaller = pkgs.fetchurl { - # url = "https://maven.neoforged.net/releases/net/neoforged/neoforge/${neoforgeVersion}/neoforge-${neoforgeVersion}-installer.jar"; - # hash = "sha256-FA3w+hf9Q4hIBR7Po9CRCBUVrRK/40+hJkBQN7oB3kQ="; # Replace with actual hash: run `nix-prefetch-url 'https://maven.neoforged.net/releases/net/neoforged/neoforge/21.1.219/neoforge-21.1.219-installer.jar'` - # }; - # modpackZip = pkgs.fetchurl { - # url = "https://git.xunuwu.xyz/xun/nixos-config/releases/download/create-ultimate-bundle-thing/Create%20Ultimate%20Selection%202%20MC%201.21.1-5.2.0.zip"; - # name = "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip"; - # hash = "sha256-+ykE2GE5lWQVLfcKyleKmQ+GXC+yN54yIgh7mPxxj4g="; # Replace with actual hash: run `nix-prefetch-url --name 'Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip' 'https://www.curseforge.com/minecraft/modpacks/create-ultimate-selection-2/download/7634594/file'` and paste the output here - # }; modpackZip = pkgs.fetchurl { url = "https://git.xunuwu.xyz/xun/nixos-config/releases/download/create-ultimate-thing-full/Create%20Ultimate%20Selection%202%20Serverpack%20MC%201.21.1-5.3.0.zip"; name = "Create Ultimate Selection 2 MC 1.21.1-5.3.0.zip"; - # hash = ""; # Replace with actual hash: run `nix-prefetch-url --name 'Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip' 'https://www.curseforge.com/minecraft/modpacks/create-ultimate-selection-2/download/7634594/file'` and paste the output here hash = "sha256-xDChlZWivNNjYnmSCUIyrxfvqXAHrbvql7jyEDvVXvA="; }; - # baseModpack = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.fetchPackwizModpack { - # src = ./create-ultimate-selection-2; - # packHash = "sha256-0i4RWfJLWayYkefzeePbQY48nr/TdbX/sUVFfppkKvM="; # Leave empty initially; update with the correct value after the first failed build (see instructions below) - # }; - # modpack = baseModpack.overrideAttrs (old: { - # buildPhase = - # '' - # cp ${modpackZip} "Create Ultimate Selection 2 MC 1.21.1-5.2.0.zip" - # '' - # + old.buildPhase; - # }); neoforge = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.neoforgeServers.neoforge-1_21_1; serverPackage = pkgs.stdenv.mkDerivation { name = "minecraft-createpack-server"; nativeBuildInputs = [pkgs.unzip]; dontUnpack = true; installPhase = '' - # mkdir -p $out - # cp -r ${neoforge}/* $out - # unzip ${modpackZip} -d temp - # cp -r temp/overrides/* $out/ - # rm -rf temp - mkdir -p $out - # 1. Base NeoForge from nix-minecraft cp -r ${neoforge}/* $out/ - # 2. Overlay the full official server pack (this brings ALL mods + libraries) unzip ${modpackZip} -d temp cp -r temp/* $out/ 2>/dev/null || true rm -rf temp ''; }; - # serverPackage = pkgs.stdenv.mkDerivation { - # name = "minecraft-createpack-server"; - # src = modpackZip; - # # nativeBuildInputs = [pkgs.unzip pkgs.jdk21 pkgs.breakpointHook]; - # nativeBuildInputs = [pkgs.unzip pkgs.jdk21]; - # dontPatch = true; - # buildPhase = '' - # mkdir server - # # unzip ${modpackZip} - # cp -r overrides/* server/ - # ''; - # # buildPhase = '' - # # mkdir server - # # cd server - # # java -jar ${neoforgeInstaller} --installServer - # # cd .. - # # unzip ${modpackZip} - # # cp -r overrides/* server/ - # # ''; - # installPhase = '' - # mkdir -p $out - # cp -r server/* $out - # ''; - # }; in { users.users.minecraft-createpack = { isSystemUser = true; @@ -105,74 +46,29 @@ in { WorkingDirectory = "/srv/minecraft/createpack"; Restart = "always"; RestartSec = "5s"; - # ExecStart = "${pkgs.jdk21}/bin/java -Xms1024M -Xmx6144M -jar ${serverPackage}/neoforge-1.21.1-21.1.219.jar nogui"; ExecStart = '' ${pkgs.jdk21}/bin/java \ @user_jvm_args.txt \ @libraries/net/neoforged/neoforge/21.1.219/unix_args.txt \ nogui ''; - # ExecStart = "${pkgs.bash}/bin/bash ${serverPackage}/run.sh nogui"; }; - # preStart = '' - # set -euo pipefail - # - # echo "=== minecraft-createpack preStart running as $(whoami) in $(pwd) ===" - # - # # Preserve world across restarts - # if [ -d world ]; then - # mv world ../world-tmp || true - # fi - # - # # Clean slate + copy fresh files from the derivation - # rm -rf ./* .[!.]* ..?* || true - # cp -r ${serverPackage}/* . - # - # # Restore world - # if [ -d ../world-tmp ]; then - # mv ../world-tmp world - # fi - # - # chmod -R u+rwX . - # chown -R minecraft-createpack:minecraft-createpack . - # - # echo "eula=true" > eula.txt - # - # cat > server.properties < user_jvm_args.txt </dev/null || true fi done - # Gentle sync — only updates static server files, never touches your world ${pkgs.rsync}/bin/rsync -a --delete \ --exclude='world' --exclude='logs' --exclude='crash-reports' \ --exclude='backups' --exclude='screenshots' \ --exclude='user_jvm_args.txt' --exclude='server.properties' --exclude='eula.txt' \ ${serverPackage}/ ./ - # Restore user data for dir in world logs crash-reports backups screenshots; do if [ -d "../$dir-tmp" ]; then mv "../$dir-tmp" "$dir" @@ -206,19 +102,6 @@ in { eula = true; openFirewall = true; managementSystem.systemd-socket.enable = true; - # servers.createpack = { - # enable = true; - # package = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.neoforgeServers.neoforge-1_21_1; - # serverProperties = { - # motd = "createpack!!"; - # max-players = 5; - # difficulty = "normal"; - # allow-flight = true; - # view-distance = 16; - # }; - # jvmOpts = "-Xms1024M -Xmx6144M"; - # symlinks.mods = "${modpack}/mods"; - # }; servers.owo = { enable = false; package = inputs.nix-minecraft.legacyPackages.${pkgs.stdenv.hostPlatform.system}.fabricServers.fabric-1_21_5; From 6ba11eb46fd12afd4c11e59aecaf2f6edba0db42 Mon Sep 17 00:00:00 2001 From: xunuwu Date: Thu, 19 Feb 2026 23:25:41 +0100 Subject: [PATCH 5/5] open mc vc port --- hosts/hopper/profiles/lab/minecraft.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/hopper/profiles/lab/minecraft.nix b/hosts/hopper/profiles/lab/minecraft.nix index a70c814..a586e59 100644 --- a/hosts/hopper/profiles/lab/minecraft.nix +++ b/hosts/hopper/profiles/lab/minecraft.nix @@ -30,6 +30,7 @@ in { users.groups.minecraft-createpack = {}; networking.firewall.allowedTCPPorts = [25565]; + networking.firewall.allowedUDPPorts = [24454]; systemd.tmpfiles.rules = [ "d /srv/minecraft 0755 root root - -"