Termux is an Android terminal emulator and Linux environment app
termux.dev
termux.dev
I'm with you, but we'll always have AOSP. And the cellphone market is now segmented enough that we'll probably also always have rootable phones.
https://www.xda-developers.com/android-13-dp1-google-pixel-6...
That just means no container-based virtualization, though. There's nothing stopping a sufficiently-powerful Android device from running a Linux virtual machine, presuming that the hypervisor is implemented as a regular Android application using regular Android-runtime APIs.
> ...then that process can escape the application's sandbox and do stuff it shouldn't be able to do given the permissions granted to the Android application.
Android's sandboxing is not limited to ART and has multiple layers [0]. Native apps cannot bypass sandboxing, I don't think.
[0] https://hernan.de/blog/tailoring-cve-2019-2215-to-achieve-ro...
Interesting; but I feel that their choice of a hypervisor-based design here supports my point of plain container-based isolation (or even containers + gVisor) being insufficient to achieve true sandboxing on Android.
> Android's sandboxing is not limited to ART and has multiple layers [0]. Native apps cannot bypass sandboxing, I don't think.
Yes, but when I say "sandboxing", I mean just the ART sandbox, not the other layers. I don't care whether you can get root / jailbreak the device. I (and presumably Google, in not publishing apps that do this in the Play Store) care about whether an application that, upon installation, doesn't request permission to e.g. read your contacts, can actually read your contacts. There are certain capabilities like that (not sure if "reading your contacts" is one of them, but you get the idea), that are only prevented from being accessed by ART, not by Linux ACLs. This is especially true when there's one level of permission that gets you access to a certain database file through an API, but then another level of permission that gets you access to certain special records in that database file through the same API. The lower level of permission is already granting you Linux filesystem ACLs to the database file; the only difference between the two permissions comes down to what ART will allow you to request through the higher-level API.
They presumably don't publish apps that use exploits to help the user gain root without unlocking the bootloader and wiping the data partition.
I don't think I knew it was on the Play store. It's a free download from the website, but paid on the Play store. I'd like to make a donation without giving Google a cut - the author deserves to get paid.
Androids built in app backup functions are woefully incomplete, and switching to a new phone recently I had to relogin to most apps and re-set up nearly everything, except for stuff like contacts and anything from google. At least some apps supported exporting settings to external files and allowed re-importing them.
When I do run into apps that are difficult to run, I make sure to give them 1-star reviews. I consider attempts to block rooted devices from running an app to be malware.
Which is one of the reasons why Termux has issues on modern Android versions.
https://github.com/termux/termux-packages/wiki/Termux-and-An...
This is not something Android does.
"Starting in Android 7.0, the system prevents apps from dynamically linking against non-NDK libraries, which may cause your app to crash. This change in behavior aims to create a consistent app experience across platform updates and different devices. Even though your code might not be linking against private libraries, it's possible that a third-party static library in your app could be doing so. Therefore, all developers should check to make sure that their apps do not crash on devices running Android 7.0. If your app uses native code, you should only be using public NDK APIs."
-- https://developer.android.com/about/versions/nougat/android-...
"Improving Stability with Private C/C++ Symbol Restrictions in Android N"
-- https://android-developers.googleblog.com/2016/06/improving-...
"Namespaces for Native Libraries"
-- https://source.android.com/docs/core/permissions/namespaces_...
The things you’ve linked are attempts to discourage people from depending on private implementation details. They are not a security boundary, nor are they really the kinds of APIs we’re talking about in this context. Since they run in your process there is no sandboxing or isolation involved here; you can call them if you really want to by looking them up manually. (Don’t do this.)
I get what you're trying to say, but perhaps you mean the ContextManager / ServiceManager, which isn't tied to ART at all, but Binder (Android's primary IPC mechanism), instead.
Re: Linux ACLs: Yes, those flaws existed, but don't think they do anymore (see also the blog I linked above).
But if you _do_ need a keyboard... it's android and it perfectly supports USB or Bluetooth input devices including mice, keyboards, etc. If you have a Samsung or some other devices you can even get a nice HDMI output to a monitor and desktop experience out of the box. It's really like a little laptop in your pocket at all times.
And if you need a GUI Termux runs X11, vnc, etc and GUI apps just fine. Just download a X11 server or vnc app from the play store (there are tons) and you're good to go.
And even if that sounds uncomfortable there's still plenty of useful things you can do with minimal typing! For example... You could run Tailscale as a normal Android app, then use SSH forwarding in Termux to get a local port that goes to a web server on another computer in your tailnet, and browse to that locally on the phone using Fennec F-Droid (Firefox). All of that works just fine. If I leave one of my computers on and I'm in bed or away from home I can ssh in and run systemctl suspend. Wayland/X server locked up? You can use your magic sysrq keys of course, OR you can ssh in with termux and kill it, which doesn't depend on magic sysrq being enabled (or remembering how to get it on your keyboard.) You could also run yt-dlp to download some video or audio content from the internet; everyone hates the Reddit video player, so why not just get the MP4 out of it? Admittedly, there's a better solution here: you can get an app called Seal on F-Droid which is a pretty good yt-dlp frontend. But, the fact that you can easily do it in Termux using their package manager is testament to just how useful Termux is.
I honestly only want one thing; an SSH Agent implementation built into the app, so I can import SSH keys and not have to enter the passphrase constantly. Not a huge deal really, but having a built-in agent would be super convenient.
tergent is a ssh agent for termux that uses the Android keystore, meaning your private keys are kept in your phone's secure enclave for a bit of nice extra security.
I use termux daily, and you can stand up pretty much anything including a production grade PostgresDB. It's not a toy.
But they keyboards are good enough that I'd still kinda like to try the Astro Slide 5G. I just don't want to order one only to wait years for it to arrive.
Even if you don't use the CLI part of Termux often, it's still an incredibly neat piece of hackery goodness. I once needed to text about 50 people and have it be from my real phone number. Rather than hack around with Twilio or AWS, I spent 5 minutes writing a ruby script to send the texts from Termux. If you aren't familiar yet with the API, it will take a little longer than 5 mins the first time. Once I had that script, I kept finding neat usecases for it. I sometimes still just text from the CLI because it's easier than using the built-in messages app depending on what I'm doing.
You can definitely get an amazing experience on Android without Termux, but Termux is like if Android were a really nice bicycle, Termux is a small powered motor you can bolt on somewhere to automate parts of your life.
Aside: I find Termux easier to use than Tasker. I'm a CLI native old man though, so don't take this as a knock against Tasker.
The original script I wrote was initially set up with youtube-dl, the most recent change was to yt-dlp. For a lot of little things, like to SSH/reboot my rpi, wget a link I want to archive/send, small python programs (and yt-dlp), the keyboard is perfectly adequate. I've even converted a couple of audio files to send to a friend on iOS, from opus to mp3 on the phone. Bash alias are really useful, and because the phone isn't also general use, they can be very specific.
Termux also makes the phone into a very powerful network diagnostics and pen testing tool. But even something as basic as ifconfig makes my phone feel as powerful as a computer. https://github.com/may215/awesome-termux-hacking
Chromebooks have the ability to install and run android apps. The lightweight environment afforded by Termux is perfect for them. I do use VIM with my chromebook. I know I can use crostini, and in the past I was running crouton, but I realized I can handle 99% of those things in termux, and I can use VSCODE dev for the remaining 1%. I appreciate how much more flexibility termux gives me.
Over securing systems seems to be the modern trend, and mercy, it's such suffocating paternalism.
We have incredible phones and Android/Google just keeps making them less and less capable.
I'm sure that being an app store owner exposes you to the absolute worst just most constant stream of really really awful people doing the worst things, like, forever & ever.
There are some warped incentives too, for sure. But I do think Occam's razor explains why app stores get to be worse & worse & worse: because they are responding to horrors.
I'd love to see some better mechanisms for trust emerge. Software as it is is basically unobservable. You grant or don't grant some permissions & otherwise have no idea what's actually happening. So app stores are the only arbiters of trust.
In addition to having ridiculous computing power and storage capabilities, they carry microphones, cameras, WiFi, Bluetooth, NFC, lidar, radar...
If you can grasp not just the power of the device but the scale of its reach the only responsible and ethical action is to security harden it every chance you get as much as you can.
0: https://www.zippia.com/advice/us-smartphone-industry-statist...
Google has been quite clear since NDK was introduced in Android 2.0, that is only for games and native methods implementations.
By "protecting" users from security threats, they are pushing power users to daily drive a rooted device, which is a bigger security risk. I expect incomplete/broken file storage access from Apple devices, not Androids.
The thing I hate the most is that certain apps only store files in their respective android/data/ folder and delete that data on uninstall. These workarounds are the only way to backup that data.
https://www.reddit.com/r/Android/comments/j3zgmm/managing_fi...
While Android can provide such feel, GNU/Linux smartphones (Librem 5 and Pinephone) are such computers. And they do not depend on Google in any way. (I'm a happy owner of both.)
Can you install a completely different OS on your Android phone? AFAIK no, whereas on Pinephone you can choose among 15+ systems and on Librem 5 currently among 4 or more. What about installing a mainline kernel?
> lack of social media and messaging apps
You can use Waydroid for Android apps, or install one of a few Matrix and Mastodon clients. Telegram works, too. Also, Flatpak apps work natively.
> I personally don't have any problem depending on Google, I have a problem with things being locked away with no alternative
To me these sound like the same problem. Google is restricting your freedom, not someone else.
You could in 2012, not sure about in 2023:
https://bonedaddy.net/pabs3/log/2012/12/03/debian-mobile/
> What about installing a mainline kernel?
I think Sony were working on that for their Xperia devices:
https://developer.sony.com/develop/open-devices/guides/kerne...
If you want full freedom from google, GrapheneOS feels like the best de-googled solution. In some ways, PRoot is to android what waydroid is to linux, except PRoot is way more capable. Google free AOSP, like GrapheneOS exists so it's not fair to say it's the same problem. I appreciate having access to things like Kali NetHunter and value that over being able to install and run a mainline kernel on bare hardware. I don't see a difference in installing a completely different OS vs PRoot, because I am focused on the functionality. I wouldn't be able to tell you a meaningful difference in function between iperf3 running on a Librem phone vs native termux vs PRoot.
Here's someone that's installed Termux on waydroid, installed on manjaro installed in Termux on an android phone. https://www.reddit.com/r/termux/comments/y0kupg/termux_on_ma...
Have you tried NewPipe for that use case?
But Yt-dlp is still more powerful, it has extractors for way more sites. If I download a video, I usually care to archive it for a longer term, so I add things like subtitles and metadata. For opus files, I don't like the webm container, so I would end up installing ffmpeg for that anyway. I also make heavy use of the regular youtube app, I appreciate the interface. Although I haven't had the need, Termux + yt-dlp also allows using aria2c for downloading. And yt-dlp has also been useful in bandwidth starved situations, because the url and format flags are enough to get the video, it doesn't hang while waiting to download related/recommended video metadata.
I still remember the first time I successfully SSHed to something from my Handspring Treo 180 over GPRS data, and felt like I was living in some kind of cyberpunk future.
I don't usually like having old versions of software removed from distribution, but maybe in this case it should be removed from the play store since it's basically useless and also vulnerable.
[0]: https://termux.dev/en/posts/general/2022/02/15/termux-apps-v...
From README - "There are plans for unpublishing the Termux app and all its plugins on Play Store soon so that new users cannot install it and for disabling the Termux apps with updates so that existing users cannot continue using outdated versions. You are encouraged to move to F-Droid or GitHub builds as soon as possible."
Vulnerability Disclosure was made on 2/15/2022 [0]. Above text was added to README.md in 9/8/2021 commit [1]. The issue was first acknowledged in README in 4/26/2021 commit [2].
[0]: https://github.com/termux/termux-app/issues/2595
[1]: https://github.com/termux/termux-app/commit/94e01d68d6c91574...
[2]: https://github.com/termux/termux-app/commit/93e1b132786d5cc7...
Disclaimer: I'm not a native English speaker, so please forgive any mistake.
Congratulations and good luck on your further journey! Keep having fun!
I don't know whether I should be grateful to Termux for making Android remotely bearable, or vexed that it's enabling a platform I despise.
But on its own merits, Termux is amazing, profoundly useful, powerful, and a breath of fresh air.
Do install from F-Droid, not Google Play Store, as others note.
And yes, of course it's more useful with an actual hardware keyboard (Bluetooth), as is Android generally. But it's usable and useful even when using the onscreen soft keyboard. (Hacker's Keyboard FTFW.)
You can also run the available sshd service and access your mobile device remotely.
And yes, I mention and advocate Termux frequently on HN: <https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...>
Do you despise Android? How come? What's your preferred alternative?
It's a Trojan horse serving manipulation, advertising, surveillance, and propaganda. It's also intentionally crippled in numerous ways. The applications-store model is horrendously broken from not only this perspective, but in terms of utility, quality, and trust.
Alternatives:
For mobile compute: a Linux laptop. An ultralight sacrifices some features, but at least delivers the full software-based capabilities.
An alternative might be a set of separate components which could be used standalone or together: a CPU, additional storage, networking (WiFi / Wireless), power (battery / PSU), display, keyboard. A mobile device similar to a smartphone or keyboard-equipped device (think RIM, Palm Treo) might make a useful casual interface to the broader system, speaking to the hardware attributes rather than the OS / SW necessarily. More: <https://news.ycombinator.com/item?id=33014529>
For a phone: none at all, or a dumbphone / limited-feature phone. The main dissuasion here is actually PSTN (public-switched telephone networks), which are increasingly obsolete under an onslaught of spam calls, as well as, increasingly, the deepfakes threat. VOIP over the laptop (using an unlisted wireless hotspot where necessary, otherwise WiFi or cabled ethernet) would suffice for nearly all usage.
Other than as an e-reader or podcast device, tablets are a worst-of-all-worlds compromise. See: <https://diaspora.glasswings.com/posts/880e5c403edb013918e100...> particularly the comparison table in this comment: <https://diaspora.glasswings.com/posts/880e5c403edb013918e100...>. That post and thread address most concerns and considerations.
For photos, video, or audio, a dedicated device seems to me the preferred option. I'm well aware the market is largely seeing otherwise, though professional still/video cameras (often the same device now), and audio recorders remain viable. Having to intentionally transfer content is to me a positive.
An e-ink tablet is a game-changer for reading content, and is quite good for listening to podcasts. I've owned one for over two years, large format (13"), and find it ... useful, though again with some limitations. I'd most especially like to boost onboard storage from 64 GB to 512 GB -- 1 TB (Apple's iPads offer as much or more as an option). More: <https://news.ycombinator.com/item?id=35280532>, <https://news.ycombinator.com/item?id=31412042>, <https://news.ycombinator.com/item?id=29236211>, and <https://news.ycombinator.com/item?id=29303195>. There are additional comments available via search: <https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...>
I'd strongly suggest that an 8" device is a minimum size I'd consider and that there are immense readability improvements at 10" and 13". (Devices rely on the same OEM vendor, so form-factor and display characteristics are strongly standardised and uniform, at least within a given production cycle.)
I've discussed Android and its limitations numerous times on HN:
"I certainly don't trust the OS or its application ecosystem..." (Nov. 2021) <https://news.ycombinator.com/item?id=29306994>
"Tablets --- and not just Apple's --- suffer from numerous arbitrarily-imposed limitations..." (Nov. 2021) <https://news.ycombinator.com/item?id=25220885>
"Tablets offer a near-ideal form-factor, and impressively good battery life. The story from there is exceedingly poor, and remains so..." (Jan. 2020) <https://news.ycombinator.com/item?id=22089820>
Issues with devices which were presumed rootable (proved otherwise) and unsupported with firmware updates: <https://news.ycombinator.com/item?id=21055547> and <https://news.ycombinator.com/item?id=20416488>
Issues with Google Play Store: "At what point does a competitive applications marketplace backfire in encouraging, intentionally or otherwise, Very Bad Behaviour?" <https://news.ycombinator.com/item?id=29236211>
I've watched the alternative-OS tablet space for well over a decade, and there's been vanishingly little to get excited about. Several e-book readers are based on non-Android Linux (Barnes & Nobel's Nook, Kobo Reader, the Remarkable Tablet, and some Sony models AFAIA). Remarkable was on my purchase-candidate list but left it pre-purchase due to the miserly on-board storage (16 GB), and post-purchase by its pivot to a subscription model. Nook or Kobo might be interesting, I've not played with them. Mozilla and Ubuntu have both killed their tablet-OS. Pine and Purism remain interesting but not yet compelling, again, I've not tried these directly.
I get your point. It sucks that these are our options, but you didn't present any viable alternatives.
Those are often the most useful answers.
GrapheneOS got me pretty excited. I actually bought a Pixel because of it.
There's also postmarketOS. I'll try to port it to my current phone once I have my new one set up.
PostmarketOS might be worth a look, thanks for reminding me about it.
Among the other problems Android presents is that it's very nearly totally owned the mobile-device market, save iOS and a very few niche products (e.g., the listed non-Android e-book readers above).
Otherwise in the small-device space there's RaPi and Arduino, and perhaps OpenWRT. Those obviously target different use-cases, but in terms of small/light systems are the principle options of which I'm aware. I'm also painfully aware that there are considerable UI/UX, power management, and security issues to consider for a mobile device, all the more so for anything that's aimed at a mass market. To an extent I can sympathize with some of the decisions Android's made, though that doesn't reduce my own frustration with it at all.
What I find curious about my own psychology and attitude toward the space is that the far more limited Palm devices (I'd owned a couple of PDAs as well as one of the Treo-line phones) didn't bother me to the same degree. Part of it was that these were such obviously limited devices, though they also seemed to be less afflicted by the advertising-and-surveillance disease.
Apple's iPads are so very nearly laptop-replacements but crippled in critical ways that it pains me. There's the Windows Surface (nice form-factor, pity about the OS), and a few other options.
I'm going to pass.
I have one of those Bluetooth keyboards and mice that allow multiple paired devices. There's a button on each to allow you to switch. That's pretty handy to have it paired with my old Android device and be able to pop over and use my tmux sessions.
One of my favorite tricks is sharing a photo to it, then running a quick `python -m http.server 8000` while on wifi. It makes it dirt simple to send a photo from my phone to any local machine on my network without the hassle of cloud services (including generation loss from recompression), incompatible apps, bluetooth pairing, etc.
Installing the gnome alternative was one package and I killed X and started gnome-shell to test gsconnect it appears to pair and allow remote input from my phone to my PC and well enough, what doesn't work for you?
It works as it should. I use two machines, one with KDE Neon, one with Gnome Fedora, and all my Android devices works great with both.
If anyone has a better idea how I can get images into the filesystem from an editor in android, let me know.
PS: Some light ChatGPT copy paste coding also works great. My foldable keyboard mouse setup means I could code everywhere.
Until I discovered termux, I would have always be on the lookout for new git client / ssh client apps. Now I have a fairly good dev env on my phone. Git and vim get me pretty far in that regard. Python and node were easy enough to set up. Recently, I set up nvim so I can use GitHub Copilot and I think it's particularly helpful on mobile.
Most of my personal projects run in containers. I know it is possible to get docker set up on Android. However, it is apparently pretty slow and it doesn't look totally straightforward to get working so I haven't tried that yet.
A few years time and hopefully I'll be running docker containers and maybe VS code will become a solid option on mobile too.
Sometimes when I don't want to start a PC I just connect my phone to my USB-C docking station and Termux has most of the tools that I need to get something done.
I sometimes wonder what kind of stress I'm putting on my phone by doing this.
[1] https://www.reddit.com/r/dwarffortress/comments/r80m7y/dwarf...
Just get an old Android flagship off the second hand market that can be had dirt cheap, flash some FOSS de-Googled ROM on it, and use that instead. You now have the power of Linux and Android ecosystems for much less than a Pi and it comes with a display and battery! Need GPIO too? You can connect an external GPIO board via USB-OTG to the phone and control that via Python just like with a Raspberry PI.
My needs sometimes call for more realtime control, and the system I ran in the past (Navigator) ran on QNX (owned by Blackberry) a microkernel OS (like Minix was, not Linux). Is there a close competitor in the Android world?
I've got kids that are starting to need phones and this seems like a great way to do it.
Most phones aren't fully supported but there are a bunch of phones with decent support and modern enough SoCs that can be had for cheap.
PmOS devices don't run Android so the Android HAL that custom ROMs often rely on isn't in use, which can lead to broken hardware support. On the other hand, many of these devices run a recent version of Linux so you can play around with all kinds of modern features.
I was an IT person for the math building while I was in college and I was mining a newish crypto called doggo on a computer lab while everyone was out for the summer. I had approval to do it and it was going to turn off as soon as the semester started back but they all had workstation cards and I couldn't resist. A man had offered to sell me a 99 civic if I got 200k and I needed a car.
Cut to weeks later and I'm hundreds of miles away for the day eating and drinking at a vitnamese restaurant with some friends and I get some notifications that the mining stopped.
I wasn't worried or afraid though because I knew in my pocket I could just pull out my android and click the magic button, Termux, to get a friendly and sensible shell with which to fix whatever mess had been thrown my way.
It was over in 5 minutes, I just rebooted them, process continued and I kept eating my noodles. Couldn't recommend it enough.
I had 300k by winter break and I had been set to meet the person for the civic after Christmas but that holiday a bunch of people's wallet got hacked and mine was no exception.
I ended up getting a card eventually but it wasn't the 99 civic -_-.
Termux on the other hand has been on every phone ive owned since
Dragging the finger up and down emulates the mouse wheel, do I don't even have to do ctrl-v.
I also use it with an android tablet that DOES have a real keyboard. It works fine, though I haven't figured out how to persistently swap ctrl and caps yet.
For some reason if you use the Thumb-key keyboard, every letter is capitalized by default, so you have to swipe down on the A before typing anything, which is a deal-breaker.
Termux on Android 5 or 6 - https://news.ycombinator.com/item?id=33691293 - Nov 2022 (119 comments)
Termux – An Android terminal emulator and Linux environment on your phone - https://news.ycombinator.com/item?id=32648424 - Aug 2022 (2 comments)
Why is the Play Store blocking updates for Termux but not UserLAnd? - https://news.ycombinator.com/item?id=28815910 - Oct 2021 (2 comments)
Termux no longer updated on Google Play - https://news.ycombinator.com/item?id=25644964 - Jan 2021 (340 comments)
Termux is an Android terminal emulator and Linux environment app with no rooting - https://news.ycombinator.com/item?id=24979258 - Nov 2020 (208 comments)
Termux and Android 10 - https://news.ycombinator.com/item?id=23224669 - May 2020 (314 comments)
Termux: terminal emulator and Debian-style userland as an Android app - https://news.ycombinator.com/item?id=15529426 - Oct 2017 (139 comments)
Termux: terminal emulator and Linux environment for Android - https://news.ycombinator.com/item?id=11570596 - April 2016 (5 comments)
Show HN: Termux – Terminal emulator and Unix environment for Android - https://news.ycombinator.com/item?id=9905391 - July 2015 (28 comments)
I found $18 Android phones on clearance at Walmart, like the TracFone - Alcatel One Touch Pixi Unite with 8GB Memory Prepaid Cell Phone - Black. I mean, look at the specs:
* 1500 mAh Battery, 800x480 screen
* Quad-core 1.3GHz processor with 1GB of RAM
* Android 6.0 Marshmallow OS
* 3G data speed for fast Web browsing and multimedia downloads
* 3.97" TFT color display
* 2.0MP camera
* 8GB internal memory plus microSD slot
* Expand storage up to 32GB by adding a microSD card (sold separately).
I mean, compare it to a Mac Classic - with this little infographic I made: https://i.imgur.com/7UJjRuc.png
You just would never use the data plan. On wifi, it worked great. So, go to a Starbucks, McDonalds, or Library... And you're coding in basically a real Linux for $18. (!)
This thing was particularly impressive, at $56.20, the RCA Voyager Pro 7 16GB Tablet with Keyboard Case Android 6.0 (Marshmallow) in Charcoal (RCT6873W42KC M). https://www.amazon.com/gp/product/B01M7TSY16
This $90 one seems like a reasonable alternative: RCA Atlas 10 Pro (RCT6B06P23H) 10 Inch Android 9 Tablet with Keyboard Black (Renewed). https://www.amazon.com/RCA-RCT6B06P23H-Android-Keyboard-Rene...
And then Chromebooks, of course. At the time I was loving my $169 Samsung Chromebook 3 with 4 GB of RAM from Best Buy. Termux runs great. Loved this machine - I used it all the time. I also played with GalliumOS, which requires "rooting" to Developer Mode. I have a Samsung 128GB USB Drive, and a 16 GB microSD card, and both seem to work. I use a mouse, sometimes. Android Apps were a little dodgy - the mouse turned into a black square, sometimes, for instance. And this was even before they offered a full Linux shell on Chrome! Now it's far easier, of course.
Sure, if I'm doing bespoke computing for others, I can spend my time (which is really valuable to me, by the way) to find a good deal.
Or I can minimize my time, and still get a pretty remarkable machine for someone.
I ran across Blink (which is subscription-only) and Prompt ($15—-not unreasonable if you’re sure you’ll use it often), but I’m curious to hear recommendations from here.
I can basically do (limited -- but sufficient for my needs) Android programming without knowing a lick of Android. And I can do it on the phone itself. Crazy that I didn't realise this potential sooner.
Using scripts to edit and maintain your android internal file system is another plus. Unfortunately can't write to SD card if you're not rooted.
You can instal OpenSSH https://wiki.termux.com/wiki/Remote_Access
>I don't get their package manager for some reason
It's the same as Ubuntu/Debian
Sadly I can't seem to get R to work on it these days.
With Nix-on-Droid, I encourage you to:
- enable flakes, because it makes some things easier and the evaluation caching speedup is critical on slow little ARM devices
- run `nix registry pin nixpkgs` right away, then `nix search nixpkgs` to get the slow stuff out of the way
- don't bother with Home Manager yet. It's good stuff, but your needs at this point are minimal and it's more to learn.
- to quickly try out R, run `nix shell nixpkgs#R`! When that's done running, R will be on your PATH
Have fun! Feel free to keep it simple, but if you do have questions, regulars on discourse.nixos.org are super nice and super smart. :)nix-env -iA nixpkgs.rPackages.tidyr
This seemed to work fine for things like R and Vim and some dependencies, but didn't work so well for R packages which I think all needed to be compiled and installed from R.
I'm very pleased to have a working set up now, with neovim/nvimR/R/git etc. remarkably similar to my regular set up, so many thanks for these tips!
I think not literally everything (especially if it has native extensions) is necessarily working, but everything in CRAN and Bioconductor is on there. Give your faves a try!
To explain this seemingly strange behavior a bit: because of Nix's commitment to isolating dependencies, when you install a language interpreter to some environment, it needs to behave the same way no matter what is installed in that environment— including packages from its own ecosystem. So instead, Nix has you be fully explicit ahead of time about what you want each language interpreter to pick up on, and those are the only in-ecosystem packages it'll ever be able to see.
This is super nice for per-project dependencies and for scripts that can bring along all their own dependencies, but it can seem a little weird when what you're used to and what you expect is just managing a single environment.
Reading around on Nix, I'm starting to wonder if I should use a functional package manager for a functional language...
One issue I've had with analysis projects is that when my R system upgrades I find old project code for previous analyses don't run anymore. Would Nix allow me to specify/run different R and R package versions for projects in different locations/folders?
Yep! You can even easily integrate Nix with direnv so that it magically grabs the right tools and puts them on your path whenever you cd into the project directory. Many editors and IDEs also have plugins that integrate with direnv, so you can oftentimes get them to integrate with those runtimes even without starting them from the project directory.
Nix has pretty good support for this built in (shell.nix and flake.nix), but you'll probably find that some opinionated tooling is nicer for just jumping in. The Nix ecosystem is rich, divergent, and competitive, so there are often a lot of tools designed to leverage or enhance it all competing in a given single problem space. This can be overwhelming. Here's my recommendation for getting started with Nix for project environments today: https://devenv.sh/
It supports R, it's based on some of the nicest tools in the Nix ecosystem, it has great documentation overall (though incomplete), development is very active, and the author and maintainer is longtime contributor in the Nix community with a strong reputation (he served as NixOS release manager several times!). I've only taken it up recently myself, but I use it every day at work and I'm very happy with it.
Definitely go to NixOS Discourse or Matrix if you have questions and people can help point you to the best docs as you get acclimated.
That'll mount a new folder called "storage" in your home directory where you can place files in locations where other apps can see them.