Suorita automaattipäivitys aina käynnistyessä
Läppärit ovat lähes aina pois päältä ajastettujen päivitysten aikaan, jolloin ne eivät muuten päivittyisi kohtuullisella tahdilla.
This commit is contained in:
parent
8e54761370
commit
14be6d401f
@ -9,12 +9,14 @@
|
|||||||
#:use-module (gnu services dns)
|
#:use-module (gnu services dns)
|
||||||
#:use-module (gnu services guix)
|
#:use-module (gnu services guix)
|
||||||
#:use-module (gnu services networking)
|
#:use-module (gnu services networking)
|
||||||
|
#:use-module (gnu services shepherd)
|
||||||
#:use-module (gnu services ssh)
|
#:use-module (gnu services ssh)
|
||||||
#:use-module (gnu services sysctl)
|
#:use-module (gnu services sysctl)
|
||||||
#:use-module (gnu services vpn)
|
#:use-module (gnu services vpn)
|
||||||
#:use-module (gnu services xorg)
|
#:use-module (gnu services xorg)
|
||||||
#:use-module (gnu system pam)
|
#:use-module (gnu system pam)
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
|
#:use-module (guix modules)
|
||||||
#:use-module (nongnu packages linux)
|
#:use-module (nongnu packages linux)
|
||||||
#:use-module (nongnu system linux-initrd)
|
#:use-module (nongnu system linux-initrd)
|
||||||
#:use-module (oms channel-file)
|
#:use-module (oms channel-file)
|
||||||
@ -145,6 +147,54 @@ sources=[('xkb', 'fi')]"))
|
|||||||
(create-mount-point? #t)))
|
(create-mount-point? #t)))
|
||||||
%base-file-systems))))
|
%base-file-systems))))
|
||||||
|
|
||||||
|
(define upgrade-if-needed-script
|
||||||
|
(program-file
|
||||||
|
"upgrade-if-needed"
|
||||||
|
(with-imported-modules (source-module-closure
|
||||||
|
'((gnu services herd)
|
||||||
|
(guix config)
|
||||||
|
(guix profiles)))
|
||||||
|
#~(begin
|
||||||
|
(use-modules (gnu services herd)
|
||||||
|
(guix config)
|
||||||
|
(guix profiles)
|
||||||
|
(ice-9 exceptions)
|
||||||
|
(srfi srfi-1)
|
||||||
|
(srfi srfi-19)
|
||||||
|
(srfi srfi-26))
|
||||||
|
|
||||||
|
;; From guix/scripts/system.scm
|
||||||
|
(define %system-profile
|
||||||
|
(string-append %state-directory "/profiles/system"))
|
||||||
|
|
||||||
|
(define (latest-of lst)
|
||||||
|
(reduce (lambda (next largest)
|
||||||
|
(if (time>? next largest) next largest))
|
||||||
|
#f lst))
|
||||||
|
|
||||||
|
(define latest-generation
|
||||||
|
(latest-of (map (cut generation-time %system-profile <>)
|
||||||
|
(profile-generations %system-profile))))
|
||||||
|
|
||||||
|
(define one-week (make-time time-duration 0 (* 7 24 60 60)))
|
||||||
|
|
||||||
|
(define no-generations-exception
|
||||||
|
(make-exception
|
||||||
|
(make-exception-with-message
|
||||||
|
(format #f "No system generations found at '~a'! Not upgrading.~%"
|
||||||
|
%system-profile))
|
||||||
|
(make-external-error)))
|
||||||
|
|
||||||
|
(if (time>? (current-time time-utc)
|
||||||
|
(add-duration
|
||||||
|
(or latest-generation
|
||||||
|
(raise-exception no-generations-exception))
|
||||||
|
one-week))
|
||||||
|
(with-shepherd-action 'unattended-upgrade ('trigger)
|
||||||
|
result result)
|
||||||
|
(format #t "Latest generation is from ~a. No need to upgrade.~%"
|
||||||
|
(date->string (time-utc->date latest-generation))))))))
|
||||||
|
|
||||||
(define-syntax-rule (define-system id os)
|
(define-syntax-rule (define-system id os)
|
||||||
"Extend the operating system OS with unattended upgrades and define a varible
|
"Extend the operating system OS with unattended upgrades and define a varible
|
||||||
ID with the extended system as it's value."
|
ID with the extended system as it's value."
|
||||||
@ -168,7 +218,16 @@ ID with the extended system as it's value."
|
|||||||
"A0C9 1947 734F 076F 5F08 E9FF 257D 284A 2A1D 3A32"))))
|
"A0C9 1947 734F 076F 5F08 E9FF 257D 284A 2A1D 3A32"))))
|
||||||
%default-channels))
|
%default-channels))
|
||||||
(operating-system-expression
|
(operating-system-expression
|
||||||
#~(@ (oms systems) id)))))
|
#~(@ (oms systems) id))))
|
||||||
|
(simple-service
|
||||||
|
'check-upgrade-on-boot
|
||||||
|
shepherd-root-service-type
|
||||||
|
(list (shepherd-service
|
||||||
|
(provision '(upgrade-if-needed))
|
||||||
|
(requirement '(unattended-upgrade))
|
||||||
|
(one-shot? #t)
|
||||||
|
(start #~(make-forkexec-constructor
|
||||||
|
(list #$upgrade-if-needed-script)))))))
|
||||||
(operating-system-user-services base)))))))
|
(operating-system-user-services base)))))))
|
||||||
|
|
||||||
(define-system oms-morn (base-operating-system "OMS-morn"))
|
(define-system oms-morn (base-operating-system "OMS-morn"))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user