summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/builders/fetchers.xml11
-rw-r--r--pkgs/build-support/fetchgitiles/default.nix10
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 23 insertions, 0 deletions
diff --git a/doc/builders/fetchers.xml b/doc/builders/fetchers.xml
index ff398833491..f07c310dcdf 100644
--- a/doc/builders/fetchers.xml
+++ b/doc/builders/fetchers.xml
@@ -107,6 +107,17 @@ stdenv.mkDerivation {
   </varlistentry>
   <varlistentry>
    <term>
+    <literal>fetchFromGitiles</literal>
+   </term>
+   <listitem>
+    <para>
+     This is used with Gitiles repositories. The arguments expected
+     are similar to fetchgit.
+    </para>
+   </listitem>
+  </varlistentry>
+  <varlistentry>
+   <term>
     <literal>fetchFromBitbucket</literal>
    </term>
    <listitem>
diff --git a/pkgs/build-support/fetchgitiles/default.nix b/pkgs/build-support/fetchgitiles/default.nix
new file mode 100644
index 00000000000..827680992d6
--- /dev/null
+++ b/pkgs/build-support/fetchgitiles/default.nix
@@ -0,0 +1,10 @@
+{ fetchzip, lib }:
+
+{ url, rev, name ? "source", ... } @ args:
+
+fetchzip ({
+  inherit name;
+  url = "${url}/+archive/${rev}.tar.gz";
+  stripRoot = false;
+  meta.homepage = url;
+} // removeAttrs args [ "url" "rev" ]) // { inherit rev; }
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1730e1436cc..856b4a85b73 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -358,6 +358,8 @@ in
 
   fetchFromGitLab = callPackage ../build-support/fetchgitlab {};
 
+  fetchFromGitiles = callPackage ../build-support/fetchgitiles {};
+
   fetchFromRepoOrCz = callPackage ../build-support/fetchrepoorcz {};
 
   fetchNuGet = callPackage ../build-support/fetchnuget { };