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
- Create a package directory:
mkdir -p ~/dotfiles/mypackage - Mirror the target path inside it — if the file belongs at
~/.config/myapp/config, create~/dotfiles/mypackage/.config/myapp/config - Stow it:
stow --restow --target=$HOME --dir=~/dotfiles mypackage - 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