init
This commit is contained in:
204
GETTING_STARTED.md
Normal file
204
GETTING_STARTED.md
Normal file
@@ -0,0 +1,204 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user