Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / version-management / jujutsu / default.nix
bloba4e68c190ae1bc11d7cca88a75bae0cc1b52ccb8
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , rustPlatform
5 , Security
6 , SystemConfiguration
7 , pkg-config
8 , libiconv
9 , openssl
10 , gzip
11 , libssh2
12 , libgit2
13 , zstd
14 , fetchpatch
15 , installShellFiles
16 , nix-update-script
17 , testers
18 , jujutsu
21 rustPlatform.buildRustPackage rec {
22   pname = "jujutsu";
23   version = "0.11.0";
25   src = fetchFromGitHub {
26     owner = "martinvonz";
27     repo = "jj";
28     rev = "v${version}";
29     hash = "sha256-yEW7+0MnJlW0WeZ6UItaCDrihPLA52mLcu15tJwZx9w=";
30   };
32   cargoHash = "sha256-xA9SDq1Kc0u8qFEPFFCic9uwE2Y/BXJzUHBCs1Czxtw=";
34   cargoBuildFlags = [ "--bin" "jj" ]; # don't install the fake editors
35   useNextest = true; # nextest is the upstream integration framework
36   ZSTD_SYS_USE_PKG_CONFIG = "1";    # disable vendored zlib
37   LIBSSH2_SYS_USE_PKG_CONFIG = "1"; # disable vendored libssh2
39   nativeBuildInputs = [
40     gzip
41     installShellFiles
42     pkg-config
43   ];
45   buildInputs = [
46     openssl
47     zstd
48     libgit2
49     libssh2
50   ] ++ lib.optionals stdenv.isDarwin [
51     Security
52     SystemConfiguration
53     libiconv
54   ];
56   postInstall = ''
57     $out/bin/jj util mangen > ./jj.1
58     installManPage ./jj.1
60     installShellCompletion --cmd jj \
61       --bash <($out/bin/jj util completion --bash) \
62       --fish <($out/bin/jj util completion --fish) \
63       --zsh <($out/bin/jj util completion --zsh)
64   '';
66   passthru = {
67     updateScript = nix-update-script { };
68     tests = {
69       version = testers.testVersion {
70         package = jujutsu;
71         command = "jj --version";
72       };
73     };
74   };
76   meta = with lib; {
77     description = "A Git-compatible DVCS that is both simple and powerful";
78     homepage = "https://github.com/martinvonz/jj";
79     changelog = "https://github.com/martinvonz/jj/blob/v${version}/CHANGELOG.md";
80     license = licenses.asl20;
81     maintainers = with maintainers; [ _0x4A6F thoughtpolice ];
82     mainProgram = "jj";
83   };