mirror of
https://codeberg.org/mhwombat/nix-book.git
synced 2025-12-28 01:05:02 +08:00
53 lines
1.5 KiB
Text
53 lines
1.5 KiB
Text
== Hello, flake!
|
||
|
||
Before learning to write Nix flakes, let’s learn how to use them. I’ve
|
||
created a simple example of a flake in this git
|
||
https://codeberg.org/mhwombat/hello-flake[repository]. To run this
|
||
flake, you don’t need to install anything; simply run the command below.
|
||
The first time you use a flake, Nix has to fetch and build it, which
|
||
may take time. Subsequent invocations should be instantaneous.
|
||
|
||
....
|
||
$ nix run "git+https://codeberg.org/mhwombat/hello-flake"
|
||
....
|
||
|
||
That’s a lot to type every time we want to use this package. Instead, we
|
||
can enter a shell with the package available to us, using the
|
||
`nix shell` command.
|
||
|
||
....
|
||
$ nix shell "git+https://codeberg.org/mhwombat/hello-flake"
|
||
....
|
||
|
||
In this shell, the command is on our `$PATH`, so we can execute the
|
||
command by name.
|
||
|
||
....
|
||
$ hello-flake
|
||
....
|
||
|
||
Nix didn’t _install_ the package; it merely built and placed it in a
|
||
directory called the ``Nix store''. Thus we can have multiple versions
|
||
of a package without worrying about conflicts. We can find out the
|
||
location of the executable, if we’re curious.
|
||
|
||
....
|
||
$ which hello-flake
|
||
....
|
||
|
||
Once we exit that shell, the `hello-flake` command is no longer
|
||
directly available.
|
||
|
||
....
|
||
$# echo '$ exit'
|
||
$# echo '$ hello-flake'
|
||
sh: line 3: hello-flake: command not found
|
||
....
|
||
|
||
However, we can still run the command using the store path we found
|
||
earlier. That’s not particularly convenient, but it does demonstrate
|
||
that the package remains in the store for future use.
|
||
|
||
....
|
||
/nix/store/0xbn2hi6h1m5h4kc02vwffs2cydrbc0r-hello-flake/bin/hello-flake
|
||
....
|