Commit 9ed72a85 authored by Robert Hensing's avatar Robert Hensing
Browse files

nixos/documentation/modular-services: init

Render documentation for modular services.
https://nixos.org/manual/nixos/unstable/#modular-services

This is admittedly not a great solution, but it is a rather simple
solution that we can use until we develop a proper one.

Flaws:
- These are rendered in the NixOS documentation, but modular services
  are not meant to be exclusive to NixOS.
- They are rendered as NixOS options, but should be imported into
  service submodules.

Benefits:
- Simple
- search.nixos.org integration for free
parent 403a5182
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
/**
  Renders documentation for modular services.
  For inclusion into documentation.nixos.extraModules.
*/
{ lib, pkgs, ... }:
let
  /**
    Causes a modular service's docs to be rendered.
    This is an intermediate solution until we have "native" service docs in some nicer form.
  */
  fakeSubmodule =
    module:
    lib.mkOption {
      type = lib.types.submoduleWith {
        modules = [ module ];
      };
      description = "This is a [modular service](https://nixos.org/manual/nixos/unstable/#modular-services), which can be imported into a NixOS configuration using the [`system.services`](https://search.nixos.org/options?channel=unstable&show=system.services&query=modular+service) option.";
    };

  modularServicesModule = {
    _file = "${__curPos.file}:${toString __curPos.line}";
    options = {
      "<imports = [ pkgs.ghostunnel.services.default ]>" = fakeSubmodule pkgs.ghostunnel.services.default;
    };
  };
in
{
  documentation.nixos.extraModules = [
    modularServicesModule
  ];
}
+1 −0
Original line number Diff line number Diff line
@@ -139,6 +139,7 @@
  ./misc/assertions.nix
  ./misc/crashdump.nix
  ./misc/documentation.nix
  ./misc/documentation/modular-services.nix
  ./misc/extra-arguments.nix
  ./misc/ids.nix
  ./misc/label.nix