mirror of
https://codeberg.org/mhwombat/nix-book.git
synced 2026-01-25 07:57:12 +08:00
temp
This commit is contained in:
parent
0c4df93ee6
commit
f266726f4d
11 changed files with 9 additions and 238 deletions
116
index.html
116
index.html
|
|
@ -5100,7 +5100,7 @@ Hello from your nix package!</pre>
|
|||
<h5 id="devshell-impure">If the nix derivation requires <code>nixpkgs</code></h5>
|
||||
<div class="paragraph">
|
||||
<p>In this case, we need to write the derivation ourselves.
|
||||
We can use <code>default.nix</code> as a model.
|
||||
We can use <code>default.nix</code> (from the hello-nix repo) as a model.
|
||||
Line 15 should be replaced with:</p>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
|
|
@ -5117,9 +5117,6 @@ Line 15 should be replaced with:</p>
|
|||
<span class="tok-p">};</span></code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Unresolved directive in recipes/devshell/main.adoc - include::non-flake/main-generated.adoc[leveloffset=+1]</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -5127,115 +5124,8 @@ Line 15 should be replaced with:</p>
|
|||
<h3 id="_buildruntime_environments">10.5. Build/runtime environments</h3>
|
||||
<div class="sect3">
|
||||
<h4 id="_access_a_top_level_package_from_the_nixpkgsnixos_repo_4">10.5.1. Access a top level package from the Nixpkgs/NixOS repo</h4>
|
||||
<div class="listingblock">
|
||||
<div class="title">hello-with-cow</div>
|
||||
<div class="content">
|
||||
<pre class="pygments highlight nowrap"><code data-lang="shell"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||||
<span class="normal">2</span>
|
||||
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="tok-ch">#!/usr/bin/env sh</span>
|
||||
|
||||
cowsay<span class="tok-w"> </span><span class="tok-s2">"Hello from your flake!"</span>
|
||||
</pre></div></td></tr></table></div></code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="listingblock">
|
||||
<div class="title">flake.nix</div>
|
||||
<div class="content">
|
||||
<pre class="pygments highlight nowrap"><code data-lang="nix"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
|
||||
<span class="normal"> 2</span>
|
||||
<span class="normal"> 3</span>
|
||||
<span class="normal"> 4</span>
|
||||
<span class="normal"> 5</span>
|
||||
<span class="normal"> 6</span>
|
||||
<span class="normal"> 7</span>
|
||||
<span class="normal"> 8</span>
|
||||
<span class="normal"> 9</span>
|
||||
<span class="normal">10</span>
|
||||
<span class="normal">11</span>
|
||||
<span class="normal">12</span>
|
||||
<span class="normal">13</span>
|
||||
<span class="normal">14</span>
|
||||
<span class="normal">15</span>
|
||||
<span class="normal">16</span>
|
||||
<span class="normal">17</span>
|
||||
<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>
|
||||
<span class="normal">23</span>
|
||||
<span class="normal">24</span>
|
||||
<span class="normal">25</span>
|
||||
<span class="normal">26</span>
|
||||
<span class="normal">27</span>
|
||||
<span class="normal">28</span>
|
||||
<span class="normal">29</span>
|
||||
<span class="normal">30</span>
|
||||
<span class="normal">31</span>
|
||||
<span class="normal">32</span>
|
||||
<span class="normal">33</span>
|
||||
<span class="normal">34</span>
|
||||
<span class="normal">35</span>
|
||||
<span class="normal">36</span>
|
||||
<span class="normal">37</span>
|
||||
<span class="normal">38</span>
|
||||
<span class="normal">39</span>
|
||||
<span class="normal">40</span>
|
||||
<span class="normal">41</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">"github:NixOS/nixpkgs"</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">"github:numtide/flake-utils"</span><span class="tok-p">;</span>
|
||||
<span class="tok-p">};</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>
|
||||
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="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="tok-k">in</span>
|
||||
<span class="tok-p">{</span>
|
||||
<span class="tok-ss">packages</span> <span class="tok-o">=</span> <span class="tok-k">rec</span> <span class="tok-p">{</span>
|
||||
<span class="tok-ss">hello</span> <span class="tok-o">=</span> pkgs<span class="tok-o">.</span>stdenv<span class="tok-o">.</span>mkDerivation <span class="tok-k">rec</span> <span class="tok-p">{</span>
|
||||
<span class="hll"> <span class="tok-ss">name</span> <span class="tok-o">=</span> <span class="tok-s2">"hello-with-cow"</span><span class="tok-p">;</span>
|
||||
</span>
|
||||
<span class="tok-ss">src</span> <span class="tok-o">=</span> <span class="tok-l">./.</span><span class="tok-p">;</span>
|
||||
|
||||
<span class="tok-ss">unpackPhase</span> <span class="tok-o">=</span> <span class="tok-s2">"true"</span><span class="tok-p">;</span>
|
||||
|
||||
<span class="tok-ss">buildPhase</span> <span class="tok-o">=</span> <span class="tok-s2">":"</span><span class="tok-p">;</span>
|
||||
|
||||
<span class="tok-ss">installPhase</span> <span class="tok-o">=</span>
|
||||
<span class="tok-s tok-s-Multiline">''</span>
|
||||
<span class="tok-s tok-s-Multiline"> mkdir -p $out/bin</span>
|
||||
<span class="tok-s tok-s-Multiline"> cp $src/hello-with-cow $out/bin</span>
|
||||
<span class="tok-s tok-s-Multiline"> chmod +x $out/bin/hello-with-cow</span>
|
||||
<span class="tok-s tok-s-Multiline"> ''</span><span class="tok-p">;</span>
|
||||
|
||||
<span class="tok-ss">buildInputs</span> <span class="tok-o">=</span> <span class="tok-p">[</span> pkgs<span class="tok-o">.</span>cowsay <span class="tok-p">];</span>
|
||||
<span class="tok-p">};</span>
|
||||
<span class="tok-ss">default</span> <span class="tok-o">=</span> hello<span class="tok-p">;</span>
|
||||
<span class="tok-p">};</span>
|
||||
|
||||
<span class="tok-ss">apps</span> <span class="tok-o">=</span> <span class="tok-k">rec</span> <span class="tok-p">{</span>
|
||||
<span class="tok-ss">hello</span> <span class="tok-o">=</span> flake-utils<span class="tok-o">.</span>lib<span class="tok-o">.</span>mkApp <span class="tok-p">{</span> <span class="tok-ss">drv</span> <span class="tok-o">=</span> self<span class="tok-o">.</span>packages<span class="tok-o">.</span><span class="tok-si">${</span>system<span class="tok-si">}</span><span class="tok-o">.</span>hello<span class="tok-p">;</span> <span class="tok-p">};</span>
|
||||
<span class="tok-ss">default</span> <span class="tok-o">=</span> hello<span class="tok-p">;</span>
|
||||
<span class="tok-p">};</span>
|
||||
<span class="tok-p">}</span>
|
||||
<span class="tok-p">);</span>
|
||||
<span class="tok-p">}</span>
|
||||
</pre></div></td></tr></table></div></code></pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Here’s a demonstration using the flake.</p>
|
||||
</div>
|
||||
<div class="literalblock">
|
||||
<div class="content">
|
||||
<pre class="nowrap">$ nix run
|
||||
this derivation will be built:
|
||||
/nix/store/rlg4ym95l3jh9mv2mc1yd6qf0i2px844-hello-with-cow.drv
|
||||
building '/nix/store/rlg4ym95l3jh9mv2mc1yd6qf0i2px844-hello-with-cow.drv'...
|
||||
/nix/store/ps5mk6rvk7917f6ls58hz0ifs3580mq0-hello-with-cow/bin/hello-with-cow: line 3: cowsay: command not found</pre>
|
||||
</div>
|
||||
<p>See <a href="#_introducing_a_dependency">Section 8.2, “Introducing a dependency”</a>.</p>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>Unresolved directive in recipes/build/main.adoc - include::flake/main-generated.adoc[leveloffset=+1]</p>
|
||||
|
|
@ -5474,7 +5364,7 @@ Hello from your flake!</pre>
|
|||
</div>
|
||||
<div id="footer">
|
||||
<div id="footer-text">
|
||||
Last updated 2025-09-15 14:50:41 IST
|
||||
Last updated 2025-09-15 15:05:49 IST
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
= Build/runtime environments
|
||||
|
||||
include::nixpkg/main-generated.adoc[leveloffset=+1]
|
||||
include::nixpkg/main.adoc[leveloffset=+1]
|
||||
|
||||
include::flake/main-generated.adoc[leveloffset=+1]
|
||||
|
||||
|
|
@ -11,5 +11,3 @@ include::haskell-flake/main-generated.adoc[leveloffset=+1]
|
|||
include::env-var/main-generated.adoc[leveloffset=+1]
|
||||
|
||||
include::nix-non-flake/main-generated.adoc[leveloffset=+1]
|
||||
|
||||
include::non-flake/main-generated.adoc[leveloffset=+1]
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ All it does is invoke `hello-nix`, which is the input we added <<#devshell-nix-n
|
|||
$# cat hello-again
|
||||
....
|
||||
|
||||
[source,nix,linenums,highlight='31..33,36']
|
||||
[source,nix,linenums,highlight='5..8,17,36..38,42']
|
||||
.flake.nix
|
||||
....
|
||||
$# cat flake.nix
|
||||
|
|
|
|||
|
|
@ -15,16 +15,6 @@
|
|||
inherit system;
|
||||
};
|
||||
helloNix = import hello-nix { inherit pkgs; };
|
||||
# helloNix = pkgs.stdenv.mkDerivation {
|
||||
# name = "hello-nix";
|
||||
# src = hello-nix;
|
||||
# installPhase =
|
||||
# ''
|
||||
# mkdir -p $out/bin
|
||||
# cp $src/hello-nix $out/bin/hello-nix
|
||||
# chmod +x $out/bin/hello-nix
|
||||
# '';
|
||||
# };
|
||||
in
|
||||
{
|
||||
packages = rec {
|
||||
4
source/recipes/build/nix-non-flake/tempwork/hello-again
Executable file
4
source/recipes/build/nix-non-flake/tempwork/hello-again
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
echo "I'm a flake, but I'm running a command defined in a non-flake package."
|
||||
hello-nix
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
in
|
||||
{
|
||||
packages = rec {
|
||||
hello = pkgs.stdenv.mkDerivation rec {
|
||||
name = "hello-with-cow";
|
||||
|
||||
src = ./.;
|
||||
|
||||
unpackPhase = "true";
|
||||
|
||||
buildPhase = ":";
|
||||
|
||||
installPhase =
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
cp $src/hello-with-cow $out/bin
|
||||
chmod +x $out/bin/hello-with-cow
|
||||
|
||||
# modify the hello-again script so it can find hello-nix
|
||||
COWSAY=$(type -p cowsay)
|
||||
sed "s_cowsay_"$COWSAY"_" --in-place $out/bin/hello-with-cow
|
||||
'';
|
||||
|
||||
buildInputs = [ pkgs.cowsay ];
|
||||
};
|
||||
default = hello;
|
||||
};
|
||||
|
||||
apps = rec {
|
||||
hello = flake-utils.lib.mkApp { drv = self.packages.${system}.hello; };
|
||||
default = hello;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
cowsay "Moo!"
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
= Access a top level package from the Nixpkgs/NixOS repo
|
||||
|
||||
////
|
||||
$ mkdir tempwork
|
||||
$ cd tempwork
|
||||
$ cp ../hello-with-cow ../flake.nix .
|
||||
$ git add hello-with-cow flake.nix
|
||||
$ nix develop
|
||||
$ git add flake.lock
|
||||
$ git commit -a -m temp
|
||||
////
|
||||
|
||||
[source,shell,linenums]
|
||||
.hello-with-cow
|
||||
....
|
||||
$# cat hello-with-cow
|
||||
....
|
||||
|
||||
[source,nix,linenums,highlight=15]
|
||||
.flake.nix
|
||||
....
|
||||
$# cat flake.nix
|
||||
....
|
||||
|
||||
Here's a demonstration using the flake.
|
||||
|
||||
....
|
||||
$ nix run
|
||||
....
|
||||
|
||||
////
|
||||
Good adoc0 scripts clean up after themselves.
|
||||
$ cd .. ; rm -rf tempwork # clean up
|
||||
////
|
||||
|
|
@ -11,5 +11,3 @@ include::haskell-pkg/main-generated.adoc[leveloffset=+1]
|
|||
include::env-var/main-generated.adoc[leveloffset=+1]
|
||||
|
||||
include::nix-non-flake/main-generated.adoc[leveloffset=+1]
|
||||
|
||||
include::non-flake/main-generated.adoc[leveloffset=+1]
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
hello-nix = {
|
||||
url = "git+https://codeberg.org/mhwombat/hello-nix";
|
||||
flake = false;
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, hello-nix }:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
helloNix = import hello-nix { inherit pkgs; };
|
||||
in
|
||||
{
|
||||
devShells = rec {
|
||||
default = pkgs.mkShell {
|
||||
packages = [ helloNix ];
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue