(define-module (suweren update) #:use-module (gnu home services shells) #:use-module (gnu services)) (define-public (update-commands system user) (let* ((allow-downgrades "--allow-downgrades ") (and "&& ") (collect-garbage "sudo guix gc -d 7d ") (pull-guix "guix pull ") (reconfigure-home (string-append "guix home delete-generations 7d ; " "guix home reconfigure -e " "'((@ (users " user ") " user "-home-environment) \"" system "\")' ")) (reconfigure-system (string-append "sudo guix system delete-generations 7d ; " "sudo guix system reconfigure -e " "'(@ (systems " system " system-configuration) " system ")' ")) (reupdate-system (string-append pull-guix allow-downgrades and reconfigure-system allow-downgrades and reconfigure-home allow-downgrades and collect-garbage)) (update-system (string-append pull-guix and reconfigure-system and reconfigure-home and collect-garbage)) (aliases `(("collect-garbage" . ,collect-garbage) ("pull-guix" . ,pull-guix) ("reconfigure-home" . ,reconfigure-home) ("reconfigure-system" . ,reconfigure-system) ("update-system" . ,update-system) ("reupdate-system" . ,reupdate-system))) (value (home-bash-extension (aliases aliases)))) (simple-service 'update-commands home-bash-service-type value)))