+82
-9
nixos/doc/manual/contributing-to-this-manual.chapter.md
+82
-9
nixos/doc/manual/contributing-to-this-manual.chapter.md
······There's also [a convenient development daemon](https://nixos.org/manual/nixpkgs/unstable/#sec-contributing-devmode).+The above instructions don't deal with the appendix of available `configuration.nix` options, and the manual pages related to NixOS. These are built, and written in a different location and in a different format, as explained in the next sections.+The documentation for all the different `configuration.nix` options is automatically generated by reading the `description`s of all the NixOS options defined at `nixos/modules/`. If you want to improve such `description`, find it in the `nixos/modules/` directory, and edit it and open a pull request.-$ man --manpath=result/share/man nixos-rebuild # Replace nixos-rebuild with the command whose manual you edited+If you're on a different architecture that's supported by NixOS (check file `nixos/release.nix` on Nixpkgs' repository) then replace `x86_64-linux` with the architecture. `nix-build` will complain otherwise, but should also tell you which architecture you have + the supported ones.+The manual pages for the tools available in the installation image can be found in Nixpkgs' by running (e.g for `nixos-rebuild`):+Man pages are written in [`mdoc(7)` format](https://mandoc.bsd.lv/man/mdoc.7.html) and should be portable between mandoc and groff for rendering (though minor differences may occur, mandoc and groff seem to have slightly different spacing rules.)+For previewing edited files, you can just run `man --local-file path/to/file.8` and you will see it rendered.+Being written in `mdoc`, these manpages use semantic markup. This file provides a guideline on where to apply which of the semantic elements of `mdoc`.+In any manpage, commands, flags and arguments to the *current* executable should be marked according to their semantics. Commands, flags and arguments passed to *other* executables should not be marked like this and should instead be considered as code examples and marked with `Ql`.+- Use `Cm` to mark literal string arguments, e.g. the `boot` command argument passed to `nixos-rebuild`.+- Optional flags or arguments should be marked with `Op`. This includes optional repeating arguments.+- Mutually exclusive groups of arguments should be enclosed in curly brackets, preferably created with `Bro`/`Brc` blocks.+When an argument is used in an example it should be marked up with `Ar` again to differentiate it from a constant. For example, a command with a `--host name` flag that calls ssh to retrieve the host's local time would signify this thusly:+### Paths, NixOS options, environment variables {#ssec-contributing-nixos-tools-options-and-environment}+Constant paths should be marked with `Pa`, NixOS options with `Va`, and environment variables with `Ev`.+Generated paths, e.g. `result/bin/run-hostname-vm` (where `hostname` is a variable or arguments) should be marked as `Ql` inline literals with their variable components marked appropriately.+- Taking `hostname` from a variable otherwise defined becomes `.Ql result/bin/run- Ns Va hostname Ns -vm`+In free text names and complete invocations of other commands (e.g. `ssh` or `tar -xvf src.tar`) should be marked with `Ic`, fragments of command lines should be marked with `Ql`.+Larger code blocks or those that cannot be shown inline should use indented literal display block markup for their contents, i.e.-If you're on a different architecture that's supported by NixOS (check nixos/release.nix) then replace `x86_64-linux` with the architecture.-`nix-build` will complain otherwise, but should also tell you which architecture you have + the supported ones.+Contents of code blocks may be marked up further, e.g. if they refer to arguments that will be substituted into them:
+1
-1
nixos/doc/manual/default.nix
+1
-1
nixos/doc/manual/default.nix
···
-57
nixos/modules/installer/tools/manpages/README.md
-57
nixos/modules/installer/tools/manpages/README.md
···-Man pages are written in [`mdoc(7)` format](https://mandoc.bsd.lv/man/mdoc.7.html) and should be portable between mandoc and groff for rendering (though minor differences may occur, mandoc and groff seem to have slightly different spacing rules.)-For previewing edited files, you can just run `man -l path/to/file.8` and you will see it rendered.-Being written in `mdoc` these manpages use semantic markup. This file provides a guideline on where to apply which of the semantic elements of `mdoc`.-In any manpage, commands, flags and arguments to the *current* executable should be marked according to their semantics. Commands, flags and arguments passed to *other* executables should not be marked like this and should instead be considered as code examples and marked with `Ql`.-- Use `Cm` to mark literal string arguments, e.g. the `boot` command argument passed to `nixos-rebuild`.-- Optional flags or arguments should be marked with `Op`. This includes optional repeating arguments.-- Mutually exclusive groups of arguments should be enclosed in curly brackets, preferably created with `Bro`/`Brc` blocks.-When an argument is used in an example it should be marked up with `Ar` again to differentiate it from a constant. For example, a command with a `--host name` flag that calls ssh to retrieve the host's local time would signify this thusly:-Constant paths should be marked with `Pa`, NixOS options with `Va`, and environment variables with `Ev`.-Generated paths, e.g. `result/bin/run-hostname-vm` (where `hostname` is a variable or arguments) should be marked as `Ql` inline literals with their variable components marked appropriately.-- Taking `hostname` from a variable otherwise defined becomes `.Ql result/bin/run- Ns Va hostname Ns -vm`-In free text names and complete invocations of other commands (e.g. `ssh` or `tar -xvf src.tar`) should be marked with `Ic`, fragments of command lines should be marked with `Ql`.-Larger code blocks or those that cannot be shown inline should use indented literal display block markup for their contents, i.e.-Contents of code blocks may be marked up further, e.g. if they refer to arguments that will be substituted into them:
+1
-1
nixos/modules/misc/documentation.nix
+1
-1
nixos/modules/misc/documentation.nix
···
+1
-1
nixos/release.nix
+1
-1
nixos/release.nix
···manualHTML = buildFromConfig ({ ... }: { }) (config: config.system.build.manual.manualHTML);manualEpub = (buildFromConfig ({ ... }: { }) (config: config.system.build.manual.manualEpub));-manpages = buildFromConfig ({ ... }: { }) (config: config.system.build.manual.configuration-manual);+nixos-configuration-reference-manpage = buildFromConfig ({ ... }: { }) (config: config.system.build.manual.nixos-configuration-reference-manpage);options = (buildFromConfig ({ ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux;
+1
-1
pkgs/tools/nix/nixos-install-tools/default.nix
+1
-1
pkgs/tools/nix/nixos-install-tools/default.nix