aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/nix/host.nix
Commit message (Collapse)AuthorAgeFilesLines
* refactor(mail): migrate protonmail-bridge from pacman to nixLibravatar sommerfeld2 days1-0/+9
| | | | | | | | | | | | | | | Move the ProtonMail Bridge off the AUR protonmail-bridge-core package and onto nix/host.nix, consistent with the other migrated user-leaf tools. Since the AUR package previously supplied the systemd user unit (customized via a drop-in), ship a repo-owned dot_config/systemd/user/protonmail-bridge.service instead: it runs the nix binary by absolute %h/.nix-profile/bin path with --noninteractive and folds the former drop-in's PASSWORD_STORE_DIR into the unit, so the now-redundant protonmail-bridge.service.d/override.conf is removed. Drop protonmail-bridge-core from meta/base.txt (the git send-email Perl prereqs stay). No vm.nix change: the bridge is host-only and user units are not symlinked on the headless VM.
* fix(systemd): use absolute %h/.nix-profile/bin paths in user unitsLibravatar sommerfeld2 days1-2/+6
| | | | | | | | | | | | | | The previous environment.d fix was insufficient: even with the nix profile on the --user manager's PATH (confirmed via `systemctl --user show-environment`), bare-name ExecStart= still fails 203/EXEC. systemd's --user manager does not resolve a bare ExecStart binary against the imported/environment.d PATH. Invoke each unit's main binary by absolute path %h/.nix-profile/bin/<name> (waybar, swayidle, swayrd, inhibridge, wl-paste, wob). %h expands to $HOME at unit load. Secondary lookups those binaries/scripts perform (cliphist, swaymsg, playerctl) still rely on PATH, which environment.d provides — so that file stays, with its comment corrected to reflect this split.
* fix(nix,meta): keep imv/wl-mirror/sparrow on pacman (OpenGL context)Libravatar sommerfeld2 days1-13/+6
| | | | | | | | Same root cause as ghostty: imv (OpenGL), wl-mirror (EGL) and sparrow (JavaFX/OpenGL) are GL/EGL apps that can't find the system Mesa/DRI driver when built by nix on a non-NixOS host. Remove them from nix/host.nix; add imv + wl-mirror to meta/base.txt (sparrow already lives in meta/btc.txt as sparrow-wallet). Refresh the stale base.txt media comment accordingly.
* fix(nix,meta): keep ghostty on pacman to fix missing OpenGL contextLibravatar sommerfeld2 days1-2/+6
| | | | | | | | ghostty is a GPU/OpenGL terminal. Nix-built GL apps on a non-NixOS host can't locate the system Mesa/DRI driver (FHS /usr/lib drivers don't match nix's search paths), so the nix-migrated ghostty failed to start with "missing OpenGL context". Move it back to meta/base.txt (pacman) so it links against system Mesa. Same caveat flagged for imv/wl-mirror/sparrow.
* feat(nix): migrate user-leaf tools to host profileLibravatar sommerfeld2 days1-10/+114
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pull every pacman/AUR entry that is (1) packaged in nixpkgs and (2) free of tight system coupling out of meta/base.txt and into nix/host.nix. System coupling = setuid, /usr/lib/systemd/system unit, udev rule, /usr/share/dbus-1/services file, /usr/share/wayland-sessions entry, shared lib other pacman pkgs link, /etc/makepkg.conf reference, system fontconfig path, PAM, Qt plugin search path, or kernel/ firmware/bootloader touchpoint. User-scope systemd units are NOT coupling — nix drops them in ~/.nix-profile/share/systemd/user/ and systemd picks them up; the chezmoi-owned unit files that referenced /usr/bin/<tool> paths are fixed in a follow-up commit. Wayland session: waybar, mako, fuzzel, wofi, swayidle, swayr, inhibridge, bemoji, wob, poweralertd, grim, slurp, wf-recorder, wtype, wl-clipboard, cliphist, imv, wl-mirror, playerctl, pulsemixer, ghostty. General CLIs: qrencode, torsocks, lshw, yt-dlp, streamlink, chezmoi, paru. GUI: sparrow. OCR: tesseract collapsed with .override { enableLanguages = [eng por] } — replaces tesseract + tesseract-data-eng + tesseract-data-por. STT: whisper-cpp.override { vulkanSupport = true; } plus an inline whisper-cpp-model-base derivation that fetches ggml-base.bin from the upstream huggingface mirror into ~/.nix-profile/share/whisper-cpp-models/.
* refactor(eer): install external-editor-revived via nix on the hostLibravatar sommerfeld9 days1-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The AUR `external-editor-revived` PKGBUILD declares a hard `thunderbird` dependency, which blocks removing the unused system Thunderbird binary alongside the org.mozilla.thunderbird flatpak (and pacman's `AssumeInstalled` is a CLI flag, not a pacman.conf directive, so the previous workaround was nonfunctional). Nixpkgs' `external-editor-revived` is just `rustPlatform.buildRustPackage` plus a relocatable native-messaging manifest — zero mailer dep — so the host gets it from nix instead. * nix/host.nix: add `external-editor-revived` to `home.packages`. Kept out of `common.nix` so the remote-dev VM (which has no Thunderbird) doesn't carry the build closure. * run_onchange_after_deploy-tb-eer.sh.tmpl: search `~/.nix-profile/{bin,lib/mozilla/native-messaging-hosts}` first and fall through to the legacy pacman paths. The chezmoi manifest-hash probe now checks the nix path too, so the hook re-runs cleanly when nix bumps the EER version. * meta/base.txt: drop the `external-editor-revived` AUR entry and rewrite the comment to point at the nix declaration. * etc/pacman.conf: revert the bogus `AssumeInstalled` directive (CLI-only, not pacman.conf). On-host migration: home-manager switch --flake ~/dotfiles/nix#host # picks up EER sudo pacman -Rns external-editor-revived thunderbird mpv chezmoi apply -v # re-runs tb-eer hook
* refactor(nix): deployment in vm.nix only; host uses chezmoi for dotfilesLibravatar sommerfeld2026-05-201-5/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Per user decision: on the Arch host, chezmoi remains the single deployer of $HOME dotfiles. nix/common.nix's xdg.configFile + sshConfig activation + .zshenv home.file block was causing home-manager to fight chezmoi on every nix-switch, materializing .backup files for nvim, zellij, zsh, git, ghostty, direnv. Resolution: - nix/common.nix: drop the entire deployment block, drop the my.dotfilesPath option, drop the let..in dotfiles/link helpers. Module is now deployment-agnostic: only installs packages. - nix/host.nix: drop my.dotfilesPath; explicit comment that chezmoi owns dotfile deployment on the host. - nix/vm.nix: gains everything previously in common.nix's deployment block — xdg.configFile (nvim/zellij/zsh/git/ghostty/direnv), home.activation.sshConfig, home.file.".zshenv". The 'dotfiles' let-binding (= $HOME/.local/share/dotfiles) and 'link' helper move here too, since they're vm-only now. Host runbook unchanged (`just sync`); first run after pulling will just be a no-op nix-switch instead of a backup-file storm.
* fix(nix): parameterize dotfiles path per profile; rename dockerfile LSPLibravatar sommerfeld2026-05-201-0/+5
| | | | | | | | | | | | | | | | | | | | - common.nix hardcoded the runtime dotfiles checkout to ~/.local/share/dotfiles, which is correct for the remote-dev VM but not the Arch host (where the canonical clone lives at ~/dotfiles). ssh activation was failing with 'cannot stat /home/sommerfeld/.local/share/dotfiles/private_dot_ssh/config' on every host nix-switch. Promote the path to a typed option (config.my.dotfilesPath) and set it from each profile: nix/host.nix -> $HOME/dotfiles nix/vm.nix -> $HOME/.local/share/dotfiles common.nix now wraps its config in 'config = { ... }' so the options can sit alongside. - dockerfile-language-server-nodejs was renamed in nixpkgs to dockerfile-language-server; pick up the new name to silence the evaluation warning (the rename will eventually become a hard error).
* refactor(nix): promote remote-dev/ to nix/ with common/vm/host splitLibravatar sommerfeld2026-05-201-0/+21
Restructures the Home-Manager profile to support both the Arch host and the Ubuntu remote-dev VM from the same flake. - remote-dev/ → nix/ (hard rename; .chezmoiignore updated) - home.nix split into common.nix (shared), vm.nix (Mason runtime carve-outs + podman stack), host.nix (gpg scdaemon delegation to system pcscd) - flake.nix exposes homeConfigurations.{vm,host} via a mkProfile helper - rj alias in dot_zshrc updated to ~/.local/share/dotfiles/nix - bootstrap.sh / justfile updated to use #vm against the new path The split is behaviour-preserving for the VM: vm.nix + common.nix together carry the same package set as the previous home.nix. host.nix is provisioned but not yet wired into bootstrap (phase p8). Phase 1 of the nix-on-host migration plan.