From a1933f6a9d0605cc3de49cd34eec6e47fad0789a Mon Sep 17 00:00:00 2001 From: "(cdep)illabout" Date: Mon, 1 Nov 2021 15:17:28 +0900 Subject: [PATCH] dhallPackages.generateDhallDirectoryPackage: init --- .../generate-dhall-directory-package.nix | 27 +++++++++++++++++++ pkgs/top-level/dhall-packages.nix | 4 +++ 2 files changed, 31 insertions(+) create mode 100644 pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix diff --git a/pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix b/pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix new file mode 100644 index 00000000000..03dfb72d7ab --- /dev/null +++ b/pkgs/development/interpreters/dhall/generate-dhall-directory-package.nix @@ -0,0 +1,27 @@ +{ dhall-nixpkgs, lib, stdenv }: + +# This function calls `dhall-to-nixpkgs directory --fixed-output-derivations` +# within a Nix derivation. +# +# This is possible because +# `dhall-to-nixpkgs directory --fixed-output-derivations` will turn remote +# Dhall imports protected with Dhall integrity checksinto fixed-output +# derivations (with the `buildDhallUrl` function), so no unrestricted network +# access is necessary. +lib.makePackageOverridable + ( { src + , # The file to import, relative to the root directory + file ? "package.dhall" + , # Set to `true` to generate documentation for the package + document ? false + }: + stdenv.mkDerivation { + name = "dhall-directory-package.nix"; + + buildCommand = '' + dhall-to-nixpkgs directory --fixed-output-derivations --file "${file}" "${src}" ${if document then "--document" else ""} > $out + ''; + + nativeBuildInputs = [ dhall-nixpkgs ]; + } + ) diff --git a/pkgs/top-level/dhall-packages.nix b/pkgs/top-level/dhall-packages.nix index 1910cb37274..646f2b7e9d3 100644 --- a/pkgs/top-level/dhall-packages.nix +++ b/pkgs/top-level/dhall-packages.nix @@ -20,6 +20,9 @@ let buildDhallUrl = callPackage ../development/interpreters/dhall/build-dhall-url.nix { }; + generateDhallDirectoryPackage = + callPackage ../development/interpreters/dhall/generate-dhall-directory-package.nix { }; + in { inherit callPackage @@ -27,6 +30,7 @@ let buildDhallGitHubPackage buildDhallDirectoryPackage buildDhallUrl + generateDhallDirectoryPackage ; lib = import ../development/dhall-modules/lib.nix { inherit lib; };