Nixfiles, for hacc.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Peter M 5f08fc98fe services/mail.nix: Adding an email for peter 8 months ago
common change name 9 months ago
desktop cleanup default apps 1 year ago
hosts remove gitlab 8 months ago
modules update and fix mattermost 8 months ago
nix update and fix mattermost 8 months ago
pkgs gitea: fix uffd login 9 months ago
services services/mail.nix: Adding an email for peter 8 months ago
websites re-add infra4future.de faq 8 months ago
.gitignore repo: add vim swapfiles to gitignore 3 years ago
.gitlab-ci.yml gitlab-ci.yml: disable nixda build 1 year ago
README.md update readme 1 year ago
default.nix sources: update nixpkgs to 21.05 2 years ago

README.md

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)