diff --git a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
index 78606c6a9091..0b01c4e08847 100644
--- a/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
+++ b/nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
@@ -467,6 +467,15 @@
its reliance on python2.
+
+
+ services.ipfs.extraFlags is now escaped
+ with utils.escapeSystemdExecArgs. If you
+ rely on systemd interpolating extraFlags in
+ the service ExecStart, this will no longer
+ work.
+
+
The matrix-synapse service
diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md
index acb817d31a86..5b93b644eea9 100644
--- a/nixos/doc/manual/release-notes/rl-2205.section.md
+++ b/nixos/doc/manual/release-notes/rl-2205.section.md
@@ -157,6 +157,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- The `mailpile` email webclient (`services.mailpile`) has been removed due to its reliance on python2.
+- `services.ipfs.extraFlags` is now escaped with `utils.escapeSystemdExecArgs`. If you rely on systemd interpolating `extraFlags` in the service `ExecStart`, this will no longer work.
+
- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you
diff --git a/nixos/modules/services/network-filesystems/ipfs.nix b/nixos/modules/services/network-filesystems/ipfs.nix
index 655785b99d87..7e96179b3cab 100644
--- a/nixos/modules/services/network-filesystems/ipfs.nix
+++ b/nixos/modules/services/network-filesystems/ipfs.nix
@@ -1,16 +1,17 @@
-{ config, lib, pkgs, options, ... }:
+{ config, lib, pkgs, options, utils, ... }:
with lib;
let
cfg = config.services.ipfs;
opt = options.services.ipfs;
- ipfsFlags = toString ([
- (optionalString cfg.autoMount "--mount")
- (optionalString cfg.enableGC "--enable-gc")
- (optionalString (cfg.serviceFdlimit != null) "--manage-fdlimit=false")
- (optionalString (cfg.defaultMode == "offline") "--offline")
- (optionalString (cfg.defaultMode == "norouting") "--routing=none")
- ] ++ cfg.extraFlags);
+ ipfsFlags = utils.escapeSystemdExecArgs (
+ optional cfg.autoMount "--mount" ++
+ optional cfg.enableGC "--enable-gc" ++
+ optional (cfg.serviceFdlimit != null) "--manage-fdlimit=false" ++
+ optional (cfg.defaultMode == "offline") "--offline" ++
+ optional (cfg.defaultMode == "norouting") "--routing=none" ++
+ cfg.extraFlags
+ );
profile =
if cfg.localDiscovery