home.social

#liminix — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #liminix, aggregated by home.social.

fetched live
  1. Because of recent events, I've been thinking someone should make an s6 based replacement for nixos.

    It turns out, it almost exists:
    liminix.org/

    "Almost", because this project focuses on routers.

    #nix #nixos #liminix #s6 #s6rc

  2. Because of recent events, I've been thinking someone should make an s6 based replacement for nixos.

    It turns out, it almost exists:
    liminix.org/

    "Almost", because this project focuses on routers.

    #nix #nixos #liminix #s6 #s6rc

  3. #liminix CI is green against nixpkgs 24.11 and unstable and I'm running out of reasons to put off releasing 1.0 any longer
    https://build.liminix.org/project/liminix
  4. I have now thought long enough about the remaining shortcomings (IMO) in #liminix docs that I believe they are sufficiently well-defined to capture in a TODO list

    (And no, list item #1 is not just "fix the docs")
  5. Declaration of intent: I am working towards a #liminix 1.0 release

    https://www.liminix.org/2025/03/27/pen-test.html

    There, I said it out loud.
  6. CW: CI systems
    @algernon @wolf480pl

    > eyes hurt

    Right.

    I use self-hosted nix hydra for #liminix and I'm glad it works because I wouldn't like to have to fix it if it didn't
  7. #liminix had an external security audit last year (thanks to Radically Open Security for performing and to NGI0 for enabling).

    Both of the actual findings they produced were to do with sloppy path handling, and now fixed, but they also offered advice on the default firewall rules

    Which I am now working on but haven't actually fixed because when I started looking at it I realised that the default firewall rules have int and ppp0 hardcoded as interface names. Which although usually correct, might not be the actual interfaces if you've had some connectivity problems/failures/general weird shit because it could be ppp1 or ppp23. Or maybe your upstream wasn't a PPP connection in the first place.

    So, when I've cleaned this up and merged the branch we're going to have a "zone" notation to the firewall so that you will be able to specify which interface services are associated with which zones. It's backed by a longrun service that maintains some nftables sets called @lan, @wan, @dmz or whatever other names you chose, and adds the interface managed by each service once the service knows what it is. So everything will be fine and dandy even if the interface name isn't static/known at build time.

    https://gti.telent.net/dan/liminix/compare/main...firescape#diff-0c73ccdd98654afbd21fe4c4276307a13b604f62

  8. @dcz @janvlug @conservancy @karen same [re federation]. Though I'm happy to give out accounts on my private gitea for established #liminix contributors, there's no way for people new to the project to get started except by old-school patch-based workflows or by using their own hosting that I can pull from.

    I do mirror to github (this was fairly straightforward to set up), and it's possible that some people looking at it "over there" think that's the canonical repo
  9. Second attempt at dogfooding the rt3200 with #liminix is going much better

    There appears to be a bug in `update.sh --fast` which is _supposed_ to restart only the affected services but in practice seems to be making the hostapd services do a restart loop. So, having to do a lot of reboots while I fiddle with firewall rules
  10. Adding "revert to previous config" instructions to #liminix that effectively include "reboot into a rescue system (this part is left as an exercise for the reader)" feels like a bit of a cheat, but I have made it substantially more straightforward to do anything useful once you have rebooted into some alternate maintenance system, so it's still an improvement

    https://gti.telent.net/dan/liminix/src/branch/main/doc/admin.rst#L207 raw link because I'm going to bed while the docs format. At least, I hope that's what they're going to do

  11. Well, the first time I was going to post this I noticed just before pressing 'send' that it was missing the fw_setenv commands to actually make it boot from the liminix volume, but now corrected.

    #liminix boots on Belkin RT3200
    https://www.liminix.org/doc/hardware.html#belkin-rt-3200-linksys-e8450 :emoji1: :emoji2: :emoji3:


    Caution: to call this merely "untested" would be to pass up a perfect opportunity to add the word "utterly"
  12. # uname -a
    Linux rotuer 5.15.137 #1 SMP Mon Dec 23 23:16:37 UTC 2024 aarch64
    

    (Belkin RT3200 aka Linksys E8450)

    In my brain there was a lot more work left to do to get a useful #liminix aarch64 working.

    (I am sure there is more work left to do, but the current state is that it boots from flash with only a little manual uboot fiddling, so that's further along than I'd incorrectly remembered it to be)

  13. ```
    # ls -l /sys/fs/pstore/pmsg-ramoops-0
    -r--r--r-- 1 1485 /sys/fs/pstore/pmsg-ramoops-0
    ```

    It has been more than a few weeks since I felt particularly motivated to work on #liminix, after a particularly tedious episode over a few days where every time I tried to add network logging support to my home router it caused the router to crash (yes, only happened in prod) without logging anything on the network.

    But I think I have something here. This is PSTORE_PMSG support so that I can send system logs to a buffer in reserved memory that will still be there after the router crashes and I can find out why it won't do network logging. Although, per Sod's Law (Heisenberg edition) once I have the diagnostic in place it probably won't crash again.
  14. ```
    # ls -l /sys/fs/pstore/pmsg-ramoops-0
    -r--r--r-- 1 1485 /sys/fs/pstore/pmsg-ramoops-0
    ```

    It has been more than a few weeks since I felt particularly motivated to work on #liminix, after a particularly tedious episode over a few days where every time I tried to add network logging support to my home router it caused the router to crash (yes, only happened in prod) without logging anything on the network.

    But I think I have something here. This is PSTORE_PMSG support so that I can send system logs to a buffer in reserved memory that will still be there after the router crashes and I can find out why it won't do network logging. Although, per Sod's Law (Heisenberg edition) once I have the diagnostic in place it probably won't crash again.
  15. The #liminix weekly news update for October is at https://www.liminix.org/2024/10/06/log-off.html

    This month it's all about getting logs off your device
  16. I thought it would be good if I could allow my #liminix devices to log somewhere central without also allowing the rest of the internet to log there too.

    The plan is to put the logging socket behind TLS and require client certs, but that then only transforms the problem into "how do I get client certs onto all these basically ephemeral devices"

    I've borrowed the pattern from the Puppet CA setup: the clients generate their own private keys and CSRs, and then send them to the server which signs them automatically if if they look legit (which basically means, if they have some kind of pre-shared key embedded in them). But I don't need or want the rest of Puppet, couldn't find anything else that would do it (there is step-ca which looks otherwise to be good and useful and might do this thing but honestly I couldn't tell) so I went old-school-NIH and wrote a small #Fennel program for it.

    It did require a brief detour into making a PR for luaossl and it's little more than PoC-quality so far, but that notwithstanding I am once again pleasantly surprised at just how straightforward it is to get things done in Fennel

    https://gti.telent.net/dan/certifix

  17. If I share with you my latest #liminix development update then surely I will just afterwards find it's still full of typos

    https://www.liminix.org/2024/08/26/secret-service.html
  18. Adding ssh keys to authorized_keys on my #liminix test device by editing a json file on an https server that it polls. Yay.
  19. my fearsomely weird #liminix service failover bug turned out to be nothing to do with failover at all and everything to do with having used `match` in a fennel function where I should have used `case` to avoid unexpectedly pinning a name, and not noticing because the tests for that package only work when it's built natively not cross-built. Lesson learned.
  20. too-many-projects-problems: I rebooted the phone I'm trying to make into a mobile-nixos cycle computer and found I could no longer ssh in because it had attached to the wifi network of one of my #liminix test devices
  21. Two new sections of #liminix documentation

  22. https://www.liminix.org/2024/07/09/surfeit-of-surfaces.html #liminix updates have been conspicuous by their absence lately, mostly because oh god not that thing again. But here's some recent news.

  23. As of one hour ago, all #liminix ci jobs are green and using nixos 24.05. This makes me very happy for reasons quite unrelated to 24.05, which is that one of the failures was due to an ugly dependency problem involving on-demand services ("hotplug" in the vernacular)which I have been grumpy at for three weeks. My LTE modem now starts on boot.
  24. feels a bit yak-shavey, but I have written an expect script to reduce the number of manual steps involved in tftpbooting a #liminix device

    https://gti.telent.net/dan/liminix/commit/58bec8a40f49104db1b3143630c5163ddea87263

    I think I'm only a few steps away from making it able to use an LTE modem for wan connectivity, but it's not impossible that one of those steps will need 3.5 league boots

  25. You only need:

    - github.com/RaitoBezarius/colme
    - github.com/RaitoBezarius/limin

    But that's not the end of it. Once you can evaluate #Liminix systems, you kind of want to be able to activate them.

    Activate refers to the operation of "setting" a new deployment in place on a target, you often hear about switch-to-configuration.pl (click on the link) for the #NixOS ecosystem.

    Things like #Liminix have the same problem, except that on an embedded system, you cannot do a lot of actions. 3/???

  26. You only need:

    - github.com/RaitoBezarius/colme
    - github.com/RaitoBezarius/limin

    But that's not the end of it. Once you can evaluate #Liminix systems, you kind of want to be able to activate them.

    Activate refers to the operation of "setting" a new deployment in place on a target, you often hear about switch-to-configuration.pl (click on the link) for the #NixOS ecosystem.

    Things like #Liminix have the same problem, except that on an embedded system, you cannot do a lot of actions. 3/???

  27. In the deployment ecosystem, we have tools like colmena that enable you to deploy a set of expressions to a target.

    The issue again is that colmena is NixOS-specific.

    But it does not have to be! Things like #Liminix share the NixOS module system (yeah confusing naming) with #NixOS.

    Thus, it should be possible to make Colmena evaluate Liminix systems!

    And yes, it is!

    You get to be able to **evaluate** with Colmena, #Liminix systems such as git.dgnum.eu/DGNum/infrastruct 2/???

  28. In the deployment ecosystem, we have tools like colmena that enable you to deploy a set of expressions to a target.

    The issue again is that colmena is NixOS-specific.

    But it does not have to be! Things like #Liminix share the NixOS module system (yeah confusing naming) with #NixOS.

    Thus, it should be possible to make Colmena evaluate Liminix systems!

    And yes, it is!

    You get to be able to **evaluate** with Colmena, #Liminix systems such as git.dgnum.eu/DGNum/infrastruct 2/???

  29. I have been working on something, which is not totally ready.

    Most of the deployment tools in the #NixOS ecosystem are tailored to... NixOS. NixOS can run in a bunch of places, but not easily on 256MB RAM devices and 32MB disk.

    For that, you have plenty of options, one of them is #Liminix (liminix.org/).

    Liminix is currently tailored to OpenWRT-class APs/routers and I worked on bringing support for the Zyxel NWA50AX (openwrt.org/inbox/toh/zyxel/nw). 1/???

  30. I have been working on something, which is not totally ready.

    Most of the deployment tools in the #NixOS ecosystem are tailored to... NixOS. NixOS can run in a bunch of places, but not easily on 256MB RAM devices and 32MB disk.

    For that, you have plenty of options, one of them is #Liminix (liminix.org/).

    Liminix is currently tailored to OpenWRT-class APs/routers and I worked on bringing support for the Zyxel NWA50AX (openwrt.org/inbox/toh/zyxel/nw). 1/???

  31. I bought a cheap IP camera to hook up to my frigate setup, because it was a bargain. Not wanting it to have free rein on my LAN (who knows what's running on it?) this evening I rummaged for a spare glinet travel router and slapped together a #liminix firewall config for it. Runs DHCP service on one interface (for the camera), a DHCP client on the other (to plug into the network) and some nftables dnat/masquerading rules so that TCP streams for port 554 (rtsp) are forwarded from the Liminix device to the camera but nothing else is allowed out.

    From where I started, it's even cost-effective (not counting my own time, of course): the camera was a £10 ebay win and the travel router would originally have been about £20 but has been sitting in a junk drawer for some years.
  32. #liminix weekly update isn't even monthly any more :-( Here is my brain dump from the last ~ 6 weeks

    https://www.liminix.org/2024/04/30/no-u-dev.html

    tl;dr : lashings of NIH

  33. I finally completed this mission.

    Zyxel NWA50AX is usable with #Liminix now.

    github.com/telent/liminix/pull

    You can build the Zyxel NWA FIT format then `ftp` it to the target (even with the stock OS!) or the web UI and you will be booted in a Liminix system.

    Obviously, some caveats apply, for example: no true A/B support (it's trivial to fix when I have a bit of time).

    In the future, I will show a bit what I can do with this AP (and a lot of them).

    #NixOS

  34. Tomorrow, we finish the NWA50AX port and take it for a walk in home maybe. Next on the list is to bring usteer outside of OpenWrt and use it in #liminix

    Then, we submit all the pending ZFS patches to upstream while polishing them.

    That will be a productive weekend. 🙂

    #NixOS

  35. #liminix video update on a federated video platform! :-)

    Writable filesystem support, and sorting out services

    https://diode.zone/w/ixvJdBv84tEko186jV98GG
  36. #liminix video update. On Youtube (boo…) while I wait to see if my diode.zone application is approved

    https://www.youtube.com/watch?v=oyeRNkL-sR0

  37. I made a video about #Liminix. It's uploading to Youtube because I don't want to self-host that many GB, but I'd welcome any suggestions for more FOSS-friendly venues

    The production values are awful, btw. Don't get your hopes up.