Comment by Cyph0n

Comment by Cyph0n 12 hours ago

4 replies

It’s even more pleasant when you use a distro that natively uses systemd and provides light abstractions on top. One such example is NixOS.

allreduce 9 hours ago

NixOS is anything but a light abstraction (I say this as a NixOS user).

Tbh it feels like NixOS is convenient in a large part because of systemd and all the other crap you have to wire together for a usable (read compatible) Linux desktop. Better to have a fat programming language, runtime and collection of packages which exposes one declarative interface.

Much of this issue is caused by the integrate-this-grab-bag-of-tools-someone-made approach to system design, which of course also has upsides. Redhat seems to be really helping with amplifying the downsides by providing the money to make a few mediocre tools absurdly big tho.

  • Cyph0n 6 hours ago

    How is it not a light abstraction? If you're familiar with systemd, you can easily understand what the snippet below is doing even if you know nothing about Nix.

        systemd.services.rclone-photos-sync = {
          serviceConfig.Type = "oneshot";
          path = [ pkgs.rclone ];
          script = ''
            rclone \
              --config ${config.sops.secrets."rclone.conf".path} \
              --bwlimit 20M --transfers 16 \
              sync /mnt/photos/originals/ photos:
          '';
          unitConfig = {
            RequiresMountsFor = "/mnt/photos";
          };
        };
        systemd.timers.rclone-photos-sync = {
          timerConfig = {
            # Every 2 hours.
            OnCalendar = "00/2:00:00";
            # 5 minute jitter.
            RandomizedDelaySec = "5m";
            # Last run is persisted across reboots.
            Persistent = true;
            Unit = "rclone-photos-sync.service";
          };
          partOf = [ "rclone-photos-sync.service" ];
          wantedBy = [ "timers.target" ];
        };
    
    In my view, using Nix to define your systemd services beats copying and symlinking files all over the place :)
    • allreduce 4 hours ago

      Hah I just wrote something similar today to periodically push backups to another server from my NAS.

      I agree the systemd interface is rather simple (just translate nix expression to config file). But NixOS is a behemoth; Completely change the way how every package is built, introduce a functional programming language and filesystem standard to somehow merge everything together, and then declare approximately every package to ever exist in this new language + add a boatloat of extra utilities and infra.

      • Cyph0n 3 hours ago

        I was referring to working with systemd specifically on NixOS. But yes, the Nix ecosystem is not easy to learn, but once it clicks there is no going back.