Hacker News new | past | comments | ask | show | jobs | submit login
Nix-on-droid: Nix-enabled environment for your Android device (termux-based) (github.com/t184256)
120 points by ggzor on April 30, 2023 | hide | past | favorite | 37 comments



For full NixOS on an android device, something more like postmarketOS, see also https://mobile.nixos.org.


Do you know what the status of this is? I've been interested previously but notice the site hasn't been updated since 2021


Github has more recent activity: https://github.com/NixOS/mobile-nixos


Seeing so many submissions related to Linux on Android makes me surprised that it wasn't common knowledge on HN.

Another such gem: userland.tech (let's you run full distros or apps on linux, including Debain and Arch). I use it to run LibreOffice on my Android Tablet.


>Seeing so many submissions related to Linux on Android makes me surprised that it wasn't common knowledge on HN.

HN seems to be mostly Apple & iOS users which are probably not very up to date on what's going on in the Android ecosystem, so HN is a good agregator to learn about these things.


>not very up to date on what's going on in the Android ecosystem

I've run various terminals and even cut down distros on Android since all the way back in the Android 2.1 era. Maybe people have simply forgotten, maybe they don't care because they're stuck inside Apple's ecosystem, but there's nothing new here.

The biggest news is that Google is actually trying to cut down on running downloadable executables for security reasons, which is one of the reasons why the Termux release on Google Play can't be updated anymore. The devs would be required to target modern Android, which would drop all compatibility workarounds, which would break running most executables these tools provide. Luckily, the F-Droid version still remains usable.


That's actually how I got started with Android, running a full Debian off an ext4 partition of which I had to compile the module, I went the route of 'setprop ctl.stop zygote and media' and ran on the FB, it ran surprisingly well, a slight bug in the MSM FB driver with color formatting though that I found and fixed. ( I think it was my first post on XDA actually, https://forum.xda-developers.com/t/howto-install-gnu-linux-o... ) pictures are now gone but I have the web server archived somewhere so maybe one day. But i got to use and maintain a lot of my Linux knowhow I'd not really maintained because of life, 12 years later and I'm still messing with Android phones. New and old. On f-droid there is AnLinux (Run Linux On Android Without Root Access) https://f-droid.org/packages/exa.lnx.a/ that straps around Termux, and using xsdl-xserver (sourceforge) you have a pretty decent desktop, using a usb/hdmi/vga adapter and all is well.


HN audience, despite being overrepresented by Americans, is a global board, and the rest of the world iOS vs. Android is 50/50 (boy do we need to break up this duopoly though).


I tried searching the UserLand repo for how they implemented this, are they running native Linux apps in a GNU userland, possibly with namespaces/chroot, without virtualization? Does it do what Termux does and recompile binaries against the NDK?

I've watched projects like this come and go for like 12 years now, and I've always thought that it's an interesting problem with interesting solutions.


IIRC they do complete proot-based distro instead of ndk-recompiles.

There's a termux equivalent package called proot-distro you can install, if you're fine with CLI.


I could be wrong, but I believe they were using a modified chroot with some preload libraries to intercept missing kernel calls.


IIRC it was `proot`, it's not a preload, but ptrace based.

preload based unprivileged chroot exists (libfakechroot), but doesn't work for static linked binaries.


Do you know if there is a performance penalty compared to native? Does the cpu/GPU hardware acceleration work properly or does it emulate things?


It runs using a compaitibility layer (rather than emulation) so I don't imagine the performance to take a huge hit.


Thanks!


How does this compare with termux? What are the advantages? (termux is still available on fdroid https://f-droid.org/en/packages/com.termux/)

I am guessing it is avoiding all the android-lockdown problems besetting termux... though termux still works for me on android 11...

It uses proot - doesn't that come with a substantial performance hit?


It's a fork of Termux with all the same restrictions as far as I can tell. The difference is that it uses Nix OS instead of the Termux repos, which has more software available.


OK, so it's a normal unix release, and uses proot for a virtual directory structure. It says it only uses the terminal emulator from termux.

termux doesn't use proot - its distribution has all paths rewritten (usually in source) to cope with the android filesystem (and other changes). I'm always surprised that this hackery works so well!

Therefore, I'd expect identical programs to be slower in nix-on-droid.


>I'd expect identical programs to be slower in nix-on-droid.

Probably. But modern phones are well beyond the power needed to run linux programs at useful speeds. Termux first came out over a decade ago, IIRC. Back then phones were much less powerful.


Very true, though for compilation, perceptively-instant is nice rather than a few seconds.


This is amazing, I've been playing a lot with nix and raspberries. But because they are expensive, just yesterday, I was wondering if I could use my old moto G as another board with nix. This is a step in that direction.


i bought a shitty android phone with a physical blackberry like keyboard exclusively to use this and it is admittedly very sweet, but i can’t mainline android and ios at the same time so it mostly sits in the cupboard :( but every time (every few months) a quick git pull and nixos rebuild gets me back my desktop setup.

it’s quite a marvel, way beyond termux. performance is good even on poorish hardware.


Could you tell me which phone this is? I am very curious to try it out myself. Thanks


the unihertz titan pocket. I can’t recommend it in good faith, it mostly gathers dust. I was trying to be a bit more considered about my phone use and thought a downgrade daily carry would help but it pissed me off and now I use my iPhone even more than before. A very “me” problem though, you might love it!


Thank you, If I see one cheap somewhere might get it anyway and have some fun with it for a weekend.


tbf I can't imagine a phone with as much functionality being as cheap as the base price - even in the UK, 250 GBP ish for a semi-decent android with a physical keeb is weirdly low for the nice in which it lives. i'm sure ebay has cheaper but i daren't look.

in fact you could have mine for 100 GBP - I've realised how little I use it - harry @ skh . am if you are interested.


It seems F-droid version tries to download bootstrap-arm.zip from a folder which only contains bootstrap-aarch64.zip (https://nix-on-droid.unboiled.info/bootstrap-release-22.11)


F-droid should be avoided when you can get an apk release directly from the developer or the Google Play Store. Obtanium is great for managing this.

https://github.com/ImranR98/Obtainium https://privsec.dev/posts/android/f-droid-security-issues/


not sure why you are saying this. if it's about security, it depends on your threat model


Your "threat model" requiring the option shown to be least safe doesn't make its vulnerabilities less so. To develop a "threat model" one must first ascertain the system's intrinsic risk before leveraging one's specific needs. If the outcome is the least secure option, then only your risk increases, the security of each option remains unchanged.


I don't think there is an "intrinsic risk" in anything. I personally trust F-Droid more than Obtainium and even more than most original developers themselves, because

1) F-droid has been around for a long time and it's proven to be well governed.

2) F-droid tells me if the software is still maintained, if it's a fork of another project, if the opensource software is using non open service as a backend, etc..


There's proot-distro, which does the same thing but with conventional linux distributions like Debian and Arch.

https://github.com/termux/proot-distro


It's not based on Termux. It shares the frontend terminal app code only.


What is it that differentiates the content of nixpkgs from the Termux available packages?



Why…


For a serious answer: nix-on-droid has roughly a thousand times(*) more packages available than termux.

(*) Not a scientific estimate.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: