!UUYziobKGGxpovWyAN:nixos.org

Robotnix

258 Members
Build Android (AOSP) using Nix | https://github.com/danielfullmer/robotnix83 Servers

Load older messages


SenderMessageTime
10 Apr 2026
@jaen:matrix.orgjaen * 12:38:33
@neobrain:matrix.orgneobrainnice, congrats!13:13:04
@magic_rb:matrix.redalder.orgmagic_rb Lol, you found out you got the grant cause you got pinged here? 13:21:22
@magic_rb:matrix.redalder.orgmagic_rbPeak13:21:23
@jaen:matrix.orgjaen It would be funny if I did, but no - I actually do read e-mails from time to time xD 15:23:40
@jaen:matrix.orgjaenI guess now I have to actually go and build this thing for real.15:26:18
@jaen:matrix.orgjaenGotta hold Ericson by his "we're making dyndrvs generally usable this year" because when I transitioned my PoCs from parsing at scale to building at scale it turns there sure is a bit of overhead to solve xD15:26:28
@neobrain:matrix.orgneobrainTo me as a layperson the project sounds like it's solving a similar problem space as soongnix did. Are they related at all or am I thinking in the wrong direction?19:50:21
@atemu12:matrix.orgatemu12Depends on which way you build it. If you take the simple approach of basically doing nix-ninja, you don't interact with soong at all but that's unlikely to work in practice because drvs don't scale into the 100000s.23:05:53
@atemu12:matrix.orgatemu12The hard way would be to build soongnix and run it inside a drv to get per-project drvs (100s)23:06:51
11 Apr 2026
@jaen:matrix.orgjaenYeah, It Depends™01:48:50
@jaen:matrix.orgjaenThe MVP is writing a ninja parser that doesn't choke on how big AOSP is (that I have mostly mapped out), welding it onto nix-ninja (with a few CLI oddities Soong insists on) and seeing what falls out. Which will probably be "congrats, you now have loads of dyndrv profiling to do" and it is a bit of an open question how far you can go with optimisations. I don't think it's fundamentally impossible to get it to scale (bazel, for all of it being a giant PITA, somehow does it), but may end up not being practical.01:49:42
@jaen:matrix.orgjaenWhich is where the second part of it comes in - I'm trying to write it in a modular enough way, so you could decide to take out the ninja chunks, write some Soong piece and keep the rest of niceties for free. Or Grade, or Cmake, or Kbuild or whatever. I just picked AOSP as the first target because I was annoyed at how painful robotnix was to iterate on (until CyclicPentane came along and showed me I just sucked xD), but the idea is to provide something all whatever2nix tools could use.01:52:30
@jaen:matrix.orgjaenAnd if it turns out that there's a hard ceiling to dyndrvs that makes the simple & dumb approach not work, then I guess I can always pivot to Sonngnix 2: Electric Bogaloo.01:54:43
@jaen:matrix.orgjaen * 01:55:04
@jaen:matrix.orgjaenAs far as I understand it, the biggest difference between the two is Soong(nix) being applicative (as far as I can tell) and dyndrvs (and thus shinobi) being monadic. It doesn't change much for AOSP build since applicative is strictly less powerful (you have to know the build graph ahead of time), but is in general more powerful (because you can modify the build graph during the build, when you discover new dependencies), so it doesn't hurt to try and leverage that, if practicable.02:02:24
@jaen:matrix.orgjaenBut I guess that's enough of off-topic for now02:02:43
@cyclopentane:aidoskyneen.eupentanefwiw i think it's perfectly on-topic, and I'm also interested in this06:45:11
@magic_rb:matrix.redalder.orgmagic_rbNot yet enough offtopic. I never thought of dyndrv as being monadic while normally were in applicative land, but damn youre right06:55:49
@magic_rb:matrix.redalder.orgmagic_rbDoes bazel do sandbox setup? Cause assuming you dont use stdenv for your dyndrvs, then the only real thing nix does except for a fork exec is the sandbox setup07:37:36
@magic_rb:matrix.redalder.orgmagic_rbMaybe if we could reuse the sandbox for a group of dyndrvs?07:37:50
@jaen:matrix.orgjaenIt does have sandboxing, but it is less strict about it than Nix. With Nix you have to really try to make something non-reproducible, while with Bazel it's the other way around - it's not too hard to end up with "FFS why it does break with remote execution".07:40:51
@jaen:matrix.orgjaenI guess it's historically because for Nix hermeticity was the point, while for Bazel it was just means for an end (hard to do webscale builds if you can't reliably cache)07:42:10
@jaen:matrix.orgjaenPossibly? But then the trade-off becomes, I think, cache granularity.07:47:06
@jaen:matrix.orgjaenOne of the few downsides of Nix as opposed to Bazel is the default build granularity - for Bazel you are encouraged to go as granular as a single file, for Nix is more natural to go at a package granularity. And depending on how you chunk you, end up with different incrementality and early cut-off trade-offs, I think. But "Builds Systems a la Carte" is probably going to explain this better than me.07:49:30
@jaen:matrix.orgjaenI haven't tested this specifically for building things together, but at least for planning (that is, creating dyndrvs as you go) the exact trade-off is you either rebuild more or you eat more of the overhead.07:51:01
@jaen:matrix.orgjaenMy hope is that there was something obvious missed in the PoC and now that I'll get paid to write it myself, there will be some easy fix lurking. Or if it not, I'll just keep pestering Ericson for fixes/guidance xD08:01:34
@neobrain:matrix.orgneobrainThanks for the explanation, that's super interesting. I didn't even know about nix-ninja, sounds like plenty exciting stuff is happening in this space :)08:25:17
@atemu12:matrix.orgatemu12 @jaen:matrix.org I'd highly recommend you try to dyndrv a bunch of stubs to test scaling before you try to make it work with a real build system 10:09:35
@atemu12:matrix.orgatemu12IIRC I did something similar once and discovered sandbox creation overhead to be so massive that this granularity is simply infeasible10:10:45

Show newer messages


Back to Room ListRoom Version: 6