!UKDpaKNNsBpOPfLWfX:zhaofeng.li

Colmena

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

Load older messages


SenderMessageTime
3 Feb 2022
@pacien:pacien.netNotkea
In reply to @zhaofeng:zhaofeng.li
Apart from specialArgs, there are also normal arguments. For example, you can set the _module.args.someArg option in node configs.

thank you, that works!

By the way, what is meta.nixpkgs used for? Which system should be set for importing nixpkgs there? Should it match the platform of the machine running colmena?

18:42:23
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @pacien:pacien.net

thank you, that works!

By the way, what is meta.nixpkgs used for? Which system should be set for importing nixpkgs there? Should it match the platform of the machine running colmena?

It should be the platform that you are deploying to, not the one running Colmena itself.
18:44:26
@pacien:pacien.netNotkea ok! I'm setting this with nodeNixpkgs explicitly for each node. Would it be possible to make nixpkgs not mandatory in this case? 18:47:11
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @pacien:pacien.net
ok! I'm setting this with nodeNixpkgs explicitly for each node. Would it be possible to make nixpkgs not mandatory in this case?
Sadly not, because we still rely on some helper functions from lib of the top-level pinned nixpkgs. We could use the ones from an arbitrary nodeNixpkgs but it doesn't seem ideal.
18:51:19
@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.

And this setup (importing a file outside of a flake context) sadly doesn't work in pure evaluation.

18:53:26
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @winterqt:nixos.dev
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
Missed this one. Removing this line will not make the evaluation pure (it does nothing). It's only there for informational purposes, and both modes of evaluation (nix-instantiate and nix-eval-jobs) are initiated from "normal Nix" in an impure context.
22:22:13
@winterqt:nixos.devWinter (she/her)
In reply to @zhaofeng:zhaofeng.li
Missed this one. Removing this line will not make the evaluation pure (it does nothing). It's only there for informational purposes, and both modes of evaluation (nix-instantiate and nix-eval-jobs) are initiated from "normal Nix" in an impure context.
got it -- what information is it meant to convey?
23:22:00
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @winterqt:nixos.dev
got it -- what information is it meant to convey?
that it is actually impure and not the --flake mode in nix-eval-jobs, though in this case it has apparently led to more confusion
23:31:49
@winterqt:nixos.devWinter (she/her) wait but what is it even evaling if the two modes of eval are impure?
yeah i'm admittedly confused
23:32:56
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @winterqt:nixos.dev
wait but what is it even evaling if the two modes of eval are impure?
yeah i'm admittedly confused
Rephrase your question?
23:35:35
@winterqt:nixos.devWinter (she/her)What is the nix-eval-jobs invocation evaling? like, you said the two eval modes are doing it purely, so i guess i'm just confused23:36:48
@winterqt:nixos.devWinter (she/her)
In reply to @zhaofeng:zhaofeng.li
Missed this one. Removing this line will not make the evaluation pure (it does nothing). It's only there for informational purposes, and both modes of evaluation (nix-instantiate and nix-eval-jobs) are initiated from "normal Nix" in an impure context.
guess i'm just confused by this
23:37:16
@zhaofeng:zhaofeng.liZhaofeng Li Colmena can use nix-instantiate or nix-eval-jobs (experimental), and the code you referred to was the nix-eval-jobs flow 23:38:13
@winterqt:nixos.devWinter (she/her)Right, I understand that.23:42:48
@winterqt:nixos.devWinter (she/her) So looking at the nix-eval-jobs source, you're right in that the the value of evalSettings.pureEval isn't used at all... why does the flag exist then? 23:46:00
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @winterqt:nixos.dev
So looking at the nix-eval-jobs source, you're right in that the the value of evalSettings.pureEval isn't used at all... why does the flag exist then?
nix-eval-jobs can do pure eval with --flake (which we are not using), and --impure is needed if you use a --flake with impurity
23:49:06
@zhaofeng:zhaofeng.liZhaofeng LievalSettings is a global variable used by Nix23:49:28
@winterqt:nixos.devWinter (she/her)
In reply to @zhaofeng:zhaofeng.li
evalSettings is a global variable used by Nix
didn't even notice this linked to nix, whoops
23:52:45
@winterqt:nixos.devWinter (she/her)
In reply to @zhaofeng:zhaofeng.li
nix-eval-jobs can do pure eval with --flake (which we are not using), and --impure is needed if you use a --flake with impurity
so it is impure?
23:52:57
@winterqt:nixos.devWinter (she/her)wait, yes, i guess so23:53:24
@winterqt:nixos.devWinter (she/her)i misread your original answer23:55:02
@winterqt:nixos.devWinter (she/her)apologies23:55:04
@winterqt:nixos.devWinter (she/her) so why is impurity needed when using flakes? 23:55:42
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @winterqt:nixos.dev
so it is impure?
Yes, and we could make it work with pure-eval if we change our setup. The major obstable is that we have a separate eval.nix file that contains our logic, and that file is the entrypoint of the evaluation.
23:56:25
4 Feb 2022
@winterqt:nixos.devWinter (she/her)ah, i see now.00:01:28
@zhaofeng:zhaofeng.liZhaofeng Li ... and to expand on that, you can play around with the machinery like nix-instantiate --eval --pure-eval anything.nix and also --restrict-eval which is more relaxed and allows for things in the NIX_PATH to be accessed, but it seems that the pure-eval is never intended to be used like this outside of the new Flake-based nix CLI 00:06:16
@winterqt:nixos.devWinter (she/her)got it00:16:20
@winterqt:nixos.devWinter (she/her)Zhaofeng Li: why do you exit with 0 when the file doesn't exist in https://github.com/zhaofengli/colmena/pull/51/files#diff-c5cb072f3843e65103369a68e92494e5ab2915080d0930c0c4fd6b7cb2620a96R502?00:16:51
@winterqt:nixos.devWinter (she/her)doesn't this defeat the point of the services00:16:58
@zhaofeng:zhaofeng.liZhaofeng Li
In reply to @winterqt:nixos.dev
Zhaofeng Li: why do you exit with 0 when the file doesn't exist in https://github.com/zhaofengli/colmena/pull/51/files#diff-c5cb072f3843e65103369a68e92494e5ab2915080d0930c0c4fd6b7cb2620a96R502?
The service is supposed to die when it doesn't exist. The activation of the service is triggered by the path unit.
00:19:00

Show newer messages


Back to Room ListRoom Version: 6