I've been around selfhosting most of my life and have seen a variety of different setups and reasons for selfhosting. For myself, I don't really self host as mant services for myself as I do infrastructure. I like to build out the things that are usually invisible to people. I host some stuff that's relatively visible, but most of my time is spent building an over engineered backbone for all the services I could theoretically host. For instance, full domain authentication and oversight with kerberized network storage, and both internal and public DNS.
The actual services I host? Mail and vaultwarden, with a few (i.e. < 3) more to come.
I absolutely do not need the level of infrastructure I need, but I honestly prefer that to the majority of possible things I could host. That's the fun stuff to me; the meat and potatoes. But I know some people do focus more on the actual useful services they can host, or on achieving specific things with their self hosting. What types of things do you host and why?
If you want to keep everything inside a singular Nix configuration while still using Docker, you can check out the NixOS option virtualisation.oci-containers - essentially, a declarative way of managing docker/podman containers (similar to docker-compose) but with Nix.
I know it's been three weeks, but thanks for telling me about this! I might actually do this, for the projects here and there which aren't packaged into nixpkgs (yet).
I thought about adding a link, but am a bit hesitant to de-anonymize myself on here 😅
But it's basically this:
Proxmox is not Nix configured. There's a project for that, but IMO t'll take a couple of years to be ready for production.
I've created a custom nix module that essentially just sets my default values for stuff like bios type, boot order,... And allows to set CPU cores, RAM, IP,...
all this does though is just setting the corresponding values from the nixos-generators proxmox output
additionally, all the usual stuff is handled (user, known ssh keys, base config of the system)
for each VM, I only have a single file containing the VM settings (ID, RAM, cpu, ip,...) and the service config for whatever the VM is for
then lastly I have a custom script/shell that essentially just allows to do "nixvm-new <flake output name>" which generates the image, moves it to the nas, and calls on proxmox to import the image, plus some cleanup
TBH this sounds way more complicated than it is / feels to use 😄