2023-11-17 11:58:33 +00:00
|
|
|
# nixos-configuration
|
|
|
|
|
|
|
|
The collection of publically visible nixos-configuration files used for my
|
2023-12-07 20:12:58 +00:00
|
|
|
NixOS fleet.
|
2023-12-07 18:29:20 +00:00
|
|
|
|
2023-12-07 20:12:58 +00:00
|
|
|
## Desktop
|
2023-12-07 18:29:20 +00:00
|
|
|
|
2023-12-07 20:12:58 +00:00
|
|
|
My personal desktop configuration is reflected in the top-level `desktop`
|
|
|
|
directory. The only file not tracked is `hardware-configuration.nix` since this
|
|
|
|
is auto-generated when installing NixOS.
|
|
|
|
|
|
|
|
The system-wide configuration is found in `configuration.nix`. User-specific
|
|
|
|
configurations are grouped within a directory specific to each user. As of now,
|
|
|
|
this is just `jrpotter`. The `flake.nix` file links the system and user
|
|
|
|
configurations together.
|
|
|
|
|
|
|
|
## Remotes
|
|
|
|
|
2023-12-07 21:40:44 +00:00
|
|
|
Remote machines are hosted on [DigitalOcean](https://www.digitalocean.com/).
|
|
|
|
The custom image used by each droplet can be built using the top-level
|
|
|
|
`digital-ocean` flake. This image disables a root password in favor of SSH.
|
|
|
|
A droplet running this image will automatically pull in any enabled SSH keys
|
|
|
|
from your DigitalOcean account at creation time.
|
|
|
|
|
|
|
|
Deployment is managed using [colmena](https://github.com/zhaofengli/colmena).
|
|
|
|
To deploy, run the following:
|
|
|
|
```bash
|
2023-12-08 15:52:59 +00:00
|
|
|
$ cd infra
|
|
|
|
$ nix flake update # If any machine changes were made.
|
2023-12-07 21:40:44 +00:00
|
|
|
$ colmena apply
|
|
|
|
```
|
|
|
|
Note that colmena requires non-interactivity. If you haven't done so already,
|
|
|
|
you'll likely need to add the private SSH key corresponding to the public one
|
|
|
|
uploaded to DigitalOcean to your SSH agent. Do so by running:
|
|
|
|
```bash
|
|
|
|
$ eval $(ssh-agent -s)
|
|
|
|
$ ssh-add <ssh-file>
|
|
|
|
```
|