about summary refs log tree commit diff
path: root/nixos/modules/services/cluster
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/cluster')
-rw-r--r--nixos/modules/services/cluster/corosync/default.nix14
-rw-r--r--nixos/modules/services/cluster/hadoop/default.nix30
-rw-r--r--nixos/modules/services/cluster/hadoop/hbase.nix30
-rw-r--r--nixos/modules/services/cluster/hadoop/hdfs.nix20
-rw-r--r--nixos/modules/services/cluster/hadoop/yarn.nix28
-rw-r--r--nixos/modules/services/cluster/k3s/default.nix20
-rw-r--r--nixos/modules/services/cluster/kubernetes/addon-manager.nix6
-rw-r--r--nixos/modules/services/cluster/kubernetes/addons/dns.nix14
-rw-r--r--nixos/modules/services/cluster/kubernetes/apiserver.nix72
-rw-r--r--nixos/modules/services/cluster/kubernetes/controller-manager.nix26
-rw-r--r--nixos/modules/services/cluster/kubernetes/default.nix30
-rw-r--r--nixos/modules/services/cluster/kubernetes/flannel.nix4
-rw-r--r--nixos/modules/services/cluster/kubernetes/kubelet.nix54
-rw-r--r--nixos/modules/services/cluster/kubernetes/pki.nix20
-rw-r--r--nixos/modules/services/cluster/kubernetes/proxy.nix12
-rw-r--r--nixos/modules/services/cluster/kubernetes/scheduler.nix14
-rw-r--r--nixos/modules/services/cluster/pacemaker/default.nix2
-rw-r--r--nixos/modules/services/cluster/patroni/default.nix36
-rw-r--r--nixos/modules/services/cluster/spark/default.nix22
19 files changed, 227 insertions, 227 deletions
diff --git a/nixos/modules/services/cluster/corosync/default.nix b/nixos/modules/services/cluster/corosync/default.nix
index 477ffbcdb7c76..cf3448620a5d7 100644
--- a/nixos/modules/services/cluster/corosync/default.nix
+++ b/nixos/modules/services/cluster/corosync/default.nix
@@ -7,38 +7,38 @@ in
 {
   # interface
   options.services.corosync = {
-    enable = mkEnableOption (lib.mdDoc "corosync");
+    enable = mkEnableOption "corosync";
 
     package = mkPackageOption pkgs "corosync" { };
 
     clusterName = mkOption {
       type = types.str;
       default = "nixcluster";
-      description = lib.mdDoc "Name of the corosync cluster.";
+      description = "Name of the corosync cluster.";
     };
 
     extraOptions = mkOption {
       type = with types; listOf str;
       default = [];
-      description = lib.mdDoc "Additional options with which to start corosync.";
+      description = "Additional options with which to start corosync.";
     };
 
     nodelist = mkOption {
-      description = lib.mdDoc "Corosync nodelist: all cluster members.";
+      description = "Corosync nodelist: all cluster members.";
       default = [];
       type = with types; listOf (submodule {
         options = {
           nodeid = mkOption {
             type = int;
-            description = lib.mdDoc "Node ID number";
+            description = "Node ID number";
           };
           name = mkOption {
             type = str;
-            description = lib.mdDoc "Node name";
+            description = "Node name";
           };
           ring_addrs = mkOption {
             type = listOf str;
-            description = lib.mdDoc "List of addresses, one for each ring.";
+            description = "List of addresses, one for each ring.";
           };
         };
       });
diff --git a/nixos/modules/services/cluster/hadoop/default.nix b/nixos/modules/services/cluster/hadoop/default.nix
index 6fa91d2f047e5..4b255a97f5614 100644
--- a/nixos/modules/services/cluster/hadoop/default.nix
+++ b/nixos/modules/services/cluster/hadoop/default.nix
@@ -16,7 +16,7 @@ with lib;
           "fs.defaultFS" = "hdfs://localhost";
         }
       '';
-      description = lib.mdDoc ''
+      description = ''
         Hadoop core-site.xml definition
         <https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml>
       '';
@@ -25,7 +25,7 @@ with lib;
       default = {};
       type = types.attrsOf types.anything;
       internal = true;
-      description = lib.mdDoc ''
+      description = ''
         Internal option to add configs to core-site.xml based on module options
       '';
     };
@@ -38,7 +38,7 @@ with lib;
         "dfs.namenode.http-bind-host" = "0.0.0.0";
       };
       type = types.attrsOf types.anything;
-      description = lib.mdDoc ''
+      description = ''
         Default options for hdfs-site.xml
       '';
     };
@@ -50,7 +50,7 @@ with lib;
           "dfs.nameservices" = "namenode1";
         }
       '';
-      description = lib.mdDoc ''
+      description = ''
         Additional options and overrides for hdfs-site.xml
         <https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml>
       '';
@@ -59,7 +59,7 @@ with lib;
       default = {};
       type = types.attrsOf types.anything;
       internal = true;
-      description = lib.mdDoc ''
+      description = ''
         Internal option to add configs to hdfs-site.xml based on module options
       '';
     };
@@ -80,7 +80,7 @@ with lib;
         }
       '';
       type = types.attrsOf types.anything;
-      description = lib.mdDoc ''
+      description = ''
         Default options for mapred-site.xml
       '';
     };
@@ -92,7 +92,7 @@ with lib;
           "mapreduce.map.java.opts" = "-Xmx900m -XX:+UseParallelGC";
         }
       '';
-      description = lib.mdDoc ''
+      description = ''
         Additional options and overrides for mapred-site.xml
         <https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml>
       '';
@@ -113,7 +113,7 @@ with lib;
         "yarn.resourcemanager.scheduler.class" = "org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler";
       };
       type = types.attrsOf types.anything;
-      description = lib.mdDoc ''
+      description = ''
         Default options for yarn-site.xml
       '';
     };
@@ -125,7 +125,7 @@ with lib;
           "yarn.resourcemanager.hostname" = "''${config.networking.hostName}";
         }
       '';
-      description = lib.mdDoc ''
+      description = ''
         Additional options and overrides for yarn-site.xml
         <https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml>
       '';
@@ -134,7 +134,7 @@ with lib;
       default = {};
       type = types.attrsOf types.anything;
       internal = true;
-      description = lib.mdDoc ''
+      description = ''
         Internal option to add configs to yarn-site.xml based on module options
       '';
     };
@@ -147,7 +147,7 @@ with lib;
           "hadoop.http.max.threads" = 500;
         }
       '';
-      description = lib.mdDoc ''
+      description = ''
         Hadoop httpfs-site.xml definition
         <https://hadoop.apache.org/docs/current/hadoop-hdfs-httpfs/httpfs-default.html>
       '';
@@ -162,7 +162,7 @@ with lib;
       example = literalExpression ''
         "''${pkgs.hadoop}/etc/hadoop/log4j.properties";
       '';
-      description = lib.mdDoc "log4j.properties file added to HADOOP_CONF_DIR";
+      description = "log4j.properties file added to HADOOP_CONF_DIR";
     };
 
     containerExecutorCfg = mkOption {
@@ -179,7 +179,7 @@ with lib;
           "feature.terminal.enabled" = 0;
         }
       '';
-      description = lib.mdDoc ''
+      description = ''
         Yarn container-executor.cfg definition
         <https://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/SecureContainer.html>
       '';
@@ -194,10 +194,10 @@ with lib;
           ./extraYARNConfs
         ]
       '';
-      description = lib.mdDoc "Directories containing additional config files to be added to HADOOP_CONF_DIR";
+      description = "Directories containing additional config files to be added to HADOOP_CONF_DIR";
     };
 
-    gatewayRole.enable = mkEnableOption (lib.mdDoc "gateway role for deploying hadoop configs");
+    gatewayRole.enable = mkEnableOption "gateway role for deploying hadoop configs";
 
     package = mkPackageOption pkgs "hadoop" { };
   };
diff --git a/nixos/modules/services/cluster/hadoop/hbase.nix b/nixos/modules/services/cluster/hadoop/hbase.nix
index 6801e505db64d..8eb8d83fd84cc 100644
--- a/nixos/modules/services/cluster/hadoop/hbase.nix
+++ b/nixos/modules/services/cluster/hadoop/hbase.nix
@@ -7,25 +7,25 @@ let
   mkIfNotNull = x: mkIf (x != null) x;
   # generic hbase role options
   hbaseRoleOption = name: extraOpts: {
-    enable = mkEnableOption (mdDoc "HBase ${name}");
+    enable = mkEnableOption "HBase ${name}";
 
     openFirewall = mkOption {
       type = types.bool;
       default = false;
-      description = mdDoc "Open firewall ports for HBase ${name}.";
+      description = "Open firewall ports for HBase ${name}.";
     };
 
     restartIfChanged = mkOption {
       type = types.bool;
       default = false;
-      description = mdDoc "Restart ${name} con config change.";
+      description = "Restart ${name} con config change.";
     };
 
     extraFlags = mkOption {
       type = with types; listOf str;
       default = [];
       example = literalExpression ''[ "--backup" ]'';
-      description = mdDoc "Extra flags for the ${name} service.";
+      description = "Extra flags for the ${name} service.";
     };
 
     environment = mkOption {
@@ -36,7 +36,7 @@ let
           HBASE_MASTER_OPTS = "-Dcom.sun.management.jmxremote.ssl=true";
         }
       '';
-      description = mdDoc "Environment variables passed to ${name}.";
+      description = "Environment variables passed to ${name}.";
     };
   } // extraOpts;
   # generic hbase role configs
@@ -93,7 +93,7 @@ in
 {
   options.services.hadoop = {
 
-    gatewayRole.enableHbaseCli = mkEnableOption (mdDoc "HBase CLI tools");
+    gatewayRole.enableHbaseCli = mkEnableOption "HBase CLI tools";
 
     hbaseSiteDefault = mkOption {
       default = {
@@ -105,7 +105,7 @@ in
         "hbase.cluster.distributed" = "true";
       };
       type = types.attrsOf types.anything;
-      description = mdDoc ''
+      description = ''
         Default options for hbase-site.xml
       '';
     };
@@ -118,7 +118,7 @@ in
           "hbase.table.normalization.enabled" = "true";
         }
       '';
-      description = mdDoc ''
+      description = ''
         Additional options and overrides for hbase-site.xml
         <https://github.com/apache/hbase/blob/rel/2.4.11/hbase-common/src/main/resources/hbase-default.xml>
       '';
@@ -127,7 +127,7 @@ in
       default = {};
       type = with types; attrsOf anything;
       internal = true;
-      description = mdDoc ''
+      description = ''
         Internal option to add configs to hbase-site.xml based on module options
       '';
     };
@@ -137,7 +137,7 @@ in
       package = mkPackageOption pkgs "hbase" { };
 
       rootdir = mkOption {
-        description = mdDoc ''
+        description = ''
           This option will set "hbase.rootdir" in hbase-site.xml and determine
           the directory shared by region servers and into which HBase persists.
           The URL should be 'fully-qualified' to include the filesystem scheme.
@@ -151,7 +151,7 @@ in
         default = "/hbase";
       };
       zookeeperQuorum = mkOption {
-        description = mdDoc ''
+        description = ''
           This option will set "hbase.zookeeper.quorum" in hbase-site.xml.
           Comma separated list of servers in the ZooKeeper ensemble.
         '';
@@ -164,20 +164,20 @@ in
         port = mkOption {
           type = types.int;
           default = port;
-          description = mdDoc "RPC port";
+          description = "RPC port";
         };
         infoPort = mkOption {
           type = types.int;
           default = infoPort;
-          description = mdDoc "web UI port";
+          description = "web UI port";
         };
       };
     in mapAttrs hbaseRoleOption {
-      master.initHDFS = mkEnableOption (mdDoc "initialization of the hbase directory on HDFS");
+      master.initHDFS = mkEnableOption "initialization of the hbase directory on HDFS";
       regionServer.overrideHosts = mkOption {
         type = types.bool;
         default = true;
-        description = mdDoc ''
+        description = ''
           Remove /etc/hosts entries for "127.0.0.2" and "::1" defined in nixos/modules/config/networking.nix
           Regionservers must be able to resolve their hostnames to their IP addresses, through PTR records
           or /etc/hosts entries.
diff --git a/nixos/modules/services/cluster/hadoop/hdfs.nix b/nixos/modules/services/cluster/hadoop/hdfs.nix
index 4a49bd0ddd433..1f61acf4012dd 100644
--- a/nixos/modules/services/cluster/hadoop/hdfs.nix
+++ b/nixos/modules/services/cluster/hadoop/hdfs.nix
@@ -8,10 +8,10 @@ let
 
   # Generator for HDFS service options
   hadoopServiceOption = { serviceName, firewallOption ? true, extraOpts ? null }: {
-    enable = mkEnableOption (lib.mdDoc serviceName);
+    enable = mkEnableOption serviceName;
     restartIfChanged = mkOption {
       type = types.bool;
-      description = lib.mdDoc ''
+      description = ''
         Automatically restart the service on config change.
         This can be set to false to defer restarts on clusters running critical applications.
         Please consider the security implications of inadvertently running an older version,
@@ -22,7 +22,7 @@ let
     extraFlags = mkOption{
       type = with types; listOf str;
       default = [];
-      description = lib.mdDoc "Extra command line flags to pass to ${serviceName}";
+      description = "Extra command line flags to pass to ${serviceName}";
       example = [
         "-Dcom.sun.management.jmxremote"
         "-Dcom.sun.management.jmxremote.port=8010"
@@ -31,13 +31,13 @@ let
     extraEnv = mkOption{
       type = with types; attrsOf str;
       default = {};
-      description = lib.mdDoc "Extra environment variables for ${serviceName}";
+      description = "Extra environment variables for ${serviceName}";
     };
   } // (optionalAttrs firewallOption {
     openFirewall = mkOption {
       type = types.bool;
       default = false;
-      description = lib.mdDoc "Open firewall ports for ${serviceName}.";
+      description = "Open firewall ports for ${serviceName}.";
     };
   }) // (optionalAttrs (extraOpts != null) extraOpts);
 
@@ -83,7 +83,7 @@ in
       formatOnInit = mkOption {
         type = types.bool;
         default = false;
-        description = lib.mdDoc ''
+        description = ''
           Format HDFS namenode on first start. This is useful for quickly spinning up
           ephemeral HDFS clusters with a single namenode.
           For HA clusters, initialization involves multiple steps across multiple nodes.
@@ -96,19 +96,19 @@ in
     datanode = hadoopServiceOption { serviceName = "HDFS DataNode"; } // {
       dataDirs = mkOption {
         default = null;
-        description = lib.mdDoc "Tier and path definitions for datanode storage.";
+        description = "Tier and path definitions for datanode storage.";
         type = with types; nullOr (listOf (submodule {
           options = {
             type = mkOption {
               type = enum [ "SSD" "DISK" "ARCHIVE" "RAM_DISK" ];
-              description = lib.mdDoc ''
+              description = ''
                 Storage types ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for HDFS storage policies.
               '';
             };
             path = mkOption {
               type = path;
               example = [ "/var/lib/hadoop/hdfs/dn" ];
-              description = lib.mdDoc "Determines where on the local filesystem a data node should store its blocks.";
+              description = "Determines where on the local filesystem a data node should store its blocks.";
             };
           };
         }));
@@ -126,7 +126,7 @@ in
       tempPath = mkOption {
         type = types.path;
         default = "/tmp/hadoop/httpfs";
-        description = lib.mdDoc "HTTPFS_TEMP path used by HTTPFS";
+        description = "HTTPFS_TEMP path used by HTTPFS";
       };
     };
 
diff --git a/nixos/modules/services/cluster/hadoop/yarn.nix b/nixos/modules/services/cluster/hadoop/yarn.nix
index a49aafbd1dca8..0a7b4b7e67b03 100644
--- a/nixos/modules/services/cluster/hadoop/yarn.nix
+++ b/nixos/modules/services/cluster/hadoop/yarn.nix
@@ -5,7 +5,7 @@ let
   hadoopConf = "${import ./conf.nix { inherit cfg pkgs lib; }}/";
   restartIfChanged  = mkOption {
     type = types.bool;
-    description = lib.mdDoc ''
+    description = ''
       Automatically restart the service on config change.
       This can be set to false to defer restarts on clusters running critical applications.
       Please consider the security implications of inadvertently running an older version,
@@ -16,7 +16,7 @@ let
   extraFlags = mkOption{
     type = with types; listOf str;
     default = [];
-    description = lib.mdDoc "Extra command line flags to pass to the service";
+    description = "Extra command line flags to pass to the service";
     example = [
       "-Dcom.sun.management.jmxremote"
       "-Dcom.sun.management.jmxremote.port=8010"
@@ -25,45 +25,45 @@ let
   extraEnv = mkOption{
     type = with types; attrsOf str;
     default = {};
-    description = lib.mdDoc "Extra environment variables";
+    description = "Extra environment variables";
   };
 in
 {
   options.services.hadoop.yarn = {
     resourcemanager = {
-      enable = mkEnableOption (lib.mdDoc "Hadoop YARN ResourceManager");
+      enable = mkEnableOption "Hadoop YARN ResourceManager";
       inherit restartIfChanged extraFlags extraEnv;
 
       openFirewall = mkOption {
         type = types.bool;
         default = false;
-        description = lib.mdDoc ''
+        description = ''
           Open firewall ports for resourcemanager
         '';
       };
     };
     nodemanager = {
-      enable = mkEnableOption (lib.mdDoc "Hadoop YARN NodeManager");
+      enable = mkEnableOption "Hadoop YARN NodeManager";
       inherit restartIfChanged extraFlags extraEnv;
 
       resource = {
         cpuVCores = mkOption {
-          description = lib.mdDoc "Number of vcores that can be allocated for containers.";
+          description = "Number of vcores that can be allocated for containers.";
           type = with types; nullOr ints.positive;
           default = null;
         };
         maximumAllocationVCores = mkOption {
-          description = lib.mdDoc "The maximum virtual CPU cores any container can be allocated.";
+          description = "The maximum virtual CPU cores any container can be allocated.";
           type = with types; nullOr ints.positive;
           default = null;
         };
         memoryMB = mkOption {
-          description = lib.mdDoc "Amount of physical memory, in MB, that can be allocated for containers.";
+          description = "Amount of physical memory, in MB, that can be allocated for containers.";
           type = with types; nullOr ints.positive;
           default = null;
         };
         maximumAllocationMB = mkOption {
-          description = lib.mdDoc "The maximum physical memory any container can be allocated.";
+          description = "The maximum physical memory any container can be allocated.";
           type = with types; nullOr ints.positive;
           default = null;
         };
@@ -72,13 +72,13 @@ in
       useCGroups = mkOption {
         type = types.bool;
         default = true;
-        description = lib.mdDoc ''
+        description = ''
           Use cgroups to enforce resource limits on containers
         '';
       };
 
       localDir = mkOption {
-        description = lib.mdDoc "List of directories to store localized files in.";
+        description = "List of directories to store localized files in.";
         type = with types; nullOr (listOf path);
         example = [ "/var/lib/hadoop/yarn/nm" ];
         default = null;
@@ -87,14 +87,14 @@ in
       addBinBash = mkOption {
         type = types.bool;
         default = true;
-        description = lib.mdDoc ''
+        description = ''
           Add /bin/bash. This is needed by the linux container executor's launch script.
         '';
       };
       openFirewall = mkOption {
         type = types.bool;
         default = false;
-        description = lib.mdDoc ''
+        description = ''
           Open firewall ports for nodemanager.
           Because containers can listen on any ephemeral port, TCP ports 1024–65535 will be opened.
         '';
diff --git a/nixos/modules/services/cluster/k3s/default.nix b/nixos/modules/services/cluster/k3s/default.nix
index dc71f1372d7ae..040cf7640de16 100644
--- a/nixos/modules/services/cluster/k3s/default.nix
+++ b/nixos/modules/services/cluster/k3s/default.nix
@@ -13,12 +13,12 @@ in
 
   # interface
   options.services.k3s = {
-    enable = mkEnableOption (lib.mdDoc "k3s");
+    enable = mkEnableOption "k3s";
 
     package = mkPackageOption pkgs "k3s" { };
 
     role = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Whether k3s should run as a server or agent.
 
         If it's a server:
@@ -38,7 +38,7 @@ in
 
     serverAddr = mkOption {
       type = types.str;
-      description = lib.mdDoc ''
+      description = ''
         The k3s server to connect to.
 
         Servers and agents need to communicate each other. Read
@@ -52,7 +52,7 @@ in
     clusterInit = mkOption {
       type = types.bool;
       default = false;
-      description = lib.mdDoc ''
+      description = ''
         Initialize HA cluster using an embedded etcd datastore.
 
         If this option is `false` and `role` is `server`
@@ -73,7 +73,7 @@ in
 
     token = mkOption {
       type = types.str;
-      description = lib.mdDoc ''
+      description = ''
         The k3s token to use when connecting to a server.
 
         WARNING: This option will expose store your token unencrypted world-readable in the nix store.
@@ -84,12 +84,12 @@ in
 
     tokenFile = mkOption {
       type = types.nullOr types.path;
-      description = lib.mdDoc "File path containing k3s token to use when connecting to the server.";
+      description = "File path containing k3s token to use when connecting to the server.";
       default = null;
     };
 
     extraFlags = mkOption {
-      description = lib.mdDoc "Extra flags to pass to the k3s command.";
+      description = "Extra flags to pass to the k3s command.";
       type = types.str;
       default = "";
       example = "--no-deploy traefik --cluster-cidr 10.24.0.0/16";
@@ -98,12 +98,12 @@ in
     disableAgent = mkOption {
       type = types.bool;
       default = false;
-      description = lib.mdDoc "Only run the server. This option only makes sense for a server.";
+      description = "Only run the server. This option only makes sense for a server.";
     };
 
     environmentFile = mkOption {
       type = types.nullOr types.path;
-      description = lib.mdDoc ''
+      description = ''
         File path containing environment variables for configuring the k3s service in the format of an EnvironmentFile. See systemd.exec(5).
       '';
       default = null;
@@ -112,7 +112,7 @@ in
     configPath = mkOption {
       type = types.nullOr types.path;
       default = null;
-      description = lib.mdDoc "File path containing the k3s YAML config. This is useful when the config is generated (for example on boot).";
+      description = "File path containing the k3s YAML config. This is useful when the config is generated (for example on boot).";
     };
   };
 
diff --git a/nixos/modules/services/cluster/kubernetes/addon-manager.nix b/nixos/modules/services/cluster/kubernetes/addon-manager.nix
index dc851688fbecd..522cb0dd16dae 100644
--- a/nixos/modules/services/cluster/kubernetes/addon-manager.nix
+++ b/nixos/modules/services/cluster/kubernetes/addon-manager.nix
@@ -21,7 +21,7 @@ in
   options.services.kubernetes.addonManager = with lib.types; {
 
     bootstrapAddons = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Bootstrap addons are like regular addons, but they are applied with cluster-admin rights.
         They are applied at addon-manager startup only.
       '';
@@ -43,7 +43,7 @@ in
     };
 
     addons = mkOption {
-      description = lib.mdDoc "Kubernetes addons (any kind of Kubernetes resource can be an addon).";
+      description = "Kubernetes addons (any kind of Kubernetes resource can be an addon).";
       default = { };
       type = attrsOf (either attrs (listOf attrs));
       example = literalExpression ''
@@ -62,7 +62,7 @@ in
       '';
     };
 
-    enable = mkEnableOption (lib.mdDoc "Kubernetes addon manager");
+    enable = mkEnableOption "Kubernetes addon manager";
   };
 
   ###### implementation
diff --git a/nixos/modules/services/cluster/kubernetes/addons/dns.nix b/nixos/modules/services/cluster/kubernetes/addons/dns.nix
index 1c00329e6ccff..f180035270641 100644
--- a/nixos/modules/services/cluster/kubernetes/addons/dns.nix
+++ b/nixos/modules/services/cluster/kubernetes/addons/dns.nix
@@ -12,10 +12,10 @@ let
   };
 in {
   options.services.kubernetes.addons.dns = {
-    enable = mkEnableOption (lib.mdDoc "kubernetes dns addon");
+    enable = mkEnableOption "kubernetes dns addon";
 
     clusterIp = mkOption {
-      description = lib.mdDoc "Dns addon clusterIP";
+      description = "Dns addon clusterIP";
 
       # this default is also what kubernetes users
       default = (
@@ -31,19 +31,19 @@ in {
     };
 
     clusterDomain = mkOption {
-      description = lib.mdDoc "Dns cluster domain";
+      description = "Dns cluster domain";
       default = "cluster.local";
       type = types.str;
     };
 
     replicas = mkOption {
-      description = lib.mdDoc "Number of DNS pod replicas to deploy in the cluster.";
+      description = "Number of DNS pod replicas to deploy in the cluster.";
       default = 2;
       type = types.int;
     };
 
     reconcileMode = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Controls the addon manager reconciliation mode for the DNS addon.
 
         Setting reconcile mode to EnsureExists makes it possible to tailor DNS behavior by editing the coredns ConfigMap.
@@ -55,7 +55,7 @@ in {
     };
 
     coredns = mkOption {
-      description = lib.mdDoc "Docker image to seed for the CoreDNS container.";
+      description = "Docker image to seed for the CoreDNS container.";
       type = types.attrs;
       default = {
         imageName = "coredns/coredns";
@@ -66,7 +66,7 @@ in {
     };
 
     corefile = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Custom coredns corefile configuration.
 
         See: <https://coredns.io/manual/toc/#configuration>.
diff --git a/nixos/modules/services/cluster/kubernetes/apiserver.nix b/nixos/modules/services/cluster/kubernetes/apiserver.nix
index d5ec1e5e6d263..fe9dacb8b93d5 100644
--- a/nixos/modules/services/cluster/kubernetes/apiserver.nix
+++ b/nixos/modules/services/cluster/kubernetes/apiserver.nix
@@ -31,7 +31,7 @@ in
   options.services.kubernetes.apiserver = with lib.types; {
 
     advertiseAddress = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver IP address on which to advertise the apiserver
         to members of the cluster. This address must be reachable by the rest
         of the cluster.
@@ -41,13 +41,13 @@ in
     };
 
     allowPrivileged = mkOption {
-      description = lib.mdDoc "Whether to allow privileged containers on Kubernetes.";
+      description = "Whether to allow privileged containers on Kubernetes.";
       default = false;
       type = bool;
     };
 
     authorizationMode = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver authorization mode (AlwaysAllow/AlwaysDeny/ABAC/Webhook/RBAC/Node). See
         <https://kubernetes.io/docs/reference/access-authn-authz/authorization/>
       '';
@@ -56,7 +56,7 @@ in
     };
 
     authorizationPolicy = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver authorization policy file. See
         <https://kubernetes.io/docs/reference/access-authn-authz/authorization/>
       '';
@@ -65,7 +65,7 @@ in
     };
 
     basicAuthFile = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver basic authentication file. See
         <https://kubernetes.io/docs/reference/access-authn-authz/authentication>
       '';
@@ -74,7 +74,7 @@ in
     };
 
     bindAddress = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         The IP address on which to listen for the --secure-port port.
         The associated interface(s) must be reachable by the rest
         of the cluster, and by CLI/web clients.
@@ -84,14 +84,14 @@ in
     };
 
     clientCaFile = mkOption {
-      description = lib.mdDoc "Kubernetes apiserver CA file for client auth.";
+      description = "Kubernetes apiserver CA file for client auth.";
       default = top.caFile;
       defaultText = literalExpression "config.${otop.caFile}";
       type = nullOr path;
     };
 
     disableAdmissionPlugins = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes admission control plugins to disable. See
         <https://kubernetes.io/docs/admin/admission-controllers/>
       '';
@@ -99,10 +99,10 @@ in
       type = listOf str;
     };
 
-    enable = mkEnableOption (lib.mdDoc "Kubernetes apiserver");
+    enable = mkEnableOption "Kubernetes apiserver";
 
     enableAdmissionPlugins = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes admission control plugins to enable. See
         <https://kubernetes.io/docs/admin/admission-controllers/>
       '';
@@ -121,25 +121,25 @@ in
 
     etcd = {
       servers = mkOption {
-        description = lib.mdDoc "List of etcd servers.";
+        description = "List of etcd servers.";
         default = ["http://127.0.0.1:2379"];
         type = types.listOf types.str;
       };
 
       keyFile = mkOption {
-        description = lib.mdDoc "Etcd key file.";
+        description = "Etcd key file.";
         default = null;
         type = types.nullOr types.path;
       };
 
       certFile = mkOption {
-        description = lib.mdDoc "Etcd cert file.";
+        description = "Etcd cert file.";
         default = null;
         type = types.nullOr types.path;
       };
 
       caFile = mkOption {
-        description = lib.mdDoc "Etcd ca file.";
+        description = "Etcd ca file.";
         default = top.caFile;
         defaultText = literalExpression "config.${otop.caFile}";
         type = types.nullOr types.path;
@@ -147,63 +147,63 @@ in
     };
 
     extraOpts = mkOption {
-      description = lib.mdDoc "Kubernetes apiserver extra command line options.";
+      description = "Kubernetes apiserver extra command line options.";
       default = "";
       type = separatedString " ";
     };
 
     extraSANs = mkOption {
-      description = lib.mdDoc "Extra x509 Subject Alternative Names to be added to the kubernetes apiserver tls cert.";
+      description = "Extra x509 Subject Alternative Names to be added to the kubernetes apiserver tls cert.";
       default = [];
       type = listOf str;
     };
 
     featureGates = mkOption {
-      description = lib.mdDoc "List set of feature gates";
+      description = "List set of feature gates";
       default = top.featureGates;
       defaultText = literalExpression "config.${otop.featureGates}";
       type = listOf str;
     };
 
     kubeletClientCaFile = mkOption {
-      description = lib.mdDoc "Path to a cert file for connecting to kubelet.";
+      description = "Path to a cert file for connecting to kubelet.";
       default = top.caFile;
       defaultText = literalExpression "config.${otop.caFile}";
       type = nullOr path;
     };
 
     kubeletClientCertFile = mkOption {
-      description = lib.mdDoc "Client certificate to use for connections to kubelet.";
+      description = "Client certificate to use for connections to kubelet.";
       default = null;
       type = nullOr path;
     };
 
     kubeletClientKeyFile = mkOption {
-      description = lib.mdDoc "Key to use for connections to kubelet.";
+      description = "Key to use for connections to kubelet.";
       default = null;
       type = nullOr path;
     };
 
     preferredAddressTypes = mkOption {
-      description = lib.mdDoc "List of the preferred NodeAddressTypes to use for kubelet connections.";
+      description = "List of the preferred NodeAddressTypes to use for kubelet connections.";
       type = nullOr str;
       default = null;
     };
 
     proxyClientCertFile = mkOption {
-      description = lib.mdDoc "Client certificate to use for connections to proxy.";
+      description = "Client certificate to use for connections to proxy.";
       default = null;
       type = nullOr path;
     };
 
     proxyClientKeyFile = mkOption {
-      description = lib.mdDoc "Key to use for connections to proxy.";
+      description = "Key to use for connections to proxy.";
       default = null;
       type = nullOr path;
     };
 
     runtimeConfig = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Api runtime configuration. See
         <https://kubernetes.io/docs/tasks/administer-cluster/cluster-management/>
       '';
@@ -213,7 +213,7 @@ in
     };
 
     storageBackend = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver storage backend.
       '';
       default = "etcd3";
@@ -221,13 +221,13 @@ in
     };
 
     securePort = mkOption {
-      description = lib.mdDoc "Kubernetes apiserver secure port.";
+      description = "Kubernetes apiserver secure port.";
       default = 6443;
       type = int;
     };
 
     apiAudiences = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver ServiceAccount issuer.
       '';
       default = "api,https://kubernetes.default.svc";
@@ -235,7 +235,7 @@ in
     };
 
     serviceAccountIssuer = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver ServiceAccount issuer.
       '';
       default = "https://kubernetes.default.svc";
@@ -243,7 +243,7 @@ in
     };
 
     serviceAccountSigningKeyFile = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Path to the file that contains the current private key of the service
         account token issuer. The issuer will sign issued ID tokens with this
         private key.
@@ -252,7 +252,7 @@ in
     };
 
     serviceAccountKeyFile = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         File containing PEM-encoded x509 RSA or ECDSA private or public keys,
         used to verify ServiceAccount tokens. The specified file can contain
         multiple keys, and the flag can be specified multiple times with
@@ -263,7 +263,7 @@ in
     };
 
     serviceClusterIpRange = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         A CIDR notation IP range from which to assign service cluster IPs.
         This must not overlap with any IP ranges assigned to nodes for pods.
       '';
@@ -272,19 +272,19 @@ in
     };
 
     tlsCertFile = mkOption {
-      description = lib.mdDoc "Kubernetes apiserver certificate file.";
+      description = "Kubernetes apiserver certificate file.";
       default = null;
       type = nullOr path;
     };
 
     tlsKeyFile = mkOption {
-      description = lib.mdDoc "Kubernetes apiserver private key file.";
+      description = "Kubernetes apiserver private key file.";
       default = null;
       type = nullOr path;
     };
 
     tokenAuthFile = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver token authentication file. See
         <https://kubernetes.io/docs/reference/access-authn-authz/authentication>
       '';
@@ -293,7 +293,7 @@ in
     };
 
     verbosity = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Optional glog verbosity level for logging statements. See
         <https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md>
       '';
@@ -302,7 +302,7 @@ in
     };
 
     webhookConfig = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes apiserver Webhook config file. It uses the kubeconfig file format.
         See <https://kubernetes.io/docs/reference/access-authn-authz/webhook/>
       '';
diff --git a/nixos/modules/services/cluster/kubernetes/controller-manager.nix b/nixos/modules/services/cluster/kubernetes/controller-manager.nix
index 18c82fc235935..453043e507d97 100644
--- a/nixos/modules/services/cluster/kubernetes/controller-manager.nix
+++ b/nixos/modules/services/cluster/kubernetes/controller-manager.nix
@@ -17,34 +17,34 @@ in
   options.services.kubernetes.controllerManager = with lib.types; {
 
     allocateNodeCIDRs = mkOption {
-      description = lib.mdDoc "Whether to automatically allocate CIDR ranges for cluster nodes.";
+      description = "Whether to automatically allocate CIDR ranges for cluster nodes.";
       default = true;
       type = bool;
     };
 
     bindAddress = mkOption {
-      description = lib.mdDoc "Kubernetes controller manager listening address.";
+      description = "Kubernetes controller manager listening address.";
       default = "127.0.0.1";
       type = str;
     };
 
     clusterCidr = mkOption {
-      description = lib.mdDoc "Kubernetes CIDR Range for Pods in cluster.";
+      description = "Kubernetes CIDR Range for Pods in cluster.";
       default = top.clusterCidr;
       defaultText = literalExpression "config.${otop.clusterCidr}";
       type = str;
     };
 
-    enable = mkEnableOption (lib.mdDoc "Kubernetes controller manager");
+    enable = mkEnableOption "Kubernetes controller manager";
 
     extraOpts = mkOption {
-      description = lib.mdDoc "Kubernetes controller manager extra command line options.";
+      description = "Kubernetes controller manager extra command line options.";
       default = "";
       type = separatedString " ";
     };
 
     featureGates = mkOption {
-      description = lib.mdDoc "List set of feature gates";
+      description = "List set of feature gates";
       default = top.featureGates;
       defaultText = literalExpression "config.${otop.featureGates}";
       type = listOf str;
@@ -53,13 +53,13 @@ in
     kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes controller manager";
 
     leaderElect = mkOption {
-      description = lib.mdDoc "Whether to start leader election before executing main loop.";
+      description = "Whether to start leader election before executing main loop.";
       type = bool;
       default = true;
     };
 
     rootCaFile = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes controller manager certificate authority file included in
         service account's token secret.
       '';
@@ -69,13 +69,13 @@ in
     };
 
     securePort = mkOption {
-      description = lib.mdDoc "Kubernetes controller manager secure listening port.";
+      description = "Kubernetes controller manager secure listening port.";
       default = 10252;
       type = int;
     };
 
     serviceAccountKeyFile = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes controller manager PEM-encoded private RSA key file used to
         sign service account tokens
       '';
@@ -84,19 +84,19 @@ in
     };
 
     tlsCertFile = mkOption {
-      description = lib.mdDoc "Kubernetes controller-manager certificate file.";
+      description = "Kubernetes controller-manager certificate file.";
       default = null;
       type = nullOr path;
     };
 
     tlsKeyFile = mkOption {
-      description = lib.mdDoc "Kubernetes controller-manager private key file.";
+      description = "Kubernetes controller-manager private key file.";
       default = null;
       type = nullOr path;
     };
 
     verbosity = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Optional glog verbosity level for logging statements. See
         <https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md>
       '';
diff --git a/nixos/modules/services/cluster/kubernetes/default.nix b/nixos/modules/services/cluster/kubernetes/default.nix
index a920b6cb12682..89bbedf4d0401 100644
--- a/nixos/modules/services/cluster/kubernetes/default.nix
+++ b/nixos/modules/services/cluster/kubernetes/default.nix
@@ -77,25 +77,25 @@ let
 
   mkKubeConfigOptions = prefix: {
     server = mkOption {
-      description = lib.mdDoc "${prefix} kube-apiserver server address.";
+      description = "${prefix} kube-apiserver server address.";
       type = types.str;
     };
 
     caFile = mkOption {
-      description = lib.mdDoc "${prefix} certificate authority file used to connect to kube-apiserver.";
+      description = "${prefix} certificate authority file used to connect to kube-apiserver.";
       type = types.nullOr types.path;
       default = cfg.caFile;
       defaultText = literalExpression "config.${opt.caFile}";
     };
 
     certFile = mkOption {
-      description = lib.mdDoc "${prefix} client certificate file used to connect to kube-apiserver.";
+      description = "${prefix} client certificate file used to connect to kube-apiserver.";
       type = types.nullOr types.path;
       default = null;
     };
 
     keyFile = mkOption {
-      description = lib.mdDoc "${prefix} client key file used to connect to kube-apiserver.";
+      description = "${prefix} client key file used to connect to kube-apiserver.";
       type = types.nullOr types.path;
       default = null;
     };
@@ -111,7 +111,7 @@ in {
 
   options.services.kubernetes = {
     roles = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Kubernetes role that this machine should take.
 
         Master role will enable etcd, apiserver, scheduler, controller manager
@@ -127,7 +127,7 @@ in {
     kubeconfig = mkKubeConfigOptions "Default kubeconfig";
 
     apiserverAddress = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Clusterwide accessible address for the kubernetes apiserver,
         including protocol and optional port.
       '';
@@ -136,49 +136,49 @@ in {
     };
 
     caFile = mkOption {
-      description = lib.mdDoc "Default kubernetes certificate authority";
+      description = "Default kubernetes certificate authority";
       type = types.nullOr types.path;
       default = null;
     };
 
     dataDir = mkOption {
-      description = lib.mdDoc "Kubernetes root directory for managing kubelet files.";
+      description = "Kubernetes root directory for managing kubelet files.";
       default = "/var/lib/kubernetes";
       type = types.path;
     };
 
     easyCerts = mkOption {
-      description = lib.mdDoc "Automatically setup x509 certificates and keys for the entire cluster.";
+      description = "Automatically setup x509 certificates and keys for the entire cluster.";
       default = false;
       type = types.bool;
     };
 
     featureGates = mkOption {
-      description = lib.mdDoc "List set of feature gates.";
+      description = "List set of feature gates.";
       default = [];
       type = types.listOf types.str;
     };
 
     masterAddress = mkOption {
-      description = lib.mdDoc "Clusterwide available network address or hostname for the kubernetes master server.";
+      description = "Clusterwide available network address or hostname for the kubernetes master server.";
       example = "master.example.com";
       type = types.str;
     };
 
     path = mkOption {
-      description = lib.mdDoc "Packages added to the services' PATH environment variable. Both the bin and sbin subdirectories of each package are added.";
+      description = "Packages added to the services' PATH environment variable. Both the bin and sbin subdirectories of each package are added.";
       type = types.listOf types.package;
       default = [];
     };
 
     clusterCidr = mkOption {
-      description = lib.mdDoc "Kubernetes controller manager and proxy CIDR Range for Pods in cluster.";
+      description = "Kubernetes controller manager and proxy CIDR Range for Pods in cluster.";
       default = "10.1.0.0/16";
       type = types.nullOr types.str;
     };
 
     lib = mkOption {
-      description = lib.mdDoc "Common functions for the kubernetes modules.";
+      description = "Common functions for the kubernetes modules.";
       default = {
         inherit mkCert;
         inherit mkKubeConfig;
@@ -188,7 +188,7 @@ in {
     };
 
     secretsPath = mkOption {
-      description = lib.mdDoc "Default location for kubernetes secrets. Not a store location.";
+      description = "Default location for kubernetes secrets. Not a store location.";
       type = types.path;
       default = cfg.dataDir + "/secrets";
       defaultText = literalExpression ''
diff --git a/nixos/modules/services/cluster/kubernetes/flannel.nix b/nixos/modules/services/cluster/kubernetes/flannel.nix
index dca8996df0831..93a460971055f 100644
--- a/nixos/modules/services/cluster/kubernetes/flannel.nix
+++ b/nixos/modules/services/cluster/kubernetes/flannel.nix
@@ -12,10 +12,10 @@ in
 {
   ###### interface
   options.services.kubernetes.flannel = {
-    enable = mkEnableOption (lib.mdDoc "flannel networking");
+    enable = mkEnableOption "flannel networking";
 
     openFirewallPorts = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Whether to open the Flannel UDP ports in the firewall on all interfaces.'';
       type = types.bool;
       default = true;
diff --git a/nixos/modules/services/cluster/kubernetes/kubelet.nix b/nixos/modules/services/cluster/kubernetes/kubelet.nix
index 313dbe2340182..c841f4e5f1862 100644
--- a/nixos/modules/services/cluster/kubernetes/kubelet.nix
+++ b/nixos/modules/services/cluster/kubernetes/kubelet.nix
@@ -73,17 +73,17 @@ let
   taintOptions = with lib.types; { name, ... }: {
     options = {
       key = mkOption {
-        description = lib.mdDoc "Key of taint.";
+        description = "Key of taint.";
         default = name;
         defaultText = literalMD "Name of this submodule.";
         type = str;
       };
       value = mkOption {
-        description = lib.mdDoc "Value of taint.";
+        description = "Value of taint.";
         type = str;
       };
       effect = mkOption {
-        description = lib.mdDoc "Effect of taint.";
+        description = "Effect of taint.";
         example = "NoSchedule";
         type = enum ["NoSchedule" "PreferNoSchedule" "NoExecute"];
       };
@@ -105,26 +105,26 @@ in
   options.services.kubernetes.kubelet = with lib.types; {
 
     address = mkOption {
-      description = lib.mdDoc "Kubernetes kubelet info server listening address.";
+      description = "Kubernetes kubelet info server listening address.";
       default = "0.0.0.0";
       type = str;
     };
 
     clusterDns = mkOption {
-      description = lib.mdDoc "Use alternative DNS.";
+      description = "Use alternative DNS.";
       default = "10.1.0.1";
       type = str;
     };
 
     clusterDomain = mkOption {
-      description = lib.mdDoc "Use alternative domain.";
+      description = "Use alternative domain.";
       default = config.services.kubernetes.addons.dns.clusterDomain;
       defaultText = literalExpression "config.${options.services.kubernetes.addons.dns.clusterDomain}";
       type = str;
     };
 
     clientCaFile = mkOption {
-      description = lib.mdDoc "Kubernetes apiserver CA file for client authentication.";
+      description = "Kubernetes apiserver CA file for client authentication.";
       default = top.caFile;
       defaultText = literalExpression "config.${otop.caFile}";
       type = nullOr path;
@@ -132,13 +132,13 @@ in
 
     cni = {
       packages = mkOption {
-        description = lib.mdDoc "List of network plugin packages to install.";
+        description = "List of network plugin packages to install.";
         type = listOf package;
         default = [];
       };
 
       config = mkOption {
-        description = lib.mdDoc "Kubernetes CNI configuration.";
+        description = "Kubernetes CNI configuration.";
         type = listOf attrs;
         default = [];
         example = literalExpression ''
@@ -164,28 +164,28 @@ in
       };
 
       configDir = mkOption {
-        description = lib.mdDoc "Path to Kubernetes CNI configuration directory.";
+        description = "Path to Kubernetes CNI configuration directory.";
         type = nullOr path;
         default = null;
       };
     };
 
     containerRuntimeEndpoint = mkOption {
-      description = lib.mdDoc "Endpoint at which to find the container runtime api interface/socket";
+      description = "Endpoint at which to find the container runtime api interface/socket";
       type = str;
       default = "unix:///run/containerd/containerd.sock";
     };
 
-    enable = mkEnableOption (lib.mdDoc "Kubernetes kubelet");
+    enable = mkEnableOption "Kubernetes kubelet";
 
     extraOpts = mkOption {
-      description = lib.mdDoc "Kubernetes kubelet extra command line options.";
+      description = "Kubernetes kubelet extra command line options.";
       default = "";
       type = separatedString " ";
     };
 
     featureGates = mkOption {
-      description = lib.mdDoc "List set of feature gates";
+      description = "List set of feature gates";
       default = top.featureGates;
       defaultText = literalExpression "config.${otop.featureGates}";
       type = listOf str;
@@ -193,20 +193,20 @@ in
 
     healthz = {
       bind = mkOption {
-        description = lib.mdDoc "Kubernetes kubelet healthz listening address.";
+        description = "Kubernetes kubelet healthz listening address.";
         default = "127.0.0.1";
         type = str;
       };
 
       port = mkOption {
-        description = lib.mdDoc "Kubernetes kubelet healthz port.";
+        description = "Kubernetes kubelet healthz port.";
         default = 10248;
         type = port;
       };
     };
 
     hostname = mkOption {
-      description = lib.mdDoc "Kubernetes kubelet hostname override.";
+      description = "Kubernetes kubelet hostname override.";
       defaultText = literalExpression "config.networking.fqdnOrHostName";
       type = str;
     };
@@ -214,61 +214,61 @@ in
     kubeconfig = top.lib.mkKubeConfigOptions "Kubelet";
 
     manifests = mkOption {
-      description = lib.mdDoc "List of manifests to bootstrap with kubelet (only pods can be created as manifest entry)";
+      description = "List of manifests to bootstrap with kubelet (only pods can be created as manifest entry)";
       type = attrsOf attrs;
       default = {};
     };
 
     nodeIp = mkOption {
-      description = lib.mdDoc "IP address of the node. If set, kubelet will use this IP address for the node.";
+      description = "IP address of the node. If set, kubelet will use this IP address for the node.";
       default = null;
       type = nullOr str;
     };
 
     registerNode = mkOption {
-      description = lib.mdDoc "Whether to auto register kubelet with API server.";
+      description = "Whether to auto register kubelet with API server.";
       default = true;
       type = bool;
     };
 
     port = mkOption {
-      description = lib.mdDoc "Kubernetes kubelet info server listening port.";
+      description = "Kubernetes kubelet info server listening port.";
       default = 10250;
       type = port;
     };
 
     seedDockerImages = mkOption {
-      description = lib.mdDoc "List of docker images to preload on system";
+      description = "List of docker images to preload on system";
       default = [];
       type = listOf package;
     };
 
     taints = mkOption {
-      description = lib.mdDoc "Node taints (https://kubernetes.io/docs/concepts/configuration/assign-pod-node/).";
+      description = "Node taints (https://kubernetes.io/docs/concepts/configuration/assign-pod-node/).";
       default = {};
       type = attrsOf (submodule [ taintOptions ]);
     };
 
     tlsCertFile = mkOption {
-      description = lib.mdDoc "File containing x509 Certificate for HTTPS.";
+      description = "File containing x509 Certificate for HTTPS.";
       default = null;
       type = nullOr path;
     };
 
     tlsKeyFile = mkOption {
-      description = lib.mdDoc "File containing x509 private key matching tlsCertFile.";
+      description = "File containing x509 private key matching tlsCertFile.";
       default = null;
       type = nullOr path;
     };
 
     unschedulable = mkOption {
-      description = lib.mdDoc "Whether to set node taint to unschedulable=true as it is the case of node that has only master role.";
+      description = "Whether to set node taint to unschedulable=true as it is the case of node that has only master role.";
       default = false;
       type = bool;
     };
 
     verbosity = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Optional glog verbosity level for logging statements. See
         <https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md>
       '';
diff --git a/nixos/modules/services/cluster/kubernetes/pki.nix b/nixos/modules/services/cluster/kubernetes/pki.nix
index a4b5cb8eda865..5e725df41f438 100644
--- a/nixos/modules/services/cluster/kubernetes/pki.nix
+++ b/nixos/modules/services/cluster/kubernetes/pki.nix
@@ -41,16 +41,16 @@ in
   ###### interface
   options.services.kubernetes.pki = with lib.types; {
 
-    enable = mkEnableOption (lib.mdDoc "easyCert issuer service");
+    enable = mkEnableOption "easyCert issuer service";
 
     certs = mkOption {
-      description = lib.mdDoc "List of certificate specs to feed to cert generator.";
+      description = "List of certificate specs to feed to cert generator.";
       default = {};
       type = attrs;
     };
 
     genCfsslCACert = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Whether to automatically generate cfssl CA certificate and key,
         if they don't exist.
       '';
@@ -59,7 +59,7 @@ in
     };
 
     genCfsslAPICerts = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Whether to automatically generate cfssl API webserver TLS cert and key,
         if they don't exist.
       '';
@@ -68,7 +68,7 @@ in
     };
 
     cfsslAPIExtraSANs = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Extra x509 Subject Alternative Names to be added to the cfssl API webserver TLS cert.
       '';
       default = [];
@@ -77,7 +77,7 @@ in
     };
 
     genCfsslAPIToken = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Whether to automatically generate cfssl API-token secret,
         if they doesn't exist.
       '';
@@ -86,13 +86,13 @@ in
     };
 
     pkiTrustOnBootstrap = mkOption {
-      description = lib.mdDoc "Whether to always trust remote cfssl server upon initial PKI bootstrap.";
+      description = "Whether to always trust remote cfssl server upon initial PKI bootstrap.";
       default = true;
       type = bool;
     };
 
     caCertPathPrefix = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Path-prefrix for the CA-certificate to be used for cfssl signing.
         Suffixes ".pem" and "-key.pem" will be automatically appended for
         the public and private keys respectively.
@@ -103,7 +103,7 @@ in
     };
 
     caSpec = mkOption {
-      description = lib.mdDoc "Certificate specification for the auto-generated CAcert.";
+      description = "Certificate specification for the auto-generated CAcert.";
       default = {
         CN = "kubernetes-cluster-ca";
         O = "NixOS";
@@ -114,7 +114,7 @@ in
     };
 
     etcClusterAdminKubeconfig = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Symlink a kubeconfig with cluster-admin privileges to environment path
         (/etc/\<path\>).
       '';
diff --git a/nixos/modules/services/cluster/kubernetes/proxy.nix b/nixos/modules/services/cluster/kubernetes/proxy.nix
index 015784f7e3116..c09e7695f2a42 100644
--- a/nixos/modules/services/cluster/kubernetes/proxy.nix
+++ b/nixos/modules/services/cluster/kubernetes/proxy.nix
@@ -16,28 +16,28 @@ in
   options.services.kubernetes.proxy = with lib.types; {
 
     bindAddress = mkOption {
-      description = lib.mdDoc "Kubernetes proxy listening address.";
+      description = "Kubernetes proxy listening address.";
       default = "0.0.0.0";
       type = str;
     };
 
-    enable = mkEnableOption (lib.mdDoc "Kubernetes proxy");
+    enable = mkEnableOption "Kubernetes proxy";
 
     extraOpts = mkOption {
-      description = lib.mdDoc "Kubernetes proxy extra command line options.";
+      description = "Kubernetes proxy extra command line options.";
       default = "";
       type = separatedString " ";
     };
 
     featureGates = mkOption {
-      description = lib.mdDoc "List set of feature gates";
+      description = "List set of feature gates";
       default = top.featureGates;
       defaultText = literalExpression "config.${otop.featureGates}";
       type = listOf str;
     };
 
     hostname = mkOption {
-      description = lib.mdDoc "Kubernetes proxy hostname override.";
+      description = "Kubernetes proxy hostname override.";
       default = config.networking.hostName;
       defaultText = literalExpression "config.networking.hostName";
       type = str;
@@ -46,7 +46,7 @@ in
     kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes proxy";
 
     verbosity = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Optional glog verbosity level for logging statements. See
         <https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md>
       '';
diff --git a/nixos/modules/services/cluster/kubernetes/scheduler.nix b/nixos/modules/services/cluster/kubernetes/scheduler.nix
index f31a92f368400..da2f39226a249 100644
--- a/nixos/modules/services/cluster/kubernetes/scheduler.nix
+++ b/nixos/modules/services/cluster/kubernetes/scheduler.nix
@@ -12,21 +12,21 @@ in
   options.services.kubernetes.scheduler = with lib.types; {
 
     address = mkOption {
-      description = lib.mdDoc "Kubernetes scheduler listening address.";
+      description = "Kubernetes scheduler listening address.";
       default = "127.0.0.1";
       type = str;
     };
 
-    enable = mkEnableOption (lib.mdDoc "Kubernetes scheduler");
+    enable = mkEnableOption "Kubernetes scheduler";
 
     extraOpts = mkOption {
-      description = lib.mdDoc "Kubernetes scheduler extra command line options.";
+      description = "Kubernetes scheduler extra command line options.";
       default = "";
       type = separatedString " ";
     };
 
     featureGates = mkOption {
-      description = lib.mdDoc "List set of feature gates";
+      description = "List set of feature gates";
       default = top.featureGates;
       defaultText = literalExpression "config.${otop.featureGates}";
       type = listOf str;
@@ -35,19 +35,19 @@ in
     kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes scheduler";
 
     leaderElect = mkOption {
-      description = lib.mdDoc "Whether to start leader election before executing main loop.";
+      description = "Whether to start leader election before executing main loop.";
       type = bool;
       default = true;
     };
 
     port = mkOption {
-      description = lib.mdDoc "Kubernetes scheduler listening port.";
+      description = "Kubernetes scheduler listening port.";
       default = 10251;
       type = port;
     };
 
     verbosity = mkOption {
-      description = lib.mdDoc ''
+      description = ''
         Optional glog verbosity level for logging statements. See
         <https://github.com/kubernetes/community/blob/master/contributors/devel/logging.md>
       '';
diff --git a/nixos/modules/services/cluster/pacemaker/default.nix b/nixos/modules/services/cluster/pacemaker/default.nix
index 255bb107796f1..005a952e80254 100644
--- a/nixos/modules/services/cluster/pacemaker/default.nix
+++ b/nixos/modules/services/cluster/pacemaker/default.nix
@@ -7,7 +7,7 @@ in
 {
   # interface
   options.services.pacemaker = {
-    enable = mkEnableOption (lib.mdDoc "pacemaker");
+    enable = mkEnableOption "pacemaker";
 
     package = mkPackageOption pkgs "pacemaker" { };
   };
diff --git a/nixos/modules/services/cluster/patroni/default.nix b/nixos/modules/services/cluster/patroni/default.nix
index 5ab016a9f59f0..d1a165603fdaa 100644
--- a/nixos/modules/services/cluster/patroni/default.nix
+++ b/nixos/modules/services/cluster/patroni/default.nix
@@ -12,12 +12,12 @@ in
 {
   options.services.patroni = {
 
-    enable = mkEnableOption (lib.mdDoc "Patroni");
+    enable = mkEnableOption "Patroni";
 
     postgresqlPackage = mkOption {
       type = types.package;
       example = literalExpression "pkgs.postgresql_14";
-      description = mdDoc ''
+      description = ''
         PostgreSQL package to use.
         Plugins can be enabled like this `pkgs.postgresql_14.withPackages (p: [ p.pg_safeupdate p.postgis ])`.
       '';
@@ -28,7 +28,7 @@ in
       defaultText = literalExpression ''"/var/lib/postgresql/''${config.services.patroni.postgresqlPackage.psqlSchema}"'';
       example = "/var/lib/postgresql/14";
       default = "/var/lib/postgresql/${cfg.postgresqlPackage.psqlSchema}";
-      description = mdDoc ''
+      description = ''
         The data directory for PostgreSQL. If left as the default value
         this directory will automatically be created before the PostgreSQL server starts, otherwise
         the sysadmin is responsible for ensuring the directory exists with appropriate ownership
@@ -39,7 +39,7 @@ in
     postgresqlPort = mkOption {
       type = types.port;
       default = 5432;
-      description = mdDoc ''
+      description = ''
         The port on which PostgreSQL listens.
       '';
     };
@@ -48,7 +48,7 @@ in
       type = types.str;
       default = defaultUser;
       example = "postgres";
-      description = mdDoc ''
+      description = ''
         The user for the service. If left as the default value this user will automatically be created,
         otherwise the sysadmin is responsible for ensuring the user exists.
       '';
@@ -58,7 +58,7 @@ in
       type = types.str;
       default = defaultGroup;
       example = "postgres";
-      description = mdDoc ''
+      description = ''
         The group for the service. If left as the default value this group will automatically be created,
         otherwise the sysadmin is responsible for ensuring the group exists.
       '';
@@ -67,7 +67,7 @@ in
     dataDir = mkOption {
       type = types.path;
       default = "/var/lib/patroni";
-      description = mdDoc ''
+      description = ''
         Folder where Patroni data will be written, used by Raft as well if enabled.
       '';
     };
@@ -75,7 +75,7 @@ in
     scope = mkOption {
       type = types.str;
       example = "cluster1";
-      description = mdDoc ''
+      description = ''
         Cluster name.
       '';
     };
@@ -83,7 +83,7 @@ in
     name = mkOption {
       type = types.str;
       example = "node1";
-      description = mdDoc ''
+      description = ''
         The name of the host. Must be unique for the cluster.
       '';
     };
@@ -91,7 +91,7 @@ in
     namespace = mkOption {
       type = types.str;
       default = "/service";
-      description = mdDoc ''
+      description = ''
         Path within the configuration store where Patroni will keep information about the cluster.
       '';
     };
@@ -99,7 +99,7 @@ in
     nodeIp = mkOption {
       type = types.str;
       example = "192.168.1.1";
-      description = mdDoc ''
+      description = ''
         IP address of this node.
       '';
     };
@@ -107,7 +107,7 @@ in
     otherNodesIps = mkOption {
       type = types.listOf types.str;
       example = [ "192.168.1.2" "192.168.1.3" ];
-      description = mdDoc ''
+      description = ''
         IP addresses of the other nodes.
       '';
     };
@@ -115,7 +115,7 @@ in
     restApiPort = mkOption {
       type = types.port;
       default = 8008;
-      description = mdDoc ''
+      description = ''
         The port on Patroni's REST api listens.
       '';
     };
@@ -123,7 +123,7 @@ in
     raft = mkOption {
       type = types.bool;
       default = false;
-      description = mdDoc ''
+      description = ''
         This will configure Patroni to use its own RAFT implementation instead of using a dedicated DCS.
       '';
     };
@@ -131,7 +131,7 @@ in
     raftPort = mkOption {
       type = types.port;
       default = 5010;
-      description = mdDoc ''
+      description = ''
         The port on which RAFT listens.
       '';
     };
@@ -139,7 +139,7 @@ in
     softwareWatchdog = mkOption {
       type = types.bool;
       default = false;
-      description = mdDoc ''
+      description = ''
         This will configure Patroni to use the software watchdog built into the Linux kernel
         as described in the [documentation](https://patroni.readthedocs.io/en/latest/watchdog.html#setting-up-software-watchdog-on-linux).
       '';
@@ -148,7 +148,7 @@ in
     settings = mkOption {
       type = format.type;
       default = { };
-      description = mdDoc ''
+      description = ''
         The primary patroni configuration. See the [documentation](https://patroni.readthedocs.io/en/latest/SETTINGS.html)
         for possible values.
         Secrets should be passed in by using the `environmentFiles` option.
@@ -162,7 +162,7 @@ in
         PATRONI_REPLICATION_PASSWORD = "/secret/file";
         PATRONI_SUPERUSER_PASSWORD = "/secret/file";
       };
-      description = mdDoc "Environment variables made available to Patroni as files content, useful for providing secrets from files.";
+      description = "Environment variables made available to Patroni as files content, useful for providing secrets from files.";
     };
   };
 
diff --git a/nixos/modules/services/cluster/spark/default.nix b/nixos/modules/services/cluster/spark/default.nix
index b3e1ac399ae9f..7a3f768471c21 100644
--- a/nixos/modules/services/cluster/spark/default.nix
+++ b/nixos/modules/services/cluster/spark/default.nix
@@ -7,16 +7,16 @@ with lib;
   options = {
     services.spark = {
       master = {
-        enable = mkEnableOption (lib.mdDoc "Spark master service");
+        enable = mkEnableOption "Spark master service";
         bind = mkOption {
           type = types.str;
-          description = lib.mdDoc "Address the spark master binds to.";
+          description = "Address the spark master binds to.";
           default = "127.0.0.1";
           example = "0.0.0.0";
         };
         restartIfChanged  = mkOption {
           type = types.bool;
-          description = lib.mdDoc ''
+          description = ''
             Automatically restart master service on config change.
             This can be set to false to defer restarts on clusters running critical applications.
             Please consider the security implications of inadvertently running an older version,
@@ -26,7 +26,7 @@ with lib;
         };
         extraEnvironment = mkOption {
           type = types.attrsOf types.str;
-          description = lib.mdDoc "Extra environment variables to pass to spark master. See spark-standalone documentation.";
+          description = "Extra environment variables to pass to spark master. See spark-standalone documentation.";
           default = {};
           example = {
             SPARK_MASTER_WEBUI_PORT = 8181;
@@ -35,20 +35,20 @@ with lib;
         };
       };
       worker = {
-        enable = mkEnableOption (lib.mdDoc "Spark worker service");
+        enable = mkEnableOption "Spark worker service";
         workDir = mkOption {
           type = types.path;
-          description = lib.mdDoc "Spark worker work dir.";
+          description = "Spark worker work dir.";
           default = "/var/lib/spark";
         };
         master = mkOption {
           type = types.str;
-          description = lib.mdDoc "Address of the spark master.";
+          description = "Address of the spark master.";
           default = "127.0.0.1:7077";
         };
         restartIfChanged  = mkOption {
           type = types.bool;
-          description = lib.mdDoc ''
+          description = ''
             Automatically restart worker service on config change.
             This can be set to false to defer restarts on clusters running critical applications.
             Please consider the security implications of inadvertently running an older version,
@@ -58,7 +58,7 @@ with lib;
         };
         extraEnvironment = mkOption {
           type = types.attrsOf types.str;
-          description = lib.mdDoc "Extra environment variables to pass to spark worker.";
+          description = "Extra environment variables to pass to spark worker.";
           default = {};
           example = {
             SPARK_WORKER_CORES = 5;
@@ -68,13 +68,13 @@ with lib;
       };
       confDir = mkOption {
         type = types.path;
-        description = lib.mdDoc "Spark configuration directory. Spark will use the configuration files (spark-defaults.conf, spark-env.sh, log4j.properties, etc) from this directory.";
+        description = "Spark configuration directory. Spark will use the configuration files (spark-defaults.conf, spark-env.sh, log4j.properties, etc) from this directory.";
         default = "${cfg.package}/conf";
         defaultText = literalExpression ''"''${package}/conf"'';
       };
       logDir = mkOption {
         type = types.path;
-        description = lib.mdDoc "Spark log directory.";
+        description = "Spark log directory.";
         default = "/var/log/spark";
       };
       package = mkPackageOption pkgs "spark" {