2021-01-11 00:22:37 +00:00
|
|
|
# hacc nixfiles
|
|
|
|
|
|
|
|
welcome to hacc nixfiles (haccfiles). this is the code describing our nix-based infrastructure.
|
|
|
|
|
|
|
|
## structure
|
|
|
|
|
|
|
|
- `default.nix`: Entrypoint to the config
|
|
|
|
- `common/`: configuration common to all hosts
|
|
|
|
- `desktop/`: desktop-relevant communication
|
|
|
|
- `modules/`: home-grown modules for hacc-specific services
|
|
|
|
- `nix/`: sources files, managed with niv
|
|
|
|
- `pkgs/`: packages we built and don't want to upstream
|
2022-01-07 17:15:18 +00:00
|
|
|
- `hosts/`: configuration.nix per host
|
|
|
|
- `services/`: all services we run; imported in appropriate host config
|
2021-01-11 00:22:37 +00:00
|
|
|
|
|
|
|
## working with the haccfiles
|
|
|
|
|
|
|
|
deploy:
|
|
|
|
``` shell
|
|
|
|
nix build -f . deploy.$hostname && ./result switch
|
|
|
|
```
|
|
|
|
|
|
|
|
`$hostname` can be replaced with any hostname or group
|
2021-01-20 18:45:21 +00:00
|
|
|
|
2022-01-07 17:15:18 +00:00
|
|
|
## I don't want to build this long dependency / want a cached version!
|
|
|
|
|
|
|
|
If it's still available on parsons from a previous deploy, do:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
nix copy --from ssh://parsons /nix/store/...
|
|
|
|
```
|
|
|
|
|
|
|
|
Note: don't just copy the .drv file (which Nix complains about if it can't
|
|
|
|
build something), that's just the description of how to build it! If you
|
|
|
|
don't know the actual outpath, look in the .drv file (should start with
|
|
|
|
`Derive([("out","[the path you want]"...`)
|
|
|
|
|
2021-01-20 18:45:21 +00:00
|
|
|
## committing to haccfiles
|
2021-01-20 18:47:57 +00:00
|
|
|
- Golden Rule: DO NOT COMMIT TO MAIN
|
|
|
|
- exceptions apply, if you are not sure where to commit, don't commit to main
|
2021-01-20 18:45:21 +00:00
|
|
|
- split up commits, every commit is one atomic change
|
|
|
|
- e.g. no big "did some changes" but instead "updated service x", "updated service y", "update service z"
|
|
|
|
- follow the commit format: "$prefix$place: $change"
|
|
|
|
- prefix: one of fixup, nothing
|
|
|
|
- place: one of "modules/$module", "$hostname/service", "common/($place)", "pkgs/$pkgs" or "sources"
|
|
|
|
- change: describe your change, don't go over the character limit where git starts hiding/wrapping
|
|
|
|
- Exception: autogenerated messages (merge commits, reverts, etc)
|