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
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# CHE-18 Task 1 implementation report

## Summary

Reorganized `.chezmoidata` to the approved layout, updated documentation references, and added layout assertions to the render test. The package-manager data was partitioned by retaining each manager's complete source section and table/array content. `.chezmoiscripts` remains flat.

## TDD evidence

- **RED:** After adding assertions for the new layout and correcting the Ubuntu fixture's personal feature, `./tests/chezmoi-render-scripts.sh` failed with `new data path is missing: directories.toml`.
- After the migration, the render suite exposed a separate pre-existing expectation mismatch: the macOS imperative-tools render does contain `herdr plugin install`. The enabled Herdr records are present in source data and the template renders all enabled records without an OS filter. Per supervisor ruling, corrected the test to assert the rendered Herdr commands are present; no data/template behavior was changed for this issue.
- **GREEN:** With that test-only assertion correction, the full render suite passed: `chezmoi script render tests passed`.

## Changes

- Renamed/moved data files to the approved paths: `directories.toml`, `packages/github-binaries.toml`, `packages/languages.toml`, `cli-tool-setup.toml`, `ssh-hosts.toml`, `apps/cask-app-names.toml`, and `apps/macos-external-apps.toml`.
- Split the former package-system file into `packages/system/{apt,homebrew,mas,pacman}.toml`.
- Left `accounts.toml`, `onepassword.toml`, and `shell_env.toml` unchanged.
- Updated `tests/chezmoi-render-scripts.sh` with positive new-path/negative old-path assertions, Ubuntu `personal=true`, and the corrected Herdr output expectation.
- Updated the four requested documentation files.

## Validation

Commands run:

1. `./tests/chezmoi-render-scripts.sh` before migration — failed as intended on missing `directories.toml`.
2. `chezmoi -S chezmoi data | jq -S . > /tmp/che18-current.json` and `jq -S . .superpowers/sdd/2026-10-16-che-18-chezmoidata-reorganization/base-data.json > /tmp/che18-base.json`, followed by `diff -u /tmp/che18-base.json /tmp/che18-current.json` — passed with no output; normalized merged data is identical to the capture.
3. `./tests/chezmoi-render-scripts.sh` — passed (`chezmoi script render tests passed`).
4. `rg` search over docs/source/tests for old `.toml` paths — no stale references; remaining matches are correct new paths containing old-name substrings.
5. `find chezmoi/.chezmoiscripts -mindepth 1 -maxdepth 1 -type d -print` — no directories; scripts remain flat.
6. `git diff --check` — passed.

## Self-review / residual risks

- The render test's previous macOS assertion contradicted the existing enabled imperative-tool data and the unconditional template loop. Its expectation now matches actual unchanged rendering; this is test-only and avoids an unapproved behavior change.
- No observed changes to merged data or arrays. The four manager sections were preserved as whole TOML sections. Commit hooks normalized trailing whitespace and corrected the spelling in two inactive package-name example comments to satisfy the repository typo check; neither affects data values.
- No other known residual risks.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
# download_url = "https://tunaformac.com/download/latest"
# type = "dmg"
#
# # blur external
# # blur external
# [[macos_external_app]]
# app_name = "monocle"
# download_url = "https://files.heyiam.dk/updates/Monocle-3-0-3.dmg"
Expand Down
67 changes: 67 additions & 0 deletions chezmoi/.chezmoidata/packages/system/apt.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
[packages]
[packages.apt]
to_remove = []

[packages.apt.common]
packages = [
# System Essentials
"apt-transport-https",
"curl",
"dnsutils",
"logrotate",
"nano",
"needrestart",
"net-tools",
"openssh-server",
"p7zip-full",
"sudo",
"tzdata",
"unzip",
"wget",
"xz-utils",
"zsh",

# CLI Utilities
"bat", # cat with syntax highlighting and Git integration
"figlet",
"eza",
"lolcat",
"mc", # Midnight Commander
"ncdu", # NCurses Disk Usage

# Git & Version Control
"git",
"git-extras",

# Security
"gnupg",
"gpg",
]

[packages.apt.development]
packages = [
# Essential build dependencies for VPS development
"build-essential",
"pkg-config",
"libssl-dev",
"fd-find",
"fzf",
"jq",
"ripgrep",
"sd",
"yq",
]

[packages.apt.homelab]
packages = ["iperf"]

[packages.apt.personal]
packages = [
# Development conveniences
"fd-find",
"fzf",
"jq",
"ripgrep",
"sd",
"yq",
]
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@
# "git-lfs",
"glab", # GitLab CLI
"lazygit",
# "serie", # cosmetic showing git graph
# "series", # cosmetic showing git graph
# "withgraphite/tap/graphite",
"worktrunk",

Expand Down Expand Up @@ -447,7 +447,7 @@
"asciinema", # record your terminal
"croc", # File transfer
"eget", # Easily install prebuilt binaries from GitHub.
# "gitlogue", # replay your git
# "gitlogue", # replay your git
"taproom", # TUI for search homebrew package
"mole", # https://github.com/tw93/Mole
"presenterm", # Presentation in CLI
Expand Down Expand Up @@ -480,257 +480,3 @@
"tailspin",
]
taps = []

[packages.mas]
[packages.mas.common]
apps = []

[packages.mas.development]
apps = []

[packages.mas.homelab]
apps = []

[packages.mas.personal]
apps = [
# Utility
"1355679052", # Dropover
"6451349778", # Rapidmg
"6474854386", # Launchpallete
"6698876601", # Folder preview
"6532621020", # IP address in menubar
# "6476907452", # Applight (app launcher)
# "1502839586", # Hand mirror
# "1551462255", # Mouseboost
# "497799835", # Velja
# "6444667067", # Hyperduck
# "1604176982", # Onething
# "6743316600", # Subscription Day
#"6746757189", # Corner Time

# Productivity
# "6739802604", # Folo
"1609960918", # Jomo
"966085870", # Ticktick
# "1666327168", # Spaced
# "6739781207", # Pieoneer

# Paid / Optional
# "6471482080", # Cursor Teleporter by Apptorium
# "6748582349", # Spatial Dock

# Entertainment
# "1606145041", # Sleeve
]

# APT package manager

[packages.apt]
to_remove = []

[packages.apt.common]
packages = [
# System Essentials
"apt-transport-https",
"curl",
"dnsutils",
"logrotate",
"nano",
"needrestart",
"net-tools",
"openssh-server",
"p7zip-full",
"sudo",
"tzdata",
"unzip",
"wget",
"xz-utils",
"zsh",

# CLI Utilities
"bat", # cat with syntax highlighting and Git integration
"figlet",
"eza",
"lolcat",
"mc", # Midnight Commander
"ncdu", # NCurses Disk Usage

# Git & Version Control
"git",
"git-extras",

# Security
"gnupg",
"gpg",
]

[packages.apt.development]
packages = [
# Essential build dependencies for VPS development
"build-essential",
"pkg-config",
"libssl-dev",
"fd-find",
"fzf",
"jq",
"ripgrep",
"sd",
"yq",
]

[packages.apt.homelab]
packages = ["iperf"]

[packages.apt.personal]
packages = [
# Development conveniences
"fd-find",
"fzf",
"jq",
"ripgrep",
"sd",
"yq",
]

[packages.pacman]
to_remove = []

[packages.pacman.common]
packages = [
# System Essentials
"1password-cli",
"base-devel", # Equivalent to apt-transport-https and build essentials
"curl",
"logrotate",
"nano",
"net-tools",
"openssh", # Equivalent to openssh-server
"polkit-gnome", # For 1password prompt available
"sudo",
"tzdata",
"unzip",
"wget",
"xz",
"zsh",

# CLI Utilities
"bat", # cat with syntax highlighting and Git integration
"figlet",
"lolcat",
"mc", # Midnight Commander
"ncdu", # NCurses Disk Usage

# Git & Version Control
"git",
"git-extras",

# Security
"gnome-keyring", # For 1password two factor auth
"gnupg",

# Optional
# "bind-tools", # Equivalent to dnsutils
# "p7zip", # Equivalent to p7zip-full
]

[packages.pacman.development]
packages = [
# Essential build dependencies for VPS development
"openssl",
"pkgconf",
]

[packages.pacman.homelab]
packages = ["iperf"]

[packages.pacman.personal]
packages = [
# Browser
"brave-bin",
# "google-chrome",
"zen-browser-bin",

# Utility
"asciinema", # record your terminal
"superfile", # file manager in terminal

# Media
"spotatui-bin", # Terminal music player

# Development Tools
"opencode-bin",
"fd",
"fzf",
"jq",
"ripgrep",
"sd",
"skim", # Alternative to fzf fuzzy-finder
"yq", # YAML processor
"appimagelauncher", # for integrating .AppImage
"difftastic", # diff tools
"codespell", # Fix common misspellings in source code and text files
"dpkg",
"entr", # dependency for tmux-autoreload
"eza",
"glow", # Render markdown in CLI
"gum", # Fuzzy finder
"less",
"pastel", # converter color in terminal
"pet-bin",
"pueue", # Task runner and scheduler
"tectonic",
"thefuck", # Fix typos
"tlrc", # TLDR client, alternative tealdeer
"vivid", # Color generator for LS_COLORS env variable
"bottom",
"gitleaks",
"jujutsu", # jujutsu version control
"jjui-bin", # jujutsu tui
"git-delta", # Pager for git
"github-cli", # Github CLI
"glab", # GitLab CLI
"lazygit",
# "serie",
"git-graph",
"fish",
"ghostty",
"sesh-bin", # tmux session manager
"starship",
"tmux",
"tmuxp", # tmux session manager
"helix", # Alternative neovim
"neovim",
"cloudflare-warp-bin",
"docker",
"docker-compose",
"lazydocker",
"tailscale",
"httpie", # HTTP client
"hurl", # runs HTTP requests defined in a simple plain text format.
"usbutils", # check fingerprint info
"fprintd", # fingerprint
"fuse2", # apidog dependency
"localsend",
"lsof", # opencode-bin dependency
"ticktick",
"yubico-piv-tool",
"redis", # Redis CLI
"nix",
"zlib", # for building python
"biome", # JS/TS linter, formatter
"eslint", # JS/TS linter
"prettier", # JS/TS formatter
"ruff", # Python linter
"shellcheck", # bash, sh linter
"shfmt", # bash, sh formatter
"nixfmt", # Nix formatter
"stylua", # Lua formatter
"markdownlint-cli2", # Linter for markdown file
"taplo-cli", # TOML formatter
"yamlfmt", # YAML formatter
"yamllint", # YAML linter

# Text Editors & IDEs
"datagrip",
"datagrip-jre", # runtime for datagrip can work
]
Loading
Loading