commit d9c39bdde4535d8be00dcc575ba0238ec9f23864
parent 734ff2e5a7c1f490ed00fecf416409c518d6fcbb
Author: DAEMON <zer0sec.xp@icloud.com>
Date: Thu, 8 Oct 2026 03:43:15 +0100
added new tools
Diffstat:
9 files changed, 271 insertions(+), 18 deletions(-)
diff --git a/README.md b/README.md
@@ -30,7 +30,7 @@ keybinds, Caelestia as bar/launcher/lock, kitty with tmux-style keys, zsh
through the dotfiles checkout, the general tools, and the secrets. Built from
the vault's `04Tools/NixDaemon-Migration/` material on 2026-10-07.
-The companion repo is [`daemon-sec-dotfiles`](https://gitlab.com/DAEMON-404):
+The companion repo is `daemon-sec-dotfiles` (private, same account):
home-manager links every dotfile from its checkout (`~/git/daemon-sec-dotfiles`)
into `$HOME`, so editing the checkout edits the live config.
@@ -70,11 +70,15 @@ NixDaemon/
│ ├── modules/neovim.nix nvf: Neovim with a small Nix-built plugin set, Rosé Pine, LSPs for this machine's languages
│ ├── modules/prompt.nix starship (two-line, one Rosé Pine colour per section) and fastfetch (NixOS logo)
│ ├── modules/fan.nix `fan`: status and watch without root; max/auto with the clamp watchdog
+│ ├── modules/ssh.nix the ssh key (private half from sops) and ~/.ssh/config
+│ ├── modules/gpg.nix the GPG main key: public in home/gpg/, secret from sops, gpg.conf, trust
+│ ├── modules/git.nix git identity, signing with the main key, aliases, delta
│ ├── modules/gtk.nix Yaru-purple icons, cursor, prefer-dark
│ ├── hypr/*.lua omarchy (shim) · core · looknfeel · defaults · bindings · lid · caelestia
│ ├── kitty/scrollback.lua kitty copy mode as a Neovim buffer
│ ├── caelestia/ scheme.json (dark) · scheme-dawn.json · rose-pine-{dark,dawn}.txt · shell-tokens.json
-│ └── cheats/*.md the cards: nix.md, gpg.md
+│ ├── cheats/*.md the cards: nix.md, gpg.md
+│ └── gpg/daemon-main.pub.asc the main key's public half
└── modules/workstation.nix Claude Code, Claude desktop, Obsidian, gh, glab
```
@@ -113,10 +117,13 @@ them (the repo is jj, colocated with git; `nix-cheat repo`).
### From the repo, without a checkout
+The repo is private, so the reference is the ssh form:
+
```sh
-sudo nixos-rebuild switch --flake gitlab:DAEMON-404/NixDaemon#nixos
-nh os switch gitlab:DAEMON-404/NixDaemon
-nix flake show gitlab:DAEMON-404/NixDaemon
+REPO='git+ssh://git@gitlab.com/DAEMON-404/NixDaemon.git'
+sudo nixos-rebuild switch --flake "$REPO#nixos"
+nh os switch "$REPO"
+nix flake show "$REPO"
```
### Fresh install
@@ -124,7 +131,7 @@ nix flake show gitlab:DAEMON-404/NixDaemon
1. Boot the NixOS live ISO, partition and mount at `/mnt`; generate
`hardware-configuration.nix` with `nixos-generate-config --root /mnt` and
compare it with `hosts/laptop/hardware-configuration.nix` (UUIDs).
-2. `git clone https://gitlab.com/DAEMON-404/NixDaemon && cd NixDaemon`, drop
+2. `git clone git@gitlab.com:DAEMON-404/NixDaemon.git && cd NixDaemon`, drop
the new hardware file into `hosts/laptop/`, `git add` it.
3. `sudo nixos-install --flake .#nixos`, reboot, log in at tuigreet, pick
**Hyprland (UWSM)** once.
@@ -270,6 +277,12 @@ sudo install -D -m 600 -o root -g root ~/.config/sops/age/keys.txt /var/lib/sops
Edit with `sops secrets/secrets.yaml`, declare with `sops.secrets.NAME = { };`,
rebuild. `nix-cheat secrets` has the commands.
+What the file holds today: `ssh_id_ed25519` (the SSH private key, used by
+home/modules/ssh.nix), `gpg_main_secret` (the armored GPG secret key, still
+under its own passphrase, imported by home/modules/gpg.nix on first
+activation), and `example`. So a fresh install needs exactly one secret
+restored by hand, the age key; ssh, gpg and git then come up from the flake.
+
**secretspec** is for a project's runtime secrets: declared next to the
project in `secretspec.toml`, values in the system keyring
(`~/.config/secretspec/config.toml`: provider `keyring`, profile `default`;
diff --git a/home/cheats/nix.md b/home/cheats/nix.md
@@ -38,22 +38,24 @@ sudo nixos-rebuild switch --flake ~/NixDaemon#nixos # same, from any directory
## remote — build straight from the GitLab repo
The flake does not have to be checked out: any `nix` command takes a **flake reference** to the repo.
-`gitlab:DAEMON-404/NixDaemon` is the public repo; `?ref=main` pins a branch, `?rev=<sha>` a commit.
+The repo is **private**, so use the ssh form (the key in ~/.ssh/config is registered on GitLab); `?ref=main` pins a branch, `?rev=<sha>` a commit.
```sh
-sudo nixos-rebuild switch --flake gitlab:DAEMON-404/NixDaemon#nixos # this machine, from the pushed main
-sudo nixos-rebuild boot --flake 'gitlab:DAEMON-404/NixDaemon?ref=main#nixos'
-nh os switch gitlab:DAEMON-404/NixDaemon # nh takes the same reference
-nix build gitlab:DAEMON-404/NixDaemon#nixosConfigurations.nixos.config.system.build.toplevel --no-link --print-out-paths
-nix flake show gitlab:DAEMON-404/NixDaemon # what the repo exports
-nix flake metadata gitlab:DAEMON-404/NixDaemon # which commit nix resolved
-git+https://gitlab.com/DAEMON-404/NixDaemon.git # the long form of the same reference
+REPO='git+ssh://git@gitlab.com/DAEMON-404/NixDaemon.git'
+sudo nixos-rebuild switch --flake "$REPO#nixos" # this machine, from the pushed main
+sudo nixos-rebuild boot --flake "$REPO?ref=main#nixos"
+nh os switch "$REPO" # nh takes the same reference
+nix build "$REPO#nixosConfigurations.nixos.config.system.build.toplevel" --no-link --print-out-paths
+nix flake show "$REPO" # what the repo exports
+nix flake metadata "$REPO" # which commit nix resolved
+# root (sudo) fetches with root's ssh: either run the fetch as you first (nix build …, cached), or give
+# root the key via /root/.ssh/config, or use an https token in ~/.config/nix/netrc (machine gitlab.com …).
```
**Fresh machine, from the live ISO** (disk already partitioned and mounted at /mnt):
```sh
sudo nixos-generate-config --root /mnt --show-hardware-config > hardware-configuration.nix # compare with hosts/laptop/
-git clone https://gitlab.com/DAEMON-404/NixDaemon ~/NixDaemon && cd ~/NixDaemon
+git clone git@gitlab.com:DAEMON-404/NixDaemon.git ~/NixDaemon && cd ~/NixDaemon # ssh key first (see *secrets*)
# copy the new hardware-configuration.nix into hosts/laptop/, git add it, then:
sudo nixos-install --flake .#nixos
```
diff --git a/home/default.nix b/home/default.nix
@@ -13,6 +13,9 @@
./modules/neovim.nix # nvf: Neovim with a small, Nix-built plugin set
./modules/prompt.nix # starship prompt and fastfetch card, Rosé Pine, NixOS logo
./modules/fan.nix # `fan`: status/watch without root, max/auto with a clamp watchdog
+ ./modules/ssh.nix # the ssh key (sops) and ~/.ssh/config
+ ./modules/gpg.nix # the GPG main key (public in-repo, secret via sops) and gpg.conf
+ ./modules/git.nix # git identity, signing with the main key, delta
./modules/gtk.nix # Yaru-purple icons, cursor, prefer-dark
];
diff --git a/home/gpg/daemon-main.pub.asc b/home/gpg/daemon-main.pub.asc
@@ -0,0 +1,52 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+wi7hMx1q26s=
+=LAhI
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/home/modules/git.nix b/home/modules/git.nix
@@ -0,0 +1,81 @@
+# home/modules/git.nix — git, from the flake (was ~/.gitconfig written by the
+# bootstrap script plus the dotfiles' .config/git, which is not linked).
+#
+# Identity: DAEMON-404 <zer0sec.xp@icloud.com>; every commit and tag signed
+# with the GPG main key (home/modules/gpg.nix), which GitLab already knows.
+# Credentials for https remotes come from gh / glab; clones use ssh anyway.
+# delta paints diffs (Rosé Pine, from the dotfiles' git config).
+{ ... }:
+{
+ programs.git = {
+ enable = true;
+ signing = {
+ key = "3374F5B7E65B8CDB7949E2EBBFB092454FAFECB4";
+ format = "openpgp";
+ signByDefault = true; # commit.gpgSign and tag.gpgSign
+ };
+ settings = {
+ user = {
+ name = "DAEMON-404";
+ email = "zer0sec.xp@icloud.com";
+ };
+ alias = {
+ co = "checkout";
+ br = "branch";
+ ci = "commit";
+ st = "status";
+ lg = "log --oneline --graph --decorate -20";
+ };
+ init.defaultBranch = "main";
+ pull.rebase = true;
+ push.autoSetupRemote = true;
+ diff = {
+ algorithm = "histogram";
+ colorMoved = "default";
+ mnemonicPrefix = true;
+ };
+ commit.verbose = true;
+ column.ui = "auto";
+ branch.sort = "-committerdate";
+ tag.sort = "-version:refname";
+ rerere = {
+ enabled = true;
+ autoupdate = true;
+ };
+ merge.conflictstyle = "zdiff3";
+ core = {
+ autocrlf = "input";
+ safecrlf = "warn";
+ };
+ credential = {
+ "https://github.com".helper = "!gh auth git-credential";
+ "https://gist.github.com".helper = "!gh auth git-credential";
+ "https://gitlab.com".helper = "!glab auth git-credential";
+ };
+ };
+ };
+
+ programs.delta = {
+ enable = true;
+ enableGitIntegration = true;
+ options = {
+ navigate = true;
+ light = false;
+ line-numbers = true;
+ side-by-side = false;
+ hyperlinks = true;
+ syntax-theme = "none";
+ minus-style = "\"#eb6f92\" \"#26233a\"";
+ minus-emph-style = "bold \"#eb6f92\" \"#403d52\"";
+ plus-style = "\"#9ccfd8\" \"#26233a\"";
+ plus-emph-style = "bold \"#31748f\" \"#403d52\"";
+ line-numbers-minus-style = "\"#eb6f92\"";
+ line-numbers-plus-style = "\"#31748f\"";
+ line-numbers-zero-style = "\"#6e6a86\"";
+ file-style = "\"#31748f\" bold";
+ file-decoration-style = "\"#c4a7e7\" ul";
+ hunk-header-style = "\"#eb6f92\" bold";
+ hunk-header-decoration-style = "\"#6e6a86\" box";
+ };
+ };
+}
diff --git a/home/modules/gpg.nix b/home/modules/gpg.nix
@@ -0,0 +1,51 @@
+# home/modules/gpg.nix — the GPG main key and gpg.conf, from the flake.
+#
+# public key home/gpg/daemon-main.pub.asc → imported with ultimate trust (programs.gpg.publicKeys)
+# secret key sops secret gpg_main_secret (the armored export, still under its own passphrase):
+# imported into the keyring on activation if the keyring lacks it
+# gpg.conf programs.gpg.settings (the gpg-cheat `setup` defaults)
+#
+# The agent itself is NixOS's (programs.gnupg.agent, pinentry-gnome3), so
+# services.gpg-agent is deliberately not enabled here.
+# Key: daemon (Main_Key) <zer0sec.xp@icloud.com>, RSA 4096, 2025-12-30, the one on GitLab.
+{ config, pkgs, lib, ... }:
+let
+ fpr = "3374F5B7E65B8CDB7949E2EBBFB092454FAFECB4";
+in
+{
+ sops.secrets.gpg_main_secret = { };
+
+ programs.gpg = {
+ enable = true;
+ mutableKeys = true; # other people's keys and new subkeys stay editable
+ mutableTrust = true;
+ publicKeys = [
+ { source = ../gpg/daemon-main.pub.asc; trust = 5; }
+ ];
+ settings = {
+ default-key = fpr;
+ default-recipient-self = true;
+ keyid-format = "0xlong";
+ with-fingerprint = true;
+ with-subkey-fingerprints = true;
+ personal-cipher-preferences = "AES256 AES192 AES";
+ personal-digest-preferences = "SHA512 SHA384 SHA256";
+ cert-digest-algo = "SHA512";
+ no-emit-version = true;
+ no-comments = true;
+ keyserver = "hkps://keys.openpgp.org";
+ auto-key-locate = "local,wkd";
+ trust-model = "tofu+pgp";
+ };
+ };
+
+ # Import the secret key once (idempotent: skipped when the keyring has it).
+ # Runs after sops-nix has decrypted the secrets.
+ home.activation.gpgMainKey = lib.hm.dag.entryAfter [ "sops-nix" ] ''
+ if [ -r "${config.sops.secrets.gpg_main_secret.path}" ] \
+ && ! ${pkgs.gnupg}/bin/gpg --batch --list-secret-keys ${fpr} >/dev/null 2>&1; then
+ run ${pkgs.gnupg}/bin/gpg --batch --quiet --import "${config.sops.secrets.gpg_main_secret.path}" \
+ && echo "gpg: imported the main secret key ${fpr}"
+ fi
+ '';
+}
diff --git a/home/modules/ssh.nix b/home/modules/ssh.nix
@@ -0,0 +1,46 @@
+# home/modules/ssh.nix — the SSH key and client config, from the flake.
+#
+# The private key is a sops secret (secrets/secrets.yaml: ssh_id_ed25519;
+# `nix-cheat secrets`). At login sops-nix decrypts it with the age key into
+# the runtime secrets dir and ~/.config/sops-nix/secrets/ssh_id_ed25519 points
+# there; ~/.ssh/config names that path, so a fresh machine has a working key
+# as soon as ~/.config/sops/age/keys.txt is restored. The public half is
+# plain text in ~/.ssh/id_ed25519.pub (comment daemonsec@nixos; registered on
+# gitlab.com as "nixos", auth and signing, and glab's git_protocol is ssh).
+#
+# A plain copy from before this module may still sit at ~/.ssh/id_ed25519;
+# nothing reads it any more.
+{ config, ... }:
+let
+ key = config.sops.secrets.ssh_id_ed25519.path;
+in
+{
+ sops.secrets.ssh_id_ed25519 = { }; # → %r/secrets.d/…, mode 0400 (ssh is happy with that)
+
+ home.file.".ssh/id_ed25519.pub".text = ''
+ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAsXOt8jkVBgL2ANFgkftVfRlswxBvBUM33Tv/bS+I5Z daemonsec@nixos
+ '';
+
+ programs.ssh = {
+ enable = true;
+ enableDefaultConfig = false;
+ settings = {
+ "gitlab.com" = {
+ User = "git";
+ IdentityFile = key;
+ IdentitiesOnly = "yes";
+ };
+ "github.com" = {
+ User = "git";
+ IdentityFile = key;
+ IdentitiesOnly = "yes";
+ };
+ "*" = {
+ IdentityFile = key;
+ AddKeysToAgent = "yes";
+ ServerAliveInterval = 30;
+ HashKnownHosts = "no";
+ };
+ };
+ };
+}
diff --git a/home/modules/tools.nix b/home/modules/tools.nix
@@ -98,7 +98,6 @@ in
dust
duf
procs
- delta
difftastic
hyperfine
glow
@@ -116,4 +115,7 @@ in
localsend # phone ↔ laptop file drops on the LAN; port 53317 is open in hosts/laptop/default.nix
vesktop # Discord client; its config is linked from the dotfiles (dotfiles.nix)
];
+
+ # Browser
+ programs.floorp.enable = true;
}
diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml
@@ -3,6 +3,9 @@
#ENC[AES256_GCM,data:tM+6SNM68Ic6u4+prSUMzOZHnBzcffTZdlDyopfXDEuIaBxUofzyL1BhYsojlFHAZ34GXVZ3feBT+INw72d1jH1y/HJX7aJ3NnRKfBhV,iv:pfuzt7HNngh72wSmuqY23l1rrKBYY1A7sHa318ITBsA=,tag:PZXXy8nmNMtsH36zsD+09A==,type:comment]
#ENC[AES256_GCM,data:a2p5hr+IkHu5tV8yGp/BrT6Lo8NGpafVVv6AXuVVHqQxGjz1F1JCm2udrOTNYUjfq5ktUALQZxtvFjRJuFNoKcGgaDf8luu5cA==,iv:PWN3vdbdD7fSuaKs7o47c/Ynxgxdr8ZlIwRDCRiz720=,tag:/rJ8dymNnO7Hnjc1uIow3w==,type:comment]
example: ENC[AES256_GCM,data:EgrtVBB9Lt+pu0u3g9DP7Xwzr5PktqBr4vLw50rn/YlPVdMUzTgO/JmVgyVmjBlFXZySHDk=,iv:lFC1wvWwTdvFFbnXVNeXZGV5nGNCWFHq9kvBNn9bA2U=,tag:ta6b1cPg5MUimd7rRdT1Xw==,type:str]
+gpg_main_secret: ENC[AES256_GCM,data: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,iv:WJKJp6pacZEEjgJ1jN7vZW6HezWC/2Ed17kMWfVMGpM=,tag:b/vcH8vTGSW2d2AlGMY1kA==,type:str]
+ssh_id_ed25519: ENC[AES256_GCM,data:teoDa3F5l+/muZdHrPDYmAxMnxrlERywT+lnuCDan6uVozQ3sNi+JKfLPFfkl99M7OI+qSl/pJQBgYgCJPcWf3bW7P9sXE00pHDciMc59OGpyTRkVQ7m+W30IM6NAJXjIdRidzrVCeuz52TZMsuswzsKX8fn/M0biRFC0yK6WRnpRpeFOCaL2HW95gZv8ppcyPk/3PB9xby/0Y6AUhjC1GKztt+ZoT+yhkG4f14svSPaHWMuKaS5CEt0Lr30SZWf1Fk0DnhkWH8Y+k/q/Pa4iKhxsUheEngpOe4N3cld5reWl52BEHMAkN5BWptX4XjNhRHQzu7oO+xSeoKX+8ieA7W7HWMnqV9WPHhxwRfdgrJk2IO+XjrQCoi/DAgTbwRT0qHD/auyTYzYFn1ymcw8V0GlxIG33KzeDcqB1OrU7pOpyxqnRMRMM4FiKQL83GGQKTxSQ1Mn3EVDJpLAmLa4xp5kxbh+v7ydtZT9qzbwcjfRAiLbmA1MBYy8+LyCpHAMqsGLjMXolxint2a9I97sUUH5xVaS67wfoTfv,iv:NJmXY04ccxJ+KLfWT3r6nOpITraN1k2gMYbcyMX/gMw=,tag:w+ytNiN+eDOiWe8LfE10lQ==,type:str]
+ssh_id_ed25519_pub: ENC[AES256_GCM,data:rwwK/75DFSW46WIVlt869GebYoxLDmiIIxIzDkM/rDdW6A+JXPfgZrl1T2UwJ+F4+c78cQ5Q4rWOzibP+SOFZn2dgAoXyZvX0fqYBn0K0emnFHxuOEV9MGX1qGZmToBA+w==,iv:9EA7Py4noOuyzG2A8YKlAA6z6ZGDoDQTX3ksEBegp1I=,tag:/eb/8oOFAW0s7fGmIXO+jA==,type:str]
sops:
age:
- enc: |
@@ -14,7 +17,7 @@ sops:
NV86EcQtCT8AQqgtugSBUOjmZU6D45/rhEXAM98yP01b8Iw2HhEAuw==
-----END AGE ENCRYPTED FILE-----
recipient: age1pu5wcvqqh92xr6ces8zmj4xvs52v7yfm4jsfcxm3z82a32u9n97qesldfv
- lastmodified: "2026-10-08T01:04:15Z"
- mac: ENC[AES256_GCM,data:glJkL/drRDrChgo/69OXHe/nwQ99DCZXeWs92EDZn8EcqJbgKU+QoSEeU4THB6e0OYjRRbUvXtMM6vUbQ638UyT4ueDlxEqAsEpfN23/56GTdoqiqj/JiDRPwr5xFq2R09itmrnjjy1Tt3zodLL/nTmQQ9Sm6CONeeRwvoP9gnQ=,iv:+X8NyDUYY8NySWUaYfBGPTPFAa2YJHaz9gT/5pp6u8U=,tag:W4utRNHzEL4oXRjW0SowLw==,type:str]
+ lastmodified: "2026-10-08T02:44:18Z"
+ mac: ENC[AES256_GCM,data:9H5aSdEmvOaqNxx4Vg7alAC8qc4/RubTX5OHmFQwXGRK2FTAiakQT+uvEdBo7ooGv4bGafuRpiAORmb4ntYYiEvtTPsjw3tEPU5MDITNVtCDLS3U5kgRTCi8PGmb9xQqy3ZzQx0rCtnSssrMYdFcpF2hBN5eeS7eUEuDqlI00P0=,iv:PI3PHmR0oyiPKRLmSOXrFEvnVsCn8Z3Cekap3G9X1Xc=,tag:CytrngeW5P8vDp2/2u1YYw==,type:str]
unencrypted_suffix: _unencrypted
version: 3.13.3