]> git.scottworley.com Git - syncthing-autoregister/blobdiff - modules/syncthing-autoregister.nix
Test reads device ID out of system config
[syncthing-autoregister] / modules / syncthing-autoregister.nix
index d1f0a7ce117f01bc2217bf93522490a6124f2d86..da9df86d1f41e59293af54d9fb525069204ae0ca 100644 (file)
@@ -1,11 +1,39 @@
 { config, lib, pkgs, ... }:
+with lib;
 let
+  cfg = config.services.syncthing.autoRegister;
   localpkgs = import ../. { inherit pkgs; };
   register-script = pkgs.writeShellScript "syncthing-autoregister-script" ''
-    ${localpkgs.syncthing-set-id}/bin/syncthing-set-id /tmp/syncthing-auto-register-test-device-ids.nix
+    ${localpkgs.syncthing-set-id}/bin/syncthing-set-id ${
+      escapeShellArg cfg.path
+    }
   '';
 in {
-  config = {
+  options = {
+    services.syncthing.autoRegister = {
+      enable = mkEnableOption ''
+        Automatically write the local syncthing device id to the nix module
+        file <option>services.syncthing.autoRegister.path</option>.
+      '';
+      path = mkOption {
+        type = types.path;
+        description = ''
+          Path of nix module file to write our syncthing
+          device id into.  It will be written into
+          services.syncthing.declarative.devices.<hostname>.id.  This file
+          can be imported as a NixOS module.
+
+          We recommend using a separate file just for this purpose.  I.e.,
+          don't point this at your main NixOS config.  Instead, import this
+          file from your main NixOS config.  (The current nix-configuration
+          read-modify-write implementation only supports attrsets of strings;
+          it does not support functions, which you probably use in your
+          main configuration.)
+        '';
+      };
+    };
+  };
+  config = mkIf cfg.enable {
     systemd.services.syncthing-autoregister = {
       after = [ "syncthing.service" "syncthing-init.service" ];
       wantedBy = [ "multi-user.target" ];