No description
  • Shell 93.6%
  • AppleScript 6.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Tim Hårek Andreassen 9820be8eb7
All checks were successful
/ check (push) Successful in 10s
docs: Already migrated to all mise dotfiles
2026-09-09 15:29:22 +02:00
.bin notetaker: add todo cmd 2026-08-25 14:49:48 +02:00
.config mise: Formatting 2026-09-09 15:26:57 +02:00
.forgejo/workflows ci: Add default mise path 2026-09-09 15:26:25 +02:00
.gitignore gitignore: Local-only configs (isync, notmuch, art, .local) 2026-09-01 12:16:05 +02:00
LICENSE feat: Add license 2022-12-09 19:29:33 +01:00
macos mise: Move Safari defaults to guarded script 2026-09-01 15:35:05 +02:00
PLAN.md herdr: Update hax hack 2026-08-28 12:35:04 +02:00
README.md docs: Replace srht with forgejo 2026-09-09 15:29:06 +02:00
voyager-config.bin keyboard: Replace moonlander wtih voyager 2024-11-03 19:33:45 +01:00

build

dotfiles

My dotfiles for my macOS setup.

What I use

Fresh machine setup

  1. Install mise:

    curl https://mise.run | sh
    
  2. Bootstrap everything — mise clones this repo, pours Homebrew packages (formulae, casks, mas apps) into /opt/homebrew without the brew CLI, links dotfiles, sets macOS defaults, sets fish as the login shell, and installs all tools:

    ~/.local/bin/mise bootstrap --from git@src.timharek.no:tim/dotfiles.git --from-dir ~/dotfiles --update --yes
    

    (--from-dir ~/dotfiles puts the repo clone at ~/dotfiles instead of mise's data dir; --update fast-forwards an existing clone first — without it, mise reuses the existing checkout as-is.)

    The final bootstrap task (./macos) applies the sudo-only settings — it will ask for your password. New shells (fish) activate mise automatically via the linked config.fish.

Day-to-day

All package and tool declarations live in .config/mise/config.toml ([bootstrap.packages] + [tools]). Installing = updating that file + git commit. mise use -g ... does both halves of the install for you; plain brew install does not touch the config.

CLI tools (go/npm/cargo/ubi)

mise use -g go:github.com/some/tool/cmd/tool   # installs + adds to [tools]
mise use -g --remove go:github.com/some/tool/cmd/tool   # remove from config
mise uninstall go:github.com/some/tool/cmd/tool   # delete the binary (config untouched)

-g matters: without it, mise writes a local mise.toml in the current directory instead of the global config.

Homebrew formulae & casks

mise bootstrap packages use -g brew:jqp            # formula
mise bootstrap packages use -g brew-cask:raycast   # cask

If you installed with plain brew install instead, sync afterwards with mise bootstrap packages import -g (formulae only; casks must be added to the config by hand).

Mac App Store

mas has no sync — add "mas:<ADAM-ID>" = "latest" under [bootstrap.packages] by hand, or install via mise bootstrap packages use -g mas:<id> directly.

Removing packages

  1. Remove the entry: mise use -g --remove <tool> / delete the [bootstrap.packages] line.
  2. mise bootstrap packages prune — uninstalls brew packages no longer declared in the config (--dry-run to preview).

Upgrading

  • Upgrade everything: bu (= mise bootstrap packages upgrade, plus brew cleanup when the brew CLI is present)
  • Check for drift: mise bootstrap status --missing