€cdocutils.nodes document q)q}q(U nametypesq}q(X cabal2nixqˆXnix expression evaluationqNXenabling nix integrationqNXnixpkgs manualq ˆXfurther readingq NXnixq ˆXnix integrationq NX nix manualq ˆXcreating nix expressionsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU cabal2nixqhUnix-expression-evaluationqhUenabling-nix-integrationqh Unixpkgs-manualqh Ufurther-readingqh Unixqh Unix-integrationqh U nix-manualqhUcreating-nix-expressionsq uUchildrenq!]q"cdocutils.nodes section q#)q$}q%(U rawsourceq&UUparentq'hUsourceq(XA/home/refold/code/haskell/cabal-2.0/Cabal/doc/nix-integration.rstq)Utagnameq*Usectionq+U attributesq,}q-(Udupnamesq.]Uclassesq/]Ubackrefsq0]Uidsq1]q2haUnamesq3]q4h auUlineq5KUdocumentq6hh!]q7(cdocutils.nodes title q8)q9}q:(h&XNix Integrationq;h'h$h(h)h*Utitleqcdocutils.nodes Text q?XNix Integrationq@…qA}qB(h&h;h(Nh5Nh6hh'h9ubaubcdocutils.nodes paragraph qC)qD}qE(h&Xý`Nix `_ is a package manager popular with some Haskell developers due to its focus on reliability and reproducibility. ``cabal`` now has the ability to integrate with Nix for dependency management during local package development.qFh'h$h(h)h*U paragraphqGh,}qH(h.]h/]h0]h1]h3]uh5Kh6hh!]qI(cdocutils.nodes reference qJ)qK}qL(h&X`Nix `_h,}qM(UnameXNixUrefuriqNXhttp://nixos.org/nix/qOh1]h0]h.]h/]h3]uh'hDh!]qPh?XNixqQ…qR}qS(h&Uh'hKubah*U referenceqTubcdocutils.nodes target qU)qV}qW(h&X U referencedqXKh'hDh*UtargetqYh,}qZ(UrefurihOh1]q[hah0]h.]h/]h3]q\h auh!]ubh?Xp is a package manager popular with some Haskell developers due to its focus on reliability and reproducibility. q]…q^}q_(h&Xp is a package manager popular with some Haskell developers due to its focus on reliability and reproducibility. h(Nh5Nh6hh'hDubcdocutils.nodes literal q`)qa}qb(h&X ``cabal``h,}qc(h.]h/]h0]h1]h3]uh'hDh!]qdh?Xcabalqe…qf}qg(h&Uh'haubah*Uliteralqhubh?Xf now has the ability to integrate with Nix for dependency management during local package development.qi…qj}qk(h&Xf now has the ability to integrate with Nix for dependency management during local package development.h(Nh5Nh6hh'hDubeubh#)ql}qm(h&Uh'h$h(h)h*h+h,}qn(h.]h/]h0]h1]qohah3]qphauh5Kh6hh!]qq(h8)qr}qs(h&XEnabling Nix Integrationqth'hlh(h)h*h(h&j6h,}r?(h.]h/]h0]h1]h3]uh'j9h!]r@h?X cabal haddockrA…rB}rC(h&Uh'j=ubah*hhubaubaubhï)rD}rE(h&X``cabal freeze``rFh'héh(h)h*hóh,}rG(h.]h/]h0]h1]h3]uh5Nh6hh!]rHhC)rI}rJ(h&jFh'jDh(h)h*hGh,}rK(h.]h/]h0]h1]h3]uh5Kh!]rLh`)rM}rN(h&jFh,}rO(h.]h/]h0]h1]h3]uh'jIh!]rPh?X cabal freezerQ…rR}rS(h&Uh'jMubah*hhubaubaubhï)rT}rU(h&X``cabal gen-bounds``rVh'héh(h)h*hóh,}rW(h.]h/]h0]h1]h3]uh5Nh6hh!]rXhC)rY}rZ(h&jVh'jTh(h)h*hGh,}r[(h.]h/]h0]h1]h3]uh5Kh!]r\h`)r]}r^(h&jVh,}r_(h.]h/]h0]h1]h3]uh'jYh!]r`h?Xcabal gen-boundsra…rb}rc(h&Uh'j]ubah*hhubaubaubhï)rd}re(h&X``cabal run`` h'héh(h)h*hóh,}rf(h.]h/]h0]h1]h3]uh5Nh6hh!]rghC)rh}ri(h&X ``cabal run``rjh'jdh(h)h*hGh,}rk(h.]h/]h0]h1]h3]uh5Kh!]rlh`)rm}rn(h&jjh,}ro(h.]h/]h0]h1]h3]uh'jhh!]rph?X cabal runrq…rr}rs(h&Uh'jmubah*hhubaubaubeubhC)rt}ru(h&XGIf the package does not provide an expression, ``cabal`` runs normally.rvh'hlh(h)h*hGh,}rw(h.]h/]h0]h1]h3]uh5Kh6hh!]rx(h?X/If the package does not provide an expression, ry…rz}r{(h&X/If the package does not provide an expression, h(Nh5Nh6hh'jtubh`)r|}r}(h&X ``cabal``h,}r~(h.]h/]h0]h1]h3]uh'jth!]rh?Xcabalr€…r}r‚(h&Uh'j|ubah*hhubh?X runs normally.rƒ…r„}r…(h&X runs normally.h(Nh5Nh6hh'jtubeubeubh#)r†}r‡(h&Uh'h$h(h)h*h+h,}rˆ(h.]h/]h0]h1]r‰h ah3]rŠhauh5Kh6hh!]r‹(h8)rŒ}r(h&XCreating Nix ExpressionsrŽh'j†h(h)h*h`_ tool. To create a ``shell.nix`` expression for the package in the current directory, run this command:r–h'j†h(h)h*hGh,}r—(h.]h/]h0]h1]h3]uh5Kh6hh!]r˜(h?XÔThe Nix package manager is based on a lazy, pure, functional programming language; packages are defined by expressions in this language. The fastest way to create a Nix expression for a Cabal package is with the r™…rš}r›(h&XÔThe Nix package manager is based on a lazy, pure, functional programming language; packages are defined by expressions in this language. The fastest way to create a Nix expression for a Cabal package is with the h(Nh5Nh6hh'j”ubhJ)rœ}r(h&X1`cabal2nix `_h,}rž(UnamehhNX"https://github.com/NixOS/cabal2nixrŸh1]h0]h.]h/]h3]uh'j”h!]r h?X cabal2nixr¡…r¢}r£(h&Uh'jœubah*hTubhU)r¤}r¥(h&X% hXKh'j”h*hYh,}r¦(UrefurijŸh1]r§hah0]h.]h/]h3]r¨hauh!]ubh?X tool. To create a r©…rª}r«(h&X tool. To create a h(Nh5Nh6hh'j”ubh`)r¬}r­(h&X ``shell.nix``h,}r®(h.]h/]h0]h1]h3]uh'j”h!]r¯h?X shell.nixr°…r±}r²(h&Uh'j¬ubah*hhubh?XG expression for the package in the current directory, run this command:r³…r´}rµ(h&XG expression for the package in the current directory, run this command:h(Nh5Nh6hh'j”ubeubh )r¶}r·(h&X"$ cabal2nix --shell ./. >shell.nixh'j†h(h)h*h£h,}r¸(h¥‰h¦Xconsoleh§h¨h1]h0]h.]h©}h/]h3]uh5K!h6hh!]r¹h?X"$ cabal2nix --shell ./. >shell.nixrº…r»}r¼(h&Uh'j¶ubaubeubh#)r½}r¾(h&Uh'h$h(h)h*h+h,}r¿(h.]h/]h0]h1]rÀhah3]rÁhauh5K&h6hh!]rÂ(h8)rÃ}rÄ(h&XNix Expression EvaluationrÅh'j½h(h)h*h(h.]h/]h0]h1]h3]uh'j*h!]r?h?X --add-rootr@…rA}rB(h&Uh'j<ubah*hhubh?X and rC…rD}rE(h&X and h(Nh5Nh6hh'j*ubh`)rF}rG(h&X``--indirect``h,}rH(h.]h/]h0]h1]h3]uh'j*h!]rIh?X --indirectrJ…rK}rL(h&Uh'jFubah*hhubh?X\ are used to prevent Nix from garbage collecting the packages in the environment. The child rM…rN}rO(h&X\ are used to prevent Nix from garbage collecting the packages in the environment. The child h(Nh5Nh6hh'j*ubh`)rP}rQ(h&X ``cabal``h,}rR(h.]h/]h0]h1]h3]uh'j*h!]rSh?XcabalrT…rU}rV(h&Uh'jPubah*hhubh?X process reads the rW…rX}rY(h&X process reads the h(Nh5Nh6hh'j*ubh`)rZ}r[(h&X``CABAL_IN_NIX_SHELL``h,}r\(h.]h/]h0]h1]h3]uh'j*h!]r]h?XCABAL_IN_NIX_SHELLr^…r_}r`(h&Uh'jZubah*hhubh?XJ environment variable to prevent it from spawning additional child shells.ra…rb}rc(h&XJ environment variable to prevent it from spawning additional child shells.h(Nh5Nh6hh'j*ubeubeubh#)rd}re(h&Uh'h$h(h)h*h+h,}rf(h.]h/]h0]h1]rghah3]rhh auh5K/h6hh!]ri(h8)rj}rk(h&XFurther Readingrlh'jdh(h)h*h`_ provides further instructions for writing Nix expressions. The `Nixpkgs manual `_ describes the infrastructure provided for Haskell packages.rth'jdh(h)h*hGh,}ru(h.]h/]h0]h1]h3]uh5K1h6hh!]rv(h?XThe rw…rx}ry(h&XThe h(Nh5Nh6hh'jrubhJ)rz}r{(h&XI`Nix manual `_h,}r|(UnameX Nix manualhNX9http://nixos.org/nix/manual/#chap-writing-nix-expressionsr}h1]h0]h.]h/]h3]uh'jrh!]r~h?X Nix manualr…r€}r(h&Uh'jzubah*hTubhU)r‚}rƒ(h&X< hXKh'jrh*hYh,}r„(Urefurij}h1]r…hah0]h.]h/]h3]r†h auh!]ubh?X@ provides further instructions for writing Nix expressions. The r‡…rˆ}r‰(h&X@ provides further instructions for writing Nix expressions. The h(Nh5Nh6hh'jrubhJ)rŠ}r‹(h&X^`Nixpkgs manual `_h,}rŒ(UnameXNixpkgs manualhNXJhttp://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructurerh1]h0]h.]h/]h3]uh'jrh!]rŽh?XNixpkgs manualr…r}r‘(h&Uh'jŠubah*hTubhU)r’}r“(h&XM hXKh'jrh*hYh,}r”(Urefurijh1]r•hah0]h.]h/]h3]r–h auh!]ubh?X< describes the infrastructure provided for Haskell packages.r—…r˜}r™(h&X< describes the infrastructure provided for Haskell packages.h(Nh5Nh6hh'jrubeubeubeubah&UU transformerršNU footnote_refsr›}rœUrefnamesr}ržUsymbol_footnotesrŸ]r Uautofootnote_refsr¡]r¢Usymbol_footnote_refsr£]r¤U citationsr¥]r¦h6hU current_liner§NUtransform_messagesr¨]r©UreporterrªNUid_startr«KU autofootnotesr¬]r­U citation_refsr®}r¯Uindirect_targetsr°]r±Usettingsr²(cdocutils.frontend Values r³or´}rµ(Ufootnote_backlinksr¶KUrecord_dependenciesr·NU language_coder¸Uenr¹U tracebackrºˆUpep_referencesr»NUstrip_commentsr¼NU toc_backlinksr½Uentryr¾U rfc_base_urlr¿Uhttps://tools.ietf.org/html/rÀU datestamprÁNU report_levelrÂKUsmartquotes_localesrÃNU _destinationrÄNU halt_levelrÅKU strip_classesrÆNh