about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLin Xianyi <iynaix@gmail.com>2024-06-24 11:02:36 +0800
committerLin Xianyi <iynaix@gmail.com>2024-06-24 22:39:37 +0800
commit30436ac0d7d483631ac7d61c7c81e308bfe0d697 (patch)
tree15e0e76d742b7e1db3d1469d349be22fe838f975
parentf3e3fe79ae98179b830cdfbbf8fc8a7cdda6e06b (diff)
path-of-building: add desktop item
-rw-r--r--pkgs/games/path-of-building/default.nix69
1 files changed, 64 insertions, 5 deletions
diff --git a/pkgs/games/path-of-building/default.nix b/pkgs/games/path-of-building/default.nix
index 1e2a2811769a1..b3f5549c487c8 100644
--- a/pkgs/games/path-of-building/default.nix
+++ b/pkgs/games/path-of-building/default.nix
@@ -1,6 +1,21 @@
-{ stdenv, lib, fetchFromGitHub, unzip, meson, ninja, pkg-config, qtbase, qttools, wrapQtAppsHook, luajit }:
+{
+  stdenv,
+  lib,
+  fetchFromGitHub,
+  unzip,
+  meson,
+  ninja,
+  pkg-config,
+  qtbase,
+  qttools,
+  wrapQtAppsHook,
+  icoutils,
+  copyDesktopItems,
+  makeDesktopItem,
+  luajit,
+}:
 let
-  data = stdenv.mkDerivation(finalAttrs: {
+  data = stdenv.mkDerivation (finalAttrs: {
     pname = "path-of-building-data";
     version = "2.42.0";
 
@@ -42,12 +57,35 @@ stdenv.mkDerivation {
     hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk=";
   };
 
-  nativeBuildInputs = [ meson ninja pkg-config qttools wrapQtAppsHook ];
-  buildInputs = [ qtbase luajit luajit.pkgs.lua-curl ];
+  nativeBuildInputs = [
+    meson
+    ninja
+    pkg-config
+    qttools
+    wrapQtAppsHook
+    icoutils
+  ] ++ lib.optional stdenv.isLinux copyDesktopItems;
+
+  buildInputs = [
+    qtbase
+    luajit
+    luajit.pkgs.lua-curl
+  ];
 
   installPhase = ''
     runHook preInstall
     install -Dm555 pobfrontend $out/bin/pobfrontend
+
+    wrestool -x -t 14 ${data.src}/runtime/Path{space}of{space}Building.exe -o pathofbuilding.ico
+    icotool -x pathofbuilding.ico
+
+    for size in 16 32 48 256; do
+      mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
+      install -Dm 644 pathofbuilding*"$size"x"$size"*.png \
+        $out/share/icons/hicolor/"$size"x"$size"/apps/pathofbuilding.png
+    done
+    rm pathofbuilding.ico
+
     runHook postInstall
   '';
 
@@ -59,6 +97,27 @@ stdenv.mkDerivation {
     )
   '';
 
+  desktopItems = [
+    (makeDesktopItem {
+      name = "path-of-building";
+      desktopName = "Path of Building";
+      comment = "Offline build planner for Path of Exile";
+      exec = "pobfrontend %U";
+      terminal = false;
+      type = "Application";
+      icon = "pathofbuilding";
+      categories = [ "Game" ];
+      keywords = [
+        "poe"
+        "pob"
+        "pobc"
+        "path"
+        "exile"
+      ];
+      mimeTypes = [ "x-scheme-handler/pob" ];
+    })
+  ];
+
   passthru.data = data;
 
   meta = {
@@ -67,6 +126,6 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.k900 ];
     mainProgram = "pobfrontend";
-    broken = stdenv.isDarwin;  # doesn't find uic6 for some reason
+    broken = stdenv.isDarwin; # doesn't find uic6 for some reason
   };
 }