diff --git a/pkgs/default.nix b/pkgs/default.nix index 67df823..507b53b 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -7,6 +7,7 @@ pr-tracker = final.callPackage ./pr-tracker.nix { }; homebox = final.callPackage ./homebox.nix { }; deploy = final.callPackage ./deploy.nix { }; + minion = final.callPackage ./minion.nix { }; mongodb-bin = final.callPackage ./mongodb-bin.nix { }; awakened-poe-trade = final.callPackage ./awakened-poe-trade.nix { }; neovim-clean = final.neovim-unwrapped.overrideAttrs ( diff --git a/pkgs/minion.nix b/pkgs/minion.nix new file mode 100644 index 0000000..d2f457b --- /dev/null +++ b/pkgs/minion.nix @@ -0,0 +1,65 @@ +{ + stdenvNoCC, + lib, + fetchzip, + openjdk11, + makeDesktopItem, + javaPackages, + gsettings-desktop-schemas, + gtk3, +}: + +let + openjfx = javaPackages.openjfx11.override { withWebKit = true; }; + jdk = openjdk11.override ( + prev: + prev + // { + enableJavaFX = true; + inherit openjfx; + } + ); +in +stdenvNoCC.mkDerivation rec { + version = "3.0.12"; + pname = "minion"; + + src = fetchzip { + url = "https://cdn.mmoui.com/minion/v3/Minion3.0.12-java.zip"; + hash = "sha256-KjSj3TBMY3y5kgIywtIDeil0L17dau/Rb2HuXAulSO8="; + stripRoot = false; + }; + + installPhase = '' + mkdir -p "$out/bin" + mkdir -p "$out/lib/${pname}" + cp ./Minion-jfx.jar "$out/lib/${pname}/Minion-jfx.jar" + cp -r ./lib "$out/lib/${pname}/lib" + + cat > "$out/bin/${pname}" << EOF + #!${stdenvNoCC.shell} + CLASSPATH="$out/lib" + XDG_DATA_DIRS="${gsettings-desktop-schemas}/share/gsettings-schemas/${gsettings-desktop-schemas.name}:${gtk3}/share/gsettings-schemas/${gtk3.name}:XDG_DATA_DIRS" + exec ${lib.getExe jdk} -cp "$CLASSPATH ./lib" -jar "$out/lib/${pname}/Minion-jfx.jar" "\$@" + EOF + + chmod a+x "$out/bin/${pname}" + + ''; + + desktopItems = [ + (makeDesktopItem { + name = "minion"; + exec = "minion"; + comment = "MMO Addon manager for Elder Scrolls Online and World of Warcraft"; + desktopName = "Minion"; + categories = [ "Game" ]; + }) + ]; + + meta = with lib; { + description = "MMO Addon manager"; + homepage = "https://www.mmoui.com/"; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/users/patrick/default.nix b/users/patrick/default.nix index 52c767c..a55dfc9 100644 --- a/users/patrick/default.nix +++ b/users/patrick/default.nix @@ -62,6 +62,7 @@ lib.optionalAttrs (!minimal) { ./firefox.nix ./gpg ./impermanence.nix + ./minion.nix ../common ../common/impermanence.nix diff --git a/users/patrick/minion.nix b/users/patrick/minion.nix new file mode 100644 index 0000000..3e61106 --- /dev/null +++ b/users/patrick/minion.nix @@ -0,0 +1,35 @@ +{ lib, pkgs, ... }: +let + # addon-path is base64 encode path + cfgFile = lib.writeText '' + + + 2 + + 2 + 4 + /home/patrick/.minion + + + + d738b17b-2d14-4cb3-ab39-31ced61f7910 + + + + + + + + + + + ''; +in +{ + home.packages = [ pkgs.minion ]; + # yet another program that uses the config file as a live state file + # Why? + home.activation.installMinionConfig = lib.hm.dag.entryAfter [ "writeBoundary" ] '' + run cp -f ${cfgFile} .minion/minion.xml + ''; +}