aboutsummaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2023-08-28 10:26:03 +0200
committerSefa Eyeoglu <contact@scrumplex.net>2023-08-28 15:18:10 +0200
commitbdc2fca711d3ad110d7ef2a2c1ae99537144a00e (patch)
tree79aae9789b2903f17987be9fc33c37a9a9106d49 /nix
parente4e4c4a430c355c79dd0cb975084b4e72ceef484 (diff)
downloadPrismLauncher-bdc2fca711d3ad110d7ef2a2c1ae99537144a00e.tar.gz
PrismLauncher-bdc2fca711d3ad110d7ef2a2c1ae99537144a00e.tar.bz2
PrismLauncher-bdc2fca711d3ad110d7ef2a2c1ae99537144a00e.zip
refactor(nix): don't instantiate nixpkgs
See https://zimbatm.com/notes/1000-instances-of-nixpkgs Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
Diffstat (limited to 'nix')
-rw-r--r--nix/default.nix31
-rw-r--r--nix/distribution.nix36
-rw-r--r--nix/pkg/default.nix (renamed from nix/package.nix)0
-rw-r--r--nix/pkg/wrapper.nix86
4 files changed, 105 insertions, 48 deletions
diff --git a/nix/default.nix b/nix/default.nix
deleted file mode 100644
index 71c95c2c..00000000
--- a/nix/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- inputs,
- self,
- ...
-}: {
- imports = [
- ./dev.nix
- ./distribution.nix
- ];
-
- _module.args = {
- # User-friendly version number.
- version = builtins.substring 0 8 self.lastModifiedDate;
- };
-
- perSystem = {system, ...}: {
- # Nixpkgs instantiated for supported systems with our overlay.
- _module.args.pkgs = import inputs.nixpkgs {
- inherit system;
- overlays = [self.overlays.default];
- };
- };
-
- # Supported systems.
- systems = [
- "x86_64-linux"
- "aarch64-linux"
- "x86_64-darwin"
- "aarch64-darwin"
- ];
-}
diff --git a/nix/distribution.nix b/nix/distribution.nix
index d0904d41..0dde1e4f 100644
--- a/nix/distribution.nix
+++ b/nix/distribution.nix
@@ -1,30 +1,32 @@
{
inputs,
self,
- version,
...
}: {
perSystem = {pkgs, ...}: {
- packages = {
- inherit (pkgs) prismlauncher-qt5-unwrapped prismlauncher-qt5 prismlauncher-unwrapped prismlauncher;
- default = pkgs.prismlauncher;
+ packages = let
+ ourPackages = self.overlays.default pkgs null;
+ in {
+ inherit (ourPackages) prismlauncher-qt5-unwrapped prismlauncher-qt5 prismlauncher-unwrapped prismlauncher;
+ default = ourPackages.prismlauncher;
};
};
flake = {
- overlays.default = final: prev: let
- # Helper function to build prism against different versions of Qt.
- mkPrism = qt:
- qt.callPackage ./package.nix {
- inherit (inputs) libnbtplusplus;
- inherit (prev.darwin.apple_sdk.frameworks) Cocoa;
- inherit self version;
- };
- in {
- prismlauncher-qt5-unwrapped = mkPrism final.libsForQt5;
- prismlauncher-qt5 = prev.prismlauncher-qt5.override {prismlauncher-unwrapped = final.prismlauncher-qt5-unwrapped;};
- prismlauncher-unwrapped = mkPrism final.qt6Packages;
- prismlauncher = prev.prismlauncher.override {inherit (final) prismlauncher-unwrapped;};
+ overlays.default = final: _: let
+ version = builtins.substring 0 8 self.lastModifiedDate;
+
+ # common args for prismlauncher evaluations
+ unwrappedArgs = {
+ inherit (inputs) libnbtplusplus;
+ inherit (final.darwin.apple_sdk.frameworks) Cocoa;
+ inherit self version;
+ };
+ in rec {
+ prismlauncher-qt5-unwrapped = final.libsForQt5.callPackage ./pkg unwrappedArgs;
+ prismlauncher-qt5 = final.libsForQt5.callPackage ./pkg/wrapper.nix {prismlauncher-unwrapped = prismlauncher-qt5-unwrapped;};
+ prismlauncher-unwrapped = final.qt6Packages.callPackage ./pkg unwrappedArgs;
+ prismlauncher = final.qt6Packages.callPackage ./pkg/wrapper.nix {inherit prismlauncher-unwrapped;};
};
};
}
diff --git a/nix/package.nix b/nix/pkg/default.nix
index 074214c4..074214c4 100644
--- a/nix/package.nix
+++ b/nix/pkg/default.nix
diff --git a/nix/pkg/wrapper.nix b/nix/pkg/wrapper.nix
new file mode 100644
index 00000000..3bf5b3f8
--- /dev/null
+++ b/nix/pkg/wrapper.nix
@@ -0,0 +1,86 @@
+{
+ lib,
+ stdenv,
+ symlinkJoin,
+ prismlauncher-unwrapped,
+ wrapQtAppsHook,
+ qtbase, # needed for wrapQtAppsHook
+ qtsvg,
+ qtwayland,
+ xorg,
+ libpulseaudio,
+ libGL,
+ glfw,
+ openal,
+ jdk8,
+ jdk17,
+ gamemode,
+ flite,
+ mesa-demos,
+ msaClientID ? null,
+ gamemodeSupport ? stdenv.isLinux,
+ textToSpeechSupport ? stdenv.isLinux,
+ jdks ? [jdk17 jdk8],
+ additionalLibs ? [],
+ additionalPrograms ? [],
+}: let
+ prismlauncherFinal = prismlauncher-unwrapped.override {
+ inherit msaClientID gamemodeSupport;
+ };
+in
+ symlinkJoin {
+ name = "prismlauncher-${prismlauncherFinal.version}";
+
+ paths = [prismlauncherFinal];
+
+ nativeBuildInputs = [
+ wrapQtAppsHook
+ ];
+
+ buildInputs =
+ [
+ qtbase
+ qtsvg
+ ]
+ ++ lib.optional (lib.versionAtLeast qtbase.version "6" && stdenv.isLinux) qtwayland;
+
+ postBuild = ''
+ wrapQtAppsHook
+ '';
+
+ qtWrapperArgs = let
+ runtimeLibs =
+ (with xorg; [
+ libX11
+ libXext
+ libXcursor
+ libXrandr
+ libXxf86vm
+ ])
+ ++ [
+ libpulseaudio
+ libGL
+ glfw
+ openal
+ stdenv.cc.cc.lib
+ ]
+ ++ lib.optional gamemodeSupport gamemode.lib
+ ++ lib.optional textToSpeechSupport flite
+ ++ additionalLibs;
+
+ runtimePrograms =
+ [
+ xorg.xrandr
+ mesa-demos # need glxinfo
+ ]
+ ++ additionalPrograms;
+ in
+ ["--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}"]
+ ++ lib.optionals stdenv.isLinux [
+ "--set LD_LIBRARY_PATH /run/opengl-driver/lib:${lib.makeLibraryPath runtimeLibs}"
+ # xorg.xrandr needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128
+ "--prefix PATH : ${lib.makeBinPath runtimePrograms}"
+ ];
+
+ inherit (prismlauncherFinal) meta;
+ }