Skip to content

6. Fork

Make this setup your own: your packages, your dotfiles, your branding.

Rename

What Where
distribution name, description pyproject.toml: [project] name, description
package folder src/personal_os_setup/, imports, and the [project.scripts] entry point
logger name settings.py: the name used to bind and filter the loguru logger
documentation site properdocs.yml (site_name, site_author, theme.logo/favicon), CNAME for a custom domain, DOCS_SITE_URL in tasks/system/help.py
documentation README.md, AGENTS.md (CLAUDE.md links to it), SECURITY.md, docs/
version and changelog semantic-release owns project.version and CHANGELOG.md; never edit them by hand

Then: uv lock, make install-dev, make check.

Customize the data

Most personalization is data, not code. Keep your changes in these files to minimize upstream merge conflicts:

What Where
package catalog src/personal_os_setup/config/packages.yaml (distro → manager → category → packages)
dotfiles src/personal_os_setup/config/chezmoi/ (the chezmoi source dir)
OS-specific files src/personal_os_setup/config/{darwin,unix,windows,others}/, wired in tasks/factory.py

The package-manager backends (tasks/managers/) and detect_os.py are reusable as they are. The fork-and-customize skill in .claude/skills/ covers the details for coding agents.

Once on GitHub

  1. Create main and dev, and protect them; use squash merges for pull requests. Allow release automation and the documented main → dev merge sync to push as needed.
  2. Workflow permissions "Read and write", and GitHub Pages from gh-pages (5. Release).
  3. Install the Renovate app on the repository.

Stay in sync with upstream

Shared files: makefiles/, Makefile, scripts/emoji_commit_parser.py, .pre-commit-config.yaml, .markdownlint-cli2.yaml, .github/, docs/developer/.

git remote add upstream https://github.com/AmineDjeghri/personal-os-setup.git
git fetch upstream
git checkout upstream/main -- makefiles/release.mk   # the files you want
git diff --staged                                     # review before committing