Next: Priamy zásah do git repozitára, Previous: Miestny súbor, Up: Nastavenie [Contents][Index]
Guix a jeho zbierku balíkov možno rozšíriť pomocou kanálov. Kanál je Git repozitár, či už verejný alebo nie, obsahujúci .scm súbory poskytujúce balíky (see Defining Packages in GNU Guix Reference Manual) alebo služby (see Defining Services in GNU Guix Reference Manual).
Ako vytvoriť kanál? Najprv vytvorte priečinok, ktorý bude obsahovať vaše .scm súbory, napríklad ~/moj-kanal:
mkdir ~/moj-kanal
Predpokladajme, že chcete pridať balík ‘my-hello’, s ktorým sme sa už stretli. Bude však potrebovať niekoľko úprav:
(define-module (my-hello) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix build-system gnu) #:use-module (guix download)) (define-public my-hello (package (name "my-hello") (version "2.10") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/hello/hello-" version ".tar.gz")) (sha256 (base32 "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i")))) (build-system gnu-build-system) (synopsis "Hello, Guix world: An example custom Guix package") (description "GNU Hello prints the message \"Hello, world!\" and then exits. It serves as an example of standard GNU coding practices. As such, it supports command-line arguments, multiple languages, and so on.") (home-page "https://www.gnu.org/software/hello/") (license gpl3+)))
Všimnite si, že sme tentokrát zadanie balíka uložili do verejnej premennej
my-hello
pomocou define-public
, na ktorú je možné odkazovať,
medzi iným aj ako na závislosť v rámci zadania nejakého ďalšieho balíka.
Ak spustíte guix package --install-from-file=my-hello.scm
s použitím
vyššie uvedeného súboru, tak príkaz zlyhá, pretože posledný výraz,
define-public
, nevracia balík. Ak aj napriek tomu chcete v tomto
prípade použiť define-public
, uistite sa, že súbor končí vykonaním
my-hello
:
;; ... (define-public my-hello ;; ... ) my-hello
Tento posledný príklad nie je veľmi bežný.
A teraz, ako možno tento balík zviditeľniť pre guix
príkazy, aby
ste ho mohli vyskúšať? Musíte pridať priečinok ~/moj-kanal k
prehľadávaným cestám pomocou voľby -L ako v týchto príkladoch:
guix show -L ~/moj-kanal my-hello guix build -L ~/moj-kanal my-hello
Posledným krokom je pretvoriť ~/moj-kanal na ozajstný kanál
sprístupňujúc tak vašu zbierku balíkov akémukoľvek guix
príkazu.
V prvom rade musíte z tohto priečinka spraviť Git repozitár:
cd ~/moj-kanal git init git add my-hello.scm git commit -m "Prvá úprava môjho kanála."
A to je všetko, práve ste vytvorili kanál! Teraz už môžete tento kanál pridať do vášho nastavenia kanálov v ~/.config/guix/channels.scm (see Specifying Additional Channels in GNU Guix Reference Manual). Predpokladajúc, že si váš kanál nateraz ponecháte vo vašom počítači, bude súbor channels.scm vyzerať asi takto:
(append (list (channel
(name 'moj-kanal)
(url (string-append "file://" (getenv "HOME")
"/moj-kanal"))))
%default-channels)
Nabudúce, keď spustíte guix pull
, sa váš kanál vyzdvihne a balíky,
ktoré obsahuje sa sprístupnia pre všetky guix
príkazy, a to aj bez
použitia voľby -L. Príkaz guix describe
potvrdí, že Guix
vskutku používa aj kanál my-channel
, aj kanál guix
.
Viď Creating a Channel in GNU Guix Reference Manual, pre viac podrobností.
Next: Priamy zásah do git repozitára, Previous: Miestny súbor, Up: Nastavenie [Contents][Index]