Find file
d4a88df Oct 5, 2015
@edolstra @rbvermaa @civodul @aszlig
94 lines (80 sloc) 3.57 KB
[% WRAPPER title="Nix: The Purely Functional Package Manager" hideTitle=1 menu='nix' %]
[% USE HTML %]
[% BLOCK makePopover %]
<div class="btn btn-large btn-success nixos-popover" data-toggle="popover" data-html="true" [% HTML.attributes('data-content' => content, 'data-placement' => 'right') %]>
[% title %]
[% END %]
<div class="jumbotron">
<img class="right-logo" src="[%root%]logo/nixos-logo-only-hires.png" alt="NixOS Logo"/>
<h2>The Purely Functional Package Manager</h2>
<p class="lead">Nix is a powerful package manager for Linux and
other Unix systems that makes package management reliable and
reproducible. It provides atomic upgrades and rollbacks,
side-by-side installation of multiple versions of a package,
multi-user package management and easy setup of build
environments. <a href="[%root%]nix/about.html">Read more…</a></p>
[% WRAPPER makePopover title="<i class='fa fa-cloud-download'></i> Get Nix" %]
<p>On Linux and Mac OS X, the <strong>easiest way to install
Nix</strong> is to run the following shell command (as a user
other than <tt>root</tt>):</p>
<pre><span class="muted">$</span> curl | sh</pre>
<p>This script will download a distribution-independent binary
tarball containing Nix and its dependencies, and unpack it in
<p>Source tarballs and more installation information are <a
[% END %]
<hr />
<div class="row-fluid">
<div class="span4">
<p>Nix’s purely functional approach ensures that installing or
upgrading one package cannot break other packages. This is because
it won’t overwrite dependencies with newer versions that might
cause breakage elsewhere. It allows you to roll back to previous
versions, and ensures that no package is in an inconsistent state
during an upgrade.</p>
<div class="span4">
<p>Nix builds packages in isolation from each other. This ensures
that they are reproducible and don’t have undeclared dependencies,
so if a package works on one machine, it will also work on
<div class="span4">
<h2>Great for developers</h2>
<p>Nix makes it trivial to set up and share build environments for
your projects, regardless of what programming languages and tools
you’re using. For instance, running the command “<tt>nix-shell
'&lt;nixpkgs>' -A firefox</tt>” gives you a Bash shell in which
all of Firefox’s build-time dependencies are present and all
necessary environment variables are set.</p>
<div class="row-fluid">
<div class="span4">
<h2>Multi-user, multi-version</h2>
<p>Nix supports multi-user package management: multiple users can
share a common Nix store securely, don’t need to have root
privileges to install software, and can install and use different
versions of a package.</p>
<div class="span4">
<h2>Source/binary model</h2>
<p>Conceptually, Nix builds packages from source, but can
transparently use binaries from a <em>binary cache</em> if
available. This combines the flexibility of source package
management with the convenience of binary package management.</p>
<div class="span4">
<p>Nix runs on Linux, Mac OS X and other systems. <a
href="[%root%]nixpkgs">Nixpkgs</a>, the Nix Packages collection,
contains thousands of packages, many pre-compiled.</p>
[% END %]