This commit is contained in:
Amy de Buitléir 2025-09-15 18:39:35 +01:00
parent 972faca3be
commit 118ee240d7
3 changed files with 21 additions and 24 deletions

View file

@ -4861,26 +4861,24 @@ together with the <em>high-level workflow</em> described in <a href="#_developme
<span class="normal">18</span>
<span class="normal">19</span>
<span class="normal">20</span>
<span class="normal">21</span>
<span class="normal">22</span></pre></div></td><td class="code"><div><pre><span></span><span class="tok-p">{</span>
<span class="normal">21</span></pre></div></td><td class="code"><div><pre><span></span><span class="tok-p">{</span>
<span class="tok-ss">inputs</span> <span class="tok-o">=</span> <span class="tok-p">{</span>
nixpkgs<span class="tok-o">.</span><span class="tok-ss">url</span> <span class="tok-o">=</span> <span class="tok-s2">&quot;github:NixOS/nixpkgs&quot;</span><span class="tok-p">;</span>
flake-utils<span class="tok-o">.</span><span class="tok-ss">url</span> <span class="tok-o">=</span> <span class="tok-s2">&quot;github:numtide/flake-utils&quot;</span><span class="tok-p">;</span>
<span class="hll"> pandoc-columns<span class="tok-o">.</span><span class="tok-ss">url</span> <span class="tok-o">=</span> <span class="tok-s2">&quot;/home/amy/github/pandoc-columns&quot;</span><span class="tok-p">;</span>
</span> <span class="tok-p">};</span>
<span class="hll"> <span class="tok-ss">outputs</span> <span class="tok-o">=</span> <span class="tok-p">{</span> self<span class="tok-p">,</span> nixpkgs<span class="tok-p">,</span> flake-utils<span class="tok-p">,</span> pandoc-columns <span class="tok-p">}:</span>
</span> flake-utils<span class="tok-o">.</span>lib<span class="tok-o">.</span>eachDefaultSystem <span class="tok-p">(</span>system<span class="tok-p">:</span>
<span class="tok-k">let</span>
<span class="hll"> <span class="tok-p">};</span>
</span>
<span class="tok-ss">outputs</span> <span class="tok-o">=</span> <span class="tok-p">{</span> self<span class="tok-p">,</span> nixpkgs<span class="tok-p">,</span> flake-utils<span class="tok-p">,</span> pandoc-columns <span class="tok-p">}:</span>
<span class="hll"> flake-utils<span class="tok-o">.</span>lib<span class="tok-o">.</span>eachDefaultSystem <span class="tok-p">(</span>system<span class="tok-p">:</span>
</span> <span class="tok-k">let</span>
<span class="tok-ss">pkgs</span> <span class="tok-o">=</span> <span class="tok-nb">import</span> nixpkgs <span class="tok-p">{</span> <span class="tok-k">inherit</span> system<span class="tok-p">;</span> <span class="tok-p">};</span>
<span class="hll"> <span class="tok-ss">customGhc</span> <span class="tok-o">=</span> pkgs<span class="tok-o">.</span>haskellPackages<span class="tok-o">.</span>ghcWithPackages <span class="tok-p">(</span>p<span class="tok-p">:</span> <span class="tok-k">with</span> p<span class="tok-p">;</span> <span class="tok-p">[</span> pandoc-columns <span class="tok-p">]);</span>
</span> <span class="tok-k">in</span>
<span class="tok-p">{</span>
<span class="tok-ss">customGhc</span> <span class="tok-o">=</span> pkgs<span class="tok-o">.</span>haskellPackages<span class="tok-o">.</span>ghcWithPackages <span class="tok-p">(</span>p<span class="tok-p">:</span> <span class="tok-k">with</span> p<span class="tok-p">;</span> <span class="tok-p">[</span> extra <span class="tok-p">]);</span>
<span class="hll"> <span class="tok-k">in</span>
</span> <span class="tok-p">{</span>
<span class="tok-ss">devShells</span> <span class="tok-o">=</span> <span class="tok-k">rec</span> <span class="tok-p">{</span>
<span class="tok-ss">default</span> <span class="tok-o">=</span> pkgs<span class="tok-o">.</span>mkShell <span class="tok-p">{</span>
<span class="hll"> <span class="tok-ss">buildInputs</span> <span class="tok-o">=</span> <span class="tok-p">[</span> customGhc <span class="tok-p">];</span>
</span> <span class="tok-p">};</span>
<span class="tok-p">};</span>
<span class="tok-ss">buildInputs</span> <span class="tok-o">=</span> <span class="tok-p">[</span> customGhc <span class="tok-p">];</span>
<span class="hll"> <span class="tok-p">};</span>
</span> <span class="tok-p">};</span>
<span class="tok-p">}</span>
<span class="tok-p">);</span>
<span class="tok-p">}</span>
@ -4923,10 +4921,11 @@ and line 17 uses the custom GHC as a build input for this flake.</p>
&lt;no location info&gt;: error: [GHC-49196] Can't find Main.hs
*** Exception: ExitFailure 1
$ nix develop
$ runghc Main.hs # Works in development environemnt
error: Path 'source/recipes/devshell/haskell-pkg/tempwork' in the repository "/home/amy/codeberg/nix-book" is not tracked by Git.
&lt;no location info&gt;: error: [GHC-49196] Can't find Main.hs
*** Exception: ExitFailure 1</pre>
To make it visible to Nix, run:
git -C "/home/amy/codeberg/nix-book" add "source/recipes/devshell/haskell-pkg/tempwork"</pre>
</div>
</div>
</div>
@ -5636,7 +5635,7 @@ Hello from your flake!</pre>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2025-09-15 18:30:35 IST
Last updated 2025-09-15 18:36:03 IST
</div>
</div>
</body>

View file

@ -8,7 +8,7 @@
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
customGhc = pkgs.haskellPackages.ghcWithPackages (p: with p; [ extra ]);
customGhc = pkgs.haskellPackages.ghcWithPackages (p: with p; [ p.extra ]);
in
{
devShells = rec {

View file

@ -21,16 +21,14 @@ it's usually more convenient to use `haskell-flake` as described in <<#haskell-f
together with the _high-level workflow_ described in <<_development_workflows>>.
====
[source,nix,linenums,highlight='5,8,12,17']
[source,nix,linenums,highlight='11,16']
.flake.nix
....
include::flake.nix[]
....
Line 5 adds `pandoc-columns` as an input to this flake.
Line 8 allows the output function to reference `pandoc-columns`.
Line 12 makes a custom GHC that knows about `pandoc-columns`,
and line 17 uses the custom GHC as a build input for this flake.
Line 12 makes a custom GHC that knows about `extra`,
and line 16 makes that custom GHC available in the development environment.
Here's a short Haskell program that uses the new flake.