summary refs log tree commit diff
path: root/pkgs/servers/consul/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/consul/default.nix')
-rw-r--r--pkgs/servers/consul/default.nix40
1 files changed, 35 insertions, 5 deletions
diff --git a/pkgs/servers/consul/default.nix b/pkgs/servers/consul/default.nix
index 5282541e2f9..b299981bee2 100644
--- a/pkgs/servers/consul/default.nix
+++ b/pkgs/servers/consul/default.nix
@@ -1,9 +1,18 @@
-{ stdenv, lib, go, fetchgit, fetchhg, fetchbzr, fetchFromGitHub }:
+{ stdenv, lib, go, fetchgit, fetchhg, fetchbzr, fetchFromGitHub , ruby , nodejs
+, bundlerEnv }:
 
 let
-  version = "0.3.0";
+  version = "0.5.0";
+  # `sass` et al
+  gems = bundlerEnv {
+    name = "consul-deps";
+    gemfile = ./Gemfile;
+    lockfile = ./Gemfile.lock;
+    gemset = ./gemset.nix;
+  };
 in
 
+with lib;
 stdenv.mkDerivation {
   name = "consul-${version}";
 
@@ -11,22 +20,43 @@ stdenv.mkDerivation {
     inherit stdenv lib fetchgit fetchhg fetchbzr fetchFromGitHub;
   };
 
-  buildInputs = [ go ];
+  buildInputs = [ go ruby gems nodejs ];
 
   buildPhase = ''
+    # Build consul binary
     export GOPATH=$src
     go build -v -o consul github.com/hashicorp/consul
+
+    # Build ui static files
+    ({
+      cp -r src/github.com/hashicorp/consul/ui .
+      cd ui
+      chmod -R u+w .
+      make dist
+    })
   '';
 
+  outputs = [ "out" "ui" ];
+
   installPhase = ''
-    ensureDir $out/bin
+    # Fix references to go-deps in the binary
+    hash=$(echo $src | sed 's,.*/\([^/-]*\).*,\1,g')
+    xs=$(printf 'x%.0s' $(seq 2 $(echo $hash | wc -c)))
+    sed -i "s,$hash,$xs,g" consul
+
+    # Install consul binary
+    mkdir -p $out/bin
     cp consul $out/bin
+
+    # Install ui static files
+    mkdir -p $ui
+    mv ui/dist/* $ui
   '';
 
   meta = with lib; {
     homepage    = http://www.consul.io/;
     description = "A tool for service discovery, monitoring and configuration";
-    maintainers = with maintainers; [ cstrahan ];
+    maintainers = with maintainers; [ cstrahan wkennington ];
     license     = licenses.mpl20 ;
     platforms   = platforms.unix;
   };