Skip to content

Commit

Permalink
Merge pull request #59427 from nh2/idevicerestore
Browse files Browse the repository at this point in the history
Add libirecovery and idevicerestore
  • Loading branch information
worldofpeace authored Aug 13, 2019
2 parents 47fa2f1 + 0f206b3 commit f4af5f3
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 1 deletion.
1 change: 0 additions & 1 deletion pkgs/development/libraries/libimobiledevice/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ stdenv.mkDerivation rec {
preConfigure = "NOCONFIGURE=1 ./autogen.sh";

configureFlags = [
"--disable-static"
"--disable-openssl"
"--without-cython"
];
Expand Down
54 changes: 54 additions & 0 deletions pkgs/development/libraries/libirecovery/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{ stdenv, fetchFromGitHub, automake, autoconf, libtool, pkgconfig
, libusb
, readline
}:

stdenv.mkDerivation rec {
pname = "libirecovery";
version = "2019-01-28";

src = fetchFromGitHub {
owner = "libimobiledevice";
repo = pname;
rev = "5da2a0d7d60f79d93c283964888c6fbbc17be1a3";
sha256 = "0fqmr1h4b3qn608dn606y7aqv3bsm949gx72b5d6433xlw9b23n8";
};

outputs = [ "out" "dev" ];

nativeBuildInputs = [
autoconf
automake
libtool
pkgconfig
];

buildInputs = [
libusb
readline
];

preConfigure = "NOCONFIGURE=1 ./autogen.sh";

# Packager note: Not clear whether this needs a NixOS configuration,
# as only the `idevicerestore` binary was tested so far (which worked
# without further configuration).
configureFlags = [
"--with-udevrulesdir=${placeholder ''out''}/lib/udev/rules.d"
''--with-udevrule="OWNER=\"root\", GROUP=\"myusergroup\", MODE=\"0660\""''
];

meta = with stdenv.lib; {
homepage = https://github.com/libimobiledevice/libirecovery;
description = "Library and utility to talk to iBoot/iBSS via USB on Mac OS X, Windows, and Linux";
longDescription = ''
libirecovery is a cross-platform library which implements communication to
iBoot/iBSS found on Apple's iOS devices via USB. A command-line utility is also
provided.
'';
license = licenses.lgpl21;
# Upstream description says it works on more platforms, but packager hasn't tried that yet
platforms = platforms.linux;
maintainers = with maintainers; [ nh2 ];
};
}
58 changes: 58 additions & 0 deletions pkgs/tools/misc/idevicerestore/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig
, curl
, libimobiledevice
, libirecovery
, libzip
, libusbmuxd
}:

stdenv.mkDerivation rec {
pname = "idevicerestore";
version = "2019-02-14";

src = fetchFromGitHub {
owner = "libimobiledevice";
repo = pname;
rev = "8a882038b2b1e022fbd19eaf8bea51006a373c06";
sha256 = "17lisl7ll43ixl1zqwchn7jljrdyl2p9q99w30i6qaci71mas37m";
};

nativeBuildInputs = [
autoreconfHook
pkgconfig
];

buildInputs = [
curl
libimobiledevice
libirecovery
libzip
libusbmuxd
# Not listing other dependencies specified in
# https://github.com/libimobiledevice/idevicerestore/blob/8a882038b2b1e022fbd19eaf8bea51006a373c06/README#L20
# because they are inherited `libimobiledevice`.
];

meta = with stdenv.lib; {
homepage = https://github.com/libimobiledevice/idevicerestore;
description = "Restore/upgrade firmware of iOS devices";
longDescription = ''
The idevicerestore tool allows to restore firmware files to iOS devices.
It is a full reimplementation of all granular steps which are performed during
restore of a firmware to a device.
In general, upgrades and downgrades are possible, however subject to
availability of SHSH blobs from Apple for signing the firmare files.
To restore a device to some firmware, simply run the following:
$ sudo idevicerestore -l
This will download and restore a device to the latest firmware available.
'';
license = licenses.lgpl21Plus;
# configure.ac suggests it should work for darwin and mingw as well but not tried yet
platforms = platforms.linux;
maintainers = with maintainers; [ nh2 ];
};
}
3 changes: 3 additions & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3839,6 +3839,7 @@ in

ifuse = callPackage ../tools/filesystems/ifuse { };
ideviceinstaller = callPackage ../tools/misc/ideviceinstaller { };
idevicerestore = callPackage ../tools/misc/idevicerestore { };

inherit (callPackages ../tools/filesystems/irods rec {
stdenv = llvmPackages_38.libcxxStdenv;
Expand Down Expand Up @@ -11833,6 +11834,8 @@ in
inherit (darwin.apple_sdk.frameworks) Carbon;
};

libirecovery = callPackage ../development/libraries/libirecovery { };

libivykis = callPackage ../development/libraries/libivykis { };

liblastfmSF = callPackage ../development/libraries/liblastfmSF { };
Expand Down

0 comments on commit f4af5f3

Please sign in to comment.