about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix
blob: 0c932396e9e25e0a8c8bd172e8d614d079b9ad61 (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
{ lib, buildGoPackage, fetchFromGitHub, go-bindata, pkgconfig, makeWrapper
, glib, gtk3, libappindicator-gtk3, gpgme, openshift, ostree, libselinux, btrfs-progs
, lvm2, docker-machine-kvm
}:

let
  version = "1.34.0";

  # Update these on version bumps according to Makefile
  centOsIsoVersion = "v1.15.0";
  openshiftVersion = "v3.11.0";

in buildGoPackage rec {
  pname = "minishift";
  inherit version;

  src = fetchFromGitHub {
    owner = "minishift";
    repo = "minishift";
    rev = "v${version}";
    sha256 = "0nc1g4lmz5ww6rjyyanp9vq4sj6fvi9zf9qjc4lpsmapddhjkdy7";
  };

  nativeBuildInputs = [ pkgconfig go-bindata makeWrapper ];
  buildInputs = [ glib gtk3 libappindicator-gtk3 gpgme ostree libselinux btrfs-progs lvm2 ];

  goPackagePath = "github.com/minishift/minishift";
  subPackages = [ "cmd/minishift" ];

  postPatch = ''
    # minishift downloads openshift if not found therefore set the cache to /nix/store/...
    substituteInPlace pkg/minishift/cache/oc_caching.go \
      --replace 'filepath.Join(oc.MinishiftCacheDir, OC_CACHE_DIR, oc.OpenShiftVersion, runtime.GOOS)' '"${openshift}/bin"' \
      --replace '"runtime"' ""
  '';

  buildFlagsArray = ''
    -ldflags=
      -X ${goPackagePath}/pkg/version.minishiftVersion=${version}
      -X ${goPackagePath}/pkg/version.centOsIsoVersion=${centOsIsoVersion}
      -X ${goPackagePath}/pkg/version.openshiftVersion=${openshiftVersion}
  '';

  preBuild = ''
    (cd go/src/github.com/minishift/minishift
      mkdir -p out/bindata
      go-bindata -prefix addons -o out/bindata/addon_assets.go -pkg bindata addons/...)
  '';

  postInstall = ''
    wrapProgram "$out/bin/minishift" \
      --prefix PATH ':' '${lib.makeBinPath [ docker-machine-kvm openshift ]}'
  '';

  meta = with lib; {
    description = "Run OpenShift locally";
    longDescription = ''
      Minishift is a tool that helps you run OpenShift locally by running
      a single-node OpenShift cluster inside a VM. You can try out OpenShift
      or develop with it, day-to-day, on your local host.
    '';
    homepage = "https://github.com/minishift/minishift";
    maintainers = with maintainers; [ fpletz vdemeester ];
    platforms = platforms.linux;
    license = licenses.asl20;
  };
}