From c3031d3cd7542f52be7e91fbc28b1a94bc9d4146 Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Sun, 20 Oct 2024 08:32:41 -0500 Subject: [PATCH] add distrobox package with shell completions --- pkgs/default.nix | 1 + pkgs/distrobox/default.nix | 64 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 pkgs/distrobox/default.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 35cf65c..6ef3686 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -3,4 +3,5 @@ nph = pkgs.callPackage ./nim/nph { }; # doesn't compile with 2.2.0 :/ nimlangserver = pkgs.callPackage ./nim/nimlangserver { }; nimble = pkgs.callPackage ./nim/nimble { }; + distrobox = pkgs.callPackage ./distrobox {}; } diff --git a/pkgs/distrobox/default.nix b/pkgs/distrobox/default.nix new file mode 100644 index 0000000..92e6645 --- /dev/null +++ b/pkgs/distrobox/default.nix @@ -0,0 +1,64 @@ +{ + stdenvNoCC, + lib, + fetchFromGitHub, + makeWrapper, + wget, + installShellFiles, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "distrobox"; + version = "1.7.2.1"; + + src = fetchFromGitHub { + owner = "89luca89"; + repo = "distrobox"; + rev = finalAttrs.version; + hash = "sha256-H2jeKs0h4ZAcP33HB5jptlubq62cwnjPK2wSlEIfFWA="; + }; + + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = [ makeWrapper installShellFiles]; + + installPhase = '' + runHook preInstall + + # https://github.com/89luca89/distrobox/issues/408 + substituteInPlace ./distrobox-generate-entry \ + --replace-fail 'icon_default="''${HOME}/.local' "icon_default=\"$out" + ./install -P $out + + runHook postInstall + ''; + + # https://github.com/89luca89/distrobox/issues/407 + postFixup = '' + wrapProgram "$out/bin/distrobox-generate-entry" \ + --prefix PATH ":" ${lib.makeBinPath [ wget ]} + + mkdir -p $out/share/distrobox + echo 'container_additional_volumes="/nix:/nix"' > $out/share/distrobox/distrobox.conf + ''; + + + postInstall = '' + ls completions/zsh + installShellCompletion --cmd distrbox --zsh completions/zsh/_distrobox + ''; + + meta = with lib; { + description = "Wrapper around podman or docker to create and start containers"; + longDescription = '' + Use any linux distribution inside your terminal. Enable both backward and + forward compatibility with software and freedom to use whatever distribution + you’re more comfortable with + ''; + homepage = "https://distrobox.it/"; + license = licenses.gpl3Only; + platforms = platforms.linux; + maintainers = with maintainers; [ atila ]; + }; +})