about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/ko/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/ko/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/ko/default.nix28
1 files changed, 24 insertions, 4 deletions
diff --git a/nixpkgs/pkgs/development/tools/ko/default.nix b/nixpkgs/pkgs/development/tools/ko/default.nix
index 4754a32db825..614b5d4c9df4 100644
--- a/nixpkgs/pkgs/development/tools/ko/default.nix
+++ b/nixpkgs/pkgs/development/tools/ko/default.nix
@@ -2,6 +2,7 @@
 , buildGoModule
 , fetchFromGitHub
 , git
+, installShellFiles
 }:
 
 buildGoModule rec {
@@ -14,18 +15,37 @@ buildGoModule rec {
     rev = "v${version}";
     sha256 = "sha256-LoOXZY4uF7GSS3Dh/ozCsLJTxgmPmZZuEisJ4ShjCBc=";
   };
-
   vendorSha256 = null;
-  excludedPackages = "test";
+  # Don't build the legacy main.go or test dir
+  excludedPackages = "\\(cmd/ko\\|test\\)";
+  nativeBuildInputs = [ installShellFiles ];
+
+  ldflags = [ "-s" "-w" "-X github.com/google/ko/pkg/commands.Version=${version}" ];
+
   checkInputs = [ git ];
   preCheck = ''
+    # resolves some complaints from ko
+    export GOROOT="$(go env GOROOT)"
     git init
   '';
 
+  postInstall = ''
+    installShellCompletion --cmd ko \
+      --bash <($out/bin/ko completion) \
+      --zsh <($out/bin/ko completion --zsh)
+  '';
+
   meta = with lib; {
-    description = "A simple, fast container image builder for Go applications.";
     homepage = "https://github.com/google/ko";
+    changelog = "https://github.com/google/ko/releases/tag/v${version}";
+    description = "Build and deploy Go applications on Kubernetes";
+    longDescription = ''
+      ko is a simple, fast container image builder for Go applications.
+      It's ideal for use cases where your image contains a single Go application without any/many dependencies on the OS base image (e.g. no cgo, no OS package dependencies).
+      ko builds images by effectively executing go build on your local machine, and as such doesn't require docker to be installed. This can make it a good fit for lightweight CI/CD use cases.
+      ko also includes support for simple YAML templating which makes it a powerful tool for Kubernetes applications.
+    '';
     license = licenses.asl20;
-    maintainers = with maintainers; [ nickcao ];
+    maintainers = with maintainers; [ nickcao jk ];
   };
 }