on 19052d8 help sign in
haskell.nix/scripts/options-doc.nix
61 lines 1.4 kB history raw
1{ pkgs ? import <nixpkgs> {}
2, lib ? pkgs.lib
3}:
4let
5 # Provide a dummy pkg-def for the package set function
6 pkg-def = hackage: {
7 packages = {};
8 compiler = {
9 version = "";
10 nix-name = "";
11 packages = {};
12 };
13 };
15 # Apply the package set function to get NixOS options.
16 inherit (import ../package-set.nix { hackage = null; inherit pkgs pkg-def; }) options;
18 optionsNix = (pkgs.nixosOptionsDoc { inherit options; }).optionsNix;
20 optionsMarkdown = lib.concatStringsSep "\n" (lib.mapAttrsToList singleMarkdown optionsNix);
22 singleMarkdown = name: value: ''
23 ## ${name}
25 ${value.description}
27 **Type**: ${value.type}
29 ${ if lib.hasAttr "default" value
30 then ''
31 **Default**: ${builtins.toJSON value.default}
32 ''
33 else "**No Default**"
34 }
35 ${ if value.readOnly
36 then "**Read Only**"
37 else ""
38 }
39 ${ if lib.hasAttr "example" value
40 then ''
41 **Example**:
43 ${builtins.toJSON value.example}
44 ''
45 else "**No Example**"
46 }
48 '';
50in builtins.toFile "options.md" ''
51Haskell.nix modules options for packages and components.
53!!! note "Generated"
54 This documentation is generated from Nix sources in the
55 [`modules`](https://github.com/input-output-hk/haskell.nix/tree/master/modules)
56 subdirectory using `scripts/update-docs.nix`
58# Configuration Options
60${optionsMarkdown}
61''