about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/interpreters/dhall
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/dhall')
-rw-r--r--nixpkgs/pkgs/development/interpreters/dhall/build-dhall-directory-package.nix15
-rw-r--r--nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix57
-rw-r--r--nixpkgs/pkgs/development/interpreters/dhall/build-dhall-package.nix18
3 files changed, 58 insertions, 32 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-directory-package.nix b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-directory-package.nix
index b4401a85d141..7fe1b46e3a55 100644
--- a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-directory-package.nix
+++ b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-directory-package.nix
@@ -5,7 +5,7 @@
 # the `file`
 #
 # This function is used by `dhall-to-nixpkgs` when given a directory
-lib.makeOverridable
+lib.makePackageOverridable
   ( { # Arguments passed through to `buildDhallPackage`
       name
     , dependencies ? []
@@ -14,12 +14,17 @@ lib.makeOverridable
     , src
     , # The file to import, relative to the root directory
       file ? "package.dhall"
+      # Set to `true` to generate documentation for the package
+    , document ? false
     }:
 
-    buildDhallPackage {
-      inherit name dependencies source;
+    buildDhallPackage
+      ( { inherit name dependencies source;
 
-      code = "${src}/${file}";
-    }
+          code = "${src}/${file}";
+
+        }
+      // lib.optionalAttrs document { documentationRoot = src; }
+      )
   )
 
diff --git a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix
index 9289e9b656d3..0978e47754b9 100644
--- a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix
+++ b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix
@@ -1,7 +1,7 @@
 { buildDhallPackage, fetchFromGitHub, lib }:
 
 # This function is used by `dhall-to-nixpkgs` when given a GitHub repository
-lib.makeOverridable
+lib.makePackageOverridable
   ( { # Arguments passed through to `buildDhallPackage`
       name
     , dependencies ? []
@@ -12,6 +12,8 @@ lib.makeOverridable
       directory ? ""
     , # The file to import, relative to the above directory
       file ? "package.dhall"
+      # Set to `true` to generate documentation for the package
+    , document ? false
 
       # Arguments passed through to `fetchFromGitHub`
     , owner
@@ -22,29 +24,32 @@ lib.makeOverridable
     , ...
     }@args:
 
-    buildDhallPackage {
-      inherit name dependencies source;
-
-      code =
-        let
-          src = fetchFromGitHub ({
-            name = "${name}-source";
-
-            inherit owner repo rev;
-          } // removeAttrs args [
-            "name"
-            "dependencies"
-            "source"
-            "directory"
-            "file"
-            "owner"
-            "repo"
-            "rev"
-          ]);
-
-          prefix = lib.optionalString (directory != "") "${directory}/";
-
-        in
-          "${src}/${prefix}${file}";
-    }
+    let
+      src = fetchFromGitHub ({
+        name = "${name}-source";
+
+        inherit owner repo rev;
+      } // removeAttrs args [
+        "name"
+        "dependencies"
+        "document"
+        "source"
+        "directory"
+        "file"
+        "owner"
+        "repo"
+        "rev"
+      ]);
+
+      prefix = lib.optionalString (directory != "") "${directory}/";
+
+    in
+      buildDhallPackage
+        ( { inherit name dependencies source;
+
+            code = "${src}/${prefix}${file}";
+          }
+        // lib.optionalAttrs document
+          { documentationRoot = "${src}/${prefix}"; }
+        )
   )
diff --git a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-package.nix b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-package.nix
index 9303244eb885..039c50f06937 100644
--- a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-package.nix
+++ b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-package.nix
@@ -1,4 +1,4 @@
-{ dhall, haskell, lib, lndir, runCommand, writeText }:
+{ dhall, dhall-docs, haskell, lib, lndir, runCommand, writeText }:
 
 { name
 
@@ -31,6 +31,12 @@
   # space within the Nix store, but if you set the following `source` option to
   # `true` then the package will also include `source.dhall`.
 , source ? false
+
+  # Directory to generate documentation for (i.e. as the `--input` option to the
+  # `dhall-docs` command.)
+  #
+  # If `null`, then no documentation is generated.
+, documentationRoot ? null
 }:
 
 let
@@ -42,8 +48,12 @@ let
 
   cache = ".cache";
 
+  data = ".local/share";
+
   cacheDhall = "${cache}/dhall";
 
+  dataDhall = "${data}/dhall";
+
   sourceFile = "source.dhall";
 
 in
@@ -71,4 +81,10 @@ in
     echo "missing $SHA_HASH" > $out/binary.dhall
 
     ${lib.optionalString (!source) "rm $out/${sourceFile}"}
+
+    ${lib.optionalString (documentationRoot != null) ''
+    mkdir -p $out/${dataDhall}
+
+    XDG_DATA_HOME=$out/${data} ${dhall-docs}/bin/dhall-docs --input '${documentationRoot}' --output-link $out/docs
+    ''}
   ''