populate - source code installer

populate can install sources from various locations into a directory.
Currently populate knows how to install (local) files, Git repositories, and
symlinks.  Following example illustrates them all.


Example: Install some source to /var/src
----------------------------------------

First we have to create a "sentinel file" that tells populate it's okay to
install (and remove!) files from our target location:

    touch /var/src/.populate

Next we'll run populate with a source specification:

    populate root@localhost/var/src <<EOF
    {
      "mystuff": {
        "type": "file",
        "file": {
          "path": "/path/to/mystuff-1.0"
        }
      },
      "nixos-config": {
        "type": "symlink",
        "symlink": {
          "target": "mystuff/configuration.nix"
        }
      },
      "nixpkgs": {
        "type": "git",
        "git": {
          "ref": "8bf31d7d27cae435d7c1e9e0ccb0a320b424066f",
          "url": "https://github.com/NixOS/nixpkgs"
        }
      }
    }
    EOF