| 4 Feb 2022 |
CRTified | imports = value._module.args.modules; seems promising, but as I add colmena.nixosModules.deploymentOptions to the nixosSystem modules, I now get a duplicate definition warning:
error: The option `deployment.allowLocalDeployment' in `<unknown-file>' is already declared in `/nix/store/4ba8vi60ay3b68kgspyxd7bmxbsixar1-source/flake.nix'.
| 18:05:16 |
CRTified | So it looks like I'd need to filter it in that case? đ¤ | 18:05:29 |
CRTified | Can't really filter it âšī¸ Equality of lambdas is a bit hard as a problem đ | 18:16:06 |
Jane Jasperous | I get this exactly error using extraArgs.modules | 18:31:05 |
Buckley | okay i updated my deployment stuff. https://github.com/buckley310/nixos-config/blob/master/lib/deploy.nix | 18:45:47 |
Buckley | and for reference, this is how i use it.
let
hosts = import ./hosts hardware self.nixosModule;
deploy = sconfig.lib.deploy { inherit self hosts; };
in
{
inherit (deploy) colmena;
nixosConfigurations = builtins.mapAttrs (_: nixpkgs.lib.nixosSystem) hosts;
}
| 18:47:45 |
Buckley | i had played with that strategy before, so i had it ready, just wasnt using it. basically instead of colmena consuming nixosConfigurations, just build my hosts as plain configs, and both nixosConfigurations and colmena consume that | 18:49:27 |
Buckley | ./hosts looks like
hardware: nixosModule:
with hardware;
let
sys = system: mods: {
inherit system;
modules = [ nixosModule ] ++ mods;
};
in
{
host1 = sys "x86_64-linux" [ ./host1 ];
}
| 18:50:21 |
Buckley | * ./hosts/default.nix looks like
hardware: nixosModule:
with hardware;
let
sys = system: mods: {
inherit system;
modules = [ nixosModule ] ++ mods;
};
in
{
host1 = sys "x86_64-linux" [ ./host1 ];
}
| 18:50:31 |
CRTified | In reply to @buckley310:matrix.org i had played with that strategy before, so i had it ready, just wasnt using it. basically instead of colmena consuming nixosConfigurations, just build my hosts as plain configs, and both nixosConfigurations and colmena consume that What I dislike about that approach is that it feels like you'd lose the flake advantage, as it makes it easy for the colmena definition to diverge from the flake one | 18:51:34 |
Buckley | well its what ill go with for now. its easy enough to not diverge, granted im the only cook in the kitchen on this one | 18:53:48 |
Buckley | i dont know of a better way at this moment | 18:54:30 |
CRTified | Yes, of course. I'd just be worried that one of the evals behaves slightly different somehow | 18:54:36 |
Buckley | they behaved slightly differently before :) | 18:55:26 |
Buckley | probably due to the impure build or something, they would produce different store paths for the systems than nixos-rebuild --flake would | 18:56:08 |
aanderse | hey team i'm hoping someone can help me out here... i'm attempting to create a colmena managed nixos server using flakes warning this is my first attempt at using flakes đ
here is my flake.nix:
{
description = "test";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs";
};
outputs = { self, nixpkgs }: {
colmena = {
meta = {
nixpkgs = import nixpkgs {
system = "x86_64-linux";
};
};
hetzner-test-01 = {
imports = [
./hardware/hetzner-test-01.nix
];
};
};
};
}
i'm running into a mountain of errors when i run colmena build
| 20:32:36 |
aanderse | here is a snippet:
[ERROR] Cacheable portion of option doc build failed.
[ERROR] Usually this means that an option attribute that ends up in documentation (eg `default` or `description`) depends on the restricted module arguments `config` or `pkgs`.
[ERROR]
[ERROR] Rebuild your configuration with `--show-trace` to find the offending location. Remove the references to restricted arguments (eg by escaping their antiquotations or adding a `defaultText`) or disable the sandboxed build for the failing module by setting `meta.buildDocsInSandbox = false`.
| 20:33:05 |
aanderse | for reference hardware/hetzner-test-01.nix is pretty simple:
{ modulesPath, ... }: {
# imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.loader.grub.device = "/dev/sda";
boot.initrd.kernelModules = [ "nvme" ];
fileSystems."/" = {
device = "/dev/sda1";
fsType = "ext4";
};
}
| 20:33:55 |
Zhaofeng Li | In reply to @aanderse:nixos.dev
here is a snippet:
[ERROR] Cacheable portion of option doc build failed.
[ERROR] Usually this means that an option attribute that ends up in documentation (eg `default` or `description`) depends on the restricted module arguments `config` or `pkgs`.
[ERROR]
[ERROR] Rebuild your configuration with `--show-trace` to find the offending location. Remove the references to restricted arguments (eg by escaping their antiquotations or adding a `defaultText`) or disable the sandboxed build for the failing module by setting `meta.buildDocsInSandbox = false`.
There was a bug that got fixed in 0.2.1 as well as in main: https://github.com/zhaofengli/colmena/issues/50 | 20:34:13 |
Zhaofeng Li | It occurs in nixos-unstable with sandboxed documentation builds enabled, where documentation.nix uses modulesPath to strip off the prefixes of module paths | 20:35:20 |
aanderse | should i backport 0.2.1 to nixpkgs stable for you? đ | 20:35:32 |
aanderse | oh | 20:35:58 |
aanderse | nevermind... i see now | 20:36:02 |
aanderse | ha | 20:36:03 |
aanderse | thank you so much Zhaofeng Li ! | 20:36:18 |
hexa | i'm too lazy to migrate from morph đ | 20:37:10 |
Zhaofeng Li | Colmena should hopefully just work with your existing morph configs | 20:38:43 |
Zhaofeng Li | you do have to change how you pin nixpkgs, though | 20:39:05 |
Zhaofeng Li | * you do have to change how you pin nixpkgs, though: https://zhaofengli.github.io/colmena/unstable/tutorial/migration.html | 20:39:27 |
aanderse | hexa: i haven't used morph ... but i can't say enough good things about colmena this project is a breath of fresh air after having to deal with nixops issues (no stable release on python3) for a while | 20:39:33 |