dotfiles
Minimal personal development environment for Fedora Linux.
Stack: Bash · Neovim · mise · GNU Stow
→ New machine? Start with GETTING_STARTED.md
How stow works
Stow creates symlinks from ~ into this repo, mirroring each package's
internal directory structure.
dotfiles/bash/.bashrc → ~/.bashrc
dotfiles/nvim/.config/nvim/init.lua → ~/.config/nvim/init.lua
Editing the symlink edits the repo file. Then commit like any other change.
To stow a single package:
stow --restow --target=$HOME --dir=~/dotfiles bash
Packages
| Package | Symlinks to | Purpose |
|---|---|---|
bash |
~/.bashrc |
Shell config, aliases, note functions |
git |
~/.gitconfig |
Git settings |
mise |
~/.config/mise/config.toml |
Runtime versions |
nvim |
~/.config/nvim/init.lua |
Neovim config |
Note commands in .bashrc expect templates at ~/notes/templates/.
These come from your notes repo, not this one.
Neovim
Config is a single init.lua — read it top to bottom before using it.
Plugins are managed by lazy.nvim which
bootstraps itself on first launch.
Installed plugins:
| Plugin | Purpose |
|---|---|
nvim-treesitter |
Syntax highlighting |
nvim-lspconfig + mason |
Language servers |
nvim-cmp |
Completion |
telescope.nvim |
Fuzzy finder |
Comment.nvim |
gc to comment |
vim-sleuth |
Auto-detect indent |
kanagawa.nvim |
Colorscheme |
Language servers installed automatically by Mason:
ts_ls— TypeScript / JavaScriptomnisharp— C# and F#marksman— Markdownlua_ls— Lua (for editing this config)
Keymaps (leader = Space):
| Keys | Action |
|---|---|
Space ff |
Find files |
Space fg |
Search text in files |
Space fb |
Switch buffer |
Space w |
Save |
Space e |
File explorer |
Space d |
Show diagnostic |
Space rn |
Rename symbol |
Space ca |
Code action |
gd |
Go to definition |
K |
Hover docs |
[d / ]d |
Prev / next diagnostic |
Ctrl+h/j/k/l |
Move between splits |
gcc |
Toggle comment |
mise — runtime versions
Configured in mise/.config/mise/config.toml.
mise install # install all configured versions
mise ls # list installed runtimes
mise ls-remote node # list available node versions
To pin a version in a specific project, add a .mise.toml to that project
directory. The global config here is the fallback.
Bash aliases
| Alias / Function | Does |
|---|---|
ll |
ls -lah with color |
.. / ... |
Navigate up one / two directories |
gs / ga / gc / gp / gl |
Git shortcuts |
today |
Open or create today's daily note |
thisweek |
Open or create this week's weekly note |
inbox |
Open inbox for quick capture |
tasks |
Grep all open tasks across notes |
decisions |
Open decisions log |
mkcd |
Create directory and cd into it |
bashrc |
Edit and reload .bashrc |
Notes workflow
Notes live in ~/notes/ — a separate private git repo, not this one.
The shell commands in .bashrc expect this structure to exist:
~/notes/
├── inbox.md
├── decisions.md
├── templates/
│ ├── daily.md
│ └── weekly.md
├── daily/
└── weekly/
Clone your notes repo to ~/notes/ before using the note commands.
Dependencies
| Tool | Install |
|---|---|
stow |
dnf install stow |
git |
dnf install git |
neovim |
dnf install neovim |
ripgrep |
dnf install ripgrep (needed by Telescope) |
mise |
curl https://mise.run | bash |
Learning resources
nvim +Tutor— built-in hands-on tutor, ~30 minman bash— full bash referencehttps://www.shellcheck.net— paste a script, get feedbackhttps://mywiki.wooledge.org/BashGuide— best bash guide:helpin nvim — the built-in docs are good