!9IQChSjwSHXPPWTa:lix.systems

Lix

1123 Members
Lix user channel. Feel free to discuss on-topic issues here and give each other help. For matrix.to links to the rest of the Lix channels, see: https://wiki.lix.systems/books/lix-organisation/page/matrix-rooms305 Servers

Load older messages


SenderMessageTime
1 Feb 2026
@sofiedotcafe:matrix.orgSofie đŸłïžâ€âš§ïž (she/her)somehow13:44:55
@antifuchs:asf.computerantifuchs hm, something referenced by my nix config (it's flake-based and I updated inputs) has started using a determinateNix option, and the backtrace I'm getting is extremely unhelpful, even with --show-trace. https://gist.github.com/antifuchs/37c6fd57d62e1867aeff12201377bbfb is that trace from the repl, I can't see anything useful in there, is there a different thing I could do to get more info? 16:17:48
@lillecarl:matrix.orglillecarlHow do you guys conveniently dogfood Lix development? If you replace system nix daemon and you break something badly enough and you want to revert for example. I can think of ways but I imagine someone has thought about it more than me 😄18:26:10
@hexa:lossy.networkhexathere is always single user mode18:36:33
@lillecarl:matrix.orglillecarl hexa: Yeah i guess just calling the old activationscript too. I realize never ever roll backwards 18:40:38
@vczf:matrix.orgvczf
In reply to @antifuchs:asf.computer
hm, something referenced by my nix config (it's flake-based and I updated inputs) has started using a determinateNix option, and the backtrace I'm getting is extremely unhelpful, even with --show-trace. https://gist.github.com/antifuchs/37c6fd57d62e1867aeff12201377bbfb is that trace from the repl, I can't see anything useful in there, is there a different thing I could do to get more info?

Possibly try a grep -rnFe ‘determinateNix’ or similar in /nix/store

Whatever nix code calling it must exist in the store somewhere.

18:47:22
@antifuchs:asf.computerantifuchsyeah, that tracks. and ooof18:47:49
@antifuchs:asf.computerantifuchs(grep's still running on my store, btw)19:25:16
@vczf:matrix.orgvczf
In reply to @antifuchs:asf.computer
(grep's still running on my store, btw)
grep -rnFe determinateNix /nix/store/*-source* might work better
19:38:59
@vczf:matrix.orgvczfNot at my computer right now though19:39:13
@vczf:matrix.orgvczf
In reply to @antifuchs:asf.computer
(grep's still running on my store, btw)
* grep -rnFe determinateNix /nix/store/-source/**.nix` might work better
19:41:04
@antifuchs:asf.computerantifuchsyeah, I probably could do something smarter with find/xargs there19:41:30
@antifuchs:asf.computerantifuchs find /nix/store -type f -name \*.nix -print0 | xargs -0 grep -l determinateNix so I don't run into argv limits 19:42:20
@vczf:matrix.orgvczf Or **/*.nix as the grep arg should work 19:43:39
@k900:0upti.meK900 rg -t nix determinateNix ez 19:45:02
@antifuchs:asf.computerantifuchs
In reply to @vczf:matrix.org
Or **/*.nix as the grep arg should work
Not in my shell, no. But anyways I’m off to walk the dog, should be done by then
19:47:26
@antifuchs:asf.computerantifuchs(Also I don’t trust rg’s file selection mechanisms at all, unless I’m in a git repo. Been burned too many times by that)19:47:57
@vczf:matrix.orgvczfOh lol ripgrep is almost 10 years old and I still haven’t gotten around to trying it19:48:27
@522_:catgirl.cloud0x4fbb09 it/its ⛯✇ΘΔthe automatic exclusions?19:48:35
@toonn:matrix.orgtoonn Start today! 19:48:41
@522_:catgirl.cloud0x4fbb09 it/its ⛯✇ΘΔ yeah, rg -uuu is the way to specify "search absolutely everything" 19:49:14
@antifuchs:asf.computerantifuchsI felt like I could trust it once, then the cli changed and I haven’t trusted it since. Maybe in 10 years I will use that again, but for now? Nah20:18:59
@antifuchs:asf.computerantifuchsIt’s great in git repos tho!20:19:44
@sofiedotcafe:matrix.orgSofie đŸłïžâ€âš§ïž (she/her)rip grep all 😭20:24:33
@zimward:zimward.moezimward changed their display name from zimward @fosdem to zimward.20:36:21
@rosssmyth:matrix.orgrosssmythMain thing ripgrep messes up on in my experience is with .gitignore because it uses a parser that is not very good22:57:43
2 Feb 2026
@antifuchs:asf.computerantifuchs update, it's virby, a linux-in-a-rosetta-vm builder for darwin. oh well. 01:34:24
@holly:federated.nexusholly [nexus] đŸłïžâ€âš§ïž joined the room.07:27:17
@psentee:matrix.orgPsentee

Is there any explanation for what nix does when installable's --file/--expr result is a function (return a function or call it)? I (somewhat) figured out the behaviour, couldn't find it documented anywhere and can't figure out if it's intentional and if I can rely on that. Here's what I found, on a nix eval example, but run & build seem to do the same:

  • First thing I noticed is nix eval -f '<nixpkgs>' hello returns the derivation (it calls (import <nixpkgs> {}).hello rather than use (import <nixpkgs>).hello. It also processes --arg/--argstr. I feel that the <nixpkgs> behaviour is (somewhat) intentional
  • But nix eval -f '<nixpkgs>' returns «lambda @ /nix/store/i88d8nffxs0n79mzgzrpnkiri3yi4isr-source/pkgs/top-level/impure.nix:12:1» rather than toplevel pkgs attrset
  • A raw lambda expression behaves similar: nix eval --expr '{...}@args: { inherit args; }' shows «lambda @ «string»:1:1», and nix eval --expr '{...}@args: { inherit args; }' args shows { }
  • But if I drop the {...} in function's signature, it stops calling the function: nix eval --expr 'args: { inherit args; }' is «lambda @ «string»:1:1», and nix eval --expr 'args: { inherit args; }' args throws error: the value being indexed in the selection path 'args' at '' should be a set but is a function: «lambda @ «string»:1:1»
  • Both nix eval --expr '{ __functor = args: { inherit args; }; }' and nix eval --expr '{ __functor = {...}@args: { inherit args; }; }' never call. Both forms return { __functor = «lambda __functor @ «string»:1:15»; }, with or without args (args attribute path is ignored, it always returns the expr result)
  • Adding __functionArgs = {}; to the previous one doesn't change anything: it never calls and ignores the attribute path
  • Now I've read up on functors, and both forms above should have failed: evaluating { __functor = args: { inherit args; }; } 23 throws error: attempt to call something which is not a function but a set: { args = { __functor = «lambda __functor @ «string»:1:15»; }; } (missing the "self" first argument), only this form returns 23: { __functor = _self: args: { inherit args; }; } 23
  • But if I add the missing arg, nix eval --expr '{ __functor = self: args: { inherit args; }; }' args, I get error: the value being indexed in the selection path 'args' at '' should be a set but is a function: «lambda __functor @ «string»:1:21»
  • Without attrpath it doesn't attempt to call: nix eval --expr '{ __functor = self: args: { inherit args; }; }' returns { __functor = «lambda __functor @ «string»:1:15»; }

Now some of this is intentional, some of this is accidental, and some of this is a bug (I'm 92% convinced that calling __functor just once (only with self and not with actual args) is some kind of a bug). None of this seems documented (or I couldn't find it). Can I rely on any of it? How to make it make sense?

11:39:55
@psentee:matrix.orgPsentee (is the answer "The nix CLI is as much of a mess as flakes are, and without flakes you should be using the old CLI"? I like the nix CLI, even without flakes, and so far I've avoided learning the old incantations, I hope to continue using nix, but I'll accept "this CLI is irreparable mess, don't expect any better" as an answer) 11:42:32

Show newer messages


Back to Room ListRoom Version: 10