Compare

de3f5434bd7a1a323663d88d3b0eca15aa8f46bf .. 012e58699d4183dc27e13d60bf9a85e974d45b07 · 1 commits

Changed files

Commits

HashSubjectAuthorDate
012e5869 Added service to periodically clean Downloads folder Ryan Schanzenbacher
diff --git a/home-config/home-configuration.scm b/home-config/home-configuration.scm
index 3e35a56..c837f9e 100644
--- a/home-config/home-configuration.scm
+++ b/home-config/home-configuration.scm
@@ -195,6 +195,9 @@
(prefer
(family "DejaVu Sans Mono")))))
(service home-dbus-service-type)
+ (service downloads-garbage-collector-service-type
+ (downloads-garbage-collector-configuration
+ (user "ryan")))
;;; trying some changes
;(template-files "."
;'("spotify-player/app.toml"
diff --git a/modules/ryan-services/file-manager.scm b/modules/ryan-services/file-manager.scm
index 9f0bdc4..1f76d0e 100644
--- a/modules/ryan-services/file-manager.scm
+++ b/modules/ryan-services/file-manager.scm
@@ -3,10 +3,21 @@
#:use-module (gnu packages base)
#:use-module (gnu services)
#:use-module (gnu services configuration)
+ #:use-module (gnu services shepherd)
#:use-module (gnu home services)
#:use-module (gnu home services shepherd)
#:use-module (srfi srfi-1)
- #:use-module (guix gexp))
+ #:use-module (guix gexp)
+ #:use-module (guix records)
+ #:export (downloads-garbage-collector-service-type
+ downloads-garbage-collector-configuration
+ downloads-garbage-collector-configuration?))
+
+(define-configuration downloads-garbage-collector-configuration
+ (user
+ (string "")
+ "User to run under")
+ (no-serialization))
(define-public (home-symlinks files)
;; Simple service to symlink two paths. Treats all paths with HOME prepended
@@ -23,3 +34,33 @@
#f)
(symlink full-path1 full-path2)))))
files))
+
+(define downloads-garbage-collector-service
+ (match-record-lambda <downloads-garbage-collector-configuration>
+ (user)
+ (let ((cleanup-command #~(list "find" (string-append "/home/" #$user "/Downloads") "-mtime" "+7" "-exec" "rm" "-rf" "{}" "';'")))
+ (shepherd-service
+ (documentation "Garbage collect downloaded files more than 1 week old for USER.")
+ (provision '(downloads-garbage-collector))
+ ;(requirement '(root))
+ (modules '((shepherd service timer)))
+ (start #~(make-timer-constructor
+ (calendar-event #:hours '(8) #:minutes '(20)
+ #:days-of-week '(tuesday))
+ (command #$cleanup-command)))
+ (stop #~(make-timer-destructor))
+ (actions (list (shepherd-action
+ (name 'trigger)
+ (documentation "Trigger GC in Downloads folder for USER")
+ (procedure #~(lambda _
+ (system (string-join #$cleanup-command " ")))))))))))
+
+(define-public downloads-garbage-collector-service-type
+ (service-type
+ (name 'downloads-garbage-collector)
+ (description "Given a USER, clear files older than 1 week from Downloads folder")
+ (extensions
+ (list
+ (service-extension home-shepherd-service-type
+ (compose list downloads-garbage-collector-service))))
+ (default-value (downloads-garbage-collector-configuration))))