In case you are not familiar with nix/nixos, this is a collection of configuration files which build all my systems in a declarative manner. The tool used to configure the global system is called nixos, and the one used to configure the individual users is called home-manager.
A visual history of my setup is in the works!
- Sets up all the apps I use — including git, neovim, fish, starship, hyprland, anyrun, discord, zathura, foot & much more.
- Sets up my entire homelab — including zfs-based impermanence, automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, actual & more.
- Consistent base16 theming using stylix
- Declarative secret management using sops-nix
The current state of this repo is a refactor of my old, messy nixos config, based on the structure of this template.
This repo's structure is based on separating configuration into individual hosts - different machines configured by me. Each host is named after things in space/mythology (they are the same picture). The hosts I have right now are:
- calypso — my personal laptop
- tethys — my previous personal laptop
- lapetus — older laptop running as a server
The following hosts are not configured using nix, but might be referenced in places:
- chaldene — my current phone
- enceladus — my previous phone
- erriapus — my tablet
- euporie — VM used for testing
Location | Description |
---|---|
common | Configuration loaded on both nixos and home-manager |
devshells | Nix shells |
dns | Directory for parts of my octodns nix-based wrapper |
docs | Additional documentation regarding my setup |
home | Home manager configurations |
hosts/nixos | Nixos configurations |
modules | Custom generic/nixos/home-manager modules |
overlays | Nix overlays |
pkgs | Nix packages |
flake.nix | Nix flake entrypoint! |
scripts | Bash scripts that come in handy when on a live cd |
.sops.yaml | Sops entrypoint |
stylua.toml | Lua formatter config for the repo |
Here's some things you might want to check out:
- My neovim config
- written using a custom neovim config generation framework
- snippets written in miros — my custom snippet generation language
- The flake entrypoint for this repository
This does not include links to every plugin I use for every program here. You can see more details in the respective configurations.
- Nixos — nix based operating system
- Home-manager — manage user configuration using nix
- Impernanence — see the article about erasing your darlings
- Sops-nix — secret management
- disko — format disks using nix
- kanata — software-level keyboard layout customizer. One of the few such programs with support for chording
- opentabletdriver
- Stylix — base16 module for nix
- Base16 templates — list of base16 theme templates
- Catpuccin — base16 theme I use
- Rosepine — another theme I use
- Gruvbox — yet another theme I use
- Hyprland — wayland compositor
- Foot — terminal emulator
- Zathura — pdf viewer
- Firefox — web browser
- Tesseract — OCR engine
- Obsidian — note taking software
- Bitwarden — client for self-hosted password manager
There are many clis I use which I did not include here, for the sake of brevity.
- Neovim — my editor
- Fish — user friendly shell
- Starship — shell prompt
- yazi — file manager
- Catgirl — irc client
- lazygit — git tui
- Self management:
- Smos — selfhosted comprehensive self-management system
Most services are served over tailscale, using certificates generated by let's encrypt.
- Actual — budgeting tool.
- Commafeed — rss reader
- Forgejo — git forge
- Grafana — pretty dashboards
- Homer — server homepage
- Invidious — alternate youtube client
- Jellyfin — media server
- Jupyterhub — notebook collaboration suite
- Microbin - code & file sharing service
- Pounce & calico — irc bouncer
- Prometheus — metric collector
- Qbittorrent — torrent client
- Radicale — calendar server
- Redlib — alternate reddit client
- Syncthing — file synchronization
- Vaultwarden — password manager
- Whoogle — search engine
This section contains links to things which used to be in the previous section but are not used anymore. This section was created in June 2023, hence stuff I dropped earlier might not be here. Moreover, this list is sorted with the most recently dropped things at the top, as a sort of reverse-timeline.
- Tmux — I now simply use multiple WM windows / no longer persist sessions
- Intray — The server is no longer open source
- Guacamole — I had little reason to keep this around on top of tailscale
- htop — I switched to bottom, as the interface felt way cleaner
- Wezterm — I switched to Foot, as wezterm was laggy, unstable, and kept breaking between releases
- Ranger — I switched to Yazi
- firenvim - the concept is cool, but I found the whole thing pretty annoying at times
- venn.nvim — the concept is cool, but I would use it about once a year
- hydra.nvim — I was rarely using it, and it was taking up precious config space
- winbar.nvim — I mostly had this here for the looks, so I moved the path it provided to my statusbar
- treesitter-visual-context.nvim — felt like this was cluttering my screen more than anything
- Paperplanes.nvim — replaced by a single curl call
- Eww - experimented with eww for a bit, but setup was painful and bars are a bit useless
- Neogit — was a bit slow / clunky, so I switched to lazygit
- Slambda — custom keyboard chording utility. I retired the project in favour of kanata
- GPG + pass — I switched to vaultwarden
- Agenix & homeage — I switched to sops-nix
- Mind.nvim — self management tree editor. The project got archived, so I switched to Smos.
- Null-ls — general purpose neovim LSP. The project got archived, so I switched to formatter.nvim.
- Wofi — program launcher. I switched to Anyrun.
- Alacritty — terminal emulator. I switched to Wezterm.
- Xmonad — xorg window manager. I switched to Hyprland.
- Chrome — web browser. I switched to
firefox
because it offers a better HM module.