An open API service indexing awesome lists of open source software.

https://github.com/singhmanavjot/nix-config

Personal Nix configuration monorepo for NixOS and nix-darwin systems
https://github.com/singhmanavjot/nix-config

configuration-management dotfiles home-manager homebrew macos neovim nix nix-darwin nix-flakes nixos nixvim terminal

Last synced: 3 months ago
JSON representation

Personal Nix configuration monorepo for NixOS and nix-darwin systems

Awesome Lists containing this project

README

          

# Nix Configuration

Personal Nix configuration monorepo managing macOS system configurations
using nix-darwin and home-manager.

## Quick Start

### Prerequisites

- Nix with flakes enabled
- [nh](https://github.com/viperML/nh) (recommended) or darwin-rebuild

### Building and Applying

```bash
# Build configuration without applying changes
nh darwin build .

# Build and apply changes
nh darwin switch .
```

### Alternative commands

```bash
# Using darwin-rebuild
darwin-rebuild build --flake .
darwin-rebuild switch --flake .
```

## Development

### Development Environment

```bash
# Enter development shell
devenv shell

# Start development services
devenv up
```

### Testing and Validation

```bash
# Validate flake configuration
nix flake check

# Run test suite (builds Darwin and NixOS variants)
devenv test
```

## Project Structure

```text
├── darwin/ # macOS system-level configuration (nix-darwin)
│ ├── _mixins/ # Modular system configurations
│ └── default.nix # Main Darwin configuration
├── home-manager/ # User-level configuration
│ ├── nixvim/ # Neovim configuration
│ ├── ghostty/ # Terminal emulator config
│ └── ... # Other user applications
├── lib/ # Helper functions and utilities
├── secrets/ # SOPS-encrypted secrets
└── flake.nix # Flake definition and outputs
```

### Key Features

- **Modular Architecture**: Organized mixins for easy configuration management
- **Comprehensive Tooling**: DevOps, security, and development tools included
- **Secrets Management**: SOPS integration with age encryption
- **Pre-commit Hooks**: Automated formatting and linting
- **Cross-platform Testing**: Validates both Darwin and NixOS builds

## Configuration Management

### System Configuration (Darwin)

Located in `darwin/` directory:

- System preferences and keyboard settings
- Homebrew integration for GUI applications
- Nix daemon configuration

### User Configuration (Home Manager)

Located in `home-manager/` directory:

- Complete Neovim setup with LSP support
- Shell configuration (zsh, starship)
- Terminal applications (tmux, ghostty)
- Development tools and utilities

## Secrets

Secrets are managed using SOPS with age encryption:

- Store secrets in `secrets/secrets.yaml`
- Age key file: `$HOME/.config/sops/age/keys.txt`

## Development Tools

Includes comprehensive tooling for:

- **DevOps**: kubectl, helm, terraform, docker, kind
- **Security**: trivy, cosign, syft, age, sops
- **Development**: Language servers, formatters, linters
- **Utilities**: bat, ripgrep, fd, fzf, lazygit

## Platform Support

- Primary target: Apple Silicon (aarch64-darwin)
- Homebrew with Rosetta support for x86 applications
- Integrated Darwin and home-manager configurations