about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix')
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix77
1 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix
new file mode 100644
index 000000000000..e4adabd75813
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, lib, fetchFromGitHub, removeReferencesTo, which, go, go-bindata, makeWrapper, rsync
+, components ? [
+    "cmd/kubeadm"
+    "cmd/kubectl"
+    "cmd/kubelet"
+    "cmd/kube-apiserver"
+    "cmd/kube-controller-manager"
+    "cmd/kube-proxy"
+    "cmd/kube-scheduler"
+    "test/e2e/e2e.test"
+  ]
+}:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  pname = "kubernetes";
+  version = "1.14.3";
+
+  src = fetchFromGitHub {
+    owner = "kubernetes";
+    repo = "kubernetes";
+    rev = "v${version}";
+    sha256 = "1r31ssf8bdbz8fdsprhkc34jqhz5rcs3ixlf0mbjcbq0xr7y651z";
+  };
+
+  buildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
+
+  outputs = ["out" "man" "pause"];
+
+  postPatch = ''
+    substituteInPlace "hack/lib/golang.sh" --replace "_cgo" ""
+    substituteInPlace "hack/update-generated-docs.sh" --replace "make" "make SHELL=${stdenv.shell}"
+    # hack/update-munge-docs.sh only performs some tests on the documentation.
+    # They broke building k8s; disabled for now.
+    echo "true" > "hack/update-munge-docs.sh"
+
+    patchShebangs ./hack
+  '';
+
+  WHAT="${concatStringsSep " " components}";
+
+  postBuild = ''
+    ./hack/update-generated-docs.sh
+    (cd build/pause && cc pause.c -o pause)
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/bin" "$out/share/bash-completion/completions" "$out/share/zsh/site-functions" "$man/share/man" "$pause/bin"
+
+    cp _output/local/go/bin/* "$out/bin/"
+    cp build/pause/pause "$pause/bin/pause"
+    cp -R docs/man/man1 "$man/share/man"
+
+    cp cluster/addons/addon-manager/namespace.yaml $out/share
+    cp cluster/addons/addon-manager/kube-addons.sh $out/bin/kube-addons
+    patchShebangs $out/bin/kube-addons
+    substituteInPlace $out/bin/kube-addons \
+      --replace /opt/namespace.yaml $out/share/namespace.yaml
+    wrapProgram $out/bin/kube-addons --set "KUBECTL_BIN" "$out/bin/kubectl"
+
+    $out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
+    $out/bin/kubectl completion zsh > $out/share/zsh/site-functions/_kubectl
+  '';
+
+  preFixup = ''
+    find $out/bin $pause/bin -type f -exec remove-references-to -t ${go} '{}' +
+  '';
+
+  meta = {
+    description = "Production-Grade Container Scheduling and Management";
+    license = licenses.asl20;
+    homepage = https://kubernetes.io;
+    maintainers = with maintainers; [johanot offline];
+    platforms = platforms.unix;
+  };
+}