# Fjord Launcher Nix Packaging ## Installing a stable release (nixpkgs) Fjord Launcher is packaged in [nixpkgs](https://github.com/NixOS/nixpkgs/) since 22.11. See [Package variants](#package-variants) for a list of available packages. ## Installing a development release (flake) We use [cachix](https://cachix.org/) to cache our development and release builds. If you want to avoid rebuilds you may add the Cachix bucket to your substitutors, or use `--accept-flake-config` to temporarily enable it when using `nix` commands. Example (NixOS): ```nix { nix.settings = { trusted-substituters = [ "https://unmojang.cachix.org" ]; trusted-public-keys = [ "unmojang.cachix.org-1:OfHnbBNduZ6Smx9oNbLFbYyvOWSoxb2uPcnXPj4EDQY=" ]; }; } ``` ### Installing the package directly After adding `github:unmojang/FjordLauncher` to your flake inputs, you can access the flake's `packages` output. Example: ```nix { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; fjordlauncher = { url = "github:unmojang/FjordLauncher"; # Optional: Override the nixpkgs input of fjordlauncher to use the same revision as the rest of your flake # Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache # # inputs.nixpkgs.follows = "nixpkgs"; # This is not required for Flakes inputs.flake-compat.follows = ""; }; }; outputs = { nixpkgs, fjordlauncher, ... }: { nixosConfigurations.foo = nixpkgs.lib.nixosSystem { modules = [ ./configuration.nix ( { pkgs, ... }: { environment.systemPackages = [ fjordlauncher.packages.${pkgs.system}.fjordlauncher ]; } ) ]; }; }; } ``` ### Using the overlay Alternatively, if you don't want to use our `packages` output, you can add our overlay to your nixpkgs instance. This will ensure Fjord is built with your system's packages. > [!WARNING] > Depending on what revision of nixpkgs your system uses, this may result in binaries that differ from the above `packages` output > If this is the case, you will not be able to use the binary cache Example: ```nix { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; fjordlauncher = { url = "github:unmojang/FjordLauncher"; # Optional: Override the nixpkgs input of fjordlauncher to use the same revision as the rest of your flake # Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache # # inputs.nixpkgs.follows = "nixpkgs"; # This is not required for Flakes inputs.flake-compat.follows = ""; }; }; outputs = { nixpkgs, fjordlauncher, ... }: { nixosConfigurations.foo = nixpkgs.lib.nixosSystem { modules = [ ./configuration.nix ( { pkgs, ... }: { nixpkgs.overlays = [ fjordlauncher.overlays.default ]; environment.systemPackages = [ pkgs.fjordlauncher ]; } ) ]; }; }; } ``` ### Installing the package ad-hoc (`nix shell`, `nix run`, etc.) You can simply call the default package of this flake. Example: ```shell nix run github:unmojang/FjordLauncher nix shell github:unmojang/FjordLauncher nix profile install github:unmojang/FjordLauncher ``` ## Installing a development release (without flakes) We use [Cachix](https://cachix.org/) to cache our development and release builds. If you want to avoid rebuilds you may add the Cachix bucket to your substitutors. Example (NixOS): ```nix { nix.settings = { trusted-substituters = [ "https://unmojang.cachix.org" ]; trusted-public-keys = [ "unmojang.cachix.org-1:OfHnbBNduZ6Smx9oNbLFbYyvOWSoxb2uPcnXPj4EDQY=" ]; }; } ``` ### Installing the package directly (`fetchTarball`) We use flake-compat to allow using this Flake on a system that doesn't use flakes. Example: ```nix { pkgs, ... }: { environment.systemPackages = [ (import ( builtins.fetchTarball "https://github.com/FjordLauncher/FjordLauncher/archive/develop.tar.gz" )).packages.${pkgs.system}.fjordlauncher ]; } ``` ### Using the overlay (`fetchTarball`) Alternatively, if you don't want to use our `packages` output, you can add our overlay to your instance of nixpkgs. This results in Fjord using your system's libraries Example: ```nix { pkgs, ... }: { nixpkgs.overlays = [ (import ( builtins.fetchTarball "https://github.com/FjordLauncher/FjordLauncher/archive/develop.tar.gz" )).overlays.default ]; environment.systemPackages = [ pkgs.fjordlauncher ]; } ``` ### Installing the package ad-hoc (`nix-env`) You can add this repository as a channel and install its packages that way. Example: ```shell nix-channel --add https://github.com/unmojang/FjordLauncher/archive/develop.tar.gz fjordlauncher nix-channel --update fjordlauncher nix-env -iA fjordlauncher.fjordlauncher ``` ## Package variants Both Nixpkgs and this repository offer the following packages: - `fjordlauncher` - The preferred build, wrapped with everything necessary to run the launcher and Minecraft - `fjordlauncher-unwrapped` - A minimal build that allows for advanced customization of the launcher's runtime environment ### Customizing wrapped packages The wrapped package (`fjordlauncher`) offers some build parameters to further customize the launcher's environment. The following parameters can be overridden: - `additionalLibs` (default: `[ ]`) Additional libraries that will be added to `LD_LIBRARY_PATH` - `additionalPrograms` (default: `[ ]`) Additional libraries that will be added to `PATH` - `controllerSupport` (default: `isLinux`) Turn on/off support for controllers on Linux (macOS will always have this) - `gamemodeSupport` (default: `isLinux`) Turn on/off support for [Feral GameMode](https://github.com/FeralInteractive/gamemode) on Linux - `jdks` (default: `[ jdk21 jdk17 jdk8 ]`) Java runtimes added to `FJORDLAUNCHER_JAVA_PATHS` variable - `msaClientID` (default: `null`, requires full rebuild!) Client ID used for Microsoft Authentication - `textToSpeechSupport` (default: `isLinux`) Turn on/off support for text-to-speech on Linux (macOS will always have this) - `withWaylandGLFW` (default: `isLinux`) Build with support for native Wayland via a custom GLFW