Commit d59907046c42

Vincent Demeester <vincent@sbr.pm>
2020-05-06 06:05:16
pkgs: import nur-packages
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 927d7b6
pkgs/ape/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "ape-${version}";
+  version = "0.4.1";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "vdemeester";
+    repo = "ape";
+    sha256 = "1kh7fi7j65cd8qi5qis38bla4lzbzy0ic18cxcjnd04q1zjqzi2i";
+  };
+  modSha256 = "1zanxsbxhm0dpk2q94fp2rx2x1i8r3j28piz86k3k4vvqnykyvj1";
+
+  meta = {
+    description = "a git mirror *upstream* updater ";
+    homepage = "https://github.com/vdemeester/ape";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/athens/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "athens-${version}";
+  version = "0.5.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/gomods/athens";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "gomods";
+    repo = "athens";
+    sha256 = "1fsvnzw3l1qfvga6r7vfzq1sda9ggdl2ps81v0cqcr9d8ggpgzhc";
+  };
+
+  modSha256 = "1fanb3mhvnldkryz74yarcwl4ma6353mfkivs5hr678g6785srqj";
+
+  meta = {
+    description = "a Go module datastore and proxy";
+    homepage = "https://github.com/godmods/athens";
+    license = lib.licenses.mit;
+  };
+}
pkgs/buildkit/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, lib, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  name = "buildkit${version}";
+  version = "0.7.1";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/moby/buildkit";
+  subPackages = [ "cmd/buildctl" "cmd/buildkitd" ];
+  buildFlagsArray = let t = "${goPackagePath}/version"; in ''
+    -ldflags=
+      -X ${t}.Version=${version}
+  '';
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "moby";
+    repo = "buildkit";
+    sha256 = "048h69ffgmpir2ix9ldi6zrzlwxa5yz3idg5ajspz2dihmzmnwws";
+  };
+
+  meta = {
+    description = "concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit";
+    homepage = https://github.com/moby/buildkit;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/containerd/default.nix
@@ -0,0 +1,69 @@
+{ lib, fetchFromGitHub, buildGoPackage, btrfs-progs, go-md2man, utillinux, pkgconfig, libseccomp }:
+
+with lib;
+rec {
+  containerdGen = { version, sha256 }:
+    buildGoPackage rec {
+      pname = "containerd";
+      name = "${pname}-${version}";
+
+      src = fetchFromGitHub {
+        owner = "containerd";
+        repo = "containerd";
+        rev = "v${version}";
+        sha256 = "${sha256}";
+      };
+
+      goPackagePath = "github.com/containerd/containerd";
+      outputs = [ "bin" "out" "man" ];
+
+      nativeBuildInputs = [ go-md2man utillinux pkgconfig ];
+
+      buildInputs = [ btrfs-progs libseccomp ];
+
+      buildFlags = [ "VERSION=v${version}" ];
+
+      BUILDTAGS = []
+      ++ optional (btrfs-progs == null) "no_btrfs";
+
+      buildPhase = ''
+        cd go/src/${goPackagePath}
+        patchShebangs .
+        make binaries
+      '';
+
+      installPhase = ''
+        for b in bin/*; do
+          install -Dm555 $b $bin/$b
+        done
+
+        make man
+        manRoot="$man/share/man"
+        mkdir -p "$manRoot"
+        for manFile in man/*; do
+          manName="$(basename "$manFile")" # "docker-build.1"
+          number="$(echo $manName | rev | cut -d'.' -f1 | rev)"
+          mkdir -p "$manRoot/man$number"
+          gzip -c "$manFile" > "$manRoot/man$number/$manName.gz"
+        done
+      '';
+
+      meta = {
+        homepage = "https://containerd.io/";
+        description = "A daemon to control runC";
+        license = licenses.asl20;
+        maintainers = with maintainers; [ offline vdemeester ];
+        platforms = platforms.linux;
+      };
+    };
+
+  containerd_1_2 = makeOverridable containerdGen {
+    version = "1.2.13";
+    sha256 = "1rac3iak3jpz57yarxc72bxgxvravwrl0j6s6w2nxrmh2m3kxqzn";
+  };
+
+  containerd_1_3 = makeOverridable containerdGen {
+    version = "1.3.4";
+    sha256 = "0gws6v35sw4xl0rj4wb07sqkw8f5h3zhliv0rrliipbx9mb23yyw";
+  };
+}
pkgs/crc/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+with lib;
+rec {
+  crcGen =
+    { version
+    , sha256
+    , bundle
+    }:
+
+      buildGoPackage rec {
+        pname = "crc";
+        name = "${pname}-${version}";
+
+        src = fetchFromGitHub {
+          owner = "code-ready";
+          repo = "crc";
+          rev = "${version}";
+          sha256 = "${sha256}";
+        };
+
+        goPackagePath = "github.com/code-ready/crc";
+        subPackages = [ "cmd/crc" ];
+        buildFlagsArray = let t = "${goPackagePath}/pkg/crc/version"; in ''
+          -ldflags=
+            -X ${t}.crcVersion=${version}
+            -X ${t}.bundleVersion=${bundle}
+        '';
+
+        meta = with stdenv.lib; {
+          homepage = https://github.com/code-ready/crc;
+          description = "OpenShift 4.x cluster for testing and development purposes";
+          license = licenses.asl20;
+          maintainers = with maintainers; [ vdemeester ];
+        };
+      };
+
+  # bundle is https://storage.googleapis.com/crc-bundle-github-ci/crc_libvirt_4.4.3.zip
+  crc_1_9 = makeOverridable crcGen {
+    version = "1.9.0";
+    sha256 = "1q2jdm847snjj7wqchsik7qpczvx4awgi5rgvw930mm2b635r3aq";
+    bundle = "4.3.10";
+  };
+  crc_1_10 = makeOverridable crcGen {
+    version = "1.10.0";
+    sha256 = "11vy42zb2xzhwsgnz17894gfn03knvp2yr094k3zhly6wkxbwbk3";
+    bundle = "4.4.3";
+  };
+}
pkgs/dep-collector/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "dep-collector-unstable-${version}";
+  version = "2018-11-29";
+  rev = "2377fbc40f81501f2bc09a4e1e359a7ec7c3528e";
+
+  goPackagePath = "github.com/knative/test-infra";
+  subPackages = [ "tools/dep-collector" ];
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/knative/test-infra";
+    sha256 = "053iazdfhqdb69knnpd2w5ikbyffp3ygvvdvvg253fwgk9s97jyj";
+  };
+
+  meta = {
+    description = "Gathers the set of licenses for Go imports pulled in via dep.";
+    homepage = https://github.com/mattmoor/dep-collector;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/dep-collector/deps.nix
@@ -0,0 +1,21 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/google/licenseclassifier";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/licenseclassifier";
+      rev =  "3c8ad1f0b0644b6646210ee9cf2f34ff907e2e18";
+      sha256 = "0ndfsqn2qx8vhgdwkw70dj0y4sj45rifs3865lqx36gxknns6jpw";
+    };
+  }
+  {
+    goPackagePath  = "github.com/sergi/go-diff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sergi/go-diff";
+      rev =  "1744e2970ca51c86172c8190fadad617561ed6e7";
+      sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7";
+    };
+  }
+]
\ No newline at end of file
pkgs/dobi/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "dobi-${version}";
+  version = "0.12.0";
+  rev = "v${version}";
+
+  buildFlagsArray = let t = "${goPackagePath}/cmd"; in ''
+    -ldflags=
+       -X ${t}.gitsha=${rev}
+       -X ${t}.buildDate=unknown
+  '';
+  goPackagePath = "github.com/dnephin/dobi";
+  excludedPackages = "docs";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "dnephin";
+    repo = "dobi";
+    sha256 = "0jrq032vzpv2pgdfhagcg01xwfkpsp9j769j54pjvc2mnxmc1cpj";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    description = "A build automation tool for Docker applications";
+    homepage = https://dnephin.github.io/dobi/;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/dobi/deps.nix
@@ -0,0 +1,327 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/Azure/go-ansiterm";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Azure/go-ansiterm";
+      rev =  "d6e3b3328b783f23731bc4d058875b0371ff8109";
+      sha256 = "010khrkhkf9cxlvvb6ncqv4c1qcdmpbz9jn38g4fxf4xsma8xx1q";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Microsoft/go-winio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Microsoft/go-winio";
+      rev =  "7da180ee92d8bd8bb8c37fc560e673e6557c392f";
+      sha256 = "19gjjhmzswhm11wzj38r5alxypmflmy0z42flhc3czhmmwv7b1av";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Nvveen/Gotty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ijc/Gotty";
+      rev =  "a8b993ba6abdb0e0c12b0125c603323a71c7790c";
+      sha256 = "03fablbhvksc40l5jkzipqi2x90rq0awl29vbkbqdsf8iwn52f17";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Unknwon/com";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Unknwon/com";
+      rev =  "0db4a625e949e956314d7d1adea9bf82384cc10c";
+      sha256 = "09idg84jf8wx3aazgm9s392cxjz3afq41923y19hhx7ki19s49yh";
+    };
+  }
+  {
+    goPackagePath  = "github.com/containerd/continuity";
+    fetch = {
+      type = "git";
+      url = "https://github.com/containerd/continuity";
+      rev =  "3e8f2ea4b190484acb976a5b378d373429639a1a";
+      sha256 = "1zq8q2g1ik9pxqz5gqjjjig2fhssa9yi407bsmpbmrczw0274925";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dnephin/configtf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dnephin/configtf";
+      rev =  "6b0d1fdf5e68504061777fe78693fba1b40aef85";
+      sha256 = "0qbcpq2vqm8wws3ixb25z9dz5v4n62w8m10vhy68vvblsp46x2jp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dnephin/go-os-user";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dnephin/go-os-user";
+      rev =  "44e2994deb1ed3c8bf21e28cbd5d2e3107b35e0b";
+      sha256 = "0dk122hicmqvkdl7lm099mwsbhb0zrndafm7r9qxvlbffigipx1f";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/cli";
+      rev =  "03a46a66bd0629b5097289c6180e7a72a0efd823";
+      sha256 = "15fb9993p1khyvn4bnn4v9vqrxdxl5v502qr0spqk43sy4ca0cl8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/docker";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/docker";
+      rev =  "38588656727d19f4a36d14c3620ecaff73160315";
+      sha256 = "0nqyr6f8hi326pr8ai4rhgk7482sz14dcn68fx4pab6x5cv557bx";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/go-connections";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/go-connections";
+      rev =  "3ede32e2033de7505e6500d6c868c2b9ed9f169d";
+      sha256 = "0v1pkr8apwmhyzbjfriwdrs1ihlk6pw7izm57r24mf9jdmg3fyb0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/go-units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/go-units";
+      rev =  "0dadbb0345b35ec7ef35e228dabb8de89a65bf52";
+      sha256 = "1sqwvcszxqpv77xf2d8fxvryxphdwj9v8f93231wpnk9kpilhyii";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fsouza/go-dockerclient";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsouza/go-dockerclient";
+      rev =  "eb4b27262d9a41d4004d101c32e0598782a39415";
+      sha256 = "14n3q7fiwdkxw6vlrsi96agnahsvhrjrgk5mp9d7aa6iv577icjz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogits/git-module";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogits/git-module";
+      rev =  "1de103dca47a72afccccb4ccd6085110874f3551";
+      sha256 = "0pblzhzpkyzqrxd0ph4svk07w7a659p5nnr8sa68jgwlxzyp06r2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev =  "6d097162a51e308ecd76eb70b4dbe07344534041";
+      sha256 = "1csg6hczpmndgk0fbnvnzmqpfj6f653wg8s8jdicapy8pkg1b0as";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/mock";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/mock";
+      rev =  "13f360950a79f5864a972c786a10a50e44b69541";
+      sha256 = "1inq0hq9sckpz1rr8j7g8sm3w5kjzpk2xwc5q4n6vsi19cdkrvgk";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev =  "3af367b6b30c263d47e8895973edcca9a49cf029";
+      sha256 = "1fbv0x27k9sn8svafc0hjwsnckk864lv4yi7bvzrxvmd3d5hskds";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath  = "github.com/kballard/go-shellquote";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kballard/go-shellquote";
+      rev =  "cd60e84ee657ff3dc51de0b4f55dd299a3e136f2";
+      sha256 = "1xjpin4jq1zl84dcn96xhjmn9bsfyszf6g9aqyj2dc0xfi6c88y0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mcuadros/go-version";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mcuadros/go-version";
+      rev =  "257f7b9a7d87427c8d7f89469a5958d57f8abd7c";
+      sha256 = "0mpbcc698503hbrlc74l3nqd6hdr0n6vybfzw10pg7qx3cpmn512";
+    };
+  }
+  {
+    goPackagePath  = "github.com/metakeule/fmtdate";
+    fetch = {
+      type = "git";
+      url = "https://github.com/metakeule/fmtdate";
+      rev =  "427373e7d2f8fcaa70a83e289c15fb3618a945bc";
+      sha256 = "1xfcg8vd1z12kvp03arp5rbvrf5717blwippia9c1yxn050a4qwy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opencontainers/go-digest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opencontainers/go-digest";
+      rev =  "279bed98673dd5bef374d3b6e4b09e2af76183bf";
+      sha256 = "01gc7fpn8ax429024p2fcx3yb18axwz5bjf2hqxlii1jbsgw4bh9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opencontainers/image-spec";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opencontainers/image-spec";
+      rev =  "b8fec85fd4e360fc136fc5f137a5ea02872d117a";
+      sha256 = "0rp93mk6isz0yjfa1w77811pn5p2cyzlpvhlz42l4lgb1l39sm84";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opencontainers/runc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opencontainers/runc";
+      rev =  "825b5c020aced5e457fa384bd4bb6927c5f8de56";
+      sha256 = "0n1hqj0f3ppr59c7riz6rg0kn9fsbr45i84ffmsm8z0gndkwfq0y";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "645ef00459ed84a119197bfb8d8205042c6df63d";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/renstrom/dedent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/renstrom/dedent";
+      rev =  "020d11c3b9c0c7a3c2efcc8e5cf5b9ef7bcea21f";
+      sha256 = "0awsnc3hf4n46p388zg0cijh2sk813cyqpqk6f95kbzx9h9gv7lk";
+    };
+  }
+  {
+    goPackagePath  = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev =  "c155da19408a8799da419ed3eeb0cb5db0ad5dbc";
+      sha256 = "0g5z7al7kky11ai2dhac6gkp3b5pxsvx72yj3xg4wg3265gbn7yz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dnephin/cobra";
+      rev =  "5d13e8c9d917d962ffc593fb2529d281ae04a7fd";
+      sha256 = "091pbg3rscj9096iwa5mxmx852xdabdnyffxqgqp6xc02267in9z";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "e57e3eeb33f795204c1ca35f56c44f83227c6e66";
+      sha256 = "13mhx4i913jil32j295m3a36jzvq1y64xig0naadiz7q9ja011r2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/valyala/bytebufferpool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/bytebufferpool";
+      rev =  "e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7";
+      sha256 = "01lqzjddq6kz9v41nkky7wbgk7f1cw036sa7ldz10d82g5klzl93";
+    };
+  }
+  {
+    goPackagePath  = "github.com/valyala/fasttemplate";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/fasttemplate";
+      rev =  "dcecefd839c4193db0d35b88ec65b4c12d360ab0";
+      sha256 = "0kkxn0ad5a36533djh50n9l6wsylmnykridkm91dqlqbjirn7216";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "88942b9c40a4c9d203b82b3731787b672d6e809b";
+      sha256 = "0jw1faq8krcxwf1fv3w75apk1ncnykwg8y5ahs5rasjmspvkv8cw";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "b3756b4b77d7b13260a0a2ec658753cf48922eac";
+      sha256 = "1c6g3cw7ljz6bnwh7sy0pnxjr1ssmzygcsdrgva0kyxzcha5wynq";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "13d03a9a82fba647c21a0ef8fba44a795d0f0835";
+      sha256 = "1lmyd4mk7lbgnxyvr6ndfdfafazp9a4cc6c0a2q2j4n53g2vwbgk";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev =  "6dc17368e09b0e8634d71cac8168d853e869a0c7";
+      sha256 = "1fx4cf5fpdz00g3c7vxzy92hdcg0vh4yqw00qp5s52j72qixynbk";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "3b4ad1db5b2a649883ff3782f5f9f6fb52be71af";
+      sha256 = "05kaxpcbq1mwb4yw4r04gg0y877n85gq4k055v2ss1jc6a2fmv0b";
+    };
+  }
+  {
+    goPackagePath  = "gotest.tools";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gotestyourself/gotest.tools";
+      rev =  "14eefd8766a1439cddfc295ecf6327cb422b4bb2";
+      sha256 = "19iwbpnzh8x1cvpr7dfhp7y50arlpqk4n7zk3yr2vjc1bx5bcq47";
+    };
+  }
+]
\ No newline at end of file
pkgs/envbox/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "envbox-${version}";
+  version = "0.2.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/justone/envbox";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "justone";
+    repo = "envbox";
+    sha256 = "0jryr7czaqdhqq4w7mjmhbpplfflg4b0hgfgyn8jn5l2sd63k70i";
+  };
+
+  meta = {
+    description = "Secure environment variables via secretbox";
+    homepage = "https://github.com/justone/envbox";
+    license = lib.licenses.mit;
+  };
+}
pkgs/esc/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "esc-${version}";
+  version = "0.2.0";
+
+  goPackagePath = "github.com/mjibson/esc";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "mjibson";
+    repo = "esc";
+    sha256 = "0ci3bdm01prm114plcwkgzbqn825lh0zc1iqaw3jicjay5sh0bis";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    description = "A simple file embedder for Go";
+    homepage = "https://github.com/mjibson/esc";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/esc/deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "059132a15dd08d6704c67711dae0cf35ab991756";
+      sha256 = "0bxkbh2rq40kdk8i05am5np77cnskx3571v2k300j5mmj1rl1ijg";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "6d71ab8aade08605ffc36622332264e2f6991952";
+      sha256 = "0vxs5k6dc9rsr99n8ca6sibd8n2ah4j2jr13szpvi22q7kax2fnl";
+    };
+  }
+]
pkgs/fhs/std.nix
@@ -0,0 +1,9 @@
+{ stdenv, lib, buildFHSUserEnv }:
+
+buildFHSUserEnv {
+  name = "fhs-std";
+  targetPkgs = pkgs: with pkgs; [
+    envsubst exa git gnumake coreutils
+  ];
+  runScript = "/bin/bash";
+}
pkgs/go-containerregistry/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, lib, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "go-containerregistry-unstable-${version}";
+  version = "2019-03-10";
+  rev = "8c1640add99804503b4126abc718931a4d93c31a";
+
+  goPackagePath = "github.com/google/go-containerregistry";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/google/go-containerregistry";
+    sha256 = "0xnwqhawgignd3a6lw5f4qnw9mpfr50b8pa5sgnviszcqk7f15fy";
+  };
+
+  goDeps = ./deps.nix;
+  subPackages = [
+    "cmd/crane" "cmd/gcrane"
+  ];
+
+  meta = {
+    description = "Go library and CLIs for working with container registries";
+    homepage = https://github.com/google/go-containerregistry;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/go-containerregistry/deps.nix
@@ -0,0 +1,588 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev =  "aad3f485ee528456e0768f20397b4d9dd941e755";
+      sha256 = "1cgabmg76axkbpm7zip3ym2mym6kwgc9cw9kil0inmckkh3x1ky8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Azure/azure-sdk-for-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Azure/azure-sdk-for-go";
+      rev =  "4e8cbbfb1aeab140cd0fa97fd16b64ee18c3ca6a";
+      sha256 = "14y3h23bbr7s6y9w88f2apij0i6sfbqz91ivnmy8gvyiiczbkc0w";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Azure/go-autorest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Azure/go-autorest";
+      rev =  "dd94e014aaf16d1df746762e392aa201c1b4c461";
+      sha256 = "02n3mxdvplx2dp1wkkq1qjcmyc85a20hkcd03mqb4jba5i1cfxs0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Microsoft/go-winio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Microsoft/go-winio";
+      rev =  "a6d595ae73cf27a1b8fc32930668708f45ce1c85";
+      sha256 = "1plx73f1hm6czcdwcw2sl9xqyq3dnsrd92m2y2yzhcy5y369dijj";
+    };
+  }
+  {
+    goPackagePath  = "github.com/aws/aws-sdk-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/aws/aws-sdk-go";
+      rev =  "e3f7540480e3b9a733845f9fa5d35d7484bac3cd";
+      sha256 = "129iizv2rny2frg36057hayynpsdav53nhj41dia3mi2r6zyalny";
+    };
+  }
+  {
+    goPackagePath  = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev =  "20f5889cbdc3c73dbd2862796665e7c465ade7d1";
+      sha256 = "1w22dfdamsq63b5rvalh9k2y7rbwfkkjs7vm9vd4a13h2ql70lg2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev =  "346938d642f2ec3594ed81d874461961cd0faa76";
+      sha256 = "0d4jfmak5p6lb7n2r6yvf5p1zcw0l8j74kn55ghvr7zr7b7axm6c";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dgrijalva/jwt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgrijalva/jwt-go";
+      rev =  "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e";
+      sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/distribution";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/distribution";
+      rev =  "83389a148052d74ac602f5f1d62f86ff2f3c4aa5";
+      sha256 = "0ypps7340k1g1njcdbn83c9233hrki0mxyj66av1i55ji378ayyn";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/docker";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/docker";
+      rev =  "71cd53e4a197b303c6ba086bd584ffd67a884281";
+      sha256 = "0kjzgpd8palvssj5j9d0yc6wbff2hcrr8d4inp7aiiqv36c5ib5l";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/go-connections";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/go-connections";
+      rev =  "7395e3f8aa162843a74ed6d48e79627d9792ac55";
+      sha256 = "0mv6f6b5nljc17dmwmc28hc0y11pqglz7x0d2mjrwdmfxf64hwqq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/go-units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/go-units";
+      rev =  "47565b4f722fb6ceae66b95f853feed578a4a51c";
+      sha256 = "0npxsb3pp89slwf4a73fxm20hykad8xggij6i6hcd5jy19bjrd93";
+    };
+  }
+  {
+    goPackagePath  = "github.com/evanphx/json-patch";
+    fetch = {
+      type = "git";
+      url = "https://github.com/evanphx/json-patch";
+      rev =  "72bf35d0ff611848c1dc9df0f976c81192392fa5";
+      sha256 = "1yqakqyqspdwpq2dzvrd9rb79z24zmrafscj284dnrl421ns3zvh";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev =  "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev =  "0ca9ea5df5451ffdf184b4428c902747c2c11cd7";
+      sha256 = "0skwmimpy7hlh7pva2slpcplnm912rp3igs98xnqmn859kwa5v8g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev =  "358ee7663966325963d4e8b2e1fbd570c5195153";
+      sha256 = "1zr51xaka7px1pmfndm12fvg6a3cr24kg77j28zczbfcc6h339gy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev =  "636bf0302bc95575d69441b25a2603156ffdddf1";
+      sha256 = "1525pq7r6h3s8dncvq8gxi893p2nq8dxpzvq0nfl5b4p6mq0v1c2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev =  "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev =  "b4deda0973fb4c70b50d226b1af49f3da59f5265";
+      sha256 = "0ya4ha7m20bw048m1159ppqzlvda4x0vdprlbk5sdgmy74h3xcdq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev =  "e89373fe6b4a7413d7acd6da1725b83ef713e6e4";
+      sha256 = "0jlkjjlf8ilifgsb2bv0jfgl4cxl1bypx7a6pjkwz3xf6k8jd7mj";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/go-cmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-cmp";
+      rev =  "3af367b6b30c263d47e8895973edcca9a49cf029";
+      sha256 = "1fbv0x27k9sn8svafc0hjwsnckk864lv4yi7bvzrxvmd3d5hskds";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/gofuzz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/gofuzz";
+      rev =  "24818f796faf91cd76ec7bddd72458fbced7a6c1";
+      sha256 = "0cq90m2lgalrdfrwwyycrrmn785rgnxa3l3vp9yxkvnv88bymmlm";
+    };
+  }
+  {
+    goPackagePath  = "github.com/googleapis/gnostic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/googleapis/gnostic";
+      rev =  "7c663266750e7d82587642f65e60bc4083f1f84e";
+      sha256 = "0yh3ckd7m0r9h50wmxxvba837d0wb1k5yd439zq4p1kpp4390z12";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gregjones/httpcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gregjones/httpcache";
+      rev =  "9cad4c3443a7200dd6400aef47183728de563a38";
+      sha256 = "0wjdwcwqqcx2d5y68qvhg6qyj977il5ijmnn9h9cd6wjbdy0ay6s";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev =  "ef8a98b0bbce4a65b5aa4c368430a80ddc533168";
+      sha256 = "1qalfsc31fra7hcw2lc3s20aj7al62fq3j5fn5kga3mg99b82nyr";
+    };
+  }
+  {
+    goPackagePath  = "github.com/imdario/mergo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imdario/mergo";
+      rev =  "9f23e2d6bd2a77f959b2bf6acdbefd708a83a4a4";
+      sha256 = "1lbzy8p8wv439sqgf0n21q52flf2wbamp6qa1jkyv6an0nc952q7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath  = "github.com/jmespath/go-jmespath";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jmespath/go-jmespath";
+      rev =  "0b12d6b5";
+      sha256 = "1vv6hph8j6xgv7gwl9vvhlsaaqsm22sxxqmgmldi4v11783pc1ld";
+    };
+  }
+  {
+    goPackagePath  = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev =  "ab8a2e0c74be9d3be70b3184d9acc634935ded82";
+      sha256 = "1x3wz44p1238gpyzkiiilvvrq9q8dwjdm9kdidq65yjq0zcn0sq4";
+    };
+  }
+  {
+    goPackagePath  = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev =  "c2353362d570a7bfa228149c62842019201cfb71";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattmoor/dep-notify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattmoor/dep-notify";
+      rev =  "a45dec370a173f35e57abcf844b43eb1d1f988e7";
+      sha256 = "079dvbcyhxilfxcxbvdyir28mjqmw80fhzzqgp9ggxbnw8f7lf7k";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev =  "f15292f7a699fcc1a38a80977f80a046874ba8ac";
+      sha256 = "0zm3nhdvmj3f8q0vg2sjfw1sm3pwsw0ggz501awz95w99664a8al";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev =  "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev =  "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd";
+      sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opencontainers/go-digest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opencontainers/go-digest";
+      rev =  "279bed98673dd5bef374d3b6e4b09e2af76183bf";
+      sha256 = "01gc7fpn8ax429024p2fcx3yb18axwz5bjf2hqxlii1jbsgw4bh9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opencontainers/image-spec";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opencontainers/image-spec";
+      rev =  "d60099175f88c47cd379c4738d158884749ed235";
+      sha256 = "03dvbj3dln8c55v9gp79mgmz2yi2ws3r08iyz2fk41y3i22iaw1q";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev =  "c01d1270ff3e442a8a57cddc1c92dc1138598194";
+      sha256 = "1fjzpcjng60mc3a4b2ql5a00d5gah84wj740dabv9kq67mpg8fxy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/petar/GoLLRB";
+    fetch = {
+      type = "git";
+      url = "https://github.com/petar/GoLLRB";
+      rev =  "53be0d36a84c2a886ca057d34b6aa4468df9ccb4";
+      sha256 = "01xp3lcamqkvl91jg6ly202gdsgf64j39rkrcqxi6v4pbrcv7hz0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/peterbourgon/diskv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/peterbourgon/diskv";
+      rev =  "5f041e8faa004a95c88a202771f4cc3e991971e6";
+      sha256 = "1mxpa5aad08x30qcbffzk80g9540wvbca4blc1r2qyzl65b8929b";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "645ef00459ed84a119197bfb8d8205042c6df63d";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/russross/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/russross/blackfriday";
+      rev =  "55d61fa8aa702f59229e6cff85793c22e580eaf5";
+      sha256 = "0qmavm5d14kj6im6sqzpqnlhpy524428vkn4hnfwknndr9rycmn0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev =  "787d034dfe70e44075ccc060d346146ef53270ad";
+      sha256 = "0138rjiacl71h7kvhzinviwvy6qa2m6rflpv9lgqv15hnjvhwvg1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev =  "8965335b8c7107321228e3e3702cab9832751bac";
+      sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev =  "615425954c3b0d9485a7027d4d451fdcdfdee84e";
+      sha256 = "01zsislgc72j86a1zq7xs7xj3lvxjjviz4lgn4144jzgppwanpk6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev =  "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394";
+      sha256 = "132p84i20b9s5r6fs597lsa6648vd415ch7c0d018vm8smzqpd0h";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "583c0c0531f06d5278b7d917446061adc344b5cd";
+      sha256 = "0nr4mdpfhhk94hq4ymn5b2sxc47b29p1akxd8b0hx4dvdybmipb5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev =  "b5e8006cbee93ec955a89ab31e0e3ce3204f3736";
+      sha256 = "0y3r6ysi5vn0yq5c7pbl62yg2i64fkv54xgj2jf1hn3v6zzyimis";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "c126467f60eb25f8f27e5a981f32a87e3965053f";
+      sha256 = "0xvvzwxqi1dbrnsvq00klx4bnjalf90haf1slnxzrdmbadyp992q";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "32f9bdbd7df18e8641d215e7ea68be88b971feb0";
+      sha256 = "029813r2adh1zfaisqkij4j8h7al4rsjvzkcry05k33rfvmympjd";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev =  "3d292e4d0cdc3a0113e6d207bb137145ef1de42f";
+      sha256 = "0jvivlvx7snacd6abd1prqxa7h1z6b7s6mqahn8lpqlag3asryrl";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev =  "1d60e4601c6fd243af51cc01ddf169918a5407ca";
+      sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "bd9dbc187b6e1dacfdd2722a87e83093c2d7bd6e";
+      sha256 = "0zj8s3q2fznmap1nfr8pv4hz8xqixmkyhr6slq4baf8rvcb4mvbj";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "f21a4dfb5e38f5895301dc265a8def02365cc3d0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev =  "fbb02b2291d28baffd63558aa44b4b56f178d650";
+      sha256 = "0jjqcv6rzihlgg4i797q80g1f6ch5diz2kxqh6488gwkb6nds4h4";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev =  "8149a73649a0118d28e0152493abf048af72e7b1";
+      sha256 = "06p0k5ms65sdbk1hq4pf7248066cxn75g2p08yax7x17k3n1w2f7";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev =  "b1f26356af11148e710935ed1ac8a7f5702c7612";
+      sha256 = "1pz202zszg8f35dk5pfhwgcdi3r6dx1l4yk6x6ly7nb4j45zi96x";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/inf.v0";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-inf/inf";
+      rev =  "d2d2541c53f18d2a059457998ce2876cc8e67cbf";
+      sha256 = "00k5iqjcp371fllqxncv7jkf80hn1zww92zm78cclbcn4ybigkng";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/api";
+      rev =  "4e7be11eab3ffcfc1876898b8272df53785a9504";
+      sha256 = "0klwmkvsnim66y8mvcmkqql12fbr5cja4qgjzp36197i6i335b62";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/apimachinery";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/apimachinery";
+      rev =  "def12e63c512da17043b4f0293f52d1006603d9f";
+      sha256 = "0dghch5avwcy3zx5k005hi71i9bl3603pk927xdjr5jlajzwm9xd";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/client-go";
+      rev =  "2cefa64ff137e128daeddbd1775cd775708a05bf";
+      sha256 = "1gghsq4hwrmzjazkannvpwgmlr9j3hvxc1hicibw64064wrg140w";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/code-generator";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/code-generator";
+      rev =  "8c97d6ab64da020f8b151e9d3ed8af3172f5c390";
+      sha256 = "137ih44qiaaidjw5xk7giqngi0x01awvknb0vrnf60ajq2dy9sdh";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/gengo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/gengo";
+      rev =  "906d99f89cd644eecf75ab547b29bf9f876f0b59";
+      sha256 = "08hcvmn6n02a5yjl9yby1n6ybqf7b4jwzppj0v6rr73hh6w3kfi4";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/kube-openapi";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/kube-openapi";
+      rev =  "e3762e86a74c878ffed47484592986685639c2cd";
+      sha256 = "1n9j08dwnj77iflzj047hrk0zg6nh1m4a5pljjdsvvf3xgka54pz";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/kubernetes";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/kubernetes";
+      rev =  "bf9a868e8ea3d3a8fa53cbb22f566771b3f8068b";
+      sha256 = "1fnd5bddcr4rmh18lx05aim42fr9rvh6p7255vxc8751672mggcs";
+    };
+  }
+]
\ No newline at end of file
pkgs/gogo-protobuf/default.nix
@@ -0,0 +1,27 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+{ stdenv, lib, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "gogo-protobuf-unstable-${version}";
+  version = "2018-09-14";
+  rev = "e14cafb6a2c249986e51c4b65c3206bf18578715";
+
+  goPackagePath = "github.com/gogo/protobuf";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/gogo/protobuf";
+    sha256 = "1q00r1s462xsmw8qc6incvp6m3f39jibjj8syw23jvwiy3vp75a8";
+  };
+
+  goDeps = ./deps.nix;
+  subPackages = [
+    "protoc-gen-combo" "protoc-gen-gofast" "protoc-gen-gogo"
+    "protoc-gen-gogofast" "protoc-gen-gogofaster" "protoc-gen-gogoslick"
+    "protoc-gen-gogotypes" "protoc-gen-gostring" "protoc-min-version"
+  ];
+
+  # TODO: add metadata https://nixos.org/nixpkgs/manual/#sec-standard-meta-attributes
+  meta = {
+  };
+}
pkgs/gogo-protobuf/deps.nix
@@ -0,0 +1,48 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "google.golang.org/grpc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc/grpc-go";
+      rev = "f92cdcd7dcdc69e81b2d7b338479a19a8723cfa3";
+      sha256 = "1li8rn2s4f8qc77npamlm2ijin44scb8vvd8c4cr0l7za2m89jfn";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "1cbadb444a806fd9430d14ad08967ed91da4fa0a";
+      sha256 = "0ih9ysagh4ylj08393497sscf3yziybc6acg4mrh0wa7mld75j56";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "2bba0603135d7d7f5cb73b2125beeda19c09f4ef";
+      sha256 = "1xy0bj66qks2xlzxzlfma16w7m8g6rrwawmlhlv68bcw2k5hvvib";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/genproto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-genproto";
+      rev = "1e559d0a00eef8a9a43151db4665280bd8dd5886";
+      sha256 = "1dfm8zd9mif1aswks79wgyi7n818s5brbdnnrrlg79whfhaf20hd";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "aaf60122140d3fcf75376d319f0554393160eb50";
+      sha256 = "03i6ij7jcf5mp9dc8ps8b63g1k843z7c823qyzn5a276gpxvxlvv";
+    };
+  }
+]
pkgs/goreturns/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "goreturns-unstable-${version}";
+  version = "2018-10-28";
+  rev = "538ac601451833c7c4449f8431d65d53c1c60e41";
+
+  goPackagePath = "github.com/sqs/goreturns";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "sqs";
+    repo = "goreturns";
+    sha256 = "0gcplch8zmcgwl6xvcffxg50g3xnf60n7dlqxgn51179qcjr354p";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    description = "A gofmt/goimports-like tool for Go programmers that fills in Go return statements with zero values to match the func return types";
+    homepage = https://github.com/sqs/goreturns;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/goreturns/deps.nix
@@ -0,0 +1,12 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.3.0
+[
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "6d71ab8aade08605ffc36622332264e2f6991952";
+      sha256 = "0vxs5k6dc9rsr99n8ca6sibd8n2ah4j2jr13szpvi22q7kax2fnl";
+    };
+  }
+]
pkgs/gorun/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "gorun-unstable-${version}";
+  version = "2018-04-08";
+  rev = "85cd5f5e084af0863ed0c3f18c00e64526d1b899";
+
+  goPackagePath = "github.com/erning/gorun";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "erning";
+    repo = "gorun";
+    sha256 = "1hdqimfzpynnpqc7p8m8hkcv9dlfbd8kl22979i6626nq57dvln8";
+  };
+
+  meta = {
+    description = "gorun is a tool enabling one to put a \"bang line\" in the source code of a Go program to run it";
+    homepage = "https://github.com/erning/gorun";
+    license = lib.licenses.gpl3;
+  };
+}
pkgs/govanityurl/default.nix
@@ -0,0 +1,16 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "govanityurl";
+  name = "${pname}-${version}";
+  version = "unstable-2020-04-21";
+  rev = "dc69709ad3d951c32263b4e43029d54e818e7d2b";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "vdemeester";
+    repo = "vanityurl";
+    sha256 = "0birf5y8j9s7s2ycqdx1rl0qivb93bkya4y25yigjyiclcgqp8a4";
+  };
+  modSha256 = "0s99bp9g1rfgrxmh9i94p2h8p68q93fk2799ifxd76r88f0f0hcn";
+}
pkgs/knctl/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "knctl-${version}";
+  version = "0.3.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/cppforlife/knctl";
+  subPackages = [ "cmd/knctl" ];
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "cppforlife";
+    repo = "knctl";
+    sha256 = "1sy6iwcfn26862jwllbzjr47lwz493hjqcfay3sigbl71k8zprin";
+  };
+
+  meta = {
+    description = "Knative CLI";
+    homepage = https://github.com/cppforlife/knctl;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/ko/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "ko";
+  name = "${pname}-${version}";
+  version = "0.5.0";
+
+  goPackagePath = "github.com/google/ko";
+
+  src = fetchFromGitHub {
+    owner = "google";
+    repo = "ko";
+    rev = "v${version}";
+    sha256 = "0vn1znn7490sxfk51z24r8hv09sn40xvvp98v5wr5s7xj7glyrsl";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/google/ko;
+    description = "Build and deploy Go applications on Kubernetes";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ vdemeester ];
+  };
+}
pkgs/krew/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "krew-${version}";
+  version = "0.3.2";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/kubernetes-sigs/krew";
+  subPackages = [ "cmd/krew" ];
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "kubernetes-sigs";
+    repo = "krew";
+    sha256 = "0zn3m1s3h8nghshxy1llzc51ranbyaj3v25zbjwjcq16gpak16i7";
+  };
+  modSha256 = "04w2gqi0q58fj5sz173fcjkgnb1npki4484c35y562j21gvzmc33";
+
+  meta = {
+    description = "The package manager for 'kubectl plugins. ";
+    homepage = "https://github.com/kubernetes-sigs/krew";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/kss/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, python3, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "kss-git";
+
+  src = fetchFromGitHub {
+    owner = "chmouel";
+    repo = "kss";
+    rev = "6d950ead30f2b12b0e4e55530326b8d3b91e999c";
+    sha256 = "1cvq4hm151j0lk2hrxxa11qqa6fidmmvplqrs5kfsfwfljsz339j";
+  };
+  buildInputs = [ python3 ];
+  installPhase = ''
+    substituteInPlace kss --replace \
+        "fileout.write(('#!/usr/bin/env %s\n' % env).encode('utf-8'))" \
+        "fileout.write(('#!%s/bin/%s\n' % (os.environ['python3'], env)).encode('utf-8'))"
+    mkdir -p $out/bin
+    cp kss $out/bin
+    # completions
+    mkdir -p $out/share/zsh/site-functions
+    cp _kss $out/share/zsh/site-functions/
+  '';
+}
pkgs/kubernix/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, rustPlatform }:
+
+rustPlatform.buildRustPackage rec {
+  pname = "kubernix";
+  version = "dev-2020-04-30";
+
+  src = fetchFromGitHub {
+    owner = "saschagrunert";
+    repo = pname;
+    rev = "5a33f33e58cb95fb2673fdba8da244ab1851d585";
+    sha256 = "1kygm3ijpfpy2sypx6kvjg83j7pwy43li55cacifqcwbn4w6sphs";
+  };
+
+  cargoSha256 = "0r1q5mj6znny435jw7ch02srgsb5cb6f2iz8s96n5c5vdz60cyj1";
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Single dependency Kubernetes clusters for local testing, experimenting and development";
+    homepage = https://github.com/saschagrunert/kubernix;
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ saschagrunert ];
+    platforms = platforms.linux;
+  };
+}
pkgs/nr/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "nr-${version}";
+  version = "0.4.0";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "vdemeester";
+    repo = "nr";
+    sha256 = "1n6plmypw6iz0q1gs4i8rwsmkvx0bwgzpzmrr4qirpfpcyb4av2z";
+  };
+  modSha256 = "17cz2gahs1j9vd9nqg36q2q04xq24gd2pyvivxkjhqgmq2fcpl17";
+
+  meta = {
+    description = "a nix run alias generator";
+    homepage = "https://github.com/vdemeester/nr";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/oc/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, lib, fetchurl }:
+
+with lib;
+rec {
+  ocGen =
+    { version
+    , sha256
+    }:
+
+      stdenv.mkDerivation rec {
+        pname = "oc";
+        name = "${pname}-${version}";
+
+        src = fetchurl {
+          url = "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/${version}/openshift-client-linux-${version}.tar.gz";
+          sha256 = "${sha256}";
+        };
+
+        phases = " unpackPhase installPhase fixupPhase ";
+
+        unpackPhase = ''
+          runHook preUnpack
+          mkdir ${name}
+          tar -C ${name} -xzf $src
+        '';
+
+        installPhase = ''
+          runHook preInstall
+          install -D ${name}/oc $out/bin/oc
+          patchelf \
+            --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+            $out/bin/oc
+          # completions
+          mkdir -p $out/share/bash-completion/completions/
+          $out/bin/oc completion bash > $out/share/bash-completion/completions/oc
+          mkdir -p $out/share/zsh/site-functions
+          $out/bin/oc completion zsh > $out/share/zsh/site-functions/_oc
+        '';
+      };
+
+  oc_4_4 = makeOverridable ocGen {
+    version = "4.4.1";
+    sha256 = "1p0i1kzqxn3ggy4xhjb0qh401knb686ab0ivnxlb6plbl7g071x2";
+  };
+  oc_4_3 = makeOverridable ocGen {
+    version = "4.3.18";
+    sha256 = "0msvh9f0jkvyg33kd70jgsaq2g5wqjcfkpnanwaqfz5s6lphscrq";
+  };
+  oc_4_2 = makeOverridable ocGen {
+    version = "4.2.30";
+    sha256 = "1qkbiqcpvjl0abnx9c4d29h10d87swc6bjfjbcrw1qlq06ksh5vb";
+  };
+  oc_4_1 = makeOverridable ocGen {
+    version = "4.1.38";
+    sha256 = "1hpp2zfac7yvb9jba2qwg0qlmq2a1gg2jl0gjci6rmyxgl40pd18";
+  };
+}
pkgs/openshift-install/0001-Do-not-call-git.patch
@@ -0,0 +1,27 @@
+From 6bdcff59696e85efbbe2fff816386829b4a2390b Mon Sep 17 00:00:00 2001
+From: Vincent Demeester <vdemeest@redhat.com>
+Date: Tue, 9 Apr 2019 11:18:13 +0200
+Subject: [PATCH] Do not call git
+
+Signed-off-by: Vincent Demeester <vdemeest@redhat.com>
+---
+ hack/build.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/hack/build.sh b/hack/build.sh
+index 6213aae14..8ef0c27c1 100755
+--- a/hack/build.sh
++++ b/hack/build.sh
+@@ -31,7 +31,8 @@ then
+ fi
+ 
+ MODE="${MODE:-release}"
+-LDFLAGS="${LDFLAGS} -X github.com/openshift/installer/pkg/version.Raw=$(git describe --always --abbrev=40 --dirty) -X github.com/openshift/installer/pkg/version.Commit=$(git rev-parse --verify 'HEAD^{commit}')"
++GITCOMMIT="${GITCOMMIT:-unknown}"
++LDFLAGS="${LDFLAGS} -X github.com/openshift/installer/pkg/version.Raw=${GITCOMMIT} -X github.com/openshift/installer/pkg/version.Commit=${GITCOMMIT}"
+ TAGS="${TAGS:-}"
+ OUTPUT="${OUTPUT:-bin/openshift-install}"
+ export CGO_ENABLED=0
+-- 
+2.19.2
+
pkgs/openshift-install/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "openshift-install";
+  version = "4.4.1";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://mirror.openshift.com/pub/openshift-v4/clients/ocp/${version}/openshift-install-linux-${version}.tar.gz";
+    sha256 = "1iqiqbnlfn6514a8cgrdw66chjhdjf76film9dc547pafaw918s1";
+  };
+
+  phases = " unpackPhase installPhase fixupPhase ";
+
+  unpackPhase = ''
+    runHook preUnpack
+    mkdir ${name}
+    tar -C ${name} -xzf $src
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    install -D ${name}/openshift-install $out/bin/openshift-install
+    # completions
+    mkdir -p $out/share/bash-completion/completions/
+    $out/bin/openshift-install completion bash > $out/share/bash-completion/completions/openshift-install
+    mkdir -p $out/share/zsh/site-functions
+    $out/bin/openshift-install completion zsh > $out/share/zsh/site-functions/_openshift-install
+  '';
+
+  meta = {
+    description = "Install an OpenShift cluster";
+    homepage = https://github.com/openshift/installer;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/operator-sdk/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, lib, buildGoModule, git, fetchFromGitHub }:
+
+buildGoModule rec {
+  pname = "operator-sdk";
+  version = "0.16.0";
+  name = "${pname}-${version}";
+  rev = "v${version}";
+
+  builtInputs = [ "git" ];
+
+  goPackagePath = "github.com/operator-framework/operator-sdk";
+  subPackages = [ "cmd/operator-sdk" ];
+  buildFlagsArray = let t = "${goPackagePath}/version"; in ''
+    -ldflags=
+      -X ${t}.GitVersion=${version}
+      -X ${t}.KubernetesVersion=v1.17.2
+  '';
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "operator-framework";
+    repo = "operator-sdk";
+    sha256 = "1qdvnfxz81ij1y7qdk5xjq0nd3dqgbdjq0gmramxmkkz892cdaf3";
+  };
+  modSha256 = "11nz0fdxpsc9ifszprgp1l70myhadh90hcs94cilrpqwlci0i8c5";
+
+  postInstall = ''
+    # completions
+    mkdir -p $out/share/bash-completion/completions/
+    $out/bin/operator-sdk completion bash > $out/share/bash-completion/completions/operator-sdk
+    mkdir -p $out/share/zsh/site-functions/
+    $out/bin/operator-sdk completion zsh > $out/share/zsh/site-functions/_operator-sdk
+  '';
+
+  meta = {
+    description = "SDK for building Kubernetes applications. Provides high level APIs, useful abstractions, and project scaffolding";
+    homepage = https://github.com/operator-framework/operator-sdk;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/prm/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "prm-${version}";
+  version = "2.6.1";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/ldez/prm";
+
+  buildFlagsArray = let t = "${goPackagePath}/meta"; in ''
+    -ldflags=
+       -X ${t}.Version=${version}
+       -X ${t}.BuildDate=unknown
+  '';
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "ldez";
+    repo = "prm";
+    sha256 = "02r0cc8nacp9mhnjbrg495p92g1pzxs2b7b2dgsclx00mfd1qpn5";
+  };
+  modSha256 = "0qrgq1453ngkwshyyihj5dz6hdwr0k2alz3s2qpj0qic9n7zx7sn";
+
+  meta = {
+    description = "Pull Request Manager for Maintainers";
+    homepage = "https://github.com/ldez/prm";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/protobuild/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "protobuild-unstable-${version}";
+  version = "2018-03-27";
+  rev = "e76179fda745e7e601c8c78943191913e3e8a009";
+
+  goPackagePath = "github.com/stevvooe/protobuild";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/stevvooe/protobuild";
+    sha256 = "0p8smvf2984kjx3m4qx5ap3005m1df40ynww8rjcrq7gzc3vn61n";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    description = "Build protobufs in Go, easily";
+    homepage = https://github.com/stevvooe/protobuild;
+    license = lib.licenses.asl20;
+  };
+}
pkgs/protobuild/deps.nix
@@ -0,0 +1,30 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev = "3012a1dbe2e4bd1391d42b32f0577cb7bbc7f005";
+      sha256 = "1fjdwwfzyzllgiwydknf1pwjvy49qxfsczqx5gz3y0izs7as99j6";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "4aa4cc277ae58d2fab6cfe51dd17df5dceaf457d";
+      sha256 = "009z6rpivyakgsxs0zkm94c9i7l65hcw2ljvah94wq3y6v6j47gs";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "0f2620f554cf5c8e281a2eb655a035f5a0f6dc90";
+      sha256 = "0lxngq1a8cnsy6dlr6gi8pjv3fir2wiw76qh075pa9g02h7ywhv3";
+    };
+  }
+]
pkgs/ram/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "ram-${version}";
+  version = "0.3.0";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "vdemeester";
+    repo = "ram";
+    sha256 = "1lnxscq6lfli09yq5raj2gyg7fss4a8m99nd6f1izm84xn0n0lji";
+  };
+  modSha256 = "1rynwivgc9ilsixri8vcxss20j8wpns1jw9g0k37lgdqx88wpl9y";
+
+  meta = {
+    description = "A golang opiniated continuous testing tool 🐏";
+    homepage = "https://github.com/vdemeester/ram";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/rmapi/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "rmapi-${version}";
+  version = "0.0.4";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/juruen/rmapi";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "juruen";
+    repo = "rmapi";
+    sha256 = "0aarlsfvcakcmgv60g5qx6m9xji784xc21md5ap0zxsa9imyvxj8";
+  };
+
+  meta = {
+    description = "Go app that allows you to access your reMarkable tablet files through the Cloud API";
+    homepage = "https://github.com/juruen/rmapi";
+    license = lib.licenses.gpl3;
+  };
+}
pkgs/sec/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "sec-${version}";
+  version = "0.2.0";
+  rev = "v${version}";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "vdemeester";
+    repo = "sec";
+    sha256 = "01xmvycdbyvcjsd1pvbd2qjn4ij99pyyw9sasyffhw0bxfnpcvyq";
+  };
+  modSha256 = "1b8zis0hv32sh51s01n3z3nd20ayfcj4vv3m943r8d0gqd7hj7zw";
+
+  meta = {
+    description = "Sec § — a golang opiniated dependency updater";
+    homepage = "https://github.com/vdemeester/sec";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/systemd-email/default.nix
@@ -0,0 +1,14 @@
+{ stdenv, lib }:
+
+stdenv.mkDerivation rec {
+  name = "systemd-email";
+  src = ./.;
+
+  phases = [ "install" ];
+
+  install = ''
+    mkdir -p $out/bin
+    cp $src/systemd-email $out/bin
+    chmod +x $out/bin/systemd-email
+  '';
+}
pkgs/systemd-email/systemd-email
@@ -0,0 +1,12 @@
+#!/usr/bin/env bash
+# Send email trough systemd
+
+msmtp -C /etc/msmtprc $1 <<ERRMAIL
+To: $1
+From: systemd <maton+$HOSTNAME@sbr.me>
+Subject: $2
+Content-Transfer-Encoding: 8bit
+Content-Type: text/plain; charset=UTF-8
+
+$(systemctl status --full "$2")
+ERRMAIL
\ No newline at end of file
pkgs/tkn/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub }:
+
+with lib;
+rec {
+  tknGen = { version, sha256, modSha }:
+    buildGoModule rec {
+      pname = "tkn";
+      name = "${pname}-${version}";
+
+      goPackagePath = "github.com/tektoncd/cli";
+      subPackages = [ "cmd/tkn" ];
+      buildFlagsArray = let t = "${goPackagePath}/pkg/cmd/version"; in ''
+        -ldflags=
+          -X ${t}.clientVersion=${version}
+      '';
+      src = fetchFromGitHub {
+        owner = "tektoncd";
+        repo = "cli";
+        rev = "v${version}";
+        sha256 = "${sha256}";
+      };
+      modSha256 = "${modSha}";
+
+      postInstall = ''
+        # manpages
+        manRoot="$out/share/man"
+        mkdir -p "$manRoot/man1"
+        for manFile in docs/man/man1/*; do
+          manName="$(basename "$manFile")" # "docker-build.1"
+          gzip -c "$manFile" > "$manRoot/man1/$manName.gz"
+        done
+        # completions
+        mkdir -p $out/share/bash-completion/completions/
+        $out/bin/tkn completion bash > $out/share/bash-completion/completions/tkn
+        mkdir -p $out/share/zsh/site-functions
+        $out/bin/tkn completion zsh > $out/share/zsh/site-functions/_tkn
+      '';
+      meta = with stdenv.lib; {
+        homepage = https://github.com/tektoncd/cli;
+        description = "A CLI for interacting with Tekton!";
+        license = licenses.asl20;
+        maintainers = with maintainers; [ vdemeester ];
+      };
+    };
+
+  tkn_0_9 = makeOverridable tknGen {
+    version = "0.9.0";
+    sha256 = "11wcips37k1vfif2ckpdxgf1p5yh2zgccv3ngnl1jjm8kcqla40q";
+    modSha = "160174vw34v9w53azkzslcskzhsk1dflccfbvl1l38xm624fj4lw";
+  };
+  tkn_0_8 = makeOverridable tknGen {
+    version = "0.8.0";
+    sha256 = "00qznm02gsxvgxjakj7qpm8rgx82bnyycw4l7kpnrly5m07nm9gv";
+    modSha = "0a9m46aspqbvnnvhg6qv0adarr7plj91vknbz9idc8yz4sv9wi8j";
+  };
+}
pkgs/toolbox/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "toolbox";
+  version = "0.0.18";
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "containers";
+    repo = "toolbox";
+    rev = "${version}";
+    sha256 = "1mq1xxy6zhr7624d5y95k3s5pa5cn9qip973zr44kb4izvwci48q";
+  };
+
+  phases = "unpackPhase installPhase";
+
+  installPhase = ''
+    mkdir $out
+    install -D toolbox $out/bin/toolbox
+    install -D profile.d/toolbox.sh $out/share/toolbox/profile.d/toolbox.sh
+    sed -i 's%/etc/profile.d/%$out/share/toolbox/profile.d/%g' toolbox
+    mkdir -p $out/share/bash-completion/completions/
+    cp completion/bash/toolbox $out/share/bash-completion/completions/toolbox
+  '';
+}
pkgs/yak/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "yak-${version}";
+  version = "0.0.1";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/vdemeester/yak";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "vdemeester";
+    repo = "yak";
+    sha256 = "1zyw3ba2kn547f38inv3h3i2574l2qny3zll0njfjfvrakqbvvgc";
+  };
+
+  meta = {
+    description = "yak — Yet Another Kubernetes …";
+    homepage = "https://github.com/vdemeester/yak";
+    license = lib.licenses.asl20;
+  };
+}
pkgs/yaspell/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "yaspell-${version}";
+  version = "1.0.4";
+  rev = "${version}";
+
+  goPackagePath = "github.com/vodkabears/yaspell";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "vodkabears";
+    repo = "yaspell";
+    sha256 = "0mjsf10qwz3p88ynndcm6ss62kmb7ca45k95xjqp5p02xgqssn0y";
+  };
+
+  meta = {
+    description = "Spell checking tool for various texts written in golang";
+    homepage = https://github.com/vodkabears/yaspell;
+    license = lib.licenses.mit;
+  };
+}
pkgs/default.nix
@@ -3,17 +3,74 @@ let
   pkgs = import <nixpkgs> { inherit system; };
 in
 rec {
-  scripts = import ./scripts {
-    inherit (pkgs) stdenv;
-  };
-  tmux-tpm = import ./tmux-tpm {
-    inherit (pkgs) stdenv lib fetchFromGitHub;
-  };
+  # pre nur-packages import
+  scripts = pkgs.callPackage ./scripts {};
+  tmux-tpm = pkgs.callPackage ./tmux-tpm {};
+  vrsync = pkgs.callPackage ./vrsync {};
+  vde-thinkpad = pkgs.callPackage ./vde-thinkpad {};
 
-  vrsync = import ./vrsync {
-    inherit (pkgs) stdenv lib;
-  };
-  vde-thinkpad = import ./vde-thinkpad {
-    inherit (pkgs) stdenv lib;
-  };
+  # Mine
+  ape = pkgs.callPackage ./ape {};
+  fhs-std = pkgs.callPackage ./fhs/std.nix {};
+  nr = pkgs.callPackage ./nr {};
+  ram = pkgs.callPackage ./ram {};
+  sec = pkgs.callPackage ./sec {};
+  systemd-email = pkgs.callPackage ./systemd-email {};
+  yak = pkgs.callPackage ./yak {};
+
+  # Maybe upstream
+  athens = pkgs.callPackage ./athens {};
+  dobi = pkgs.callPackage ./dobi {};
+  dep-collector = pkgs.callPackage ./dep-collector {};
+  envbox = pkgs.callPackage ./envbox {};
+  esc = pkgs.callPackage ./esc {};
+  go-containerregistry = pkgs.callPackage ./go-containerregistry {};
+  gogo-protobuf = pkgs.callPackage ./gogo-protobuf {};
+  goreturns = pkgs.callPackage ./goreturns {};
+  gorun = pkgs.callPackage ./gorun {};
+  govanityurl = pkgs.callPackage ./govanityurl {};
+  knctl = pkgs.callPackage ./knctl {};
+  ko = pkgs.callPackage ./ko {};
+  kss = pkgs.callPackage ./kss {};
+  kubernix = pkgs.callPackage ./kubernix {};
+  krew = pkgs.callPackage ./krew {};
+  prm = pkgs.callPackage ./prm {};
+  protobuild = pkgs.callPackage ./protobuild {};
+  rmapi = pkgs.callPackage ./rmapi {};
+  toolbox = pkgs.callPackage ./toolbox {};
+  yaspell = pkgs.callPackage ./yaspell {};
+
+  # OpenShift
+  inherit (pkgs.callPackage ./oc {})
+    oc_4_1
+    oc_4_2
+    oc_4_3
+    oc_4_4
+    ;
+  oc = oc_4_4;
+  openshift-install = pkgs.callPackage ./openshift-install {};
+
+  inherit (pkgs.callPackage ./crc {})
+    crc_1_9
+    crc_1_10
+    ;
+  crc = crc_1_10;
+
+  # Operator SDK
+  operator-sdk = pkgs.callPackage ./operator-sdk {};
+
+  # Tekton
+  inherit (pkgs.callPackage ./tkn {})
+    tkn_0_8
+    tkn_0_9
+    ;
+  tkn = tkn_0_9;
+
+  # Upstream
+  buildkit = pkgs.callPackage ./buildkit {};
+  inherit (pkgs.callPackage ./containerd {})
+    containerd_1_2
+    containerd_1_3
+    ;
+  containerd = containerd_1_3;
 }
pkgs/README.org
@@ -0,0 +1,3 @@
+#+TITLE: Packages
+
+My personal /maintained/ packages, that can be used as NUR repository.