https://butterword.com/el-intendente-esta-construyendo-una-mente-colmena-maritima/?feed_id=81974&_unique_id=6a0db247642d8
@skyfaller I can only speak about my combination of @forgejo deployed via #colmena on @nixos_org and it's been absolutely hassle free from the moment I set it up.
Upgrades have all been hands off, etc.
I'm sure this experience is replicable on other tool sets.
Day two with #colmena.
I think it is growing on me. Tags are neat, so is the build log, and the spinner in non-verbose mode.
I've yet to figure out why the system derivation ends up being <hash>-nixos-system-<host>-24.11pre-git. I'd love if that 24.11pre-git part would be the git sha1 of nixpkgs, or even better, that of my infra repo, or something.
Applying the configuration seems to have worked too. This is encouraging. I can also have verbose build logs (yay), and can keep the result in .gcroots, which is also yay.
This wasn't too bad.
As an added benefit, it looks like colmena nodes can be functions that take a nodes attribute set, containing the configuration of all nodes, which means that on one host, I can grab stuff from anothre host's config.
This is going to be really powerful, and useful, and is a strong reason to migrate to #colmena.
Allright. Lets start with some #colmena adventures!
colmenaHive = colmena.lib.makeHive self.outputs.colmena;
colmena = {
meta = {
nixpkgs = import nixpkgs {
system = "x86_64-linux";
};
specialArgs = {
inherit inputs;
};
};
quickbeam = { ... }: {
deployment = {
targetHost = "quickbeam";
};
} // self.nixosConfigurations.quickbeam.config;
};
Easy-peasy, I thought. But no.
error:
… while evaluating attribute 'quickbeam'
… while evaluating the attribute 'config.deployment'
at /nix/store/lb6ypkpf38qsd0p4gc5nqvb97s2brh5h-source/lib/modules.nix:334:9:
333| options = checked options;
334| config = checked (removeAttrs config [ "_module" ]);
| ^
335| _module = checked (config._module);
… while evaluating 'v.config' to select 'deployment' on it
at /nix/store/x98bfc65z3r0ksz1nn0v0fn9fnbdlgbk-source/src/nix/hive/eval.nix:188:42:
187| toplevel = lib.mapAttrs (_: v: v.config.system.build.toplevel) nodes;
188| deploymentConfig = lib.mapAttrs (_: v: v.config.deployment) nodes;
| ^
189| deploymentConfigSelected = names: lib.filterAttrs (name: _: elem name names) deploymentConfig;
(stack trace truncated; use '--show-trace' to show the full trace)
error: The option `nixpkgs.pkgs' was accessed but has no value defined. Try setting the option.
Fun. Mind you, what I'm doing is probably Wrong. I get that. But as there's no official "zero to colmena with flakes" docs, doing things wrong first is my best option.
After a few nights and weekends of mashing keys, I have figured the right order to bring up a #nixos instance built for #proxmox, provision it with #colmena, shove secrets on it with #sops, bring up a docker container, and get it on my @tailscale #tailnet. I don’t know how many times I nearly gave up, but it paid off, and I’m thrilled.
Now to do it again.