1
1
Fork 0
mirror of https://github.com/NixOS/nix.git synced 2025-12-10 02:51:02 +01:00

doc: make manpage URLs configurable based on release type

Add configurable documentation URLs that change based on whether this is
an official release or development build:

- Nix builds:
  - Development (officialRelease = false): Use /latest/ URLs
  - Official releases (officialRelease = true): Use versioned URLs with
    MAJOR.MINOR only (e.g., /2.33/ instead of /2.33.0/)
- Plain meson builds: Default to versioned URLs (official-release = true)

Changes:
- Add --doc-url parameter to expand-includes.py
- Add meson option 'official-release' (defaults to true for Meson builds)
- Compute doc_url in meson.build based on version and official-release
- Forward Nix officialRelease variable to Meson in package.nix
- Update render-manpage.sh to pass doc-url parameter

This allows distros (Fedora, etc.) to have stable versioned URLs by default,
while Nix development builds point to /latest/ for up-to-date documentation.
This commit is contained in:
Robert Hensing 2025-12-06 19:53:57 +01:00
parent d007b4e81b
commit cca8b5ca60
5 changed files with 45 additions and 11 deletions

View file

@ -91,7 +91,7 @@ def expand_includes(
return ''.join(lines)
def resolve_docroot(content: str, current_file: Path, source_root: Path) -> str:
def resolve_docroot(content: str, current_file: Path, source_root: Path, docroot_url: str) -> str:
"""
Replace @docroot@ with nix.dev URL and convert .md to .html.
@ -99,10 +99,6 @@ def resolve_docroot(content: str, current_file: Path, source_root: Path) -> str:
manpages are viewed standalone. lowdown will display these as proper
references in the manpage output.
"""
# Use the latest nix.dev documentation URL
# This matches what users would actually want to reference from a manpage
docroot_url = "https://nix.dev/manual/nix/latest"
# Replace @docroot@ with the base URL
content = content.replace("@docroot@", docroot_url)
@ -126,6 +122,7 @@ def process_file(
input_file: Path,
source_root: Path,
generated_root: Path | None,
docroot_url: str,
) -> str:
"""Process a single markdown file."""
content = input_file.read_text()
@ -134,7 +131,7 @@ def process_file(
content = expand_includes(content, input_file, source_root, generated_root)
# Resolve @docroot@ references
content = resolve_docroot(content, input_file, source_root)
content = resolve_docroot(content, input_file, source_root, docroot_url)
# Resolve @_at_ escapes
content = resolve_at_escapes(content)
@ -181,6 +178,12 @@ Examples:
type=Path,
help="Output file (default: stdout)",
)
parser.add_argument(
"-u", "--doc-url",
type=str,
default="https://nix.dev/manual/nix/latest",
help="Base URL for documentation links (default: https://nix.dev/manual/nix/latest)",
)
args = parser.parse_args()
@ -199,7 +202,7 @@ Examples:
try:
# Process the file
output = process_file(args.input_file, args.source_root, args.generated_root)
output = process_file(args.input_file, args.source_root, args.generated_root, args.doc_url)
# Write output
if args.output: