diff --git a/nixos/modules/config/system-path.nix b/nixos/modules/config/system-path.nix
index d3212d931605..361151665018 100644
--- a/nixos/modules/config/system-path.nix
+++ b/nixos/modules/config/system-path.nix
@@ -109,7 +109,6 @@ in
"/sbin"
"/share/applications"
"/share/desktop-directories"
- "/share/doc"
"/share/emacs"
"/share/icons"
"/share/menus"
diff --git a/nixos/modules/misc/documentation.nix b/nixos/modules/misc/documentation.nix
new file mode 100644
index 000000000000..cea8981370bb
--- /dev/null
+++ b/nixos/modules/misc/documentation.nix
@@ -0,0 +1,77 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let cfg = config.documentation; in
+
+{
+
+ options = {
+
+ documentation = {
+
+ enable = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Whether to install documentation of packages from
+ into the generated system path.
+ '';
+ };
+
+ man.enable = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Whether to install manual pages and the man command.
+ This also includes "man" outputs.
+ '';
+ };
+
+ doc.enable = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Whether to install documentation distributed in packages' /share/doc.
+ Usually plain text and/or HTML.
+ This also includes "doc" outputs.
+ '';
+ };
+
+ info.enable = mkOption {
+ type = types.bool;
+ default = true;
+ description = ''
+ Whether to install info pages and the info command.
+ This also includes "info" outputs.
+ '';
+ };
+
+ };
+
+ };
+
+ config = mkIf cfg.enable (mkMerge [
+
+ (mkIf cfg.man.enable {
+ environment.systemPackages = [ pkgs.man-db ];
+ environment.pathsToLink = [ "/share/man" ];
+ environment.extraOutputsToInstall = [ "man" ];
+ })
+
+ (mkIf cfg.doc.enable {
+ # TODO(@oxij): put it here and remove from profiles?
+ # environment.systemPackages = [ pkgs.w3m ]; # w3m-nox?
+ environment.pathsToLink = [ "/share/doc" ];
+ environment.extraOutputsToInstall = [ "doc" ];
+ })
+
+ (mkIf cfg.info.enable {
+ environment.systemPackages = [ pkgs.texinfoInteractive ];
+ environment.pathsToLink = [ "/share/info" ];
+ environment.extraOutputsToInstall = [ "info" ];
+ })
+
+ ]);
+
+}
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index f23ecc1e99d8..3a8b1014553c 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -58,6 +58,7 @@
./installer/tools/tools.nix
./misc/assertions.nix
./misc/crashdump.nix
+ ./misc/documentation.nix
./misc/extra-arguments.nix
./misc/ids.nix
./misc/lib.nix
@@ -85,12 +86,10 @@
./programs/freetds.nix
./programs/gnupg.nix
./programs/gphoto2.nix
- ./programs/info.nix
./programs/java.nix
./programs/kbdlight.nix
./programs/less.nix
./programs/light.nix
- ./programs/man.nix
./programs/mosh.nix
./programs/mtr.nix
./programs/nano.nix
diff --git a/nixos/modules/profiles/minimal.nix b/nixos/modules/profiles/minimal.nix
index e2497d04252e..40df7063a9bf 100644
--- a/nixos/modules/profiles/minimal.nix
+++ b/nixos/modules/profiles/minimal.nix
@@ -10,10 +10,9 @@ with lib;
# This isn't perfect, but let's expect the user specifies an UTF-8 defaultLocale
i18n.supportedLocales = [ (config.i18n.defaultLocale + "/UTF-8") ];
- services.nixosManual.enable = mkDefault false;
- programs.man.enable = mkDefault false;
- programs.info.enable = mkDefault false;
+ documentation.enable = mkDefault false;
+ services.nixosManual.enable = mkDefault false;
sound.enable = mkDefault false;
}
diff --git a/nixos/modules/programs/info.nix b/nixos/modules/programs/info.nix
deleted file mode 100644
index be6439dca5ad..000000000000
--- a/nixos/modules/programs/info.nix
+++ /dev/null
@@ -1,30 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-{
-
- options = {
-
- programs.info.enable = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Whether to enable info pages and the info command.
- '';
- };
-
- };
-
-
- config = mkIf config.programs.info.enable {
-
- environment.systemPackages = [ pkgs.texinfoInteractive ];
-
- environment.pathsToLink = [ "/info" "/share/info" ];
-
- environment.extraOutputsToInstall = [ "info" ];
-
- };
-
-}
diff --git a/nixos/modules/programs/man.nix b/nixos/modules/programs/man.nix
deleted file mode 100644
index 5b20a38d8856..000000000000
--- a/nixos/modules/programs/man.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-{
-
- options = {
-
- programs.man.enable = mkOption {
- type = types.bool;
- default = true;
- description = ''
- Whether to enable manual pages and the man command.
- This also includes "man" outputs of all systemPackages.
- '';
- };
-
- };
-
-
- config = mkIf config.programs.man.enable {
-
- environment.systemPackages = [ pkgs.man-db ];
-
- environment.pathsToLink = [ "/share/man" ];
-
- environment.extraOutputsToInstall = [ "man" ];
-
- };
-
-}
diff --git a/nixos/modules/rename.nix b/nixos/modules/rename.nix
index 288634343750..6a3c8f43b87b 100644
--- a/nixos/modules/rename.nix
+++ b/nixos/modules/rename.nix
@@ -240,6 +240,10 @@ with lib;
# Xen
(mkRenamedOptionModule [ "virtualisation" "xen" "qemu-package" ] [ "virtualisation" "xen" "package-qemu" ])
+
+ (mkRenamedOptionModule [ "programs" "info" "enable" ] [ "documentation" "info" "enable" ])
+ (mkRenamedOptionModule [ "programs" "man" "enable" ] [ "documentation" "man" "enable" ])
+
] ++ (flip map [ "blackboxExporter" "collectdExporter" "fritzboxExporter"
"jsonExporter" "minioExporter" "nginxExporter" "nodeExporter"
"snmpExporter" "unifiExporter" "varnishExporter" ]
diff --git a/nixos/modules/services/misc/nixos-manual.nix b/nixos/modules/services/misc/nixos-manual.nix
index b8253956d54f..abf506ea7c67 100644
--- a/nixos/modules/services/misc/nixos-manual.nix
+++ b/nixos/modules/services/misc/nixos-manual.nix
@@ -112,10 +112,10 @@ in
system.build.manual = manual;
- environment.systemPackages =
- [ manual.manual helpScript ]
- ++ optionals config.services.xserver.enable [desktopItem pkgs.nixos-icons]
- ++ optional config.programs.man.enable manual.manpages;
+ environment.systemPackages = []
+ ++ optionals config.services.xserver.enable [ desktopItem pkgs.nixos-icons ]
+ ++ optional config.documentation.man.enable manual.manpages
+ ++ optionals config.documentation.doc.enable [ manual.manual helpScript ];
boot.extraTTYs = mkIf cfg.showManual ["tty${toString cfg.ttyNumber}"];