{ pkgs, ... }: { users.groups.usbmux = {}; users.users = { katja.extraGroups = [ "usbmux" ]; usbmux.group = "usbmux"; usbmux.isSystemUser = true; }; # Give usbmuxd permission for Apple devices services.udev.extraRules = '' SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", GROUP="usbmux" ''; systemd.services.usbmuxd = { wantedBy = [ "multi-user.target" ]; serviceConfig = { # Trigger the udev rule manually. This doesn't require replugging the # device when first enabling the option to get it to work ExecStartPre = "${pkgs.udev}/bin/udevadm trigger -s usb -a idVendor=05ac"; # Start usbmuxd with `--systemd` otherwise it hangs on shutdown ExecStart = "${pkgs.usbmuxd}/bin/usbmuxd -U usbmux --systemd"; }; }; }