Programmer in California

I’m also on https://leminal.space/u/hallettj

  • 1 Post
  • 56 Comments
Joined 1 year ago
cake
Cake day: May 7th, 2023

help-circle
  • I think you can mount an ISO image under your running system and make changes. I found a couple of guides that might be helpful:

    How to Mount an ISO File on Linux

    Edit and repack .iso bootable image

    I haven’t done this before, but I think you can chroot into the mount directory, and run package manager commands in the mounted image to install another package.

    Or I have an alternative suggestion that might or might not be easier. I’ve been hearing a lot about immutable/atomic distros, and people designing their own images. You could make your own ublue image, for example, with whatever you want on it.

    A promising looking starting point is github:ublue-os/startingpoint. Ignore the “Installation” instructions, and follow the “ISO” instructions instead.

    Or I saw recently an announcement of a new way to build atomic images that is supposed to be easier than ever, BlueBuild



  • Well ok, they both use symlinks but in different ways. I think what I was trying to say is that in NixOS it’s symlinks all the way down.

    IIUC on Fedora Atomic you have an ostree image, and some directories in the image are actually symlinks to the mutable filesystem on /var. Files that are not symlinks to /var (and that are not inside those symlinked directories), are hard links to files in the ostree object store. (Basically like checked-out files in a git repository?)

    On NixOS this is what happens if examine what’s in my path:

    $ which curl
    /run/current-system/sw/bin/curl
    
    $ ls -l /run | grep current-system
    /run/current-system -> /nix/store/p92xzjwwykjj1ak0q6lcq7pr9psjzf6w-nixos-system-yu-23.11.20231231.32f6357
    
    $ ls -l /run/current-system/sw/bin/curl
    /run/current-system/sw/bin/curl -> /nix/store/r304lglsa9i2jy5hpbdz48z3j3x2n4a6-curl-8.4.0-bin/bin/curl
    

    If I select a previous configuration when I boot I would get a different symlink target for /run/current-system. And what makes updates atomic is the last step is to switch the /run/current-system symlink which switches over all installed packages at once.

    I can temporarily load up the version of curl from NixOS Unstable in a shell and see a different result,

    $ nix shell nixpkgs-unstable#curl  # this works because I added nixpkgs-unstable to my flake registry
    $ which curl
    /nix/store/0mjq6w6cx1k9907vxm0k5pk7pm1ifib3-curl-8.4.0-bin/bin/curl  # note the hash is different
    

    I could have a different version curl installed in my user profile than the one installed system-wide. In that case I’d see this:

    $ which curl
    /home/jesse/.nix-profile/bin/curl
    
    $ ls -la /home/jesse | grep .nix-profile
    .nix-profile -> /nix/var/nix/profiles/per-user/jesse/profile
    
    $ ls -l /nix/var/nix/profiles/per-user/jesse
    profile -> profile-133-link
    profile-130-link -> /nix/store/ylysfs90018zc9k0p0dg7x6wvzqcq68j-user-environment
    profile-131-link -> /nix/store/9hjiznbaii7a8aa36i8zah4c0xcd8w6d-user-environment
    profile-132-link -> /nix/store/h4kkw1m5q6zdhr6mlwr26n638vdbbm2c-user-environment
    profile-133-link -> /nix/store/jgxhrhqiagvhd6g42d17h4jhfpgxsk3n-user-environment
    

    Basically symlinks upon symlinks everywhere you look. (And environment variables.)

    So I guess at the end everything is symlinks on NixOS, and everything is hard links plus a set of mount paths on Fedora Atomic.







  • Steam Decks run Linux. (The specific DE is KDE Plasma I think.) So you can find answers by searching for “Linux” if searching for “Steam Deck” doesn’t get results.

    One way is to enable the “Compose” key which lets you enter special characters or sequences by typing switches of more commonly-available characters. I think the Steamdeck OS has a setting for this; but I don’t have one so I can’t check.

    For letters with umlauts you press (and release) Compose, then type a double quote (need to hold shift for this part), then type a vowel.

    For reference Wikipedia has a list of Common Compose Combinations

    Alternatively if you can map an AltGr key I’ve read you can type umlauts by typing AltGr+[ and then typing a vowel. There might be a setting for this too.





  • But Flatpak has its fancy “portals” to connect each app with the specific resource it needs which you don’t get with Docker.

    Also if the goal is to limit access of apps you don’t want to fully trust, I think Docker doesn’t have the appropriate security properties. Here’s a quote from the readme for Bubblewrap (the sandboxing tool that Flatpak and Nixpak use),

    Many container runtime tools like systemd-nspawn, docker, etc. focus on providing infrastructure for system administrators and orchestration tools (e.g. Kubernetes) to run containers.

    These tools are not suitable to give to unprivileged users, because it is trivial to turn such access into a fully privileged root shell on the host.





  • Well I might be hooked. It didn’t take me long to reproduce the niceties in Nushell I’m used to from my zsh config. Some of the important parts were setting up zoxide with a key binding for interactive mode, switching on vi key bindings, setting up my starship prompt.

    Home Manager is preconfigured for the above integrations which made things easier.

    One feature that is missing that I like to use is curly brace expansion to produce multiple arguments. For example,

    $ mv *.{jpg,jpeg}
    

    Unless there is a way to do something like this in Nushell that I haven’t seen yet?

    Something I enjoyed was automating a sequence of steps I’ve been running a lot lately due to a program that often partially crashes,

    def nkill [name_substring] {
      ps | where name =~ $name_substring | each { |p| kill $p.pid; $p }
    }
    

    I realized after writing this that I basically recreated killall -r. But it’s nice that it was so easy to make a custom command to do a very specific thing. And my version gives me a nice report of exactly what was killed.

    Thanks for making this post OP! When I’ve heard mentions of Nushell I’m the past I think I conflated it with Powershell, and wrote it off as a Windows thing. (Maybe because it’s introduced as being “like Powershell”.) But now that I see that it’s cross-platform I’m enjoying digging into it!




  • I have a hard time getting over the thing where the story introduces some amazing new capability, and it’s never explored further. In this one it’s, “we found a way to get home instantly, but we’d have to do a thing in sick bay to reverse the side-effects.” A similar case is the episode with the planet of friendly hedonists with long range transporters that it turns out they can’t use because “the power systems are incompatible”.

    I’m sure if I weren’t so uptight I’d enjoy these episodes more.