1{ lib
2, buildGoModule
3, fetchFromGitHub
4}:
5
6buildGoModule rec {
7 pname = "gcsfuse";
8 version = "0.42.5";
9
10 src = fetchFromGitHub {
11 owner = "googlecloudplatform";
12 repo = "gcsfuse";
13 rev = "v${version}";
14 hash = "sha256-ME0xoi1KEzw99GmKQeeNHVjIH3UlBnP6/b50xJcPA/I=";
15 };
16
17 vendorHash = "sha256-oTELdPPkKBQFBIRhjns6t3wj84RQhDVOi95seNyeeR0=";
18
19 subPackages = [ "." "tools/mount_gcsfuse" ];
20
21 ldflags = [ "-s" "-w" "-X main.gcsfuseVersion=${version}" ];
22
23 preCheck =
24 let
25 skippedTests = [
26 "Test_Main"
27 "TestFlags"
28 ];
29 in
30 ''
31 # Disable flaky tests
32 buildFlagsArray+=("-run" "[^(${builtins.concatStringsSep "|" skippedTests})]")
33 '';
34
35 postInstall = ''
36 ln -s $out/bin/mount_gcsfuse $out/bin/mount.gcsfuse
37 ln -s $out/bin/mount_gcsfuse $out/bin/mount.fuse.gcsfuse
38 '';
39
40 meta = with lib; {
41 description = "A user-space file system for interacting with Google Cloud Storage";
42 homepage = "https://cloud.google.com/storage/docs/gcs-fuse";
43 changelog = "https://github.com/GoogleCloudPlatform/gcsfuse/releases/tag/v${version}";
44 license = licenses.asl20;
45 platforms = platforms.unix;
46 maintainers = with maintainers; [ aaronjheng ];
47 };
48}