gnu: r-fields: Update to 11.4.
[jackhill/guix/guix.git] / gnu / packages / disk.scm
CommitLineData
e04f30e0 1;;; GNU Guix --- Functional package management for GNU
cc4a2aeb 2;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org>
1b933e62 3;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
dd4a8620 4;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
7ff557a5 5;;; Copyright © 2016, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
39d93ce2 6;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
abba1d08 7;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
c20e552b 8;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
5f0f3686 9;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
49393691 10;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
893f9d24 11;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
d232e02e 12;;; Copyright © 2018 Vasile Dumitrascu <va511e@yahoo.com>
834b0b9a 13;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
19b662ea 14;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
eb44d3b8 15;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
ff22ff42 16;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
a55dd25d 17;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
d441a645 18;;; Copyright © 2020 Pkill -9 <pkill9@runbox.com>
19b10c91 19;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
83fda6dd 20;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
e04f30e0
NK
21;;;
22;;; This file is part of GNU Guix.
23;;;
24;;; GNU Guix is free software; you can redistribute it and/or modify it
25;;; under the terms of the GNU General Public License as published by
26;;; the Free Software Foundation; either version 3 of the License, or (at
27;;; your option) any later version.
28;;;
29;;; GNU Guix is distributed in the hope that it will be useful, but
30;;; WITHOUT ANY WARRANTY; without even the implied warranty of
31;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32;;; GNU General Public License for more details.
33;;;
34;;; You should have received a copy of the GNU General Public License
35;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
36
cc4a2aeb 37(define-module (gnu packages disk)
abba1d08 38 #:use-module (gnu packages)
3820d51b 39 #:use-module (gnu packages autotools)
c20e552b 40 #:use-module (gnu packages base)
3820d51b
TGR
41 #:use-module (gnu packages bash)
42 #:use-module (gnu packages c)
834b0b9a 43 #:use-module (gnu packages check)
3820d51b 44 #:use-module (gnu packages compression)
f95114e5 45 #:use-module (gnu packages crypto)
3820d51b 46 #:use-module (gnu packages cryptsetup)
c20e552b 47 #:use-module (gnu packages docbook)
3820d51b 48 #:use-module (gnu packages documentation)
3b451546 49 #:use-module (gnu packages elf)
159e9dce 50 #:use-module (gnu packages file-systems)
9b1f80a4 51 #:use-module (gnu packages file)
83fda6dd 52 #:use-module (gnu packages fontutils)
1dba6407 53 #:use-module (gnu packages gettext)
c20e552b 54 #:use-module (gnu packages glib)
c20e552b 55 #:use-module (gnu packages gnome)
3820d51b 56 #:use-module (gnu packages gnupg)
83fda6dd 57 #:use-module (gnu packages graphics)
3820d51b
TGR
58 #:use-module (gnu packages gtk)
59 #:use-module (gnu packages guile)
e04f30e0 60 #:use-module (gnu packages linux)
abba1d08 61 #:use-module (gnu packages ncurses)
aff0cce9 62 #:use-module (gnu packages nss)
1b933e62 63 #:use-module (gnu packages perl)
c20e552b 64 #:use-module (gnu packages pkg-config)
abba1d08 65 #:use-module (gnu packages popt)
1b933e62 66 #:use-module (gnu packages python)
44d10b1f 67 #:use-module (gnu packages python-xyz)
cc4a2aeb 68 #:use-module (gnu packages readline)
159e9dce 69 #:use-module (gnu packages samba)
9d0c291e 70 #:use-module (gnu packages sphinx)
cd0322a3 71 #:use-module (gnu packages sqlite)
3820d51b 72 #:use-module (gnu packages swig)
d441a645
P
73 #:use-module (gnu packages terminals)
74 #:use-module (gnu packages textutils)
5f0f3686 75 #:use-module (gnu packages vim)
19b662ea 76 #:use-module (gnu packages w3m)
f7a4f7c0 77 #:use-module (gnu packages web)
3820d51b 78 #:use-module (gnu packages xml)
83fda6dd 79 #:use-module (gnu packages xorg)
3820d51b 80 #:use-module (guix build-system gnu)
b514478c 81 #:use-module (guix build-system glib-or-gtk)
d441a645 82 #:use-module (guix build-system go)
3820d51b
TGR
83 #:use-module (guix build-system python)
84 #:use-module (guix build-system trivial)
3b451546 85 #:use-module (guix build-system scons)
3820d51b
TGR
86 #:use-module (guix download)
87 #:use-module (guix git-download)
88 #:use-module ((guix licenses) #:prefix license:)
89 #:use-module (guix packages))
e04f30e0 90
159e9dce
RG
91(define-public udevil
92 (package
93 (name "udevil")
94 (version "0.4.4")
95 (source
96 (origin
97 (method git-fetch)
98 (uri
99 (git-reference
b0e7b699 100 (url "https://github.com/IgnorantGuru/udevil")
159e9dce
RG
101 (commit version)))
102 (file-name (git-file-name name version))
103 (sha256
104 (base32 "0x9mjr9abvbxzfa9mrip5264iz1qxvsl01k3ybz95q4a7xl4jcb3"))))
105 (build-system gnu-build-system)
106 (arguments
107 `(#:configure-flags
8546f4da
RG
108 (list
109 "--disable-systemd"
110 (string-append "--sysconfdir="
111 (assoc-ref %outputs "out")
112 "/etc")
113 ;; udevil expects these programs to be run with uid set as root.
114 ;; user has to manually add these programs to setuid-programs.
115 ;; mount and umount are default setuid-programs in guix system.
116 "--with-mount-prog=/run/setuid-programs/mount"
117 "--with-umount-prog=/run/setuid-programs/umount"
118 "--with-losetup-prog=/run/setuid-programs/losetup"
119 "--with-setfacl-prog=/run/setuid-programs/setfacl")
159e9dce
RG
120 #:phases
121 (modify-phases %standard-phases
122 (add-after 'unpack 'remove-root-reference
123 (lambda _
124 (substitute* "src/Makefile.in"
125 (("-o root -g root") ""))
8546f4da
RG
126 #t))
127 (add-after 'unpack 'patch-udevil-reference
128 ;; udevil expects itself to be run with uid set as root.
129 ;; devmon also expects udevil to be run with uid set as root.
130 ;; user has to manually add udevil to setuid-programs.
131 (lambda _
132 (substitute* "src/udevil.c"
133 (("/usr/bin/udevil") "/run/setuid-programs/udevil"))
134 (substitute* "src/devmon"
135 (("`which udevil 2>/dev/null`") "/run/setuid-programs/udevil"))
159e9dce
RG
136 #t)))))
137 (native-inputs
138 `(("intltool" ,intltool)
139 ("pkg-config" ,pkg-config)))
140 (inputs
141 `(("cifs-utils" ,cifs-utils)
142 ("curlftpfs" ,curlftpfs)
143 ("eudev" ,eudev)
144 ("fakeroot" ,fakeroot)
145 ("glib" ,glib)
146 ("sshfs" ,sshfs)))
147 (synopsis "Device and file system manager")
148 (description "udevil is a command line program that mounts and unmounts
149removable devices without a password, shows device info, and monitors device
150changes. It can also mount ISO files, NFS, SMB, FTP, SSH and WebDAV URLs, and
151tmpfs/ramfs filesystems.")
152 (home-page "https://ignorantguru.github.io/udevil/")
153 (license license:gpl3+)))
154
e04f30e0
NK
155(define-public parted
156 (package
157 (name "parted")
6ad7e357 158 (version "3.3")
1b933e62
ML
159 (source (origin
160 (method url-fetch)
161 (uri (string-append "mirror://gnu/parted/parted-"
162 version ".tar.xz"))
163 (sha256
164 (base32
6ad7e357 165 "0i1xp367wpqw75b20c3jnism3dg3yqj4a7a22p2jb1h1hyyv9qjp"))))
e04f30e0 166 (build-system gnu-build-system)
1b933e62
ML
167 (arguments
168 `(#:phases
169 (modify-phases %standard-phases
bd321df3
MB
170 (add-after 'unpack 'fix-locales-and-python
171 (lambda* (#:key inputs #:allow-other-keys)
172 (substitute* "tests/t0251-gpt-unicode.sh"
173 (("C.UTF-8") "en_US.utf8")) ;not in Glibc locales
174 (substitute* "tests/msdos-overlap"
175 (("/usr/bin/python") (which "python")))
176 #t)))))
e04f30e0 177 (inputs
1b933e62
ML
178 `(("lvm2" ,lvm2)
179 ("readline" ,readline)
bb93042c 180 ("util-linux" ,util-linux "lib")))
c4c4cc05 181 (native-inputs
b94a6ca0 182 `(("gettext" ,gettext-minimal)
bb93042c 183
1b933e62 184 ;; For the tests.
20e01573 185 ("e2fsprogs" ,e2fsprogs)
1b933e62 186 ("perl" ,perl)
bb93042c
MB
187 ("python" ,python-2)
188 ("util-linux" ,util-linux)))
1b933e62 189 (home-page "https://www.gnu.org/software/parted/")
f50d2669 190 (synopsis "Disk partition editor")
e04f30e0 191 (description
79c311b8
LC
192 "GNU Parted is a package for creating and manipulating disk partition
193tables. It includes a library and command-line utility.")
fd297f4a 194 (license license:gpl3+)))
cc4a2aeb
LC
195
196(define-public fdisk
197 (package
198 (name "fdisk")
ae03ee42 199 (version "2.0.0a1")
cc4a2aeb
LC
200 (source
201 (origin
202 (method url-fetch)
203 (uri (string-append "mirror://gnu/fdisk/gnufdisk-"
204 version ".tar.gz"))
205 (sha256
206 (base32
ae03ee42 207 "1d8za79kw8ihnp2br084rgyjv9whkwp7957rzw815i0izx6xhqy9"))))
cc4a2aeb
LC
208 (build-system gnu-build-system)
209 (inputs
b94a6ca0 210 `(("gettext" ,gettext-minimal)
cc4a2aeb 211 ("guile" ,guile-1.8)
bb93042c 212 ("util-linux" ,util-linux "lib")
cc4a2aeb 213 ("parted" ,parted)))
ae03ee42
TGR
214 ;; The build neglects to look for its own headers in its own tree. A next
215 ;; release should fix this, but may never come: GNU fdisk looks abandoned.
216 (arguments
217 `(#:phases
218 (modify-phases %standard-phases
219 (add-after 'unpack 'skip-broken-header-probes
220 (lambda _
221 (substitute* "backend/configure"
222 (("gnufdisk-common.h .*") "\n"))
223 #t)))
224 #:make-flags (list (string-append "CPPFLAGS="
225 " -I../common/include "
226 " -I../debug/include "
227 " -I../exception/include"))))
cc4a2aeb
LC
228 (home-page "https://www.gnu.org/software/fdisk/")
229 (synopsis "Low-level disk partitioning and formatting")
230 (description
231 "GNU fdisk provides a GNU version of the common disk partitioning tool
232fdisk. fdisk is used for the creation and manipulation of disk partition
233tables, and it understands a variety of different formats.")
fd297f4a 234 (license license:gpl3+)))
cc4a2aeb 235
abba1d08
JN
236(define-public gptfdisk
237 (package
238 (name "gptfdisk")
848be51c 239 (version "1.0.5")
abba1d08
JN
240 (source
241 (origin
242 (method url-fetch)
243 (uri (string-append "mirror://sourceforge/gptfdisk/gptfdisk/"
848be51c 244 version "/gptfdisk-" version ".tar.gz"))
abba1d08 245 (sha256
848be51c 246 (base32 "0bybgp30pqxb6x5krxazkq4drca0gz4inxj89fpyr204rn3kjz8f"))))
abba1d08
JN
247 (build-system gnu-build-system)
248 (inputs
b94a6ca0 249 `(("gettext" ,gettext-minimal)
abba1d08
JN
250 ("ncurses" ,ncurses)
251 ("popt" ,popt)
bb93042c 252 ("util-linux" ,util-linux "lib"))) ;libuuid
abba1d08
JN
253 (arguments
254 `(#:test-target "test"
255 #:phases
256 (modify-phases %standard-phases
848be51c
TGR
257 (add-after 'unpack 'fix-include-directory
258 (lambda _
259 (substitute* "gptcurses.cc"
260 (("ncursesw/ncurses.h") "ncurses.h"))
261 #t))
262 (delete 'configure) ; no configure script
abba1d08 263 (replace 'install
848be51c 264 ;; There's no ‘make install’ target.
abba1d08 265 (lambda* (#:key outputs #:allow-other-keys)
6fb9e069
LF
266 (let* ((out (assoc-ref outputs "out"))
267 (bin (string-append out "/bin"))
268 (man (string-append out "/share/man/man8")))
abba1d08
JN
269 (install-file "gdisk" bin)
270 (install-file "sgdisk" bin)
271 (install-file "cgdisk" bin)
6fb9e069
LF
272 (install-file "fixparts" bin)
273 (install-file "cgdisk.8" man)
274 (install-file "fixparts.8" man)
275 (install-file "gdisk.8" man)
276 (install-file "sgdisk.8" man)))))))
094afc97 277 (home-page "https://www.rodsbooks.com/gdisk/")
abba1d08
JN
278 (synopsis "Low-level GPT disk partitioning and formatting")
279 (description "GPT fdisk (aka gdisk) is a text-mode partitioning tool that
73fe4552
TGR
280works on Globally Unique Identifier (@dfn{GUID}) Partition Table (@dfn{GPT})
281disks, rather than on the older Master Boot Record (@dfn{MBR}) partition
282scheme.")
fd297f4a 283 (license license:gpl2)))
abba1d08 284
cc4a2aeb
LC
285(define-public ddrescue
286 (package
287 (name "ddrescue")
39d93ce2 288 (version "1.25")
cc4a2aeb
LC
289 (source
290 (origin
291 (method url-fetch)
292 (uri (string-append "mirror://gnu/ddrescue/ddrescue-"
293 version ".tar.lz"))
294 (sha256
39d93ce2 295 (base32 "0qqh38izl5ppap9a5izf3hijh94k65s3zbfkczd4b7x04syqwlyf"))))
cc4a2aeb 296 (build-system gnu-build-system)
416c57f0 297 (home-page "https://www.gnu.org/software/ddrescue/ddrescue.html")
cc4a2aeb
LC
298 (synopsis "Data recovery utility")
299 (native-inputs `(("lzip" ,lzip)))
300 (description
301 "GNU ddrescue is a fully automated data recovery tool. It copies data
302from one file to another, working to rescue data in case of read errors. The
303program also includes a tool for manipulating its log files, which are used
304to recover data more efficiently by only reading the necessary blocks.")
fd297f4a 305 (license license:gpl3+)))
dd4a8620
MW
306
307(define-public dosfstools
308 (package
309 (name "dosfstools")
5f0f3686 310 (version "4.1")
dd4a8620
MW
311 (source
312 (origin
313 (method url-fetch)
314 (uri (string-append "https://github.com/" name "/" name
315 "/releases/download/v" version "/"
316 name "-" version ".tar.xz"))
317 (sha256
318 (base32
5f0f3686 319 "0wy13i3i4x2bw1hf5m4fd0myh61f9bcrs035fdlf6gyc1jksrcp6"))))
dd4a8620
MW
320 (build-system gnu-build-system)
321 (arguments
a55dd25d
PL
322 `(#:configure-flags (list "--enable-compat-symlinks")
323 #:make-flags (list (string-append "PREFIX=" %output)
5f0f3686
MB
324 "CC=gcc")))
325 (native-inputs
9fc513ad 326 `(("xxd" ,xxd))) ; for tests
dd4a8620 327 (home-page "https://github.com/dosfstools/dosfstools")
8f65585b 328 (synopsis "Utilities for making and checking MS-DOS FAT file systems")
dd4a8620
MW
329 (description
330 "The dosfstools package includes the mkfs.fat and fsck.fat utilities,
8f65585b 331which respectively make and check MS-DOS FAT file systems.")
fd297f4a 332 (license license:gpl3+)))
0f860464 333
51ad11ad
MB
334(define dosfstools/static
335 (static-package
336 (package (inherit dosfstools))))
337
338(define-public fatfsck/static
339 (package
340 (name "fatfsck-static")
341 (version (package-version dosfstools))
342 (build-system trivial-build-system)
343 (source #f)
344 (arguments
345 `(#:modules ((guix build utils))
346 #:builder
347 (begin
348 (use-modules (guix build utils))
349 (let ((src (string-append (assoc-ref %build-inputs "dosfstools")
350 "/sbin"))
351 (exe "fsck.fat")
352 (bin (string-append (assoc-ref %outputs "out") "/sbin")))
353 (mkdir-p bin)
354 (with-directory-excursion bin
355 (copy-file (string-append src "/" exe) exe)
356 (remove-store-references exe)
357 (chmod exe #o555)
358 ;; Add fsck.vfat symlink to match the Linux driver name.
359 (symlink exe "fsck.vfat")
360 #t)))))
361 (inputs `(("dosfstools" ,dosfstools/static)))
362 (home-page (package-home-page dosfstools))
363 (synopsis "Statically linked fsck.fat from dosfstools")
364 (description "This package provides a statically-linked @command{fsck.fat}
365and a @command{fsck.vfat} compatibility symlink for use in an initrd.")
366 (license (package-license dosfstools))))
367
0f860464
TGR
368(define-public sdparm
369 (package
370 (name "sdparm")
b7afc63f 371 (version "1.11")
0f860464
TGR
372 (source
373 (origin
374 (method url-fetch)
375 (uri (string-append "http://sg.danny.cz/sg/p/"
b7afc63f 376 "sdparm-" version ".tar.xz"))
0f860464 377 (sha256
b7afc63f 378 (base32 "1nqjc4w2w47zavcbf5xmm53x1zbwgljaw1lpajcdi537cgy32fa8"))))
0f860464
TGR
379 (build-system gnu-build-system)
380 (home-page "http://sg.danny.cz/sg/sdparm.html")
381 (synopsis "Provide access to SCSI device parameters")
382 (description
383 "Sdparm reads and modifies SCSI device parameters. These devices can be
384SCSI disks, in which case the role of @command{sdparm} is similar to its
385namesake: the @command{hdparm} utility originally designed for ATA disks.
386However, @command{sdparm} can be used to access parameters on any device that
387uses a SCSI command set. Such devices include CD/DVD drives (irrespective of
388transport), SCSI and ATAPI tape drives, and SCSI enclosures. This utility can
389also send commands associated with starting and stopping the media, loading
390and unloading removable media and some other housekeeping functions.")
fd297f4a 391 (license license:bsd-3)))
8e14e059
TGR
392
393(define-public idle3-tools
394 (package
395 (name "idle3-tools")
396 (version "0.9.1")
397 (source
398 (origin
399 (method url-fetch)
400 (uri (string-append "mirror://sourceforge/idle3-tools/idle3-tools-"
401 version ".tgz"))
402 (sha256
403 (base32
404 "00ia7xq9yldxyl9gz0mr4xa568nav14p0fnv82f2rbbkg060cy4p"))))
405 (build-system gnu-build-system)
406 (arguments
407 `(#:tests? #f ;no test suite
408 #:phases
409 (modify-phases %standard-phases
410 (delete 'configure))
411 #:make-flags (list "CC=gcc"
412 (string-append "manprefix=")
413 (string-append "DESTDIR="
414 (assoc-ref %outputs "out")))))
415 (home-page "http://idle3-tools.sourceforge.net")
416 (synopsis "Change or disable Western Digital hard drives' Idle3 timer")
417 (description
418 "Idle3-tools provides a utility to get, set, or disable the Idle3 timer
419present in many Western Digital hard drives. This timer is part of the
420\"IntelliPark\" feature that stops the disk when not in use. Unfortunately,
421the default timer setting is not well suited to Linux or other *nix systems,
422and can dramatically shorten the lifespan of the drive if left unchecked.")
fd297f4a 423 (license license:gpl3+)))
c20e552b
RJ
424
425(define-public gparted
426 (package
427 (name "gparted")
ee711c7c 428 (version "1.1.0")
c20e552b
RJ
429 (source
430 (origin
431 (method url-fetch)
432 (uri (string-append "mirror://sourceforge/gparted/gparted/gparted-"
433 version "/gparted-" version ".tar.gz"))
434 (sha256
ee711c7c 435 (base32 "092rgwjh1825fal6v3yafq2wr0i61hh0a2n0j4296zn0zdx7pzp2"))))
b514478c 436 (build-system glib-or-gtk-build-system)
c20e552b 437 (arguments
ff22ff42
LF
438 ;; Tests require access to paths outside the build container, such
439 ;; as '/dev/disk/by-id'
440 `(#:tests? #f))
c20e552b 441 (inputs
bb93042c 442 `(("util-linux" ,util-linux "lib")
c20e552b
RJ
443 ("parted" ,parted)
444 ("glib" ,glib)
ff22ff42 445 ("gtkmm" ,gtkmm)
19b10c91 446 ("libxml2" ,libxml2)))
c20e552b
RJ
447 (native-inputs
448 `(("intltool" ,intltool)
3e68e7d2 449 ("itstool" ,itstool)
ff22ff42 450 ("lvm2" ,lvm2) ; for tests
19b10c91 451 ("yelp-tools" ,yelp-tools)
c20e552b 452 ("pkg-config" ,pkg-config)))
d5909be9 453 (home-page "https://gparted.org/")
c20e552b
RJ
454 (synopsis "Partition editor to graphically manage disk partitions")
455 (description "GParted is a GNOME partition editor for creating,
456reorganizing, and deleting disk partitions. It uses libparted from the parted
457project to detect and manipulate partition tables. Optional file system tools
458permit managing file systems not included in libparted.")
459 ;; The home page says GPLv2, but the source code says GPLv2+.
460 (license license:gpl2+)))
49393691 461
893f9d24
SR
462(define-public pydf
463 (package
464 (name "pydf")
465 (version "12")
466 (source
467 (origin
468 (method url-fetch)
469 (uri (pypi-uri "pydf" version))
470 (sha256
471 (base32
472 "0f8ly8xyp93i2hm9c0qjqd4y86nz73axw2f09z01mszwmg1sfivz"))))
473 (build-system python-build-system)
474 (home-page "http://kassiopeia.juls.savba.sk/~garabik/software/pydf/")
475 (synopsis "Colourised @command{df} clone")
476 (description "All-singing, all-dancing, fully colourised @command{df} clone
477written in Python. It displays the amount of disk space available on the
162a1374 478mounted file systems, using different colours for different types of file
893f9d24
SR
479systems. Output format is completely customizable.")
480 (license license:public-domain)))
49393691
HG
481
482(define-public f3
483 (package
484 (name "f3")
3eb278aa 485 (version "7.2")
49393691
HG
486 (source
487 (origin
b3307bfd
TGR
488 (method git-fetch)
489 (uri (git-reference
b0e7b699 490 (url "https://github.com/AltraMayor/f3")
b3307bfd
TGR
491 (commit (string-append "v" version))))
492 (file-name (git-file-name name version))
49393691 493 (sha256
3eb278aa 494 (base32 "1iwdg0r4wkgc8rynmw1qcqz62l0ldgc8lrazq33msxnk5a818jgy"))))
49393691
HG
495 (build-system gnu-build-system)
496 (arguments
af514ead 497 '(#:tests? #f ; no check target
49393691
HG
498 #:make-flags (list "CC=gcc"
499 (string-append "PREFIX=" %output))
500 #:phases
501 (modify-phases %standard-phases
af514ead
TGR
502 (delete 'configure) ; no configure script
503 (add-after 'build 'build-extra
504 (lambda* (#:key make-flags #:allow-other-keys)
505 (apply invoke "make" "extra" make-flags)))
506 (add-after 'build 'install-extra
507 (lambda* (#:key make-flags #:allow-other-keys)
508 (apply invoke "make" "install-extra" make-flags))))))
49393691
HG
509 (inputs
510 `(("eudev" ,eudev)
511 ("parted" ,parted)))
512 (home-page "http://oss.digirati.com.br/f3/")
513 (synopsis "Test real capacity of flash memory cards and such.")
514 (description "F3 (Fight Flash Fraud or Fight Fake Flash) tests the full
515capacity of a flash card (flash drive, flash disk, pendrive). F3 writes to
516the card and then checks if can read it. It will assure you haven't been sold
517a card with a smaller capacity than stated.")
518 (license license:gpl3+)))
9b36e3bf
DM
519
520(define-public python-parted
521 (package
522 (name "python-parted")
cc828164 523 (version "3.11.6")
9b36e3bf
DM
524 (source
525 (origin
455d29dd
TGR
526 (method git-fetch)
527 (uri (git-reference
b0e7b699 528 (url "https://github.com/dcantrell/pyparted")
455d29dd
TGR
529 (commit (string-append "v" version))))
530 (file-name (git-file-name name version))
9b36e3bf 531 (sha256
cc828164 532 (base32 "1xgrqhvn44vr3676j5sy2x3xfv2dzf7vncg25cmrsmkbd49x3z5j"))))
9b36e3bf
DM
533 (build-system python-build-system)
534 (arguments
535 `(#:phases
536 (modify-phases %standard-phases
537 (delete 'check)
538 (add-after 'install 'check
539 (lambda* (#:key outputs inputs #:allow-other-keys)
540 (add-installed-pythonpath inputs outputs)
541 ;; See <https://github.com/dcantrell/pyparted/issues/47>.
542 (substitute* "tests/test__ped_ped.py"
543 (("\"/tmp/temp-device-\"") "self.path"))
544 (invoke "python" "-m" "unittest" "discover" "-v")
545 #t)))))
546 (native-inputs
547 `(("e2fsprogs" ,e2fsprogs)
548 ("pkg-config" ,pkg-config)))
549 (propagated-inputs
550 `(("python-six" ,python-six)))
551 (inputs
552 `(("parted" ,parted)))
553 (home-page "https://github.com/dcantrell/pyparted")
554 (synopsis "Parted bindings for Python")
555 (description "This package provides @code{parted} bindings for Python.")
556 (license license:gpl2+)))
557
d232e02e
VD
558(define-public duperemove
559 (package
560 (name "duperemove")
3d238656 561 (version "0.11.1")
acc6eb89
TGR
562 (source
563 (origin
564 (method git-fetch)
565 (uri (git-reference
b0e7b699 566 (url "https://github.com/markfasheh/duperemove")
acc6eb89
TGR
567 (commit (string-append "v" version))))
568 (sha256
569 (base32 "1scz76pvpljvrpfn176125xwaqwyy4pirlm11sc9spb2hyzknw2z"))
570 (file-name (git-file-name name version))))
d232e02e
VD
571 (build-system gnu-build-system)
572 (native-inputs
573 `(("pkg-config" ,pkg-config)))
574 (inputs
575 `(("glib" ,glib)
576 ("sqlite" ,sqlite)))
577 (arguments
51c4fb00 578 `(#:tests? #f ; no test suite
d232e02e
VD
579 #:phases
580 (modify-phases %standard-phases
51c4fb00 581 (delete 'configure)) ; no configure script
d232e02e
VD
582 #:make-flags (list (string-append "PREFIX=" %output)
583 "CC=gcc")))
584 (home-page "https://github.com/markfasheh/duperemove")
585 (synopsis "Tools for de-duplicating file system data")
586 (description "Duperemove is a simple tool for finding duplicated extents
587and submitting them for deduplication. When given a list of files it will
588hash their contents on a block by block basis and compare those hashes to each
589other, finding and categorizing blocks that match each other. When given the
590@option{-d} option, duperemove will submit those extents for deduplication
591using the Linux kernel extent-same @code{ioctl}.
592
593Duperemove can store the hashes it computes in a @dfn{hash file}. If given an
594existing hash file, duperemove will only compute hashes for those files which
595have changed since the last run. Thus you can run duperemove repeatedly on
596your data as it changes, without having to re-checksum unchanged data.
597
598Duperemove can also take input from the @command{fdupes} program.")
599 (license license:gpl2)))
834b0b9a
EB
600
601(define-public ranger
602 (package
603 (name "ranger")
7ff557a5 604 (version "1.9.3")
834b0b9a
EB
605 (source (origin
606 (method url-fetch)
607 (uri (string-append "https://ranger.github.io/"
608 "ranger-" version ".tar.gz"))
609 (sha256
610 (base32
7ff557a5 611 "0lfjrpv3z4h0knd3v94fijrw2zjba51mrp3mjqx2c98wr428l26f"))))
834b0b9a 612 (build-system python-build-system)
19b662ea
RH
613 (inputs
614 `(("w3m" ,w3m)))
43c97cce
TGR
615 (native-inputs
616 `(("which" ,which)
617
618 ;; For tests.
619 ("python-pytest" ,python-pytest)))
19b662ea 620 (arguments
43c97cce
TGR
621 '( ;; The 'test' target runs developer tools like pylint, which fail.
622 #:test-target "test_pytest"
19b662ea
RH
623 #:phases
624 (modify-phases %standard-phases
625 (add-after 'configure 'wrap-program
626 ;; Tell 'ranger' where 'w3mimgdisplay' is.
627 (lambda* (#:key inputs outputs #:allow-other-keys)
628 (let* ((out (assoc-ref outputs "out"))
629 (ranger (string-append out "/bin/ranger"))
630 (w3m (assoc-ref inputs "w3m"))
631 (w3mimgdisplay (string-append w3m
632 "/libexec/w3m/w3mimgdisplay")))
633 (wrap-program ranger
634 `("W3MIMGDISPLAY_PATH" ":" prefix (,w3mimgdisplay)))
3d0fdb34
TGR
635 #t)))
636 (replace 'check
43c97cce
TGR
637 ;; The default check phase simply prints 'Ran 0 tests in 0.000s'.
638 (lambda* (#:key test-target #:allow-other-keys)
639 (invoke "make" test-target))))))
834b0b9a
EB
640 (home-page "https://ranger.github.io/")
641 (synopsis "Console file manager")
adfc742c
EB
642 (description "ranger is a console file manager with Vi key bindings. It
643provides a minimalistic and nice curses interface with a view on the directory
644hierarchy. It ships with @code{rifle}, a file launcher that is good at
645automatically finding out which program to use for what file type.")
834b0b9a 646 (license license:gpl3)))
dedc0d0b
PN
647
648(define-public volume-key
649 (package
650 (name "volume-key")
8984dbd0 651 (version "0.3.12")
dedc0d0b
PN
652 (source (origin
653 (method url-fetch)
654 (uri (string-append "https://releases.pagure.org/volume_key/volume_key-"
655 version ".tar.xz"))
656 (sha256
657 (base32
8984dbd0 658 "16rhfz6sjwxlmss1plb2wv2i3jq6wza02rmz1d2jrlnsq67p98vc"))))
dedc0d0b
PN
659 (build-system gnu-build-system)
660 (native-inputs
661 `(("pkg-config" ,pkg-config)
dedc0d0b 662 ("swig" ,swig)
8984dbd0 663 ("python" ,python-3))) ; used to generate the Python bindings
dedc0d0b
PN
664 (inputs
665 `(("cryptsetup" ,cryptsetup)
666 ("nss" ,nss)
bb93042c 667 ("libblkid" ,util-linux "lib")
8984dbd0 668 ("lvm2" ,lvm2) ; for "-ldevmapper"
dedc0d0b
PN
669 ("glib" ,glib)
670 ("gpgme" ,gpgme)))
671 (arguments
8984dbd0 672 `(#:tests? #f ; not sure how tests are supposed to pass, even when run manually
dedc0d0b
PN
673 #:phases
674 (modify-phases %standard-phases
675 (add-before 'configure 'patch-python.h-path
676 (lambda* (#:key inputs #:allow-other-keys)
677 (let ((python (assoc-ref inputs "python")))
678 (substitute* "Makefile.in"
679 (("/usr/include/python") (string-append python "/include/python")))
680 #t))))))
681 (home-page "https://pagure.io/volume_key")
682 (synopsis "Manipulate storage volume encryption keys")
683 (description
684 "This package provides a library for manipulating storage volume
685encryption keys and storing them separately from volumes to handle forgotten
686passphrases.")
687 (license license:gpl2)))
f7a4f7c0
PN
688
689(define-public ndctl
690 (package
691 (name "ndctl")
332d053e 692 (version "69")
f7a4f7c0
PN
693 (source (origin
694 (method git-fetch)
695 (uri (git-reference
b0e7b699 696 (url "https://github.com/pmem/ndctl")
f7a4f7c0 697 (commit (string-append "v" version))))
1f033795 698 (file-name (git-file-name name version))
f7a4f7c0
PN
699 (sha256
700 (base32
332d053e 701 "1l7p0ycj27d4z07gf9qp796xpg16kfsg3rwx6plhilbhip1as4w7"))))
f7a4f7c0
PN
702 (build-system gnu-build-system)
703 (native-inputs
704 `(("asciidoc" ,asciidoc)
705 ("automake" ,automake)
706 ("autoconf" ,autoconf)
1f033795 707 ("bash-completion" ,bash-completion)
f7a4f7c0
PN
708 ("docbook-xsl" ,docbook-xsl)
709 ("libtool" ,libtool)
710 ("libxml2" ,libxml2)
711 ("pkg-config" ,pkg-config)
712 ("xmlto" ,xmlto)
1f033795 713 ;; Required for offline docbook generation.
f7a4f7c0
PN
714 ("which" ,which)))
715 (inputs
716 `(("eudev" ,eudev)
717 ("json-c" ,json-c)
f95114e5 718 ("keyutils" ,keyutils)
f7a4f7c0 719 ("kmod" ,kmod)
bb93042c 720 ("util-linux" ,util-linux "lib")))
f7a4f7c0 721 (arguments
1f033795
TGR
722 `(#:configure-flags
723 (list "--disable-asciidoctor" ; use docbook-xsl instead
724 "--without-systemd")
725 #:phases
f7a4f7c0 726 (modify-phases %standard-phases
a926109d 727 (add-after 'unpack 'patch-FHS-file-names
f7a4f7c0 728 (lambda _
f7a4f7c0
PN
729 (substitute* "git-version-gen"
730 (("/bin/sh") (which "sh")))
731 (substitute* "git-version"
a926109d
TGR
732 (("/bin/bash") (which "bash")))
733 #t)))
f7a4f7c0
PN
734 #:make-flags
735 (let ((out (assoc-ref %outputs "out")))
736 (list (string-append "BASH_COMPLETION_DIR=" out
737 "/share/bash-completion/completions")))))
738 (home-page "https://github.com/pmem/ndctl")
739 (synopsis "Manage the non-volatile memory device sub-system in the Linux kernel")
740 (description
741 "This package provides a utility library for managing the
742libnvdimm (non-volatile memory device) sub-system in the Linux kernel.")
743 ;; COPYING says LGPL2.1, but many source files are GPL2 so that's
744 ;; the effective license. Note that some files under ccan/ are
745 ;; covered by BSD-3 or public domain, see the individual folders.
746 (license license:gpl2)))
82aac7c1
PN
747
748(define-public dmraid
749 (package
750 (name "dmraid")
751 (version "1.0.0.rc16-3")
752 (source (origin
753 (method url-fetch)
754 (uri (string-append "https://people.redhat.com/~heinzm/sw/dmraid/src/dmraid-"
755 version ".tar.bz2"))
756 (sha256
757 (base32
758 "1n7vsqvh7y6yvil682q129d21yhb0cmvd5fvsbkza7ypd78inhlk"))))
759 (build-system gnu-build-system)
760 (inputs `(("lvm2" ,lvm2)))
761 (native-inputs `(("which" ,which)))
762 (arguments
763 `(#:tests? #f ; No tests.
22070535
MB
764 ;; Prevent a race condition where some target would attempt to link
765 ;; libdmraid.so before it had been built as reported in
766 ;; <https://bugs.gnu.org/31999#187>.
767 #:parallel-build? #f
82aac7c1
PN
768 #:phases (modify-phases %standard-phases
769 (add-before 'configure 'change-directory
770 (lambda _
771 (chdir (string-append ,version "/dmraid"))
772 (substitute* "make.tmpl.in"
773 (("/bin/sh") (which "sh")))
774 #t)))
775 #:configure-flags (list ;; Make sure programs such as 'dmevent_tool' can
776 ;; find libdmraid.so.
777 (string-append "LDFLAGS=-Wl,-rpath="
778 (assoc-ref %outputs "out")
779 "/lib"))))
780 (home-page "https://people.redhat.com/~heinzm/sw/dmraid/")
781 (synopsis "Device mapper RAID interface")
782 (description
783 "This software supports RAID device discovery, RAID set activation, creation,
784removal, rebuild and display of properties for ATARAID/DDF1 metadata.
785
786@command{dmraid} uses @file{libdevmapper} and the device-mapper kernel runtime
787to create devices with respective mappings for the ATARAID sets discovered.")
788 (license license:gpl2+)))
fac91b39
PN
789
790(define-public libblockdev
791 (package
792 (name "libblockdev")
e6c2c4a0 793 (version "2.24")
fac91b39
PN
794 (source (origin
795 (method url-fetch)
4273a7ef
TGR
796 (uri (string-append "https://github.com/storaged-project/"
797 "libblockdev/releases/download/"
fac91b39
PN
798 version "-1/libblockdev-" version ".tar.gz"))
799 (sha256
800 (base32
e6c2c4a0 801 "0wq7624pnprvfzrf39bq1cybd9lqwawbdg5bm0cchlpgvdq7q86w"))))
fac91b39 802 (build-system gnu-build-system)
99f2c934
BW
803 (arguments
804 `(#:phases
805 (modify-phases %standard-phases
806 (add-after 'unpack 'patch-configuration-directory
807 (lambda* (#:key outputs #:allow-other-keys)
808 (let ((out (assoc-ref outputs "out")))
809 (substitute* "src/lib/blockdev.c"
810 (("/etc/libblockdev/conf.d/" path) (string-append out path)))))))))
fac91b39 811 (native-inputs
7d18deb2
BW
812 `(("gobject-introspection" ,gobject-introspection)
813 ("pkg-config" ,pkg-config)
fac91b39
PN
814 ("python" ,python-wrapper)
815 ("util-linux" ,util-linux)))
816 (inputs
817 `(("btrfs-progs" ,btrfs-progs)
818 ("cryptsetup" ,cryptsetup)
819 ("dosfstools" ,dosfstools)
820 ("dmraid" ,dmraid)
821 ("eudev" ,eudev)
822 ("glib" ,glib)
fac91b39
PN
823 ("kmod" ,kmod)
824 ("libbytesize" ,libbytesize)
825 ("libyaml" ,libyaml)
826 ("lvm2" ,lvm2)
827 ("mdadm" ,mdadm)
828 ("ndctl" ,ndctl)
829 ("nss" ,nss)
830 ("parted" ,parted)
831 ("volume-key" ,volume-key)
832 ;; ("xfsprogs" ,xfsprogs) ; TODO: Package?
833 ))
834 (home-page "https://github.com/storaged-project/libblockdev")
835 (synopsis "Library for manipulating block devices")
836 (description
837 "libblockdev is a C library supporting GObject introspection for
838manipulation of block devices. It has a plugin-based architecture where each
839technology (like LVM, Btrfs, MD RAID, Swap...) is implemented in a separate
840plugin, possibly with multiple implementations (e.g. using LVM CLI or the new
841LVM D-Bus API).")
4273a7ef 842 (license license:lgpl2.1+)))
3b451546
PN
843
844(define-public rmlint
845 (package
846 (name "rmlint")
46c26a73 847 (version "2.10.1")
3b451546
PN
848 (source (origin
849 (method git-fetch)
850 (uri (git-reference
851 (url "https://github.com/sahib/rmlint")
852 (commit (string-append "v" version))))
853 (file-name (git-file-name name version))
854 (sha256
855 (base32
46c26a73 856 "15xfkcw1bkfyf3z8kl23k3rlv702m0h7ghqxvhniynvlwbgh6j2x"))))
3b451546
PN
857 (build-system scons-build-system)
858 (arguments
859 `(#:scons ,scons-python2
860 #:scons-flags (list (string-append "--prefix=" %output)
861 (string-append "--actual-prefix=" %output))
862 #:tests? #f ; No tests?
863 #:phases
864 (modify-phases %standard-phases
865 (add-after 'unpack 'scons-propagate-environment
866 (lambda* (#:key inputs #:allow-other-keys)
867 ;; TODO: `rmlint --gui` fails with
868 ;; "Failed to load shredder: No module named 'shredder'".
869 ;; The GUI might also need extra dependencies, such as
870 ;; python-gobject, python-cairo, dconf, librsvg, gtksourceview3.
871 (substitute* "lib/cmdline.c"
872 (("const char \\*commands\\[\\] = \\{\"python3\", \"python\", NULL\\};")
873 (string-append
874 "const char *commands[] = {\""
875 (assoc-ref inputs "python") "/bin/python"
876 "\", \"python\", NULL};")))
877 ;; By design, SCons does not, by default, propagate
878 ;; environment variables to subprocesses. See:
879 ;; <http://comments.gmane.org/gmane.linux.distributions.nixos/4969>
880 ;; Here, we modify the SConstruct file to arrange for
881 ;; environment variables to be propagated.
882 (substitute* "SConstruct"
883 (("^env = Environment\\(.*\\)" all)
884 (string-append
885 all
886 "\nenv['ENV']=os.environ"))))))))
887 (native-inputs
888 `(("pkg-config" ,pkg-config)
889 ("glib:bin" ,glib "bin")
890 ("python-sphinx" ,python-sphinx)))
891 (inputs
892 `(("python" ,python-wrapper)
893 ("glib" ,glib)
894 ("libelf" ,libelf)
895 ("elfutils" ,elfutils)
896 ("json-glib" ,json-glib)
bb93042c 897 ("libblkid" ,util-linux "lib")))
3b451546 898 (home-page "https://rmlint.rtfd.org")
52beae7b 899 (synopsis "Remove duplicates and other lint from the file system")
3b451546 900 (description "@command{rmlint} finds space waste and other broken things
52beae7b 901on your file system and offers to remove it. @command{rmlint} can find:
3b451546
PN
902
903@itemize
904@item duplicate files and duplicate directories,
905@item non-stripped binaries (i.e. binaries with debug symbols),
906@item broken symbolic links,
907@item empty files and directories,
908@item files with broken user and/or group ID.
909@end itemize\n")
910 (license license:gpl3+)))
d441a645
P
911
912(define-public lf
913 (package
914 (name "lf")
915 (version "13")
916 (source (origin
917 (method git-fetch)
918 (uri (git-reference
b0e7b699 919 (url "https://github.com/gokcehan/lf")
d441a645
P
920 (commit (string-append "r" version))))
921 (file-name (git-file-name name version))
922 (sha256
923 (base32
924 "1ld3q75v8rvp169w5p85z1vznqs9bhck6bm2f6fykxx16hmpb6ga"))))
925 (build-system go-build-system)
926 (native-inputs
927 `(("go-github.com-mattn-go-runewidth" ,go-github.com-mattn-go-runewidth)
928 ("go-github.com-nsf-termbox-go" ,go-github.com-nsf-termbox-go)))
929 (arguments
930 `(#:import-path "github.com/gokcehan/lf"))
931 (home-page "https://github.com/gokcehan/lf")
932 (synopsis "Console file browser similar to Ranger")
933 (description "lf (as in \"list files\") is a terminal file manager
934written in Go. It is heavily inspired by ranger with some missing and
935extra features. Some of the missing features are deliberately omitted
936since they are better handled by external tools.")
937 (license license:expat)))
83fda6dd
RG
938
939(define-public xfe
940 (package
941 (name "xfe")
942 (version "1.43.2")
943 (source
944 (origin
945 (method url-fetch)
946 (uri
26e11cff
NG
947 (string-append "mirror://sourceforge/xfe/xfe/" version "/"
948 "xfe-" version ".tar.gz"))
83fda6dd
RG
949 (sha256
950 (base32 "1fl51k5jm2vrfc2g66agbikzirmp0yb0lqhmsssixfb4mky3hpzs"))))
951 (build-system gnu-build-system)
9b1f80a4
RG
952 (arguments
953 `(#:phases
954 (modify-phases %standard-phases
955 (add-after 'unpack 'patch-bin-dirs
956 (lambda* (#:key inputs #:allow-other-keys)
957 (let* ((bash (assoc-ref inputs "bash"))
958 (coreutils (assoc-ref inputs "coreutils"))
959 (findutils (assoc-ref inputs "findutils"))
960 (file-prog (assoc-ref inputs "file")))
961 (with-directory-excursion "src"
962 (substitute* '("FilePanel.cpp" "help.h" "SearchPanel.cpp"
705a5dcb
RG
963 "startupnotification.cpp" "xfeutils.cpp"
964 "../st/config.h")
9b1f80a4
RG
965 (("/bin/sh" file) (string-append bash file))
966 (("/bin/ls" file) (string-append coreutils file))
967 (("/usr(/bin/du)" _ file) (string-append coreutils file))
968 (("/usr(/bin/sort)" _ file) (string-append coreutils file))
969 (("/usr(/bin/cut)" _ file) (string-append coreutils file))
970 (("/usr(/bin/xargs)" _ file) (string-append findutils file))
971 (("/usr(/bin/file)" _ file) (string-append file-prog file))))
972 #t)))
973 (add-after 'unpack 'patch-share-dirs
974 (lambda* (#:key outputs #:allow-other-keys)
975 (let* ((out (assoc-ref outputs "out"))
705a5dcb
RG
976 (share (string-append out "/share"))
977 (xfe (string-append share "/xfe")))
9b1f80a4
RG
978 (with-directory-excursion "src"
979 (substitute* '("foxhacks.cpp" "help.h" "xfedefs.h"
980 "XFileExplorer.cpp")
705a5dcb
RG
981 (("/(usr|opt)(/local)?/share") share)
982 (("~/.config/xfe") xfe)))
9b1f80a4 983 #t))))))
83fda6dd
RG
984 (native-inputs
985 `(("intltool" ,intltool)
986 ("pkg-config" ,pkg-config)))
987 (inputs
9b1f80a4
RG
988 `(("bash" ,bash)
989 ("coreutils" ,coreutils)
990 ("file" ,file)
991 ("findutils" ,findutils)
992 ("fox" ,fox)
83fda6dd
RG
993 ("freetype" ,freetype)
994 ("x11" ,libx11)
995 ("xcb" ,libxcb)
996 ("xcb-util" ,xcb-util)
997 ("xft" ,libxft)
998 ("xrandr" ,libxrandr)))
83fda6dd 999 (synopsis "File Manager for X-Based Graphical Systems")
9b1f80a4 1000 (description "XFE (X File Explorer) is a file manager for X. It is based on
83fda6dd
RG
1001the popular but discontinued, X Win Commander. It aims to be the file manager
1002of choice for all light thinking Unix addicts!")
1003 (home-page "http://roland65.free.fr/xfe/")
26e11cff 1004 (license license:gpl2+)))
eb44d3b8
PN
1005
1006(define-public hddtemp
1007 (package
1008 (name "hddtemp")
1009 (version "0.3-beta15")
1010 (source (origin
1011 (method url-fetch)
1012 (uri (string-append "mirror://savannah/hddtemp/hddtemp-"
1013 version
1014 ".tar.bz2"))
1015 (sha256
1016 (base32
1017 "0nzgg4nl8zm9023wp4dg007z6x3ir60rwbcapr9ks2al81c431b1"))))
1018 (build-system gnu-build-system)
1019 (arguments
1020 `(#:configure-flags (list (string-append
1021 "--with-db-path="
1022 (assoc-ref %outputs "out")
1023 "/share/hddtemp/hddtemp.db"))
1024 #:phases
1025 (modify-phases %standard-phases
1026 (add-after 'install 'install-db
1027 (lambda* (#:key inputs outputs #:allow-other-keys)
1028 (let ((target (string-append (assoc-ref outputs "out")
1029 "/share/hddtemp/hddtemp.db")))
1030 (mkdir-p (dirname target))
1031 (copy-file (assoc-ref inputs "db") target)))))))
1032 (inputs
1033 `(("db" ,(origin
1034 (method url-fetch)
1035 (uri "mirror://savannah/hddtemp/hddtemp.db")
1036 (sha256
1037 (base32 "1fr6qgns6qv7cr40lic5yqwkkc7yjmmgx8j0z6d93csg3smzhhya"))))))
1038 (home-page "https://savannah.nongnu.org/projects/hddtemp/")
1039 (synopsis "Report the temperature of hard drives from S.M.A.R.T. information")
1040 (description "@command{hddtemp} is a small utility that gives you the
1041temperature of your hard drive by reading S.M.A.R.T. informations (for drives
1042that support this feature).")
1043 (license license:gpl2+)))