diff options
Diffstat (limited to 'nixpkgs/pkgs/tools/filesystems/sshfs-fuse/common.nix')
-rw-r--r-- | nixpkgs/pkgs/tools/filesystems/sshfs-fuse/common.nix | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/filesystems/sshfs-fuse/common.nix b/nixpkgs/pkgs/tools/filesystems/sshfs-fuse/common.nix new file mode 100644 index 000000000000..f85faa712dd4 --- /dev/null +++ b/nixpkgs/pkgs/tools/filesystems/sshfs-fuse/common.nix @@ -0,0 +1,61 @@ +{ version, sha256, platforms, patches ? [ ] }: + +{ lib, stdenv, fetchFromGitHub +, meson, pkg-config, ninja, docutils, makeWrapper +, fuse3, macfuse-stubs, glib +, which, python3Packages +, openssh +}: + +let + fuse = if stdenv.isDarwin then macfuse-stubs else fuse3; +in stdenv.mkDerivation rec { + pname = "sshfs-fuse"; + inherit version; + + src = fetchFromGitHub { + owner = "libfuse"; + repo = "sshfs"; + rev = "sshfs-${version}"; + inherit sha256; + }; + + inherit patches; + + nativeBuildInputs = [ meson pkg-config ninja docutils makeWrapper ]; + buildInputs = [ fuse glib ]; + checkInputs = [ which python3Packages.pytest ]; + + NIX_CFLAGS_COMPILE = lib.optionalString + (stdenv.hostPlatform.system == "i686-linux") + "-D_FILE_OFFSET_BITS=64"; + + postInstall = '' + mkdir -p $out/sbin + ln -sf $out/bin/sshfs $out/sbin/mount.sshfs + '' + lib.optionalString (!stdenv.isDarwin) '' + wrapProgram $out/bin/sshfs --prefix PATH : "${openssh}/bin" + ''; + + # doCheck = true; + checkPhase = lib.optionalString (!stdenv.isDarwin) '' + # The tests need fusermount: + mkdir bin + cp ${fuse}/bin/fusermount3 bin/fusermount + export PATH=bin:$PATH + # Can't access /dev/fuse within the sandbox: "FUSE kernel module does not seem to be loaded" + substituteInPlace test/util.py --replace "/dev/fuse" "/dev/null" + # TODO: "fusermount executable not setuid, and we are not root" + # We should probably use a VM test instead + ${python3Packages.python.interpreter} -m pytest test/ + ''; + + meta = with lib; { + inherit platforms; + description = "FUSE-based filesystem that allows remote filesystems to be mounted over SSH"; + longDescription = macfuse-stubs.warning; + homepage = "https://github.com/libfuse/sshfs"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ primeos ]; + }; +} |