mirror of
https://codeberg.org/mhwombat/nix-book.git
synced 2025-12-28 01:05:02 +08:00
112 lines
2 KiB
Text
112 lines
2 KiB
Text
== Nix shell recipes
|
||
|
||
=== Shell with access to a package from the Nixpkgs/NixOS repo
|
||
|
||
This shell provides access to two packages from nixpkgs: hello and
|
||
cowsay.
|
||
|
||
[source,nix,linenums]
|
||
....
|
||
include::0100-shell-with-nixpkgs.nix[]
|
||
....
|
||
|
||
Here’s a demonstration using the shell.
|
||
|
||
....
|
||
$ nix-shell
|
||
$ hello
|
||
Hello, world!
|
||
$ cowsay "moo"
|
||
_____
|
||
< moo >
|
||
-----
|
||
\ ^__^
|
||
\ (oo)\_______
|
||
(__)\ )\/\
|
||
||----w |
|
||
|| ||
|
||
....
|
||
|
||
The command-line equivalent would be `nix-shell -p hello cowsay`
|
||
|
||
=== Shell with access to a package defined in a remote git repo
|
||
|
||
[source,nix,linenums]
|
||
....
|
||
include::0150-shell-with-git-nix-pkg.nix[]
|
||
....
|
||
|
||
Here’s a demonstration using the shell.
|
||
|
||
....
|
||
$ nix-shell
|
||
$ hello-nix
|
||
Hello from your nix package!
|
||
....
|
||
|
||
=== Shell with access to a flake
|
||
|
||
[source,nix,linenums]
|
||
....
|
||
include::0200-shell-with-flake.nix[]
|
||
....
|
||
|
||
Here’s a demonstration using the shell.
|
||
|
||
....
|
||
$ nix-shell
|
||
$ hello-flake
|
||
Hello from your flake!
|
||
....
|
||
|
||
=== Shell with access to a specific revision of a flake
|
||
|
||
[source,nix,linenums]
|
||
....
|
||
include::0250-shell-with-flake-rev.nix[]
|
||
....
|
||
|
||
Here’s a demonstration using the shell.
|
||
|
||
....
|
||
$ nix-shell
|
||
$ hello-flake
|
||
Hello from your flake!
|
||
....
|
||
|
||
=== Shell with access to a Haskell package on your local computer
|
||
|
||
This shell provides access to three Haskell packages that are on my hard
|
||
drive.
|
||
|
||
[source,nix,linenums]
|
||
....
|
||
include::0300-shell-haskell-local.nix[]
|
||
....
|
||
|
||
=== Shell with access to a Haskell package on your local computer, with interdependencies
|
||
|
||
This shell provides access to four Haskell packages that are on my hard
|
||
drive. The fourth package depends on the first three to build.
|
||
|
||
[source,nix,linenums]
|
||
....
|
||
include::0350-shell-haskell-local-deps.nix[]
|
||
....
|
||
|
||
=== Shell with an environment variable set
|
||
|
||
This shell has the environment variable FOO set to ``bar''
|
||
|
||
[source,nix,linenums]
|
||
....
|
||
include::0400-shell-with-env-var.nix[]
|
||
....
|
||
|
||
Here’s a demonstration using the shell.
|
||
|
||
....
|
||
$ nix-shell
|
||
$ echo $FOO
|
||
bar
|
||
....
|