about summary refs log tree commit diff
path: root/pkgs/servers/serfdom
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2014-02-27 19:11:08 +0100
committerVladimír Čunát <vcunat@gmail.com>2014-02-27 19:18:28 +0100
commit5e091757657b0dea0a0988f47ad1aa45190f238d (patch)
tree50dd5fed81dfa27da9210fa84a2ff209668fd72e /pkgs/servers/serfdom
parent416db1de92304cf683ef1492c409824f54aab1c1 (diff)
downloadnixlib-5e091757657b0dea0a0988f47ad1aa45190f238d.tar
nixlib-5e091757657b0dea0a0988f47ad1aa45190f238d.tar.gz
nixlib-5e091757657b0dea0a0988f47ad1aa45190f238d.tar.bz2
nixlib-5e091757657b0dea0a0988f47ad1aa45190f238d.tar.lz
nixlib-5e091757657b0dea0a0988f47ad1aa45190f238d.tar.xz
nixlib-5e091757657b0dea0a0988f47ad1aa45190f238d.tar.zst
nixlib-5e091757657b0dea0a0988f47ad1aa45190f238d.zip
add serfdom (close #1672)
Diffstat (limited to 'pkgs/servers/serfdom')
-rw-r--r--pkgs/servers/serfdom/default.nix101
1 files changed, 101 insertions, 0 deletions
diff --git a/pkgs/servers/serfdom/default.nix b/pkgs/servers/serfdom/default.nix
new file mode 100644
index 000000000000..13c878888e29
--- /dev/null
+++ b/pkgs/servers/serfdom/default.nix
@@ -0,0 +1,101 @@
+{ stdenv, fetchurl, fetchgit, go, lib }:
+
+let
+  goDeps = [
+    {
+      dir    = "github.com/hashicorp";
+      name   = "serf";
+      rev    = "21113c8207d8e02b7ff738c9be80fcaabf67251d";
+      sha256 = "10lmgb0caffp0x02nriahyfq9p6qkhr8carfq38m8cjxqxs2v0nk";
+    }
+    {
+      dir    = "github.com/armon";
+      name   = "go-metrics";
+      rev    = "8ceaed1d0bc3a25db6e65e79ee4f895013313c17";
+      sha256 = "1yzajmx26br4812m9gz4v7qj6fcmhg4a9jz9l3i20hh2x06srmpg";
+    }
+    {
+      dir    = "github.com/hashicorp";
+      name   = "logutils";
+      rev    = "8e0820fe7ac5eb2b01626b1d99df47c5449eb2d8";
+      sha256 = "184lnn7x1v3xvj6zz1rg9s0252wkkd59kij2iyrrm7y80bym2jys";
+    }
+    {
+      dir    = "github.com/hashicorp";
+      name   = "memberlist";
+      rev    = "825ad4aca57c7323e8dadde149bfdec9d9621ffe";
+      sha256 = "0mm0hm2kncafq5ml58ki7ilh3b47ni0w19n50ilahhhm4lsfry7z";
+    }
+    {
+      dir    = "github.com/ugorji";
+      name   = "go";
+      rev    = "cdeae7b76625959e4164eab9eb303087a794f2cc";
+      sha256 = "0pcjlbhp6vxnksy12rav6c8bvi2v010407l5hibxqdvnampvhlkb";
+    }
+    {
+      dir    = "github.com/mitchellh";
+      name   = "cli";
+      rev    = "69f0b65ce53b27f729b1b807b88dc88007f41dd3";
+      sha256 = "0hnnqd8vg5ca2hglkrj141ba2akdh7crl2lsrgz8d6ipw6asszx3";
+    }
+    {
+      dir    = "github.com/armon";
+      name   = "mdns";
+      rev    = "17be83de467449f38a8395c30534a9cf0c03e5ea";
+      sha256 = "1fhb6vldclgdx9aqqh1gl87cl5sw3nbq9b7mibkljhbk3cdajyxn";
+    }
+    {
+      dir    = "github.com/miekg";
+      name   = "dns";
+      rev    = "5eec7f362c392f0a7eaadea69b13667d665feb82";
+      sha256 = "0irlzhd78qmn3lyfbkxmwajv0mm6jp6x0cg7hb9hyj6d01ynlv09";
+    }
+    {
+      dir    = "github.com/mitchellh";
+      name   = "mapstructure";
+      rev    = "57bb2fa7a7e00b26c80e4c4b0d4f15a210d94039";
+      sha256 = "13lvd5vw8y6h5zl3samkrb7237kk778cky7k7ys1cm46mfd957zy";
+    }
+  ];
+  createGoPathCmds =
+    lib.concatStrings
+      (map (desc:
+            let
+              fetched = fetchgit { url = "https://${desc.dir}/${desc.name}";
+                                   inherit (desc) rev sha256; };
+            in ''
+              mkdir -p $GOPATH/src/${desc.dir}
+              ln -s ${fetched} $GOPATH/src/${desc.dir}/${desc.name}
+            '') goDeps);
+in
+  stdenv.mkDerivation rec {
+    version = "0.4.1";
+    name = "serfdom-${version}";
+
+    src = fetchurl {
+      url = "https://github.com/hashicorp/serf/archive/v${version}.tar.gz";
+      sha256 = "0f4fxhw2r31ks9rs9h3wx9lsymnp8szk0gzggvibwhl2bm6kn6d8";
+    };
+
+    buildInputs = [ go ];
+
+    buildPhase = ''
+      mkdir $TMPDIR/go
+      export GOPATH=$TMPDIR/go
+      ${createGoPathCmds}
+      go build -v -o bin/serf
+    '';
+
+    installPhase = ''
+      ensureDir $out/bin
+      cp bin/serf $out/bin
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Serf is a service discovery and orchestration tool that is decentralized, highly available, and fault tolerant";
+      homepage = http://www.serfdom.io/;
+      license = licenses.mpl20;
+      maintainers = [ maintainers.msackman ];
+      platforms = platforms.linux;
+    };
+  }