<refentry xmlns="http://docbook.org/ns/docbook"
          xmlns:xlink="http://www.w3.org/1999/xlink"
          xmlns:xi="http://www.w3.org/2001/XInclude">
  
<refmeta>
  <refentrytitle>nix-channel</refentrytitle>
  <manvolnum>1</manvolnum>
  <refmiscinfo class="source">Nix</refmiscinfo>
  <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo>
</refmeta>

<refnamediv>
  <refname>nix-channel</refname>
  <refpurpose>manage Nix channels</refpurpose>
</refnamediv>

<refsynopsisdiv>
  <cmdsynopsis>
    <command>nix-channel</command>
    <group choice='req'>
      <arg choice='plain'><option>--add</option> <replaceable>url</replaceable></arg>
      <arg choice='plain'><option>--remove</option> <replaceable>url</replaceable></arg>
      <arg choice='plain'><option>--list</option></arg>
      <arg choice='plain'><option>--update</option></arg>
    </group>
  </cmdsynopsis>
</refsynopsisdiv>

<refsection><title>Description</title>

<para>A Nix channel is mechanism that allows you to automatically stay
up-to-date with a set of pre-built Nix expressions.  A Nix channel is
just a URL that points to a place that contains a set of Nix
expressions, as well as a <command>nix-push</command> manifest.  See
also <xref linkend="sec-channels" />.</para>

<para>This command has the following operations:

<variablelist>

  <varlistentry><term><option>--add</option> <replaceable>url</replaceable></term>

    <listitem><para>Adds <replaceable>url</replaceable> to the list of
    subscribed channels.</para></listitem>

  </varlistentry>

  <varlistentry><term><option>--remove</option> <replaceable>url</replaceable></term>

    <listitem><para>Removes <replaceable>url</replaceable> from the
    list of subscribed channels.</para></listitem>

  </varlistentry>

  <varlistentry><term><option>--list</option></term>

    <listitem><para>Prints the URLs of all subscribed channels on
    standard output.</para></listitem>

  </varlistentry>

  <varlistentry><term><option>--update</option></term>

    <listitem><para>Downloads the Nix expressions of all subscribed
    channels, makes the conjunction of these the default for
    <command>nix-env</command> operations (by calling <command>nix-env
    -I</command>), and performs a <command>nix-pull</command> on the
    manifests of all channels to make pre-built binaries
    available.</para></listitem>

  </varlistentry>

</variablelist>

</para>

<para>Note that <option>--add</option> and <option>--remove</option>
do not automatically perform an update.</para>

<para>The list of subscribed channels is stored in
<filename>~/.nix-channels</filename>.</para>

<para>A channel consists of two elements: a bzipped Tar archive
containing the Nix expressions, and a manifest created by
<command>nix-push</command>.  These must be stored under
<literal><replaceable>url</replaceable>/nixexprs.tar.bz2</literal> and
<literal><replaceable>url</replaceable>/MANIFEST</literal>,
respectively.</para>

</refsection>

</refentry>