nix-pack-closure
1
Nix
nix-pack-closure
pack the closure of a store path into a single file that
can be unpacked with
nix-unpack-closure
nix-pack-closure
paths
Description
The command nix-pack-closure packs the
contents of the store paths paths and
all their dependencies into a single file, which
is written to standard output. (That is, it
serialises paths.)
The output can then be unpacked into the Nix store of another machine
using nix-unpack-closure.
Together, nix-pack-closure and
nix-unpack-closure provide a quick and easy way to
deploy a package to a different machine. However, as the output of
nix-pack-closure tends to be rather large (since it
contains all dependencies), it’s not very efficient.
nix-push and nix-pull are more
efficient, but are also a bit more cumbersome to use.
Examples
To copy some instance of Subversion with all its dependencies to
another machine:
$ nix-pack-closure /nix/store/hj232g1r...-subversion-1.3.0 > svn.closure
Copy svn.closure to the remote machine, then on the remote machine do:
$ nix-unpack-closure < svn.closure
Copy the program azureus with all its
dependencies to the machine scratchy:
$ nix-pack-closure $(which azureus) | ssh scratchy nix-unpack-closure
As a variation on the previous example, copy
azureus, and also install it in the user’s profile
on the target machine:
$ nix-pack-closure $(which azureus) | ssh scratchy 'nix-env -i $(nix-unpack-closure)'