;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
+;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system linux-module)
+ #:use-module (guix build-system python)
#:use-module (guix build-system trivial)
#:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages curl)
+ #:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages documentation)
#:use-module (gnu packages docbook)
#:use-module (gnu packages flex)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
+ #:use-module (gnu packages kerberos)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages nfs)
#:use-module (gnu packages onc-rpc)
+ #:use-module (gnu packages openldap)
#:use-module (gnu packages photo)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-crypto)
+ #:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
#:use-module (gnu packages rsync)
+ #:use-module (gnu packages sssd)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages tls)
#:use-module (gnu packages valgrind)
#:use-module (gnu packages xml))
+(define-public autofs
+ (package
+ (name "autofs")
+ (version "5.1.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://kernel.org/linux/daemons/autofs/"
+ "v" (version-major version) "/"
+ "autofs-" version ".tar.xz"))
+ (sha256
+ (base32 "1vya21mb4izj3khcr3flibv7xc15vvx2v0rjfk5yd31qnzcy7pnx"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "--enable-ignore-busy" ; during shutdown
+ "--enable-sloppy-mount" ; support mount(8) -s
+ "--with-libtirpc"
+ (string-append "--with-openldap="
+ (assoc-ref %build-inputs "openldap"))
+ (string-append "--with-sasl="
+ (assoc-ref %build-inputs "cyrus-sasl"))
+ "HAVE_SSS_AUTOFS=1" ; required to make sssldir click
+ (string-append "sssldir="
+ (assoc-ref %build-inputs "sssd")
+ "/lib/sssd/modules"))
+ #:tests? #f ; no test suite
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-hard-coded-search-path
+ (lambda _
+ (substitute* "configure"
+ (("^searchpath=\".*\"")
+ "searchpath=\"$PATH\""))
+ #t))
+ (add-before 'install 'omit-obsolete-lookup_nis.so-link
+ ;; Building lookup_yp.so depends on $(YPCLNT) but this doesn't,
+ ;; leading to a make error. Since it's broken, comment it out.
+ (lambda _
+ (substitute* "modules/Makefile"
+ (("ln -fs lookup_yp.so" match)
+ (string-append "# " match)))
+ #t)))))
+ (native-inputs
+ `(("bison" ,bison)
+ ("flex" ,flex)
+ ("pkg-config" ,pkg-config)
+ ("rpcsvc-proto" ,rpcsvc-proto)))
+ (inputs
+ `(("cyrus-sasl" ,cyrus-sasl)
+ ("e2fsprogs" ,e2fsprogs) ; for e[234]fsck
+ ("libtirpc" ,libtirpc)
+ ("libxml2" ,libxml2) ; needed for LDAP, SASL
+ ("mit-krb5" ,mit-krb5) ; needed for LDAP, SASL
+ ("nfs-utils" ,nfs-utils) ; for mount.nfs
+ ("openldap" ,openldap)
+ ("openssl" ,openssl) ; needed for SASL
+ ("sssd" ,sssd)
+ ("util-linux" ,util-linux))) ; for mount, umount
+ ;; XXX A directory index is the closest thing this has to a home page.
+ (home-page "https://www.kernel.org/pub/linux/daemons/autofs/")
+ (synopsis "Kernel-based automounter for Linux")
+ (description
+ "Autofs is a kernel-based automounter for use with the Linux autofs4
+module. It automatically mounts selected file systems when they are used and
+unmounts them after a set period of inactivity. This provides
+centrally-managed, consistent file names for users and applications, even in a
+large and/or frequently changing (network) environment.")
+ ;; fedfs/ is GPL-2-only but not built.
+ (license (list license:bsd-3 ; modules/cyrus-sasl.c
+ license:gpl2+)))) ; the rest
+
+(define-public bindfs
+ (package
+ (name "bindfs")
+ (version "1.14.8")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://bindfs.org/downloads/bindfs-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "15y4brlcrqhxl6z73785m0dr1vp2q3wc6xss08x9jjr0apzmmjp5"))))
+ (build-system gnu-build-system)
+ (arguments
+ ;; XXX: The tests have no hope of passing until there is a "nogroup"
+ ;; entry (or at least some group to which the guix builder does
+ ;; not belong) in the /etc/group file of the build environment.
+ ;; Currently we do not have such a group. Disable tests for now.
+ '(#:tests? #f))
+ (native-inputs
+ ;; Native inputs to run the tests
+ ;; ("ruby" ,ruby)
+ ;; ("valgrind" ,valgrind)
+ ;; ("which" ,which)
+ `(("pkg-config" ,pkg-config)))
+ (inputs
+ `(("fuse" ,fuse)))
+ (home-page "https://bindfs.org")
+ (synopsis "Bind mount a directory and alter permission bits")
+ (description
+ "@command{bindfs} is a FUSE filesystem for mounting a directory to
+another location, similar to @command{mount --bind}. It can be used for:
+@itemize
+@item Making a directory read-only.
+@item Making all executables non-executable.
+@item Sharing a directory with a list of users (or groups).
+@item Modifying permission bits using rules with chmod-like syntax.
+@item Changing the permissions with which files are created.
+@end itemize ")
+ (license license:gpl2+)))
+
(define-public fsarchiver
(package
(name "fsarchiver")
(method git-fetch)
(uri
(git-reference
- (url "https://github.com/fdupoux/fsarchiver.git")
+ (url "https://github.com/fdupoux/fsarchiver")
(commit version)))
(file-name (git-file-name name version))
(sha256
Each file in the archive is protected by a checksum. If part of the archive
is corrupted you'll lose the affected file(s) but not the whole back-up.")
- (home-page "http://www.fsarchiver.org/")
+ (home-page "https://www.fsarchiver.org/")
(license license:gpl2)))
(define-public gphotofs
`(("fuse" ,fuse)
("glib" ,glib)
("libgphoto2" ,libgphoto2)))
- (synopsis "Virtual filesystem for libgphoto2 using FUSE")
- (description "GPhotoFS is a FUSE filesystem module to mount your camera as
-a filesystem on Linux. This allow using your camera with any tool able to read
-from a mounted filesystem.")
+ (synopsis "Virtual file system for libgphoto2 using FUSE")
+ (description "GPhotoFS is a FUSE file system module to mount your camera as
+a file system on Linux. This allow using your camera with any tool able to read
+from a mounted file system.")
(home-page "http://www.gphoto.org/proj/gphotofs/")
(license license:gpl2+)))
(define-public bcachefs-tools
- (let ((commit "ab2f1ec24f5307b0cf1e3c4ad19bf350d9f54d9f")
- (revision "0"))
+ (let ((commit "742dbbdbb90efb786f05a8576917fcd0e9cbd57e")
+ (revision "1"))
(package
(name "bcachefs-tools")
(version (git-version "0.1" revision commit))
(commit commit)))
(file-name (git-file-name name version))
(sha256
- (base32 "10pafvaxg1lvwnqjv3a4rsi96bghbpcsgh3vhqilndi334k3b0hd"))))
+ (base32 "0kn8y3kqylz6scv47mzfmwrlh21kbb14z5vs65vks8w50i26sxnc"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
- (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+ (list ,(string-append "VERSION=" version) ; bogus vX.Y-nogit otherwise
+ (string-append "PREFIX=" (assoc-ref %outputs "out"))
"INITRAMFS_DIR=$(PREFIX)/share/initramfs-tools"
"CC=gcc"
"PYTEST=pytest")
("python-pytest" ,python-pytest)
("valgrind" ,valgrind)))
(inputs
- `(("keyutils" ,keyutils)
+ `(("eudev" ,eudev)
+ ("keyutils" ,keyutils)
("libaio" ,libaio)
("libscrypt" ,libscrypt)
("libsodium" ,libsodium)
(define-public exfatprogs
(package
(name "exfatprogs")
- (version "1.0.3")
+ (version "1.0.4")
(source
(origin
(method git-fetch)
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "1s47qvhr702z5c19wfqz8cwl9ammmincs7a8vjc6p974wnnjg77y"))))
+ (base32 "1braffz1wc4ki3nb42q85l5zg2dl2hwjr64rk27nc85wcsrbavnl"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(lambda _ (invoke "./autogen.sh"))))))
(native-inputs
`(("pkg-config" ,pkg-config)
- ("libtirpc", libtirpc)
- ("rpcsvc-proto", rpcsvc-proto)
+ ("libtirpc" ,libtirpc)
+ ("rpcsvc-proto" ,rpcsvc-proto)
("python-2" ,python-2) ; must be version 2
("flex" ,flex)
("bison" ,bison)
("cmocka" ,cmocka)))
(inputs
`(("acl" ,acl)
- ("fuse", fuse)
+ ("fuse" ,fuse)
("openssl" ,openssl)
("liburcu" ,liburcu)
("libuuid" ,util-linux "lib")
("libxml2" ,libxml2)
("readline" ,readline)
("zlib" ,zlib)
- ("libaio", libaio)
- ("rdma-core", rdma-core)))
+ ("libaio" ,libaio)
+ ("rdma-core" ,rdma-core)))
(home-page "https://www.gluster.org")
(synopsis "Distributed file system")
(description "GlusterFS is a distributed scalable network file system
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/sahlberg/libnfs.git")
+ (url "https://github.com/sahlberg/libnfs")
(commit (string-append "libnfs-" version))))
(file-name (git-file-name name version))
(sha256
(define-public zfs
(package
(name "zfs")
- (version "0.8.2")
+ (version "0.8.5")
(outputs '("out" "module" "src"))
(source
(origin
"/download/zfs-" version
"/zfs-" version ".tar.gz"))
(sha256
- (base32
- "1f7aig15q3z832pr2n48j3clafic2yk1vvqlh28vpklfghjqwq27"))))
+ (base32 "0gfdnynmsxbhi97q73smrgmcw1k8zmlr1hgljfn38sk0kimivd6v"))))
(build-system linux-module-build-system)
(arguments
`(;; The ZFS kernel module should not be downloaded since the license
(lambda* (#:key outputs inputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "configure"
- (("-/bin/sh") (string-append "-" (which "sh")))
- ((" /bin/sh") (string-append " " (which "sh"))))
+ (("-/bin/sh") (string-append "-" (which "sh"))))
(invoke "./configure"
"--with-config=all"
(string-append "--prefix=" out)
(src (assoc-ref outputs "src"))
(util-linux (assoc-ref inputs "util-linux"))
(nfs-utils (assoc-ref inputs "nfs-utils")))
+ (substitute* "contrib/Makefile.in"
+ ;; This is not configurable nor is its hard-coded /usr prefix.
+ ((" initramfs") ""))
(substitute* "module/zfs/zfs_ctldir.c"
(("/usr/bin/env\", \"umount")
(string-append util-linux "/bin/umount\", \"-n"))
"INSTALL_MOD_STRIP=1")
(install-file "contrib/bash_completion.d/zfs"
(string-append out "/share/bash-completion/completions"))
- (symlink "../share/pkgconfig/" (string-append out "/lib/pkgconfig"))
#t))))))
(native-inputs
`(("attr" ,attr)
(define-public mergerfs
(package
(name "mergerfs")
- (version "2.29.0")
+ (version "2.31.0")
(source
(origin
(method url-fetch)
version "/mergerfs-" version ".tar.gz"))
(sha256
(base32
- "17gizw4vgbqqjd2ykkfpp276942jb5qclp0lkiwkmq1yjgyjqfmk"))))
+ "0k4asbg5n9dhy5jpjkw6simqqnr1zira2y4i71cq05091dfwm90p"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; No tests exist.
;; The Makefile does not allow overriding PREFIX via make variables.
(substitute* '("Makefile" "libfuse/Makefile")
(("= /usr/local") (string-append "= " (assoc-ref outputs "out")))
+ (("= /sbin") "= $(EXEC_PREFIX)/sbin")
;; cannot chown as build user
- (("chown root:root") "true"))
+ (("chown root(:root)?") "true"))
#t)))))
;; mergerfs bundles a heavily modified copy of libfuse.
(inputs `(("util-linux" ,util-linux)))
(home-page "https://github.com/trapexit/mergerfs")
- (synopsis "Featureful union filesystem")
- (description "mergerfs is a union filesystem geared towards simplifying
+ (synopsis "Featureful union file system")
+ (description "mergerfs is a union file system geared towards simplifying
storage and management of files across numerous commodity storage devices. It
is similar to mhddfs, unionfs, and aufs.")
(license (list
))))
(define-public mergerfs-tools
- (let ((commit "c926779d87458d103f3b674603bf97801ae2486d")
- (revision "1"))
+ (let ((commit "480296ed03d1c3c7909697d7ef96d35840ee26b8")
+ (revision "2"))
(package
(name "mergerfs-tools")
;; No released version exists.
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/trapexit/mergerfs-tools.git")
+ (url "https://github.com/trapexit/mergerfs-tools")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
- "04hhwcib0xv4cf1mkj8zrp2aqpxkncml9iqg4m1mz6a5zhzsk0vm"))))
+ "0xr06gi4xcr832rzy0hkp5c1n231s7w5iq1nkjvx9kvm0dl7chpq"))))
(build-system copy-build-system)
(inputs
`(("python" ,python)
compatible directories.")
(home-page "https://github.com/trapexit/mergerfs-tools")
(license license:isc))))
+
+(define-public python-dropbox
+ (package
+ (name "python-dropbox")
+ (version "10.3.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "dropbox" version))
+ (sha256
+ (base32
+ "137rn9fs1bg1p1khd5lcccfxh8jsx27dh2ix5wwd8cmddbrzdrbd"))))
+ (build-system python-build-system)
+ (arguments '(#:tests? #f)) ; Tests require a network connection.
+ (native-inputs
+ `(("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)))
+ (propagated-inputs
+ `(("python-certifi" ,python-certifi)
+ ("python-chardet" ,python-chardet)
+ ("python-requests" ,python-requests)
+ ("python-six" ,python-six)
+ ("python-urllib3" ,python-urllib3)))
+ (home-page "https://www.dropbox.com/developers")
+ (synopsis "Official Dropbox API Client")
+ (description "This package provides a Python SDK for integrating with the
+Dropbox API v2.")
+ (license license:expat)))
+
+(define-public dbxfs
+ (package
+ (name "dbxfs")
+ (version "1.0.43")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "dbxfs" version))
+ (sha256
+ (base32
+ "1f9sy2ax215dxiwszrrcadffjdsmrlxm4kwrbiap9dhxvzm226ks"))
+ (patches (search-patches "dbxfs-remove-sentry-sdk.patch"))))
+ (build-system python-build-system)
+ (arguments
+ '(#:tests? #f)) ; tests requires safefs
+ (propagated-inputs
+ `(("python-appdirs" ,python-appdirs)
+ ("python-block-tracing" ,python-block-tracing)
+ ("python-dropbox" ,python-dropbox)
+ ("python-keyring" ,python-keyring)
+ ("python-keyrings.alt" ,python-keyrings.alt)
+ ("python-privy" ,python-privy)
+ ("python-userspacefs" ,python-userspacefs)))
+ (home-page "https://github.com/rianhunter/dbxfs")
+ (synopsis "User-space file system for Dropbox")
+ (description
+ "@code{dbxfs} allows you to mount your Dropbox folder as if it were a
+local file system using FUSE.")
+ (license license:gpl3+)))