!UKDpaKNNsBpOPfLWfX:zhaofeng.li

Colmena

302 Members
A simple, stateless NixOS deployment tool - https://github.com/zhaofengli/colmena104 Servers

Load older messages


SenderMessageTime
3 Feb 2022
@buckley310:matrix.orgBuckleybecause i already had a flake with my servers 🤔02:15:31
@schnecfk:ruhr-uni-bochum.deCRTifiedFound it02:15:34
@schnecfk:ruhr-uni-bochum.deCRTifiedIt looks perfect for me, as I also want another possible flake output (to generate sd images for my SBCs with the same config)02:16:16
@schnecfk:ruhr-uni-bochum.deCRTifiedThanks, that's really useful 🙂02:16:22
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @schnecfk:ruhr-uni-bochum.de
Is there a specific reason for why colmena diverges from the "standard" flake output schema? (For reference: https://nixos.wiki/wiki/Flakes#Output_schema )
It's because Colmena needs to inject its own modules for deployment.* options as well as module arguments (nodes, name). This is also consistent with the way NixOps implements its flakes support (outputs.nixopsConfigurations).
02:16:35
@zhaofeng:zhaofeng.liZhaofeng LiIt also provides a clear upgrade path for users using legacy hive.nix to flakes02:17:13
@schnecfk:ruhr-uni-bochum.deCRTified Oh, that explains a lot. In that case, it might be great to document the shim-method that Buckley posted, as it should give "the best of both worlds" 02:17:50
@buckley310:matrix.orgBuckleythere has actually been an update since then as well, i have a custom module to store my deployment options, but you dont actually need that anymore, as the colmena flake exposes its modules as an output now02:18:27
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @zhaofeng:zhaofeng.li
It also provides a clear upgrade path for users using legacy hive.nix to flakes

Also regarding upgrading to flakes, note that Colmena can auto-call if hive.nix evaluates to a function, allowing you to do things like this:

{ pkgs ? import <nixpkgs> { system = "x86_64-linux"; } }: # or how you pin your nixpkgs
{
  meta = { ... };
}

and importing it like outputs.colmena = import ./hive.nix { pkgs = ...; }; in your flake. You can then deploy with either flake.nix and hive.nix during your transition period.

02:27:38
@zhaofeng:zhaofeng.liZhaofeng Li If the current directory contains both flake.nix and hive.nix, then flake.nix is always preferred 02:28:12
@zhaofeng:zhaofeng.liZhaofeng Li * If the current directory contains both flake.nix and hive.nix, then flake.nix is always preferred if you don't specify a config file explicitly 02:29:39
@schnecfk:ruhr-uni-bochum.deCRTifiedThat iirc fails as I previously imported channels directly all over the place 😅 So my goal is indeed to have a flake config without such a transition configuration 02:33:48
@winterqt:nixos.devWinter (she/her) joined the room.03:46:59
@janejasperous:one.ems.hostJane Jasperous
In reply to @phaer:matrix.org

Jane Jasperous:
Does this work for you?

colmena.my-host = { name, nodes, ... }:
{
   imports = [ self.nixosConfigurations.my-host ];
}; 

(if you get an error that deployment options are undefined, import colmena.nixosModules.deploymentOptions in your nixosConfiguration)

no exactly,
14:27:34
@janejasperous:one.ems.hostJane Jasperous
        deployment.allowLocalDeployment = true;
        nixpkgs.system = self.nixosConfigurations.x2100.config.nixpkgs.system;
        imports = self.nixosConfigurations.x2100.extraArgs.modules ;
      };
14:28:23
@janejasperous:one.ems.hostJane Jasperous *
colmena.node-a = {
        deployment.allowLocalDeployment = true;
        nixpkgs.system = self.nixosConfigurations.x2100.config.nixpkgs.system;
        imports = self.nixosConfigurations.x2100.extraArgs.modules ;
      };

nixosConfigurations.x2100 = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs = { inherit inputs; };
      modules = [
          module-a
     ];
};
14:30:17
@janejasperous:one.ems.hostJane Jasperous *
colmena.node-a = {
        deployment.allowLocalDeployment = true;
        nixpkgs.system = self.nixosConfigurations.node-a.config.nixpkgs.system;
        imports = self.nixosConfigurations.node-a.extraArgs.modules ;
      };

nixosConfigurations.node-a = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs = { inherit inputs; };
      modules = [
          module-a
     ];
};
14:30:53
@janejasperous:one.ems.hostJane Jasperous *
colmena.node-a = {
        deployment.allowLocalDeployment = true;
        nixpkgs.system = self.nixosConfigurations.node-a.config.nixpkgs.system;
        imports = self.nixosConfigurations.node-a.extraArgs.modules ;
      };

nixosConfigurations.node-a = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      specialArgs = { inherit inputs; };
      modules = [
          module-a
          #inputs.colmena.nixosModules.deploymentOptions
     ];
};
14:31:31
@janejasperous:one.ems.hostJane Jasperousonly this works to me. If I import nixosModules.deploymentOptions and move deployment directive to nixosConfiguration I get this error:14:33:32
@janejasperous:one.ems.hostJane Jasperous error: The option deployment.allowLocalDeployment' in <unknown-file>' is already declared in /nix/store/rz7wzrgh4fpdgab95dgrx46ig2gc2nym-source/flake.nix'.` 14:38:23
@janejasperous:one.ems.hostJane Jasperous * error: The option 'deployment.allowLocalDeployment' in '<unknown-file>' is already declared in '/nix/store/rz7wzrgh4fpdgab95dgrx46ig2gc2nym-source/flake.nix'. 14:38:45
@janejasperous:one.ems.hostJane Jasperous * only this works to me. If I import nixosModules.deploymentOptions and move deployment directive to nixosConfiguration I get this error running colmena apply-local 14:39:27
@janejasperous:one.ems.hostJane Jasperous * only this works to me. If I import nixosModules.deploymentOptions and move deployment directive to nixosConfiguration I get this error running colmena apply-local 14:39:46
@pacien:pacien.netNotkea joined the room.15:15:09
@janejasperous:one.ems.hostJane JasperousIm also realize while playing with colmena/nixosConfigurations outputs that colmena are impure builds. Is there some option to force pure builds??15:35:17
@winterqt:nixos.devWinter (she/her)
In reply to @janejasperous:one.ems.host
Im also realize while playing with colmena/nixosConfigurations outputs that colmena are impure builds. Is there some option to force pure builds??
there isn't, but you can just remove this line: https://github.com/zhaofengli/colmena/blob/f674ddf1739aa79ac9dcad38771cc89c662eaa6a/src/nix/evaluator/nix_eval_jobs.rs#L84
16:42:07
@winterqt:nixos.devWinter (she/her)but i'm curious why impure is passed by default, i only see it mentioned there and in a test, cc Zhaofeng Li16:42:30
@pacien:pacien.netNotkea hello, is it possible to define specialArgs per node? I'd like to "inject" some attributes which depend on different values of system 16:58:07
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @pacien:pacien.net
hello, is it possible to define specialArgs per node? I'd like to "inject" some attributes which depend on different values of system
Apart from specialArgs, there are also normal arguments. For example, you can set the _module.args.someArg option in node configs.
18:35:56
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @winterqt:nixos.dev
but i'm curious why impure is passed by default, i only see it mentioned there and in a test, cc Zhaofeng Li
Currently, there is an eval.nix that takes a normal hive.nix or a flake URI, evaluated in a normal impure context. If a flake URI is passed, then it's fetched using builtins.getFlake.
18:40:37

Show newer messages


Back to Room ListRoom Version: 6