https://github.com/ivuorinen/dotfiles
These are my dotfiles. There are many like 'em, but these are mine.
https://github.com/ivuorinen/dotfiles
dotbot dotfiles fish fish-shell github-actions homebrew linux macos neovim oh-my-zsh shell tmux zsh
Last synced: about 1 month ago
JSON representation
These are my dotfiles. There are many like 'em, but these are mine.
- Host: GitHub
- URL: https://github.com/ivuorinen/dotfiles
- Owner: ivuorinen
- Created: 2022-06-14T19:53:55.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2026-05-16T12:23:46.000Z (about 1 month ago)
- Last Synced: 2026-05-16T14:37:04.353Z (about 1 month ago)
- Topics: dotbot, dotfiles, fish, fish-shell, github-actions, homebrew, linux, macos, neovim, oh-my-zsh, shell, tmux, zsh
- Language: Shell
- Homepage:
- Size: 14.5 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# .dotfiles
Welcome to [ivuorinen](https://github.com/ivuorinen)'s .dotfiles repository.
It's a hodgepodge of scripts and configurations, tests and mistakes I'm not
aware of yet. As I find more interesting tools, configs and other stuff,
this repository will live accordingly.
Please for the love of everything good do not use these 1:1 as your own dotfiles,
fork or download the repository as a zip and go from there with your own configs.
It would be nice if you'd add an issue linking to your fork or repo so I can
see what interesting stuff you've done with it. Sharing is caring.
## Setup
### First time setup
1. Clone this repository to `$HOME/.dotfiles`
2. `git submodule update --init --recursive`
3. `./install`
4. ???
5. Profit
### Updates
`cd $HOME/.dotfiles && git pull && ./install`
## The looks


## Interesting files and locations
### Interesting folders
| Path | Description |
|---------------------|----------------------------------------------|
| `.github` | GitHub Repository configuration files, meta. |
| `hosts/{hostname}/` | Configs that should apply to that host only. |
| `local/bin` | Helper scripts that I've collected or wrote. |
| `scripts` | Setup scripts. |
### Host specific configuration
Configurations under `hosts/` are applied only when running on the
matching machine. Each host folder contains its own `install.conf.yaml` that
is processed by Dotbot during installation.
### dotfile folders
| Repo | Destination | Description |
|-----------|-------------|-------------------------------------------|
| `base/` | `.*` | `$HOME` level files. |
| `config/` | `.config/` | Configurations for applications. |
| `local/` | `.local/` | XDG Base folder: `bin`, `share` and `man` |
| `ssh/` | `.ssh/` | SSH Configurations. |
### `dfm` - the dotfiles manager
[`.local/bin/dfm`][dfm] is a shell script that has some tools that help with dotfiles management.
Running `dfm` gives you a list of available commands.
#### Documentation generation
`dfm docs` regenerates the keybinding documentation under `docs/`. Available
subcommands:
```bash
dfm docs all # regenerate every keybinding doc
dfm docs tmux # tmux keybindings only
dfm docs nvim # nvim keybindings only
dfm docs wezterm # wezterm keybindings only
```
The `docs/` folder also contains other reference files (alias table,
folder layout, command catalogue) that are maintained directly rather
than via `dfm`.
## Configuration
The folder structure follows [XDG Base Directory Specification][xdg] where possible.
### XDG Variables
| Env | Default | Short description |
|--------------------|----------------------|------------------------------------------------|
| `$XDG_BIN_HOME` | `$HOME/.local/bin` | Local binaries |
| `$XDG_CONFIG_HOME` | `$HOME/.config` | User-specific configs |
| `$XDG_DATA_HOME` | `$HOME/.local/share` | User-specific data files |
| `$XDG_STATE_HOME` | `$HOME/.local/state` | App state that should persist between restarts |
Please see [docs/folders.md][docs-folders] for more information.
## Managing submodules
This repository uses Git submodules for external dependencies. After cloning,
run:
```bash
git submodule update --init --recursive
```
To pull submodule updates later use:
```bash
git submodule update --remote --merge
```
The helper script `add-submodules.sh` documents how each submodule is added and
configured. Submodules are automatically updated by the
[update-submodules.yml](.github/workflows/update-submodules.yml) workflow.
## Testing
Shell scripts under `local/bin` are validated with [Bats](https://github.com/bats-core/bats-core).
Run `yarn test` to execute every test file. Bats is installed as a development
dependency, so run `yarn install` first if needed.
[dfm]: https://github.com/ivuorinen/dotfiles/blob/main/local/bin/dfm
[docs-folders]: https://github.com/ivuorinen/dotfiles/blob/main/docs/folders.md
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html