Remove n0emis as direct maintainer (#365023)
[NixPkgs.git] / pkgs / applications / networking / sync / rclone / default.nix
blob5bf4ac7eac68a181c7a8f5bc3874f67b9d764a6a
2   lib,
3   stdenv,
4   buildGoModule,
5   fetchFromGitHub,
6   buildPackages,
7   installShellFiles,
8   makeWrapper,
9   enableCmount ? true,
10   fuse,
11   fuse3,
12   macfuse-stubs,
13   librclone,
16 buildGoModule rec {
17   pname = "rclone";
18   version = "1.68.2";
20   outputs = [
21     "out"
22     "man"
23   ];
25   src = fetchFromGitHub {
26     owner = "rclone";
27     repo = "rclone";
28     rev = "v${version}";
29     hash = "sha256-3Al58jg+pYP46VbpIRbYBhMOG6m7OQaC0pxKawX12E8=";
30   };
32   vendorHash = "sha256-PCj/f/oeLEAC/yFmR5dSyoLb45Z1fPLAASBaM251+Mc=";
34   subPackages = [ "." ];
36   nativeBuildInputs = [
37     installShellFiles
38     makeWrapper
39   ];
41   buildInputs = lib.optional enableCmount (
42     if stdenv.hostPlatform.isDarwin then macfuse-stubs else fuse
43   );
45   tags = lib.optionals enableCmount [ "cmount" ];
47   ldflags = [
48     "-s"
49     "-w"
50     "-X github.com/rclone/rclone/fs.Version=${version}"
51   ];
53   postConfigure = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
54     substituteInPlace vendor/github.com/winfsp/cgofuse/fuse/host_cgo.go \
55         --replace-fail '"libfuse.so.2"' '"${lib.getLib fuse}/lib/libfuse.so.2"'
56   '';
58   postInstall =
59     let
60       rcloneBin =
61         if stdenv.buildPlatform.canExecute stdenv.hostPlatform then
62           "$out"
63         else
64           lib.getBin buildPackages.rclone;
65     in
66     ''
67       installManPage rclone.1
68       for shell in bash zsh fish; do
69         ${rcloneBin}/bin/rclone genautocomplete $shell rclone.$shell
70         installShellCompletion rclone.$shell
71       done
73       # filesystem helpers
74       ln -s $out/bin/rclone $out/bin/rclonefs
75       ln -s $out/bin/rclone $out/bin/mount.rclone
76     ''
77     +
78       lib.optionalString (enableCmount && !stdenv.hostPlatform.isDarwin)
79         # use --suffix here to ensure we don't shadow /run/wrappers/bin/fusermount3,
80         # as the setuid wrapper is required as non-root on NixOS.
81         ''
82           wrapProgram $out/bin/rclone \
83             --suffix PATH : "${lib.makeBinPath [ fuse3 ]}"
84         '';
86   passthru.tests = {
87     inherit librclone;
88   };
90   meta = with lib; {
91     description = "Command line program to sync files and directories to and from major cloud storage";
92     homepage = "https://rclone.org";
93     changelog = "https://github.com/rclone/rclone/blob/v${version}/docs/content/changelog.md";
94     license = licenses.mit;
95     mainProgram = "rclone";
96     maintainers = with maintainers; [
97       SuperSandro2000
98       tomfitzhenry
99     ];
100   };