- Go 48%
- Gleam 23%
- Python 19%
- Erlang 9%
- Nix 1%
- 1 more language <1%
This repo holds the Albedo code used by my Nix configuration. Personal settings, providers, skills and SOPS declarations stay in Infra.
Warning
This repository is almost entirely AI-generated, and I rarely review it. It exists as glue for my own Albedo setup, not as a standalone project. I do not provide support for it or accept responsibility for its use.
What it changes #
| Component | Behavior |
|---|---|
| Lazy MCP | Connect to a server when explicitly requested, rather than at session startup. |
| Explicit file checks | Format tracked files and collect diagnostics in one files.check() call. |
| Local LSP | Start a language server on an explicit diagnostics or navigation call. |
| Monitor snapshots | Export running-agent status and cached connected-account quotas without starting the daemon. |
| RTK and FFF | Filter supported commands through RTK and replace file search with FFF. |
| Zed provider | Native hosted-model streaming with tool choice, thinking, effort and usage. |
| Provider availability | Disable or re-enable saved profiles with Ctrl+T in /login. |
| CLI resume | albedo resume without an ID reopens the newest non-archived session in the current directory. |
| Vim editing | Modal composer motions and edits, with the current mode in the footer. |
| TUI activity | Show passive current and recent tool activity below background jobs. |
| Inline redraw | Keep the inline TUI from stacking stale header rows when the terminal narrows. |
| Image previews | Display attachments and tool-returned images in supported terminals. |
| Prompt context | Keep startup references compact and retrieve full API docs explicitly. |
| CLI diffs | Show diffs by default when enabled. The existing toggle still works. |
| Home Manager | Install Albedo and merge settings while preserving runtime authentication. |
MCP, formatting and LSP are disabled until configured. The suite supplies no personal provider profiles or server list.
Formatting and LSP are temporary compatibility layers, not a long-term fork API. Keep them isolated and remove them when upstream covers the needed behavior. Retiring these layers lists what to remove.
Usage #
Add the flake input using a local checkout:
inputs.albedo-suite = {
url = "git+file:///absolute/path/to/albedo-suite?ref=main";
inputs.nixpkgs.follows = "nixpkgs";
};
Import the module into Home Manager:
{inputs, ...}: {
imports = [inputs.albedo-suite.homeManagerModules.default];
programs.albedo = {
enable = true;
showDiffs = true;
};
}
The runtime directory defaults to ~/.local/share/albedo. The module does not
move existing data. Stop the daemon before activation. The settings helper
refuses to write while it is running.
Configuration covers providers, MCP credentials, formatter commands and other options. The helper merges settings into the existing documents. Removing an entry from Nix does not delete its runtime copy.
Development #
nix build .#albedo-defaults
nix flake check
nix fmt
albedo-defaults shows diffs by default. albedo-patched keeps upstream's diff
default. Home Manager selects the package through showDiffs, which defaults
to false. Both packages include the server changes.
Edit the files under src/ directly. There are no patch files. NUR supplies the
pinned upstream build, and checksum checks reject changed upstream files before
the suite copies its replacements into that build.
Development details cover checks, daemon tests and the upstream updater. Read the maintenance guide before changing suite behavior or updating upstream.
License #
This repository is licensed under the GNU Affero General Public License v3.0
only with the Classpath exception, matching upstream Albedo. The
exception permits linking independent modules under their own licenses.
The source notices and LICENSES/ retain upstream
attribution, historical MPL obligations and separately licensed components.
Source instructions cover distribution and remote
network source obligations.