MTP

From NixOS Wiki

The Media Transfer Protocol (MTP) can be used to transfer media files to and from many mobile phones (most Windows Phone and Android devices) and media players (e.g. Creative Zen).

MTP devices are usually mounted via FUSE and then appear as a more or less regular file system.

This page lists some ways to mount a MTP device.


jmtpfs

Install jmtpfs:

$ nix-env -f "<nixpkgs>" -iA jmtpfs

To mount the only available device:

$ mkdir mountpoint
$ jmtpfs mountpoint

If there are several connected devices, use -l to find them and -device= to specify which one to mount.

To unmount:

$ fusermount -u

gvfs

On NixOS, file managers that support gvfs, such as PCManFM, can mount mtp devices by adding this to configuration.nix:

{ 
  services.gvfs.enable = true;
}

The above should suffice, but there also exists a more manual method. This method apparently only works well with gtk/gnome-based desktops like Gnome Shell or Xfce. It relies on having gvfs listed in the environment variable GIO_EXTRA_MODULES, for example:

GIO_EXTRA_MODULES=/nix/store/my9jjhq7s19l05zqk969h69jhrrijpkz-gvfs-1.34.2/lib/gio/modules

First identify your device with lsusb:

$ lsusb
Bus 002 Device 007: ID 1234:5678 The device
...

The adress of the device will then be mtp://[usb:002,007]/.

You need the gio from the glib package. Then:

$ gio mount "mtp://[usb:002,007]/"

to mount and

$ gio mount -u "mtp://[usb:002,007]/"

to unmount.

The device will appear in your favorite file manager.