Nix și prima întâlnire a lui Haskell

Ok, după cum ați înțeles deja, nu a existat nici o instalare, doar noi legături simbolice au apărut în profilul meu.

Ne întoarcem la proiect. Am trecut prin dialogul cu inal cabal. toate ca de obicei, ca urmare a căror primă construcție:

Nu există dependențe decât din bază. nici o lucrare utilă, cu excepția ieșirii șirului "hello". Totul este standard și primitiv.

Nix-ifikatsiya

Dar acum distracția începe. Să facem programul nostru un pachet Nix. Dar mai întâi trebuie să decideți asupra conceptelor.

Când vorbim despre pachetele Nix, acest lucru nu este același lucru cu pachetele deb-debug. După cum vă amintiți, Nix se bazează pe o abordare pur funcțională a gestionării pachetelor. Dar, mai important, Nix este, de asemenea, un limbaj special de programare! Și când vorbim despre crearea unui pachet Nix, înseamnă că vom scrie un mic program Nix. Rezultatul acestui mic program va fi pachetul nostru! E ca în Hakyll. pentru a construi un site static, trebuie să scrieți un program despre Haskell, rezultatul căruia va fi site-ul nostru.

Cel mai mic program Nix, pe baza căruia va fi construit viitorul nostru pachet, ar trebui să fie stocat în fișierul default.nix. Strict vorbind, numele fișierului poate fi diferit, dar în mod implicit acest nume este așteptat.

Ok, dar cum o scriem? Da, așa scriem:

Pentru moment, copiați acest conținut în fișierul default.nix. Nu vă voi spune în mod specific despre conținutul acestui fișier, deoarece acest aspect merită un articol viitor. Uită-te la comanda cabal2nix. pentru asta a fost instalarea cabal2nix. care este menționat mai devreme.

Acum că avem un program Nix, trebuie să îl construim și să îl executăm. Dar, deoarece Nix nu este un limbaj compilat, trebuie doar să-l transmitem la intrarea comenzii nix-build - și lucrarea se va face. Acest lucru se face astfel:

Rețineți că numele fișierului .nix nu este transmis în mod explicit comenzii. De aceea a trebuit să o numiți default.nix. comanda nix-build se uită în directorul curent pentru fișierul cu acel nume.

Vrei să întrebi și de ce ai nevoie? Aceasta - o rulare goală, nu se construiește nimic, ci doar arată ce se va întâmpla când se construiește. Și acesta este ceea ce ne va arăta:

Ce avem nevoie! Când pornim această comandă pentru real, proiectul nostru va deveni parte din / nix / store /. ca toate celelalte pachete! Să facem acest lucru:

Construcția se va încheia, iar ultima linie este următoarea: