Files
tranquil-pds/docs/install-nix.md
2026-04-17 01:32:30 +03:00

71 lines
2.1 KiB
Markdown

# Tranquil PDS production installation on NixOS
This guide covers installing Tranquil PDS on NixOS via the flake and the bundled NixOS module.
## Prerequisites
- A server :p
- Disk space enough for blobs (depends on usage; plan for ~1GB per active user as a baseline)
- A domain name pointing to your server's IP
- A wildcard TLS certificate for `*.pds.example.com` (user handles are served as subdomains)
- Flakes enabled (`experimental-features = nix-command flakes` in `nix.conf`)
## Add the flake as an input
In your system flake:
```nix
{
inputs.tranquil.url = "git+https://tangled.org/tranquil.farm/tranquil-pds";
outputs = { self, nixpkgs, tranquil, ... }: {
nixosConfigurations.pds = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
tranquil.nixosModules.default
./configuration.nix
];
};
};
}
```
## Enable the service
In `configuration.nix`:
```nix
{
services.tranquil-pds = {
enable = true;
database.createLocally = true;
settings = {
server.hostname = "pds.example.com";
# see example.toml for all options
};
};
}
```
This will set up the local postgres database for you automatically. If you prefer to manage postgres yourself, leave `database.createLocally` at its default (`false`) and set `settings.database.url` manually.
See [example.toml](../example.toml) for the full set of configuration options.
## Binary cache
Pre-built artifacts from the flake — the package, frontend, and devshell — are published to [tranquil.cachix.org](https://tranquil.cachix.org). To pull from it instead of building locally, add to your NixOS config:
```nix
nix.settings = {
substituters = [ "https://tranquil.cachix.org" ];
trusted-public-keys = [ "tranquil.cachix.org-1:PoO+mGL6a6LcJiPakMDHN4E218/ei/7v2sxeDtNkSRg=" ];
};
```
> [!NOTE]
> Due to a current spindle limitation, the aarch64 package is cross-compiled on an x86_64 builder and published under a separate attribute. If you're running on aarch64, set the package manually:
>
> ```nix
> services.tranquil-pds.package = inputs.tranquil.packages.x86_64-linux.tranquil-pds-aarch64;
> ```