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