Plik kanałów Guix z gałęziami testowymi
ŹRÓDŁO
Aby móc wykorzystywać gałęzie testowe repozytoriów kanałów Guix konieczne jest wykorzystanie pliku kanałów.
Nie istnieje żaden inny sposób na nadpisanie systemowej listy kanałów.
Służy do tego opcja -C lub --channels polecenia guix pull.
Plik kanałów Guix powinien zawierać listę wszystkich używanych kanałów, wskazujących na testowe gałęzie odpowiednich repozytoriów.
Dzięki temu nie będzie potrzebna modyfikacja tego pliku w ramach testowania zmian w różnych kanałach.
Wystarczy tylko odpowiednie ustawianie wskaźnika gałęzi testowej repozytoriów.
Modyfikacja tego pliku będzie natomiast konieczna przy dodawaniu lub usuwaniu samych kanałów.
ŹRÓDŁO
Kanonicznym sposobem na dodanie pliku kanałów w celu testowania zmian jest wykorzystanie zmiennej home-files-service-type z modułu (gnu home services).
Ta zmienna definiuje listę plików załączanych do struktury katalogu domowego.
Aby dodać plik do tej listy należy użyć simple-service w celu jej rozszerzenia zamiast nadpisania.
Aby upewnić się, że dobrze rozumiem działanie usługi home-files-service-type, definiuję pusty plik channels.scm i sprawdzam czy pojawia się on w katalogu domowym po rekonfiguracji użytkownika.
Po usunięciu szeregu błędów programowania osiągam pożądany efekt.
lrwxrwxrwx 1 marek users 56 10-10 14:22 channels.scm -> /gnu/store/nn3rdi5xdz5ng5j2byax8n7pyhmc3jyg-channels.scm
Aby ukryć i lepiej określić ten plik, zmieniam jego nazwę na .test-channels.scm.
Następnie definiuję w nim testowe warianty kanałów.
(define-module (users uid1000-test-channels)
#:use-module ( (guix channels)
#:prefix guix:channels:)
#:use-module ( (sovereign channels)
#:prefix sovereign:channels:))
(define test-deployment-channel
(guix:channels:channel
(inherit sovereign:channels:deployment-channel)
(url "file:///home/marek/Szablony/deployment")
(branch "test")))
(define test-guix-channel
(guix:channels:channel
(inherit sovereign:channels:default-guix-channel)
(url "file:///home/marek/Szablony/guix")
(branch "test")))
(define test-guix-rust-past-crates-channel
(guix:channels:channel
(inherit sovereign:channels:guix-rust-past-crates-channel)
(url "file:///home/marek/Szablony/guix-rust-past-crates")
(branch "test")))
(define test-nonguix-channel
(guix:channels:channel
(inherit sovereign:channels:nonguix-channel)
(url "file:///home/marek/Szablony/nonguix")
(branch "test")))
(define test-sovereign-channel
(guix:channels:channel
(inherit sovereign:channels:sovereign-channel)
(url "file:///home/marek/Szablony/sovereign")
(branch "test")))
(list test-deployment-channel
test-guix-channel
test-guix-rust-past-crates-channel
test-nonguix-channel
test-sovereign-channel)
Modyfikuję alias test-system aby używać wyłącznie nowo utworzonego pliku kanałów.
Musiałem dodać gałąź testową do lokalnych kopp repozytoriów zewnętrznych kanałów.
alias test-system='guix pull --fallback --allow-downgrades --disable-authentication --channels=/home/marek/.test-channels.scm ;
sudo guix system reconfigure -e "(@ (deployment systems rakan) operating-system*)" --fallback --allow-downgrades'