!VRULIdgoKmKPzJZzjj:nixos.org

Nix Hackers

899 Members
For people hacking on the Nix package manager itself188 Servers

Load older messages


SenderMessageTime
5 Mar 2025
@roberthensing:matrix.orgroberthhmm ok. Something human readable would be great (and something not ATerm)16:45:17
@emilazy:matrix.orgemily

human-readable can actually be a drawback for formats specifically designed to be non-malleable, precisely because they invite opening in a text editor and appending some keys in whatever order.

fwiw, https://preserves.dev/ is well-designed, has a superset of JSON types, and has both a textual format and a binary format with a rigidly-defined canonical representation for the latter. however it's also a bit obscure and won't have as wide library support as alternatives so I can understand not going with it. the Spritely/Agoric/Cap'n Proto standardization effort OCapN uses it as Syrup, which is a separate canonical-but-made-up-of-printable-characters serialization of it https://github.com/ocapn/syrup#pseudo-specification.

more well-known alternatives:

  • deterministic CBOR serialization, buuuut there are like three versions of it so caveat emptor https://www.imperialviolet.org/2022/04/17/canonsofcbor.html
  • canonical s-expressions
  • bencode
  • …ASN.1 BER? 🙃

also, if you don't actually need a flexible/extensible format, defining your own very simple rigid serialization isn't a sin when you want cryptographic canonicity. (just make sure it's actually non-ambiguous and preferably can't be corrupted into another valid message by truncation, especially if you might be concatenating multiple messages.)

17:00:57
@emilazy:matrix.orgemily (total digression but Preserves is also used in the https://syndicate-lang.org/ ecosystem which I suspect John Ericson might find interesting) 17:03:05
@emilazy:matrix.orgemily(the Preserves textual format is also a superset of JSON, so in terms of being able to ingest things in a familiar format to then canonicalize it works well. but again many understandable reasons to pick something else, just giving an overview of the space as I see it)17:04:33
@roberthensing:matrix.orgroberth John Ericson: did we have an issue on this topic yet? Couldn't find one 17:06:35
@Ericson2314:matrix.orgJohn Ericson @roberthensing:matrix.org: for new drv format? 17:24:42
@Ericson2314:matrix.orgJohn EricsonNot actually sure 17:24:54
@Ericson2314:matrix.orgJohn EricsonAlso FYI https://github.com/facebook/buck2/issues/86617:25:21
@Ericson2314:matrix.orgJohn EricsonI sent to @edef1c too17:27:02
@puck:puck.moepuck
In reply to @roberthensing:matrix.org
John Ericson: I've suggested to treat the Nixpkgs "fix" for the CA placeholder issue (no storedir prefix) as a workaround as ca-derivations is experimental https://github.com/NixOS/nixpkgs/pull/386774#pullrequestreview-2660479310
builtins.placeholder has the same "issue", though i like them not being /nix/store-prefixed because it disambiguates that their format is unstable
17:31:38
@roberthensing:matrix.orgroberthThat one isn't experimental, so we'd need a very very good reason to change that anyway17:33:35
@emilazy:matrix.orgemilyI don't suppose Nix strings support NUL bytes in them so that we could properly separate the namespace from actual filesystem paths? in the same way abstract Unix sockets do17:33:47
@roberthensing:matrix.orgroberthAlso isn't user-handled as much as outputs are17:34:04
@roberthensing:matrix.orgroberthEvaluator strings are C strings. This could be changed to something with a length, but we're not in a hurry. I guess one of those separator control characters could serve the same role, but I feel that it'd be weird to do any of that (regardless of choice of byte value)17:35:50
@emilazy:matrix.orgemilyNUL is the only byte that is actually guaranteed to not be allowed on Linux anyway (though of course other platforms exist too)17:38:44
@emilazy:matrix.orgemilyso no advantage to anything else17:38:48
@naxdy:naxdy.orgNaxdy changed their profile picture.18:03:52
6 Mar 2025
@maikelfrias:matrix.org@maikelfrias:matrix.org joined the room.02:33:30
@maikelfrias:matrix.org@maikelfrias:matrix.org left the room.02:36:01
@elvishjerricco:matrix.orgElvishJerriccoI'm going to make this comment here because I think it is one of the most important things I've said in the world of NixOS. Please read this comment: https://discourse.nixos.org/t/determinate-nix-3-0/61202/5721:33:50
7 Mar 2025
@qyriad:katesiria.orgQyriad changed their display name from Qyriad to qyriad.16:03:20
8 Mar 2025
@colgrave34:pendora.ioColgrave joined the room.03:22:45
@fzakaria:one.ems.hostfzakariaTrying to figure out dynamic derivations; I'd appreciate some tips06:07:58
@fzakaria:one.ems.hostfzakariaHitting some weird road blocks with what I think would work.06:08:14
@fzakaria:one.ems.hostfzakaria

Like:

warning: Ignoring dynamic derivation /nix/store/8apg4x2xbcx83xc0p1jk1qdiihkmhjyg-hello-2.12.1.drv.drv^out while querying missing paths; not yet implemented
error: Building dynamic derivations in one shot is not yet implemented.
06:08:22
@tomberek:matrix.orgtomberekYou might need a wrapping drv for now. 06:20:45
@fzakaria:one.ems.hostfzakariaHere is my strawman https://pastebin.com/wnHmj4pW06:46:30
@fzakaria:one.ems.hostfzakariai think it's a wrapping drv?06:46:36
@adeci:matrix.org. joined the room.07:01:28
@ncfavier:matrix.orgncfavier changed their profile picture.10:43:32

Show newer messages


Back to Room ListRoom Version: 6