.. | ||
README.md | ||
unwrapped.nix | ||
wrapper.nix |
Shattered Prism Nix Packaging
Installing a development release (flake)
We use cachix 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.settings = {
trusted-substituters = [ "https://unmojang.cachix.org" ];
trusted-public-keys = [
"unmojang.cachix.org-1:OfHnbBNduZ6Smx9oNbLFbYyvOWSoxb2uPcnXPj4EDQY="
];
};
}
Installing the package directly
After adding github:lunaislazier/ShatteredPrism
to your flake inputs, you can access the flake's packages
output.
Example:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
shatteredprism = {
url = "github:lunaislazier/ShatteredPrism";
# Optional: Override the nixpkgs input of shatteredprism 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";
};
};
outputs =
{ nixpkgs, shatteredprism, ... }:
{
nixosConfigurations.foo = nixpkgs.lib.nixosSystem {
modules = [
./configuration.nix
(
{ pkgs, ... }:
{
environment.systemPackages = [ shatteredprism.packages.${pkgs.system}.shatteredprism ];
}
)
];
};
};
}
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 Shattered Prism 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:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
shatteredprism = {
url = "github:lunaislazier/ShatteredPrism";
# Optional: Override the nixpkgs input of shatteredprism 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";
};
};
outputs =
{ nixpkgs, shatteredprism, ... }:
{
nixosConfigurations.foo = nixpkgs.lib.nixosSystem {
modules = [
./configuration.nix
(
{ pkgs, ... }:
{
nixpkgs.overlays = [ shatteredprism.overlays.default ];
environment.systemPackages = [ pkgs.shatteredprism ];
}
)
];
};
};
}
Installing the package ad-hoc (nix shell
, nix run
, etc.)
You can simply call the default package of this flake.
Example:
nix run github:lunaislazier/ShatteredPrism
nix shell github:lunaislazier/ShatteredPrism
nix profile install github:lunaislazier/ShatteredPrism
Installing a development release (without flakes)
We use Cachix 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.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:
{ pkgs, ... }:
{
environment.systemPackages = [
(import (
builtins.fetchTarball "https://github.com/ShatteredPrism/ShatteredPrism/archive/develop.tar.gz"
)).packages.${pkgs.system}.shatteredprism
];
}
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 Shattered Prism using your system's libraries
Example:
{ pkgs, ... }:
{
nixpkgs.overlays = [
(import (
builtins.fetchTarball "https://github.com/ShatteredPrism/ShatteredPrism/archive/develop.tar.gz"
)).overlays.default
];
environment.systemPackages = [ pkgs.shatteredprism ];
}
Installing the package ad-hoc (nix-env
)
You can add this repository as a channel and install its packages that way.
Example:
nix-channel --add https://github.com/lunaislazier/ShatteredPrism/archive/develop.tar.gz shatteredprism
nix-channel --update shatteredprism
nix-env -iA shatteredprism.shatteredprism
Package variants
This repository offers the following packages:
shatteredprism
- The preferred build, wrapped with everything necessary to run the launcher and Minecraftshatteredprism-unwrapped
- A minimal build that allows for advanced customization of the launcher's runtime environment
Customizing wrapped packages
The wrapped package (shatteredprism
) 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 toLD_LIBRARY_PATH
additionalPrograms
(default:[ ]
) Additional libraries that will be added toPATH
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 on Linuxjdks
(default:[ jdk21 jdk17 jdk8 ]
) Java runtimes added toSHATTEREDPRISM_JAVA_PATHS
variablemsaClientID
(default:null
, requires full rebuild!) Client ID used for Microsoft AuthenticationtextToSpeechSupport
(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