# Atuin package definition # # This file will be similar to the package definition in nixpkgs: # https://github.com/NixOS/nixpkgs/blob/master/pkgs/by-name/at/atuin/package.nix # # Helpful documentation: https://github.com/NixOS/nixpkgs/blob/master/doc/languages-frameworks/rust.section.md { lib, stdenv, installShellFiles, rustPlatform, libiconv, }: rustPlatform.buildRustPackage { name = "turtle"; version = "19.0.0"; src = lib.cleanSourceWith { src = lib.cleanSource ./..; filter = name: type: (type == "directory") || (builtins.elem (builtins.baseNameOf name) [ "Cargo.toml" "Cargo.lock" "CONTRIBUTORS" "atuin.bash" "atuin.fish" "atuin.nu" "atuin.ps1" "atuin.xsh" "atuin.zsh" ]) || (lib.strings.hasSuffix ".rs" (builtins.baseNameOf name)) || (lib.strings.hasSuffix ".proto" (builtins.baseNameOf name)) || (lib.strings.hasSuffix ".sql" (builtins.baseNameOf name)); }; cargoLock = { lockFile = ../Cargo.lock; # Allow dependencies to be fetched from git and avoid having to set the outputHashes manually allowBuiltinFetchGit = true; }; nativeBuildInputs = [installShellFiles]; buildInputs = lib.optionals stdenv.isDarwin [libiconv]; postInstall = '' installShellCompletion --cmd atuin \ --bash <($out/bin/atuin gen-completions -s bash) \ --fish <($out/bin/atuin gen-completions -s fish) \ --zsh <($out/bin/atuin gen-completions -s zsh) ''; doCheck = false; meta = with lib; { description = "Replacement for a shell history which records additional commands context with optional encrypted synchronization between machines"; homepage = "https://github.com/atuinsh/atuin"; license = licenses.mit; mainProgram = "atuin"; }; }