# syncthing-set-id

Modify in-place a nix module that configures syncthing device ids.  This file can used as a normal `include` in nixos configs.  This eliminates the need to copy-paste these device IDs around.

### Example

    desktop$ syncthing-set-id syncthing-devices.nix
    Creating /home/user/myNixOSConfigs/syncthing-devices.nix

    desktop$ cat syncthing-devices.nix
    {
      "services" = {
        "syncthing" = {
          "declarative" = {
            "devices" = {
              "desktop" = {
                "id" =
                  "1234567-89ABCDE-FGHIJKL-MNOPQRS-TUVWXYZ-0123456-789ABCD-EFGHIJK";
              };
            };
          };
        };
      };
    }

Then, later, on another machine:

    laptop$ syncthing-set-id syncthing-devices.nix

    laptop$ cat syncthing-devices.nix
    {
      "services" = {
        "syncthing" = {
          "declarative" = {
            "devices" = {
              "desktop" = {
                "id" =
                  "1234567-89ABCDE-FGHIJKL-MNOPQRS-TUVWXYZ-0123456-789ABCD-EFGHIJK";
              };
              "laptop" = {
                "id" =
                  "1111111-2222222-3333333-4444444-5555555-6666666-7777777-8888888";
              };
            };
          };
        };
      };
    }


### Usage

    $ syncthing-set-id

    usage: syncthing-set-device-id file [name] [id]
    example: syncthing-set-device-id /etc/nixos/modules/syncthing-devices.nix
    example: syncthing-set-device-id /etc/nixos/modules/syncthing-devices.nix lappy
    example: syncthing-set-device-id /etc/nixos/modules/syncthing-devices.nix lappy 1234567-89ABCDE-FGHIJKL-MNOPQRS-TUVWXYZ-0123456-789ABCD-EFGHIJK

    If `name` is not specified, $HOSTNAME is used.
    If `id` is not specified, the ID of the current system instance is used.


### Installation

You can use this repo as a channel.

Or, you can use an overlay.  For example, you could create a `~/.config/nixpkgs/overlays/syncthing-set-id.nix` with this in it:

    self: super:
    let
      syncthing-set-id-pkgs = import (builtins.fetchGit {
        url = "https://scottworley.com/syncthing-set-id.git";
        ref = "master";
        rev = "0c29f01e83fdadd491b930a9108519be03c7937d";
      }) { pkgs = self; };
    in { inherit (syncthing-set-id-pkgs) syncthing-set-id; }

And then

    $ nix-env -iA nixos.syncthing-set-id