# Nix Deployment

This repo ships a Nix flake with:

- `nix run` support (runs `flynn`)
- `nix develop` dev shell (Node 22 + pnpm)
- A package that builds `dist/` and preserves `dist/gateway/ui` adjacency
- An optional NixOS module (`services.flynn`)

## Quick Start

```bash
# Dev shell
nix develop

# Run (prints CLI help)
nix run . -- --help

# Build package
nix build .#
```

### First Build: Update `pnpmDepsHash`

The Nix package uses `buildPnpmPackage`, which requires a fixed dependency hash.

On the first `nix build`, Nix will fail with a message containing the expected
hash (looks like `got: sha256-...`). Copy that value into `nix/package.nix` as
`pnpmDepsHash`, then rebuild.

## NixOS Module

The flake exports `nixosModules.flynn`.

Example:

```nix
{
  inputs.flynn.url = "github:will666/flynn";

  outputs = { self, nixpkgs, flynn, ... }: {
    nixosConfigurations.myHost = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [
        flynn.nixosModules.flynn
        {
          services.flynn = {
            enable = true;
            configFile = "/etc/flynn/config.yaml";
            dataDir = "/var/lib/flynn";
          };
        }
      ];
    };
  };
}
```

