aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/systemd-units
Commit message (Collapse)AuthorAgeFilesLines
* feat(nix): hybrid setup with flakes + direnv for per-project dev shellsLibravatar sommerfeld2026-05-131-0/+3
| | | | | | | | | | | | | | | | | | Install Nix (multi-user daemon) on Arch and wire up direnv so any project can declare its toolchain in a flake.nix and get a hermetic dev shell on cd. No NixOS, no home-manager, no migration off paru/chezmoi — just one new package manager scoped to project dev shells. - meta/nix.txt: nix from extra repo - meta/dev.txt: direnv (general-purpose, not nix-specific) - systemd-units/system/nix.txt: nix-daemon.socket (socket-activated) - etc/nix/nix.conf: enable flakes + nix-command, trusted-users=@wheel, auto-optimise-store, keep-outputs/derivations so direnv envs survive GC - dot_config/direnv/direnvrc: load nix-direnv 3.1.1 via source_url with pinned sha256 (not packaged for Arch; refusing -git AUR) - dot_config/nix/templates/{flake.nix,dev/}: flake template usable via 'nix flake init -t ~/.config/nix/templates' - dot_config/zsh/dot_zshrc: 'eval "$(direnv hook zsh)"'
* feat(net): nftables laptop firewallLibravatar sommerfeld2026-05-131-0/+1
| | | | | | | | | | | | | Default-deny inbound, allow outbound. Scoped to 'inet filter' with 'destroy table' on reload so podman/netavark tables are preserved. - meta/base.txt: add nftables - systemd-units/system/base.txt: enable nftables.service - etc/nftables.conf: laptop ruleset (loopback, ct state, ICMP/ICMPv6 essentials, DHCPv6 client, default-drop input/forward, accept output) - etc/sysctl.d/99-sysctl.conf: rp_filter=2, no redirects, no source-route, log_martians - README.md: firewall section with reload caveat
* feat(units): seed user unit lists from managed drop-insLibravatar sommerfeld2026-05-133-0/+19
| | | | | | | | | | | | | Curate the user units whose definitions or overrides we manage under dot_config/systemd/user/: - graphical.txt: cliphist-{image,text}, display-watcher, swayidle, waybar — all WantedBy=sway-session.target. - mail.txt: protonmail-bridge.service — managed via a drop-in override. Also extend user/.ignore with the socket-activated pipewire/wireplumber stack and a handful of distro defaults so 'just unit-status' stays quiet on a clean system.
* refactor(units): split systemd-units into system/ and user/ treesLibravatar sommerfeld2026-05-134-0/+4
| | | | | | | | | | | | | | | Move the three existing files into systemd-units/system/ and seed systemd-units/user/ with a .ignore stub. Teach the unit-* recipes a user:/system: group-token prefix (bare names keep system semantics for back-compat). unit-apply and unit-status now walk both scopes; user units go through 'systemctl --user' (no sudo), system units via 'sudo systemctl' as before. Soft-fail per unit preserved for both scopes. Top-level add/forget dispatchers need no changes: the unit-extension sniff already routes anything ending in .service/.timer/etc to unit-*, and user:base passes through as the group token. Docs updated in README.md and .github/copilot-instructions.md.
* fix(just): unit-status handles template instances and static unitsLibravatar sommerfeld2026-05-132-1/+1
| | | | | | | | - use systemctl is-enabled per curated unit (list-unit-files does not show instantiated template units like btrfs-scrub@-.timer) - accept static/indirect/generated/alias states in addition to enabled - drop pkgstats.timer from curated (no [Install] section) - ignore systemd-oomd.socket (distro default)
* chore(meta): add fwupd, smartmontools; enable oomd, smartd, btrfs-scrub, ↵Libravatar sommerfeld2026-05-131-1/+4
| | | | fwupd-refresh; drop fstrim.timer
* fix(services): ignore more networkd/resolved companion socketsLibravatar sommerfeld2026-04-211-0/+5
| | | | | | | systemd-networkd-resolve-hook.socket, systemd-networkd-varlink.socket, systemd-networkd-varlink-metrics.socket, systemd-resolved-monitor.socket, systemd-resolved-varlink.socket are all auto-activated via dependency graphs of their parent services and have no [Install] of their own.
* fix(services): drop systemd-networkd.socket from curated, add to .ignoreLibravatar sommerfeld2026-04-212-1/+1
| | | | | | | systemd-networkd.socket has no [Install] section; it's auto-activated by systemd-networkd.service via Sockets=. systemctl enable fails on it. It still shows as enabled (symlinked from the service's dependency graph), so add it to .ignore to keep drift output clean.
* feat(services): add .ignore list for distro-default noiseLibravatar sommerfeld2026-04-211-0/+7
| | | | | | | | | | systemd-units/.ignore is a user-maintainable list of units to suppress from 'just services-drift' uncurated output. Starts with three systemd presets that are harmless noise: remote-fs.target, systemd-network-generator.service, systemd-userdbd.socket. The dotfile is outside the *.txt glob so services / services-enable don't accidentally pick it up.
* feat(services): curate systemd-networkd alongside iwdLibravatar sommerfeld2026-04-211-0/+3
| | | | | User runs iwd (wifi auth) + systemd-networkd (IP config) together, with systemd-networkd-wait-online as boot gate.
* feat(services): curate tor + pcscd, filter @ templates from driftLibravatar sommerfeld2026-04-212-0/+5
| | | | | | | | | | - tor.service -> systemd-units/btc.txt (pairs with tor in meta/btc.txt) - pcscd.socket -> systemd-units/base.txt (smartcards, used by GPG) - services-drift now filters @-template units (getty@ etc.), which are abstract and can't be curated meaningfully anyway systemd-networkd.{service,socket,wait-online} remain uncurated; that's a real decision (conflicts with iwd) left to disable by hand.
* feat(services): curated systemd units via just recipesLibravatar sommerfeld2026-04-211-0/+13
Introduce systemd-units/<group>.txt files paired by name with meta groups (systemd-units/base.txt <-> meta/base.txt). Units listed there are enabled by a new 'just services-enable' recipe, wired into 'just init' so bootstrap.sh no longer needs its own systemctl loop. New justfile recipes (Services section): services list curated units with enabled/active state services-enable idempotent 'systemctl enable --now', soft-fail per unit services-drift two-way diff vs systemctl list-unit-files bootstrap.sh drops its hardcoded 9-unit loop and laptop TLP block (~22 lines); 'just init' now handles it. tlp.service lives directly in systemd-units/base.txt (no laptop gating).