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

4.1 KiB

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:

sudo dnf install -y git

Step 1 — Clone this repo

git clone git@your-gitea-instance:you/dotfiles.git ~/dotfiles
cd ~/dotfiles

Step 2 — Read provision.sh

Before running any script, read it:

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 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:

nvim ~/.gitconfig

Change Your Name and you@example.com to your actual details.


Step 4 — Install runtimes

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:

mise ls

Step 5 — Open Neovim

nvim

On first launch, lazy.nvim installs all plugins automatically. Wait for it to finish, then run:

: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/:

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:

source ~/.bashrc

Then try:

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

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:

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:

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