This is the start of a series of experiments and blogposts documenting them that I plan to do with a home server.
The Motive
I’ve wanted to self host for a while.
I bought my desktop back in 2019, but by 2022 I’d left home for college and it just sat at home collecting dust. I got it shipped to Bangalore in 2025 and wanted to make some use of it.
The Hardware
Early Ryzen! The system is a Ryzen 5 1600, on an ASUS B350M motherboard with 8GB of RAM and a GTX 1660. A very weird but affordable config for the time.
There’s a m.2 slot on the motherboard but it isn’t populated with anything - I never bothered to put a SSD in. The entire system runs off a WD Blue 1TB hard drive (ouch).
It’s a midrange PC from 2019. My laptop today is way faster than what that desktop could ever do. But it’s perfect for running a basic server that I can play around with.
It’s all packed together in a shitty cheap Corsair case with a single fan, and the rubber feet falling off.
My struggle with Debian
In the back of my mind Debian had always been the server distro. That’s what I ended up putting on this desktop the first time I started doing anything on it.
Turned out to be a huge mistake when I tried to host a Minecraft server for my friends. Debian stable doesn’t have newer versions of the Java that I needed to host a server. For that, I had to switch to unstable - Trixie back then. I figured what was the point of going with Debian anyways if I couldn’t follow the stable channel?
Fast Forward to this month
Becuase of my laziness that Debian setup stayed as it is for a year before I mustered up the energy to wipe it and start again. By this time I already had a shoddy Jellyfin + torrent box set up on it.
This time I chose to go with my heart, and my heart said put NixOS on it. I ended up loving this experience.
Here’s all the things I think NixOS did better than Debian for my setup:
- I don’t have to manage every config file
- Everything is configured in the same format
- I can just roll back on broken configurations
- Don’t have to remember where a random config file for a random service is
- I can test out my code in flakes before deploying it on the server
What took me about a day to set up on Debian, took me a couple hours using Nix. Jellyfin setup is around 8 lines of config. qbittorrent with a webUI is about the same.
{
services.jellyfin.enable = true;
environment.systemPackages = [
pkgs.jellyfin
pkgs.jellyfin-web
pkgs.jellyfin-ffmpeg
];
}
This is all I had to add to my configuration.nix to get a working jellyfin setup. No mucking around with packages, no manually maintained config files, everything just works.
Plans
NixOS is an incredibly useful base for tinkering around. I am a forgetful person and I make a lot of mistakes. I forget where config files are. I forget the small fixes I made. Putting everything in a configuration.nix or a flake essentially documents what I’ve been upto. That’s what makes me interested in it - a tool to document tinkering and replicate it at any time perfectly.
I’m hoping this time the server won’t just be a shoddy Jellyfin instance for another year.