The ultimate output of Nix is one set of data, usually the description of a derivation (~= package). You cannot cause arbitrary side-effects with it like writing to files or making network requests with it.
the parts of Guix in which packages are defined are quite pure, even using monads for some things
Monads have nothing to do with purity. In fact, one of the most infamous usages of them is Haskell’s IO monad which is probably the most impure construct in the entire language.
it is really not too different from the Nix language.
Hm, I can’t help but think that a lisp dialect can never really be similar to any language except another lisp.
meaning every step of building the kernel, including the steps taken to build the C compiler toolchain, are produced by code that is simple enough to check for correctness and safety.
Full-source bootstrap isn’t about just the kernel, it affects every piece of software. With GUIX and Nix, every single package can be fully traced back to the bootstrap seed.
Though it should be noted that you do require a running Linux kernel on an x86 machine in order to bootstrap.
it is not quite to the point where it /just works/ on a lot of the computer hardware that I own.
Unless we get some serious money, effort and/or regulation w.r.t. OSS firmware, that will likely never be the case.
That has nothing to do with its technology though, that’s a political issue. GUIX is a GNU project and acts like proprietary software does not exist/is not a basic necessity in 2023.
Ah I think Windows does this “helpful” thing where it installs its bootloader into the ESP of any drive if it’s already present rather than the drive you explicitly told it to install onto.
You didn’t have anything in it yet, right? Unplug all other drives and then re-install Windows onto the drive. It should work as expected after that.
IIRC Pop!_OS sets the systemd-boot timeout super short; you have to hold a key after the firmware is done or something to get to it reliably or simply increase the timeout (1s is enough, I have it set to that on my systems). systemd-boot should give you the option to boot any windows installation though, it can auto-detect them.
The best way I know of is to get yourself a VM and get into the weeds; try to configure a system to your liking.
Follow the NixOS manual. The Wiki is unofficial; often opinionated, out of date or just plain wrong. Take it with a grain of salt. The canonical source of documentation is the NixOS manual and it’s not nearly as bad as you may have heard.
Make extensive use of search.nixos.org/options or man configuration.nix. Finding and making proper use of options and the module system is the bread and butter of using NixOS.
Eventhough everyone and their mom will recommend them to you for nebulous reasons, ignore flakes for now. You will know when you’ll benefit from using them; namely when you need to use something outside of NixOS/Nixpkgs. You’re going to have enough to figure out with plain old NixOS on its own though; I don’t have external dependencies in my config to this day.