So, I got into NixOS and installed it on a VPS a few days ago. I’ve previously used yunohost.org (a debian based all-in-one selfhosting solution) and docker-compose. But I (now) really like the Nix(OS) approach, the amount of packaged software and how everything ties together in a clean server configuration.
However… I need a bit more information on the server stuff. Are there nice configurations around which I can incorporate and learn from? Extensive tutorials from other people who run their own services or communities?
I mean the basic stuff isn’t a problem. I got Nextcloud and the most important stuff running, a DNS Adblocker, a chat server, nginx etc. But ultimately I’d like to share some services with friends and family. So I need single sign-on (SSO), preferably with an LDAP directory. An email server… And the Wiki and just googling it stop being helpful at this point.
Are there people who share their experience with LDAP/Authentik/Zitadel/Authelia/Keycloak / whatever SSO/Authentication software is packaged in Nix but I can’t find anything about from people who actually use it? A comparison of the several available email servers?
Here’s mine fwiw - no SSO or LDAP but might add something to what you find. My journey is to move from a NixOS user of 2 years and 1 year ‘all in’. I run my own mail server with NixOS.
nixos-mailserver works well for me. The package set runs faultlessly on the smallest OVH vps. NixOS gives me the ability to redeploy anywhere painlessly and the backup need is limited to a dovecot sync. Dovecot sync is neat: with a 2nd identical vps (match configuration.nix) and non functional but services running duplicates all the live mail data with one command.
I am going all in on Rust too. There is a rust based mail server being developed that I might track as a migration in years to come.
Reading material
Learn { NixOS, Nix }
- https://nixos-and-flakes.thiscute.world/nixos-with-flakes/modularize-the-configuration “The Nix module system provides a parameter, imports, which accepts a list of .nix files and merges all the configuration defined in these files into the current Nix module.”
- https://gitlab.com/famedly/conduit/-/blob/next/nix/README.md
- https://fangpenlin.com/posts/2024/01/14/high-speed-usb4-mesh-network/ Nix package system “beautifully designed but hard to understand at first glance.”
- https://stackoverflow.com/questions/18878117/using-vagrant-to-run-virtual-machines-with-desktop-environment
- https://discourse.nixos.org/t/set-up-vagrant-with-libvirt-qemu-kvm-on-nixos/14653
- https://aldoborrero.com/posts/2023/01/15/setting-up-my-machines-nix-style/
- https://github.com/tweag/rust-wasm-nix
- https://github.com/NixOS/nix.dev
- https://terinstock.com/post/2021/01/Setting-up-a-git-server-on-NixOS/
- https://github.com/nrbray/nixos-configuration
- https://ash64.eu/blog/2022/building-custom-nixos-isos/
- https://github.com/nix-community/disko
- https://github.com/ghostbuster91/blogposts/blob/a2374f0039f8cdf4faddeaaa0347661ffc2ec7cf/router2023-part2/main.md
- https://cola-gang.industries/nixos-for-the-confused-part-2
- https://publish.reddit.com/embed?url=https://www.reddit.com/r/NixOS/comments/12kxmii/comment/jg5kq9n?snippet=2_8_105
- https://github.com/Mic92/dotfiles
- https://www.haskellforall.com/2022/08/stop-calling-everything-nix.html
- https://calendar.google.com/calendar/u/0/embed?src=b9o52fobqjak8oq8lfkhg3t0qg@group.calendar.google.com&ctz=Europe/Amsterdam
- https://publish.reddit.com/embed?url=https://www.reddit.com/r/NixOS/comments/16zs4sn/comment/k3ilo44?snippet=0_12_128
- https://vaibhavsagar.com/blog/2019/08/22/industrial-strength-deployments/
- https://discourse.nixos.org/t/how-do-i-split-common-system-configuration-into-seperate-files/34316/4
- https://discourse.nixos.org/t/cant-get-gnupg-to-work-no-pinentry/15373/31?u=nrbray
- https://github.com/colemickens/nixcfg/blob/52e6f2600b1f01dbd223652849caa32d9a4ef42e/mixins/gpg-agent.nix
- https://github.com/Misterio77/nix-starter-configs/blob/main/README.md
- https://nixos.wiki/wiki/Nix_Cookbook#Creating_shell_scripts
- https://discourse.nixos.org/t/using-deploy-rs-with-existing-configuration/31665/3
Flake specific
are simply a special entry point for Nix code with a built in pinning system
- https://colmena.cli.rs/unstable/tutorial/flakes.html
- https://github.com/erictossell/nixflakes/blob/main/flake.nix
- https://github.com/simonkampe/nixos/blob/main/flake.nix
- https://discourse.nixos.org/t/proper-way-to-build-a-remote-system-with-flakes/17661
- https://fasterthanli.me/series/building-a-rust-service-with-nix
- https://nixos.wiki/wiki/Overlays#In_a_Nix_flake
- https://thiscute.world/en/posts/nixos-and-flake-basics/
- https://drakerossman.com/blog/how-to-convert-default-nixos-to-nixos-with-flakes
- https://flake.parts/best-practices-for-module-writing
- https://www.tweag.io/blog/2022-09-22-rust-nix/
- https://flake.parts/
- https://github.com/nix-community/NUR
- https://lantian.pub/en/article/modify-computer/nixos-packaging.lantian/
- https://tonyfinn.com/blog/nix-from-first-principles-flake-edition/nix-6-nixpkgs-not-reinventing-the-wheel/