about summary refs log tree commit diff
path: root/nixos/modules/services/backup
diff options
context:
space:
mode:
authorstuebinm <stuebinm@disroot.org>2024-04-13 14:54:15 +0200
committerJonathan Ringer <jonringer@users.noreply.github.com>2024-04-13 10:07:35 -0700
commit6afb255d976f85f3359e4929abd6f5149c323a02 (patch)
treeced23a118ee0852174d31005acd16f04cad3a781 /nixos/modules/services/backup
parent1dd996e59a5e67694b7a252aacba71a88d51b41e (diff)
nixos: remove all uses of lib.mdDoc
these changes were generated with nixq 0.0.2, by running

  nixq ">> lib.mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> mdDoc[remove] Argument[keep]" --batchmode nixos/**.nix
  nixq ">> Inherit >> mdDoc[remove]" --batchmode nixos/**.nix

two mentions of the mdDoc function remain in nixos/, both of which
are inside of comments.

Since lib.mdDoc is already defined as just id, this commit is a no-op as
far as Nix (and the built manual) is concerned.
Diffstat (limited to 'nixos/modules/services/backup')
-rw-r--r--nixos/modules/services/backup/automysqlbackup.nix6
-rw-r--r--nixos/modules/services/backup/bacula.nix83
-rw-r--r--nixos/modules/services/backup/borgbackup.nix86
-rw-r--r--nixos/modules/services/backup/borgmatic.nix14
-rw-r--r--nixos/modules/services/backup/btrbk.nix20
-rw-r--r--nixos/modules/services/backup/duplicati.nix10
-rw-r--r--nixos/modules/services/backup/duplicity.nix24
-rw-r--r--nixos/modules/services/backup/mysql-backup.nix12
-rw-r--r--nixos/modules/services/backup/postgresql-backup.nix16
-rw-r--r--nixos/modules/services/backup/postgresql-wal-receiver.nix18
-rw-r--r--nixos/modules/services/backup/restic-rest-server.nix14
-rw-r--r--nixos/modules/services/backup/restic.nix40
-rw-r--r--nixos/modules/services/backup/rsnapshot.nix8
-rw-r--r--nixos/modules/services/backup/sanoid.nix30
-rw-r--r--nixos/modules/services/backup/snapraid.nix22
-rw-r--r--nixos/modules/services/backup/syncoid.nix42
-rw-r--r--nixos/modules/services/backup/tarsnap.nix42
-rw-r--r--nixos/modules/services/backup/tsm.nix10
-rw-r--r--nixos/modules/services/backup/zfs-replication.nix16
-rw-r--r--nixos/modules/services/backup/znapzend.nix78
-rw-r--r--nixos/modules/services/backup/zrepl.nix4
21 files changed, 297 insertions, 298 deletions
diff --git a/nixos/modules/services/backup/automysqlbackup.nix b/nixos/modules/services/backup/automysqlbackup.nix
index 27bbff813b105..cf3b6b8d13a4d 100644
--- a/nixos/modules/services/backup/automysqlbackup.nix
+++ b/nixos/modules/services/backup/automysqlbackup.nix
@@ -34,12 +34,12 @@ in
   options = {
     services.automysqlbackup = {
 
-      enable = mkEnableOption (lib.mdDoc "AutoMySQLBackup");
+      enable = mkEnableOption "AutoMySQLBackup";
 
       calendar = mkOption {
         type = types.str;
         default = "01:15:00";
-        description = lib.mdDoc ''
+        description = ''
           Configured when to run the backup service systemd unit (DayOfWeek Year-Month-Day Hour:Minute:Second).
         '';
       };
@@ -47,7 +47,7 @@ in
       settings = mkOption {
         type = with types; attrsOf (oneOf [ str int bool (listOf str) ]);
         default = {};
-        description = lib.mdDoc ''
+        description = ''
           automysqlbackup configuration. Refer to
           {file}`''${pkgs.automysqlbackup}/etc/automysqlbackup.conf`
           for details on supported values.
diff --git a/nixos/modules/services/backup/bacula.nix b/nixos/modules/services/backup/bacula.nix
index 39975adf59092..94f6e6ba4fd58 100644
--- a/nixos/modules/services/backup/bacula.nix
+++ b/nixos/modules/services/backup/bacula.nix
@@ -10,7 +10,6 @@ let
     concatStringsSep
     literalExpression
     mapAttrsToList
-    mdDoc
     mkIf
     mkOption
     optional
@@ -147,7 +146,7 @@ let
       enable = mkOption {
         type = types.bool;
         default = false;
-        description = mdDoc ''
+        description = ''
           Specifies if TLS should be enabled.
           If this set to `false` TLS will be completely disabled, even if ${tlsLink "tls.require" submodulePath} is true.
         '';
@@ -155,7 +154,7 @@ let
       require = mkOption {
         type = types.nullOr types.bool;
         default = null;
-        description = mdDoc ''
+        description = ''
           Require TLS or TLS-PSK encryption.
           This directive is ignored unless one of ${tlsLink "tls.enable" submodulePath} is true or TLS PSK Enable is set to `yes`.
           If TLS is not required while TLS or TLS-PSK are enabled, then the Bacula component
@@ -168,7 +167,7 @@ let
       certificate = mkOption {
         type = types.nullOr types.path;
         default = null;
-        description = mdDoc ''
+        description = ''
           The full path to the PEM encoded TLS certificate.
           It will be used as either a client or server certificate,
           depending on the connection direction.
@@ -179,7 +178,7 @@ let
       };
       key = mkOption {
         type = types.path;
-        description = mdDoc ''
+        description = ''
           The path of a PEM encoded TLS private key.
           It must correspond to the TLS certificate.
         '';
@@ -187,7 +186,7 @@ let
       verifyPeer = mkOption {
         type = types.nullOr types.bool;
         default = null;
-        description = mdDoc ''
+        description = ''
           Verify peer certificate.
           Instructs server to request and verify the client's X.509 certificate.
           Any client certificate signed by a known-CA will be accepted.
@@ -203,7 +202,7 @@ let
       allowedCN = mkOption {
         type = types.listOf types.str;
         default = [ ];
-        description = mdDoc ''
+        description = ''
           Common name attribute of allowed peer certificates.
           This directive is valid for a server and in a client context.
           If this directive is specified, the peer certificate will be verified against this list.
@@ -214,7 +213,7 @@ let
       caCertificateFile = mkOption {
         type = types.nullOr types.path;
         default = null;
-        description = mdDoc ''
+        description = ''
           The path specifying a PEM encoded TLS CA certificate(s).
           Multiple certificates are permitted in the file.
           One of TLS CA Certificate File or TLS CA Certificate Dir are required in a server context, unless
@@ -230,7 +229,7 @@ let
       password = mkOption {
         type = types.str;
         # TODO: required?
-        description = mdDoc ''
+        description = ''
           Specifies the password that must be supplied for the default Bacula
           Console to be authorized. The same password must appear in the
           Director resource of the Console configuration file. For added
@@ -251,7 +250,7 @@ let
         type = types.enum [ "no" "yes" ];
         default = "no";
         example = "yes";
-        description = mdDoc ''
+        description = ''
           If Monitor is set to `no`, this director will have
           full access to this Storage daemon. If Monitor is set to
           `yes`, this director will only be able to fetch the
@@ -265,7 +264,7 @@ let
 
       tls = mkOption {
         type = types.submodule (tlsOptions "${submodulePath}.director.<name>");
-        description = mdDoc ''
+        description = ''
           TLS Options for the Director in this Configuration.
         '';
       };
@@ -277,7 +276,7 @@ let
     options = {
       changerDevice = mkOption {
         type = types.str;
-        description = mdDoc ''
+        description = ''
           The specified name-string must be the generic SCSI device name of the
           autochanger that corresponds to the normal read/write Archive Device
           specified in the Device resource. This generic SCSI device name
@@ -296,7 +295,7 @@ let
 
       changerCommand = mkOption {
         type = types.str;
-        description = mdDoc ''
+        description = ''
           The name-string specifies an external program to be called that will
           automatically change volumes as required by Bacula. Normally, this
           directive will be specified only in the AutoChanger resource, which
@@ -318,14 +317,14 @@ let
       };
 
       devices = mkOption {
-        description = mdDoc "";
+        description = "";
         type = types.listOf types.str;
       };
 
       extraAutochangerConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Autochanger directive.
         '';
         example = ''
@@ -342,7 +341,7 @@ let
       archiveDevice = mkOption {
         # TODO: required?
         type = types.str;
-        description = mdDoc ''
+        description = ''
           The specified name-string gives the system file name of the storage
           device managed by this storage daemon. This will usually be the
           device file name of a removable storage device (tape drive), for
@@ -359,7 +358,7 @@ let
       mediaType = mkOption {
         # TODO: required?
         type = types.str;
-        description = mdDoc ''
+        description = ''
           The specified name-string names the type of media supported by this
           device, for example, `DLT7000`. Media type names are
           arbitrary in that you set them to anything you want, but they must be
@@ -397,7 +396,7 @@ let
       extraDeviceConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Device directive.
         '';
         example = ''
@@ -418,7 +417,7 @@ in {
       enable = mkOption {
         type = types.bool;
         default = false;
-        description = mdDoc ''
+        description = ''
           Whether to enable the Bacula File Daemon.
         '';
       };
@@ -427,7 +426,7 @@ in {
         default = "${config.networking.hostName}-fd";
         defaultText = literalExpression ''"''${config.networking.hostName}-fd"'';
         type = types.str;
-        description = mdDoc ''
+        description = ''
           The client name that must be used by the Director when connecting.
           Generally, it is a good idea to use a name related to the machine so
           that error messages can be easily identified if you have multiple
@@ -438,7 +437,7 @@ in {
       port = mkOption {
         default = 9102;
         type = types.port;
-        description = mdDoc ''
+        description = ''
           This specifies the port number on which the Client listens for
           Director connections. It must agree with the FDPort specified in
           the Client resource of the Director's configuration file.
@@ -447,7 +446,7 @@ in {
 
       director = mkOption {
         default = {};
-        description = mdDoc ''
+        description = ''
           This option defines director resources in Bacula File Daemon.
         '';
         type = types.attrsOf (types.submodule (directorOptions "services.bacula-fd"));
@@ -457,7 +456,7 @@ in {
       tls = mkOption {
         type = types.submodule (tlsOptions "services.bacula-fd");
         default = { };
-        description = mdDoc ''
+        description = ''
           TLS Options for the File Daemon.
           Important notice: The backup won't be encrypted.
         '';
@@ -466,7 +465,7 @@ in {
       extraClientConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Client directive.
         '';
         example = ''
@@ -478,7 +477,7 @@ in {
       extraMessagesConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Messages directive.
         '';
         example = ''
@@ -491,7 +490,7 @@ in {
       enable = mkOption {
         type = types.bool;
         default = false;
-        description = mdDoc ''
+        description = ''
           Whether to enable Bacula Storage Daemon.
         '';
       };
@@ -500,7 +499,7 @@ in {
         default = "${config.networking.hostName}-sd";
         defaultText = literalExpression ''"''${config.networking.hostName}-sd"'';
         type = types.str;
-        description = mdDoc ''
+        description = ''
           Specifies the Name of the Storage daemon.
         '';
       };
@@ -508,7 +507,7 @@ in {
       port = mkOption {
         default = 9103;
         type = types.port;
-        description = mdDoc ''
+        description = ''
           Specifies port number on which the Storage daemon listens for
           Director connections.
         '';
@@ -516,7 +515,7 @@ in {
 
       director = mkOption {
         default = {};
-        description = mdDoc ''
+        description = ''
           This option defines Director resources in Bacula Storage Daemon.
         '';
         type = types.attrsOf (types.submodule (directorOptions "services.bacula-sd"));
@@ -524,7 +523,7 @@ in {
 
       device = mkOption {
         default = {};
-        description = mdDoc ''
+        description = ''
           This option defines Device resources in Bacula Storage Daemon.
         '';
         type = types.attrsOf (types.submodule deviceOptions);
@@ -532,7 +531,7 @@ in {
 
       autochanger = mkOption {
         default = {};
-        description = mdDoc ''
+        description = ''
           This option defines Autochanger resources in Bacula Storage Daemon.
         '';
         type = types.attrsOf (types.submodule autochangerOptions);
@@ -541,7 +540,7 @@ in {
       extraStorageConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Storage directive.
         '';
         example = ''
@@ -553,7 +552,7 @@ in {
       extraMessagesConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Messages directive.
         '';
         example = ''
@@ -563,7 +562,7 @@ in {
       tls = mkOption {
         type = types.submodule (tlsOptions "services.bacula-sd");
         default = { };
-        description = mdDoc ''
+        description = ''
           TLS Options for the Storage Daemon.
           Important notice: The backup won't be encrypted.
         '';
@@ -575,7 +574,7 @@ in {
       enable = mkOption {
         type = types.bool;
         default = false;
-        description = mdDoc ''
+        description = ''
           Whether to enable Bacula Director Daemon.
         '';
       };
@@ -584,7 +583,7 @@ in {
         default = "${config.networking.hostName}-dir";
         defaultText = literalExpression ''"''${config.networking.hostName}-dir"'';
         type = types.str;
-        description = mdDoc ''
+        description = ''
           The director name used by the system administrator. This directive is
           required.
         '';
@@ -593,7 +592,7 @@ in {
       port = mkOption {
         default = 9101;
         type = types.port;
-        description = mdDoc ''
+        description = ''
           Specify the port (a positive integer) on which the Director daemon
           will listen for Bacula Console connections. This same port number
           must be specified in the Director resource of the Console
@@ -606,7 +605,7 @@ in {
       password = mkOption {
         # TODO: required?
         type = types.str;
-        description = mdDoc ''
+        description = ''
            Specifies the password that must be supplied for a Director.
         '';
       };
@@ -614,7 +613,7 @@ in {
       extraMessagesConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Messages directive.
         '';
         example = ''
@@ -625,7 +624,7 @@ in {
       extraDirectorConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration to be passed in Director directive.
         '';
         example = ''
@@ -637,7 +636,7 @@ in {
       extraConfig = mkOption {
         default = "";
         type = types.lines;
-        description = mdDoc ''
+        description = ''
           Extra configuration for Bacula Director Daemon.
         '';
         example = ''
@@ -648,7 +647,7 @@ in {
       tls = mkOption {
         type = types.submodule (tlsOptions "services.bacula-dir");
         default = { };
-        description = mdDoc ''
+        description = ''
           TLS Options for the Director.
           Important notice: The backup won't be encrypted.
         '';
diff --git a/nixos/modules/services/backup/borgbackup.nix b/nixos/modules/services/backup/borgbackup.nix
index 7d5714499f3a9..570f8931bd9e9 100644
--- a/nixos/modules/services/backup/borgbackup.nix
+++ b/nixos/modules/services/backup/borgbackup.nix
@@ -233,7 +233,7 @@ in {
   options.services.borgbackup.package = mkPackageOption pkgs "borgbackup" { };
 
   options.services.borgbackup.jobs = mkOption {
-    description = lib.mdDoc ''
+    description = ''
       Deduplicating backups using BorgBackup.
       Adding a job will cause a borg-job-NAME wrapper to be added
       to your system path, so that you can perform maintenance easily.
@@ -279,7 +279,7 @@ in {
           paths = mkOption {
             type = with types; nullOr (coercedTo str lib.singleton (listOf str));
             default = null;
-            description = lib.mdDoc ''
+            description = ''
               Path(s) to back up.
               Mutually exclusive with {option}`dumpCommand`.
             '';
@@ -289,7 +289,7 @@ in {
           dumpCommand = mkOption {
             type = with types; nullOr path;
             default = null;
-            description = lib.mdDoc ''
+            description = ''
               Backup the stdout of this program instead of filesystem paths.
               Mutually exclusive with {option}`paths`.
             '';
@@ -298,21 +298,21 @@ in {
 
           repo = mkOption {
             type = types.str;
-            description = lib.mdDoc "Remote or local repository to back up to.";
+            description = "Remote or local repository to back up to.";
             example = "user@machine:/path/to/repo";
           };
 
           removableDevice = mkOption {
             type = types.bool;
             default = false;
-            description = lib.mdDoc "Whether the repo (which must be local) is a removable device.";
+            description = "Whether the repo (which must be local) is a removable device.";
           };
 
           archiveBaseName = mkOption {
             type = types.nullOr (types.strMatching "[^/{}]+");
             default = "${globalConfig.networking.hostName}-${name}";
             defaultText = literalExpression ''"''${config.networking.hostName}-<name>"'';
-            description = lib.mdDoc ''
+            description = ''
               How to name the created archives. A timestamp, whose format is
               determined by {option}`dateFormat`, will be appended. The full
               name can be modified at runtime (`$archiveName`).
@@ -323,7 +323,7 @@ in {
 
           dateFormat = mkOption {
             type = types.str;
-            description = lib.mdDoc ''
+            description = ''
               Arguments passed to {command}`date`
               to create a timestamp suffix for the archive name.
             '';
@@ -334,7 +334,7 @@ in {
           startAt = mkOption {
             type = with types; either str (listOf str);
             default = "daily";
-            description = lib.mdDoc ''
+            description = ''
               When or how often the backup should run.
               Must be in the format described in
               {manpage}`systemd.time(7)`.
@@ -349,7 +349,7 @@ in {
             default = false;
             type = types.bool;
             example = true;
-            description = lib.mdDoc ''
+            description = ''
               Set the `persistentTimer` option for the
               {manpage}`systemd.timer(5)`
               which triggers the backup immediately if the last trigger
@@ -361,14 +361,14 @@ in {
             default = false;
             type = types.bool;
             example = true;
-            description = lib.mdDoc ''
+            description = ''
               Prevents the system from sleeping while backing up.
             '';
           };
 
           user = mkOption {
             type = types.str;
-            description = lib.mdDoc ''
+            description = ''
               The user {command}`borg` is run as.
               User or group need read permission
               for the specified {option}`paths`.
@@ -378,7 +378,7 @@ in {
 
           group = mkOption {
             type = types.str;
-            description = lib.mdDoc ''
+            description = ''
               The group borg is run as. User or group needs read permission
               for the specified {option}`paths`.
             '';
@@ -392,7 +392,7 @@ in {
               "authenticated" "authenticated-blake2"
               "none"
             ];
-            description = lib.mdDoc ''
+            description = ''
               Encryption mode to use. Setting a mode
               other than `"none"` requires
               you to specify a {option}`passCommand`
@@ -403,7 +403,7 @@ in {
 
           encryption.passCommand = mkOption {
             type = with types; nullOr str;
-            description = lib.mdDoc ''
+            description = ''
               A command which prints the passphrase to stdout.
               Mutually exclusive with {option}`passphrase`.
             '';
@@ -413,7 +413,7 @@ in {
 
           encryption.passphrase = mkOption {
             type = with types; nullOr str;
-            description = lib.mdDoc ''
+            description = ''
               The passphrase the backups are encrypted with.
               Mutually exclusive with {option}`passCommand`.
               If you do not want the passphrase to be stored in the
@@ -427,7 +427,7 @@ in {
             # compression mode must be given,
             # compression level is optional
             type = types.strMatching "none|(auto,)?(lz4|zstd|zlib|lzma)(,[[:digit:]]{1,2})?";
-            description = lib.mdDoc ''
+            description = ''
               Compression method to use. Refer to
               {command}`borg help compression`
               for all available options.
@@ -438,7 +438,7 @@ in {
 
           exclude = mkOption {
             type = with types; listOf str;
-            description = lib.mdDoc ''
+            description = ''
               Exclude paths matching any of the given patterns. See
               {command}`borg help patterns` for pattern syntax.
             '';
@@ -451,7 +451,7 @@ in {
 
           patterns = mkOption {
             type = with types; listOf str;
-            description = lib.mdDoc ''
+            description = ''
               Include/exclude paths matching the given patterns. The first
               matching patterns is used, so if an include pattern (prefix `+`)
               matches before an exclude pattern (prefix `-`), the file is
@@ -466,7 +466,7 @@ in {
 
           readWritePaths = mkOption {
             type = with types; listOf path;
-            description = lib.mdDoc ''
+            description = ''
               By default, borg cannot write anywhere on the system but
               `$HOME/.config/borg` and `$HOME/.cache/borg`.
               If, for example, your preHook script needs to dump files
@@ -480,7 +480,7 @@ in {
 
           privateTmp = mkOption {
             type = types.bool;
-            description = lib.mdDoc ''
+            description = ''
               Set the `PrivateTmp` option for
               the systemd-service. Set to false if you need sockets
               or other files from global /tmp.
@@ -490,7 +490,7 @@ in {
 
           doInit = mkOption {
             type = types.bool;
-            description = lib.mdDoc ''
+            description = ''
               Run {command}`borg init` if the
               specified {option}`repo` does not exist.
               You should set this to `false`
@@ -502,7 +502,7 @@ in {
 
           appendFailedSuffix = mkOption {
             type = types.bool;
-            description = lib.mdDoc ''
+            description = ''
               Append a `.failed` suffix
               to the archive name, which is only removed if
               {command}`borg create` has a zero exit status.
@@ -515,7 +515,7 @@ in {
             # means there is no limit of yearly archives to keep
             # The regex is for use with e.g. --keep-within 1y
             type = with types; attrsOf (either int (strMatching "[[:digit:]]+[Hdwmy]"));
-            description = lib.mdDoc ''
+            description = ''
               Prune a repository by deleting all archives not matching any of the
               specified retention options. See {command}`borg help prune`
               for the available options.
@@ -533,7 +533,7 @@ in {
 
           prune.prefix = mkOption {
             type = types.nullOr (types.str);
-            description = lib.mdDoc ''
+            description = ''
               Only consider archive names starting with this prefix for pruning.
               By default, only archives created by this job are considered.
               Use `""` or `null` to consider all archives.
@@ -544,7 +544,7 @@ in {
 
           environment = mkOption {
             type = with types; attrsOf str;
-            description = lib.mdDoc ''
+            description = ''
               Environment variables passed to the backup script.
               You can for example specify which SSH key to use.
             '';
@@ -554,7 +554,7 @@ in {
 
           preHook = mkOption {
             type = types.lines;
-            description = lib.mdDoc ''
+            description = ''
               Shell commands to run before the backup.
               This can for example be used to mount file systems.
             '';
@@ -567,7 +567,7 @@ in {
 
           postInit = mkOption {
             type = types.lines;
-            description = lib.mdDoc ''
+            description = ''
               Shell commands to run after {command}`borg init`.
             '';
             default = "";
@@ -575,7 +575,7 @@ in {
 
           postCreate = mkOption {
             type = types.lines;
-            description = lib.mdDoc ''
+            description = ''
               Shell commands to run after {command}`borg create`. The name
               of the created archive is stored in `$archiveName`.
             '';
@@ -584,7 +584,7 @@ in {
 
           postPrune = mkOption {
             type = types.lines;
-            description = lib.mdDoc ''
+            description = ''
               Shell commands to run after {command}`borg prune`.
             '';
             default = "";
@@ -592,7 +592,7 @@ in {
 
           postHook = mkOption {
             type = types.lines;
-            description = lib.mdDoc ''
+            description = ''
               Shell commands to run just before exit. They are executed
               even if a previous command exits with a non-zero exit code.
               The latter is available as `$exitStatus`.
@@ -602,7 +602,7 @@ in {
 
           extraArgs = mkOption {
             type = with types; coercedTo (listOf str) escapeShellArgs str;
-            description = lib.mdDoc ''
+            description = ''
               Additional arguments for all {command}`borg` calls the
               service has. Handle with care.
             '';
@@ -612,7 +612,7 @@ in {
 
           extraInitArgs = mkOption {
             type = with types; coercedTo (listOf str) escapeShellArgs str;
-            description = lib.mdDoc ''
+            description = ''
               Additional arguments for {command}`borg init`.
               Can also be set at runtime using `$extraInitArgs`.
             '';
@@ -622,7 +622,7 @@ in {
 
           extraCreateArgs = mkOption {
             type = with types; coercedTo (listOf str) escapeShellArgs str;
-            description = lib.mdDoc ''
+            description = ''
               Additional arguments for {command}`borg create`.
               Can also be set at runtime using `$extraCreateArgs`.
             '';
@@ -635,7 +635,7 @@ in {
 
           extraPruneArgs = mkOption {
             type = with types; coercedTo (listOf str) escapeShellArgs str;
-            description = lib.mdDoc ''
+            description = ''
               Additional arguments for {command}`borg prune`.
               Can also be set at runtime using `$extraPruneArgs`.
             '';
@@ -645,7 +645,7 @@ in {
 
           extraCompactArgs = mkOption {
             type = with types; coercedTo (listOf str) escapeShellArgs str;
-            description = lib.mdDoc ''
+            description = ''
               Additional arguments for {command}`borg compact`.
               Can also be set at runtime using `$extraCompactArgs`.
             '';
@@ -658,7 +658,7 @@ in {
   };
 
   options.services.borgbackup.repos = mkOption {
-    description = lib.mdDoc ''
+    description = ''
       Serve BorgBackup repositories to given public SSH keys,
       restricting their access to the repository only.
       See also the chapter about BorgBackup in the NixOS manual.
@@ -671,7 +671,7 @@ in {
         options = {
           path = mkOption {
             type = types.path;
-            description = lib.mdDoc ''
+            description = ''
               Where to store the backups. Note that the directory
               is created automatically, with correct permissions.
             '';
@@ -680,7 +680,7 @@ in {
 
           user = mkOption {
             type = types.str;
-            description = lib.mdDoc ''
+            description = ''
               The user {command}`borg serve` is run as.
               User or group needs write permission
               for the specified {option}`path`.
@@ -690,7 +690,7 @@ in {
 
           group = mkOption {
             type = types.str;
-            description = lib.mdDoc ''
+            description = ''
               The group {command}`borg serve` is run as.
               User or group needs write permission
               for the specified {option}`path`.
@@ -700,7 +700,7 @@ in {
 
           authorizedKeys = mkOption {
             type = with types; listOf str;
-            description = lib.mdDoc ''
+            description = ''
               Public SSH keys that are given full write access to this repository.
               You should use a different SSH key for each repository you write to, because
               the specified keys are restricted to running {command}`borg serve`
@@ -711,7 +711,7 @@ in {
 
           authorizedKeysAppendOnly = mkOption {
             type = with types; listOf str;
-            description = lib.mdDoc ''
+            description = ''
               Public SSH keys that can only be used to append new data (archives) to the repository.
               Note that archives can still be marked as deleted and are subsequently removed from disk
               upon accessing the repo with full write access, e.g. when pruning.
@@ -721,7 +721,7 @@ in {
 
           allowSubRepos = mkOption {
             type = types.bool;
-            description = lib.mdDoc ''
+            description = ''
               Allow clients to create repositories in subdirectories of the
               specified {option}`path`. These can be accessed using
               `user@machine:path/to/subrepo`. Note that a
@@ -735,7 +735,7 @@ in {
           quota = mkOption {
             # See the definition of parse_file_size() in src/borg/helpers/parseformat.py
             type = with types; nullOr (strMatching "[[:digit:].]+[KMGTP]?");
-            description = lib.mdDoc ''
+            description = ''
               Storage quota for the repository. This quota is ensured for all
               sub-repositories if {option}`allowSubRepos` is enabled
               but not for the overall storage space used.
diff --git a/nixos/modules/services/backup/borgmatic.nix b/nixos/modules/services/backup/borgmatic.nix
index b27dd2817120b..5da78828bfa83 100644
--- a/nixos/modules/services/backup/borgmatic.nix
+++ b/nixos/modules/services/backup/borgmatic.nix
@@ -10,13 +10,13 @@ let
     options = {
       path = mkOption {
         type = str;
-        description = mdDoc ''
+        description = ''
           Path to the repository
         '';
       };
       label = mkOption {
         type = str;
-        description = mdDoc ''
+        description = ''
           Label to the repository
         '';
       };
@@ -28,7 +28,7 @@ let
       source_directories = mkOption {
         type = nullOr (listOf str);
         default = null;
-        description = mdDoc ''
+        description = ''
           List of source directories and files to backup. Globs and tildes are
           expanded. Do not backslash spaces in path names.
         '';
@@ -37,7 +37,7 @@ let
       repositories = mkOption {
         type = nullOr (listOf repository);
         default = null;
-        description = mdDoc ''
+        description = ''
           A required list of local or remote repositories with paths and
           optional labels (which can be used with the --repository flag to
           select a repository). Tildes are expanded. Multiple repositories are
@@ -59,10 +59,10 @@ let
 in
 {
   options.services.borgmatic = {
-    enable = mkEnableOption (mdDoc "borgmatic");
+    enable = mkEnableOption "borgmatic";
 
     settings = mkOption {
-      description = mdDoc ''
+      description = ''
         See https://torsion.org/borgmatic/docs/reference/configuration/
       '';
       default = null;
@@ -70,7 +70,7 @@ in
     };
 
     configurations = mkOption {
-      description = mdDoc ''
+      description = ''
         Set of borgmatic configurations, see https://torsion.org/borgmatic/docs/reference/configuration/
       '';
       default = { };
diff --git a/nixos/modules/services/backup/btrbk.nix b/nixos/modules/services/backup/btrbk.nix
index 364b77b6a21c1..06ca4236eaf22 100644
--- a/nixos/modules/services/backup/btrbk.nix
+++ b/nixos/modules/services/backup/btrbk.nix
@@ -109,7 +109,7 @@ in
   options = {
     services.btrbk = {
       extraPackages = mkOption {
-        description = lib.mdDoc ''
+        description = ''
           Extra packages for btrbk, like compression utilities for `stream_compress`.
 
           **Note**: This option will get deprecated in future releases.
@@ -122,17 +122,17 @@ in
         example = literalExpression "[ pkgs.xz ]";
       };
       niceness = mkOption {
-        description = lib.mdDoc "Niceness for local instances of btrbk. Also applies to remote ones connecting via ssh when positive.";
+        description = "Niceness for local instances of btrbk. Also applies to remote ones connecting via ssh when positive.";
         type = types.ints.between (-20) 19;
         default = 10;
       };
       ioSchedulingClass = mkOption {
-        description = lib.mdDoc "IO scheduling class for btrbk (see ionice(1) for a quick description). Applies to local instances, and remote ones connecting by ssh if set to idle.";
+        description = "IO scheduling class for btrbk (see ionice(1) for a quick description). Applies to local instances, and remote ones connecting by ssh if set to idle.";
         type = types.enum [ "idle" "best-effort" "realtime" ];
         default = "best-effort";
       };
       instances = mkOption {
-        description = lib.mdDoc "Set of btrbk instances. The instance named `btrbk` is the default one.";
+        description = "Set of btrbk instances. The instance named `btrbk` is the default one.";
         type = with types;
           attrsOf (
             submodule {
@@ -140,7 +140,7 @@ in
                 onCalendar = mkOption {
                   type = types.nullOr types.str;
                   default = "daily";
-                  description = lib.mdDoc ''
+                  description = ''
                     How often this btrbk instance is started. See systemd.time(7) for more information about the format.
                     Setting it to null disables the timer, thus this instance can only be started manually.
                   '';
@@ -150,7 +150,7 @@ in
                     freeformType = let t = types.attrsOf (types.either types.str (t // { description = "instances of this type recursively"; })); in t;
                     options = {
                       stream_compress = mkOption {
-                        description = lib.mdDoc ''
+                        description = ''
                           Compress the btrfs send stream before transferring it from/to remote locations using a
                           compression command.
                         '';
@@ -173,7 +173,7 @@ in
                       };
                     };
                   };
-                  description = lib.mdDoc "configuration options for btrbk. Nested attrsets translate to subsections.";
+                  description = "configuration options for btrbk. Nested attrsets translate to subsections.";
                 };
               };
             }
@@ -181,18 +181,18 @@ in
         default = { };
       };
       sshAccess = mkOption {
-        description = lib.mdDoc "SSH keys that should be able to make or push snapshots on this system remotely with btrbk";
+        description = "SSH keys that should be able to make or push snapshots on this system remotely with btrbk";
         type = with types; listOf (
           submodule {
             options = {
               key = mkOption {
                 type = str;
-                description = lib.mdDoc "SSH public key allowed to login as user `btrbk` to run remote backups.";
+                description = "SSH public key allowed to login as user `btrbk` to run remote backups.";
               };
               roles = mkOption {
                 type = listOf (enum [ "info" "source" "target" "delete" "snapshot" "send" "receive" ]);
                 example = [ "source" "info" "send" ];
-                description = lib.mdDoc "What actions can be performed with this SSH key. See ssh_filter_btrbk(1) for details";
+                description = "What actions can be performed with this SSH key. See ssh_filter_btrbk(1) for details";
               };
             };
           }
diff --git a/nixos/modules/services/backup/duplicati.nix b/nixos/modules/services/backup/duplicati.nix
index bd433b777ec49..2b9e171d7d80a 100644
--- a/nixos/modules/services/backup/duplicati.nix
+++ b/nixos/modules/services/backup/duplicati.nix
@@ -8,14 +8,14 @@ in
 {
   options = {
     services.duplicati = {
-      enable = mkEnableOption (lib.mdDoc "Duplicati");
+      enable = mkEnableOption "Duplicati";
 
       package = mkPackageOption pkgs "duplicati" { };
 
       port = mkOption {
         default = 8200;
         type = types.port;
-        description = lib.mdDoc ''
+        description = ''
           Port serving the web interface
         '';
       };
@@ -23,7 +23,7 @@ in
       dataDir = mkOption {
         type = types.str;
         default = "/var/lib/duplicati";
-        description = lib.mdDoc ''
+        description = ''
           The directory where Duplicati stores its data files.
 
           ::: {.note}
@@ -37,7 +37,7 @@ in
       interface = mkOption {
         default = "127.0.0.1";
         type = types.str;
-        description = lib.mdDoc ''
+        description = ''
           Listening interface for the web UI
           Set it to "any" to listen on all available interfaces
         '';
@@ -46,7 +46,7 @@ in
       user = mkOption {
         default = "duplicati";
         type = types.str;
-        description = lib.mdDoc ''
+        description = ''
           Duplicati runs as it's own user. It will only be able to backup world-readable files.
           Run as root with special care.
         '';
diff --git a/nixos/modules/services/backup/duplicity.nix b/nixos/modules/services/backup/duplicity.nix
index 05ec997ab66b0..033d0cffd8d6e 100644
--- a/nixos/modules/services/backup/duplicity.nix
+++ b/nixos/modules/services/backup/duplicity.nix
@@ -13,12 +13,12 @@ let
 in
 {
   options.services.duplicity = {
-    enable = mkEnableOption (lib.mdDoc "backups with duplicity");
+    enable = mkEnableOption "backups with duplicity";
 
     root = mkOption {
       type = types.path;
       default = "/";
-      description = lib.mdDoc ''
+      description = ''
         Root directory to backup.
       '';
     };
@@ -27,7 +27,7 @@ in
       type = types.listOf types.str;
       default = [ ];
       example = [ "/home" ];
-      description = lib.mdDoc ''
+      description = ''
         List of paths to include into the backups. See the FILE SELECTION
         section in {manpage}`duplicity(1)` for details on the syntax.
       '';
@@ -36,7 +36,7 @@ in
     exclude = mkOption {
       type = types.listOf types.str;
       default = [ ];
-      description = lib.mdDoc ''
+      description = ''
         List of paths to exclude from backups. See the FILE SELECTION section in
         {manpage}`duplicity(1)` for details on the syntax.
       '';
@@ -45,7 +45,7 @@ in
     targetUrl = mkOption {
       type = types.str;
       example = "s3://host:port/prefix";
-      description = lib.mdDoc ''
+      description = ''
         Target url to backup to. See the URL FORMAT section in
         {manpage}`duplicity(1)` for supported urls.
       '';
@@ -54,7 +54,7 @@ in
     secretFile = mkOption {
       type = types.nullOr types.path;
       default = null;
-      description = lib.mdDoc ''
+      description = ''
         Path of a file containing secrets (gpg passphrase, access key...) in
         the format of EnvironmentFile as described by
         {manpage}`systemd.exec(5)`. For example:
@@ -69,7 +69,7 @@ in
     frequency = mkOption {
       type = types.nullOr types.str;
       default = "daily";
-      description = lib.mdDoc ''
+      description = ''
         Run duplicity with the given frequency (see
         {manpage}`systemd.time(7)` for the format).
         If null, do not run automatically.
@@ -80,7 +80,7 @@ in
       type = types.listOf types.str;
       default = [ ];
       example = [ "--backend-retry-delay" "100" ];
-      description = lib.mdDoc ''
+      description = ''
         Extra command-line flags passed to duplicity. See
         {manpage}`duplicity(1)`.
       '';
@@ -90,7 +90,7 @@ in
       type = types.str;
       default = "never";
       example = "1M";
-      description = lib.mdDoc ''
+      description = ''
         If `"never"` (the default) always do incremental
         backups (the first backup will be a full backup, of course).  If
         `"always"` always do full backups.  Otherwise, this
@@ -105,7 +105,7 @@ in
         type = types.nullOr types.str;
         default = null;
         example = "6M";
-        description = lib.mdDoc ''
+        description = ''
           If non-null, delete all backup sets older than the given time.  Old backup sets
           will not be deleted if backup sets newer than time depend on them.
         '';
@@ -114,7 +114,7 @@ in
         type = types.nullOr types.int;
         default = null;
         example = 2;
-        description = lib.mdDoc ''
+        description = ''
           If non-null, delete all backups sets that are older than the count:th last full
           backup (in other words, keep the last count full backups and
           associated incremental sets).
@@ -124,7 +124,7 @@ in
         type = types.nullOr types.int;
         default = null;
         example = 1;
-        description = lib.mdDoc ''
+        description = ''
           If non-null, delete incremental sets of all backups sets that are
           older than the count:th last full backup (in other words, keep only
           old full backups and not their increments).
diff --git a/nixos/modules/services/backup/mysql-backup.nix b/nixos/modules/services/backup/mysql-backup.nix
index 9fbc599cd41af..00381be4b75d3 100644
--- a/nixos/modules/services/backup/mysql-backup.nix
+++ b/nixos/modules/services/backup/mysql-backup.nix
@@ -37,12 +37,12 @@ in
 
     services.mysqlBackup = {
 
-      enable = mkEnableOption (lib.mdDoc "MySQL backups");
+      enable = mkEnableOption "MySQL backups";
 
       calendar = mkOption {
         type = types.str;
         default = "01:15:00";
-        description = lib.mdDoc ''
+        description = ''
           Configured when to run the backup service systemd unit (DayOfWeek Year-Month-Day Hour:Minute:Second).
         '';
       };
@@ -50,7 +50,7 @@ in
       user = mkOption {
         type = types.str;
         default = defaultUser;
-        description = lib.mdDoc ''
+        description = ''
           User to be used to perform backup.
         '';
       };
@@ -58,7 +58,7 @@ in
       databases = mkOption {
         default = [];
         type = types.listOf types.str;
-        description = lib.mdDoc ''
+        description = ''
           List of database names to dump.
         '';
       };
@@ -66,7 +66,7 @@ in
       location = mkOption {
         type = types.path;
         default = "/var/backup/mysql";
-        description = lib.mdDoc ''
+        description = ''
           Location to put the gzipped MySQL database dumps.
         '';
       };
@@ -74,7 +74,7 @@ in
       singleTransaction = mkOption {
         default = false;
         type = types.bool;
-        description = lib.mdDoc ''
+        description = ''
           Whether to create database dump in a single transaction
         '';
       };
diff --git a/nixos/modules/services/backup/postgresql-backup.nix b/nixos/modules/services/backup/postgresql-backup.nix
index 82067d8ade34d..5dd9e075862da 100644
--- a/nixos/modules/services/backup/postgresql-backup.nix
+++ b/nixos/modules/services/backup/postgresql-backup.nix
@@ -71,12 +71,12 @@ in {
 
   options = {
     services.postgresqlBackup = {
-      enable = mkEnableOption (lib.mdDoc "PostgreSQL dumps");
+      enable = mkEnableOption "PostgreSQL dumps";
 
       startAt = mkOption {
         default = "*-*-* 01:15:00";
         type = with types; either (listOf str) str;
-        description = lib.mdDoc ''
+        description = ''
           This option defines (see `systemd.time` for format) when the
           databases should be dumped.
           The default is to update at 01:15 (at night) every day.
@@ -87,7 +87,7 @@ in {
         default = cfg.databases == [];
         defaultText = literalExpression "services.postgresqlBackup.databases == []";
         type = lib.types.bool;
-        description = lib.mdDoc ''
+        description = ''
           Backup all databases using pg_dumpall.
           This option is mutual exclusive to
           `services.postgresqlBackup.databases`.
@@ -99,7 +99,7 @@ in {
       databases = mkOption {
         default = [];
         type = types.listOf types.str;
-        description = lib.mdDoc ''
+        description = ''
           List of database names to dump.
         '';
       };
@@ -107,7 +107,7 @@ in {
       location = mkOption {
         default = "/var/backup/postgresql";
         type = types.path;
-        description = lib.mdDoc ''
+        description = ''
           Path of directory where the PostgreSQL database dumps will be placed.
         '';
       };
@@ -115,7 +115,7 @@ in {
       pgdumpOptions = mkOption {
         type = types.separatedString " ";
         default = "-C";
-        description = lib.mdDoc ''
+        description = ''
           Command line options for pg_dump. This options is not used
           if `config.services.postgresqlBackup.backupAll` is enabled.
           Note that config.services.postgresqlBackup.backupAll is also active,
@@ -126,7 +126,7 @@ in {
       compression = mkOption {
         type = types.enum ["none" "gzip" "zstd"];
         default = "gzip";
-        description = lib.mdDoc ''
+        description = ''
           The type of compression to use on the generated database dump.
         '';
       };
@@ -134,7 +134,7 @@ in {
       compressionLevel = mkOption {
         type = types.ints.between 1 19;
         default = 6;
-        description = lib.mdDoc ''
+        description = ''
           The compression level used when compression is enabled.
           gzip accepts levels 1 to 9. zstd accepts levels 1 to 19.
         '';
diff --git a/nixos/modules/services/backup/postgresql-wal-receiver.nix b/nixos/modules/services/backup/postgresql-wal-receiver.nix
index 332a32d37052e..a8f2cf514d549 100644
--- a/nixos/modules/services/backup/postgresql-wal-receiver.nix
+++ b/nixos/modules/services/backup/postgresql-wal-receiver.nix
@@ -12,7 +12,7 @@ let
       directory = mkOption {
         type = types.path;
         example = literalExpression "/mnt/pg_wal/main/";
-        description = lib.mdDoc ''
+        description = ''
           Directory to write the output to.
         '';
       };
@@ -20,7 +20,7 @@ let
       statusInterval = mkOption {
         type = types.int;
         default = 10;
-        description = lib.mdDoc ''
+        description = ''
           Specifies the number of seconds between status packets sent back to the server.
           This allows for easier monitoring of the progress from server.
           A value of zero disables the periodic status updates completely,
@@ -32,7 +32,7 @@ let
         type = types.str;
         default = "";
         example = "some_slot_name";
-        description = lib.mdDoc ''
+        description = ''
           Require {command}`pg_receivewal` to use an existing replication slot (see
           [Section 26.2.6 of the PostgreSQL manual](https://www.postgresql.org/docs/current/warm-standby.html#STREAMING-REPLICATION-SLOTS)).
           When this option is used, {command}`pg_receivewal` will report a flush position to the server,
@@ -48,7 +48,7 @@ let
       synchronous = mkOption {
         type = types.bool;
         default = false;
-        description = lib.mdDoc ''
+        description = ''
           Flush the WAL data to disk immediately after it has been received.
           Also send a status packet back to the server immediately after flushing, regardless of {option}`statusInterval`.
 
@@ -60,7 +60,7 @@ let
       compress = mkOption {
         type = types.ints.between 0 9;
         default = 0;
-        description = lib.mdDoc ''
+        description = ''
           Enables gzip compression of write-ahead logs, and specifies the compression level
           (`0` through `9`, `0` being no compression and `9` being best compression).
           The suffix `.gz` will automatically be added to all filenames.
@@ -72,7 +72,7 @@ let
       connection = mkOption {
         type = types.str;
         example = "postgresql://user@somehost";
-        description = lib.mdDoc ''
+        description = ''
           Specifies parameters used to connect to the server, as a connection string.
           See [Section 34.1.1 of the PostgreSQL manual](https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING) for more information.
 
@@ -89,7 +89,7 @@ let
             "--no-sync"
           ]
         '';
-        description = lib.mdDoc ''
+        description = ''
           A list of extra arguments to pass to the {command}`pg_receivewal` command.
         '';
       };
@@ -103,7 +103,7 @@ let
             PGSSLMODE = "require";
           }
         '';
-        description = lib.mdDoc ''
+        description = ''
           Environment variables passed to the service.
           Usable parameters are listed in [Section 34.14 of the PostgreSQL manual](https://www.postgresql.org/docs/current/libpq-envars.html).
         '';
@@ -127,7 +127,7 @@ in {
             };
           }
         '';
-        description = lib.mdDoc ''
+        description = ''
           PostgreSQL WAL receivers.
           Stream write-ahead logs from a PostgreSQL server using {command}`pg_receivewal` (formerly {command}`pg_receivexlog`).
           See [the man page](https://www.postgresql.org/docs/current/app-pgreceivewal.html) for more information.
diff --git a/nixos/modules/services/backup/restic-rest-server.nix b/nixos/modules/services/backup/restic-rest-server.nix
index c9d5a37116a13..935907643bd2f 100644
--- a/nixos/modules/services/backup/restic-rest-server.nix
+++ b/nixos/modules/services/backup/restic-rest-server.nix
@@ -9,25 +9,25 @@ in
   meta.maintainers = [ maintainers.bachp ];
 
   options.services.restic.server = {
-    enable = mkEnableOption (lib.mdDoc "Restic REST Server");
+    enable = mkEnableOption "Restic REST Server";
 
     listenAddress = mkOption {
       default = "8000";
       example = "127.0.0.1:8080";
       type = types.str;
-      description = lib.mdDoc "Listen on a specific IP address and port.";
+      description = "Listen on a specific IP address and port.";
     };
 
     dataDir = mkOption {
       default = "/var/lib/restic";
       type = types.path;
-      description = lib.mdDoc "The directory for storing the restic repository.";
+      description = "The directory for storing the restic repository.";
     };
 
     appendOnly = mkOption {
       default = false;
       type = types.bool;
-      description = lib.mdDoc ''
+      description = ''
         Enable append only mode.
         This mode allows creation of new backups but prevents deletion and modification of existing backups.
         This can be useful when backing up systems that have a potential of being hacked.
@@ -37,7 +37,7 @@ in
     privateRepos = mkOption {
       default = false;
       type = types.bool;
-      description = lib.mdDoc ''
+      description = ''
         Enable private repos.
         Grants access only when a subdirectory with the same name as the user is specified in the repository URL.
       '';
@@ -46,13 +46,13 @@ in
     prometheus = mkOption {
       default = false;
       type = types.bool;
-      description = lib.mdDoc "Enable Prometheus metrics at /metrics.";
+      description = "Enable Prometheus metrics at /metrics.";
     };
 
     extraFlags = mkOption {
       type = types.listOf types.str;
       default = [];
-      description = lib.mdDoc ''
+      description = ''
         Extra commandline options to pass to Restic REST server.
       '';
     };
diff --git a/nixos/modules/services/backup/restic.nix b/nixos/modules/services/backup/restic.nix
index b222dd952d159..8b56636c79695 100644
--- a/nixos/modules/services/backup/restic.nix
+++ b/nixos/modules/services/backup/restic.nix
@@ -8,14 +8,14 @@ let
 in
 {
   options.services.restic.backups = mkOption {
-    description = lib.mdDoc ''
+    description = ''
       Periodic backups to create with Restic.
     '';
     type = types.attrsOf (types.submodule ({ config, name, ... }: {
       options = {
         passwordFile = mkOption {
           type = types.str;
-          description = lib.mdDoc ''
+          description = ''
             Read the repository password from a file.
           '';
           example = "/etc/nixos/restic-password";
@@ -24,7 +24,7 @@ in
         environmentFile = mkOption {
           type = with types; nullOr str;
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             file containing the credentials to access the repository, in the
             format of an EnvironmentFile as described by systemd.exec(5)
           '';
@@ -33,7 +33,7 @@ in
         rcloneOptions = mkOption {
           type = with types; nullOr (attrsOf (oneOf [ str bool ]));
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             Options to pass to rclone to control its behavior.
             See <https://rclone.org/docs/#options> for
             available options. When specifying option names, strip the
@@ -50,7 +50,7 @@ in
         rcloneConfig = mkOption {
           type = with types; nullOr (attrsOf (oneOf [ str bool ]));
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             Configuration for the rclone remote being used for backup.
             See the remote's specific options under rclone's docs at
             <https://rclone.org/docs/>. When specifying
@@ -74,7 +74,7 @@ in
         rcloneConfigFile = mkOption {
           type = with types; nullOr path;
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             Path to the file containing rclone configuration. This file
             must contain configuration for the remote specified in this backup
             set and also must be readable by root. Options set in
@@ -86,7 +86,7 @@ in
         repository = mkOption {
           type = with types; nullOr str;
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             repository to backup to.
           '';
           example = "sftp:backup@192.168.1.100:/backups/${name}";
@@ -95,7 +95,7 @@ in
         repositoryFile = mkOption {
           type = with types; nullOr path;
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             Path to the file containing the repository location to backup to.
           '';
         };
@@ -105,7 +105,7 @@ in
           # after some time has passed since this comment was added.
           type = types.nullOr (types.listOf types.str);
           default = [ ];
-          description = lib.mdDoc ''
+          description = ''
             Which paths to backup, in addition to ones specified via
             `dynamicFilesFrom`.  If null or an empty array and
             `dynamicFilesFrom` is also null, no backup command will be run.
@@ -120,7 +120,7 @@ in
         exclude = mkOption {
           type = types.listOf types.str;
           default = [ ];
-          description = lib.mdDoc ''
+          description = ''
             Patterns to exclude when backing up. See
             https://restic.readthedocs.io/en/latest/040_backup.html#excluding-files for
             details on syntax.
@@ -138,7 +138,7 @@ in
             OnCalendar = "daily";
             Persistent = true;
           };
-          description = lib.mdDoc ''
+          description = ''
             When to run the backup. See {manpage}`systemd.timer(5)` for
             details. If null no timer is created and the backup will only
             run when explicitly started.
@@ -153,7 +153,7 @@ in
         user = mkOption {
           type = types.str;
           default = "root";
-          description = lib.mdDoc ''
+          description = ''
             As which user the backup should run.
           '';
           example = "postgresql";
@@ -162,7 +162,7 @@ in
         extraBackupArgs = mkOption {
           type = types.listOf types.str;
           default = [ ];
-          description = lib.mdDoc ''
+          description = ''
             Extra arguments passed to restic backup.
           '';
           example = [
@@ -173,7 +173,7 @@ in
         extraOptions = mkOption {
           type = types.listOf types.str;
           default = [ ];
-          description = lib.mdDoc ''
+          description = ''
             Extra extended options to be passed to the restic --option flag.
           '';
           example = [
@@ -184,7 +184,7 @@ in
         initialize = mkOption {
           type = types.bool;
           default = false;
-          description = lib.mdDoc ''
+          description = ''
             Create the repository if it doesn't exist.
           '';
         };
@@ -192,7 +192,7 @@ in
         pruneOpts = mkOption {
           type = types.listOf types.str;
           default = [ ];
-          description = lib.mdDoc ''
+          description = ''
             A list of options (--keep-\* et al.) for 'restic forget
             --prune', to automatically prune old snapshots.  The
             'forget' command is run *after* the 'backup' command, so
@@ -209,7 +209,7 @@ in
         checkOpts = mkOption {
           type = types.listOf types.str;
           default = [ ];
-          description = lib.mdDoc ''
+          description = ''
             A list of options for 'restic check', which is run after
             pruning.
           '';
@@ -221,7 +221,7 @@ in
         dynamicFilesFrom = mkOption {
           type = with types; nullOr str;
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             A script that produces a list of files to back up.  The
             results of this command are given to the '--files-from'
             option. The result is merged with paths specified via `paths`.
@@ -232,7 +232,7 @@ in
         backupPrepareCommand = mkOption {
           type = with types; nullOr str;
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             A script that must run before starting the backup process.
           '';
         };
@@ -240,7 +240,7 @@ in
         backupCleanupCommand = mkOption {
           type = with types; nullOr str;
           default = null;
-          description = lib.mdDoc ''
+          description = ''
             A script that must run after finishing the backup process.
           '';
         };
diff --git a/nixos/modules/services/backup/rsnapshot.nix b/nixos/modules/services/backup/rsnapshot.nix
index 0b9bb60af0ea2..6635a51ec2c65 100644
--- a/nixos/modules/services/backup/rsnapshot.nix
+++ b/nixos/modules/services/backup/rsnapshot.nix
@@ -22,9 +22,9 @@ in
 {
   options = {
     services.rsnapshot = {
-      enable = mkEnableOption (lib.mdDoc "rsnapshot backups");
+      enable = mkEnableOption "rsnapshot backups";
       enableManualRsnapshot = mkOption {
-        description = lib.mdDoc "Whether to enable manual usage of the rsnapshot command with this module.";
+        description = "Whether to enable manual usage of the rsnapshot command with this module.";
         default = true;
         type = types.bool;
       };
@@ -37,7 +37,7 @@ in
           backup	/home/	localhost/
         '';
         type = types.lines;
-        description = lib.mdDoc ''
+        description = ''
           rsnapshot configuration option in addition to the defaults from
           rsnapshot and this module.
 
@@ -53,7 +53,7 @@ in
         default = {};
         example = { hourly = "0 * * * *"; daily = "50 21 * * *"; };
         type = types.attrsOf types.str;
-        description = lib.mdDoc ''
+        description = ''
           Periodicity at which intervals should be run by cron.
           Note that the intervals also have to exist in configuration
           as retain options.
diff --git a/nixos/modules/services/backup/sanoid.nix b/nixos/modules/services/backup/sanoid.nix
index 46d1de4ed934d..1b9ace358cabe 100644
--- a/nixos/modules/services/backup/sanoid.nix
+++ b/nixos/modules/services/backup/sanoid.nix
@@ -12,37 +12,37 @@ let
 
   commonOptions = {
     hourly = mkOption {
-      description = lib.mdDoc "Number of hourly snapshots.";
+      description = "Number of hourly snapshots.";
       type = with types; nullOr ints.unsigned;
       default = null;
     };
 
     daily = mkOption {
-      description = lib.mdDoc "Number of daily snapshots.";
+      description = "Number of daily snapshots.";
       type = with types; nullOr ints.unsigned;
       default = null;
     };
 
     monthly = mkOption {
-      description = lib.mdDoc "Number of monthly snapshots.";
+      description = "Number of monthly snapshots.";
       type = with types; nullOr ints.unsigned;
       default = null;
     };
 
     yearly = mkOption {
-      description = lib.mdDoc "Number of yearly snapshots.";
+      description = "Number of yearly snapshots.";
       type = with types; nullOr ints.unsigned;
       default = null;
     };
 
     autoprune = mkOption {
-      description = lib.mdDoc "Whether to automatically prune old snapshots.";
+      description = "Whether to automatically prune old snapshots.";
       type = with types; nullOr bool;
       default = null;
     };
 
     autosnap = mkOption {
-      description = lib.mdDoc "Whether to automatically take snapshots.";
+      description = "Whether to automatically take snapshots.";
       type = with types; nullOr bool;
       default = null;
     };
@@ -50,7 +50,7 @@ let
 
   datasetOptions = rec {
     use_template = mkOption {
-      description = lib.mdDoc "Names of the templates to use for this dataset.";
+      description = "Names of the templates to use for this dataset.";
       type = types.listOf (types.str // {
         check = (types.enum (attrNames cfg.templates)).check;
         description = "configured template name";
@@ -60,7 +60,7 @@ let
     useTemplate = use_template;
 
     recursive = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Whether to recursively snapshot dataset children.
         You can also set this to `"zfs"` to handle datasets
         recursively in an atomic way without the possibility to
@@ -71,7 +71,7 @@ let
     };
 
     process_children_only = mkOption {
-      description = lib.mdDoc "Whether to only snapshot child datasets if recursing.";
+      description = "Whether to only snapshot child datasets if recursing.";
       type = types.bool;
       default = false;
     };
@@ -112,7 +112,7 @@ in
   # Interface
 
   options.services.sanoid = {
-    enable = mkEnableOption (lib.mdDoc "Sanoid ZFS snapshotting service");
+    enable = mkEnableOption "Sanoid ZFS snapshotting service";
 
     package = lib.mkPackageOption pkgs "sanoid" {};
 
@@ -120,7 +120,7 @@ in
       type = types.str;
       default = "hourly";
       example = "daily";
-      description = lib.mdDoc ''
+      description = ''
         Run sanoid at this interval. The default is to run hourly.
 
         The format is described in
@@ -136,7 +136,7 @@ in
         config.process_children_only = modules.mkAliasAndWrapDefsWithPriority id (options.processChildrenOnly or { });
       }));
       default = { };
-      description = lib.mdDoc "Datasets to snapshot.";
+      description = "Datasets to snapshot.";
     };
 
     templates = mkOption {
@@ -145,12 +145,12 @@ in
         options = commonOptions;
       });
       default = { };
-      description = lib.mdDoc "Templates for datasets.";
+      description = "Templates for datasets.";
     };
 
     settings = mkOption {
       type = types.attrsOf datasetSettingsType;
-      description = lib.mdDoc ''
+      description = ''
         Free-form settings written directly to the config file. See
         <https://github.com/jimsalterjrs/sanoid/blob/master/sanoid.defaults.conf>
         for allowed values.
@@ -161,7 +161,7 @@ in
       type = types.listOf types.str;
       default = [ ];
       example = [ "--verbose" "--readonly" "--debug" ];
-      description = lib.mdDoc ''
+      description = ''
         Extra arguments to pass to sanoid. See
         <https://github.com/jimsalterjrs/sanoid/#sanoid-command-line-options>
         for allowed options.
diff --git a/nixos/modules/services/backup/snapraid.nix b/nixos/modules/services/backup/snapraid.nix
index c9b2550e80e81..a621c9f62ff79 100644
--- a/nixos/modules/services/backup/snapraid.nix
+++ b/nixos/modules/services/backup/snapraid.nix
@@ -11,7 +11,7 @@ in
   ];
 
   options.services.snapraid = with types; {
-    enable = mkEnableOption (lib.mdDoc "SnapRAID");
+    enable = mkEnableOption "SnapRAID";
     dataDisks = mkOption {
       default = { };
       example = {
@@ -19,7 +19,7 @@ in
         d2 = "/mnt/disk2/";
         d3 = "/mnt/disk3/";
       };
-      description = lib.mdDoc "SnapRAID data disks.";
+      description = "SnapRAID data disks.";
       type = attrsOf str;
     };
     parityFiles = mkOption {
@@ -32,7 +32,7 @@ in
         "/mnt/diskt/snapraid.5-parity"
         "/mnt/disku/snapraid.6-parity"
       ];
-      description = lib.mdDoc "SnapRAID parity files.";
+      description = "SnapRAID parity files.";
       type = listOf str;
     };
     contentFiles = mkOption {
@@ -42,46 +42,46 @@ in
         "/mnt/disk1/snapraid.content"
         "/mnt/disk2/snapraid.content"
       ];
-      description = lib.mdDoc "SnapRAID content list files.";
+      description = "SnapRAID content list files.";
       type = listOf str;
     };
     exclude = mkOption {
       default = [ ];
       example = [ "*.unrecoverable" "/tmp/" "/lost+found/" ];
-      description = lib.mdDoc "SnapRAID exclude directives.";
+      description = "SnapRAID exclude directives.";
       type = listOf str;
     };
     touchBeforeSync = mkOption {
       default = true;
       example = false;
-      description = lib.mdDoc
+      description =
         "Whether {command}`snapraid touch` should be run before {command}`snapraid sync`.";
       type = bool;
     };
     sync.interval = mkOption {
       default = "01:00";
       example = "daily";
-      description = lib.mdDoc "How often to run {command}`snapraid sync`.";
+      description = "How often to run {command}`snapraid sync`.";
       type = str;
     };
     scrub = {
       interval = mkOption {
         default = "Mon *-*-* 02:00:00";
         example = "weekly";
-        description = lib.mdDoc "How often to run {command}`snapraid scrub`.";
+        description = "How often to run {command}`snapraid scrub`.";
         type = str;
       };
       plan = mkOption {
         default = 8;
         example = 5;
-        description = lib.mdDoc
+        description =
           "Percent of the array that should be checked by {command}`snapraid scrub`.";
         type = int;
       };
       olderThan = mkOption {
         default = 10;
         example = 20;
-        description = lib.mdDoc
+        description =
           "Number of days since data was last scrubbed before it can be scrubbed again.";
         type = int;
       };
@@ -95,7 +95,7 @@ in
         autosave 500
         pool /pool
       '';
-      description = lib.mdDoc "Extra config options for SnapRAID.";
+      description = "Extra config options for SnapRAID.";
       type = lines;
     };
   };
diff --git a/nixos/modules/services/backup/syncoid.nix b/nixos/modules/services/backup/syncoid.nix
index 4a04f0aa16221..ec9ccaa46d428 100644
--- a/nixos/modules/services/backup/syncoid.nix
+++ b/nixos/modules/services/backup/syncoid.nix
@@ -85,7 +85,7 @@ in
   # Interface
 
   options.services.syncoid = {
-    enable = mkEnableOption (lib.mdDoc "Syncoid ZFS synchronization service");
+    enable = mkEnableOption "Syncoid ZFS synchronization service";
 
     package = lib.mkPackageOption pkgs "sanoid" {};
 
@@ -93,7 +93,7 @@ in
       type = types.str;
       default = "hourly";
       example = "*-*-* *:15:00";
-      description = lib.mdDoc ''
+      description = ''
         Run syncoid at this interval. The default is to run hourly.
 
         The format is described in
@@ -105,7 +105,7 @@ in
       type = types.str;
       default = "syncoid";
       example = "backup";
-      description = lib.mdDoc ''
+      description = ''
         The user for the service. ZFS privilege delegation will be
         automatically configured for any local pools used by syncoid if this
         option is set to a user other than root. The user will be given the
@@ -119,13 +119,13 @@ in
       type = types.str;
       default = "syncoid";
       example = "backup";
-      description = lib.mdDoc "The group for the service.";
+      description = "The group for the service.";
     };
 
     sshKey = mkOption {
       type = with types; nullOr (coercedTo path toString str);
       default = null;
-      description = lib.mdDoc ''
+      description = ''
         SSH private key file to use to login to the remote system. Can be
         overridden in individual commands.
       '';
@@ -135,7 +135,7 @@ in
       type = types.listOf types.str;
       # Permissions snapshot and destroy are in case --no-sync-snap is not used
       default = [ "bookmark" "hold" "send" "snapshot" "destroy" "mount" ];
-      description = lib.mdDoc ''
+      description = ''
         Permissions granted for the {option}`services.syncoid.user` user
         for local source datasets. See
         <https://openzfs.github.io/openzfs-docs/man/8/zfs-allow.8.html>
@@ -147,7 +147,7 @@ in
       type = types.listOf types.str;
       default = [ "change-key" "compression" "create" "mount" "mountpoint" "receive" "rollback" ];
       example = [ "create" "mount" "receive" "rollback" ];
-      description = lib.mdDoc ''
+      description = ''
         Permissions granted for the {option}`services.syncoid.user` user
         for local target datasets. See
         <https://openzfs.github.io/openzfs-docs/man/8/zfs-allow.8.html>
@@ -162,7 +162,7 @@ in
       type = types.listOf types.str;
       default = [ ];
       example = [ "--no-sync-snap" ];
-      description = lib.mdDoc ''
+      description = ''
         Arguments to add to every syncoid command, unless disabled for that
         command. See
         <https://github.com/jimsalterjrs/sanoid/#syncoid-command-line-options>
@@ -173,7 +173,7 @@ in
     service = mkOption {
       type = types.attrs;
       default = { };
-      description = lib.mdDoc ''
+      description = ''
         Systemd configuration common to all syncoid services.
       '';
     };
@@ -184,7 +184,7 @@ in
           source = mkOption {
             type = types.str;
             example = "pool/dataset";
-            description = lib.mdDoc ''
+            description = ''
               Source ZFS dataset. Can be either local or remote. Defaults to
               the attribute name.
             '';
@@ -193,18 +193,18 @@ in
           target = mkOption {
             type = types.str;
             example = "user@server:pool/dataset";
-            description = lib.mdDoc ''
+            description = ''
               Target ZFS dataset. Can be either local
               («pool/dataset») or remote
               («user@server:pool/dataset»).
             '';
           };
 
-          recursive = mkEnableOption (lib.mdDoc ''the transfer of child datasets'');
+          recursive = mkEnableOption ''the transfer of child datasets'';
 
           sshKey = mkOption {
             type = with types; nullOr (coercedTo path toString str);
-            description = lib.mdDoc ''
+            description = ''
               SSH private key file to use to login to the remote system.
               Defaults to {option}`services.syncoid.sshKey` option.
             '';
@@ -212,7 +212,7 @@ in
 
           localSourceAllow = mkOption {
             type = types.listOf types.str;
-            description = lib.mdDoc ''
+            description = ''
               Permissions granted for the {option}`services.syncoid.user` user
               for local source datasets. See
               <https://openzfs.github.io/openzfs-docs/man/8/zfs-allow.8.html>
@@ -223,7 +223,7 @@ in
 
           localTargetAllow = mkOption {
             type = types.listOf types.str;
-            description = lib.mdDoc ''
+            description = ''
               Permissions granted for the {option}`services.syncoid.user` user
               for local target datasets. See
               <https://openzfs.github.io/openzfs-docs/man/8/zfs-allow.8.html>
@@ -238,7 +238,7 @@ in
             type = types.separatedString " ";
             default = "";
             example = "Lc e";
-            description = lib.mdDoc ''
+            description = ''
               Advanced options to pass to zfs send. Options are specified
               without their leading dashes and separated by spaces.
             '';
@@ -248,7 +248,7 @@ in
             type = types.separatedString " ";
             default = "";
             example = "ux recordsize o compression=lz4";
-            description = lib.mdDoc ''
+            description = ''
               Advanced options to pass to zfs recv. Options are specified
               without their leading dashes and separated by spaces.
             '';
@@ -257,7 +257,7 @@ in
           useCommonArgs = mkOption {
             type = types.bool;
             default = true;
-            description = lib.mdDoc ''
+            description = ''
               Whether to add the configured common arguments to this command.
             '';
           };
@@ -265,7 +265,7 @@ in
           service = mkOption {
             type = types.attrs;
             default = { };
-            description = lib.mdDoc ''
+            description = ''
               Systemd configuration specific to this syncoid service.
             '';
           };
@@ -274,7 +274,7 @@ in
             type = types.listOf types.str;
             default = [ ];
             example = [ "--sshport 2222" ];
-            description = lib.mdDoc "Extra syncoid arguments for this command.";
+            description = "Extra syncoid arguments for this command.";
           };
         };
         config = {
@@ -290,7 +290,7 @@ in
           "pool/test".target = "root@target:pool/test";
         }
       '';
-      description = lib.mdDoc "Syncoid commands to run.";
+      description = "Syncoid commands to run.";
     };
   };
 
diff --git a/nixos/modules/services/backup/tarsnap.nix b/nixos/modules/services/backup/tarsnap.nix
index 9e1db23ca22a7..b8f848451d40b 100644
--- a/nixos/modules/services/backup/tarsnap.nix
+++ b/nixos/modules/services/backup/tarsnap.nix
@@ -30,14 +30,14 @@ in
 
   options = {
     services.tarsnap = {
-      enable = mkEnableOption (lib.mdDoc "periodic tarsnap backups");
+      enable = mkEnableOption "periodic tarsnap backups";
 
       package = mkPackageOption pkgs "tarsnap" { };
 
       keyfile = mkOption {
         type = types.str;
         default = "/root/tarsnap.key";
-        description = lib.mdDoc ''
+        description = ''
           The keyfile which associates this machine with your tarsnap
           account.
           Create the keyfile with {command}`tarsnap-keygen`.
@@ -69,7 +69,7 @@ in
                 type = types.str;
                 default = gcfg.keyfile;
                 defaultText = literalExpression "config.${opt.keyfile}";
-                description = lib.mdDoc ''
+                description = ''
                   Set a specific keyfile for this archive. This defaults to
                   `"/root/tarsnap.key"` if left unspecified.
 
@@ -94,7 +94,7 @@ in
                 defaultText = literalExpression ''
                   "/var/cache/tarsnap/''${utils.escapeSystemdPath config.${options.keyfile}}"
                 '';
-                description = lib.mdDoc ''
+                description = ''
                   The cache allows tarsnap to identify previously stored data
                   blocks, reducing archival time and bandwidth usage.
 
@@ -109,7 +109,7 @@ in
               nodump = mkOption {
                 type = types.bool;
                 default = true;
-                description = lib.mdDoc ''
+                description = ''
                   Exclude files with the `nodump` flag.
                 '';
               };
@@ -117,7 +117,7 @@ in
               printStats = mkOption {
                 type = types.bool;
                 default = true;
-                description = lib.mdDoc ''
+                description = ''
                   Print global archive statistics upon completion.
                   The output is available via
                   {command}`systemctl status tarsnap-archive-name`.
@@ -127,7 +127,7 @@ in
               checkpointBytes = mkOption {
                 type = types.nullOr types.str;
                 default = "1GB";
-                description = lib.mdDoc ''
+                description = ''
                   Create a checkpoint every `checkpointBytes`
                   of uploaded data (optionally specified using an SI prefix).
 
@@ -142,7 +142,7 @@ in
                 type = types.str;
                 default = "01:15";
                 example = "hourly";
-                description = lib.mdDoc ''
+                description = ''
                   Create archive at this interval.
 
                   The format is described in
@@ -153,7 +153,7 @@ in
               aggressiveNetworking = mkOption {
                 type = types.bool;
                 default = false;
-                description = lib.mdDoc ''
+                description = ''
                   Upload data over multiple TCP connections, potentially
                   increasing tarsnap's bandwidth utilisation at the cost
                   of slowing down all other network traffic. Not
@@ -165,13 +165,13 @@ in
               directories = mkOption {
                 type = types.listOf types.path;
                 default = [];
-                description = lib.mdDoc "List of filesystem paths to archive.";
+                description = "List of filesystem paths to archive.";
               };
 
               excludes = mkOption {
                 type = types.listOf types.str;
                 default = [];
-                description = lib.mdDoc ''
+                description = ''
                   Exclude files and directories matching these patterns.
                 '';
               };
@@ -179,7 +179,7 @@ in
               includes = mkOption {
                 type = types.listOf types.str;
                 default = [];
-                description = lib.mdDoc ''
+                description = ''
                   Include only files and directories matching these
                   patterns (the empty list includes everything).
 
@@ -190,7 +190,7 @@ in
               lowmem = mkOption {
                 type = types.bool;
                 default = false;
-                description = lib.mdDoc ''
+                description = ''
                   Reduce memory consumption by not caching small files.
                   Possibly beneficial if the average file size is smaller
                   than 1 MB and the number of files is lower than the
@@ -201,7 +201,7 @@ in
               verylowmem = mkOption {
                 type = types.bool;
                 default = false;
-                description = lib.mdDoc ''
+                description = ''
                   Reduce memory consumption by a factor of 2 beyond what
                   `lowmem` does, at the cost of significantly
                   slowing down the archiving process.
@@ -211,7 +211,7 @@ in
               maxbw = mkOption {
                 type = types.nullOr types.int;
                 default = null;
-                description = lib.mdDoc ''
+                description = ''
                   Abort archival if upstream bandwidth usage in bytes
                   exceeds this threshold.
                 '';
@@ -221,7 +221,7 @@ in
                 type = types.nullOr types.int;
                 default = null;
                 example = literalExpression "25 * 1000";
-                description = lib.mdDoc ''
+                description = ''
                   Upload bandwidth rate limit in bytes.
                 '';
               };
@@ -230,7 +230,7 @@ in
                 type = types.nullOr types.int;
                 default = null;
                 example = literalExpression "50 * 1000";
-                description = lib.mdDoc ''
+                description = ''
                   Download bandwidth rate limit in bytes.
                 '';
               };
@@ -238,21 +238,21 @@ in
               verbose = mkOption {
                 type = types.bool;
                 default = false;
-                description = lib.mdDoc ''
+                description = ''
                   Whether to produce verbose logging output.
                 '';
               };
               explicitSymlinks = mkOption {
                 type = types.bool;
                 default = false;
-                description = lib.mdDoc ''
+                description = ''
                   Whether to follow symlinks specified as archives.
                 '';
               };
               followSymlinks = mkOption {
                 type = types.bool;
                 default = false;
-                description = lib.mdDoc ''
+                description = ''
                   Whether to follow all symlinks in archive trees.
                 '';
               };
@@ -275,7 +275,7 @@ in
           }
         '';
 
-        description = lib.mdDoc ''
+        description = ''
           Tarsnap archive configurations. Each attribute names an archive
           to be created at a given time interval, according to the options
           associated with it. When uploading to the tarsnap server,
diff --git a/nixos/modules/services/backup/tsm.nix b/nixos/modules/services/backup/tsm.nix
index 2d727dccdece8..1a2b02a65811d 100644
--- a/nixos/modules/services/backup/tsm.nix
+++ b/nixos/modules/services/backup/tsm.nix
@@ -9,17 +9,17 @@ let
   inherit (lib.types) nonEmptyStr nullOr;
 
   options.services.tsmBackup = {
-    enable = mkEnableOption (lib.mdDoc ''
+    enable = mkEnableOption ''
       automatic backups with the
       IBM Storage Protect (Tivoli Storage Manager, TSM) client.
       This also enables
       {option}`programs.tsmClient.enable`
-    '');
+    '';
     command = mkOption {
       type = nonEmptyStr;
       default = "backup";
       example = "incr";
-      description = lib.mdDoc ''
+      description = ''
         The actual command passed to the
         `dsmc` executable to start the backup.
       '';
@@ -27,7 +27,7 @@ let
     servername = mkOption {
       type = nonEmptyStr;
       example = "mainTsmServer";
-      description = lib.mdDoc ''
+      description = ''
         Create a systemd system service
         `tsm-backup.service` that starts
         a backup based on the given servername's stanza.
@@ -45,7 +45,7 @@ let
       type = nullOr nonEmptyStr;
       default = null;
       example = "12:00";
-      description = lib.mdDoc ''
+      description = ''
         The backup service will be invoked
         automatically at the given date/time,
         which must be in the format described in
diff --git a/nixos/modules/services/backup/zfs-replication.nix b/nixos/modules/services/backup/zfs-replication.nix
index 8e7059e5b59d0..c89d6fb8ad60b 100644
--- a/nixos/modules/services/backup/zfs-replication.nix
+++ b/nixos/modules/services/backup/zfs-replication.nix
@@ -9,46 +9,46 @@ let
 in {
   options = {
     services.zfs.autoReplication = {
-      enable = mkEnableOption (lib.mdDoc "ZFS snapshot replication");
+      enable = mkEnableOption "ZFS snapshot replication";
 
       followDelete = mkOption {
-        description = lib.mdDoc "Remove remote snapshots that don't have a local correspondent.";
+        description = "Remove remote snapshots that don't have a local correspondent.";
         default = true;
         type = types.bool;
       };
 
       host = mkOption {
-        description = lib.mdDoc "Remote host where snapshots should be sent. `lz4` is expected to be installed on this host.";
+        description = "Remote host where snapshots should be sent. `lz4` is expected to be installed on this host.";
         example = "example.com";
         type = types.str;
       };
 
       identityFilePath = mkOption {
-        description = lib.mdDoc "Path to SSH key used to login to host.";
+        description = "Path to SSH key used to login to host.";
         example = "/home/username/.ssh/id_rsa";
         type = types.path;
       };
 
       localFilesystem = mkOption {
-        description = lib.mdDoc "Local ZFS filesystem from which snapshots should be sent.  Defaults to the attribute name.";
+        description = "Local ZFS filesystem from which snapshots should be sent.  Defaults to the attribute name.";
         example = "pool/file/path";
         type = types.str;
       };
 
       remoteFilesystem = mkOption {
-        description = lib.mdDoc "Remote ZFS filesystem where snapshots should be sent.";
+        description = "Remote ZFS filesystem where snapshots should be sent.";
         example = "pool/file/path";
         type = types.str;
       };
 
       recursive = mkOption {
-        description = lib.mdDoc "Recursively discover snapshots to send.";
+        description = "Recursively discover snapshots to send.";
         default = true;
         type = types.bool;
       };
 
       username = mkOption {
-        description = lib.mdDoc "Username used by SSH to login to remote host.";
+        description = "Username used by SSH to login to remote host.";
         example = "username";
         type = types.str;
       };
diff --git a/nixos/modules/services/backup/znapzend.nix b/nixos/modules/services/backup/znapzend.nix
index f1f7433a39cdd..71e5977c44640 100644
--- a/nixos/modules/services/backup/znapzend.nix
+++ b/nixos/modules/services/backup/znapzend.nix
@@ -52,24 +52,24 @@ let
 
       label = mkOption {
         type = str;
-        description = lib.mdDoc "Label for this destination. Defaults to the attribute name.";
+        description = "Label for this destination. Defaults to the attribute name.";
       };
 
       plan = mkOption {
         type = str;
-        description = lib.mdDoc planDescription;
+        description = planDescription;
         example = planExample;
       };
 
       dataset = mkOption {
         type = str;
-        description = lib.mdDoc "Dataset name to send snapshots to.";
+        description = "Dataset name to send snapshots to.";
         example = "tank/main";
       };
 
       host = mkOption {
         type = nullOr str;
-        description = lib.mdDoc ''
+        description = ''
           Host to use for the destination dataset. Can be prefixed with
           `user@` to specify the ssh user.
         '';
@@ -79,7 +79,7 @@ let
 
       presend = mkOption {
         type = nullOr str;
-        description = lib.mdDoc ''
+        description = ''
           Command to run before sending the snapshot to the destination.
           Intended to run a remote script via {command}`ssh` on the
           destination, e.g. to bring up a backup disk or server or to put a
@@ -91,7 +91,7 @@ let
 
       postsend = mkOption {
         type = nullOr str;
-        description = lib.mdDoc ''
+        description = ''
           Command to run after sending the snapshot to the destination.
           Intended to run a remote script via {command}`ssh` on the
           destination, e.g. to bring up a backup disk or server or to put a
@@ -115,26 +115,26 @@ let
 
       enable = mkOption {
         type = bool;
-        description = lib.mdDoc "Whether to enable this source.";
+        description = "Whether to enable this source.";
         default = true;
       };
 
       recursive = mkOption {
         type = bool;
-        description = lib.mdDoc "Whether to do recursive snapshots.";
+        description = "Whether to do recursive snapshots.";
         default = false;
       };
 
       mbuffer = {
         enable = mkOption {
           type = bool;
-          description = lib.mdDoc "Whether to use {command}`mbuffer`.";
+          description = "Whether to use {command}`mbuffer`.";
           default = false;
         };
 
         port = mkOption {
           type = nullOr ints.u16;
-          description = lib.mdDoc ''
+          description = ''
               Port to use for {command}`mbuffer`.
 
               If this is null, it will run {command}`mbuffer` through
@@ -149,7 +149,7 @@ let
 
         size = mkOption {
           type = mbufferSizeType;
-          description = lib.mdDoc ''
+          description = ''
             The size for {command}`mbuffer`.
             Supports the units b, k, M, G.
           '';
@@ -160,7 +160,7 @@ let
 
       presnap = mkOption {
         type = nullOr str;
-        description = lib.mdDoc ''
+        description = ''
           Command to run before snapshots are taken on the source dataset,
           e.g. for database locking/flushing. See also
           {option}`postsnap`.
@@ -173,7 +173,7 @@ let
 
       postsnap = mkOption {
         type = nullOr str;
-        description = lib.mdDoc ''
+        description = ''
           Command to run after snapshots are taken on the source dataset,
           e.g. for database unlocking. See also {option}`presnap`.
         '';
@@ -185,7 +185,7 @@ let
 
       timestampFormat = mkOption {
         type = timestampType;
-        description = lib.mdDoc ''
+        description = ''
           The timestamp format to use for constructing snapshot names.
           The syntax is `strftime`-like. The string must
           consist of the mandatory `%Y %m %d %H %M %S`.
@@ -199,7 +199,7 @@ let
 
       sendDelay = mkOption {
         type = int;
-        description = lib.mdDoc ''
+        description = ''
           Specify delay (in seconds) before sending snaps to the destination.
           May be useful if you want to control sending time.
         '';
@@ -209,19 +209,19 @@ let
 
       plan = mkOption {
         type = str;
-        description = lib.mdDoc planDescription;
+        description = planDescription;
         example = planExample;
       };
 
       dataset = mkOption {
         type = str;
-        description = lib.mdDoc "The dataset to use for this source.";
+        description = "The dataset to use for this source.";
         example = "tank/home";
       };
 
       destinations = mkOption {
         type = attrsOf (destType config);
-        description = lib.mdDoc "Additional destinations.";
+        description = "Additional destinations.";
         default = {};
         example = literalExpression ''
           {
@@ -294,13 +294,13 @@ in
 {
   options = {
     services.znapzend = {
-      enable = mkEnableOption (lib.mdDoc "ZnapZend ZFS backup daemon");
+      enable = mkEnableOption "ZnapZend ZFS backup daemon";
 
       logLevel = mkOption {
         default = "debug";
         example = "warning";
         type = enum ["debug" "info" "warning" "err" "alert"];
-        description = lib.mdDoc ''
+        description = ''
           The log level when logging to file. Any of debug, info, warning, err,
           alert. Default in daemonized form is debug.
         '';
@@ -310,7 +310,7 @@ in
         type = str;
         default = "syslog::daemon";
         example = "/var/log/znapzend.log";
-        description = lib.mdDoc ''
+        description = ''
           Where to log to (syslog::\<facility\> or \<filepath\>).
         '';
       };
@@ -318,18 +318,18 @@ in
       noDestroy = mkOption {
         type = bool;
         default = false;
-        description = lib.mdDoc "Does all changes to the filesystem except destroy.";
+        description = "Does all changes to the filesystem except destroy.";
       };
 
       autoCreation = mkOption {
         type = bool;
         default = false;
-        description = lib.mdDoc "Automatically create the destination dataset if it does not exist.";
+        description = "Automatically create the destination dataset if it does not exist.";
       };
 
       zetup = mkOption {
         type = attrsOf srcType;
-        description = lib.mdDoc "Znapzend configuration.";
+        description = "Znapzend configuration.";
         default = {};
         example = literalExpression ''
           {
@@ -350,7 +350,7 @@ in
 
       pure = mkOption {
         type = bool;
-        description = lib.mdDoc ''
+        description = ''
           Do not persist any stateful znapzend setups. If this option is
           enabled, your previously set znapzend setups will be cleared and only
           the ones defined with this module will be applied.
@@ -358,17 +358,17 @@ in
         default = false;
       };
 
-      features.oracleMode = mkEnableOption (lib.mdDoc ''
+      features.oracleMode = mkEnableOption ''
         destroying snapshots one by one instead of using one long argument list.
         If source and destination are out of sync for a long time, you may have
         so many snapshots to destroy that the argument gets is too long and the
         command fails
-      '');
-      features.recvu = mkEnableOption (lib.mdDoc ''
+      '';
+      features.recvu = mkEnableOption ''
         recvu feature which uses `-u` on the receiving end to keep the destination
         filesystem unmounted
-      '');
-      features.compressed = mkEnableOption (lib.mdDoc ''
+      '';
+      features.compressed = mkEnableOption ''
         compressed feature which adds the options `-Lce` to
         the {command}`zfs send` command. When this is enabled, make
         sure that both the sending and receiving pool have the same relevant
@@ -378,8 +378,8 @@ in
         {manpage}`znapzend(1)`
         and {manpage}`zfs(8)`
         for more info
-      '');
-      features.sendRaw = mkEnableOption (lib.mdDoc ''
+      '';
+      features.sendRaw = mkEnableOption ''
         sendRaw feature which adds the options `-w` to the
         {command}`zfs send` command. For encrypted source datasets this
         instructs zfs not to decrypt before sending which results in a remote
@@ -387,23 +387,23 @@ in
         when the remote isn't fully trusted or not physically secure. This
         option must be used consistently, raw incrementals cannot be based on
         non-raw snapshots and vice versa
-      '');
-      features.skipIntermediates = mkEnableOption (lib.mdDoc ''
+      '';
+      features.skipIntermediates = mkEnableOption ''
         the skipIntermediates feature to send a single increment
         between latest common snapshot and the newly made one. It may skip
         several source snaps if the destination was offline for some time, and
         it should skip snapshots not managed by znapzend. Normally for online
         destinations, the new snapshot is sent as soon as it is created on the
         source, so there are no automatic increments to skip
-      '');
-      features.lowmemRecurse = mkEnableOption (lib.mdDoc ''
+      '';
+      features.lowmemRecurse = mkEnableOption ''
         use lowmemRecurse on systems where you have too many datasets, so a
         recursive listing of attributes to find backup plans exhausts the
         memory available to {command}`znapzend`: instead, go the slower
         way to first list all impacted dataset names, and then query their
         configs one by one
-      '');
-      features.zfsGetType = mkEnableOption (lib.mdDoc ''
+      '';
+      features.zfsGetType = mkEnableOption ''
         using zfsGetType if your {command}`zfs get` supports a
         `-t` argument for filtering by dataset type at all AND
         lists properties for snapshots by default when recursing, so that there
@@ -413,7 +413,7 @@ in
         differ by hundreds of times (depending on the amount of snapshots in
         that dataset tree... and a decent backup plan will ensure you have a lot
         of those), so you would benefit from requesting this feature
-      '');
+      '';
     };
   };
 
diff --git a/nixos/modules/services/backup/zrepl.nix b/nixos/modules/services/backup/zrepl.nix
index 8475a347429e7..a0e9a0da7e493 100644
--- a/nixos/modules/services/backup/zrepl.nix
+++ b/nixos/modules/services/backup/zrepl.nix
@@ -11,13 +11,13 @@ in
 
   options = {
     services.zrepl = {
-      enable = mkEnableOption (lib.mdDoc "zrepl");
+      enable = mkEnableOption "zrepl";
 
       package = mkPackageOption pkgs "zrepl" { };
 
       settings = mkOption {
         default = { };
-        description = lib.mdDoc ''
+        description = ''
           Configuration for zrepl. See <https://zrepl.github.io/configuration.html>
           for more information.
         '';