(define-module (suweren update) ;; home-bash-extension ;; home-bash-service-type #:use-module (gnu home services shells) ;; simple-service #:use-module (gnu services)) ;; string (define delete-garbage "sudo guix gc -d 7d") ;; string (define delete-home-generations "guix home delete-generations -d 7d") ;; string (define delete-system-generations "sudo guix system delete-generations -d 7d") ;; string (define guile-load-path "GUILE_LOAD_PATH='$HOME/Szablony/distribution:$HOME/Szablony/deployment'") ;; string (define pull-guix "guix pull") ;; string (define collect-garbage (string-append delete-home-generations " ; " delete-system-generations " ; " delete-garbage)) ;; string -> ;; string (define (system-definition host-name*) (string-append "'(@ (systems " host-name* ") operating-system*)'")) ;; string -> ;; string (define (reconfigure-system system-definition*) (string-append "sudo guix system reconfigure -e " system-definition*)) ;; string -> ;; string (define (test-update reconfigure-system*) (string-append guile-load-path " " reconfigure-system*)) ;; string -> ;; string (define (update-system reconfigure-system*) (string-append pull-guix " ; " reconfigure-system* " ; " collect-garbage)) ;; string -> ;; string -> ;; string -> ;; alist (define (aliases reconfigure-system* test-update* update-system*) `(("collect-garbage" . ,collect-garbage) ("pull-guix" . ,pull-guix) ("reconfigure-system" . ,reconfigure-system*) ("test-system" . ,test-update*) ("update-system" . ,update-system*))) ;; string -> ;; record service (define-public (update-commands host-name*) (let* ((system-definition* (system-definition host-name*)) (reconfigure-system* (reconfigure-system system-definition*)) (test-update* (test-update reconfigure-system*)) (update-system* (update-system reconfigure-system*)) (aliases* (aliases reconfigure-system* test-update* update-system*)) (service-extension* (home-bash-extension (aliases aliases*)))) (simple-service 'update-commands home-bash-service-type service-extension*)))