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, tmux, starship, hyprland, anyrun, discord, zathura, wezterm & much more.
- Sets up my entire homelab — including zfs-based impermanence, automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, smos, intray, 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 the concept of hosts - individual machines configured by me. I'm naming each host based on things in space/mythology (they are the same picture). The hosts I have right now are:
- tethys — my personal laptop
- lapetus — older laptop running as a server
- euporie — barebones host for testing things insdie a VM
- enceladus — my android phone. Although not configured using nix, this name gets referenced in some places
Location | Description |
---|---|
common | Configuration loaded on both nixos and home-manager |
devshells | Nix shells |
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
- zfs — filesystem
- 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
- Hyprland — wayland compositor
- Wezterm — 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
- Tmux — terminal multiplexer
- Fish — user friendly shell
- Starship — shell prompt
- yazi — file manager
- Catgirl — irc client
- lazygit — git tui
- Self management:
Most services are served over tailscale, using certificates generated by let's encrypt.
- Actual — budgeting tool.
- Commafeed — rss reader
- Grafana — pretty dashboards
- Homer — server homepage
- Intray — GTD capture tool.
- Invidious — alternate youtube client
- Jellyfin — media server
- Pounce & calico — irc bouncer
- Prometheus — metric collector
- Qbittorrent — torrent client
- Radicale — calendar server
- Redlib — alternate reddit client
- Smos — a comprehensive self-management system.
- Syncthing — file synchronization
- Vaultwarden — password manager
- Whoogle — search engine
Includes links to stuff which used to be in the previous section but is not used anymore. Only created this section in June 2023, so stuff I used earlier might not be here. Sorted with the most recently dropped things at the top.
- 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.