aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix')
-rw-r--r--nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix50
1 files changed, 50 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix
new file mode 100644
index 00000000000..9289e9b656d
--- /dev/null
+++ b/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix
@@ -0,0 +1,50 @@
+{ buildDhallPackage, fetchFromGitHub, lib }:
+
+# This function is used by `dhall-to-nixpkgs` when given a GitHub repository
+lib.makeOverridable
+ ( { # Arguments passed through to `buildDhallPackage`
+ name
+ , dependencies ? []
+ , source ? false
+
+ , # The directory containing the Dhall files, if other than the root of the
+ # repository
+ directory ? ""
+ , # The file to import, relative to the above directory
+ file ? "package.dhall"
+
+ # Arguments passed through to `fetchFromGitHub`
+ , owner
+ , repo
+ , rev
+ # Extra arguments passed through to `fetchFromGitHub`, such as the hash
+ # or `fetchSubmodules`
+ , ...
+ }@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}";
+ }
+ )