# 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`