Nixfiles, for hacc.
Find a file
stuebinm c09337c973 shoehorn nix-hexchen-style config into flakes
this replaces niv with nix flakes, attempting to preserve the old
structure as much as possible. Notable caveats:
 - I'm not sure if flake inputs expose version information anywhere, so
   the version in pkgs/mattermost/default.nix is now hardcoded.
   Confusingly, this appears to trigger a rebuild. Maybe I've missed something.
 - a lot of the old-style host.nix & deploy.nix machinery in nix-hexchen
   does not work with flakes, and their newer replacements are not exposed
   by upstream; I've put basic imitations of the relevant parts in this repo
 - (in particular, directories in hosts/ won't become deployable configs
   automatically)
 - parts of the code are now probably more complicated than they'd have to be
 - old variables names were preserved; confusingly, this means the flake
   inputs are still called "sources"
2022-11-13 22:45:50 +01:00
common shoehorn nix-hexchen-style config into flakes 2022-11-13 22:45:50 +01:00
hosts/parsons shoehorn nix-hexchen-style config into flakes 2022-11-13 22:45:50 +01:00
modules remove apparently unneeded disabledModules 2022-11-11 16:30:38 +01:00
pkgs shoehorn nix-hexchen-style config into flakes 2022-11-13 22:45:50 +01:00
services shoehorn nix-hexchen-style config into flakes 2022-11-13 22:45:50 +01:00
websites solve some TODOs 2022-11-11 16:30:38 +01:00
.gitignore repo: add vim swapfiles to gitignore 2020-11-29 12:53:03 +00:00
default.nix sources: update nixpkgs to 21.05 2021-08-07 12:05:25 +00:00
flake.lock shoehorn nix-hexchen-style config into flakes 2022-11-13 22:45:50 +01:00
flake.nix shoehorn nix-hexchen-style config into flakes 2022-11-13 22:45:50 +01:00
LICENSE add a LICENSE-file 2022-10-06 19:31:59 +02:00
README.md update readme 2022-01-07 18:16:31 +01: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
  • hosts/: configuration.nix per host
  • services/: all services we run; imported in appropriate host config

working with the haccfiles

deploy:

nix build -f . deploy.$hostname && ./result switch

$hostname can be replaced with any hostname or group

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:

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]"...)

committing to haccfiles

  • Golden Rule: DO NOT COMMIT TO MAIN
    • exceptions apply, if you are not sure where to commit, don't commit to main
  • 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)