9 Commits

Author SHA1 Message Date
Jason Bowman
39411a8e12 syncthing: use localhost authority for unix-socket REST calls
When services.syncthing.guiAddress is a unix socket, curlAddressArgs built
`--unix-socket <sock> http://.<path>`. curl >= 8.21 tightened URL parsing and
rejects the bare-dot authority with "URL rejected: Bad hostname" (exit 3), so
every REST call in the merge script fails. Combined with `--retry 1000
--retry-delay 1 --retry-all-errors`, syncthing-init.service retries until
systemd terminates it at the start timeout and Home Manager activation fails.

Use `localhost` as the placeholder authority; --unix-socket still routes the
request to the socket, and localhost is accepted by all curl versions. Add a
regression test asserting the unix-socket path uses http://localhost.
2026-07-18 22:41:57 +02:00
Sighery
a7209b6794 syncthing: fix badly escaped ignore patterns test
The previous test would pass no matter what the `ignoreString` was. I
don't know enough Bash/Grep to explain it, but it was easy to test by
just changing the pattern to have `WRONG` instead of `val1`, and that
would still pass the `assertFileContains` test.

I've hopefully fixed it now, by using `lib.escapeShellArg` before
passing it to `assertFileContains`, and I've also added a negative test
case, to ensure that a bad ignore string is _not_ found in the merge
script.
2026-07-04 22:02:21 -05:00
Sighery
b885baad53 syncthing: add option for ignore patterns
Taken from this nixpkgs commit by @zorrobert:
7a223b2685

Syncthing shared folders can be configured to ignore paths. These
changes add support for this functionality.

Co-authored-by: zorrobert <118135271+zorrobert@users.noreply.github.com>
2026-07-03 22:08:35 -05:00
Austin Horstman
f968ed5961 syncthing: support legacy config dir
Syncthing still supports existing Linux installations that keep config.xml under XDG_CONFIG_HOME/syncthing. Resolve the runtime directory from the generated scripts so Home Manager waits on and copies keys into the existing legacy directory when no state-dir config exists.

Fixes #6933
2026-05-19 00:17:05 +02:00
Austin Horstman
4883af6edb syncthing: avoid init for default gui address
The gui address option always has a default value, so #8644 ended up
making syncthing-init run for every enabled Syncthing setup.

Treat the default gui address as unset for updater purposes so the init
unit is only generated when Home Manager is actually managing Syncthing
configuration. Add regression tests for the default and explicit
guiAddress cases.
2026-04-26 19:44:29 -05:00
Robert Helgesson
2324540520 syncthing: assert tray service content in test 2025-09-25 09:42:44 +02:00
Robert Helgesson
ade850153b syncthing: remove deprecated code
Specifically, in 2021 the use of `services.syncthing.tray` as a
Boolean was deprecated. This removes the associated code.
2025-09-25 08:49:23 +02:00
Robert Helgesson
7a3f0b3b8d tests: rework derivation stubbing
Instead of having to manually stub packages that should not be
downloaded we instead automatically stub all packages (except a small
list of whitelisted ones). Tests can re-introduce the real package by
using the `realPkgs` module argument.
2025-02-04 23:58:20 +01:00
midchildan
885a504f80 syncthing: add Darwin support 2023-03-25 13:09:55 +01:00