summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Schanzenbacher <ryan@rschanz.org>2025-01-21 11:37:34 -0500
committerRyan Schanzenbacher <ryan@rschanz.org>2025-01-21 11:37:34 -0500
commit012e58699d4183dc27e13d60bf9a85e974d45b07 (patch)
tree4e465393d1237f41f5f7063732d213007aeeb387
parentde3f5434bd7a1a323663d88d3b0eca15aa8f46bf (diff)
Added service to periodically clean Downloads folder
-rw-r--r--home-config/home-configuration.scm3
-rw-r--r--modules/ryan-services/file-manager.scm43
2 files changed, 45 insertions, 1 deletions
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 @@
195 (prefer 195 (prefer
196 (family "DejaVu Sans Mono"))))) 196 (family "DejaVu Sans Mono")))))
197 (service home-dbus-service-type) 197 (service home-dbus-service-type)
198 (service downloads-garbage-collector-service-type
199 (downloads-garbage-collector-configuration
200 (user "ryan")))
198 ;;; trying some changes 201 ;;; trying some changes
199 ;(template-files "." 202 ;(template-files "."
200 ;'("spotify-player/app.toml" 203 ;'("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 @@
3 #:use-module (gnu packages base) 3 #:use-module (gnu packages base)
4 #:use-module (gnu services) 4 #:use-module (gnu services)
5 #:use-module (gnu services configuration) 5 #:use-module (gnu services configuration)
6 #:use-module (gnu services shepherd)
6 #:use-module (gnu home services) 7 #:use-module (gnu home services)
7 #:use-module (gnu home services shepherd) 8 #:use-module (gnu home services shepherd)
8 #:use-module (srfi srfi-1) 9 #:use-module (srfi srfi-1)
9 #:use-module (guix gexp)) 10 #:use-module (guix gexp)
11 #:use-module (guix records)
12 #:export (downloads-garbage-collector-service-type
13 downloads-garbage-collector-configuration
14 downloads-garbage-collector-configuration?))
15
16(define-configuration downloads-garbage-collector-configuration
17 (user
18 (string "")
19 "User to run under")
20 (no-serialization))
10 21
11(define-public (home-symlinks files) 22(define-public (home-symlinks files)
12 ;; Simple service to symlink two paths. Treats all paths with HOME prepended 23 ;; Simple service to symlink two paths. Treats all paths with HOME prepended
@@ -23,3 +34,33 @@
23 #f) 34 #f)
24 (symlink full-path1 full-path2))))) 35 (symlink full-path1 full-path2)))))
25 files)) 36 files))
37
38(define downloads-garbage-collector-service
39 (match-record-lambda <downloads-garbage-collector-configuration>
40 (user)
41 (let ((cleanup-command #~(list "find" (string-append "/home/" #$user "/Downloads") "-mtime" "+7" "-exec" "rm" "-rf" "{}" "';'")))
42 (shepherd-service
43 (documentation "Garbage collect downloaded files more than 1 week old for USER.")
44 (provision '(downloads-garbage-collector))
45 ;(requirement '(root))
46 (modules '((shepherd service timer)))
47 (start #~(make-timer-constructor
48 (calendar-event #:hours '(8) #:minutes '(20)
49 #:days-of-week '(tuesday))
50 (command #$cleanup-command)))
51 (stop #~(make-timer-destructor))
52 (actions (list (shepherd-action
53 (name 'trigger)
54 (documentation "Trigger GC in Downloads folder for USER")
55 (procedure #~(lambda _
56 (system (string-join #$cleanup-command " ")))))))))))
57
58(define-public downloads-garbage-collector-service-type
59 (service-type
60 (name 'downloads-garbage-collector)
61 (description "Given a USER, clear files older than 1 week from Downloads folder")
62 (extensions
63 (list
64 (service-extension home-shepherd-service-type
65 (compose list downloads-garbage-collector-service))))
66 (default-value (downloads-garbage-collector-configuration))))