Another option to reduce the whistle is to run "powertop --auto-tune"
after boot. Here's a service definition I put into my OS config to
do this:
--8<---------------cut here---------------start------------->8---
(define (powertop-auto-tune-service)
(let ((powertop #~(string-append #$powertop "/sbin/powertop")))
(with-monad %store-monad
(return
(service
(documentation "Run powertop --auto-tune.")
(provision '(powertop-auto-tune))
(requirement '(user-processes))
(start #~(lambda _
(zero? (system* #$powertop "--auto-tune")))))))))
--8<---------------cut here---------------end--------------->8---
And then include (powertop-auto-tune-service) in the 'services' field.
Note, you'll need to import some extra modules at the top of the file:
--8<---------------cut here---------------start------------->8---
(use-modules (gnu)
(gnu services)
(guix gexp)
(guix store)
(guix monads))
--8<---------------cut here---------------end--------------->8---
[...]
My workaround was to add another service that disables the
second CPU core when it gets too hot. Here's the service definition I
used:
--8<---------------cut here---------------start------------->8---
(define (temperature-regulation-service)
(with-monad %store-monad
(return
(service
(documentation "Regulate temperature on an overclocked Libreboot
X60.")
(provision '(temperature-regulation))
(requirement '(user-processes))
(start #~(lambda _
(let ((pid (primitive-fork)))
(if (positive? pid)
pid
(let ()
(define (current-temp)
(call-with-input-file
"/sys/class/thermal/thermal_zone0/temp"
read))
(define (set-cpu1-online! online?)
(call-with-output-file
"/sys/devices/system/cpu/cpu1/online"
(lambda (port)
(write (if online? 1 0) port))))
(let loop ()
(let ((temp (current-temp)))
(cond ((< temp 88000) (set-cpu1-online!
#t))
((> temp 92000) (set-cpu1-online!
#f))))
(sleep 2)
(loop)))))))
(stop #~(make-kill-destructor))
(respawn? #t)))))
--8<---------------cut here---------------end--------------->8---
and as above, you'll need to add (temperature-regulation-service) to
the
services field, and of course run "guix system reconfigure <OS-CONFIG>"
and reboot.