diff --git a/pkgs/by-name/in/incus/client.nix b/pkgs/by-name/in/incus/client.nix new file mode 100644 index 000000000000..46bf691c6951 --- /dev/null +++ b/pkgs/by-name/in/incus/client.nix @@ -0,0 +1,53 @@ +{ + lts ? false, + + lib, + buildGoModule, + fetchFromGitHub, + installShellFiles, +}: +let + releaseFile = if lts then ./lts.nix else ./latest.nix; + inherit (import releaseFile) version hash vendorHash; +in + +buildGoModule rec { + pname = "incus-client"; + + inherit vendorHash version; + + src = fetchFromGitHub { + owner = "lxc"; + repo = "incus"; + rev = "refs/tags/v${version}"; + inherit hash; + }; + + CGO_ENABLED = 0; + + nativeBuildInputs = [ installShellFiles ]; + + subPackages = [ "cmd/incus" ]; + + postInstall = '' + # use custom bash completion as it has extra logic for e.g. instance names + installShellCompletion --bash --name incus ./scripts/bash/incus + + installShellCompletion --cmd incus \ + --fish <($out/bin/incus completion fish) \ + --zsh <($out/bin/incus completion zsh) + ''; + + # don't run the full incus test suite + doCheck = false; + + meta = { + description = "Powerful system container and virtual machine manager"; + homepage = "https://linuxcontainers.org/incus"; + changelog = "https://github.com/lxc/incus/releases/tag/v${version}"; + license = lib.licenses.asl20; + maintainers = lib.teams.lxc.members; + platforms = lib.platforms.unix; + mainProgram = "incus"; + }; +} diff --git a/pkgs/by-name/in/incus/package.nix b/pkgs/by-name/in/incus/package.nix index a9ada155b74b..c91d08c2f5a5 100644 --- a/pkgs/by-name/in/incus/package.nix +++ b/pkgs/by-name/in/incus/package.nix @@ -41,6 +41,7 @@ }: let unwrapped = callPackage ./unwrapped.nix { inherit lts; }; + client = callPackage ./client.nix { inherit lts; }; binPath = lib.makeBinPath [ acl @@ -164,6 +165,8 @@ symlinkJoin { passthru = { inherit (unwrapped) tests; + client = client; + unwrapped = unwrapped; };