31de8eccb00bd2f6f6f476ca677e41c7c6dac01a
fixed notification volume/brightness removed some gnome applications and updated system + .gitignore
fixed notification volume/brightness removed some gnome applications and updated system + .gitignore
芯 (Shin)
Personal NixOS + Home Manager flake. Builds for x86_64-linux and aarch64-linux. Uses flake-parts.
| Host | Target | WM | Notes |
|---|---|---|---|
desktop |
x86_64 | Niri | Full graphical |
laptop |
x86_64 | Niri | Battery, bluetooth, location |
tty |
x86_64 | — | Headless server |
hetzner |
x86_64 (24.05) | — | Isolated server, disko + sops-nix |
Quick Install (with disko — recommended)
# Boot NixOS minimal ISO, then:
sudo -i
git clone --depth 1 https://github.com/someone/shin /mnt/etc/nixos
# Auto-partition, format, mount (replace 'laptop' with 'desktop'/'tty')
nix --extra-experimental-features "nix-command flakes" \
run github:nix-community/disko -- \
--mode destroy,format,mount /mnt/etc/nixos/hosts/aesthetic/disko-config.nix
# Generate hardware config
nixos-generate-config --dir /mnt/etc/nixos/hosts/aesthetic
rm /mnt/etc/nixos/hosts/aesthetic/configuration.nix
# Install
cd /mnt/etc/nixos
nixos-install --flake .#laptop
BIOS vs UEFI: Set in hosts/aesthetic/default.nix:
boot.loader.limine.bootMode = "bios"; # or "uefi"
Post-Install: Secrets
# Reboot into new system, then:
sops secrets/secrets.yaml
# Fill in:
# hetzner_server — SSH private key for root@severijnse.eu
# gitea_laptop — SSH private key for git@git.severijnse.eu:222
# discordo, openrouter, github, twt, gemini, context7, exa — API tokens
sudo nixos-rebuild switch --flake /etc/nixos#laptop
Daily Workflow
# Rebuild after changes
sudo nixos-rebuild switch --flake /etc/nixos#laptop
# Or with nh (cleaner)
NH_FLAKE=/etc/nixos nh os switch
# Update flake inputs
nix flake update --flake /etc/nixos
# Format Nix code
alejandra /etc/nixos
Key Components
| Layer | Tool | Config |
|---|---|---|
| WM | Niri | home/window-managers/niri/ |
| Shell | Fish + Starship | home/terminal/shell/ |
| Terminal | Ghostty | home/terminal/emulators/ghostty.nix |
| Panel | Noctalia | home/services/wayland/noctalia.nix |
| Files | Yazi | home/terminal/software/yazi.nix |
| Editor | Helix | home/editors/helix/ |
| Secrets | sops-nix (age via SSH host key) | secrets/secrets.yaml |
| Boot | Limine (BIOS/UEFI) | system/core/limine.nix |
Flake Structure
├── flake.nix # Inputs, outputs, perSystem
├── hosts/
│ ├── default.nix # Host definitions (desktop, laptop, tty, hetzner)
│ └── aesthetic/ # Laptop/desktop hardware config
├── home/ # Home Manager (user config)
│ ├── terminal/ # Shell, emulators, CLI tools
│ ├── editors/ # Helix, Zed, Neovim
│ ├── window-managers/ # Niri, keybinds
│ └── services/ # User systemd services
├── system/ # NixOS modules
│ ├── core/ # Boot, kernel, security
│ └── services/ # System services
├── servers/
│ └── hetzner/ # Isolated server (24.05, disko, sops)
├── secrets/
│ ├── secrets.yaml # sops-encrypted (age via SSH host key)
│ ├── age.key # Age private key (for sops decryption)
│ └── .sops.yaml # sops creation rules
└── pkgs/ # Custom packages/overlays
sops-nix Details
- Encrypts
secrets/secrets.yamlwith age using the SSH host ed25519 key (/etc/ssh/ssh_host_ed25519_key) - Auto-decrypts to
/run/secrets/at activation - Fish loads secrets from
/run/secrets/viahome/terminal/shell/fish.nix - SSH config references
/run/secrets/hetzner_serverand/run/secrets/gitea_laptop
To re-encrypt for a new host key:
cd /etc/nixos
nix shell nixpkgs#sops -c sops --encrypt --age "$(nix shell nixpkgs#ssh-to-age -c ssh-to-age < /etc/ssh/ssh_host_ed25519_key.pub)" secrets/secrets.yaml > secrets/secrets.yaml.new
mv secrets/secrets.yaml.new secrets/secrets.yaml
Credits
Inspired by: hjem, owl4ce, Siduck, Rxyhn.
License
MIT — use freely, credits appreciated.
Description
Languages
Nix
94%
Lua
4.2%
Shell
1.8%