about summary refs log tree commit diff
path: root/pkgs/by-name/ez
diff options
context:
space:
mode:
authorChristina Sørensen <christina@cafkafk.com>2023-09-29 07:40:14 +0200
committerChristina Sørensen <christina@cafkafk.com>2023-09-29 07:40:14 +0200
commitdb63f9358fdcf7faa52f2bcf08b11aa7cb420b78 (patch)
tree7093cd41a568b57065355888683fd65cafa8b03b /pkgs/by-name/ez
parent4919a8cdcc09e51bff39c047cfda13c2ec7d64cd (diff)
eza: use by-name
Signed-off-by: Christina Sørensen <christina@cafkafk.com>
Diffstat (limited to 'pkgs/by-name/ez')
-rw-r--r--pkgs/by-name/ez/eza/package.nix70
1 files changed, 70 insertions, 0 deletions
diff --git a/pkgs/by-name/ez/eza/package.nix b/pkgs/by-name/ez/eza/package.nix
new file mode 100644
index 0000000000000..52d7ad5bc8048
--- /dev/null
+++ b/pkgs/by-name/ez/eza/package.nix
@@ -0,0 +1,70 @@
+{ lib
+, gitSupport ? true
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, cmake
+, pandoc
+, pkg-config
+, zlib
+, darwin
+, libiconv
+, installShellFiles
+  # once eza upstream gets support for setting up a compatibilty symlink for exa, we should change
+  # the handling here from postInstall to passing the required argument to the builder.
+, exaAlias ? true
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "eza";
+  version = "0.13.1";
+
+  src = fetchFromGitHub {
+    owner = "eza-community";
+    repo = "eza";
+    rev = "v${version}";
+    hash = "sha256-/Aqt4TjXAJCF6woyJ90lbVt0eN1QuPWk9A8RhggKHJk=";
+  };
+
+  cargoHash = "sha256-ofB61CsXH+CxnuWBbwUgUbBiF5bg35swxcFpVOzDN9I=";
+
+  nativeBuildInputs = [ cmake pkg-config installShellFiles pandoc ];
+  buildInputs = [ zlib ]
+    ++ lib.optionals stdenv.isDarwin [ libiconv darwin.apple_sdk.frameworks.Security ];
+
+  buildNoDefaultFeatures = true;
+  buildFeatures = lib.optional gitSupport "git";
+
+  outputs = [ "out" "man" ];
+
+  postInstall = ''
+    pandoc --standalone -f markdown -t man man/eza.1.md > man/eza.1
+    pandoc --standalone -f markdown -t man man/eza_colors.5.md > man/eza_colors.5
+    pandoc --standalone -f markdown -t man man/eza_colors-explanation.5.md > man/eza_colors-explanation.5
+    installManPage man/eza.1 man/eza_colors.5 man/eza_colors-explanation.5
+    installShellCompletion \
+      --bash completions/bash/eza \
+      --fish completions/fish/eza.fish \
+      --zsh completions/zsh/_eza
+  '' + lib.optionalString exaAlias ''
+    ln -s eza $out/bin/exa
+  '';
+
+  meta = with lib; {
+    description = "A modern, maintained replacement for ls";
+    longDescription = ''
+      eza is a modern replacement for ls. It uses colours for information by
+      default, helping you distinguish between many types of files, such as
+      whether you are the owner, or in the owning group. It also has extra
+      features not present in the original ls, such as viewing the Git status
+      for a directory, or recursing into directories with a tree view. eza is
+      written in Rust, so it’s small, fast, and portable.
+    '';
+    homepage = "https://github.com/eza-community/eza";
+    changelog = "https://github.com/eza-community/eza/releases/tag/v${version}";
+    license = licenses.mit;
+    mainProgram = "eza";
+    maintainers = with maintainers; [ cafkafk _9glenda ];
+    platforms = platforms.unix ++ platforms.windows;
+  };
+}