jory f489259af9
CI / Flake check (aarch64-linux) (push) Failing after 20m53s
CI / Flake check (x86_64-linux) (push) Failing after 3m20s
CI / Pre-commit checks (x86_64-linux) (push) Failing after 2m44s
feat: Add fingerprint scanner support and modularize work configurations
- Add fingerprint.nix hardware module with TOD driver support
- Create separate laptop-work configuration with Cisco, Himmelblau, and MDATP work modules
- Move work-specific modules from shared to laptop-work profile
- Change work module enable defaults to false for better security-by-default
- Add MDATP support with enhanced modular structure
2026-07-19 10:21:03 +02:00
2026-03-31 16:53:11 +02:00

芯 (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

# 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.yaml with 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/ via home/terminal/shell/fish.nix
  • SSH config references /run/secrets/hetzner_server and /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.

S
Description
No description provided
Readme 17 MiB
Languages
Nix 94%
Lua 4.2%
Shell 1.8%