The single source of truth for basic configuration across all of my Scala 3 projects.
Changes made to the configuration files contained herein are automatically copied into each dependent project using Github Graph. Updates to these files should be made here, not in any of the downstream repositories, lest they be overwritten later.
- Git settings including
.gitignoreand.gitattributes. - Config for Scalafmt, the main linter of the Scala ecosystem.
- GitHub Actions workflows to verify build integrity.
- Scala Steward integration for automatic dependency updates.
- Some config for IntelliJ IDEA and Visual Studio Code. Including IDE config can be controversial, but it is sanitised and helps to enable a consistent development experience.
- Claude Code integration with IntelliJ.
- An environment definition for GitHub Codespaces.
- The MIT license, which I tend to use by default as it is fairly permissive.
The full list of projects that rely on this configuration is defined in graph.json.
Only if you want to, but this exists mainly for my own convenience. I would, however, argue that these settings are reasonable defaults for most Scala 3 projects.
You have several options:
- If you want continuous updates as this repository evolves, open a PR to add your project(s) to
graph.json. You'll also need to send me a PAT with write access to the corresponding repositories. - If you want continuous updates, but want to deviate from my template according to your own needs, fork this repository and then add your project(s) to
graph.json(after removing the existing projects from the list). In this case, you can add the PAT yourself. - If you just want the settings without the updates, click 'Use this template' on GitHub (for a new project), or simply copy and paste the files (for an existing project).
Git Config is an upstream template for GitHub projects in general.