From 3a93fcfd1ef1ac2bcba27cf630fe8e77a89eb17e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Sat, 10 Aug 2019 14:24:11 +0200 Subject: [PATCH 1/3] make-options-doc: expose Nix set --- nixos/lib/make-options-doc/default.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/nixos/lib/make-options-doc/default.nix b/nixos/lib/make-options-doc/default.nix index c22c7500335d..c8f40f7492e2 100644 --- a/nixos/lib/make-options-doc/default.nix +++ b/nixos/lib/make-options-doc/default.nix @@ -88,8 +88,11 @@ let # Convert the list of options into an XML file. optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList); + optionsNix = builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList); + in rec { - # The NixOS options in JSON format. + inherit optionsNix; + optionsJSON = pkgs.runCommand "options.json" { meta.description = "List of NixOS options in JSON format"; } @@ -98,9 +101,7 @@ in rec { dst=$out/share/doc/nixos mkdir -p $dst - cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON - (builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList)))) - } $dst/options.json + cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON optionsNix))} $dst/options.json mkdir -p $out/nix-support echo "file json $dst/options.json" >> $out/nix-support/hydra-build-products From 6cf861c617d6a0a98129bf6c4d54874ff714636b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Sat, 10 Aug 2019 20:07:05 +0200 Subject: [PATCH 2/3] make-options-doc: add asciidoc variant --- nixos/lib/make-options-doc/default.nix | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/nixos/lib/make-options-doc/default.nix b/nixos/lib/make-options-doc/default.nix index c8f40f7492e2..df21d15e6eb6 100644 --- a/nixos/lib/make-options-doc/default.nix +++ b/nixos/lib/make-options-doc/default.nix @@ -90,9 +90,47 @@ let optionsNix = builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList); + # TODO: declarations: link to github + singleAsciiDoc = name: value: '' + == ${name} + + ${value.description} + + [discrete] + === details + + Type:: ${value.type} + ${ if pkgs.lib.hasAttr "default" value + then '' + Default:: + + + ---- + ${builtins.toJSON value.default} + ---- + '' + else "No Default:: {blank}" + } + ${ if value.readOnly + then "Read Only:: {blank}" + else "" + } + ${ if pkgs.lib.hasAttr "example" value + then '' + Example:: + + + ---- + ${builtins.toJSON value.example} + ---- + '' + else "No Example:: {blank}" + } + ''; + in rec { inherit optionsNix; + optionsAsciiDoc = pkgs.lib.concatStringsSep "\n" (pkgs.lib.mapAttrsToList singleAsciiDoc optionsNix); + optionsJSON = pkgs.runCommand "options.json" { meta.description = "List of NixOS options in JSON format"; } From dcd50c0ea03f3a5b028038e06b6b2e1ce7423404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Domen=20Ko=C5=BEar?= Date: Mon, 12 Aug 2019 11:46:53 +0200 Subject: [PATCH 3/3] pkgs.lib -> lib --- nixos/lib/make-options-doc/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos/lib/make-options-doc/default.nix b/nixos/lib/make-options-doc/default.nix index df21d15e6eb6..88e052106a28 100644 --- a/nixos/lib/make-options-doc/default.nix +++ b/nixos/lib/make-options-doc/default.nix @@ -100,7 +100,7 @@ let === details Type:: ${value.type} - ${ if pkgs.lib.hasAttr "default" value + ${ if lib.hasAttr "default" value then '' Default:: + @@ -114,7 +114,7 @@ let then "Read Only:: {blank}" else "" } - ${ if pkgs.lib.hasAttr "example" value + ${ if lib.hasAttr "example" value then '' Example:: + @@ -129,7 +129,7 @@ let in rec { inherit optionsNix; - optionsAsciiDoc = pkgs.lib.concatStringsSep "\n" (pkgs.lib.mapAttrsToList singleAsciiDoc optionsNix); + optionsAsciiDoc = lib.concatStringsSep "\n" (lib.mapAttrsToList singleAsciiDoc optionsNix); optionsJSON = pkgs.runCommand "options.json" { meta.description = "List of NixOS options in JSON format";