Commit Graph
187 Commits
Author SHA1 Message Date
Gabriel Fontes 090a94b268 fix(system-manager): remove evaluation-time package reads
Assisted-by: pi (gpt-5.6-sol)
2026-08-14 15:00:06 -03:00
Gabriel Fontes a587e539e9 feat(system-manager): port networking.wireless and generic DHCP
Run the upstream NixOS wpa_supplicant module under system-manager through a
compat shim. system-manager already reuses nixpkgs' systemdUtils,
environment.etc and userborn, so the unit, the generated config and the
wpa_supplicant user come out unchanged; only four NixOS-only options needed
stubbing, two of which are re-expressed on top of environment.etc.

Extract the wireless config to hosts/wireless.nix so both trees share one
source: they sit at the same depth, so every path resolves identically.
electra's generated wpa_supplicant.conf is now byte-identical to atlas'
except for the country line.

Take over networkd from netplan on electra with the same generic match rules
NixOS uses, which also covers ethernet and USB tethering, neither of which
was configured before. netplan is neutered by masking its generator rather
than uninstalling it, since purging netplan.io would take cloud-init,
ubuntu-minimal and ubuntu-server-minimal with it.

Assisted-by: pi (claude-opus-5)
2026-08-13 16:36:09 -03:00
Gabriel Fontes 2784bfa85c refactor: expose colorscheme set in flake 2026-08-12 02:48:54 -03:00
Gabriel Fontes 6e5547495d feat: rename mgc to electra, add to schemes 2026-08-12 02:42:14 -03:00
Gabriel Fontes 3ad46d1523 refactor(system-manager): extract unix_chkpwd wrapper into a module
The setuid /run/wrappers/bin/unix_chkpwd wrapper is generic plumbing that
nixpkgs' pam_unix requires (system-manager, unlike NixOS, doesn't provide
it), not host policy. Move it to modules/system-manager/unix-chkpwd.nix,
applied unconditionally like NixOS does; hosts/.../pam.nix keeps only the
pam.d stacks.

Assisted-by: pi (claude-opus-4-8)
2026-08-07 01:14:11 -03:00
Gabriel Fontes 7aac214925 refactor(system-manager): add nix.registry module, use it in nix.nix
Port nixpkgs' nix.registry option (config/nix-flakes.nix) into
modules/system-manager/nix-registry.nix, giving system-manager the same
interface NixOS has. common/global/nix.nix now just sets
'nix.registry = mapAttrs (_: flake: {inherit flake;}) flakeInputs' like
the NixOS side, instead of hand-writing /etc/nix/registry.json.

Assisted-by: pi (claude-opus-4-8)
2026-08-07 01:13:56 -03:00
Gabriel Fontes b3d166215c feat(system-manager): hydra-based auto-upgrade module
Port modules/nixos/hydra-auto-upgrade.nix to the system-manager side as
modules/system-manager/hydra-auto-upgrade.nix, exposed via a new
outputs.systemManagerModules and imported by the common/global base.

The script (cached-system-manager) mirrors cached-nixos-rebuild, adapted
to system-manager's model: there is no /run/current-system active pointer
and no boot-time reactivation, so the registered profile
(/nix/var/nix/profiles/system-manager-profiles/system-manager) is the
single source of truth. Only 'diff' and 'switch' actions; switch does
register-profile + activate (the CLI's switch = both, atomically).

Not enabled anywhere yet.

Assisted-by: pi (claude-opus-4-8)
2026-08-06 23:57:08 -03:00
Gabriel Fontes 92c8596749 fix(hydra-auto-upgrade): harden hydra api requests
Assisted-by: pi (openai-codex/gpt-5.6-sol)
2026-07-17 18:44:41 -03:00
Gabriel Fontes a37004c48e refactor(wallpapers): move collection under pkgs
Import the collection through pkgs/default.nix while preserving the combined Hydra derivation and per-wallpaper attributes.

Assisted-by: pi (openai-codex/gpt-5.6-sol)
2026-07-13 10:26:24 -03:00
Gabriel Fontes 85df2a3233 chore: rename nix-config -> foundry across in-repo references
Prep for renaming the GitHub repo to Foundry: update the Hydra jobset flakes
(.hydra.json), the auto-upgrade project name (must match the Hydra project),
the README status badge, the hydra-auto-upgrade example, the website CV link,
and the flake description. Hydra project/jobset becomes 'foundry'.

Assisted-by: pi (opus-4.8)
2026-07-04 19:40:42 -03:00
Gabriel Fontes be533b7e49 refactor(themes): drop projects/themes, generate colorschemes purely
With the matugen IFD replaced by lib/material-you.nix, projects/themes only existed
to cache that IFD, so remove it:

- Move wallpapers/ to the repo root. Each wallpaper now carries its material-you
  source color (extracted once, committed in list.json) in passthru, so schemes
  generate with no image decoding at eval.
- Expose pkgs.wallpapers via the additions overlay, and a 'wallpapers'
  linkFarm package so Hydra builds+caches every image (imgur is upstream).
- Fold colorscheme generation into modules/home-manager/colors.nix: it now
  calls outputs.lib.material-you.generateColorscheme on the source color (the
  wallpaper's sourceColor or a hex) instead of the matugen derivation. No IFD,
  no generatedDrv.
- wallpaper option is now types.package (preserves the sourceColor passthru).
- Drop the themes flake input and its Hydra job; wallpapers ride the pkgs job.

Verified: atlas evaluates to a full toplevel; its colors match matugen 2.4.1
for the aenami-dawn seed (roles exact, one custom channel +-1 LSB).

Assisted-by: pi (opus-4.8)
2026-07-04 18:39:47 -03:00
Gabriel Fontes bb1ff3b61b chore(taygeta): remove librechat stack
Remove LibreChat, its nginx vhost, local MongoDB persistence, and the Codex OpenAI proxy package/module it depended on. Also drop the now-unused taygeta sops entries.

Assisted-by: pi (gpt-5.5)
2026-06-29 18:25:23 -03:00
Gabriel Fontes 503751805e feat(codex-openai-proxy): add Responses API proxy for ChatGPT Codex sub
Bridges LibreChat's native Responses API custom endpoint to the ChatGPT Codex
backend at chatgpt.com/backend-api/codex/responses. It exchanges a refresh token
(CODEX_REFRESH_TOKEN) for access tokens on demand, derives the chatgpt-account-id
from the id_token claims, injects the headers the backend gates on (originator,
OpenAI-Beta, session), and reshapes the body (store:false, streaming, inline
reasoning). Nothing is persisted to disk.

Serves GET /v1/models, POST /v1/responses (streaming passthrough, or reassembled
into a single response object for non-streaming callers), and GET /health.

Ships a services.codex-openai-proxy NixOS module (host, port, environmentFile).

The ChatGPT account only accepts a subset of model ids (gpt-5.5, gpt-5.4,
gpt-5.4-mini); others such as gpt-5, the -codex variants, and gpt-5.5-mini 400.
Probe with /v1/responses if OpenAI rotates the allowed set.

Assisted-by: pi (claude-opus-4-8)
2026-06-28 17:23:08 -03:00
Gabriel Fontes fe0fcaeb05 refactor(llama-router): extract atlas llm setup into reusable module
Assisted-by: pi (opus-4.8)
2026-06-27 00:44:12 -03:00
Gabriel Fontes 1bebfd3ab6 feat(opencode): add opencode server with dedicated user
Should bring me some level of sandboxing
2026-06-17 18:02:24 -03:00
Gabriel Fontes b5cdc58251 feat(hydra-auto-upgrade): add modified check 2026-06-12 20:55:25 -03:00
Gabriel Fontes 655d5638f3 feat(hydra-auto-upgrade): let cached-nixos-upgrade callers change jobset (i.e. branch) and job (i.e. hostname) 2026-05-19 10:50:07 -03:00
Gabriel Fontes 1c49d4f71a fix(hydra-auto-upgrade): remove old flake feature again 2026-05-08 12:14:15 -03:00
Gabriel Fontes e6f9776479 feat(hydra-auto-upgrade): skip diff if same path too 2026-05-08 12:09:32 -03:00
Gabriel Fontes 054c3cf784 fix(hydra-auto-upgrade): typos 2026-05-08 12:06:29 -03:00
Gabriel Fontes c82aa3f334 feat(hydra-auto-upgrade): only diff current->profile if required 2026-05-08 12:05:03 -03:00
Gabriel Fontes b82bcb5c8e feat(hydra-auto-upgrade): re-add flake age check
It is required to avoid changing back and forth when upgraded manually
2026-05-08 11:56:26 -03:00
Gabriel Fontes 721cce722e feat(hydra-auto-upgrade): also diff boot 2026-05-08 11:47:53 -03:00
Gabriel Fontes 2671184185 fix(hydra-auto-upgrade): still set boot even if running system is same 2026-05-08 11:43:18 -03:00
Gabriel Fontes 1e416ba31c feat(hydra-auto-upgrade): only diff if requested or actually switching 2026-05-08 11:40:16 -03:00
Gabriel Fontes 32c95ec9b0 feat(hydra-auto-upgrade): use running system to check being up to date 2026-05-08 11:30:52 -03:00
Gabriel Fontes 13f6ed791a feat(hydra-auto-upgrade): make script standalone, add boot/test operations, remove age check 2026-05-08 11:18:56 -03:00
Gabriel Fontes 686c7c3d3b flake: bump lock themes 2026-01-28 16:12:47 -03:00
Gabriel Fontes 2e838bc3b6 fix(home/oama): use gpg instead of pass secret service 2025-12-20 18:10:19 -03:00
Gabriel Fontes 7e1a8fc497 fix(home/hyprlock): proper scaling 2025-11-15 11:47:27 -03:00
Gabriel Fontes 354493eb86 hosts: make jellyfin-session have a .target, vendor gamescope-steam code 2025-10-29 15:54:48 -03:00
Gabriel Fontes 76cc355f9a feat(modules/steam): add steam-gamescope-session.target to programs.steam.gamescopeSession 2025-09-23 11:20:26 -03:00
Gabriel Fontes e50df35aec refactor(greetd): use services.displayManager.sessionPackages instead of my own solution 2025-09-22 17:44:21 -03:00
Gabriel Fontes 9d9f15076c refactor(regreet): introduce sessionPackages 2025-09-22 16:51:22 -03:00
Gabriel Fontes 13d4a43f41 refactor(greetd): use cage instead of sway, simplify 2025-09-22 16:45:55 -03:00
Gabriel Fontes dddddb9a53 feat(nix-registry-prometheus-exporter): make lastmodified be the value of the metric 2025-09-04 20:42:15 -03:00
Gabriel Fontes fbe093ae7d fix(nix-registry-prometheus-exporter): use txt for text/plain mime
Prometheus doesn't like html
2025-09-04 20:35:35 -03:00
Gabriel Fontes bd3594f0ba fix(nix-registry-prometheus-exporter): use /metrics path 2025-09-04 20:22:53 -03:00
Gabriel Fontes 84a971c6e9 feat(hosts): create nix-registry prometheus exporter 2025-09-04 20:03:28 -03:00
Gabriel Fontes c150854889 refactor(home): improve remote colorscheme support
It now works with home configs inside nixos configs (no need to export standalone), and it's factored out to config.colorscheme.hosts to reuse everywhere.
2025-08-06 09:45:25 -03:00
Gabriel Fontes 1e786af42b fix(home-manager): fix eval error with changed module path in upstream 2025-06-29 15:05:55 +02:00
Gabriel Fontes 57408ea034 refactor(oama): un-curse it 2025-05-23 16:10:40 +02:00
Gabriel Fontes 36d2f74884 feat(home/calendars): manage through accounts.calendars, use oama+vdirsyncer 2025-05-19 22:53:05 +02:00
Gabriel Fontes 9ac652f693 feat(mail): introduce oama, use all my emails now 2025-05-19 00:30:04 +02:00
Gabriel Fontes 0aff49c168 feat(home/monitors): add feature for scaling 2025-05-15 13:48:08 -03:00
Gabriel Fontes c6040970bf chore(treewide): move colorschemes/wallpapers to another repo 2025-02-25 16:58:33 -03:00
Gabriel Fontes 03e29df015 fix(hosts/auto-upgrade): use correct eval when checking
Previously, it would always use the latest eval. While this works, it's more correct to check the eval belonging to the latest successfull build for that specific host.
2025-01-31 12:10:36 -03:00
Gabriel Fontes 5e4a588282 chore(home): make rainbow color mode the default 2025-01-07 21:39:13 -03:00
Gabriel Fontes 68fd0cf256 chore(home): switch to matugen from nixpkgs 2024-12-13 19:16:38 -03:00
Gabriel Fontes 1ff3c8c3da chore(celaeno/gns3): remove for now 2024-11-26 10:36:47 -03:00