I’m a robotics researcher. My interests include cybersecurity, repeatable & reproducible research, as well as open source robotics and rust programing.

  • 214 Posts
  • 235 Comments
Joined 2 years ago
cake
Cake day: June 9th, 2023

help-circle

  • I’ll preface that NixOS may not be for everyone, as deviating from a conventional hierarchical file system is a radical departure from conventional distributions; but for those that want precise control over their system environment, it has a good deal of appeal.

    For example, I appreciate being able to use the latest bleeding release of a number of tools while sticking with older trusted versions of other utilities, but if both relied upon different versions of similar dependencies, such package conflicts can be troublesome to resolve, as few Linux package managers gracefully deal with multi version installs.

    For NixOS using the nix store, installing leaf packages that traditionally conflict is trivial, and as a user, I can spend less time managing every transitive dependency in order to use the software I want. Not having to wait for a disjointed ecosystem of packages to synchronize around dependencies, or resorting to compromise in package version selection is very liberating.

    The functional language and documentation for nix itself is a bit quirky, as I wish it was stronger typed, but being able to declaratively express and version control my setup across workstations has been a time saver; installing/configuring something once and then have-done with it.

































  • If there was a simple Debian based distro that I could declaratively manage via a single config file, I think I’d try it. I.e. not using Puppet or Chef that can only bootstrap a system state, but something to truly manage a system’s entire life cycle, including removing packages and anything littering the system file tree. But since there isn’t, I’m using NixOS instead.

    Having a DSL to declare my entire system install, that I can revision control like any other software project, has been convenient for self documenting my setup and changes/fixes over time. Modularizing that config has been great for managing multiple host machines synchronously, so both my laptop and desktop feel the same without extra admin work.

    Nixpkgs also bolsters a lot of bleeding edge releases for the majority of FOSS packages I use, which I’m still getting used to. And because of how the packaging works, it’s also trivial to config the packages to build from customer sources or with custom features. E.g. enabling load monitoring for Nvidia GPUs from btop that many distros don’t ship by default.


  • Yeah, the centralization of public Internet infrastructure around Cloud flare has been concerning, not only as a single point of failure but also in terms of consolidation of trust.

    As a prior student workout a public IP deep behind several NATs, with little funds for self hosting hobbies, these kinds of tunnel services were a handy gateway in getting started.

    Although, I hope ISP adoption of IPv6 or cheaper bandwidth quotas for VPS providers help compete on this front for self hosting networking.





  • I’ve been straddling between NixOS and a Debian derivative for a while recently. Using nix, I really enjoy managing my system using declarative code, like I would for any other software infrastructure.

    Although, for work, I still resort back to Debian or Ubuntu when it comes to collaborating with existing FOSS communities around robotic software or medical imaging, as those respective domains are heavily ingrained/invested into the Debian release and package distribution.

    So it’s been a challenge to migrate anything other than my personal computing to NixOS. However I do appreciate the easy access to latest version releases of packages, kernels, and drivers. Being able to patch and document the idiosyncrasies of my hardware using declarative configs and revision control has been so helpful and solving a bug once and never forgetting how to reproduce the fix later on.

    Another benefit is being able to explore public repositories for examples of how other users may be installing the same types of modules or software features I’m looking to setup, or solve a similar issue. It’s one thing to read the stack overflow answer about how to edit an arcane etc config for an anonymous package version, but it’s another to be able to read the commit history of hundreds of other nix users and PRs from nixpkgs maintainers.


    My flake config is still rather simplistic, and synchronizing two hosts between two branches. I did appreciate the reference repo linked by the author as an example for modular host and user config.

    https://github.com/jnsgruk/nixos-config

    Any suggested resources or templates on that front? I.e. structuring and modularizing NicOS flake configs for multiple hosts for overlapping and non overlapping use cases? For example, I’ve just gotten into how to overlay nixpkgs PRs and explore dev shells.