205 lines
4.1 KiB
Markdown
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`
|