ŹRÓDŁO Skoro mój system kompiluje paczki jednowątkowo, to powinien również być ustawiony na równoległą budowę wielu derywacji Guix.

ŹRÓDŁO --max-jobs=n -M n Pozwala na maksymalnie n równoległych budów. Domyślną wartością jest 1. Ustawienie 0 znaczy, że żadne budowy nie będą wykonywane lokalnie; zamiast tego, usługa zleci zdalne budowy lub po prostu zgłosi niepowodzenie.

Licza procesów budowy powinna być równa liczbie dostępnych procesorów. Ustalenie tej liczby procesorów powinno odbywać się w trakcie uruchamiania usługi Guix, ponieważ budowa tej usługi może odbywać się na innej maszynie. Istnieje też scenariusz uruchamiania tej samej usługi na różnych maszynach, na przykład z nośnika instalacyjnego.


ŹRÓDŁO Implementacja polega na edycji procedury guix w module (sovereign systems). Do uzyskania liczby procesorów najlepiej użyć polecenia nproc zainstalowanego przez coreutils.

(define (guix configuration)
  (gnu:services:base:guix-configuration
    (inherit         configuration)
    (authorized-keys sovereign:channels:default-authorized-guix-keys)
    (substitute-urls sovereign:channels:default-substitute-urls)
    (channels        sovereign:channels:default-channels)
    (discover?       #t)
    (extra-options   (list "--cores=1"
                           "--gc-keep-derivations=yes"
                           "--gc-keep-outputs=yes"))))

Jeśli dobrze rozumiem implementację konfiguracji usługi Guix, do osiągnięcia zamierzonego celu wystarczy dodać ciąg --max-jobs=$(nproc).

(define (guix configuration)
  (gnu:services:base:guix-configuration
    (inherit         configuration)
    (authorized-keys sovereign:channels:default-authorized-guix-keys)
    (substitute-urls sovereign:channels:default-substitute-urls)
    (channels        sovereign:channels:default-channels)
    (discover?       #t)
    (extra-options   (list "--cores=1"
                           "--gc-keep-derivations=yes"
                           "--gc-keep-outputs=yes"
                           "--max-jobs=$(nproc)"))))

DO ZROBIENIA Niestety nie mam racji i tracę zdolność interakcji z usługą Guix, ponieważ obecny zestaw opcji całkowicie blokuje jej rozruch. Muszę ponownie uruchomić system z poprzedniej generacji i wycofać tę zmianę.