From b746f5ad37088b7ee1a90f6ce506e44eeb4738c9 Mon Sep 17 00:00:00 2001 From: madmin Date: Fri, 9 Aug 2024 10:08:51 +0200 Subject: [PATCH] clean(systems/optional/networking): reorder, refactor ios -> iphone --- systems/common/optional/ios.nix | 12 ----- systems/common/optional/networking/iphone.nix | 48 +++++++++++++++++++ 2 files changed, 48 insertions(+), 12 deletions(-) delete mode 100644 systems/common/optional/ios.nix create mode 100644 systems/common/optional/networking/iphone.nix diff --git a/systems/common/optional/ios.nix b/systems/common/optional/ios.nix deleted file mode 100644 index fbcf91e..0000000 --- a/systems/common/optional/ios.nix +++ /dev/null @@ -1,12 +0,0 @@ -#https://nixos.wiki/wiki/IOS -{ pkgs }: -{ - services.usbmuxd = { - enable = true; - #package = pkgs.usbmuxd2; - }; - environment.systemPackages = with pkgs; [ - libimobiledevice - #ifuse # optional, to mount using 'ifuse' - ]; -} diff --git a/systems/common/optional/networking/iphone.nix b/systems/common/optional/networking/iphone.nix new file mode 100644 index 0000000..6e186dd --- /dev/null +++ b/systems/common/optional/networking/iphone.nix @@ -0,0 +1,48 @@ +# ... +# imports = [ /path/to/iphone.nix ]; +# iphone.enable = true; +# iphone.user = "yourusername"; +# ... +# Then rebuild system. Attach iPhone via cable, open terminal and run command `iphone` +# It will fail, but there will occure a dialog on your iPhone to "trust this computer" +# Press OK there and run `iphone` again. If it succeeds it will open a freshly mounted folder + +{ config, pkgs, lib, ... }: +let + cfg = config.iphone; +in { + options.iphone = { + enable = lib.mkOption { default = false; }; + directory = lib.mkOption { default = "/run/media/iPhone"; }; + user = lib.mkOption { }; + }; + config = lib.mkIf cfg.enable { + environment.systemPackages = [ + pkgs.libimobiledevice + pkgs.usbmuxd + (pkgs.writeScriptBin "iphone" '' + sudo systemctl restart iphone \ + && ${pkgs.gnome2.libgnome}/bin/gnome-open ${cfg.directory} + '') + ]; + services.usbmuxd = { + enable = true; + user = cfg.user; + #https://nixos.wiki/wiki/IOS + #package = pkgs.usbmuxd2 + }; + + systemd.services.iphone = { + preStart = "mkdir -p ${cfg.directory}; chown ${cfg.user} ${cfg.directory}"; + script = '' + ${pkgs.libimobiledevice}/bin/idevicepair pair \ + && exec ${pkgs.ifuse}/bin/ifuse ${cfg.directory} + ''; + serviceConfig = { + PermissionsStartOnly = true; + User = cfg.user; + Type = "forking"; + }; + }; + }; +}