!UKDpaKNNsBpOPfLWfX:zhaofeng.li

Colmena

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

Load older messages


SenderMessageTime
2 Sep 2022
@zhaofeng:zhaofeng.liZhaofeng LiYour solution should work if the git repo is clean20:16:35
@yuka:yuka.dev@yuka:yuka.dev
In reply to @zhaofeng:zhaofeng.li
Yes, the locked URI of the assets flake encompasses the inputs as well.
also if it is a dirty git repo
20:16:50
@yuka:yuka.dev@yuka:yuka.dev
In reply to @zhaofeng:zhaofeng.li
Yes, the locked URI of the assets flake encompasses the inputs as well.
* also if one of the inputs is a dirty git repo?
20:16:56
@yuka:yuka.dev@yuka:yuka.devI mean it would be neat if I could also use --override-input etc. with colmena20:17:16
@zhaofeng:zhaofeng.liZhaofeng Li* Yeah, if the git repo is dirty, `nix flake metadata` will not return a locked flake URI (with the `narHash` query parameter) that's usable in pure evaluation mode. That's one gotcha I encountered when looking into pure eval.20:21:04
@yuka:yuka.dev@yuka:yuka.dev
In reply to @linus:schreibt.jetzt

I'm currently doing a hack like

    nixosConfigurations = lib.mapAttrs (name: config: let
      nodeNixpkgs = self.outputs.colmena.meta.nodeNixpkgs.${name} or self.outputs.colmena.meta.nixpkgs;
      nodeNixos = import (nodeNixpkgs.path + "/nixos/lib/eval-config.nix");
      in nodeNixos {
        modules = [
          self.outputs.colmena.defaults
          config
          inputs.colmena.nixosModules.deploymentOptions
          {
            _module.args.name = name;
            _module.args.nodes = self.outputs.nixosConfigurations;
            nixpkgs.overlays = [ nodeNixpkgs.lib.flakeOverlay (import ./overlay.nix) ];
          }
        ];
        inherit (nodeNixpkgs) system;
      }
    ) (builtins.removeAttrs self.outputs.colmena ["meta" "defaults"]);

to be able to get at least an approximation of the configs (enough to be able to build it in hydra, for example)

there is a way easier thing to do this
20:48:11
@yuka:yuka.dev@yuka:yuka.devthat doesn't need any changes to colmena20:48:20
@yuka:yuka.dev@yuka:yuka.dev

    nixosConfigurations = (import (inputs.colmena + "/src/nix/hive/eval.nix") {
      rawFlake = self;
      colmenaOptions = import (inputs.colmena + "/src/nix/hive/options.nix");
      colmenaModules = import (inputs.colmena + "/src/nix/hive/modules.nix");
    }).nodes;
20:48:36
@yuka:yuka.dev@yuka:yuka.dev *
    nixosConfigurations = (import (inputs.colmena + "/src/nix/hive/eval.nix") {
      rawFlake = self;
      colmenaOptions = import (inputs.colmena + "/src/nix/hive/options.nix");
      colmenaModules = import (inputs.colmena + "/src/nix/hive/modules.nix");
    }).nodes;
20:48:43
@yuka:yuka.dev@yuka:yuka.devAnd now I don't actually mind that colmena magically adds these expressions, because I will just keep using the colmena binary pinned in my flake inputs, so I know that colmena uses the exact same hive expression as my nixosConfigurations shim20:49:34
@linus:schreibt.jetztLinux Hackermanthat is nicer. Thanks20:50:36
@yuka:yuka.dev@yuka:yuka.devCan any of the evaluators take advantage of the eval cache?21:05:54
@linus:schreibt.jetztLinux Hackermanthe eval cache requires pure evaluation, so AFAIU no currently21:06:19
@linus:schreibt.jetztLinux Hackermanbut I might have missed something on the development of pure evaluation21:06:28
@linus:schreibt.jetztLinux Hackermanif pure evaluation is working, it should use the eval cache as well21:06:46
@yuka:yuka.dev@yuka:yuka.devcolmena does use pure evaluation mode21:07:25
@yuka:yuka.dev@yuka:yuka.devbut nix-instantiate as entry point, not nix build21:07:41
@yuka:yuka.dev@yuka:yuka.dev nix-instantiate -E ... builtins.getFlake .... 21:07:56
@yuka:yuka.dev@yuka:yuka.dev * nix-instantiate -E '... builtins.getFlake ....' 21:08:02
@linus:schreibt.jetztLinux Hackermanaah. I don't think so then. Not sure though.21:08:16
@yuka:yuka.dev@yuka:yuka.dev * nix-instantiate -E '... builtins.getFlake ....' --pure-eval. 21:08:29
@yuka:yuka.dev@yuka:yuka.dev options.set_pure_eval(self.path.is_flake()); 21:09:01
3 Sep 2022
@blaggacao:matrix.orgDavid Arnold (blaggacao)
In reply to @zhaofeng:zhaofeng.li
There still need to be some kind of versioning and/or a contract, because David Arnold (blaggacao) is making a framework (std) that will emit this structure with its own logic
I'm totally fine with a pre-1.0 versioning for the time being (i.e. without special care). I'm pretty used to tracing and chasing upstream changes on a commit basis in the nix ecosystem.
02:31:36
@blaggacao:matrix.orgDavid Arnold (blaggacao)
In reply to @yuka:yuka.dev

In my flake, I now do:

  outputs = { self, nixpkgs, colmena, ... }@inputs: {
    colmenaEval = colmena.evalHive {
      # whatever was in outputs.colmena before
    };
    nixosConfigurations = self.outputs.colmenaEval.nodes;
  };
I'd do __colmena to be consumed by the CLI... Kind of alludes python's marking of an internal something
02:34:16
@blaggacao:matrix.orgDavid Arnold (blaggacao)
In reply to @yuka:yuka.dev
Can any of the evaluators take advantage of the eval cache?
The only thing on the horizon to make tooling CLI tooling better that itself depends on some sort of Eval output that I know of is numtide/nix-eval-cache. That's not really satisfying, thought. i'd support a builtin.evalCache key thing if that was proposed.
02:38:43
@lara:uwu.is@lara:uwu.is joined the room.11:35:33
@ronnypfannschmidt:matrix.org@ronnypfannschmidt:matrix.org left the room.12:06:11
4 Sep 2022
@yuka:yuka.dev@yuka:yuka.dev mini post advertising colmena and the --evaluator streaming option ;) 10:42:02
@yuka:yuka.dev@yuka:yuka.devhttps://fedi.yuka.dev/notice/ANDaPgyBU74xfpDd8C10:42:03
@yuka:yuka.dev@yuka:yuka.devRedacted or Malformed Event13:17:37

Show newer messages


Back to Room ListRoom Version: 6