ambrevar/guix: Add disk-usage-store and delete-store-items.
parent
767dbe8491
commit
2fb7feecbb
|
@ -43,3 +43,32 @@
|
||||||
(defun setup-all ()
|
(defun setup-all ()
|
||||||
(share-setup-files)
|
(share-setup-files)
|
||||||
(publish))
|
(publish))
|
||||||
|
|
||||||
|
(export-always 'disk-usage-store)
|
||||||
|
(defun disk-usage-store (&key (limit 30)
|
||||||
|
dead?)
|
||||||
|
(flet ((size->human (pair)
|
||||||
|
(list (first pair)
|
||||||
|
(sera:format-human-size nil (second pair))))
|
||||||
|
(pair-item-with-disk-usage (path)
|
||||||
|
;; TODO: Replace `du' with native version? `disk-usage' only work on files.
|
||||||
|
(list path
|
||||||
|
(parse-integer
|
||||||
|
(first (first
|
||||||
|
($:tokenize
|
||||||
|
($:run* "du" "-sb" path))))))))
|
||||||
|
(mapcar
|
||||||
|
#'size->human
|
||||||
|
(sera:take
|
||||||
|
limit
|
||||||
|
(sort (mapcar #'pair-item-with-disk-usage
|
||||||
|
(if dead?
|
||||||
|
(alex:flatten ($:tokenize ($:run* "guix" "gc" "--list-dead")))
|
||||||
|
($:directory-listing "/gnu/store" :sort? t)))
|
||||||
|
#'> :key #'second)))))
|
||||||
|
|
||||||
|
(export-always 'delete-store-items)
|
||||||
|
(declaim (ftype (function (cons (or string pathname))) 'delete-store-items))
|
||||||
|
(defun delete-store-items (items)
|
||||||
|
"Garbage-collect items."
|
||||||
|
(apply #'$:run* "guix" "gc" "--delete" items))
|
||||||
|
|
Loading…
Reference in New Issue