gnu: kdenlive: Add missing dependencies.
[jackhill/guix/guix.git] / gnu / packages / disk.scm
index f42f290..79e187e 100644 (file)
 ;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
 ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
-;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
 ;;; Copyright © 2020 Pkill -9 <pkill9@runbox.com>
+;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
+  #:use-module (gnu packages file-systems)
+  #:use-module (gnu packages file)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages graphics)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages linux)
@@ -60,6 +66,7 @@
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages samba)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages swig)
@@ -69,7 +76,9 @@
   #:use-module (gnu packages w3m)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system go)
   #:use-module (guix build-system python)
   #:use-module (guix build-system trivial)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages))
 
+(define-public udevil
+  (package
+    (name "udevil")
+    (version "0.4.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/IgnorantGuru/udevil")
+         (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0x9mjr9abvbxzfa9mrip5264iz1qxvsl01k3ybz95q4a7xl4jcb3"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        "--disable-systemd"
+        (string-append "--sysconfdir="
+                       (assoc-ref %outputs "out")
+                       "/etc")
+        ;; udevil expects these programs to be run with uid set as root.
+        ;; user has to manually add these programs to setuid-programs.
+        ;; mount and umount are default setuid-programs in guix system.
+        "--with-mount-prog=/run/setuid-programs/mount"
+        "--with-umount-prog=/run/setuid-programs/umount"
+        "--with-losetup-prog=/run/setuid-programs/losetup"
+        "--with-setfacl-prog=/run/setuid-programs/setfacl")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'remove-root-reference
+           (lambda _
+             (substitute* "src/Makefile.in"
+               (("-o root -g root") ""))
+             #t))
+         (add-after 'unpack 'patch-udevil-reference
+           ;; udevil expects itself to be run with uid set as root.
+           ;; devmon also expects udevil to be run with uid set as root.
+           ;; user has to manually add udevil to setuid-programs.
+           (lambda _
+             (substitute* "src/udevil.c"
+               (("/usr/bin/udevil") "/run/setuid-programs/udevil"))
+             (substitute* "src/devmon"
+               (("`which udevil 2>/dev/null`") "/run/setuid-programs/udevil"))
+             #t)))))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("cifs-utils" ,cifs-utils)
+       ("curlftpfs" ,curlftpfs)
+       ("eudev" ,eudev)
+       ("fakeroot" ,fakeroot)
+       ("glib" ,glib)
+       ("sshfs" ,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
+changes.  It can also mount ISO files, NFS, SMB, FTP, SSH and WebDAV URLs, and
+tmpfs/ramfs filesystems.")
+    (home-page "https://ignorantguru.github.io/udevil/")
+    (license license:gpl3+)))
+
 (define-public parted
   (package
     (name "parted")
     (inputs
      `(("lvm2" ,lvm2)
        ("readline" ,readline)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux "lib")))
     (native-inputs
      `(("gettext" ,gettext-minimal)
+
        ;; For the tests.
        ("e2fsprogs" ,e2fsprogs)
        ("perl" ,perl)
-       ("python" ,python-2)))
+       ("python" ,python-2)
+       ("util-linux" ,util-linux)))
     (home-page "https://www.gnu.org/software/parted/")
     (synopsis "Disk partition editor")
     (description
@@ -134,7 +209,7 @@ tables.  It includes a library and command-line utility.")
     (inputs
      `(("gettext" ,gettext-minimal)
        ("guile" ,guile-1.8)
-       ("util-linux" ,util-linux)
+       ("util-linux" ,util-linux "lib")
        ("parted" ,parted)))
     ;; The build neglects to look for its own headers in its own tree.  A next
     ;; release should fix this, but may never come: GNU fdisk looks abandoned.
@@ -174,7 +249,7 @@ tables, and it understands a variety of different formats.")
      `(("gettext" ,gettext-minimal)
        ("ncurses" ,ncurses)
        ("popt" ,popt)
-       ("util-linux" ,util-linux)))     ; libuuid
+       ("util-linux" ,util-linux "lib"))) ;libuuid
     (arguments
      `(#:test-target "test"
        #:phases
@@ -293,15 +368,14 @@ and a @command{fsck.vfat} compatibility symlink for use in an initrd.")
 (define-public sdparm
   (package
     (name "sdparm")
-    (version "1.10")
+    (version "1.11")
     (source
      (origin
        (method url-fetch)
        (uri (string-append "http://sg.danny.cz/sg/p/"
-                           name "-" version ".tar.xz"))
+                           "sdparm-" version ".tar.xz"))
        (sha256
-        (base32
-         "1jjq3lzgfy4r76rc26q02lv4wm5cb4dx5nh913h489zjrr4f3jbx"))))
+        (base32 "1nqjc4w2w47zavcbf5xmm53x1zbwgljaw1lpajcdi537cgy32fa8"))))
     (build-system gnu-build-system)
     (home-page "http://sg.danny.cz/sg/sdparm.html")
     (synopsis "Provide access to SCSI device parameters")
@@ -359,22 +433,22 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
                            version "/gparted-" version ".tar.gz"))
        (sha256
         (base32 "092rgwjh1825fal6v3yafq2wr0i61hh0a2n0j4296zn0zdx7pzp2"))))
-    (build-system gnu-build-system)
+    (build-system glib-or-gtk-build-system)
     (arguments
       ;; Tests require access to paths outside the build container, such
       ;; as '/dev/disk/by-id'
      `(#:tests? #f))
     (inputs
-     `(("util-linux" ,util-linux)
+     `(("util-linux" ,util-linux "lib")
        ("parted" ,parted)
        ("glib" ,glib)
        ("gtkmm" ,gtkmm)
-       ("libxml2" ,libxml2)
-       ("yelp-tools" ,yelp-tools)))
+       ("libxml2" ,libxml2)))
     (native-inputs
      `(("intltool" ,intltool)
        ("itstool" ,itstool)
        ("lvm2" ,lvm2) ; for tests
+       ("yelp-tools" ,yelp-tools)
        ("pkg-config" ,pkg-config)))
     (home-page "https://gparted.org/")
     (synopsis "Partition editor to graphically manage disk partitions")
@@ -413,7 +487,7 @@ systems.  Output format is completely customizable.")
      (origin
       (method git-fetch)
       (uri (git-reference
-            (url "https://github.com/AltraMayor/f3.git")
+            (url "https://github.com/AltraMayor/f3")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
@@ -446,16 +520,16 @@ a card with a smaller capacity than stated.")
 (define-public python-parted
   (package
     (name "python-parted")
-    (version "3.11.2")
+    (version "3.11.6")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/dcantrell/pyparted.git")
+             (url "https://github.com/dcantrell/pyparted")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "0r6916n3w4vldxrq30a3z2iagvxgly4vfmlidjm65vwqnyv17bvn"))))
+        (base32 "1xgrqhvn44vr3676j5sy2x3xfv2dzf7vncg25cmrsmkbd49x3z5j"))))
     (build-system python-build-system)
     (arguments
      `(#:phases
@@ -481,9 +555,6 @@ a card with a smaller capacity than stated.")
     (description "This package provides @code{parted} bindings for Python.")
     (license license:gpl2+)))
 
-(define-public python2-parted
-  (package-with-python2 python-parted))
-
 (define-public duperemove
   (package
     (name "duperemove")
@@ -492,7 +563,7 @@ a card with a smaller capacity than stated.")
      (origin
        (method git-fetch)
        (uri (git-reference
-             (url "https://github.com/markfasheh/duperemove.git")
+             (url "https://github.com/markfasheh/duperemove")
              (commit (string-append "v" version))))
        (sha256
         (base32 "1scz76pvpljvrpfn176125xwaqwyy4pirlm11sc9spb2hyzknw2z"))
@@ -593,7 +664,7 @@ automatically finding out which program to use for what file type.")
     (inputs
      `(("cryptsetup" ,cryptsetup)
        ("nss" ,nss)
-       ("libblkid" ,util-linux)
+       ("libblkid" ,util-linux "lib")
        ("lvm2" ,lvm2)                   ; for "-ldevmapper"
        ("glib" ,glib)
        ("gpgme" ,gpgme)))
@@ -618,16 +689,16 @@ passphrases.")
 (define-public ndctl
   (package
     (name "ndctl")
-    (version "67")
+    (version "69")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/pmem/ndctl.git")
+                    (url "https://github.com/pmem/ndctl")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "076jgw1g2aafqgnq705in0wnabysqk46dq5yxdv1qzgjmyhka39n"))))
+                "1l7p0ycj27d4z07gf9qp796xpg16kfsg3rwx6plhilbhip1as4w7"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("asciidoc" ,asciidoc)
@@ -646,7 +717,7 @@ passphrases.")
        ("json-c" ,json-c)
        ("keyutils" ,keyutils)
        ("kmod" ,kmod)
-       ("util-linux" ,util-linux)))
+       ("util-linux" ,util-linux "lib")))
     (arguments
      `(#:configure-flags
        (list "--disable-asciidoctor"    ; use docbook-xsl instead
@@ -719,7 +790,7 @@ to create devices with respective mappings for the ATARAID sets discovered.")
 (define-public libblockdev
   (package
     (name "libblockdev")
-    (version "2.23")
+    (version "2.24")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/storaged-project/"
@@ -727,10 +798,19 @@ to create devices with respective mappings for the ATARAID sets discovered.")
                                   version "-1/libblockdev-" version ".tar.gz"))
               (sha256
                (base32
-                "15c7g2gbkahmy8c6677pvbvblan5h8jxcqqmn6nlvqwqynq2mkjm"))))
+                "0wq7624pnprvfzrf39bq1cybd9lqwawbdg5bm0cchlpgvdq7q86w"))))
     (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-configuration-directory
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+              (substitute* "src/lib/blockdev.c"
+               (("/etc/libblockdev/conf.d/" path) (string-append out path)))))))))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
+     `(("gobject-introspection" ,gobject-introspection)
+       ("pkg-config" ,pkg-config)
        ("python" ,python-wrapper)
        ("util-linux" ,util-linux)))
     (inputs
@@ -740,7 +820,6 @@ to create devices with respective mappings for the ATARAID sets discovered.")
        ("dmraid" ,dmraid)
        ("eudev" ,eudev)
        ("glib" ,glib)
-       ("gobject-introspection" ,gobject-introspection)
        ("kmod" ,kmod)
        ("libbytesize" ,libbytesize)
        ("libyaml" ,libyaml)
@@ -765,7 +844,7 @@ LVM D-Bus API).")
 (define-public rmlint
   (package
     (name "rmlint")
-    (version "2.9.0")
+    (version "2.10.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -774,7 +853,7 @@ LVM D-Bus API).")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1b5cziam14h80xrfb285fmfrzz2rligxcpsq1xsig14xf4l2875i"))))
+                "15xfkcw1bkfyf3z8kl23k3rlv702m0h7ghqxvhniynvlwbgh6j2x"))))
     (build-system scons-build-system)
     (arguments
      `(#:scons ,scons-python2
@@ -815,7 +894,7 @@ LVM D-Bus API).")
        ("libelf" ,libelf)
        ("elfutils" ,elfutils)
        ("json-glib" ,json-glib)
-       ("libblkid" ,util-linux)))
+       ("libblkid" ,util-linux "lib")))
     (home-page "https://rmlint.rtfd.org")
     (synopsis "Remove duplicates and other lint from the file system")
     (description "@command{rmlint} finds space waste and other broken things
@@ -837,7 +916,7 @@ on your file system and offers to remove it.  @command{rmlint} can find:
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/gokcehan/lf.git")
+                    (url "https://github.com/gokcehan/lf")
                     (commit (string-append "r" version))))
               (file-name (git-file-name name version))
               (sha256
@@ -856,3 +935,109 @@ written in Go.  It is heavily inspired by ranger with some missing and
 extra features.  Some of the missing features are deliberately omitted
 since they are better handled by external tools.")
     (license license:expat)))
+
+(define-public xfe
+  (package
+    (name "xfe")
+    (version "1.43.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://sourceforge/xfe/xfe/" version "/"
+                       "xfe-" version ".tar.gz"))
+       (sha256
+        (base32 "1fl51k5jm2vrfc2g66agbikzirmp0yb0lqhmsssixfb4mky3hpzs"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-bin-dirs
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((bash (assoc-ref inputs "bash"))
+                    (coreutils (assoc-ref inputs "coreutils"))
+                    (findutils (assoc-ref inputs "findutils"))
+                    (file-prog (assoc-ref inputs "file")))
+               (with-directory-excursion "src"
+                 (substitute* '("FilePanel.cpp" "help.h" "SearchPanel.cpp"
+                                "startupnotification.cpp" "xfeutils.cpp"
+                                "../st/config.h")
+                   (("/bin/sh" file) (string-append bash file))
+                   (("/bin/ls" file) (string-append coreutils file))
+                   (("/usr(/bin/du)" _ file) (string-append coreutils file))
+                   (("/usr(/bin/sort)" _ file) (string-append coreutils file))
+                   (("/usr(/bin/cut)" _ file) (string-append coreutils file))
+                   (("/usr(/bin/xargs)" _ file) (string-append findutils file))
+                   (("/usr(/bin/file)" _ file) (string-append file-prog file))))
+               #t)))
+         (add-after 'unpack 'patch-share-dirs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (share (string-append out "/share"))
+                    (xfe (string-append share "/xfe")))
+               (with-directory-excursion "src"
+                 (substitute* '("foxhacks.cpp" "help.h" "xfedefs.h"
+                                "XFileExplorer.cpp")
+                   (("/(usr|opt)(/local)?/share") share)
+                   (("~/.config/xfe") xfe)))
+               #t))))))
+    (native-inputs
+     `(("intltool" ,intltool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("bash" ,bash)
+       ("coreutils" ,coreutils)
+       ("file" ,file)
+       ("findutils" ,findutils)
+       ("fox" ,fox)
+       ("freetype" ,freetype)
+       ("x11" ,libx11)
+       ("xcb" ,libxcb)
+       ("xcb-util" ,xcb-util)
+       ("xft" ,libxft)
+       ("xrandr" ,libxrandr)))
+    (synopsis "File Manager for X-Based Graphical Systems")
+    (description "XFE (X File Explorer) is a file manager for X.  It is based on
+the popular but discontinued, X Win Commander.  It aims to be the file manager
+of choice for all light thinking Unix addicts!")
+    (home-page "http://roland65.free.fr/xfe/")
+    (license license:gpl2+)))
+
+(define-public hddtemp
+  (package
+    (name "hddtemp")
+    (version "0.3-beta15")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://savannah/hddtemp/hddtemp-"
+                                  version
+                                  ".tar.bz2"))
+              (sha256
+               (base32
+                "0nzgg4nl8zm9023wp4dg007z6x3ir60rwbcapr9ks2al81c431b1"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags (list (string-append
+                                "--with-db-path="
+                                (assoc-ref %outputs "out")
+                                "/share/hddtemp/hddtemp.db"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'install-db
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((target (string-append (assoc-ref outputs "out")
+                                          "/share/hddtemp/hddtemp.db")))
+               (mkdir-p (dirname target))
+               (copy-file (assoc-ref inputs "db") target)))))))
+    (inputs
+     `(("db" ,(origin
+                (method url-fetch)
+                (uri "mirror://savannah/hddtemp/hddtemp.db")
+                (sha256
+                 (base32 "1fr6qgns6qv7cr40lic5yqwkkc7yjmmgx8j0z6d93csg3smzhhya"))))))
+    (home-page "https://savannah.nongnu.org/projects/hddtemp/")
+    (synopsis "Report the temperature of hard drives from S.M.A.R.T. information")
+    (description "@command{hddtemp} is a small utility that gives you the
+temperature of your hard drive by reading S.M.A.R.T. informations (for drives
+that support this feature).")
+    (license license:gpl2+)))