Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ My machine differs slightly → ~/.config/dots/profiles/<name>.toml
|---------|----------------|---------------------|-------------|-----|
| `base` | core, modern | none | tmux | minimal |
| `home` | core…gui + infra/media + dev/network/data/geo/security | personal stack (incl. Herdr) | herdr | yes |
| `work` | core, modern, workstation, dev, data, security | **none** unless `--with` / custom | tmux | limited |
| `work` | core, modern, workstation, dev, data, geo, security, gui | **none** unless `--with` / custom | tmux | yes (font) |
| `server` | core, modern, server | **Herdr** (no AI providers) | tmux | no |
| `all` | full workstation (incl. new tool groups) | all optional | tmux | yes |

Expand Down
6 changes: 3 additions & 3 deletions configs/bootstrap/profiles/work.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
# IMPORTANT: Do NOT infer employer AI policy. Start with NO AI clients.
# Cursor MUST NOT be included without approval.
#
# Package groups: +dev +data +security (install-only CLIs). Network/geo omitted
# by default — add via custom profile or --packages if needed.
# Package groups: +dev +data +geo +security +gui (font). Network omitted by default
# — add via custom profile or --packages if needed.

[profile]
name = "work"
description = "Conservative allowlist — no AI clients by default"
with = []
packages = ["core", "modern", "workstation", "dev", "data", "security"]
packages = ["core", "modern", "workstation", "dev", "data", "geo", "security", "gui"]
open_apps = ["iTerm"]

[runtime]
Expand Down
6 changes: 3 additions & 3 deletions docs/concepts/profiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Authority: `configs/bootstrap/profiles/*.toml`
|---------|----------------|---------------------|-------------|-----|
| `base` | `core`, `modern` | none | tmux | minimal |
| `home` | `core`…`gui` + `infra`/`media` + `dev`/`network`/`data`/`geo`/`security` | `ai` + herdr, skills, ai-skills, images, tex; FluidVoice excluded by default | herdr | yes |
| `work` | `core`, `modern`, `workstation`, `dev`, `data`, `security` | **none** unless `--with` / custom | tmux | limited |
| `work` | `core`, `modern`, `workstation`, `dev`, `data`, `geo`, `security`, `gui` | **none** unless `--with` / custom | tmux | yes (font) |
| `server` | `core`, `modern`, `server` | **Herdr** only (no AI providers) | tmux | no |
| `all` | full workstation groups incl. `dev`/`security`/`network`/`data`/`geo` | all optional (`include_all_optional`; respects `omit_from_all`) | tmux | yes |

Expand All @@ -31,8 +31,8 @@ members are omitted automatically.

Conservative allowlist. **Do not** infer employer AI policy. Start with no AI
clients. Cursor must not be included without approval. Package groups add
`dev` / `data` / `security` (install-only CLIs); `network` and `geo` stay off
unless a custom profile or `--packages` opts in.
`dev` / `data` / `geo` / `security` (install-only CLIs) plus `gui` (JetBrains Mono
Nerd Font). `network` stays off unless a custom profile or `--packages` opts in.

### `server`

Expand Down
2 changes: 1 addition & 1 deletion docs/reference/generated/profiles.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Headless server — tmux + Herdr available, no GUI/AI providers by default
Conservative allowlist — no AI clients by default

- **Source:** `configs/bootstrap/profiles/work.toml`
- **packages:** `core`, `modern`, `workstation`, `dev`, `data`, `security`
- **packages:** `core`, `modern`, `workstation`, `dev`, `data`, `geo`, `security`, `gui`
- **with:** (none)
- **runtime.multiplexer:** `tmux`

Expand Down
2 changes: 1 addition & 1 deletion docs/using/package-groups.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Builtin profiles declare membership in TOML (SoT):
| Profile | Groups (summary) |
|---------|------------------|
| `base` | `core` `modern` |
| `work` | + `workstation` `dev` `data` `security` |
| `work` | + `workstation` `dev` `data` `geo` `security` `gui` |
| `home` | + `infra` `media` `gui` + `dev` `network` `data` `geo` `security` |
| `server` | `core` `modern` `server` |
| `all` | workstation set + `dev` `security` `network` `data` `geo` |
Expand Down
9 changes: 2 additions & 7 deletions scripts/profile_resolution_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -186,21 +186,16 @@ for g in dev network data geo security; do
done
if [[ "${PROFILE_RUNTIME_MULTIPLEXER}" == "herdr" ]]; then ok "home multiplexer=herdr"; else bad "home mux=${PROFILE_RUNTIME_MULTIPLEXER}"; fi

# WORK has no AI; has lean workstation tool groups (no geo/network)
# WORK has no AI; workstation tool groups + geo/gui; network still off by default
resolve_named work
if [[ ${#EFFECTIVE_WITH[@]} -eq 0 ]]; then ok "work AI empty"; else bad "work leaked AI"; fi
for g in dev data security; do
for g in dev data geo security gui; do
if dots_array_contains "${g}" "${PROFILE_PACKAGES[@]+"${PROFILE_PACKAGES[@]}"}"; then
ok "work has ${g} group"
else
bad "work missing ${g}"
fi
done
if dots_array_contains geo "${PROFILE_PACKAGES[@]+"${PROFILE_PACKAGES[@]}"}"; then
bad "work should omit geo"
else
ok "work omits geo"
fi
if dots_array_contains network "${PROFILE_PACKAGES[@]+"${PROFILE_PACKAGES[@]}"}"; then
bad "work should omit network"
else
Expand Down
3 changes: 2 additions & 1 deletion scripts/tests/package_groups_control_plane_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,8 @@ plan_work="$("${ROOT}/dots" packages plan --profile work 2>&1)" || {
plan_work=""
}
echo "${plan_work}" | grep -qE '^\s+dev$' && ok "plan work has dev" || bad "plan work missing dev"
echo "${plan_work}" | grep -qE '^\s+geo$' && bad "plan work should omit geo" || ok "plan work omits geo"
echo "${plan_work}" | grep -qE '^\s+geo$' && ok "plan work has geo" || bad "plan work missing geo"
echo "${plan_work}" | grep -qE '^\s+gui$' && ok "plan work has gui" || bad "plan work missing gui"

echo "=== plan / groups are non-mutating ==="
before="$(find "${TMP}" -type f 2>/dev/null | sort | cksum)"
Expand Down
Loading