11 ms·
Putting Tailscale on the Steam Deck
- kixiQu 4y agoXe is a treasure. This whole piece is a treasure. I will never read timer job without thinking "spicy cronjob" ever again. Anybody rig up anything weird on their deck yet?
- geoffeg 4y agoThere are quite a few gems in the Tailscale blog. I've come back to their posts about NAT traversal (https://tailscale.com/blog/how-nat-traversal-works/ https://tailscale.com/blog/how-nat-traversal-works/) and how Tailscale works (https://tailscale.com/blog/how-tailscale-works/ https://tailscale.com/blog/how-tailscale-works/) a few times, not necessarily for the technical content but for how well they're written.
- obowersa 4y agoNot sure if it counts as weird, but I wrote some python code to use the steamdeck as a controller for my DJI Tello drone. It's been fun and I feel like I'm just scratching the surface of it
- kixiQu 4y agoooh that's fun! makes so much sense for general purpose computer + controller controls.
- xena 4y agoXe here! Fun fact: the original draft of that article went on a slight diatribe on what "spicy" means in that context. I think it was something like this: > When I add something to my daily notes, if it's most directly related to another thing then I will try to describe it as a "spicy" or "diet" version of that other thing. "Spicy" means that there were things added and "diet" means things were removed. A systemd timer is a spicy cronjob because you can do a lot more with it than cron can on its own. An OpenRC service is a diet systemd service because you can do a lot more with systemd than with OpenRC. Think about how to describe things you don't really understand like this in your notes. It will help you a lot.
- kixiQu 4y agoFor some reason "spicy" also makes me think more opinionated? I like it. (There's also probably a place for "boneless skinless" in the arsenal somewhere)
- JamesSwift 4y ago> Xe is a treasure Its pretty crazy how frequently her personal blogs and company articles come up when I'm looking for answers the past several months. Sure, most of what I'm looking for is Nix related, but shes written (and recorded) a ton of useful material. Its saved me so much time / frustration. Thanks Xe!
- xena 4y agoYou're welcome! I wish I could do more of this as my dayjob, but that's just not in the cards for now. Most of what I do now as devrel is things focused on Tailscale and doing the production work (writing, making slides, filming, compositing, editing and publishing) for whatever conference talks I get accepted to.
- vchuravy 4y agoI did the manual setup the other day since I wanted to try using my steam deck as a Road-Warrior build server. The whole systemd-sysext seems like a good way to make that happen.
- aborsy 4y ago
- imwillofficial 4y agoDo stuff as interesting as them as often as them and you to will have geeks the world over reading what you write.
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- geoffeg 4y agoThe post from earlier today got me thinking about their blog post about the Steam Deck from last month. I was kinda surprised that someone hadn't already submitted it.
- cweagans 4y agoHave you used their product? It’s a gd joy to use. In casual use, I haven’t run into any bugs at all. It took me all of about ten minutes to get set up, it just works, and I didn’t have to think too hard about it. What’s their secret? A great product that people want to talk about.
- Shank 4y ago> In casual use, I haven’t run into any bugs at all. It took me all of about ten minutes to get set up, it just works, and I didn’t have to think too hard about it. The one issue I have with Tailscale is that the on-demand/automatically activating VPN functions on iOS don't work correctly [0] [1]. Everything else about it, including the business model, makes me overjoyed. It's a great product. [0]: https://github.com/tailscale/tailscale/issues/3771 https://github.com/tailscale/tailscale/issues/3771 [1]: https://github.com/tailscale/tailscale/issues/5030 https://github.com/tailscale/tailscale/issues/5030
- mintplant 4y agoWhy not use systemd user units [0]? You can drop service files under `~/.config/systemd/user/` and enable them to be launched at login with `systemctl --user enable foo`. This is how the Crankshaft plugin loader autostarts itself on the Steam Deck [1]. It's published as a Flatpak [2] which you can install and update from SteamOS's built-in Discover software manager - on first run, the Flatpak drops the service file and enables it. [0] https://wiki.archlinux.org/title/systemd/User https://wiki.archlinux.org/title/systemd/User [1] https://crankshaft.space/docs/usage/autostart https://crankshaft.space/docs/usage/autostart [2] https://flathub.org/apps/details/space.crankshaft.Crankshaft https://flathub.org/apps/details/space.crankshaft.Crankshaft
- zaarn 4y agoProbably because Tailscale needs to manipulate networking hence needs root, so user units won't work easily.
- anaisbetts 4y agosystemd user-scoped services are great for other software though, especially running syncthing to sync game saves between the Steam Deck and a PC
- zaarn 4y agoAlso great for running an SSH Agent, since they aren't coupled to some magic invocation in some bashrc but will always be started when the user session starts and cleanly terminated when you log out (or linger if you set that up)
- anaisbetts 4y agoHoly shit, that is an incredible idea!
- WhyNotHugo 4y agoHere's a sample: https://git.sr.ht/~whynothugo/dotfiles/tree/c0bf9296c6ca8661f1eb9ee79e33606e6e88cc7c/item/home/.config/systemd/user/ssh-agent.service https://git.sr.ht/~whynothugo/dotfiles/tree/c0bf9296c6ca8661... Note that the ordering is important so that `SSH_AUTH_SOCK` is passed down to other services.
- KingMachiavelli 4y agoOddly enough I was just talking to some friends about my plan for the Steam Deck and my confusion on its update process - since the source code showed both partition image updates and pacman updates. My day 1 goal is to get the system working with tailscale and games over NFS. Second is getting that managed by home-manager as a OK workaround for the A/B update system. The long term project is to get the stock OS recreated in NixOS. Testing the system using a newer kernel for better Btrfs and Zen performance and faster gamescope (Wayland micron compositor) updates seems like a really interesting project.
- yepguy 4y agoYou'll probably find this interesting if you haven't seen it yet. Work has already started on getting NixOS usable on the Steam Deck here[1]. [1]: https://github.com/Jovian-Experiments/Jovian-NixOS https://github.com/Jovian-Experiments/Jovian-NixOS
- KingMachiavelli 4y agoYea I did notice that and it's where I have started building on. Between Jovian and HoloISO a lot the the SteamOS internal workings are fairly well documented. It's always amazing how fast the OSS community moves.
- RosanaAnaDana 4y agoI love that the steam deck appears to be the new hacker machine. This is literally the kind of computer I dreamed about having when I was a kid.
- matheusmoreira 4y agoI didn't know about the Steam Deck. A sleek handheld gaming console with PC hardware running Arch Linux under the hood. Looks like it even supports multiple operating systems. Didn't think I'd ever see something like this. As expected, it's held back by the massive power consumption of PC hardware. Imagine an Apple M1 Steam Deck... I'd really like a handheld programming device. I wonder how easy it is to write software with it.
- eloisant 4y agoThe Steam Deck is x86 despite being a handheld for compatibility with PC games. There is already a compatibility layer software-wise (Proton to run Windows games on Linux), adding one more compatibility layer for hardware this time will add more problems to run games. So unfortunately until PC game developers massively start to support ARM architectures, we're stuck with x86.
- mschuster91 4y ago> So unfortunately until PC game developers massively start to support ARM architectures, we're stuck with x86. No. All it needs is someone other than Apple to do what Apple did with the M1 - people have shown that you can run games perfectly fine in Rosetta [1]. [1] https://www.macwelt.de/ratgeber/Das-M1-Macbook-Pro-als-Gaming-Laptop-ein-Experiment-11088973.html https://www.macwelt.de/ratgeber/Das-M1-Macbook-Pro-als-Gamin...
- kllrnohj 4y agoRunning games under Rosetta comes with a performance hit. A small hit, sure, but it definitely appears to be a large enough hit to kill the M1's power efficiency advantage. It's not far fetched that the AMD SoC in the deck is more powerful efficient than M1 with Rosetta, even, especially since M1's GPU performance in games is notably below par.
- jbverschoor 4y agoWith zerotier you can play multiplayer games over IPX/SPX. Read: Duke Nukem 3D
- dolmen 4y agoThis is a long post and I didn't notice while reading it that it was coming from Tailsacale itself. But I wonder: if the best solution is to use a systemd-sysext image, why Tailscale doesn't just provide that kind of image as a download package? https://pkgs.tailscale.com/stable/ https://pkgs.tailscale.com/stable/
- jannes 4y agoBecause it's not ready yet?
- xena 4y agoEvery systemd-sysext image needs the OS and version hard coded in. In order to provide canned downloads, I'd need to make at least 4 images per release (one for every publicly available version of SteamOS) and it's honestly easier and arguably better to have the target device take what we already ship and make an image out of that on the heckin device.
- sandstrom 4y agoFor people who are curious about alternatives, there is also ZeroTier and NetBird. Here is a comparison between ZeroTier and Tailscale from a year ago: https://news.ycombinator.com/item?id=27491133 https://news.ycombinator.com/item?id=27491133 (they both have pros and cons)
- vitno 4y agoThe first two points in that comparison are (now?) incorrect. Tailscale works natively with Ipv6. https://tailscale.com/kb/1121/ipv6/ https://tailscale.com/kb/1121/ipv6/
- anaisbetts 4y agoThis article jumps through so many weird hoops to avoid reinstalling Tailscale on (relatively rare) system OS updates and while I appreciate the author's creativity and dedication to user experience - just write a script. Your actual _settings_ / config / user data doesn't get overwritten, it's just the stuff in /usr so reinstalling means everything is exactly back to where it was before Every system update (which again, is rare, Steam Client updates are much more common and don't change the OS), I SSH in and run `sudo ./reinstall-software.sh`. Example script: https://gist.github.com/anaisbetts/194def8511823c2290dbb9ecf967e096 https://gist.github.com/anaisbetts/194def8511823c2290dbb9ecf...
- rkangel 4y agoI think the last point gives away the reason. He wants to make it a packaged thing that users can install with very little knowledge. The blog post is more as an insight into a dev process than it is a 'howto' for others - although obviously it's that as well!
- xena 4y agoBingo! This post was originally intended as an "engineering log" to work you through my thought process as I attacked putting Tailscale on the thing. It was also an exercise in trying to document how to think laterally and abuse second and third order properties of immutable operating systems to get them to do what you want. Also as an aside, please use they or she to refer to me. I try to not be intrusive about it, but you are making a factual error by referring to me as "he".
- rkangel 4y agoEurgh, that's embarrassing. Also annoying that I can't now edit the comment. Thank you for correcting me, this is not a problem you should have to deal with.
- xena 4y agoYou're welcome. I've unfortunately gotten used to it. With this kind of thing you either be polite and accept things with grace or you become a bitter sad person. It is really hard to stop myself from becoming bitter about all of this. I wish reality was better and that I didn't have to be literally an expert in so many things to be taken seriously.
- logistark 4y agoAbout moonlight, there is server software project to run Gamestream host for AMD/Nvidia/Intel GPUs and Multiplatform Linux/Windows/MacOs https://github.com/LizardByte/Sunshine https://github.com/LizardByte/Sunshine
- geoffeg 4y agoI don't quite understand what this project is. How does it work with Moonlight or is it a replacement for Moonlight? (The docs don't seem to explain why I'd want to use it.)
- groovybits 4y agoTwo different things - client and server Moonlight is a client for Nvidia GameStream, a local streaming server solution. A computer running GeForce Experience hosts the GameStream server - a client device running Moonlight receives the stream. Typically GameStream is only hosted from a computer running GeForce Experience, which I believe is Windows-only and only compatible with Nvidia graphics cards. This Sunshine project is an alternative GameStream server, so that it can be hosted on macOS and Linux as well.