nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 fetchurl,
4 installShellFiles,
5 versionCheckHook,
6 stdenvNoCC,
7 version-channel ? "stable",
8}:
9let
10 inherit (stdenvNoCC.hostPlatform) system;
11 sources =
12 if "${version-channel}" == "main" then
13 lib.importJSON ./sources-main.json
14 else
15 lib.importJSON ./sources-stable.json;
16 arch = sources.archMap.${system};
17
18in
19stdenvNoCC.mkDerivation {
20 pname = if "${version-channel}" == "main" then "upbound-main" else "upbound";
21 version = sources.version;
22 srcs = [
23 (fetchurl {
24 url = sources.fetchurlAttrSet.docker-credential-up.${system}.url;
25 sha256 = sources.fetchurlAttrSet.docker-credential-up.${system}.hash;
26 })
27
28 (fetchurl {
29 url = sources.fetchurlAttrSet.up.${system}.url;
30 sha256 = sources.fetchurlAttrSet.up.${system}.hash;
31 })
32 ];
33
34 sourceRoot = ".";
35
36 nativeBuildInputs = [ installShellFiles ];
37
38 installPhase = ''
39 runHook preInstall
40
41 mkdir -p $out/bin
42
43 cp ./${arch}/up $out/bin/up
44 chmod +x $out/bin/up
45
46 cp ./${arch}/docker-credential-up $out/bin/docker-credential-up
47 chmod +x $out/bin/docker-credential-up
48
49 runHook postInstall
50 '';
51
52 postInstall = ''
53 installShellCompletion --bash --name up <(echo complete -C up up)
54 '';
55
56 # FIXME: error when running `env -i up`:
57 # "up: error: $HOME is not defined"
58 doInstallCheck = false;
59 versionCheckProgram = "${placeholder "out"}/bin/up";
60 versionCheckProgramArg = "version";
61
62 nativeInstallCheckInputs = [
63 versionCheckHook
64 ];
65
66 doCheck = false;
67
68 passthru.updateScript = [
69 ./update
70 "${version-channel}"
71 ];
72
73 meta = {
74 description = "CLI for interacting with Upbound Cloud, Upbound Enterprise, and Universal Crossplane (UXP)";
75 changelog = "https://docs.upbound.io/reference/cli/rel-notes/#whats-changed";
76 homepage = "https://upbound.io";
77 license = lib.licenses.unfree;
78 maintainers = with lib.maintainers; [
79 lucperkins
80 jljox
81 ];
82 mainProgram = "up";
83 platforms = sources.platformList;
84 };
85}