The Meowgorithm Dotfiles, Collectors’ Edition
CRUSH Configuration for Christian's Dotfiles
Overview
This is a hybrid dotfiles repository that uses direct symlinks for configuration management rather than Nix/Home Manager. The repository supports multiple platforms and uses different package managers depending on the OS.
Platform Support
- macOS (aarch64 and x86_64): Homebrew for packages, direct symlinks for configs
- NixOS (x86_64): Nix for system packages, direct symlinks for user configs
- Other Linux: System package manager (e.g., apt, pacman) + direct symlinks
- WSL: Treats as Linux
Setup & Management
Initial Setup
# Clone the repo
git clone <repo-url> ~/.dotfiles
cd ~/.dotfiles
# Install and link everything
./setup link
# Update all dependencies (installs tools via Homebrew, etc.)
./setup update
Symlink Management
The setup script manages configuration files via symlinks to this repository:
# Link all configs (backs up existing files)
./setup link
# Remove all symlinks
./setup remove
# Update dependencies
./setup update
Nix (for existing Nix systems only)
The flake exists primarily to remove Nix/Home Manager packages from existing systems:
# Enable flakes on non-NixOS systems
./enable-flakes
# Remove home-manager packages and clean up
nix run
# For NixOS systems (system configuration)
nixos-rebuild switch --flake .
# Deploy from remote
nixos-rebuild switch --flake github:meowgorithm/dotfiles/master
Skills
Skills go in the ./crush/skills directory, which is symlinked to ~/.config/crush/skills. When creating or managing skills, do not try and put them anywhere else.
Architecture
Configuration Structure
All user configurations are managed as direct symlinks from the repository:
- Shell:
bash/→~/.bashrc,~/.bash_profile,~/.profile - Editors:
nvim/,vim/,helix/→~/.config/ - Terminal:
kitty/,ghostty/→~/.config/ - Window Manager (NixOS):
hypr/,waybar/→~/.config/ - Tools:
tmux/,git/,ssh/,prettier/,fourmolu/→ various locations - Scripts:
scripts/→~/.bin/
Package Management
macOS:
- Uses
Brewfilefor all package management - Includes Homebrew formulas and casks
- Font management via symlinks
NixOS:
- System packages defined in
modules/nixos/default.nix - Only for system-level tools and services
- User packages are NOT managed via Nix
Other Linux:
- Uses system package manager (apt, pacman, etc.)
- Manual installation of tools via
./setup update
Functions & Utilities
Common bash functions available in bash/bash_funcs:
num_cores(): Returns number of CPU coreswhich_os(): Detects OS (darwin, nixos, void, arch, debian, linux)command_exists(): Checks if a command existsgetCharmRepos(): Lists all Charm repospickCharmRepo(): Interactive repo selection with gum
Supported Systems
Configured Hostnames
From flake.nix:
- artemis - NixOS desktop (x86_64-linux)
- whitenoise - NixOS desktop (x86_64-linux)
- pantera - Mac Studio (aarch64-darwin)
- meowmachine - MacBook Pro (aarch64-darwin)
- la-tigra - MacBook Air (aarch64-darwin)
- wsl - WSL (x86_64-linux, user: chris)
Desktop Environments
- NixOS: Hyprland + Waybar
- macOS: Native desktop with Kitty/Ghostty terminals
Important Notes
Nix is Being Phased Out
Nix and Home Manager are deprecated for user configuration. The flake only exists to:
- Remove existing Nix/Home Manager packages from systems
- Provide NixOS system configuration (Hyprland, system packages, services)
- Eventually be removed entirely
Workflow
- Add new config: Add file to repository, run
./setup link - Remove config: Delete symlink, run
./setup removeif needed - Update tools: Run
./setup updateto install/update dependencies
Migration Path
For systems still using Nix/Home Manager:
- Run
nix runto remove home-manager packages - Run
./setup linkto establish symlink-based configs - Eventually remove Nix entirely (except for NixOS systems)
Editor Configuration
Neovim
- Located in
nvim/init.lua - LSP setup, colorschemes (charmtone, pantera-negra)
- Snippets in
nvim/vsnip/
Vim
- Located in
vim/vimrc - Traditional vim configuration
- Plugins managed via
vim/plugged/
Helix
- Located in
helix/config.toml - Language configuration in
helix/languages.toml - Themes: maas, charm
Key Tools & Scripts
Scripts in ~/.bin/
tm,tmls: tmux utilitiessessions: Session managementinstall-stuff: Install additional toolsfix-docker-desktop: Fix Docker Desktop issuessetup-mouse,setup-wacom: Peripheral setup
GPG
gpg-send,gpg-recv: Key sharing utilitiesgpg-edit-key: Edit GPG keys- Encrypted environment files in
pantera/
Development Tools
- Format: Fourmolu (Haskell), Prettier, shfmt, stylua, gofumpt
- LSP: Language servers for Go, Lua, Python, etc.
- Git: Configured with useful aliases and hooks
Fonts
Custom fonts managed via fonts/ directory:
- Copied to
~/Library/Fonts/Meowgorithmon macOS via./setup - Includes: IBM Plex, Inter, JetBrains Mono, and custom fonts
Commit Style
All commit messages should:
- Be one line
- Be under 78 columns
- Include Crush attribution when appropriate