depot/third_party/nixpkgs/pkgs/development/interpreters/dhall/build-dhall-github-package.nix

71 lines
1.5 KiB
Nix

{
buildDhallPackage,
fetchFromGitHub,
lib,
}:
# This function is used by `dhall-to-nixpkgs` when given a GitHub repository
lib.makePackageOverridable (
{
# 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",
# Set to `true` to generate documentation for the package
document ? false,
# Arguments passed through to `fetchFromGitHub`
owner,
repo,
rev,
# Extra arguments passed through to `fetchFromGitHub`, such as the hash
# or `fetchSubmodules`
...
}@args:
let
versionedName = "${name}-${rev}";
src = fetchFromGitHub (
{
name = "${versionedName}-source";
inherit owner repo rev;
}
// removeAttrs args [
"name"
"dependencies"
"document"
"source"
"directory"
"file"
"owner"
"repo"
"rev"
]
);
prefix = lib.optionalString (directory != "") "/${directory}";
in
buildDhallPackage (
{
inherit dependencies source;
name = versionedName;
code = "${src}${prefix}/${file}";
}
// lib.optionalAttrs document {
documentationRoot = "${src}/${prefix}";
baseImportUrl = "https://raw.githubusercontent.com/${owner}/${repo}/${rev}${prefix}";
}
)
)