1
Fork 0
satellite/README.md

167 lines
12 KiB
Markdown
Raw Normal View History

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
- 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](https://grahamc.com/blog/erase-your-darlings), automatic let's-encrypt certificates, tailscale, syncthing, vaultwarden, whoogle, pounce, calico, actual & more.
- 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
2024-09-24 06:30:00 +02:00
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:
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
- [lapetus](./hosts/nixos/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
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 |
2024-09-24 06:30:00 +02:00
| [dns](./dns) | Directory for parts of my octodns nix-based wrapper |
2023-12-12 14:32:06 +01:00
| [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-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
2024-09-24 06:30:00 +02:00
- [zfs](https://openzfs.org/wiki/Main_Page) — filesystem (on my server)
- [btrfs](https://btrfs.readthedocs.io/en/latest/) — filesystem (on my laptop)
2023-07-21 18:30:48 +02:00
### Input handling
- [kanata](https://github.com/jtroo/kanata) — software-level keyboard layout customizer. One of the few such programs with support for chording
- [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
2024-09-24 06:30:00 +02:00
- [Gruvbox](https://github.com/morhetz/gruvbox) — yet another theme I use
2023-07-21 18:30:48 +02:00
- [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
- [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!
- [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
- [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
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
- [Grafana](https://github.com/grafana/grafana) — pretty dashboards
- [Homer](https://github.com/bastienwirtz/homer) — server homepage
2024-04-29 01:37:43 +02:00
- [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
- [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
2024-09-24 06:30:00 +02:00
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.
2023-06-04 09:12:06 +02:00
- [Tmux](https://github.com/tmux/tmux/wiki) — I now simply use multiple WM windows / no longer persist sessions
- [Intray](https://github.com/NorfairKing/intray) — The server is no longer open source
- [Guacamole](https://guacamole.apache.org/) — I had little reason to keep this around on top of tailscale
- [htop](https://htop.dev/) — I switched to [bottom](https://github.com/ClementTsang/bottom), as the interface felt way cleaner
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
- [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
- [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)
- [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.