From 820ddaafa981498fdc8bc68268839ff2cfdb668c Mon Sep 17 00:00:00 2001 From: Amadej Kastelic Date: Mon, 26 Jan 2026 10:18:08 +0100 Subject: [PATCH 1/2] idescriptor: init at 0.1.2 --- pkgs/by-name/id/idescriptor/99-idevice.rules | 1 + pkgs/by-name/id/idescriptor/package.nix | 127 +++++++++++++++++++ 2 files changed, 128 insertions(+) create mode 100644 pkgs/by-name/id/idescriptor/99-idevice.rules create mode 100644 pkgs/by-name/id/idescriptor/package.nix diff --git a/pkgs/by-name/id/idescriptor/99-idevice.rules b/pkgs/by-name/id/idescriptor/99-idevice.rules new file mode 100644 index 000000000000..eb51d32d3526 --- /dev/null +++ b/pkgs/by-name/id/idescriptor/99-idevice.rules @@ -0,0 +1 @@ +SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", MODE="0666", GROUP="idevice" diff --git a/pkgs/by-name/id/idescriptor/package.nix b/pkgs/by-name/id/idescriptor/package.nix new file mode 100644 index 000000000000..43472b1e0afd --- /dev/null +++ b/pkgs/by-name/id/idescriptor/package.nix @@ -0,0 +1,127 @@ +{ + lib, + stdenv, + fetchFromGitHub, + buildGoModule, + copyDesktopItems, + makeDesktopItem, + cmake, + pkg-config, + avahi-compat, + ffmpeg, + libheif, + libimobiledevice, + libimobiledevice-glue, + libplist, + go, + qrencode, + libssh, + libtatsu, + libusbmuxd, + libusb1, + libzip, + openssl, + pugixml, + qt6, + lxqt, +}: +stdenv.mkDerivation (finalAttrs: { + pname = "idescriptor"; + version = "0.1.2"; + + src = fetchFromGitHub { + owner = "iDescriptor"; + repo = "iDescriptor"; + tag = "v${finalAttrs.version}"; + hash = "sha256-pj/8PCZUTPu28MQd3zL8ceDsQy4+55348ZOCpiQaiEo="; + fetchSubmodules = true; + }; + + ipatool-go-modules = + (buildGoModule { + pname = "ipatool-go"; + inherit (finalAttrs) version src; + modRoot = "lib/ipatool-go"; + vendorHash = "sha256-4ZCNgLAcZtEd7zDbIu3kyP/Cyp6TaBM9gyZEohgzCk8="; + proxyVendor = true; + doCheck = false; + env.GOWORK = "off"; + }).goModules; + + nativeBuildInputs = [ + cmake + copyDesktopItems + pkg-config + go + qt6.wrapQtAppsHook + ]; + + buildInputs = [ + avahi-compat + ffmpeg + libheif + libimobiledevice + libimobiledevice-glue + libplist + qrencode + libssh + libtatsu + libusbmuxd + libusb1 + libzip + openssl + pugixml + qt6.qtbase + qt6.qtlocation + qt6.qtmultimedia + qt6.qtpositioning + qt6.qtserialport + qt6.qtsvg + qt6.qttools + qt6.qtwayland + lxqt.qtermwidget + ]; + + cmakeFlags = [ + "-DPACKAGE_MANAGER_MANAGED=ON" + "-DPACKAGE_MANAGER_HINT=nixpkgs" + ]; + + preConfigure = '' + export GOCACHE=$TMPDIR/go-cache + export GOPATH=$TMPDIR/go + export GOPROXY=file://${finalAttrs.ipatool-go-modules} + export GOSUMDB=off + ''; + + postInstall = '' + install -Dm644 -t $out/lib/udev/rules.d ${./99-idevice.rules} + + install -Dm644 $src/resources/icons/app-icon/icon.png \ + $out/share/icons/hicolor/256x256/apps/idescriptor.png + ''; + + desktopItems = [ + (makeDesktopItem { + name = "iDescriptor"; + exec = "iDescriptor"; + icon = "idescriptor"; + desktopName = "iDescriptor"; + comment = "Cross-platform iDevice management tool"; + categories = [ + "System" + "Utility" + ]; + }) + ]; + + meta = { + homepage = "https://github.com/iDescriptor/iDescriptor"; + changelog = "https://github.com/iDescriptor/iDescriptor/releases/tag/v${finalAttrs.version}"; + description = "A cross-platform iDevice management tool"; + license = lib.licenses.agpl3Only; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ amadejkastelic ]; + mainProgram = "iDescriptor"; + }; +}) From c7931ddf3255b914d31024921447eb6f1cbe495a Mon Sep 17 00:00:00 2001 From: Amadej Kastelic Date: Mon, 26 Jan 2026 13:19:32 +0100 Subject: [PATCH 2/2] nixos/programs/idescriptor: init --- nixos/modules/module-list.nix | 1 + nixos/modules/programs/idescriptor.nix | 38 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 nixos/modules/programs/idescriptor.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 1dcb5cf8694a..a6913729e510 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -237,6 +237,7 @@ ./programs/htop.nix ./programs/i3lock.nix ./programs/iay.nix + ./programs/idescriptor.nix ./programs/iftop.nix ./programs/iio-hyprland.nix ./programs/immersed.nix diff --git a/nixos/modules/programs/idescriptor.nix b/nixos/modules/programs/idescriptor.nix new file mode 100644 index 000000000000..3f28ae6534f2 --- /dev/null +++ b/nixos/modules/programs/idescriptor.nix @@ -0,0 +1,38 @@ +{ + lib, + pkgs, + config, + ... +}: +let + cfg = config.programs.idescriptor; +in +{ + options.programs.idescriptor = { + enable = lib.mkEnableOption "iDescriptor, a cross-platform iDevice management tool"; + + package = lib.mkPackageOption pkgs "idescriptor" { }; + + users = lib.mkOption { + type = with lib.types; listOf str; + default = [ ]; + description = "Users to be added to the idevice group."; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + + services = { + udev.packages = [ cfg.package ]; + + usbmuxd.enable = true; + }; + + users.groups.idevice = { + members = cfg.users; + }; + }; + + meta.maintainers = with lib.maintainers; [ amadejkastelic ]; +}