# pkgs.snapTools

`pkgs.snapTools` is a set of functions for creating Snapcraft images. Snap and Snapcraft is not used to perform these operations.

## The makeSnap Function

`makeSnap` takes a single named argument, `meta`. This argument mirrors the upstream `snap.yaml` format exactly.

The `base` should not be be specified, as `makeSnap` will force set it.

Currently, `makeSnap` does not support creating GUI stubs.

## Build a Hello World Snap

### Making a Hello World Snap

The following expression packages GNU Hello as a Snapcraft snap.

`nix-build` this expression and install it with `snap install ./result --dangerous`. `hello` will now be the Snapcraft version of the package.

## Build a Hello World Snap

### Making a Graphical Snap

Graphical programs require many more integrations with the host. This example uses Firefox as an example, because it is one of the most complicated programs we could package.

`nix-build` this expression and install it with `snap install ./result --dangerous`. `nix-example-firefox` will now be the Snapcraft version of the Firefox package.

The specific meaning behind plugs can be looked up in the Snapcraft interface documentation.