Update quick start section

This commit is contained in:
Eelco Dolstra 2014-11-24 15:14:07 +01:00
parent 2b74354e52
commit 103e4e43cc
2 changed files with 81 additions and 22 deletions

View file

@ -4,7 +4,7 @@
version="5.0" version="5.0"
xml:id="ch-about-nix"> xml:id="ch-about-nix">
<title>Introduction</title> <title>About Nix</title>
<para>Nix is a <emphasis>purely functional package manager</emphasis>. <para>Nix is a <emphasis>purely functional package manager</emphasis>.
This means that it treats packages like values in purely functional This means that it treats packages like values in purely functional
@ -16,10 +16,10 @@ store</emphasis>, usually the directory
subdirectory such as subdirectory such as
<programlisting> <programlisting>
/nix/store/nlc4z5y1hm8w9s8vm6m1f5hy962xjmp5-firefox-12.0 /nix/store/b6gvzjyb2pg0kjfwrjmg1vfhh54ad73z-firefox-33.1/
</programlisting> </programlisting>
where <literal>nlc4z5</literal> is a unique identifier for the where <literal>b6gvzjyb2pg0</literal> is a unique identifier for the
package that captures all its dependencies (its a cryptographic hash package that captures all its dependencies (its a cryptographic hash
of the packages build dependency graph). This enables many powerful of the packages build dependency graph). This enables many powerful
features.</para> features.</para>
@ -165,12 +165,6 @@ skip building from source and download a pre-built binary instead if
it knows about it. <emphasis>Nix channels</emphasis> provide Nix it knows about it. <emphasis>Nix channels</emphasis> provide Nix
expressions along with pre-built binaries.</para> expressions along with pre-built binaries.</para>
<!--
<para>source deployment model (like <a
href="http://www.gentoo.org/">Gentoo</a>) and a binary model (like
RPM)</para>
-->
</simplesect> </simplesect>
@ -193,10 +187,48 @@ collection</emphasis> (Nixpkgs).</para>
</simplesect> </simplesect>
<simplesect><title>Managing build environments</title>
<para>Nix is extremely useful for developers as it makes it easy to
automatically set up the the build environment for a package. Given a
Nix expression that describes the dependencies of your package, the
command <command>nix-shell</command> will build or download those
dependencies if theyre not already in your Nix store, and then start
a Bash shell in which all necessary environment variables (such as
compiler search paths) are set.</para>
<para>For example, the following command gets all dependencies of the
Pan newsreader, as described by <link
xlink:href="https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/networking/newsreaders/pan/default.nix">its
Nix expression</link>:</para>
<screen>
$ nix-shell '&lt;nixpkgs>' -A pan
</screen>
<para>Youre then dropped into a shell where you can edit, build and test
the package:</para>
<screen>
[nix-shell]$ tar xf $src
[nix-shell]$ cd pan-*
[nix-shell]$ ./configure
[nix-shell]$ make
[nix-shell]$ ./pan/gui/pan
</screen>
<!--
<para>Since Nix packages are reproducible and have complete dependency
specifications, Nix makes an excellent basis for <a
href="[%root%]hydra">a continuous build system</a>.</para>
-->
</simplesect>
<simplesect><title>Portability</title> <simplesect><title>Portability</title>
<para>Nix should run on most Unix systems, including Linux and Mac OS <para>Nix runs on Linux and Mac OS X.</para>
X.</para>
</simplesect> </simplesect>
@ -206,20 +238,22 @@ X.</para>
<para>NixOS is a Linux distribution based on Nix. It uses Nix not <para>NixOS is a Linux distribution based on Nix. It uses Nix not
just for package management but also to manage the system just for package management but also to manage the system
configuration (e.g., to build configuration files in configuration (e.g., to build configuration files in
<filename>/etc</filename>). This means, among other things, that its <filename>/etc</filename>). This means, among other things, that it
possible to easily roll back the entire configuration of the system to is easy to roll back the entire configuration of the system to an
an earlier state. Also, users can install software without root earlier state. Also, users can install software without root
privileges. For more information and downloads, see the <link privileges. For more information and downloads, see the <link
xlink:href="http://nixos.org/">NixOS homepage</link>.</para> xlink:href="http://nixos.org/">NixOS homepage</link>.</para>
</simplesect> </simplesect>
<!-- other features: <simplesect><title>License</title>
- build farms <para>Nix is released under the terms of the <link
- reproducibility (Nix expressions allows whole configuration to be rebuilt) xlink:href="http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html">GNU
LGPLv2.1 or (at your option) any later version</link>.</para>
</simplesect>
-->
</chapter> </chapter>

View file

@ -28,10 +28,11 @@ in the channel:
<screen> <screen>
$ nix-env -qa $ nix-env -qa
docbook-xml-4.2 docbook-xml-4.3
firefox-1.0pre-PR-0.10.1 docbook-xml-4.5
hello-2.1.1 firefox-33.0.2
libxslt-1.1.0 hello-2.9
libxslt-1.1.28
<replaceable>...</replaceable></screen> <replaceable>...</replaceable></screen>
</para></step> </para></step>
@ -62,6 +63,28 @@ $ nix-env -e hello</screen>
</para></step> </para></step>
<step><para>You can also test a package without installing it:
<screen>
$ nix-shell -p hello
</screen>
This builds or downloads GNU Hello and its dependencies, then drops
you into a Bash shell where the <command>hello</command> command is
present, all without affecting your normal environment:
<screen>
[nix-shell:~]$ hello
Hello, world!
[nix-shell:~]$ exit
$ hello
hello: command not found
</screen>
</para></step>
<step><para>To keep up-to-date with the channel, do: <step><para>To keep up-to-date with the channel, do:
<screen> <screen>
@ -72,6 +95,7 @@ The latter command will upgrade each installed package for which there
is a “newer” version (as determined by comparing the version is a “newer” version (as determined by comparing the version
numbers).</para></step> numbers).</para></step>
<!--
<step><para>You can also install specific packages directly from <step><para>You can also install specific packages directly from
your web browser. For instance, you can go to <link your web browser. For instance, you can go to <link
xlink:href="http://hydra.nixos.org/jobset/nixpkgs/trunk/channel/latest" xlink:href="http://hydra.nixos.org/jobset/nixpkgs/trunk/channel/latest"
@ -81,6 +105,7 @@ the program <command>nix-install-package</command>. A window should
appear asking you whether its okay to install the package. Say appear asking you whether its okay to install the package. Say
<literal>Y</literal>. The package and all its dependencies will be <literal>Y</literal>. The package and all its dependencies will be
installed.</para></step> installed.</para></step>
-->
<step><para>If you're unhappy with the result of a <step><para>If you're unhappy with the result of a
<command>nix-env</command> action (e.g., an upgraded package turned <command>nix-env</command> action (e.g., an upgraded package turned