2026-05-04 09:53:30 +02:00
2026-05-04 10:03:50 +02:00
2026-05-04 09:53:30 +02:00
2026-05-04 09:53:30 +02:00
2026-05-04 09:53:30 +02:00
2026-05-04 09:53:30 +02:00
2026-05-04 09:53:30 +02:00

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 / JavaScript
  • omnisharp — C# and F#
  • marksman — Markdown
  • lua_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 min
  • man bash — full bash reference
  • https://www.shellcheck.net — paste a script, get feedback
  • https://mywiki.wooledge.org/BashGuide — best bash guide
  • :help in nvim — the built-in docs are good
Description
No description provided
Readme 46 KiB
Languages
Lua 83.9%
Shell 16.1%