Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)CH
Posts
3
Comments
173
Joined
3 yr. ago

  • Are there any 3rd party repos?

    Nix has "flakes", which allow you to share Nix code in a Git repository, it's like repos on steroids. There are many Git projects that offer new packages (such as nix-gaming) or NixOS modules (such as my project nixos-router), or even just Nix code (such as my projects notlua and notnft, which allow you to write Lua code and nftables rules in Nix), or any combination thereof.

    Would it be possible [for proprietary software to be compiled for NixOS]?

    Kind of. You first have to understand what Nix derivations are - builders that take certain inputs (such as certain versions of libraries) and produce some outputs.

    What happens if the inputs (such as a library version) change? The outputs change as well - previously it was /nix/store/abcdefgh-libfoo/lib/libfoo.so, now it's /nix/store/ijklmnop-libfoo/lib/libfoo.so - the path to libfoo changes, and the binary's RPATH reflects that.

    So if you want to package binary software for NixOS, you either have to pin library versions (so the paths don't ever change), or patch the binary.

    ...proprietary codecs...

    It depends on what those codecs are.

    Let's say they are a binary. In that case, you install them and they get added to your PATH - easy.

    Let's say they are some data files. In that case you install it and it gets put into XDG_DATA_DIRS - easy.

    Let's say it's a shared library (.so). First question - how is that .so loaded? By which program? From where?

    Depending on the answer, what you have to do changes as well. You may have to override some core media library, or ffmpeg, or maybe you can override VLC, or VLC's ffmpeg, but not system ffmpeg. Or, it may be the case that a simple LD_LIBRARY_PATH change will do it for you.

    Basically - it depends. That's why NixOS requires a deeper knowledge of Linux, or forces you to learn.

  • I prefer a very small EFI partition mounted at /boot/efi, that way the kernels and initrds sit at /boot alongside the rest ot the files (though if you also want encryption you need to add your encryption keys to initrd so you don't have to enter the password twice)

  • This depends on browser support. I recommend bypassing the issue altogether by using a password manager like Bitwarden (a free as in freedom SaaS) or KeepassXC (a program for using .kdbx password databases which can be synced between devices by you in any way you want, like Nextcloud or Dropbox).

  • just use the Arch Wiki. The only parts that differ per system and when you really have to read a lot is partitioning (depending on whether you want encryption, etc) and post-install configuration like installing a DE, other than that the installation guide will basically cover everything on a single page

  • It's better than Whatsapp & Co since it's FOSS. It's worse than Matrix and XMPP since those are federated (and Matrix has e2ee). It's about tied with Signal, Signal is FOSS but hostile to third-party clients, in exchange it has encryption on by default.

    Telegram is known to occasionally hand out users' data in extraordinary circumstances, but that's pretty rare overall. It's not the choice for super sensitive communications, but it's decent as a better alternative for SNS. It's very popular in Russia because it has public one-to-many channels and unlike VK and etc it mostly doesn't censor stuff. I'll never use Whatsapp, I have no reason to use Signal because nobody I know uses it and Matrix is better, Telegram is alright in my book.

    Also it's possible to buy anonymous telegram accounts, not sure that's possible for Signal.

  • NixOS tends to encourage "proper" solutions instead of hacky temporary solutions, so while doing stuff on NixOS takes more time, maintaining what you've done is much easier, and it's much easier to reason about, so I learned much more on NixOS than I learned on Arch (hell, I wrote two Nix DSLs for nftables and Lua because my perfectionism told me I need to do that instead of manipulating config as strings in Nix). I have an initrd hook that configures GPU passthrough by picking a GRUB option, I have a system configuration for an Arm router SoC (BPI-R3), which is a painful piece of hardware to work with, much like other SoCs, I have the router config itself (which I wrote a Nix framework for) - and if I ever forget how that all works, I can read the config to remember it, instead of trying to figure out what Linux commands I ran "back then". But if your goal is just learning about Linux, look elsewhere - that was just a bonus for me; Nix is an abstraction, and you can only start learning Linux after you understand that abstraction.

  • kinda, preinstall/postinstall scripts expect to run on a clean system, while NixOS can be changed without a full system wipe, you don't need to redownload/rebuild anything you've already downloaded/built.

  • Simply use two different configurations? The more interesting question is how to share stuff between configs.

    Each piece of config is a NixOS module. You can include some NixOS modules in one system's config, but not the other.

  • You know why reinstalling Linux is annoying? Because you have to remember (or write down) every piece of config you ever changed. Dark mode in KDE? Change it in settings. Some systemd unit tweak? Change it in /etc/systemd. Want to run some commands at boot? Use systemd (see above), or write an initrd hook (distro-specific). Need a specific version of an app? Need some files in /opt? Need certain packages installed? You better remember to do that!

    In NixOS, you "reinstall" your OS every time you change a single setting, because reinstalling NixOS isn't scary at all - everything that needs to be changed is configured in your configuration - just make sure /home and /var/lib are saved (and perhaps some other dirs, I have root on tmpfs and bind mount all persistent files I need to ensure I know what needs to be preserved on clean reinstall and what doesn't).

    Want to move it to a different PC? No problem, copy the files in /home and /var/lib and simply install NixOS using the configuration you already have on the new PC. Want to create a boot option with slightly different kernel or kernel options, or maybe even another DE? No problem, specializations got you covered.

    And of course, this also means it's easy to share configurations for specific use cases. Want to run on some specific hardware that doesn't work out of the box? Perhaps nixos-hardware got you covered. Want a certain program set up? Maybe there's already a NixOS option for system-level config or a home-manager option for user-level config, worst case you can write it yourself and share for everyone else in the community using flakes, and maybe open a PR to nixpkgs/home-manager. Want to share configuration between systems? That's easy, put them in the same flake and write a common module shared between all of your systems.

    Basically, if you're fine with whatever comes out of the box in any Linux distro, you don't need NixOS, but if you need configuration, if you run servers, it is a lifesaver. I switched from Arch, no regrets. I run my personal laptop, my server, which I effortlessly migrated from Oracle Cloud when they quit Russia, and my router on it, here's my NixOS/home-manager config.

    The only downsides are the learning curve and the fact that you can't "just" run programs that expect a FHS layout. You can do it with workarounds like steam-run or appimage-run anyway, but overall be prepared to learn to package stuff for NixOS. Also if you have no experience with functional programming, the Nix language may be hard to understand at first.