summary refs log tree commit diff
path: root/gnu/packages/disk.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/disk.scm')
-rw-r--r--gnu/packages/disk.scm311
1 files changed, 169 insertions, 142 deletions
diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm
index 7d6f3811dd..1a196f4b40 100644
--- a/gnu/packages/disk.scm
+++ b/gnu/packages/disk.scm
@@ -21,6 +21,7 @@
 ;;; Copyright © 2021 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
 ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2021 Justin Veilleux <terramorpha@cock.li>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -58,6 +59,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages golang)
   #:use-module (gnu packages graphics)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
@@ -65,10 +67,12 @@
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages nss)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages perl-web)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages samba)
   #:use-module (gnu packages serialization)
@@ -89,6 +93,7 @@
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system scons)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
@@ -140,7 +145,7 @@
                                  "/share/man/man8"))
                  #t))))))
       (native-inputs
-       `(("pkg-config" ,pkg-config)))
+       (list pkg-config))
       (inputs
        `(("util-linux:lib" ,util-linux "lib"))) ; libblkid
       (home-page "https://bcache.evilpiepirate.org")
@@ -208,15 +213,14 @@ and write-back caching.")
                (("`which udevil 2>/dev/null`") "/run/setuid-programs/udevil"))
              #t)))))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+     (list intltool pkg-config))
     (inputs
-     `(("cifs-utils" ,cifs-utils)
-       ("curlftpfs" ,curlftpfs)
-       ("eudev" ,eudev)
-       ("fakeroot" ,fakeroot)
-       ("glib" ,glib)
-       ("sshfs" ,sshfs)))
+     (list cifs-utils
+           curlftpfs
+           eudev
+           fakeroot
+           glib
+           sshfs))
     (synopsis "Device and file system manager")
     (description "udevil is a command line program that mounts and unmounts
 removable devices without a password, shows device info, and monitors device
@@ -248,9 +252,8 @@ tmpfs/ramfs filesystems.")
                (("/usr/bin/python") (which "python")))
              #t)))))
     (inputs
-     `(("lvm2" ,lvm2)
-       ("readline" ,readline)
-       ("util-linux" ,util-linux "lib")))
+     (list lvm2 readline
+           `(,util-linux "lib")))
     (native-inputs
      `(("gettext" ,gettext-minimal)
 
@@ -334,8 +337,7 @@ tables, and it understands a variety of different formats.")
                (substitute* "autogen.sh"
                  (("\\./configure") "")))))))
       (native-inputs
-       `(("autoconf" ,autoconf)
-         ("automake" ,automake)))
+       (list autoconf automake))
       (home-page "https://github.com/baruch/gpart")
       (synopsis "Guess and recover PC-style partition tables")
       (description
@@ -423,7 +425,7 @@ scheme.")
      `(#:configure-flags (list (string-append "CXX=" ,(cxx-for-target)))))
     (home-page "https://www.gnu.org/software/ddrescue/ddrescue.html")
     (synopsis "Data recovery utility")
-    (native-inputs `(("lzip" ,lzip)))
+    (native-inputs (list lzip))
     (description
      "GNU ddrescue is a fully automated data recovery tool.  It copies data
 from one file to another, working to rescue data in case of read errors.  The
@@ -447,13 +449,12 @@ to recover data more efficiently by only reading the necessary blocks.")
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--enable-compat-symlinks")
-       #:make-flags (list (string-append "PREFIX=" %output)
-                          "CC=gcc")))
+       #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                          (string-append "CC=" ,(cc-for-target)))))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ;; For tests.
-       ("xxd" ,xxd)))
+     (list autoconf automake
+           ;; For tests.
+           xxd))
     (home-page "https://github.com/dosfstools/dosfstools")
     (synopsis "Utilities for making and checking MS-DOS FAT file systems")
     (description
@@ -488,7 +489,7 @@ which respectively make and check MS-DOS FAT file systems.")
              ;; Add fsck.vfat symlink to match the Linux driver name.
              (symlink exe "fsck.vfat")
              #t)))))
-    (inputs `(("dosfstools" ,dosfstools/static)))
+    (inputs (list dosfstools/static))
     (home-page (package-home-page dosfstools))
     (synopsis "Statically linked fsck.fat from dosfstools")
     (description "This package provides a statically-linked @command{fsck.fat}
@@ -569,17 +570,13 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
       ;; as '/dev/disk/by-id'
      `(#:tests? #f))
     (inputs
-     `(("util-linux" ,util-linux "lib")
-       ("parted" ,parted)
-       ("glib" ,glib)
-       ("gtkmm" ,gtkmm)
-       ("libxml2" ,libxml2)))
+     (list `(,util-linux "lib") parted glib gtkmm-3 libxml2))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("itstool" ,itstool)
-       ("lvm2" ,lvm2) ; for tests
-       ("yelp-tools" ,yelp-tools)
-       ("pkg-config" ,pkg-config)))
+     (list intltool
+           itstool
+           lvm2 ; for tests
+           yelp-tools
+           pkg-config))
     (home-page "https://gparted.org/")
     (synopsis "Partition editor to graphically manage disk partitions")
     (description "GParted is a GNOME partition editor for creating,
@@ -637,10 +634,9 @@ systems.  Output format is completely customizable.")
            (lambda* (#:key make-flags #:allow-other-keys)
              (apply invoke "make" "install-extra" make-flags))))))
     (inputs
-     `(("eudev" ,eudev)
-       ("parted" ,parted)))
+     (list eudev parted))
     (home-page "http://oss.digirati.com.br/f3/")
-    (synopsis "Test real capacity of flash memory cards and such.")
+    (synopsis "Test real capacity of flash memory cards and such")
     (description "F3 (Fight Flash Fraud or Fight Fake Flash) tests the full
 capacity of a flash card (flash drive, flash disk, pendrive).  F3 writes to
 the card and then checks if can read it.  It will assure you haven't been sold
@@ -674,12 +670,11 @@ a card with a smaller capacity than stated.")
              (invoke "python" "-m" "unittest" "discover" "-v")
              #t)))))
     (native-inputs
-     `(("e2fsprogs" ,e2fsprogs)
-       ("pkg-config" ,pkg-config)))
+     (list e2fsprogs pkg-config))
     (propagated-inputs
-     `(("python-six" ,python-six)))
+     (list python-six))
     (inputs
-     `(("parted" ,parted)))
+     (list parted))
     (home-page "https://github.com/dcantrell/pyparted")
     (synopsis "Parted bindings for Python")
     (description "This package provides @code{parted} bindings for Python.")
@@ -700,10 +695,9 @@ a card with a smaller capacity than stated.")
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     (list pkg-config))
     (inputs
-     `(("glib" ,glib)
-       ("sqlite" ,sqlite)))
+     (list glib sqlite))
     (arguments
      `(#:tests? #f                      ; no test suite
        #:phases
@@ -743,12 +737,11 @@ Duperemove can also take input from the @command{fdupes} program.")
                 "0lfjrpv3z4h0knd3v94fijrw2zjba51mrp3mjqx2c98wr428l26f"))))
     (build-system python-build-system)
     (inputs
-     `(("w3m" ,w3m)))
+     (list w3m))
     (native-inputs
-     `(("which" ,which)
-
-       ;; For tests.
-       ("python-pytest" ,python-pytest)))
+     (list which
+           ;; For tests.
+           python-pytest))
     (arguments
      '( ;; The 'test' target runs developer tools like pylint, which fail.
        #:test-target "test_pytest"
@@ -790,9 +783,7 @@ automatically finding out which program to use for what file type.")
                 "16rhfz6sjwxlmss1plb2wv2i3jq6wza02rmz1d2jrlnsq67p98vc"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("swig" ,swig)
-       ("python" ,python-3)))           ; used to generate the Python bindings
+     (list pkg-config swig python-3))           ; used to generate the Python bindings
     (inputs
      `(("cryptsetup" ,cryptsetup)
        ("nss" ,nss)
@@ -821,7 +812,7 @@ passphrases.")
 (define-public ndctl
   (package
     (name "ndctl")
-    (version "71.1")
+    (version "72.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -830,43 +821,47 @@ passphrases.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1vi61bm9wyawklswh9mj9zdp28ar7r97qckwnhgiyila73fb3jx2"))))
+                "1lvrhlad5n43bal053ihgbwr1k4ka2kscrjwr9rs5xnf2vy7204v"))))
     (build-system gnu-build-system)
+    (arguments
+     (list #:configure-flags
+           #~(list "--disable-asciidoctor" ; use docbook-xsl instead
+                   "--without-systemd")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'fix-version
+                 ;; Our VERSION's always better than the build's poor guess.
+                 (lambda _
+                   (with-output-to-file "version"
+                     (lambda _ (display #$version)))))
+               (add-after 'unpack 'patch-FHS-file-names
+                 (lambda _
+                   (substitute* "git-version-gen"
+                     (("/bin/sh") (which "sh")))
+                   (substitute* "git-version"
+                     (("/bin/bash") (which "bash"))))))
+           #:make-flags
+           #~(list (string-append "BASH_COMPLETION_DIR=" #$output
+                                  "/share/bash-completion/completions"))))
     (native-inputs
-     `(("asciidoc" ,asciidoc)
-       ("automake" ,automake)
-       ("autoconf" ,autoconf)
-       ("bash-completion" ,bash-completion)
-       ("docbook-xsl" ,docbook-xsl)
-       ("libtool" ,libtool)
-       ("libxml2" ,libxml2)
-       ("pkg-config" ,pkg-config)
-       ("xmlto" ,xmlto)
-       ;; Required for offline docbook generation.
-       ("which" ,which)))
+     (list asciidoc
+           automake
+           autoconf
+           bash-completion
+           docbook-xsl
+           libtool
+           libxml2
+           pkg-config
+           xmlto
+           ;; Required for offline docbook generation.
+           which))
     (inputs
-     `(("eudev" ,eudev)
-       ("json-c" ,json-c)
-       ("keyutils" ,keyutils)
-       ("kmod" ,kmod)
-       ("util-linux" ,util-linux "lib")))
-    (arguments
-     `(#:configure-flags
-       (list "--disable-asciidoctor"    ; use docbook-xsl instead
-             "--without-systemd")
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'patch-FHS-file-names
-           (lambda _
-             (substitute* "git-version-gen"
-               (("/bin/sh") (which "sh")))
-             (substitute* "git-version"
-               (("/bin/bash") (which "bash")))
-             #t)))
-       #:make-flags
-       (let ((out (assoc-ref %outputs "out")))
-         (list (string-append "BASH_COMPLETION_DIR=" out
-                              "/share/bash-completion/completions")))))
+     (list eudev
+           iniparser
+           json-c
+           keyutils
+           kmod
+           `(,util-linux "lib")))
     (home-page "https://github.com/pmem/ndctl")
     (synopsis "Manage the non-volatile memory device sub-system in the Linux kernel")
     (description
@@ -889,8 +884,8 @@ libnvdimm (non-volatile memory device) sub-system in the Linux kernel.")
                (base32
                 "1n7vsqvh7y6yvil682q129d21yhb0cmvd5fvsbkza7ypd78inhlk"))))
     (build-system gnu-build-system)
-    (inputs `(("lvm2" ,lvm2)))
-    (native-inputs `(("which" ,which)))
+    (inputs (list lvm2))
+    (native-inputs (list which))
     (arguments
      `(#:tests? #f                      ; No tests.
        ;; Prevent a race condition where some target would attempt to link
@@ -922,16 +917,15 @@ to create devices with respective mappings for the ATARAID sets discovered.")
 (define-public libblockdev
   (package
     (name "libblockdev")
-    (version "2.25")
+    (version "2.26")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/storaged-project/"
                                   "libblockdev/releases/download/"
                                   version "-1/libblockdev-" version ".tar.gz"))
-              (patches (search-patches "libblockdev-glib-compat.patch"))
               (sha256
                (base32
-                "0s0nazkpzpn4an00qghjkk9n7gdm5a8dqfr5hfnlk5mk5lma8njm"))))
+                "0sg068jb87ljhn8yazrqxi6ri10ic2sh1lp6ikd2nqxc6l5y3h64"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -947,23 +941,22 @@ to create devices with respective mappings for the ATARAID sets discovered.")
        ("python" ,python-wrapper)
        ("util-linux" ,util-linux)))
     (inputs
-     `(("btrfs-progs" ,btrfs-progs)
-       ("cryptsetup" ,cryptsetup)
-       ("dosfstools" ,dosfstools)
-       ("dmraid" ,dmraid)
-       ("eudev" ,eudev)
-       ("glib" ,glib)
-       ("kmod" ,kmod)
-       ("libbytesize" ,libbytesize)
-       ("libyaml" ,libyaml)
-       ("lvm2" ,lvm2)
-       ("mdadm" ,mdadm)
-       ("ndctl" ,ndctl)
-       ("nss" ,nss)
-       ("parted" ,parted)
-       ("volume-key" ,volume-key)
-       ;; ("xfsprogs" ,xfsprogs) ; TODO: Package?
-       ))
+     (list btrfs-progs
+           cryptsetup
+           dosfstools
+           dmraid
+           eudev
+           glib
+           kmod
+           libbytesize
+           libyaml
+           lvm2
+           mdadm
+           ndctl
+           nss
+           parted
+           volume-key
+           xfsprogs))
     (home-page "https://github.com/storaged-project/libblockdev")
     (synopsis "Library for manipulating block devices")
     (description
@@ -1045,7 +1038,7 @@ on your file system and offers to remove it.  @command{rmlint} can find:
 (define-public lf
   (package
     (name "lf")
-    (version "13")
+    (version "25")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1054,11 +1047,14 @@ on your file system and offers to remove it.  @command{rmlint} can find:
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1ld3q75v8rvp169w5p85z1vznqs9bhck6bm2f6fykxx16hmpb6ga"))))
+                "014cybng6hc9y3ma74hpc1ac3rkz4ydflx8jbmvx81rdd08rzwz7"))))
     (build-system go-build-system)
     (native-inputs
      `(("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth)
-       ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
+       ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)
+       ("go-golang-org-x-term" ,go-golang-org-x-term)
+       ("go-gopkg-in-djherbis-times-v1" ,go-gopkg-in-djherbis-times-v1)
+       ("go-github-com-gdamore-tcell-v2" ,go-github-com-gdamore-tcell-v2)))
     (arguments
      `(#:import-path "github.com/gokcehan/lf"))
     (home-page "https://github.com/gokcehan/lf")
@@ -1123,8 +1119,7 @@ since they are better handled by external tools.")
                    (("~/.config/xfe") xfe)))
                #t))))))
     (native-inputs
-     `(("intltool" ,intltool)
-       ("pkg-config" ,pkg-config)))
+     (list intltool pkg-config))
     (inputs
      `(("bash" ,bash)
        ("coreutils" ,coreutils)
@@ -1190,7 +1185,7 @@ that support this feature).")
 (define-public memkind
   (package
     (name "memkind")
-    (version "1.11.0")
+    (version "1.12.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1198,19 +1193,15 @@ that support this feature).")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
-               (base32
-                "0w5hws12l167mbr4n6a6fl0mhf8mci61fsn55lh2cxz33f7q8n2x"))))
+               (base32 "1s52vl2jlrdc8nxnvf993x9mcag56qxcaniiijhmsv42a26hvjk4"))))
     (build-system gnu-build-system)
     (inputs
-     `(;; memkind patched jemalloc to add je_arenalookupx,
-       ;; je_check_reallocatex--i.e. they forked jemalloc.
-       ;("jemalloc" ,jemalloc)
-       ("ndctl" ,ndctl)
-       ("numactl" ,numactl)))
+     (list ;; memkind patched jemalloc to add je_arenalookupx,
+           ;; je_check_reallocatex--i.e. they forked jemalloc.
+           ;("jemalloc" ,jemalloc)
+           ndctl numactl))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)))
+     (list autoconf automake libtool))
     (arguments
      `(#:configure-flags
        (list (string-append "--docdir=" (assoc-ref %outputs "out")
@@ -1225,8 +1216,7 @@ that support this feature).")
                 (("/bin/sh") (which "sh")))
                (invoke "autoconf")
                (substitute* "configure"
-                (("/bin/sh") (which "sh"))))
-             #t)))))
+                (("/bin/sh") (which "sh")))))))))
     (home-page "https://github.com/memkind/memkind")
     (synopsis "Heap manager with memory kinds (for NUMA)")
     (description "This package provides a user-extensible heap manager
@@ -1235,8 +1225,8 @@ and a partitioning of the heap between kinds of memory (for NUMA).")
     (license license:bsd-3)))
 
 (define-public mmc-utils
-  (let ((commit "e9654ebc4a6a48642848822c4a1355a9de4958d1")
-        (revision "0"))
+  (let ((commit "3969aa4804edb8aed7bcb3c958e49d0c7388b067")
+        (revision "1"))
     (package
       (name "mmc-utils")
       (version (git-version "0.1" revision commit))
@@ -1244,12 +1234,11 @@ and a partitioning of the heap between kinds of memory (for NUMA).")
         (origin
           (method git-fetch)
           (uri (git-reference
-                 (url "https://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git")
+                 (url "https://git.kernel.org/pub/scm/utils/mmc/mmc-utils.git")
                  (commit commit)))
           (file-name (git-file-name name version))
           (sha256
-           (base32
-            "1dbsppsmky0r4z6kxwczrw8pih8bhc2pb61gsvs986r4xy6jr17a"))))
+           (base32 "0pvcm685x63afvp8795jd4vn4zs8psh8bs6j2yvk1kgrawpyk10g"))))
       (build-system gnu-build-system)
       (arguments
        `(#:tests? #f ; No test suite
@@ -1265,7 +1254,8 @@ and a partitioning of the heap between kinds of memory (for NUMA).")
                (let* ((out (assoc-ref outputs "out"))
                       (man1 (string-append out "/share/man/man1")))
                  (install-file "man/mmc.1" man1)))))))
-      (home-page "https://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git/")
+      (home-page
+       "https://www.kernel.org/doc/html/latest/driver-api/mmc/mmc-tools.html")
       (synopsis "Configure MMC storage devices from userspace")
       (description "mmc-utils is a command-line tool for configuring and
 inspecting MMC storage devices from userspace.")
@@ -1294,10 +1284,9 @@ inspecting MMC storage devices from userspace.")
              (invoke "nosetests" "-v"
                      "--exclude" "test_bmap_helpers"))))))
     (native-inputs
-     `(("python-mock" ,python-mock)
-       ("python-nose" ,python-nose)))
+     (list python-mock python-nose))
     (propagated-inputs
-     `(("python-six" ,python-six)))
+     (list python-six))
     (home-page "https://github.com/intel/bmap-tools")
     (synopsis "Create block map for a file or copy a file using block map")
     (description "Bmaptool is a tool for creating the block map (bmap) for a
@@ -1338,15 +1327,9 @@ reliably with @code{bmaptool} than with traditional tools, like @code{dd} or
                     (doc (string-append out "/share/doc/" ,name "-" ,version)))
                (copy-recursively "examples" (string-append doc "/examples"))))))))
     (native-inputs
-     `(("autoconf" ,autoconf)
-       ("automake" ,automake)
-       ("libtool" ,libtool)
-       ("pkg-config" ,pkg-config)))
+     (list autoconf automake libtool pkg-config))
     (inputs
-     `(("cairo" ,cairo)
-       ("pango" ,pango)
-       ("tokyocabinet" ,tokyocabinet)
-       ("ncurses" ,ncurses)))
+     (list cairo pango tokyocabinet ncurses))
     (home-page "http://duc.zevv.nl")
     (synopsis "Library and suite of tools for inspecting disk usage")
     (description "Duc maintains a database of accumulated sizes of
@@ -1356,3 +1339,47 @@ some tools, or create fancy graphs showing you where your bytes are.
 Duc comes with console utilities, ncurses and X11 user interfaces and a CGI
 wrapper for disk usage querying and visualisation.")
     (license license:lgpl3+)))
+
+(define-public qdirstat
+  (package
+    (name "qdirstat")
+    (version "1.8")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/shundhammer/qdirstat")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "079rmy3j0442y5gjh6la6w1j6jaw83wklamrf19yxi20zsm99xs7"))))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (system* "qmake"
+                      (string-append "INSTALL_PREFIX="
+                                     (assoc-ref outputs "out")))))
+         (add-after 'install 'wrap
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (wrap-program (string-append
+                            (assoc-ref outputs "out")
+                            "/bin/qdirstat-cache-writer")
+               `("PERL5LIB" ":" prefix
+                 (,(string-append
+                    (assoc-ref inputs "perl-uri-escape")
+                    "/lib/perl5/site_perl")))))))))
+    (build-system gnu-build-system)
+    (inputs
+     (list bash-minimal
+           perl
+           perl-uri-escape
+           qtbase-5
+           zlib))
+    (synopsis "Storage utilisation visualization tool")
+    (description
+     "QDirStat is a graphical application to show where your disk space has
+gone and to help you to clean it up.")
+    (home-page "https://github.com/shundhammer/qdirstat")
+    (license license:gpl2)))