This commit is contained in:
2026-05-04 09:53:30 +02:00
commit c0aefae3fb
11 changed files with 984 additions and 0 deletions

160
README.md Normal file
View File

@@ -0,0 +1,160 @@
# dotfiles
Minimal personal development environment for Fedora Linux.
**Stack:** Bash · Neovim · mise · GNU Stow
**New machine?** Start with [GETTING_STARTED.md](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:
```bash
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](https://github.com/folke/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`.
```bash
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