92 lines
2.8 KiB
Nix
92 lines
2.8 KiB
Nix
# checkm8 jailbreak CLI from upstream binaries; needs root. usbmuxd + idevice* help with USB iOS.
|
||
{ ... }: {
|
||
flake.nixosModules.systemPalera1n =
|
||
{ config, lib, pkgs, ... }:
|
||
let
|
||
cfg = config.chiasson.system.palera1n;
|
||
|
||
version = "2.2.1";
|
||
|
||
srcFor =
|
||
{
|
||
x86_64-linux = pkgs.fetchurl {
|
||
url = "https://github.com/palera1n/palera1n/releases/download/v${version}/palera1n-linux-x86_64";
|
||
sha256 = "0l9ipabbiggkzvpy8hyi681kalln3z3396xsx4lz1393jw3c8dm2";
|
||
};
|
||
aarch64-linux = pkgs.fetchurl {
|
||
url = "https://github.com/palera1n/palera1n/releases/download/v${version}/palera1n-linux-arm64";
|
||
sha256 = "12n0136g218b5ndq2s7ssymab4i6pbb55l681b94zs9m9lvacfa1";
|
||
};
|
||
}
|
||
.${pkgs.stdenv.hostPlatform.system} or null;
|
||
|
||
palera1n =
|
||
if srcFor == null then
|
||
null
|
||
else
|
||
pkgs.stdenvNoCC.mkDerivation {
|
||
pname = "palera1n";
|
||
inherit version;
|
||
src = srcFor;
|
||
|
||
dontUnpack = true;
|
||
|
||
installPhase = ''
|
||
install -Dm755 $src $out/bin/palera1n
|
||
'';
|
||
|
||
meta = with lib; {
|
||
description = "iOS jailbreak tool for checkm8 devices (A8–A11)";
|
||
homepage = "https://palera.in";
|
||
license = licenses.mit;
|
||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||
mainProgram = "palera1n";
|
||
};
|
||
};
|
||
in
|
||
{
|
||
options.chiasson.system.palera1n = {
|
||
enable = lib.mkEnableOption ''
|
||
palera1n from GitHub releases + usbmuxd / libimobiledevice toggles (defaults on).
|
||
'';
|
||
|
||
usbmuxd = {
|
||
enable = lib.mkOption {
|
||
type = lib.types.bool;
|
||
default = true;
|
||
description = "usbmuxd for iOS USB.";
|
||
};
|
||
};
|
||
|
||
libimobiledevice = {
|
||
enable = lib.mkOption {
|
||
type = lib.types.bool;
|
||
default = true;
|
||
description = "idevice* tools on PATH.";
|
||
};
|
||
};
|
||
};
|
||
|
||
config = lib.mkIf cfg.enable (lib.mkMerge [
|
||
(lib.mkIf (palera1n == null) {
|
||
assertions = [
|
||
{
|
||
assertion = false;
|
||
message = "system.palera1n: no upstream binary for ${pkgs.stdenv.hostPlatform.system}";
|
||
}
|
||
];
|
||
})
|
||
(lib.mkIf (palera1n != null) {
|
||
environment.systemPackages = [ palera1n ];
|
||
})
|
||
(lib.mkIf (cfg.enable && cfg.usbmuxd.enable) {
|
||
services.usbmuxd.enable = true;
|
||
})
|
||
(lib.mkIf (cfg.enable && cfg.libimobiledevice.enable) {
|
||
environment.systemPackages = [ pkgs.libimobiledevice ];
|
||
})
|
||
]);
|
||
};
|
||
}
|