Skip to content

hytale-launcher: init at 2026.03.03-a4f6003#479368

Open
karol-broda wants to merge 7 commits into
NixOS:masterfrom
karol-broda:hytale-launcher-init
Open

hytale-launcher: init at 2026.03.03-a4f6003#479368
karol-broda wants to merge 7 commits into
NixOS:masterfrom
karol-broda:hytale-launcher-init

Conversation

@karol-broda

@karol-broda karol-broda commented Jan 12, 2026

Copy link
Copy Markdown

adds the official hytale launcher, a game launcher for hytale - an upcoming block-based game from hypixel studios.

the package fetches the prebuilt linux binary and patches it with autoPatchelfHook for nixos compatibility

Things done

  • Built on platform:
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • Tested, as applicable:
  • Ran nixpkgs-review on this PR. See nixpkgs-review usage.
  • Tested basic functionality of all binary files, usually in ./result/bin/.
  • Nixpkgs Release Notes
    • Package update: when the change is major or breaking.
  • NixOS Release Notes
    • Module addition: when adding a new NixOS module.
    • Module update: when the change is significant.
  • Fits CONTRIBUTING.md, pkgs/README.md, maintainers/README.md and other READMEs.

Add a 👍 reaction to pull requests you find important.

@nixpkgs-ci nixpkgs-ci Bot added 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. 12.first-time contribution This PR is the author's first one; please be gentle! 9.needs: reviewer This PR currently has no reviewers requested and needs attention. 8.has: maintainer-list (update) This PR changes `maintainers/maintainer-list.nix` labels Jan 12, 2026
@andreashgk

Copy link
Copy Markdown
Contributor

Unless there is a way to prevent the auto-updating behaviour for this launcher this package is flawed. It appears like the hytale launcher will try to replace its own binary when there is a launcher update, which is not possible when it is in the nix store. Either this has to be fixed or there needs to be a way to disable auto updating (haven't seen any info regarding this yet). If this is not fixed the package will likely break a lot.

Also, its probably worth waiting for the game to come out in the first place to see if it doesnt need any extra dependencies like java for instance.

image

Comment thread pkgs/by-name/hy/hytale-launcher/package.nix Outdated
@karol-broda

Copy link
Copy Markdown
Author

Unless there is a way to prevent the auto-updating behaviour for this launcher this package is flawed. It appears like the hytale launcher will try to replace its own binary when there is a launcher update, which is not possible when it is in the nix store. Either this has to be fixed or there needs to be a way to disable auto updating (haven't seen any info regarding this yet). If this is not fixed the package will likely break a lot.

Also, its probably worth waiting for the game to come out in the first place to see if it doesnt need any extra dependencies like java for instance.
image

image for me it is already disabled

@karol-broda karol-broda changed the title hytale-launcher: init at 2026.01.11.b022ef5 hytale-launcher: init at 2026.01.12.e43ec47 Jan 12, 2026
@nixpkgs-ci nixpkgs-ci Bot added 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. and removed 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin. 9.needs: reviewer This PR currently has no reviewers requested and needs attention. labels Jan 12, 2026
Comment thread pkgs/by-name/hy/hytale-launcher/package.nix Outdated

@gepbird gepbird left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At the end, please squash your commits for the package, you should have:

  • maintainers: add karol-broda
  • hytale-launcher: init at 2026.01.12.e43ec47

Let's hope it will still work after the next update from upstream :)

Where did you get this source from? From https://hytale.com/download clicking on linux gives me a flatpak and not the zip. An update script that scrapes the website for the latest version would be nice.

Comment thread pkgs/by-name/hy/hytale-launcher/package.nix Outdated
@jelni

jelni commented Jan 12, 2026

Copy link
Copy Markdown
Member

Where did you get this source from?

@gepbird the launcher contacts https://launcher.hytale.com/version/release/launcher.json to fetch its updates, which could be used for an update script

Comment thread pkgs/by-name/hy/hytale-launcher/package.nix
Comment thread pkgs/by-name/hy/hytale-launcher/package.nix Outdated
Comment thread pkgs/by-name/hy/hytale-launcher/package.nix Outdated
@karol-broda

Copy link
Copy Markdown
Author

btw if this wont get merged before the release you can just do this, this worked for me:
https://gist.github.com/karol-broda/e777b502db6f6e066fd1c1e8596b5736

maybe copy the file from this pr instead of from the gist idk

@gepbird

gepbird commented Jan 13, 2026

Copy link
Copy Markdown
Contributor

Considering the Nix expression for the current release of the launcher, I'd merge this as it is now.
But probably it will require more dependencies after it can launch the actual game and the package has to be changed, and I'm not entirely sure if auto updates will break the launcher.

I think a fair decision could be waiting out the remaining 6 hours, making sure the package can launch the game and then merge it. I don't want to delay it by waiting for the next release to check if auto update doesn't break the launcher as many of us are excited to play it :)

btw if this wont get merged before the release you can just do this, this worked for me: https://gist.github.com/karol-broda/e777b502db6f6e066fd1c1e8596b5736

maybe copy the file from this pr instead of from the gist idk

Alternatively if you're using flakes, this is also an option.

@andreashgk

andreashgk commented Jan 13, 2026

Copy link
Copy Markdown
Contributor

nix-alien also works fine to launch the launcher currently and that method does not fail to auto-update
im not sure how you disabled auto updates, there is no option for it as far as im aware and this package broke for me because of an update

@karol-broda

Copy link
Copy Markdown
Author

yea waiting until release makes sense, ngl just so hyped to finally play this

@karol-broda

Copy link
Copy Markdown
Author

nix-alien also works fine to launch the launcher currently and that method does not fail to auto-update im not sure how you disabled auto updates, there is no option for it as far as im aware and this package broke for me because of an update

for the auto update i read some of the files that were generated in .local and searched .config a bit if it maybe set a config, because it was set by default for me, will look into it a bit later

@karol-broda

This comment was marked as resolved.

@gepbird

This comment was marked as resolved.

@karol-broda

This comment was marked as resolved.

@gepbird

This comment was marked as resolved.

@gepbird

gepbird commented Jan 13, 2026

Copy link
Copy Markdown
Contributor

nix-alien also works fine to launch the launcher currently and that method does not fail to auto-update im not sure how you disabled auto updates, there is no option for it as far as im aware and this package broke for me because of an update

That seems like a cool tool, but I just tried it with and without nixGL and got a gray window at the end.

The flatpak has worked for me without issues.

@gepbird

This comment was marked as resolved.

ymstnt added a commit to ymstnt/dotfiles that referenced this pull request Mar 17, 2026
Flake lock file updates:

• Updated input 'nixpkgs-patch-hytale-launcher':
    'NixOS/nixpkgs#479368'
  → 'NixOS/nixpkgs#479368'
@glabrie

glabrie commented Mar 20, 2026

Copy link
Copy Markdown

I don't know how much it will help, but I have asked on Twitter if they could add an option to download old builds. I imagine that would be the best case scenario for the problem!
https://x.com/ghil_labrie/status/2034965694287098345?s=20

gepbird added a commit to gepbird/dotfiles that referenced this pull request Mar 20, 2026
Flake lock file updates:

• Updated input 'dwm-gep':
    'git+https://git.tchfoo.com/gepbird/dwm?ref=refs/heads/rice&rev=3fb1e6e5b6fdd9a9d9847addc02c21ff63d15ce5' (2026-03-01)
  → 'git+https://git.tchfoo.com/gepbird/dwm?ref=refs/heads/rice&rev=1a7240cf7658e06e99abc6ad8614b131ffde5bef' (2026-03-15)
• Updated input 'home-manager':
    'github:nix-community/home-manager/4aeef1941f862fe3a70d1b8264b4e289358c2325' (2026-03-12)
  → 'github:nix-community/home-manager/9670de2921812bc4e0452f6e3efd8c859696c183' (2026-03-20)
• Updated input 'nix-index-database':
    'github:nix-community/nix-index-database/1c1d8ea87b047788fd7567adf531418c5da321ec' (2026-03-08)
  → 'github:nix-community/nix-index-database/8faeb68130df077450451b6734a221ba0d6cde42' (2026-03-15)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/62dc67aa6a52b4364dd75994ec00b51fbf474e50' (2026-03-10)
  → 'github:NixOS/nixpkgs/b40629efe5d6ec48dd1efba650c797ddbd39ace0' (2026-03-18)
• Updated input 'nixpkgs-patch-hytale-launcher':
    'NixOS/nixpkgs#479368'
  → 'NixOS/nixpkgs#479368'
• Updated input 'nur':
    'github:nix-community/NUR/1a4ca0d650fbfd4c58e1b1c2b153151fec77d6b2' (2026-03-12)
  → 'github:nix-community/NUR/2c357bd5d64ffcd4a33b4ff83b0ecf86f7ee871c' (2026-03-20)
• Updated input 'nvim-gep':
    'git+https://git.tchfoo.com/gepbird/nvim?ref=refs/heads/main&rev=0d0f4c406770943dbdce12c1bc888a667fdbdc10' (2026-03-12)
  → 'git+https://git.tchfoo.com/gepbird/nvim?ref=refs/heads/main&rev=64e65cafabe9b2116b75f53aa5a345cd32e50b80' (2026-03-20)
• Updated input 'nvim-gep/neovim-nightly':
    'github:nix-community/neovim-nightly-overlay/f165d4768ca760f4c98b63286562b6fa79a8b114' (2026-03-12)
  → 'github:nix-community/neovim-nightly-overlay/7e711c5abd3b0ca9c0038606edeee6bcf09b055c' (2026-03-20)
• Updated input 'nvim-gep/neovim-nightly/neovim-src':
    'github:neovim/neovim/99a0b2f7b86d447af752ee7436dd5fd69fc6a101' (2026-03-11)
  → 'github:neovim/neovim/06befe1e348bf540bb04a8c0cafe116616e71715' (2026-03-19)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/d1ff3b1034d5bab5d7d8086a7803c5a5968cd784' (2026-03-09)
  → 'github:Mic92/sops-nix/29b6519f3e0780452bca0ac0be4584f04ac16cc5' (2026-03-19)
@ikcii

ikcii commented Mar 20, 2026

Copy link
Copy Markdown
Contributor

If that's possible that'd be a good solution. I don't know if a derivation that fetches the hash can exist tho because that hash changes from time to time and therefore the derivation fetching it would have its own hash change from time to time which would make it non-reproducible again. Or the version of the launcher the hash is calculated from has to be pinned in which case we have the same problem as before again.

Then again maybe I'm just not deep enough in the inner workings of nix so there might be a way to do that.

It'd have to be impure. The best solution would be to do our best to ensure the package for Hytale launcher is robust enough that we can confidently automate updates when they appear via CI/CD, or have the Hytale devs keep direct URLs to older versions of the launcher still accessible after an update happens. I suppose the best way would be to automate downloading and unpacking the official Flatpak release, then just bumping the hash automatically whenever it changes and making use of the fact that Flatpaks have a standarized structure which should result in updates being smooth but like I mentioned earlier, this is still going to make every Nix build with older versions of Hytale always fail unless we either get a permission to redistribute the launcher binaries in the cache or get the devs to host old launcher builds.

@GetPsyched

Copy link
Copy Markdown
Member

Hello! Apologies for the noise, but could someone rebase the PR again? It breaks since #494416 landed in nixos-unstable.

@gepbird gepbird force-pushed the hytale-launcher-init branch from 8b791dc to 295d057 Compare March 29, 2026 09:50
ymstnt added a commit to ymstnt/dotfiles that referenced this pull request Mar 30, 2026
Flake lock file updates:

• Updated input 'nixpkgs-patch-hytale-launcher':
    'NixOS/nixpkgs#479368'
  → 'NixOS/nixpkgs#479368'
gepbird added a commit to gepbird/dotfiles that referenced this pull request Mar 30, 2026
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/1eb0549a1ab3fe3f5acf86668249be15fa0e64f7' (2026-03-24)
  → 'github:nix-community/home-manager/9340f51314713c83360bf72d75c8b404778ab5b1' (2026-03-30)
• Updated input 'nix-index-database':
    'github:nix-community/nix-index-database/55b588747fa3d7fc351a11831c4b874dab992862' (2026-03-22)
  → 'github:nix-community/nix-index-database/bc13aeaed568be76eab84df88ff39261bb52ff70' (2026-03-29)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9' (2026-03-24)
  → 'github:NixOS/nixpkgs/8110df5ad7abf5d4c0f6fb0f8f978390e77f9685' (2026-03-28)
• Updated input 'nixpkgs-patch-hytale-launcher':
    'NixOS/nixpkgs#479368'
  → 'NixOS/nixpkgs#479368'
• Updated input 'nur':
    'github:nix-community/NUR/d44823e10e2012d9a907d19163429121a544ec04' (2026-03-26)
  → 'github:nix-community/NUR/333d355904136c1ebb56e83c4b23464bd815653c' (2026-03-30)
• Updated input 'nvim-gep':
    'git+https://git.tchfoo.com/gepbird/nvim?ref=refs/heads/main&rev=2733cb16dd436a542618964d0726d9f8afe3804e' (2026-03-24)
  → 'git+https://git.tchfoo.com/gepbird/nvim?ref=refs/heads/main&rev=1ade30a600ef0c1719c705c778e52f2937776a80' (2026-03-30)
• Updated input 'nvim-gep/neovim-nightly':
    'github:nix-community/neovim-nightly-overlay/701c0a6174fde5de4b9424c0d1e5a4306b73baac' (2026-03-23)
  → 'github:nix-community/neovim-nightly-overlay/a49f9d17bcaa684b81fc4322fbcbfc3ba501d40e' (2026-03-30)
• Updated input 'nvim-gep/neovim-nightly/neovim-src':
    'github:neovim/neovim/6cd1fe9a66947511f59226d51dd70197d80513e5' (2026-03-22)
  → 'github:neovim/neovim/ed822a085db0b6f4c682707be2c35a7acdca57b2' (2026-03-29)
• Updated input 'nvim-gep/nixvim':
    'github:nix-community/nixvim/21ae25e13b01d3b4cdc750b5f9e7bad68b150c10' (2026-03-01)
  → 'github:nix-community/nixvim/cbd8536a05d1aae2593cb5c9ace1010c8c5845cb' (2026-03-29)
• Updated input 'sops-nix':
    'github:Mic92/sops-nix/614e256310e0a4f8a9ccae3fa80c11844fba7042' (2026-03-23)
  → 'github:Mic92/sops-nix/8adb84861fe70e131d44e1e33c426a51e2e0bfa5' (2026-03-29)
@nixpkgs-ci nixpkgs-ci Bot added the 2.status: merge conflict This PR has merge conflicts with the target branch label Apr 4, 2026
@rostby

rostby commented Apr 23, 2026

Copy link
Copy Markdown

Are we gonna get GTA 6 before hytale-launcher in nixpkgs?

@Ben9986

Ben9986 commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Are we gonna get GTA 6 before hytale-launcher in nixpkgs?

As far as a know/recall, the main blocker is that Hytale does not keep old versions of the launcher available when they release a new one. Because we are also not allowed to redistribute the launcher binary, this means that people with this package installed would not be able to update/install their systems when a new version is released until the update propagates through to their nixpkgs branch. They would be met with a HTML 404 error when nix tries to download the launcher from the hytale site.

I'm no nixpkgs expert so I'm not sure if there is any way for us to release this package as it stands without frequently breaking people's systems, or allowing runtime downloads (not sure if these are allowed on nixpkgs, or would work considering the nix store is read only). Hytale could update the launcher multiple times in a week and this would leave people unable to update their systems (unless they remove the hytale-launcher package, which is inconvenient).

So, as far as I see it, the main solutions are:

  1. The Hytale devs keep the previous few versions of the launcher available for us to download from their servers, which would give us time to update our package before rebuilds stop working, and/or,
  2. The Hytale devs allow slightly older versions of the launcher to run and launch the game i.e. they would allow launchers 2-3 weeks out of date to still launch the game, even in offline only mode would be acceptable to me. As it stands, I believe the launcher breaks when it sees there is an update available and it cannot update itself due to it being in the read-only nix store (someone correct me if I'm wrong) and,
  3. They use a license for the Hytale launcher which allows us to redistribute the unmodified binary. This would allow us to change the licence from unfree and be able to cache the build, but would not fix the issue of the launcher breaking when it tries to update itself and fails.

Options 1 & 2 would both have to be implemented together, or options 2 & 3 together.

Someone let me know if any of this is incorrect, I didn't fancy going back through the 150 comments of this pull so I'm going off my memory, which is often flawed :).

@liquidnya

Copy link
Copy Markdown
Contributor

Someone let me know if any of this is incorrect, I didn't fancy going back through the 150 comments of this pull so I'm going off my memory, which is often flawed :).

I like how you summarized the options 1, 2, and 3 to add more structure to this conversation.

I want to add the following as well:

  • option 4) @ItsLiyua is suggesting the following here:

    In my opinion downloading the launcher at runtime would be fine as well. It'll update the game impurely anyway and the devices that have hytale installed are usually not the ones that need to be 100% reproducible

    This could also be a solution that would be very differently. This would be a hytale-launcher-launcher in a way, downloading the launcher at runtime and then starting it. This would not do any hash verification during built-time.

    @ItsLiyua's comment has 5 👍 and 0 👎 as of the time this message was posted.
    However, @jjsuperpower suggested this idea earlier and as of now that comment has 0 👍 and 9 👎.
    To me that sounds like it might be a compromise that is not wanted, but better than having no option.

    How the at runtime downloaded hytale-launcher is trusted is to be defined. E.g. by trusting cacert and the domain name offering the download or maybe the certificate is presented to the user and the user is making the choice. Additionally the hash of the last known launcher could be added to the package for skipping runtime validation if it is the same launcher; see this comment.

  • option 5) I (@liquidnya) am suggesting the following here:

    [...] That way the hytale-launcher package would work out of the box and is not dependent on when it is build, while still allowing users to add the launcher during build (they could even override the src and add the launcher from a folder on their system to bootstrap the launcher).

    This option basically gives users the possibility to create their own hytale-launcher package and they provide the launcher executable and they manage it themselves. For example pkgs.mkHytaleLauncher { src = ./some/folder/hytale-launcher }. However, they would need to make sure to not commit the launcher into their repositories.
    This way an older configuration could still build.

    Furthermore, the package could provide tools (bash scripts) to update the hytale-launcher easily.

Option 4 could be implemented on its own.
Option 5 could be implemented on its own, added to any other options or it could just be pkgs.hytale-launcher.overrideAttrs { src = ./some/folder/hytale-launcher; } anyways, but with better tooling support for that use-case.

@liquidnya

Copy link
Copy Markdown
Contributor

Regarding that older configs can not be rebuid easily:

Recently I was rebuilding an old config of mine and it did fail to download the enpass package. This package has the unfree license, so the binary/package has not been cached! I did not look into why and just removed that package from my config and rebuilt it.

I think this problem has any package that is licensed as unfree. The distribution website could be down or have a different CA and so on and then older builds will fail.

So, I feel like ensuring that older builds do not fail for an unfree package could be asking too much? But I do not have any experience with that other than my very recent experience with enpass on my system.

@Janrupf

Janrupf commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

So, I feel like ensuring that older builds do not fail for an unfree package could be asking too much? But I do not have any experience with that other than my very recent experience with enpass on my system.

While I agree, the hytale launcher updates so often (at least right now), that this becomes less of a "could" and more of a "will".

That being said, this has absolutely turned into bikeshedding at this point. I still stand by the fact that a runtime download makes sense: If you have an outdated launcher version, it will/might not let you play either way. So that helps you exactly not at all with rolling back

@CodedNil

Copy link
Copy Markdown
Contributor

I agree runtime download makes the most sense, but wonder how that works in implementation. Would it download the launcher every time you run the run the desktop shortcut? I think the launcher is only about 20mb or something right, but how could it be cached with that strategy. Would it download it on launch only if it doesn't exist locally then let the launcher self update somehow after that without nix managing it?
Sorry if silly questions just not sure about these after reading all this thread.

@Ben9986

Ben9986 commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

I can see the runtime method kind of working but not sure how it would accepted by committers as it's kind of against the point of nixpkgs. Its effectively what we already have.

The current PR copies the latest version to $HOME/.local/share/Hytale/bin which puts it into an FHS env where it can auto update itself like it wants to.

I think the current method is functionally fine, if I'm understanding correctly all you need to do when the package is broken is go to https://launcher.hytale.com/version/release/launcher.json copy the version and the hash and put this in your config:

hytale-launcher.overrides = { 
  version = 2026-04-23-xyz; 
  hytaleHashes.x86_64-linux = "sha256-abc..."; 
};

The main issue is that the package will break like every 3-4 days so you would constantly need to update this manually unless you created your own local bash script which mirrors the update script here. We can see this from JPyke3's flake which implements a very similar solution to what we already have except it checks for an update every hour to ensure the flake still works whenever someone tries to use it.

I think so long as the package description clearly states that the user will more than likely need to use the above snippet to get an initial install, it may be acceptable. Or a link to the nixpkgs wiki where this is explained more in-depth would be better.

That being said, this has absolutely turned into bikeshedding at this point. I still stand by the fact that a runtime download makes sense: If you have an outdated launcher version, it will/might not let you play either way. So that helps you exactly not at all with rolling back

It would be bikeshedding if we were talking about a trivial issue, we're not. We're talking about merging a package that would be functionally broken 90% of the time and require manual overrides to work :)

@dtomvan

dtomvan commented Apr 24, 2026

Copy link
Copy Markdown
Contributor

I'm sorry if I come across as unconstructive or negative or whatever, but why would we even want a package for hytale in nixpkgs?

  • Hypixel insists on the flatpak (IIRC they don't even allow playing the linux version in any other way)
  • The package has to be broken (either due to impurities or hash mismatches) by the nature of the distribution of the software
  • We don't go around packaging every unfree steam game out there (except balatro that I know of, but they rely on nix-store --add-fixed, and the only reason it's viable is because it's love2d)

Yes, we do package minecraft servers, but their distribution model actually allows packaging (pinned) versions. So as long as hytale isn't doing that, why bother?

@ItsLiyua

Copy link
Copy Markdown

I'd like to see hytale packaged even if it's just via a runtime download. It's the same that's done with steam and it still lets you somewhat declare what's on your system. If you have to imperatively install the flatpak there'll be components that aren't even named in the configuration file.
Even if it's not 100% reproducible it's still better than not packaging it at all.
You could add a warning to the build script that shows on every build unless it is disabled using an override.

@dtomvan

dtomvan commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

[...] somewhat declare what's on your system. If you have to imperatively install the flatpak there'll be components that aren't even named in the configuration file

FWIW you could use nix-flatpak for that:

Details
{ pkgs, lib, ... }:
{
  services.flatpak.packages = lib.singleton rec {
    appId = "com.hypixel.HytaleLauncher";
    sha256 = "0ny8bqb0kklz1sg43ip45hhj2avai2zhdsiw244zk6qsfa2cnqj2";
    bundle = toString (
      pkgs.fetchurl {
        url = "https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-latest.flatpak";
        inherit sha256;
      }
    );
  };
}

(for the record I haven't tested this but fairly certain it works however you'd have to update the hash now and again)

Or, even simpler, just write a oneshot job for that:

Details
{ config, pkgs, ... }:
{
  systemd.services.install-hytale-launcher = {
    after = [ "network-online.target" ];
    serviceConfig = {
      Type = "oneshot";
      PrivateTmp = true;
      User = "flatpak";
    };
    path = [
      config.services.flatpak.package
      pkgs.coreutils
      pkgs.curl
    ];
    script = ''
      if ! flatpak info com.hypixel.HytaleLauncher; then
        tmp=`mktemp /tmp/XXXXX.flatpak`
        curl -o $tmp https://launcher.hytale.com/builds/release/linux/amd64/hytale-launcher-latest.flatpak
        flatpak install --noninteractive --bundle $tmp
      fi
    '';
  };
}

(again, untested)

But you get the point, if your goal is "I want to declare Hytale somehow somewhere in configuration.nix", you have options already...

@ItsLiyua

Copy link
Copy Markdown

Yes but that's a hassle and also another flake input. People who just moved to nixos don't want to have to figure out how to add another channel to their config or migrate to a flake right away just to play a game. For steam the same thing was done to remove friction. I'd argue the devices that run steam or hytale won:'t be the devices that need 100% reproducibility.

@jjsuperpower

Copy link
Copy Markdown

I figured I pop my head back in this PR again as I was mentioned earlier. Let me preface this by saying I am more than happy to help contribute where it would be helpful, and I am not here to push an agenda.

...but why would we even want a package for hytale in nixpkgs?

Same reason as most other packages - convenience.

FWIW you could use nix-flatpak for that

Not a bad idea, but last time I tried to run the flatpak (which I will admit is a while ago) I was not successful. IMO Flatpak seems to be more of stop gap measure than a complete solution when it comes to nix.

I can see the runtime method kind of working but not sure how it would accepted by committers as it's kind of against the point of nixpkgs.

I'd actually argue this actually a good use case for nixpkgs. I agree with many people above that it is much more reproducible and true to nix to download the launcher at build time as a FOD. But due to how the Hytale launcher works, this approach requires frequent updates to the FOD hash. An independent repo with auto updates like what @JPyke3 did for his flake works well, but this is not feasible for nixpkgs. In this context, what nixpkgs is great for is convenience. I think it would be good to at least have the option of nix-shell -p hytale-launcher, like with steam.

Yes downloading the launcher at runtime is a solution that has technical dept. But I would still argue that a working solution with technical dept is better than a perfect solution that doesn't work.

Now what I would love to see the nix-hytale community focus on is the ability to set up a modded hytale server using a nix config/flake. Though that is probably out of scope for this discussion.

So now that I've stepped in it, my ego has requested protection against another round of downvote-mageddon /s.
I twirl my mustache

Please emote 👍 if you think that Windows > NixOS, please emote 👎 otherwise. There, my ego can now ignore the negative feedback :)

@dtomvan dtomvan mentioned this pull request Apr 28, 2026
13 tasks
@Ben9986

Ben9986 commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Yes downloading the launcher at runtime is a solution that has technical dept. But I would still argue that a working solution with technical dept is better than a perfect solution that doesn't work.

This isn't a working solution though. I'm not sure how no-one else seems to see this.
Once merged this package is only going to work for 3-4 days before breaking. I just don't see how this is sustainable.

It is not suitable for merging in this state.

Yes but that's a hassle and also another flake input. People who just moved to nixos don't want to have to figure out how to add another channel to their config or migrate to a flake right away just to play a game.

Quite frankly, people who have just moved to NixOS are not going to be able to use this package either. I'd argue that it's more of a hassle to have to figure out how to manually override the package version and compute the hash than it is to just see "there isn't a hytale-launcher package for NixOS. Guess I'll have to use the flatpak".

For steam the same thing was done to remove friction. I'd argue the devices that run steam or hytale won:'t be the devices that need 100% reproducibility.

The main, and crucial, difference with Steam is that they keep older versions of the .deb available on their servers for quite a while after they update, allowing us to download an outdated version from them if needed. Steam is also redistributable, meaning we can cache the built derivation on Hydra and not have to worry about losing the upstream source.
Hytale does neither of these, meaning this package build would 404 within a matter of days of being merged. It's not even an issue of reproducibility at this point, the package will simply be broken.

I'm sorry to just keep harping on about the same point but any hytale-launcher package is just going to be broken for the time being, until upstream allow redistribution or maintain older launcher versions on their servers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.status: merge conflict This PR has merge conflicts with the target branch 8.has: maintainer-list (update) This PR changes `maintainers/maintainer-list.nix` 8.has: package (new) This PR adds a new package 8.has: package (update) This PR updates a package to a newer version 10.rebuild-darwin: 1-10 This PR causes between 1 and 10 packages to rebuild on Darwin. 10.rebuild-darwin: 1 This PR causes 1 package to rebuild on Darwin. 10.rebuild-linux: 1-10 This PR causes between 1 and 10 packages to rebuild on Linux. 10.rebuild-linux: 1 This PR causes 1 package to rebuild on Linux. 12.first-time contribution This PR is the author's first one; please be gentle!

Projects

None yet

Development

Successfully merging this pull request may close these issues.