Files
dotfiles/GETTING_STARTED.md
2026-05-04 09:53:30 +02:00

205 lines
4.1 KiB
Markdown

# Getting Started
This is a minimal development environment for Fedora Linux.
It uses GNU Stow to symlink config files into your home directory.
Everything is plain text. No magic. Read a file before you use it.
---
## What you need first
A Fedora machine with internet access and `git` installed:
```bash
sudo dnf install -y git
```
---
## Step 1 — Clone this repo
```bash
git clone git@your-gitea-instance:you/dotfiles.git ~/dotfiles
cd ~/dotfiles
```
---
## Step 2 — Read provision.sh
Before running any script, read it:
```bash
cat provision.sh
```
It installs: `stow`, `neovim`, `ripgrep`, `mise` — and symlinks the config
packages into your home directory. Nothing else.
When you are comfortable with what it does:
```bash
bash provision.sh --dry-run # see what would happen
bash provision.sh # run it
```
---
## Step 3 — Edit your git identity
The `.gitconfig` has placeholder values. Fill them in now:
```bash
nvim ~/.gitconfig
```
Change `Your Name` and `you@example.com` to your actual details.
---
## Step 4 — Install runtimes
```bash
mise install
```
This downloads Node.js (for TypeScript) and .NET (for C#/F#) into
`~/.local/share/mise/`. Nothing goes system-wide.
Check what was installed:
```bash
mise ls
```
---
## Step 5 — Open Neovim
```bash
nvim
```
On first launch, `lazy.nvim` installs all plugins automatically.
Wait for it to finish, then run:
```vim
:checkhealth
```
Fix any warnings it shows before moving on.
---
## Step 6 — Set up your notes repo
Notes are a separate private repo. Clone it to `~/notes/`:
```bash
git clone git@your-gitea-instance:you/notes.git ~/notes
```
The shell commands (`today`, `thisweek`, `inbox`, `tasks`, `decisions`)
expect `~/notes/` to exist with templates at `~/notes/templates/`.
They will not work until the notes repo is cloned.
Reload your shell so the note aliases are available:
```bash
source ~/.bashrc
```
Then try:
```bash
today # creates and opens today's daily note
inbox # opens inbox for capture
tasks # shows all open tasks across notes
```
---
## Daily workflow in 3 commands
```bash
inbox # capture anything during the day
today # open today's plan each morning
thisweek # open weekly review on Monday morning
```
---
## What is in this repo
```
dotfiles/
├── provision.sh # bootstrap script
├── GETTING_STARTED.md # this file
├── README.md # full reference
├── .gitignore
├── bash/
│ └── .bashrc # shell config, aliases, note commands
├── git/
│ └── .gitconfig # git settings (edit name/email)
├── mise/
│ └── .config/mise/
│ └── config.toml # node + dotnet versions
├── nvim/
│ └── .config/nvim/
│ └── init.lua # Neovim — read top to bottom
└── notes/ # templates only, not your actual notes
├── inbox.md
├── decisions.md
├── daily-template.md
└── weekly-template.md
```
---
## Adding a config file later
1. Create a package directory: `mkdir -p ~/dotfiles/mypackage`
2. Mirror the target path inside it — if the file belongs at
`~/.config/myapp/config`, create
`~/dotfiles/mypackage/.config/myapp/config`
3. Stow it: `stow --restow --target=$HOME --dir=~/dotfiles mypackage`
4. Commit
---
## Updating an existing config
Because stow creates symlinks, editing `~/.bashrc` is the same as editing
`~/dotfiles/bash/.bashrc`. Just open the file, save it, then commit:
```bash
cd ~/dotfiles
git add bash/.bashrc
git commit -m "bashrc: add alias for X"
git push
```
---
## Troubleshooting
**Stow says a file already exists**
The target file exists and is not a symlink. Back it up and remove it:
```bash
mv ~/.bashrc ~/.bashrc.bak
stow --restow --target=$HOME --dir=~/dotfiles bash
```
**Neovim plugins did not install**
Open nvim and run `:Lazy sync`
**mise runtimes not found after install**
Make sure your shell sourced `.bashrc`: `source ~/.bashrc`
Then check: `mise ls`