init
This commit is contained in:
160
README.md
Normal file
160
README.md
Normal 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
|
||||
Reference in New Issue
Block a user