NixOS/nixpkgs — pull request #1873 by thoughtpolice (2014-03-03 21:15:28+00:00)
Title: nixos: add BitTorrent Sync service module

This adds a BitTorrent Sync service module with all the supported configuration options from the JSON configuration file. You can use it through a UI or through the config file to sync specific directories (the two are mutually exclusive).

This module also has one interesting aspect I haven't seen exploited in a NixOS module before: multi-instance `systemd` units. Note in particular the `btsync@` unit.

This allows the administrator to selectively start instances of the `btsync` service on-demand for a user with their own configuration file. For example, I can have my own config file at `/home/a/.config/btsync.conf`, and the administrator can start my instance with

```bash
$ systemctl start btsync@a
```

which will start an independent service under my user with my configuration file. For the record, I took this idea from ArchLinux.

I suppose in an ideal world, instead of multi-instance services we would use systemd user services (ref #1689) but as that's not done yet, I find this works adequately. I'm open to other recommendations, however.