This is the configuration for my personal development environment.
I use this repository to
- explain and share ideas with others
- share the configuration between my machines
- keep track of the changes I make to my configuration
- run end-to-end tests in Github Actions
- Microsoft (owner of Github) graciously offers this for free for public repositories (sources: 2019 announcement, "The use of these runners on public repositories is free and unlimited")
My keyboard is an ErgoDox EZ. It is a split keyboard with mechanical switches.
My keyboard layout is based on DAS, a layout optimized for the Finnish language created by Cristian Seres.
The layout and all its customizations are embedded in the keyboard's firmware using QMK.
Because this is a personal configuration, it is not meant to be installed by others. However, you can use it as a reference for your own configuration.
Here are the basics:
I manage my dotfiles with GNU Stow. It creates symlinks from the repository to the home directory. See here for an introduction by Shawn McElroy.
This way I can keep the configuration under version control and still have it in the home directory.
# Sync the dotfiles (practice run)
stow --verbose 2 . --simulate
# Really sync the dotfiles
stow --verbose 2 .Many of the packages I use have some kind of custom dependencies:
- many tools are installed using mise(see .config/mise/config.toml) and automatically updated using renovate
- neovim plugins are managed using lazy.nvim
- my terminal file manager is yazi. Its plugins are managed using lazy.nvim as well. The approach is explained in detail in yazi.nvim's plugin-management.md. The config is available here, but the short version is that it uses lazy.nvim to download and update the dependencies, and then creates symlinks whenever they are installed/updated.
- plugins for other applications are also managed with the same approach to keep things simple. An example can be seen here.
Instead of managing an installation script, I have a test that I can run in neovim.
The test checks that I have all the applications installed, and acts as a reminder.
" in neovim
:checkhealthI have an end-to-end testing setup in integration-tests. It uses https://github.com/mikavilpas/tui-sandbox to run the tests.
Lately I have been experimenting with implementing common development scripts in rust. These are also e2e tested with Github Actions.
Here is how the files in this repository are formatted. Since I am the only maintainer, most use the editor's "format on save" functionality.
| Filetype | Formatter | Notes |
|---|---|---|
| Markdown | prettier | |
| TOML | taplo | Run with taplo format |
I use lazygit and the tsugit.nvim plugin to use git.
Some features that I like:
- an AI (in my case, Github Copilot) helps me write commit messages in Neovim when using tsugit.nvim
- I set up conform.nvim to use prettierd to format my gitcommit messages using markdown syntax. See my conform.nvim configuration for details on how I did it.
