118 Commits
Author SHA1 Message Date
finn.markwitz 6c637b7d2a chore: Flake & Mibook Desktop Config 2026-10-13 11:33:29 +02:00
marthsincemelee ec01840c03 chore: Disable Desktop for Mibook 2026-10-13 10:24:47 +02:00
marthsincemelee d4025b39f6 chore: App/Dev-App Cleanup 2026-10-13 10:12:48 +02:00
finn.markwitzandClaude Sonnet 5 4de92dcbe8 fix(nix): stop automatic rebuilds and nightly GC from tripping GitHub's rate limit
autoUpgrade was silently failing daily on both hosts (legacy channel path,
no --flake set) without reaching the network — disabled outright since
rebuilds should only happen manually. Separately, nix-gc.timer's nightly
sweep was deleting eval-time-only flake input sources (not part of the
runtime closure), forcing the next evaluation to cold-refetch hermes-agent's
entire dependency tree from GitHub in one burst, which alone was enough to
hit the unauthenticated codeload rate limit. keep-outputs/keep-derivations
stop GC from evicting those sources.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TJS8qsYPXSUm5mdWGdaHjF
2026-10-05 14:35:19 +02:00
finn.markwitz eecb7fa2b2 Merge pull request 'Feat/jupiter seerr rename' (#16) from feat/jupiter-seerr-rename into feat/hermes-webpage-port
Reviewed-on: #16
2026-10-04 18:36:35 +02:00
finn.markwitz 07a1d8ee62 feat(mibook): open port 47823 for hermes ad-hoc webpage hosting
Distinct from the existing 9119 dashboard port — this lets the agent
serve one-off pages to devices on the local network.
2026-09-26 08:15:58 +02:00
finn.markwitzandClaude Sonnet 5 565ec2bf39 feat(jupiter): rename jellyseerr profile to seerr
Jellyseerr was rebranded upstream to Seerr (seerr-team/seerr), and
nixpkgs now aliases services.jellyseerr to services.seerr with an
identical state directory, so this is a same-data rename. Also fixes
systemd.services.jellyseerr.after, which was a silent no-op since the
underlying unit has always been named seerr.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019MLWL7mWHCV6UGfzmhnfqN
2026-09-22 11:51:02 +02:00
finn.markwitzandClaude Sonnet 5 d219f2b61c feat(mibook): add swapfile and nodejs dev tooling
Add an 8G swapfile for headroom during nix builds (7.7G RAM, no prior
swap) and bring nodejs (bundles npm) into the development profile.
Also picks up latest flake.lock input updates.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C5fRUDLRzDhoKhEqa69cyR
2026-09-21 15:13:03 +02:00
finn.markwitz 9dbd6ff71d Merge branch 'main' into feat/sops-nix 2026-09-14 13:06:33 +02:00
finn.markwitzandClaude Sonnet 5 31e1910d75 fix(mibook): import hermes-agent module from the profile, not machines/configuration.nix
machines/configuration.nix wired hermes-agent.nixosModules.default into
mibook's mibook-only modules list. modules/environments/default.nix is
machine-agnostic, so jupiter still evaluated a
services.hermes-agent = lib.mkIf false { ... } definition for an option it
never declared as existing — NixOS errors on that regardless of mkIf's
condition, breaking nixosConfigurations.jupiter (and the repo's sole CI
job) entirely.

Fix: import the upstream module unconditionally from inside
modules/environments/hermes-agent/default.nix itself, so the option is
declared everywhere modules/environments/default.nix loads, and only ever
turned on where my.profiles.hermes-agent.enable = true (mibook). Also adds
users.users.finn.extraGroups = [ "hermes" ], required for the hermes CLI to
be usable per the corrected design. machines/configuration.nix no longer
mentions hermes-agent.

Deviates from the reconciled spec/plan text in one respect: uses `self`
(from specialArgs) instead of `inputs` (from _module.args) to reach the
flake input inside `imports`. Using `inputs` there reproduced infinite
recursion — NixOS resolves a module's imports before _module.args
assignments are merged, so an import list cannot depend on an arg that
itself comes from config. `self` is available at import-time via
specialArgs, `inputs` is not, in this repo's wiring. See report for detail.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vbvwg3Qt2u9nbkEA3wL17S
2026-09-08 17:50:11 +02:00
finn.markwitz 731678ecac feat(mibook): add Hermes Agent profile module 2026-09-08 17:20:40 +02:00
finn.markwitz a00916864c feat(mibook): decrypt placeholder secret via host age key
Proves the sops-nix pipeline end to end on mibook: encrypts a
throwaway secret to the operator + mibook host keys, declares it in
machines/mibook/secrets.nix, and verifies it decrypts to
/run/secrets/placeholder (root:root, 0400) on nixos-rebuild switch.

Also removes the dead `let secrets = config.sops.secrets;` binding
from both environments.nix files — leftover from an earlier abandoned
plan, never referenced.
2026-09-08 15:43:45 +02:00
finn.markwitz 3ab8bfbb91 feat(sops): add sops-nix input, core module and devShell tooling
Wires sops-nix into every machine via machines/core/sops.nix so hosts
decrypt with their existing SSH host key. Adds a devShell exposing
sops/age/ssh-to-age for the operator workflow, which also fixes .envrc's
previously no-op `use flake`.
2026-09-08 15:43:36 +02:00
finn.markwitz b96d30edd7 config: Futher Poweroptions to deny hibernate 2026-09-03 08:19:07 +02:00
finn.markwitz a7ffcc4648 feat: Enable Claude on Jupiter 2026-09-03 08:18:39 +02:00
finn.markwitz 652630cfe4 config: Jupiter Domain 2026-08-13 17:22:58 +02:00
finn.markwitz e9a5781944 feat(jupiter): add native Immich profile module 2026-08-05 16:39:07 +02:00
finn.markwitz c7392f2dd9 feat: Athena Firewall 2026-08-05 16:15:49 +02:00
finn.markwitzandClaude Opus 4.8 bf874d962a revert(mibook): remove boot-time terminal/desktop choice feature
Back out the entire "choose terminal-only vs KDE at boot" work. The first
attempt (default multi-user.target + on-demand desktop) locked mibook out —
it is WiFi-only with credentials in KWallet, so a headless boot has no
network and no SSH. The follow-up specialisation redesign is no longer
wanted either.

mibook returns to plain always-KDE boot (the pre-feature baseline):
- machines/mibook/configuration.nix: drop specialisation.terminal and the
  NetworkManager-wait-online override.
- machines/mibook/environments.nix: drop kde-desktop.startOnBoot.
- modules/environments/kde-desktop/default.nix: drop the startOnBoot option.
- remove the boot-desktop-choice design spec.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S1wvPy5kbGp8pUQX61WBCY
2026-07-28 14:51:31 +02:00
finn.markwitz f01b1f2c4f Merge pull request 'Feat/jellyfin hw transcoding' (#3) from feat/jellyfin-hw-transcoding into main
Reviewed-on: #3
2026-07-27 09:56:11 +02:00
finn.markwitzandClaude Opus 4.8 7e4407a1f8 feat(mibook): boot to terminal, launch KDE on demand
Add my.profiles.kde-desktop.startOnBoot (default true, no change for
existing consumers). When false, boot to multi-user.target, keep SDDM
out of any boot target's wants, and provide a 'desktop' command that
starts the display manager on demand. Enable this on mibook.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CfozKLQdUh5TzqyjSigLUx
2026-07-27 09:48:13 +02:00
marthsincemeleeandClaude Sonnet 5 86e7f9c1a8 fix(jupiter): add Intel compute-runtime for OpenCL HDR tone-mapping
HDR HEVC transcodes were failing with "Failed to get number of OpenCL
platforms: -1001" (CL_PLATFORM_NOT_FOUND_KHR). The tonemap_opencl
filter jellyfin-ffmpeg uses for HDR-to-SDR tone-mapping needs an OpenCL
ICD, which intel-media-driver/vpl-gpu-rt don't provide on their own.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 17:34:36 +02:00
marthsincemeleeandClaude Sonnet 5 adb7fcfad7 fix(jupiter): add oneVPL/MFX runtime for QSV hardware transcoding
HEVC HDR transcodes were failing with "Error creating a MFX session: -9"
because intel-media-driver only provides VAAPI, not the separate
oneVPL/MFX runtime QSV needs to create a hardware session.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-26 17:27:31 +02:00
finn.markwitzandClaude Opus 4.8 4851f745d8 feat(mibook): do nothing on lid close while on AC power
Ship a system-wide PowerDevil default (/etc/xdg/powerdevilrc) setting the
AC lid-close action to "do nothing" (LidAction=0). Battery behavior is left
at the default (suspend).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KbZoyXq6J8v2eqC9yn5Vcy
2026-07-21 17:42:47 +02:00
marthsincemelee 6c5f61997d fix: Homepage Domain 2026-06-27 15:45:06 +02:00
finn.markwitz af2655f9e2 Merge branch 'master' into 'feature/ha-zbt-2-thread'
# Conflicts:
#   machines/mibook/configuration.nix
2026-06-09 06:37:07 +00:00
marthsincemelee 9ed0fb6f07 feat: SSH for mibook 2026-05-25 12:33:40 +02:00
marthsincemelee ff6e25b708 fix: Duplicated NVIDIA PCI 2026-05-25 12:16:59 +02:00
marthsincemeleeandClaude Sonnet 4.6 2e5568611a feat(mibook): add claude-code profile module
Installs claude-code (stable), ripgrep, fd, gh, and jq for user finn.
Includes annotation for future headless service upgrade path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 12:03:54 +02:00
finn.markwitz 1444912326 config: Disable Prime Sync MiBook 2026-05-17 14:23:55 +02:00
marthsincemeleeandClaude Opus 4.7 6251c8edef feat(home-assistant): import openthread-border-router module from unstable
Pulls the services.openthread-border-router NixOS module directly from
nixpkgs-unstable since it isn't in 25.11 yet. Service stays disabled
in this commit; configuration follows.

Also promotes `self` from `_module.args` to `specialArgs` in
machines/configuration.nix, since `imports` are evaluated before
`config` and so can't reach `_module.args.self`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-10 18:52:43 +02:00
finn.markwitz df05fe451e feature/homepage widgets 2026-05-05 11:27:44 +00:00
finn.markwitz 004f04eca5 Merge branch 'homeassistant' into 'master'
Homeassistant

See merge request finn.markwitz/nixos!11
2026-04-20 14:08:40 +00:00
finn.markwitz dc65b044cf feat(Nvidia): PRIME Sync 2026-02-12 16:07:30 +01:00
finn.markwitz 3ce8459904 feat(Nvidia): PRIME Sync 2026-02-09 13:35:00 +01:00
finn.markwitz 78f540a776 feat(Hardware): Nvidia GPU Support 2026-02-09 13:34:48 +01:00
finn.markwitz f833439e0f feat: MiBook Config Update 2026-02-09 13:34:25 +01:00
finn.markwitz 9974bd49ac refactor(Home-Assistant): module naming 2026-01-08 16:24:28 +01:00
finn.markwitz b300f39c03 feat: Homeassistant 2026-01-08 16:22:24 +01:00
finn.markwitz 97633af170 chore(OS Update): 25.11
chore: Replaced scikitlearn with scikit-learn
chore: removed gitAndTools
chore: Flake Update
chore: Replaced vaapiVdpau with libva-vdpau-driver
chore: Update Nixpkgs to 25.11
2026-01-05 18:53:52 +00:00
marthsincemelee 9ec2df1afa feat: Homepage 2025-12-23 17:55:17 +01:00
marthsincemelee bc87844e76 feat: Homepage 2025-12-23 17:38:02 +01:00
finn.markwitz 24a211330a Kernel modules troubleshoot 2025-10-27 07:40:22 +00:00
finn.markwitz 49371f2e2b feat: fwupd 2025-08-12 21:54:20 +02:00
finn.markwitz 256fdc850b feat: Updated Drive IDs for new M2 SSD 2025-03-24 13:00:39 +01:00
finn.markwitz ce4e8225f9 feat: Tailscale VPN Setup 2025-02-18 20:53:02 +01:00
finn.markwitz dc2abe6ff1 refactor: Formatting 2025-02-07 22:13:20 +01:00
finn.markwitz c3f4470f80 refactor: Apps & Development 2025-02-07 22:01:18 +01:00
finn.markwitz c407e1e9ee config: Swap to KDE 2025-02-04 21:05:49 +01:00
finn.markwitz 514ee3c137 feat: Developent Environment 2025-01-28 23:32:53 +01:00