54L1M's Shenanigans - Dotfiles
February 25, 2026 ยท View on GitHub
This repository contains personal dotfiles and system configuration for macOS. The setup is managed primarily by Nix and nix-darwin, with a collection of custom scripts to automate common workflows.
Philosophy
The goal is to create a reproducible and declarative development environment that is easy for others to adapt and use.
- Declarative System Management:
nix-darwinis used to manage system-level settings, services, and packages. This ensures the core environment is consistent and can be rebuilt from the configuration files. - Hybrid Package Management: The setup uses a combination of Nix Flakes and Homebrew (via
nix-homebrew). - Custom Scripting: A set of custom scripts in the
scripts/directory provides automation for project management, environment setup, and other common tasks.
Quick Start
This repository can be used to set up a new macOS machine from scratch.
1. Clone the Repository
Clone this repository to a location of your choice on your Mac. For example:
git clone https://github.com/54L1M/shenfiles.git ~/dotfiles
2. Customize (Optional)
This repository contains configurations for cloning personal projects. You can customize this by editing the repos file in the root of this repository. Simply add or remove lines to control which git repositories are cloned by the setup script.
3. Run the Setup Script
The main setup script will install Nix, apply the system configuration, and set up your environment.
# Navigate to the cloned directory
cd ~/dotfiles
# Run the setup script
./scripts/bin/setup.sh
By default, the setup script will also create a personalized directory structure and clone the repositories defined in the repos file. If you wish to install only the applications and system settings without creating personal directories, use the --no-dirs flag:
./scripts/bin/setup.sh --no-dirs
The setup.sh script will:
- Install Nix if it's not already present.
- Enable Flakes support for Nix.
- Apply the
nix-darwinconfiguration, which installs all managed packages and applications. - If run without
--no-dirs, it will execute thecreate_dirs.shscript to set up a personal directory structure and clone project repositories from thereposfile.
Managed Applications
This configuration manages a wide array of applications and tools, including:
Development:
- Neovim, VSCode
- Git & Lazygit
- Tmux & Tmuxifier
- Rust, Go, Node, Python
- Docker
- LSPs (Ruff, Pyright, gopls, etc.) and Formatters
Terminal & Shell:
- Alacritty, Ghostty
- Zsh, Starship, eza, bat, fzf, ripgrep
GUI Applications:
- Firefox, Google Chrome
- Slack, Discord, ChatGPT, Obsidian, Postman
Window Management:
- Aerospace, Sketchybar, Borders
Custom Scripts
This repository contains several powerful custom scripts to streamline workflows. For a detailed breakdown of what each script does, please see the Scripts README.
Structure
nix/: Contains the coreflake.nixand modules for thenix-darwinconfiguration.repos: A plain text file listing personal git repositories to be cloned by the setup process.nvim/,tmux/, etc.: Application-specific configuration files (dotfiles).scripts/: Custom shell scripts, including the mainsetup.shscript._archive/: Older or unused configurations.