# {pkgs, ...}: let # version = "2026.01.21-11273a4"; # hytale-launcher = pkgs.fetchzip { # url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-${version}.zip"; # sha256 = "sha256-PPdYmLxAVyqSkhulZXLcaEuhofCHZ4JcDJXIQ+lBhFg="; # }; # in { # environment.systemPackages = with pkgs; [ # # (pkgs.buildFHSEnv { # # pname = "hytale"; # # inherit version; # # targetPkgs = p: # # with p; [ # # # Launcher # # libsoup_3 # # gdk-pixbuf # # glib # # gtk3 # # webkitgtk_4_1 # # # # # Game # # alsa-lib # # icu # # libGL # # openssl # # udev # # xorg.libX11 # # xorg.libXcursor # # xorg.libXrandr # # xorg.libXi # # ]; # # runScript = "${hytale-launcher}/hytale-launcher"; # # }) # hytale-launcher # ]; # } # # { pkgs }: # # let # # === AUTO-UPDATE MARKERS - DO NOT MODIFY FORMAT === # version = "2026.01.24-997c2cb"; # sha256 = "sha256-G+FFMOtLVPH2zaWQ87jymf6+JUAVFEKA4SMyuYE9MZ0="; # # === END AUTO-UPDATE MARKERS === # # pname = "hytale-launcher"; # downloadUrl = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-${version}.zip"; # # # Unwrapped derivation - extracts and patches the binary # hytale-launcher-unwrapped = pkgs.stdenv.mkDerivation { # pname = "${pname}-unwrapped"; # inherit version; # # src = pkgs.fetchurl { # url = downloadUrl; # inherit sha256; # }; # # nativeBuildInputs = with pkgs; [ # autoPatchelfHook # unzip # ]; # # unpackPhase = '' # runHook preUnpack # unzip $src -d . # runHook postUnpack # ''; # # buildInputs = with pkgs; [ # webkitgtk_4_1 # gtk3 # glib # gdk-pixbuf # libsoup_3 # cairo # pango # at-spi2-atk # harfbuzz # glibc # ]; # # runtimeDependencies = with pkgs; [ # libGL # libxkbcommon # xorg.libX11 # xorg.libXcomposite # xorg.libXdamage # xorg.libXext # xorg.libXfixes # xorg.libXrandr # ]; # # # No build phase needed - just unpack and install # dontBuild = true; # # installPhase = '' # runHook preInstall # # mkdir -p $out/lib/hytale-launcher # install -m755 hytale-launcher $out/lib/hytale-launcher/ # # runHook postInstall # ''; # # meta = with pkgs.lib; { # description = "Official launcher for Hytale game (unwrapped)"; # homepage = "https://hytale.com"; # license = licenses.unfree; # sourceProvenance = with sourceTypes; [ binaryNativeCode ]; # maintainers = [{ # name = "Jacob Pyke"; # email = "github@pyk.ee"; # github = "JPyke3"; # githubId = 13283054; # }]; # platforms = [ "x86_64-linux" ]; # }; # }; # # # FHS-wrapped derivation - allows self-updates to work # hytale-launcher = pkgs.buildFHSEnv { # name = "hytale-launcher"; # inherit version; # # targetPkgs = pkgs: with pkgs; [ # # Core dependencies # hytale-launcher-unwrapped # # # WebKit/GTK stack (for launcher UI) # webkitgtk_4_1 # gtk3 # glib # gdk-pixbuf # libsoup_3 # cairo # pango # at-spi2-atk # harfbuzz # # # Graphics - OpenGL/Vulkan/EGL (for game client via SDL3) # libGL # libGLU # libglvnd # mesa # vulkan-loader # egl-wayland # # # X11 (SDL3 dlopens these) # xorg.libX11 # xorg.libXcomposite # xorg.libXdamage # xorg.libXext # xorg.libXfixes # xorg.libXrandr # xorg.libXcursor # xorg.libXi # xorg.libxcb # xorg.libXScrnSaver # xorg.libXinerama # xorg.libXxf86vm # # # Wayland (SDL3 can use Wayland backend) # wayland # libxkbcommon # # # Audio (for game client via bundled OpenAL) # alsa-lib # pipewire # pulseaudio # # # System libraries # dbus # fontconfig # freetype # glibc # nspr # nss # systemd # zlib # # # C++ runtime (needed by libNoesis.so, libopenal.so in game client) # stdenv.cc.cc.lib # # # .NET runtime dependencies (HytaleClient is a .NET application) # icu # openssl # krb5 # # # TLS/SSL support for GLib networking (launcher) # glib-networking # cacert # ]; # # runScript = pkgs.writeShellScript "hytale-launcher-wrapper" '' # # Hytale data directory # LAUNCHER_DIR="''${XDG_DATA_HOME:-$HOME/.local/share}/Hytale" # LAUNCHER_BIN="$LAUNCHER_DIR/hytale-launcher" # BUNDLED_HASH_FILE="$LAUNCHER_DIR/.bundled_hash" # BUNDLED_BIN="${hytale-launcher-unwrapped}/lib/hytale-launcher/hytale-launcher" # # mkdir -p "$LAUNCHER_DIR" # # # Compute hash of bundled binary to detect Nix package updates # BUNDLED_HASH=$(sha256sum "$BUNDLED_BIN" | cut -d" " -f1) # # # Copy bundled binary if needed (new install or Nix package update) # if [ ! -x "$LAUNCHER_BIN" ] || [ ! -f "$BUNDLED_HASH_FILE" ] || [ "$(cat "$BUNDLED_HASH_FILE")" != "$BUNDLED_HASH" ]; then # install -m755 "$BUNDLED_BIN" "$LAUNCHER_BIN" # echo "$BUNDLED_HASH" > "$BUNDLED_HASH_FILE" # fi # # # Required environment variable from Flatpak metadata # export WEBKIT_DISABLE_COMPOSITING_MODE=1 # # # Enable GLib TLS backend (glib-networking) # export GIO_MODULE_DIR=/usr/lib/gio/modules # # # SSL certificates # export SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt # # exec "$LAUNCHER_BIN" "$@" # ''; # # extraInstallCommands = '' # # Install desktop file # mkdir -p $out/share/applications # cat > $out/share/applications/hytale-launcher.desktop << EOF # [Desktop Entry] # Name=Hytale Launcher # Comment=Official launcher for Hytale # Exec=$out/bin/hytale-launcher # Icon=hytale-launcher # Terminal=false # Type=Application # Categories=Game; # Keywords=hytale;game;launcher;hypixel; # StartupWMClass=com.hypixel.HytaleLauncher # EOF # # ''; # # meta = with pkgs.lib; { # description = "Official launcher for Hytale game"; # longDescription = '' # The official launcher for Hytale, developed by Hypixel Studios. # This package wraps the launcher from the official distribution, # providing FHS compatibility for self-updates. # ''; # homepage = "https://hytale.com"; # license = licenses.unfree; # sourceProvenance = with sourceTypes; [ binaryNativeCode ]; # maintainers = [{ # name = "Jacob Pyke"; # email = "github@pyk.ee"; # github = "JPyke3"; # githubId = 13283054; # }]; # platforms = [ "x86_64-linux" ]; # mainProgram = "hytale-launcher"; # }; # }; # # in { # inherit hytale-launcher hytale-launcher-unwrapped; # } {pkgs, ...}: let # === AUTO-UPDATE MARKERS - DO NOT MODIFY FORMAT === version = "2026.01.24-997c2cb"; sha256 = "sha256-G+FFMOtLVPH2zaWQ87jymf6+JUAVFEKA4SMyuYE9MZ0="; # === END AUTO-UPDATE MARKERS === pname = "hytale-launcher"; downloadUrl = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-${version}.zip"; # Unwrapped derivation - extracts and patches the binary hytale-launcher-unwrapped = pkgs.stdenv.mkDerivation { pname = "${pname}-unwrapped"; inherit version; src = pkgs.fetchurl { url = downloadUrl; inherit sha256; }; nativeBuildInputs = with pkgs; [ autoPatchelfHook unzip ]; unpackPhase = '' runHook preUnpack unzip $src -d . runHook postUnpack ''; buildInputs = with pkgs; [ webkitgtk_4_1 gtk3 glib gdk-pixbuf libsoup_3 cairo pango at-spi2-atk harfbuzz glibc ]; runtimeDependencies = with pkgs; [ libGL libxkbcommon # xorg.libX11 # xorg.libXcomposite # xorg.libXdamage # xorg.libXext # xorg.libXfixes # xorg.libXrandr ]; # No build phase needed - just unpack and install dontBuild = true; installPhase = '' runHook preInstall mkdir -p $out/lib/hytale-launcher install -m755 hytale-launcher $out/lib/hytale-launcher/ runHook postInstall ''; meta = with pkgs.lib; { description = "Official launcher for Hytale game (unwrapped)"; homepage = "https://hytale.com"; license = licenses.unfree; sourceProvenance = with sourceTypes; [binaryNativeCode]; maintainers = [ { name = "Jacob Pyke"; email = "github@pyk.ee"; github = "JPyke3"; githubId = 13283054; } ]; platforms = ["x86_64-linux"]; }; }; # FHS-wrapped derivation - allows self-updates to work hytale-launcher = pkgs.buildFHSEnv { name = "hytale-launcher"; inherit version; targetPkgs = pkgs: with pkgs; [ # Core dependencies hytale-launcher-unwrapped # WebKit/GTK stack (for launcher UI) webkitgtk_4_1 gtk3 glib gdk-pixbuf libsoup_3 cairo pango at-spi2-atk harfbuzz # Graphics - OpenGL/Vulkan/EGL (for game client via SDL3) libGL libGLU libglvnd mesa vulkan-loader egl-wayland # X11 (SDL3 dlopens these) # xorg.libX11 # xorg.libXcomposite # xorg.libXdamage # xorg.libXext # xorg.libXfixes # xorg.libXrandr # xorg.libXcursor # xorg.libXi # xorg.libxcb # xorg.libXScrnSaver # xorg.libXinerama # xorg.libXxf86vm # Wayland (SDL3 can use Wayland backend) wayland libxkbcommon # Audio (for game client via bundled OpenAL) alsa-lib pipewire pulseaudio # System libraries dbus fontconfig freetype glibc nspr nss systemd zlib # C++ runtime (needed by libNoesis.so, libopenal.so in game client) stdenv.cc.cc.lib # .NET runtime dependencies (HytaleClient is a .NET application) icu openssl krb5 # TLS/SSL support for GLib networking (launcher) glib-networking cacert ]; runScript = pkgs.writeShellScript "hytale-launcher-wrapper" '' # Hytale data directory LAUNCHER_DIR="''${XDG_DATA_HOME:-$HOME/.local/share}/Hytale" LAUNCHER_BIN="$LAUNCHER_DIR/hytale-launcher" BUNDLED_HASH_FILE="$LAUNCHER_DIR/.bundled_hash" BUNDLED_BIN="${hytale-launcher-unwrapped}/lib/hytale-launcher/hytale-launcher" mkdir -p "$LAUNCHER_DIR" # Compute hash of bundled binary to detect Nix package updates BUNDLED_HASH=$(sha256sum "$BUNDLED_BIN" | cut -d" " -f1) # Copy bundled binary if needed (new install or Nix package update) if [ ! -x "$LAUNCHER_BIN" ] || [ ! -f "$BUNDLED_HASH_FILE" ] || [ "$(cat "$BUNDLED_HASH_FILE")" != "$BUNDLED_HASH" ]; then install -m755 "$BUNDLED_BIN" "$LAUNCHER_BIN" echo "$BUNDLED_HASH" > "$BUNDLED_HASH_FILE" fi # Required environment variable from Flatpak metadata export WEBKIT_DISABLE_COMPOSITING_MODE=1 # Enable GLib TLS backend (glib-networking) export GIO_MODULE_DIR=/usr/lib/gio/modules # SSL certificates export SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt exec "$LAUNCHER_BIN" "$@" ''; extraInstallCommands = '' # Install desktop file mkdir -p $out/share/applications cat > $out/share/applications/hytale-launcher.desktop << EOF [Desktop Entry] Name=Hytale Launcher Comment=Official launcher for Hytale Exec=$out/bin/hytale-launcher Icon=hytale-launcher Terminal=false Type=Application Categories=Game; Keywords=hytale;game;launcher;hypixel; StartupWMClass=com.hypixel.HytaleLauncher EOF ''; meta = with pkgs.lib; { description = "Official launcher for Hytale game"; longDescription = '' The official launcher for Hytale, developed by Hypixel Studios. This package wraps the launcher from the official distribution, providing FHS compatibility for self-updates. ''; homepage = "https://hytale.com"; license = licenses.unfree; sourceProvenance = with sourceTypes; [binaryNativeCode]; maintainers = [ { name = "Jacob Pyke"; email = "github@pyk.ee"; github = "JPyke3"; githubId = 13283054; } ]; platforms = ["x86_64-linux"]; mainProgram = "hytale-launcher"; }; }; in { environment.systemPackages = with pkgs; [ hytale-launcher ]; }