161 lines
3.9 KiB
Markdown
161 lines
3.9 KiB
Markdown
# 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
|