Skip to content

onnimonni/dotfiles

Repository files navigation

dotfiles

Coding should be fun!

@onnimonni dotfiles. I'm full stack developer but I mainly work on devops and backend. These are my configs. This is personal backup for myself but hopefully you find it useful too.

Big thanks for @anttiviljami for years of guidance. I hope someday I will learn to play vimgolf but until then I will need these cheats.

Stuff which is probably useful only for me

  • Custom keyboard mappings with karabiner-elements
  • This includes my own keyboard layout based on Dvorak ( I implemented small tweaks for finnish language ).

Installation on fresh MacOS

# Install Xcode Command line tools to get git
xcode-select --install

# Clone the dotfiles and run the installation script
git clone https://github.com/onnimonni/dotfiles ~/.dotfiles

~/.dotfiles/.install.sh

# Then create age key with secure enclave
mkdir -p ~/.config/sops/age/
age-plugin-se keygen --access-control none -o ~/.config/sops/age/secure-enclave-key.txt

Using this config with your own user

Run the generator script:

~/.dotfiles/scripts/generate-local-user.sh

Or create ~/.dotfiles/local-user.nix manually:

{
  hostname = "Your-Mac-Hostname";  # from: scutil --get LocalHostName
  username = "yourusername";       # from: whoami
  fullName = "Your Name";          # from: id -F
  email = "you@example.com";
}

Then rebuild:

sudo darwin-rebuild switch --flake ~/.dotfiles

To update everything

This command updates flake dependencies, nix, brew and duckdb extensions:

$ update-all

After installation config

  1. Create new ssh key in Secretive
  2. Copy the public key into ~/.ssh/secretive.pub
  3. Add it into Github as new SSH key both as signing key and authentication key

Add API key for Gemini

You can create a new API key to use Gemini from command line here: https://aistudio.google.com/app/apikey

echo 'export GEMINI_API_KEY="XXXXXX"' >> ~/.secrets.fish

Update configs from Github

# This only works in fish shell
$ update-dotfiles

Common fixes

warning: Nix search path entry

If you get following messages:

warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring

You can fix them by running:

sudo nix-channel --update nixos

Source

Karabiner is not working

Restart it by running (source):

launchctl kickstart -k gui/$(id -u)/org.pqrs.service.agent.karabiner_console_user_server

Docs for common procedures

Custom apps

MenuBarChameleon

Swift app that dynamically tints the macOS menu bar based on window content below it. Captures a color strip via ScreenCaptureKit, composites it onto the wallpaper top edge, and sets it as desktop image. macOS vibrancy then naturally samples the modified wallpaper.

# Build & install
apps/MenuBarChameleon/build.sh

# Run
open ~/Applications/MenuBarChameleon.app

Requires Screen Recording permission. Uses Apple Development signing identity for stable TCC.

MCP

Githits and context7 MCP are configured for Claude and Codex via nix-darwin modules. Codex itself is installed via Homebrew cask. ~/.codex/config.toml is generated as writable file so Codex can persist its own model prefs. Interactive shell sessions auto-handoff into fish. Non-interactive shell entry via the login shell falls back to bash. claude, codex, gemini, and opencode are wrapped via nix so they launch under bash with SHELL=/bin/bash instead of inheriting fish.

UNLICENSE

Use these dotfiles as you want to. Sharing is caring!

About

@onnimonni dotfiles

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors