Skip to content

SgtSwagrid/scala-config

Repository files navigation

⚙️ Scala Config

The single source of truth for basic configuration across all of my Scala 3 projects.

👷 What's the workflow?

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.

📋 What's included?

Continuous integration

  • Git settings including .gitignore and .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.

IDE configuration

  • 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.

Licensing

  • The MIT license, which I tend to use by default as it is fairly permissive.

🏗️ Where is this used?

The full list of projects that rely on this configuration is defined in graph.json.

🤔 Should I use this in my projects too?

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.

🔨 How can this be used?

You have several options:

  1. 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.
  2. 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.
  3. 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).

👁️ See also

Git Config is an upstream template for GitHub projects in general.

About

⚙️ The single source of truth for basic configuration across all of my Scala projects, with automatic synchronisation by GitHub Graph.

Topics

Resources

License

Stars

Watchers

Forks

Contributors