A modern, delicious implementation of the Nix package manager, focused on correctness, usability, and growth — and committed to doing right by its community
Find a file
2013-09-09 18:09:46 +02:00
COPYING Add license 2013-09-09 16:17:45 +02:00
default.nix Build on Mac OS X 2013-09-09 16:02:35 +02:00
nix-repl.cc Make tab-completion work on builtins 2013-09-09 17:22:42 +02:00
README.md Add a README 2013-09-09 18:09:46 +02:00

nix-repl

nix-repl is a simple readevalprint loop (REPL) for the Nix package manager.

Installation

Assuming you have Nix installed, just do

$ git clone https://github.com/edolstra/nix-repl.git $ cd nix-repl $ nix-env -f . -i nix-repl

Example

Here is a typical nix-repl session:

$ nix-repl Welcome to Nix version 1.6pre3215_2c1ecf8. Type :? for help.

nix-repl> 3 * 4 12

nix-repl> :l Added 3337 variables.

nix-repl> lib.range 1 5 [ 1 2 3 4 5 ]

nix-repl> :a lib Added 299 variables.

nix-repl> range 1 5 [ 1 2 3 4 5 ]

nix-repl> xs = range 1 5

nix-repl> map (x: x * x) xs [ 1 4 9 16 25 ]

nix-repl> :l Added 7 variables.

nix-repl> config.services.dhcpd { configFile = null; enable = false; extraConfig = ""; interfaces = [ ... ]; machines = [ ... ]; }

nix-repl> :p config.services.dhcpd { configFile = null; enable = false; extraConfig = ""; interfaces = [ "eth0" ]; machines = [ ]; }

nix-repl> config.fileSystems { "/" = { ... }; "/boot" = { ... }; }

nix-repl> mapAttrsToList (n: v: v.device) config.fileSystems [ "/dev/disk/by-label/nixos" "/dev/disk/by-label/boot" ]

nix-repl> :b libjson these derivations will be built: /nix/store/h910xqb36pysxcxkayb1zkr1zcvvk1zy-libjson_7.6.1.zip.drv /nix/store/iv0rdx08di0fg704zyxklkvdz6i96lm8-libjson-7.6.1.drv ... this derivation produced the following outputs: out -> /nix/store/ys6bvgfia81rjwqxjlgkwnx6jhsml8h9-libjson-7.6.1

nix-repl> :t makeFontsConf a function

nix-repl> :b makeFontsConf { fontDirectories = [ "${freefont_ttf}/share/fonts/truetype" ]; } ... this derivation produced the following outputs: out -> /nix/store/jkw848xj0gkbhmvxi0hwpnhzn2716v3c-fonts.conf

nix-repl> :s pan

Builds dependencies of the pan derivation, then starts a shell

in which the environment variables of the derivation are set

[nix-shell:/tmp/nix-repl]$ echo $src /nix/store/0ibx15r02nnkwiclmfbpzrzjm2y204fh-pan-0.139.tar.bz2

[nix-shell:/tmp/nix-repl]$ exit

nix-repl>

Tab completion works on variables in scope and on attribute sets. For example:

$ nix-repl '' '' Welcome to Nix version 1.6pre3215_2c1ecf8. Type :? for help.

nix-repl> thunder => thunderbird

nix-repl> Display all 3634 possibilities? (y or n)

nix-repl> lib Display all 291 possibilities? (y or n)

nix-repl> xorg.libX xorg.libXdamage xorg.libXdmcp

nix-repl> config.networking.use config.networking.useDHCP config.networking.usePredictableInterfaceNames