summary refs log tree commit diff
path: root/pkgs/applications/misc/perkeep/default.nix
blob: 9ecf0da58067e4cdeb1b4bdc543f4673b9924fe3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
{ stdenv, go, fetchzip, git, fetchFromGitHub, fetchgit }:

# When perkeep is updated all deps in the let block should be removed
let
  gopherjs = fetchFromGitHub {
    owner = "gopherjs";
    repo = "gopherjs";
    # Rev matching https://github.com/perkeep/perkeep/commit/2e46fca5cc1179dbd90bec49fec3870e6eca6c45
    rev = "b40cd48c38f9a18eb3db20d163bad78de12cf0b7";
    sha256 = "0kniz8dg5bymb03qriizza1h3gpymf97vsgq9vd222282pdj0vyc";
  };

  gotool = fetchFromGitHub {
    owner = "kisielk";
    repo = "gotool";
    rev = "80517062f582ea3340cd4baf70e86d539ae7d84d";
    sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
  };

  gcimporter15 = fetchgit {
    url = "https://go.googlesource.com/tools";
    rev = "f8f2f88271bf2c23f28a09d288d26507a9503c97";
    sha256 = "1pchwizx1sdli59g8r0p4djfjkchcvh8msfpp3ibvz3xl250jh0n";
  };

in
stdenv.mkDerivation rec {
  name = "perkeep-${version}";
  version = "20170505";

  src = fetchzip {
    url = "https://perkeep.org/dl/monthly/camlistore-${version}-src.zip";
    sha256 = "1vliyvkyzmhdi6knbh8rdsswmz3h0rpxdpq037jwbdbkjccxjdwa";
  };

  # When perkeep is updated postPatch should be removed
  postPatch = ''
    rm -r ./vendor/github.com/gopherjs/gopherjs/
    cp -a ${gopherjs} ./vendor/github.com/gopherjs/gopherjs
    mkdir -p ./vendor/github.com/kisielk/
    cp -a ${gotool} ./vendor/github.com/kisielk/gotool
    mkdir -p ./vendor/golang.org/x/tools/go
    cp -a ${gcimporter15}/go/gcimporter15 ./vendor/golang.org/x/tools/go/gcimporter15

    substituteInPlace vendor/github.com/gopherjs/gopherjs/build/build.go \
      --replace '"github.com/fsnotify/fsnotify"' 'fsnotify "camlistore.org/pkg/misc/fakefsnotify"'

    substituteInPlace ./make.go \
      --replace "goVersionMinor  = '8'" "goVersionMinor  = '9'" \
      --replace "gopherJSGoMinor = '8'" "gopherJSGoMinor = '9'"
  '';

  buildInputs = [ git go ];

  goPackagePath = "";
  buildPhase = ''
    go run make.go
  '';

  installPhase = ''
    mkdir -p $out/bin
    cp bin/* $out/bin
  '';

  meta = with stdenv.lib; {
    description = "A way of storing, syncing, sharing, modelling and backing up content (née Camlistore)";
    homepage = https://perkeep.org;
    license = licenses.asl20;
    maintainers = with maintainers; [ cstrahan ];
    platforms = platforms.unix;
  };
}