2023-05-28 05:24:36 +02:00
# Welcome to _the Satellite_
2023-01-11 10:19:49 +01:00
2023-07-21 18:30:48 +02:00
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 ](https://nixos.org/ ), and the one used to configure the individual users is called [home-manager ](https://github.com/nix-community/home-manager ).
2023-01-11 10:19:49 +01:00
2023-11-13 04:31:54 +01:00
> A [visual history](./docs/history.md) of my setup is in the works!
2023-11-08 07:16:48 +01:00
2023-07-21 18:30:48 +02:00
## Features this repository includes:
2023-01-11 10:19:49 +01:00
2024-08-05 20:31:34 +02:00
- Sets up all the apps I use — including git, neovim, fish, tmux, starship, hyprland, anyrun, discord, zathura, foot & much more.
2024-02-24 03:51:35 +01:00
- Sets up my entire homelab — including zfs-based [impermanence ](https://grahamc.com/blog/erase-your-darlings ), automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, smos, intray, actual & more.
2024-02-20 00:51:01 +01:00
- Consistent base16 theming using [stylix ](https://github.com/danth/stylix )
- Declarative secret management using [sops-nix ](https://github.com/Mic92/sops-nix )
2023-01-11 10:19:49 +01:00
The current state of this repo is a refactor of my old, messy nixos config, based on the structure of [this template ](https://github.com/Misterio77/nix-starter-configs ).
2023-07-21 18:30:48 +02:00
## Hosts
2023-01-11 10:19:49 +01:00
2023-05-28 05:24:36 +02:00
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:
2023-01-11 10:19:49 +01:00
2024-08-26 17:38:47 +02:00
- [calypso ](./hosts/nixos/calypso/ ) — my personal laptop
- [tethys ](./hosts/nixos/tethys/ ) — my previous personal laptop
2024-02-20 00:51:01 +01:00
- [lapetus ](./hosts/nixos/lapetus/ ) — older laptop running as a server
- enceladus — my android phone. Although not configured using nix, this name gets referenced in some places
2023-01-11 10:19:49 +01:00
2023-07-21 18:30:48 +02:00
## File structure
2023-05-28 05:24:36 +02:00
2023-12-12 14:32:06 +01:00
| Location | Description |
| ---------------------------- | --------------------------------------------------- |
| [common ](./common ) | Configuration loaded on both nixos and home-manager |
| [devshells ](./devshells ) | Nix shells |
| [docs ](./docs ) | Additional documentation regarding my setup |
| [home ](./home ) | Home manager configurations |
| [hosts/nixos ](./hosts/nixos ) | Nixos configurations |
| [modules ](./modules ) | Custom generic/nixos/home-manager modules |
| [overlays ](./overlays ) | Nix overlays |
| [pkgs ](./pkgs ) | Nix packages |
| [flake.nix ](./flake.nix ) | Nix flake entrypoint! |
2024-02-01 00:04:04 +01:00
| [scripts ](./scripts ) | Bash scripts that come in handy when on a live cd |
2024-01-31 20:03:00 +01:00
| [.sops.yaml ](./.sops.yaml ) | Sops entrypoint |
2023-12-12 14:32:06 +01:00
| [stylua.toml ](./stylua.toml ) | Lua formatter config for the repo |
2023-05-28 05:24:36 +02:00
2023-07-21 18:30:48 +02:00
## Points of interest
2023-01-11 10:19:49 +01:00
Here's some things you might want to check out:
2024-04-29 01:52:16 +02:00
- My [neovim config ](./home/features/neovim/default.nix )
- written using a [custom neovim config generation framework ](./modules/common/korora-neovim.nix )
2024-05-28 02:39:42 +02:00
- [snippets ](./home/features/neovim/snippets ) written in [miros ](https://github.com/prescientmoon/miros ) — my custom snippet generation language
2023-01-11 10:19:49 +01:00
- The [flake ](./flake.nix ) entrypoint for this repository
2023-01-12 20:49:08 +01:00
2023-07-21 18:30:48 +02:00
## Things I use
2023-12-12 14:38:20 +01:00
> This does not include links to every plugin I use for every program here. You can see more details in the respective configurations.
2023-07-21 18:30:48 +02:00
### Fundamentals
- [Nixos ](http://nixos.org/ ) — nix based operating system
- [Home-manager ](https://github.com/nix-community/home-manager ) — manage user configuration using nix
- [Impernanence ](https://github.com/nix-community/impermanence ) — see the article about [erasing your darlings ](https://grahamc.com/blog/erase-your-darlings )
2024-01-31 20:03:00 +01:00
- [Sops-nix ](https://github.com/Mic92/sops-nix ) — secret management
2023-07-21 18:30:48 +02:00
- [disko ](https://github.com/nix-community/disko ) — format disks using nix
- [zfs ](https://openzfs.org/wiki/Main_Page ) — filesystem
2024-02-20 00:51:01 +01:00
### Input handling
2024-03-04 11:33:59 +01:00
- [kanata ](https://github.com/jtroo/kanata ) — software-level keyboard layout customizer. One of the few such programs with support for chording
2024-02-20 00:51:01 +01:00
- [opentabletdriver ](https://opentabletdriver.net/ )
2023-07-21 18:30:48 +02:00
### Graphical
- [Stylix ](https://github.com/danth/stylix ) — base16 module for nix
- [Base16 templates ](https://github.com/chriskempson/base16-templates-source ) — list of base16 theme templates
- [Catpuccin ](https://github.com/catppuccin/catppuccin ) — base16 theme I use
- [Rosepine ](https://rosepinetheme.com/ ) — another theme I use
- [Hyprland ](https://hyprland.org/ ) — wayland compositor
- [Wlogout ](https://github.com/ArtsyMacaw/wlogout ) — wayland logout menu
- [Hyprpicker ](https://github.com/hyprwm/hyprpicker ) — hyprland color picker
- [Grimblast ](https://github.com/hyprwm/contrib/tree/main/grimblast ) — screenshot tool
- [Dunst ](https://dunst-project.org/ ) — notification daemon
2024-04-28 00:07:45 +02:00
- [Wlsunset ](https://sr.ht/~kennylevinsen/wlsunset/ ) — day/night screen gamma adjustments
2023-08-19 21:31:22 +02:00
- [Anyrun ](https://github.com/Kirottu/anyrun ) — program launcher
2024-08-05 20:31:34 +02:00
- [Foot ](https://codeberg.org/dnkl/foot ) — terminal emulator
2023-07-21 18:30:48 +02:00
- [Zathura ](https://pwmt.org/projects/zathura/ ) — pdf viewer
- [Firefox ](https://www.mozilla.org/en-US/firefox/ ) — web browser
- [Tesseract ](https://github.com/tesseract-ocr/tesseract ) — OCR engine
- [Obsidian ](https://obsidian.md/ ) — note taking software
2024-02-20 00:51:01 +01:00
- [Bitwarden ](https://bitwarden.com/ ) — client for self-hosted password manager
2023-07-21 18:30:48 +02:00
### Terminal
> There are many clis I use which I did not include here, for the sake of brevity.
- [Neovim ](https://neovim.io/ ) — my editor
- [Neovide ](https://neovide.dev/index.html ) — neovim gui client
- [Vimclip ](https://github.com/hrantzsch/vimclip ) — vim anywhere!
- [Tmux ](https://github.com/tmux/tmux/wiki ) — terminal multiplexer
- [Fish ](https://fishshell.com/ ) — user friendly shell
- [Starship ](https://starship.rs/ ) — shell prompt
2024-02-29 12:45:13 +01:00
- [yazi ](https://github.com/sxyazi/yazi ) — file manager
2024-02-01 00:04:04 +01:00
- [Catgirl ](https://git.causal.agency/catgirl/about/ ) — irc client
2024-02-25 05:51:41 +01:00
- [lazygit ](https://github.com/jesseduffield/lazygit ) — git tui
2023-09-10 17:20:36 +02:00
- Self management:
2024-02-24 03:51:35 +01:00
- [Smos ](https://github.com/NorfairKing/smos ) — selfhosted comprehensive self-management system
2024-02-20 00:51:01 +01:00
- [Intray ](https://github.com/NorfairKing/intray ) — selfhosted GTD capture tool
2023-07-21 18:30:48 +02:00
### Services
2024-04-29 01:47:43 +02:00
![homelab-homepage ](docs/img/homelab-homepage.png )
2024-02-01 00:04:04 +01:00
Most services are served over [tailscale ](https://tailscale.com/ ), using certificates generated by [let's encrypt ](https://letsencrypt.org/ ).
2024-02-24 03:51:35 +01:00
- [Actual ](https://actualbudget.org/ ) — budgeting tool.
2024-02-25 06:38:24 +01:00
- [Commafeed ](https://github.com/Athou/commafeed ) — rss reader
2024-05-11 01:09:43 +02:00
- [Forgejo ](https://forgejo.org/ ) — git forge
2024-02-25 05:51:41 +01:00
- [Grafana ](https://github.com/grafana/grafana ) — pretty dashboards
2024-06-13 16:53:06 +02:00
- [Guacamole ](https://guacamole.apache.org/ ) — remote desktop access
2024-02-25 05:51:41 +01:00
- [Homer ](https://github.com/bastienwirtz/homer ) — server homepage
2024-04-29 01:37:43 +02:00
- [Intray ](https://github.com/NorfairKing/intray ) — GTD capture tool.
- [Invidious ](https://invidious.io/ ) — alternate youtube client
- [Jellyfin ](https://jellyfin.org/ ) — media server
2024-06-13 16:53:06 +02:00
- [Jupyterhub ](https://jupyter.org/hub ) — notebook collaboration suite
2024-05-10 21:50:07 +02:00
- [Microbin ](https://microbin.eu/ ) - code & file sharing service
2024-04-29 01:37:43 +02:00
- [Pounce ](https://git.causal.agency/pounce/about/ ) & [calico ](https://git.causal.agency/pounce/about/calico.1 ) — irc bouncer
- [Prometheus ](https://github.com/prometheus/prometheus ) — metric collector
- [Qbittorrent ](https://www.qbittorrent.org ) — torrent client
- [Radicale ](https://radicale.org/v3.html ) — calendar server
- [Redlib ](https://github.com/redlib-org/redlib ) — alternate reddit client
- [Smos ](https://github.com/NorfairKing/smos ) — a comprehensive self-management system.
- [Syncthing ](https://syncthing.net/ ) — file synchronization
- [Vaultwarden ](https://github.com/dani-garcia/vaultwarden/ ) — password manager
- [Whoogle ](https://github.com/benbusby/whoogle-search#manual-docker ) — search engine
2023-07-21 18:30:48 +02:00
## Hall of fame
2023-06-04 09:12:06 +02:00
2023-09-10 17:20:36 +02:00
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.
2023-06-04 09:12:06 +02:00
2024-08-05 20:31:34 +02:00
- [Wezterm ](https://github.com/wez/wezterm ) — I switched to [Foot ](https://codeberg.org/dnkl/foot ), as wezterm was laggy, unstable, and kept breaking between releases
2024-02-29 12:45:13 +01:00
- [Ranger ](https://github.com/ranger/ranger ) — I switched to [Yazi ](https://github.com/sxyazi/yazi )
2024-02-25 10:46:56 +01:00
- [firenvim ](https://glacambre/firenvim ) - the concept is cool, but I found the whole thing pretty annoying at times
- [venn.nvim ](https://jbyuki/venn.nvim ) — the concept is cool, but I would use it about once a year
- [hydra.nvim ](https://anuvyklack/hydra.nvim ) — I was rarely using it, and it was taking up precious config space
2024-02-25 06:34:40 +01:00
- [winbar.nvim ](https://github.com/fgheng/winbar.nvim ) — I mostly had this here for the looks, so I moved the path it provided to my statusbar
- [treesitter-visual-context.nvim ](https://github.com/haringsrob/nvim_context_vt ) — felt like this was cluttering my screen more than anything
- [Paperplanes.nvim ](https://rktjmp/paperplanes.nvim ) — replaced by a single curl call
- [Eww ](https://github.com/elkowar/eww ) - experimented with eww for a bit, but setup was painful and bars are a bit useless
2024-02-25 05:51:41 +01:00
- [Neogit ](https://github.com/NeogitOrg/neogit ) — was a bit slow / clunky, so I switched to [lazygit ](https://github.com/jesseduffield/lazygit )
2024-05-28 02:39:42 +02:00
- [Slambda ](https://github.com/prescientmoon/slambda ) — custom keyboard chording utility. I retired the project in favour of [kanata ](https://github.com/jtroo/kanata )
2024-02-20 00:51:01 +01:00
- [GPG ](https://gnupg.org/ ) + [pass ](https://www.passwordstore.org/ ) — I switched to [vaultwarden ](https://github.com/dani-garcia/vaultwarden/ )
2024-01-31 20:03:00 +01:00
- [Agenix ](https://github.com/ryantm/agenix ) & [homeage ](https://github.com/jordanisaacs/homeage ) — I switched to [sops-nix ](https://github.com/Mic92/sops-nix )
2023-09-10 17:20:36 +02:00
- [Mind.nvim ](https://github.com/phaazon/mind.nvim ) — self management tree editor. The project got archived, so I switched to [Smos ](https://github.com/NorfairKing/smos ).
- [Null-ls ](https://github.com/jose-elias-alvarez/null-ls.nvim ) — general purpose neovim LSP. The project got archived, so I switched to [formatter.nvim ](https://github.com/mhartington/formatter.nvim ).
- [Wofi ](https://sr.ht/~scoopta/wofi/ ) — program launcher. I switched to [Anyrun ](https://github.com/Kirottu/anyrun ).
2023-11-16 05:43:52 +01:00
- [Alacritty ](https://github.com/alacritty/alacritty ) — terminal emulator. I switched to [Wezterm ](https://wezfurlong.org/wezterm/ ).
2023-09-10 17:20:36 +02:00
- [Xmonad ](https://xmonad.org/ ) — xorg window manager. I switched to [Hyprland ](https://hyprland.org/ ).
2023-07-21 18:30:48 +02:00
- [Polybar ](https://github.com/polybar/polybar ) — desktop bar
2023-09-10 17:20:36 +02:00
- [Rofi ](https://github.com/davatorium/rofi ) — program launcher. I switched to [Wofi ](https://sr.ht/~scoopta/wofi/ ).
- [Spectacle ](https://apps.kde.org/spectacle/ ) — screenshot tool. I switched to [Grimblast ](https://github.com/hyprwm/contrib/tree/main/grimblast ).
- [Chrome ](https://www.google.com/chrome/ ) — web browser. I switched to `firefox` because it offers a better HM module.