71 lines
1.5 KiB
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}";
|
|
}
|
|
)
|
|
)
|