diff options
Diffstat (limited to 'pkgs/by-name/fl/fluxcd/package.nix')
-rw-r--r-- | pkgs/by-name/fl/fluxcd/package.nix | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/pkgs/by-name/fl/fluxcd/package.nix b/pkgs/by-name/fl/fluxcd/package.nix new file mode 100644 index 0000000000000..712f075459b60 --- /dev/null +++ b/pkgs/by-name/fl/fluxcd/package.nix @@ -0,0 +1,88 @@ +{ + buildGoModule, + fetchFromGitHub, + fetchzip, + installShellFiles, + lib, + stdenv, +}: + +let + version = "2.3.0"; + sha256 = "sha256-ZQs1rWI31qDo/BgjrmiNnEdR2OL8bUHVz+j5VceEp2k="; + manifestsSha256 = "sha256-PdhR+UDquIJWtpSymtT6V7qO5fVJOkFz6RGzAx7xeb4="; + + manifests = fetchzip { + url = "https://github.com/fluxcd/flux2/releases/download/v${version}/manifests.tar.gz"; + hash = manifestsSha256; + stripRoot = false; + }; +in + +buildGoModule rec { + pname = "fluxcd"; + inherit version; + + src = fetchFromGitHub { + owner = "fluxcd"; + repo = "flux2"; + rev = "v${version}"; + hash = sha256; + }; + + vendorHash = "sha256-0YH3pgFrsnh5jIsZpj/sIgfiOCTtIlPltMS5mdGz1eM="; + + postUnpack = '' + cp -r ${manifests} source/cmd/flux/manifests + + # disable tests that require network access + rm source/cmd/flux/create_secret_git_test.go + ''; + + ldflags = [ + "-s" + "-w" + "-X main.VERSION=${version}" + ]; + + subPackages = [ "cmd/flux" ]; + + # Required to workaround test error: + # panic: mkdir /homeless-shelter: permission denied + HOME = "$TMPDIR"; + + nativeBuildInputs = [ installShellFiles ]; + + doInstallCheck = true; + installCheckPhase = '' + $out/bin/flux --version | grep ${version} > /dev/null + ''; + + postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' + for shell in bash fish zsh; do + $out/bin/flux completion $shell > flux.$shell + installShellCompletion flux.$shell + done + ''; + + passthru.updateScript = ./update.sh; + + meta = { + changelog = "https://github.com/fluxcd/flux2/releases/tag/v${version}"; + description = "Open and extensible continuous delivery solution for Kubernetes"; + downloadPage = "https://github.com/fluxcd/flux2/"; + longDescription = '' + Flux is a tool for keeping Kubernetes clusters in sync + with sources of configuration (like Git repositories), and automating + updates to configuration when there is new code to deploy. + ''; + homepage = "https://fluxcd.io"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ + bryanasdev000 + jlesquembre + superherointj + ]; + mainProgram = "flux"; + }; +} |