summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-05-14 17:30:55 -0700
committerWilliam A. Kennington III <william@wkennington.com>2015-05-14 17:58:30 -0700
commit3a5e10e37f297e3df0da656d08ea211aa9e1187a (patch)
treed6ef8d3829b59d13575ec358265283f4efd65a69
parent1e517dbd45bbb0968a2917dd97a4cf4a93574ba5 (diff)
downloadnixlib-3a5e10e37f297e3df0da656d08ea211aa9e1187a.tar
nixlib-3a5e10e37f297e3df0da656d08ea211aa9e1187a.tar.gz
nixlib-3a5e10e37f297e3df0da656d08ea211aa9e1187a.tar.bz2
nixlib-3a5e10e37f297e3df0da656d08ea211aa9e1187a.tar.lz
nixlib-3a5e10e37f297e3df0da656d08ea211aa9e1187a.tar.xz
nixlib-3a5e10e37f297e3df0da656d08ea211aa9e1187a.tar.zst
nixlib-3a5e10e37f297e3df0da656d08ea211aa9e1187a.zip
buildGoPackage: Support adding extra sources
-rw-r--r--pkgs/development/go-modules/generic/default.nix19
1 files changed, 18 insertions, 1 deletions
diff --git a/pkgs/development/go-modules/generic/default.nix b/pkgs/development/go-modules/generic/default.nix
index 76828784a9d5..fce307e063c5 100644
--- a/pkgs/development/go-modules/generic/default.nix
+++ b/pkgs/development/go-modules/generic/default.nix
@@ -5,7 +5,14 @@
 # Go import path of the package
 , goPackagePath
 
-, meta ? {}, ... } @ args:
+# Extra sources to include in the gopath
+, extraSrcs ? [ ]
+
+, meta ? {}, ... } @ args':
+
+let
+  args = lib.filterAttrs (name: _: name != "extraSrcs") args';
+in
 
 go.stdenv.mkDerivation ( args // {
   name = "go${go.meta.branch}-${name}";
@@ -14,10 +21,20 @@ go.stdenv.mkDerivation ( args // {
   configurePhase = args.configurePhase or ''
     runHook preConfigure
 
+    # Extract the source
     cd "$NIX_BUILD_TOP"
     mkdir -p "go/src/$(dirname "$goPackagePath")"
     mv "$sourceRoot" "go/src/$goPackagePath"
 
+  '' + lib.flip lib.concatMapStrings extraSrcs ({ src, goPackagePath }: ''
+    mkdir extraSrc
+    (cd extraSrc; unpackFile "${src}")
+    mkdir -p "go/src/$(dirname "${goPackagePath}")"
+    chmod -R u+w extraSrc/*
+    mv extraSrc/* "go/src/${goPackagePath}"
+    rmdir extraSrc
+
+  '') + ''
     GOPATH=$NIX_BUILD_TOP/go:$GOPATH
 
     runHook postConfigure