Thanks, I didn’t know that. I’m learning now things on Lemmy!
Thanks, I didn’t know that. I’m learning now things on Lemmy!
Unstable is and from what I’ve heard, nixpkgs even is one of the fastest repos with updating packages (also the largest). But I still wouldn’t recommend it for OP.
I am currently looking at using OpenSUSE Micro OS for a home server. It is based on Tumbleweed and also rolling release, but it has an immutable filesystem and can automatically update and rollback. It’s similar to Fedora Core OS, which was my first choice, until the Red Hat drama.
That’s true for the configuration.nix. I still cannot fully wrap my head around using Nix Flakes for managing my nixos configuration, home manager and overlaying or creating packages. My setup so far works, but I still don’t feel like I fully understand it.
It’s great and I’m using it, but I don’t think someone coming from Linux Mint should use it right away. It can get quite complex even coming from Arch or Artix Linux.
There are some really mixed answers here. I would stick to the mainline distros and not go for a fork with a few customizations. It does depend on what you want, especially if you are willing to learn using the terminal and if you want bleeding edge or more stability. My list would be:
I haven’t really used Pop!_OS! yet, but I am getting a System76 laptop so I’ll definitely check it out. I hope they get their Cosmic desktop out soon so they can differentiate their distro more instead of being another fork with a few customizations and default apps.
(If you want to learn by pain that is)
I can’t confirm that (I distro hopped to NixOS) I can confirm that Arch is a solid distro worth learning and will give you the skills to manage it long-term. Compared to Arch based distros like Manjaro, EndeavorOS and Garuda where people tend to screw up their install easily when installing the wrong packages from the AUR and updating with dependency conflicts.
You can check it using the checksum. But who does that?
In all seriousness I am running NixOS right now using flakes. The package manager compiles everything unless a trusted source already has it compiled, in which case the package manager checks the checksum to ensure you still get the same result and downloads that instead. It also aims to be fully reproducible and with flakes it automatically pins all dependency versions so next time you build your configurations, you get the same result. It is all really cool, but I still don’t understand everything and I’m still learning it.
I am already trying it and I am still no expert. How I understand flakes is that it is a file with inputs, like nixpkgs and other flakes or repos you might depend on and some outputs that can be things like a nixshell with packages and environment variables, custom packages and configs like your NixOS configurations and home manager. When you use your flake for the first time, by entering a nix shell with nix develop, building a package with nix build, rebuild your NixOS system with nixos-rebuild --flake .#<hostname>, etc, nix will generate a flake.lock file that stores the hashes of all of your inputs and thus pinning the input versions. This means that if you ever run any of those commands again, you should get the same result because the inputs are pinned and the same version. If you want to update, you just run nix flake update and it will regenerate the flake.lock file with new hashes for the newest version. The advantage with flakes is that it is fully reproducible, even if one of your dependencies changes, because the hash is specified and centrally managed in the inputs of your flake.
Nix flakes can be used for your NixOS system by adding the nixos configurations in the outputs of your nix flake and adding the dependencies like nixpkgs to the inputs. You can also combine it with home manager by either specifying it as a separate output or adding it as a nixos module inside the nixos configurations output. You just copy your existing nixos and home manager config to the folder with your flake and reference them inside the flake.nix. If you added home manager as a nixos module, you only need to run nixos-rebuild switch --flake <path-to-flake>.#<hostname> and it will automatically rebuild both your NixOS configuration and home manager configuration. You can then backup the folder with your flake and configurations by uploading them to GitHub for example.
The best resource I found was this 3 hour video by Matthias Benaets: https://youtube.com/watch?v=AGVXJ-TIv3Y&feature=share7
Great points. I kinda feel the same with containerization. I have been wanting change my OS on my home server and while NixOS is great for that, I have decided to do things differently and use OpenSUSE Micro OS. My plan was actually Fedora Core OS, but after that Red Hat drama I decided to run with SUSE instead. It is an immutable distro with atomic upgrades that is designed for being a container host. It uses Ignition as the configuration for setting up things like users, services, networking, etc. My plan is then to just use containers like I was doing before on Fedora Server and for the other things to use Nix to build container images. Instead of using DockerFile, you’d use Nix Flakes to create really minimal images. Instead of starting with a full distro like Alpine, Nix starts from scratch and copies all dependencies over as specified in your flake. So the image only contains the absolute minimum to run. I think I’d be a fun side project while learning more about Ignition, Linux containers and Nix Flakes.
As for your point on config, I think it’s just part of the trade offs of NixOS. You either have a system that can be modified easily at anytime through the shell or you have a system that you modify centrally and is fully reproducible. You can already install packages with nix-env in the command line without changing your config, but that also won’t be reproducible. Maybe a GUI app for managing your config and packages could be helpful, although I’m pretty sure that’s low priority for NixOS right now.