!lymvtcwDJ7ZA9Npq:lix.systems

Lix Development

421 Members
(Technical) development of Lix, the package manager, a Nix implementation. Please be mindful of ongoing technical conversations in this channel.142 Servers

Load older messages


SenderMessageTime
13 Aug 2025
@emilazy:matrix.orgemily

has anyone run into this on macOS error: failed to extract archive (Cannot extract through symlink /tmp/nix-50z48nbfhpxw5h6rvfcpq4ibip/nix-darwin-e04a388232d9a6ba56967ce5b53a8a6f713cdfcf)

it might be related to me trying to recover my busted system right now but I usually have /nix/tmp as my temp-dir and I'm wondering if there is actually some broken behaviour around /tmp -> /private/tmp when using --store local with the default config

15:35:17
@emilazy:matrix.orgemily --temp-dir /private/tmp fixes it 15:35:35
14 Aug 2025
@emilazy:matrix.orgemily overlay may need adjusting for https://github.com/NixOS/nixpkgs/pull/433617, though should probably be harmless as the users are on nixComponents.* or a specific version now I guess 14:09:10
@emilazy:matrix.orgemily is there a reason we reject builtins.fromJSON "9223372036854775808" but allow builtins.fromJSON "-9223372036854775809" and produce a float 14:49:01
@emilazy:matrix.orgemily it seems intentional (error: unsigned json number 9223372036854775808 outside of Nix integer range, "unsigned" specifically) but it also seems bizarre 14:49:14
@emilazy:matrix.orgemily
@note There are three enumeration entries (number_integer, number_unsigned, and
number_float), because the library distinguishes these three types for numbers:
@ref basic_json::number_unsigned_t is used for unsigned integers,
@ref basic_json::number_integer_t is used for signed integers, and
@ref basic_json::number_float_t is used for floating-point numbers or to
approximate integers which do not fit in the limits of their respective type.
14:51:57
@emilazy:matrix.orgemily so it's handled like that in nlohmann_json to allow lossless parsing of bigger-than-signed integers if you have an unsigned type as C++ does 14:52:27
@emilazy:matrix.orgemilybut Nix only has a signed integer type14:52:35
@emilazy:matrix.orgemily if we're doing "values outside the range get approximated as floats" a la JavaScript (though note that we losslessly represent more values than JS does already since we have a separate integer type…), then we should do that for too-large signed integers too 14:53:11
@emilazy:matrix.orgemilyotherwise, we should reject out-of-range integers regardless of sign14:53:31
@emilazy:matrix.orgemily(this probably means our JSON serialization is nonportable too by RFC rules?)14:53:41
@emilazy:matrix.orgemily IOW, the nlohmann_json semantics are "we try to find an integer type we can fit a literal into, and otherwise we produce a float" 14:54:35
@emilazy:matrix.orgemily if we were to implement "we try to find an integer type we can fit a literal into, and otherwise we produce a float" in Nix, we should produce a float for builtins.fromJSON "9223372036854775808" 14:54:52
@emilazy:matrix.orgemily otherwise, if we want "we reject integer-looking literals that don't fit into an integer type, and produce a float only for explicitly float-y values", we should error out on builtins.fromJSON "-9223372036854775809" 14:55:16
@emilazy:matrix.orgemily the current combination of behaviour seems like an unjustifiable accident caused by the impedance mismatch between nlohmann_json's API oriented around C++ numeric types, and Nix's signed-only integers 14:55:45
@emilazy:matrix.orgemilyP.S. I want to cry14:56:12
@weethet:catgirl.cloudWeetHet @raitobezarius:matrix.org please review https://gerrit.lix.systems/c/lix/+/3862 15:29:28
@piegames:flausch.socialpiegames
In reply to @emilazy:matrix.org
IOW, the nlohmann_json semantics are "we try to find an integer type we can fit a literal into, and otherwise we produce a float"
Thanks, I hate it
15:34:14
@emilazy:matrix.orgemilywell, blame JavaScript :)15:34:30
@emilazy:matrix.orgemily(and JSON for not specifying any goddamn semantics at all at first)15:34:35
@piegames:flausch.socialpiegamesTbh if a library does untyped bullshit like that, I preferably want it out of my sight15:34:47
@emilazy:matrix.orgemilyno, this is just JSON15:34:58
@emilazy:matrix.orgemilyJSON has only one numeric type, because JavaScript does15:35:05
@emilazy:matrix.orgemilyits type is even vaguer than JavaScript's however15:35:09
@emilazy:matrix.orgemilyI don't have a strong opinion on "reject integer-looking things that are out of Nix integer range" vs. "always produce floats for things outside of Nix integer range"; both have their merits. the current state seems unjustifiable though15:35:36
@charles:computer.surgeryCharlesi thought that JSON just didn't define any constraints on numeric types15:36:09
@raitobezarius:matrix.orgraitobezarius (DECT: 7248)
In reply to @weethet:catgirl.cloud
@raitobezarius:matrix.org please review https://gerrit.lix.systems/c/lix/+/3862
In ~ 5 days, yeah
15:35:52
@charles:computer.surgeryCharlesand left that as an implementation detail15:36:25
@emilazy:matrix.orgemilyit depends what you mean by "JSON".15:36:29
@emilazy:matrix.orgemilythe original terrible specification defines syntax and says basically nothing about semantics at all https://www.json.org/json-en.html15:36:45

Show newer messages


Back to Room ListRoom Version: 10