3.1 KiB
3.1 KiB
Home Manager Nix Configuration
This repository contains a Nix flake configuration for setting up a development environment with:
Supported Platforms
- Windows via WSL
- Linux (non-NixOS)
- macOS with M1 chips
Installed Tools
- tmux - Terminal multiplexer (using jakehamilton/tmux package)
- helix - Modern editor with language server support
- zsh - Enhanced shell
- starship - Minimal, fast prompt
- alacritty - Fast terminal emulator
- git - Version control system
- ssh - Secure shell client
- htop - Interactive process viewer
Programming Languages & Language Servers
- Odin - With OLS (Odin Language Server) - always included
- Harper - With Harper Language Server - always included
- Rust - With rust-analyzer - optional
- Python - With Pyright - optional
- JavaScript/TypeScript - With TypeScript Language Server - optional
- Go - With gopls - optional
- Java - With JDT Language Server - optional
Docker Support
- Docker Client - For container management
- Docker Compose - For multi-container applications
Git Configuration
- User Name: Configurable during setup
- User Email: Configurable during setup
Usage
To use this configuration with Home Manager:
- Make sure you have Nix installed
- Clone the repository from your remote source:
git clone https://gitea.tylerbohrer.dev/tyler/my-default-nix-home.git - Navigate to the directory:
cd my-default-nix-home - Run the Home Manager switch command:
nix run nixpkgs#home-manager -- switch --flake .
Alternatively, you can use the remote repository directly:
nix run nixpkgs#home-manager -- switch --flake https://gitea.tylerbohrer.dev/tyler/my-default-nix-home
The configuration will set up:
- Default shell to zsh
- Editor to helix
- Prompt to use starship
- Terminal to use alacritty
- All language servers properly configured
- Docker support for containerized development
- Git user configuration (name and email)
Customization
To enable additional programming languages:
- Edit
home-manager/home.nix - Change
enable = false;toenable = true;for desired languages - Run
home-manager switchto apply changes
Example:
rust = {
enable = true;
package = pkgs.rustc;
languageServer = pkgs.rust-analyzer;
lspName = "rust-analyzer";
};
Available Optional Languages
- Rust: For systems programming
- Python: For data science and scripting
- JavaScript/TypeScript: For web development
- Go: For backend services
- Java: For enterprise applications
Development Features
Docker Integration
Docker client and compose support are included for containerized development workflows.
Language Server Protocol
All supported languages include their respective language servers for enhanced IDE-like experience in Helix.
System Monitoring
htop is included for process monitoring and system resource tracking.
tmux Integration
Uses the tmux package from jakehamilton/tmux repository for enhanced tmux functionality.