frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

A Letter from Leonard Tramiel

https://www.facebook.com/story.php?story_fbid=122143500512931299&id=61577938971505&post_id=615779...
1•harel•1m ago•0 comments

Interview with Ken Silverman, 17-Year-Old Creator of the Build Engine

https://www.youtube.com/watch?v=WruzfQLxpQY
1•birdculture•1m ago•0 comments

Show HN: Showcase – Real-time collaborative AI chat with 180 models

https://showcase.thytus.com/v1/guides
1•martinoV•1m ago•0 comments

BMW, Samsung SDI, and Solid Power join forces for all-solid-state EV batteries

https://electrek.co/2025/10/31/bmw-samsung-sdi-join-forces-all-solid-state-ev-batteries/
1•breve•2m ago•0 comments

601: Game Theory

https://www.explainxkcd.com/wiki/index.php/601:_Game_Theory
1•jonbaer•4m ago•0 comments

Forging Our Future: OSL's Path to Sustainability

https://osuosl.org/blog/osl-future-update/
1•mulderc•4m ago•0 comments

The only people who feel good are making over $200k and have large portfolios

https://fortune.com/2025/10/24/why-is-economy-so-bad-recession-not-inflation-fed-rate-cuts-2025/
2•dataflow•7m ago•0 comments

Rigol Digital Oscilloscope MHO98

https://rigolshop.eu/mho98.html
1•walterbell•14m ago•0 comments

Show HN: AI that builds travel itineraries from booking confirmations

https://www.mtrip.com/
1•mtrip-guide•14m ago•0 comments

Portfolio Size Affects Early-Stage Venture Returns

https://www.angellist.com/blog/how-portfolio-size-affects-early-stage-venture-returns
1•simonebrunozzi•15m ago•0 comments

3D print Death Run 3D

https://slopeonline.online/death-run-3d
1•davidcolston•15m ago•0 comments

The Marketplace for Vaccine Medical Exemptions

https://undark.org/2025/10/31/frontline-vaccine-exemptions/
2•EA-3167•17m ago•0 comments

1K Users – Let Community Vote on Next App

3•NAKSTStudio•18m ago•0 comments

French lawmakers vote against wealth tax on super-rich

https://www.lemonde.fr/en/france/article/2025/10/31/french-lawmakers-vote-against-wealth-tax-on-s...
2•geox•19m ago•0 comments

Judge orders administration to distribute SNAP contingency money amid shutdown

https://abcnews.go.com/US/judge-rules-trumps-attempt-suspend-snap-funding-unlawful/story?id=12706...
3•jrflowers•20m ago•0 comments

Bluesky reaches 40M users milestone

https://bsky.app/profile/bsky.app/post/3m4j4iy4oek2d
4•vital•20m ago•1 comments

Making Every 5x5 Nonogram: Part 1

https://www.patreon.com/posts/making-every-5x5-142537007
2•okayestjoel•23m ago•1 comments

Show HN: RepoPulse – AI-powered GitHub analytics dashboard

https://repopulse.live
1•sdfswerew•24m ago•0 comments

I made a WeTransfer clone with Darth Vader vibes

https://DropVader.com
2•hitsnoozer•25m ago•0 comments

A Survey of Internet Censorship and Its Measurement

https://www.sciencedirect.com/science/article/pii/S0167404825004213
1•8organicbits•37m ago•0 comments

The sustainable, repairable Fairphone 6 is now available in the US for $899

https://www.androidcentral.com/phones/the-sustainable-repairable-fairphone-6-is-now-available-in-...
4•raybb•38m ago•0 comments

HN: AI File Sorter auto-organizes files using local AI (Windows, macOS binaries)

https://github.com/hyperfield/ai-file-sorter
1•hyperfield•39m ago•1 comments

Scheme Name: Calculator

https://www.iana.org/assignments/uri-schemes/prov/calculator
1•antiloper•40m ago•0 comments

Systems Don't Exist but Definitions Do

https://tangrammer.codeberg.page/on-the-clojure-move/output/posts/systems-dont-exist-but-definiti...
1•tangrammer•41m ago•1 comments

Linux – Sizecoding

http://www.sizecoding.org/wiki/Linux
2•thomasjb•49m ago•0 comments

Show HN: Artle - a daily art guessing game

https://artle.eu
1•steinvakt2•49m ago•0 comments

What's New in Shortcuts for the Apple OS 26 Releases

https://support.apple.com/en-us/125148
1•Bogdanp•50m ago•0 comments

Platform to Show Proof of Work

https://prooforg.com/
1•gabe_yc•50m ago•1 comments

CRISPR anti-tag-mediated room-temperature RNA detection using CRISPR/Cas13a

https://www.nature.com/articles/s41467-025-64205-4
2•PaulHoule•50m ago•0 comments

Somatic hypermutation articles from across Nature Portfolio

https://www.nature.com/subjects/somatic-hypermutation
1•measurablefunc•52m ago•0 comments
Open in hackernews

Nix Derivation Madness

https://fzakaria.com/2025/10/29/nix-derivation-madness
135•birdculture•7h ago

Comments

beardsciences•6h ago
If I understand this correctly, upcoming Ca-derivations will fix this by making these situations expected, properly-handled cases rather than a weird bug? https://nixos.wiki/wiki/Ca-derivations
setheron•5h ago
ca-derivations from what i understand, fixed-output derivations but more general.

The point of the article to me (author) was that i found it odd that Nix replaces the derivations when calculating the output path but not the derivation path. (talking about "paths" in Nix is so hard!)

beardsciences•5h ago
That makes sense, thanks for clarifying. Great writeup.
Ericson2314•5h ago
Yes, a hope of mine is that we can stop using "hash derivation modulo" entirely.

I've recently started some fancy formal spec-level documentation here https://github.com/NixOS/nix/pull/14408 The "resolution" equivalence class is both simpler and better than the "hash derivation modulo ..." one.

(The fact that it is a mouthful to say what the derivations are modulo kinda gives the game away! I put "hash quotient derivation" in the docs to side-step the issue.)

edolstra•5h ago
To be clear, there is no bug here: derivers are simply not uniquely determined in the presence of fixed-output derivations, which is by design. That's even more true with CA derivations.

CA derivations also introduce the opposite situation, namely that the same derivation can produce different output paths for different users (if the build is not bitwise reproducible).

setheron•5h ago
pick your poison: 1:N or N:1 ;P
Ericson2314•3h ago
It's both, multiple derivations can produce the same (content-addressed) store object, and the derivations may not be reproducible and produce different (content-addressed) store objects each time.

The reality of executing arbitrary programs on non-deterministic computers is, unfortunately, N:M!

(Cue deterministic WASM derivations or something.)

edolstra•5h ago
The deriver field in Nix has always been a misfeature. It was intended to provide traceability back to the Nix expression used to create the derivation, but it doesn't actually do that (since that wasn't really possible in the pre-flakes world, without hermetic evaluation). So instead it just causes a lot of confusion when the deriver recorded in the binary cache doesn't match the local evaluation result, due to fixed-output derivations changing.

In the future, Nix will hopefully gain proper provenance tracking that will tell you exactly where a store path came from: https://github.com/NixOS/nix/pull/11749

setheron•5h ago
is that the 'build-trace' feature I saw John write about ? (I want to explore that more)
Ericson2314•3h ago
I think Eelco has in mind a separate thing that would still be a store object field. But IMO we should not do that since derives are unique, and we should instead use the "build trace" instead, which properly handles that.

As Martin Schwaighofer has discussed, it is fine and in fact good for build traces entries to have arbitrary meta data, so the "claims" being cryptographically signed are more precise. (This is good for auditing, and if something looks suspicious, having full accountability.)

So on that grounds, if eelco would like to include some "this came from this flake" information as informal metadata. (formally the key must still the resolved derivation.) That is fine with me.

---

As I linked in my other reply, see my fast-growing https://github.com/NixOS/nix/pull/14408 docs PR where I try to formally nail all this stuff down for the first time.

mschwaig•3h ago
I mentioned another alternative to adding flake-specific metadata to data structures that are transferred over the network, as part of the signed traces or otherwise, in a comment on that PR Eelco linked.

It's keeping flake-specific data locally, to guarantee that it matches how the user ended up with the data, not how the builder produced it. I think otherwise from the user POV such data could again look misleading.

Ericson2314•3h ago
Good point. It is misleading if different flakes end up producing the same derivation, and we don't want to resign our build trace entry to account for that (which would amplify reads into writes). Separate indirection for this eval->store layer accounting sounds good.
tomberek•4h ago
Presumably this would support a big improvement to both SBOM generation as well as various UX features and workflow improvements.
Ericson2314•3h ago
The biggest problem of all is that derivers are not unique! A separate "build trace" map will solve this.
eviks•5h ago
> nix/store/24v9wpp393ib1gllip7ic13aycbi704g-ruby-3.3.9.drv

A different type of madness, but are ugly names so common, why not start with ruby-3.3.9 so any list of files is semantically sorted/readable?

rkomorn•5h ago
The package name is "secondary" information in this context. The hash is the primary one because it's stable unless the input changes.

The semantic is "what did this configuration generate", not "what's this package's version".

eviks•5h ago
it's primary for every human involved, also, the way you check whether it's changed is by automatically comparing that full hash, not its starting symbols, so you don't care where in the full string it's positioned

> The semantic is "what did this configuration generate", not "what's this package's version".

Then why have the name/version at all like in those nameless cache dirs?

rkomorn•4h ago
It made sense to me when I looked at it, at mount points, at when it changed vs when it didn't, etc, so IDK what to tell you.

FWIW, I'm also pretty sure I'm human.

Edit: also, I'm pretty sure that I wouldn't find it any more or less complicated if the package name came first.

eviks•4h ago
> at when it changed vs when it didn't

You still have this information! Just in a way where it becomes easier to track the difference or see how many rubies you have etc

> FWIW, I'm also pretty sure I'm human.

So you do read the "ruby" name/version , not just the hash?

rkomorn•4h ago
I don't care how many rubies I have, except for disk space, which I clean up regularly, so it's a bit moot.

I actually don't look at the package names either as much as I look at the number of hashes, which I find easy to eyeball.

Quite frankly, I don't really look at the paths anyway (on any kind of regular basis). I just know that when I've looked at them, the hash vs package name thing made sense to me because of the configuration -> result relationship. :)

Edit: oh, when I said I'm pretty sure I'm human, I meant "I'm human too but I don't seem to be seeing things the same way you do".

eviks•2h ago
> I don't care how many rubies I have, except for disk space, which I clean up regularly, so it's a bit moot.

So you do care about how many rubies you have (one of the nix issues is indeed its size), especially if it's not a ruby but some bigger dependency. Your solution is doing regular cleanup, another option would be to casually notice while browsing in a file manager or even clicking the "size" column, in which case reading left to right from the name would help noticing the dupes and maybe doing something about it.

> Quite frankly, I don't really look at the paths anyway

So you were just arguing for the fun of it based on a superficial theory?

> I'm human too but I don't seem to be seeing things the same way you do

Yeah you do, you read left to right and there is no way you read "sadlfkjasdlfwroiupdfoser" as well as you read "ruby-1.2.3". Though since you don't actually read that you don't care about it, that's also human, though not the level of human that matters for this argument

rkomorn•1h ago
> So you do care about how many rubies you have

No, I care about how many leftover rebuilds I have that I no longer use (typically all of them). Couldn't care less about any individual packages because I leave it to Nix to know what should be installed and what shouldn't.

I don't casually browse through the stores because I have no reason to.

> So you were just arguing for the fun of it based on a superficial theory?

Arguing? That's not what I'm doing, but maybe it's how you feel. Your initial post was a question. I replied to it. I guess your question was rhetorical, based on your responses to my comments.

I was giving you my perspective.

My various dealings with the paths comes from various adventures of debugging why my configs didn't produce what I thought (eg things not in path). It's also probably why I see the relationship as starting with config and ending with path on disk.

I have never gone on fishing expeditions around store paths. When I go out of my homedir and "root" fs, I know what hash I want from looking at a symlink, or some log output.

jancsika•3h ago
> Edit: also, I'm pretty sure that I wouldn't find it any more or less complicated if the package name came first.

rkomorn.skills.tty.tab_completion -= 1;

rkomorn•2h ago
Yeah, okay. Super cool HN comment quality.
singron•4h ago
It really doesn't matter. As a normal user, you don't use `drv` files directly, and everything you configure yourself will use attribute paths in nixpkgs. E.g. `pkgs.ruby` or `pkgs.ruby_3_3`.
Kootle•4h ago
In nix packages (derivations) are so lightweight that your store has tens of thousands of them, many with the same name, or with no meaningful name at all. On the rare occasions that you need to look in the store for a package you’re much more likely to be looking for a particular hash than a particular name. That, and having the hash as a prefix looks nicer in tabular output.
Ericson2314•3h ago
If I had my way

1. store paths would have no names at all

2. listing the contents of the store directory would not be allowed

3. store paths have more bits of information

Then store paths are halfway decent (but non-revocable) capabilities.

vatsachakrvthy•3h ago
How could one debug if we couldn't view contents of the store directory?
Ericson2314•3h ago
You can still read individual store objects in their entirety. You just need to know the store path for the object that you want to read.

You can still use root or something to list all the store paths. (But ideally nothing else would be running as root / with that power.)

eviks•2h ago
> 2. listing the contents of the store directory would not be allowed

Wow, that's awful, that's what Windows AppStore does, so it's even hard to see how much of the preinstalled garbage there is or even whether you might have a huge game you forgot to uninstall but might want to to free up some space.

What's the cool benefit that could justify this limitation?

otabdeveloper4•1h ago
It's done that way on purpose. Precisely so you don't try to use the paths semantically. The names literally mean nothing in this context.
eviks•14m ago
That contradicts the simple fact that the name includes "ruby" and isn't just a hash
ronef•5h ago
+1 to Farid, great write-up! What you’re seeing is the long-standing “deriver” mismatch: fixed-output derivations can change their .drv without changing the output path. Eelco is calling it out as well in the comment below. I believe the idea behind the path forward is there but happy to hear more!

Also. Check out Farid's other posts.

amelius•3h ago
> The road to Nix enlightenment is no joke and full of dragons.

Nix was a great research project. Now is the time to rewrite it from the ground up.

Valodim•3h ago
Eh. This can be applied to so many technologies that run the world..
jbstack•3h ago
Well, there's Guix as an alternative if you want a similar concept but different implementation philosophy. For me the major disadvantage of Guix is lack of package availability compared to Nix.
amelius•3h ago
Isn't there a way to transpile the scripts from Nix to Guix?
Y_Y•1h ago
It's not to hard to translate manually, but since the dependency tree is massive it doesn't seem feasible to do wholesale.
Ericson2314•2h ago
The core store layer is quite small, and I am trying to thoroughly document it, with all 3 of:

- a more "academic" spec of what it does

- nuts-and-bolts JSON schema for many data types

- JSON golden tests instead of C++ literals in the unit tests as often as possible.

I hope this will make additional store layer easy to churn out.

(The "hash derivation modulo" that is so fiddly described in this blog post can be dropped in a world where we no longer have input addressing, and just have content-addressing. Or, in a world where we have a new, simpler type of input-addressing instead.)

mystifyingpoi•2h ago
I feel the same about HCL in Terraform. The tool is perfect, the language is bollocks.
otabdeveloper4•1h ago
It has been rewritten a few times already. The "fixed output hash" is a dirty optimisation hack borne out of real-world needs and not a research idea.