temp add
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
# Automatically load nix flake devShell when entering this directory
|
||||||
|
# Requires direnv to be installed and hooked into your shell
|
||||||
|
use flake
|
||||||
|
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
# Nix build results
|
||||||
|
result
|
||||||
|
result-*
|
||||||
|
|
||||||
|
# Direnv
|
||||||
|
.direnv/
|
||||||
|
.envrc.cache
|
||||||
|
|
||||||
|
# Editor files
|
||||||
|
.vscode/
|
||||||
|
.idea/
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
*~
|
||||||
|
.DS_Store
|
||||||
|
|
||||||
|
# Backup files
|
||||||
|
*.backup
|
||||||
|
*.bak
|
||||||
|
|
||||||
|
# Hardware configuration (may contain sensitive info)
|
||||||
|
# Uncomment if you don't want to commit it:
|
||||||
|
# nixos/hardware-configuration.nix
|
||||||
|
|
||||||
+296
@@ -0,0 +1,296 @@
|
|||||||
|
# Installation Guide
|
||||||
|
|
||||||
|
## First-Time Setup
|
||||||
|
|
||||||
|
### On macOS
|
||||||
|
|
||||||
|
#### 1. Install Nix (if not already installed)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sh <(curl -L https://nixos.org/nix/install)
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. Enable Flakes
|
||||||
|
|
||||||
|
Create or edit `~/.config/nix/nix.conf`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p ~/.config/nix
|
||||||
|
cat <<EOF > ~/.config/nix/nix.conf
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Restart your terminal or run:
|
||||||
|
```bash
|
||||||
|
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. Configure Your System
|
||||||
|
|
||||||
|
Edit the following files:
|
||||||
|
|
||||||
|
**In `flake.nix`:**
|
||||||
|
- Line 82-97: Replace `your-hostname` with your actual hostname (run `hostname` to find it)
|
||||||
|
- Line 94: Replace `your-username` with your actual username (run `whoami`)
|
||||||
|
|
||||||
|
**In `darwin/configuration.nix`:**
|
||||||
|
- Line 33-34: Set your hostname
|
||||||
|
- Line 45: Set your architecture:
|
||||||
|
- Apple Silicon (M1/M2/M3): `"aarch64-darwin"`
|
||||||
|
- Intel: `"x86_64-darwin"`
|
||||||
|
- Line 48-51: Set your username
|
||||||
|
|
||||||
|
**In `home-manager/home.nix`:**
|
||||||
|
- Line 30: Set your username
|
||||||
|
|
||||||
|
**In `home-manager/development.nix`** (optional):
|
||||||
|
- Uncomment lines for your git name and email
|
||||||
|
|
||||||
|
#### 4. Build and Apply
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Build the darwin configuration (first time)
|
||||||
|
nix build .#darwinConfigurations.YOUR-HOSTNAME.system --extra-experimental-features "nix-command flakes"
|
||||||
|
|
||||||
|
# Apply it
|
||||||
|
./result/sw/bin/darwin-rebuild switch --flake .#YOUR-HOSTNAME
|
||||||
|
```
|
||||||
|
|
||||||
|
After the first successful build, you can use:
|
||||||
|
```bash
|
||||||
|
darwin-rebuild switch --flake .#YOUR-HOSTNAME
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 5. Reload Your Shell
|
||||||
|
|
||||||
|
Close and reopen your terminal, or source your shell config:
|
||||||
|
```bash
|
||||||
|
# For zsh:
|
||||||
|
source ~/.zshrc
|
||||||
|
|
||||||
|
# For fish:
|
||||||
|
source ~/.config/fish/config.fish
|
||||||
|
|
||||||
|
# For bash:
|
||||||
|
source ~/.bashrc
|
||||||
|
```
|
||||||
|
|
||||||
|
### On NixOS
|
||||||
|
|
||||||
|
#### 1. Clone This Repository
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# As root or with sudo
|
||||||
|
cd /etc/nixos
|
||||||
|
git clone <your-repo-url> .
|
||||||
|
# Or copy your files to /etc/nixos
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 2. Configure Your System
|
||||||
|
|
||||||
|
Edit the following files:
|
||||||
|
|
||||||
|
**In `flake.nix`:**
|
||||||
|
- Line 59-75: Replace `your-hostname` with your actual hostname
|
||||||
|
- Line 72: Replace `your-username` with your actual username
|
||||||
|
|
||||||
|
**In `nixos/configuration.nix`:**
|
||||||
|
- Line 38: Set your hostname
|
||||||
|
- Line 43-54: Configure your user account
|
||||||
|
- Uncomment line 47-51 if you want to set an initial password
|
||||||
|
|
||||||
|
**In `home-manager/home.nix`:**
|
||||||
|
- Line 30: Set your username
|
||||||
|
|
||||||
|
**In `home-manager/development.nix`** (optional):
|
||||||
|
- Uncomment lines for your git name and email
|
||||||
|
|
||||||
|
#### 3. Generate Hardware Configuration
|
||||||
|
|
||||||
|
If you haven't already:
|
||||||
|
```bash
|
||||||
|
sudo nixos-generate-config --show-hardware-config > nixos/hardware-configuration.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 4. Build and Apply
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch --flake .#YOUR-HOSTNAME
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 5. Reboot (optional but recommended)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo reboot
|
||||||
|
```
|
||||||
|
|
||||||
|
## Updating Your Configuration
|
||||||
|
|
||||||
|
### Update Flake Inputs (packages)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix flake update
|
||||||
|
```
|
||||||
|
|
||||||
|
Then rebuild:
|
||||||
|
```bash
|
||||||
|
# macOS:
|
||||||
|
darwin-rebuild switch --flake .#YOUR-HOSTNAME
|
||||||
|
|
||||||
|
# NixOS:
|
||||||
|
sudo nixos-rebuild switch --flake .#YOUR-HOSTNAME
|
||||||
|
```
|
||||||
|
|
||||||
|
### Making Configuration Changes
|
||||||
|
|
||||||
|
1. Edit the relevant configuration files
|
||||||
|
2. Rebuild and switch:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# macOS:
|
||||||
|
darwin-rebuild switch --flake .
|
||||||
|
|
||||||
|
# NixOS:
|
||||||
|
sudo nixos-rebuild switch --flake .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Testing Changes Before Applying
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# macOS:
|
||||||
|
darwin-rebuild build --flake .
|
||||||
|
|
||||||
|
# NixOS:
|
||||||
|
sudo nixos-rebuild build --flake .
|
||||||
|
```
|
||||||
|
|
||||||
|
If the build succeeds, you can then apply with `switch`.
|
||||||
|
|
||||||
|
## Common Customizations
|
||||||
|
|
||||||
|
### Add User Packages
|
||||||
|
|
||||||
|
Edit `home-manager/common.nix`, `home-manager/development.nix`, or the platform-specific files:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
vscode
|
||||||
|
ripgrep
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enable a Program
|
||||||
|
|
||||||
|
Most programs can be enabled via home-manager options:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
programs.firefox.enable = true;
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Your Name";
|
||||||
|
userEmail = "you@example.com";
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### Add System Packages
|
||||||
|
|
||||||
|
Edit `common.nix` or the platform-specific configuration:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customize Shell
|
||||||
|
|
||||||
|
Edit `home-manager/shell.nix` to configure bash, zsh, fish, or starship prompt.
|
||||||
|
|
||||||
|
### macOS System Defaults
|
||||||
|
|
||||||
|
Edit `darwin/configuration.nix` to customize macOS behavior (Dock, Finder, keyboard, etc.).
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Build Fails with "experimental Nix feature 'flakes' is disabled"
|
||||||
|
|
||||||
|
Make sure you've enabled flakes in `~/.config/nix/nix.conf`:
|
||||||
|
```
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
```
|
||||||
|
|
||||||
|
### "error: collision between..."
|
||||||
|
|
||||||
|
This means two packages are trying to install the same files. Check for:
|
||||||
|
- Duplicate packages in system and home-manager configs
|
||||||
|
- Conflicting package versions
|
||||||
|
|
||||||
|
### macOS: "Could not find nix-darwin"
|
||||||
|
|
||||||
|
On first install, you need to build with the full path:
|
||||||
|
```bash
|
||||||
|
nix build .#darwinConfigurations.YOUR-HOSTNAME.system
|
||||||
|
./result/sw/bin/darwin-rebuild switch --flake .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Home Manager File Conflicts
|
||||||
|
|
||||||
|
If home-manager tries to manage files that already exist, back them up:
|
||||||
|
```bash
|
||||||
|
# Create backups of existing files
|
||||||
|
for file in ~/.bashrc ~/.zshrc ~/.config/fish/config.fish; do
|
||||||
|
[ -f "$file" ] && mv "$file" "$file.backup"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
Or use the backup flag:
|
||||||
|
```bash
|
||||||
|
home-manager switch --flake . --backup-extension .backup
|
||||||
|
```
|
||||||
|
|
||||||
|
### Can't Find Your Hostname
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# macOS and Linux:
|
||||||
|
hostname
|
||||||
|
|
||||||
|
# If it's not what you expect, you can change it:
|
||||||
|
# macOS (temporarily):
|
||||||
|
sudo scutil --set HostName your-new-hostname
|
||||||
|
|
||||||
|
# NixOS: Set in configuration.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rollback to Previous Generation
|
||||||
|
|
||||||
|
If a new configuration breaks something:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# macOS:
|
||||||
|
darwin-rebuild --rollback
|
||||||
|
|
||||||
|
# NixOS:
|
||||||
|
sudo nixos-rebuild --rollback
|
||||||
|
```
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
After installation:
|
||||||
|
|
||||||
|
1. **Customize your configuration** - Edit the home-manager modules to suit your workflow
|
||||||
|
2. **Add your development tools** - Uncomment languages/tools you need in `development.nix`
|
||||||
|
3. **Configure Git** - Set your name and email in `development.nix`
|
||||||
|
4. **Set up shell** - Choose your preferred shell and customize in `shell.nix`
|
||||||
|
5. **Explore options** - Check out [Home Manager options](https://nix-community.github.io/home-manager/options.html)
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
- [NixOS Discourse](https://discourse.nixos.org/)
|
||||||
|
- [Nix Discord](https://discord.gg/RbvHtGa)
|
||||||
|
- [r/NixOS](https://www.reddit.com/r/NixOS/)
|
||||||
|
- [Nix Documentation](https://nixos.org/learn.html)
|
||||||
|
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
.PHONY: help darwin-build darwin-switch nixos-build nixos-switch home-build home-switch update clean fmt check
|
||||||
|
|
||||||
|
# Default target
|
||||||
|
help:
|
||||||
|
@echo "Available targets:"
|
||||||
|
@echo " make darwin-build - Build darwin configuration (macOS)"
|
||||||
|
@echo " make darwin-switch - Build and activate darwin configuration"
|
||||||
|
@echo " make nixos-build - Build NixOS configuration (Linux)"
|
||||||
|
@echo " make nixos-switch - Build and activate NixOS configuration"
|
||||||
|
@echo " make home-build - Build home-manager configuration (standalone)"
|
||||||
|
@echo " make home-switch - Build and activate home-manager configuration"
|
||||||
|
@echo " make update - Update flake inputs"
|
||||||
|
@echo " make fmt - Format nix files"
|
||||||
|
@echo " make check - Check flake"
|
||||||
|
@echo " make clean - Clean build artifacts and old generations"
|
||||||
|
@echo ""
|
||||||
|
@echo "Note: Set HOSTNAME variable to use a specific host, e.g.:"
|
||||||
|
@echo " make darwin-switch HOSTNAME=macbook"
|
||||||
|
|
||||||
|
# Auto-detect hostname
|
||||||
|
HOSTNAME ?= $(shell hostname | cut -d. -f1)
|
||||||
|
USERNAME ?= $(shell whoami)
|
||||||
|
|
||||||
|
# macOS targets
|
||||||
|
darwin-build:
|
||||||
|
nix build .#darwinConfigurations.$(HOSTNAME).system
|
||||||
|
|
||||||
|
darwin-switch:
|
||||||
|
darwin-rebuild switch --flake .#$(HOSTNAME)
|
||||||
|
|
||||||
|
# NixOS targets
|
||||||
|
nixos-build:
|
||||||
|
nixos-rebuild build --flake .#$(HOSTNAME)
|
||||||
|
|
||||||
|
nixos-switch:
|
||||||
|
sudo nixos-rebuild switch --flake .#$(HOSTNAME)
|
||||||
|
|
||||||
|
# Home Manager targets (standalone)
|
||||||
|
home-build:
|
||||||
|
home-manager build --flake .#$(USERNAME)@$(HOSTNAME)
|
||||||
|
|
||||||
|
home-switch:
|
||||||
|
home-manager switch --flake .#$(USERNAME)@$(HOSTNAME)
|
||||||
|
|
||||||
|
# Maintenance
|
||||||
|
update:
|
||||||
|
nix flake update
|
||||||
|
|
||||||
|
fmt:
|
||||||
|
nix fmt
|
||||||
|
|
||||||
|
check:
|
||||||
|
nix flake check
|
||||||
|
|
||||||
|
clean:
|
||||||
|
@echo "Cleaning old generations..."
|
||||||
|
@if [ "$$(uname)" = "Darwin" ]; then \
|
||||||
|
nix-collect-garbage -d; \
|
||||||
|
darwin-rebuild --list-generations | tail -5; \
|
||||||
|
else \
|
||||||
|
sudo nix-collect-garbage -d; \
|
||||||
|
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system | tail -5; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Git helpers (optional)
|
||||||
|
.PHONY: commit-update
|
||||||
|
commit-update:
|
||||||
|
git add flake.lock
|
||||||
|
git commit -m "chore: update flake inputs"
|
||||||
|
|
||||||
+260
@@ -0,0 +1,260 @@
|
|||||||
|
# Quick Start Guide
|
||||||
|
|
||||||
|
## TL;DR
|
||||||
|
|
||||||
|
### macOS Setup (3 steps)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Configure your info
|
||||||
|
export USERNAME="your-username"
|
||||||
|
export HOSTNAME="your-hostname"
|
||||||
|
|
||||||
|
# Edit these files and replace placeholders:
|
||||||
|
# - flake.nix (line 82-94)
|
||||||
|
# - darwin/configuration.nix (lines 33, 45, 48)
|
||||||
|
# - home-manager/home.nix (line 30)
|
||||||
|
|
||||||
|
# 2. Build (first time only)
|
||||||
|
nix build .#darwinConfigurations.$HOSTNAME.system --extra-experimental-features "nix-command flakes"
|
||||||
|
./result/sw/bin/darwin-rebuild switch --flake .#$HOSTNAME
|
||||||
|
|
||||||
|
# 3. Apply (after first time)
|
||||||
|
darwin-rebuild switch --flake .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Linux/NixOS Setup (2 steps)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Configure your info
|
||||||
|
# Edit flake.nix, nixos/configuration.nix, home-manager/home.nix
|
||||||
|
# Replace placeholders with your username and hostname
|
||||||
|
|
||||||
|
# 2. Apply
|
||||||
|
sudo nixos-rebuild switch --flake .#your-hostname
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What You Get
|
||||||
|
|
||||||
|
### ✅ Cross-Platform Support
|
||||||
|
- Same config works on macOS (via nix-darwin) and Linux (NixOS)
|
||||||
|
- Automatic platform detection
|
||||||
|
- Shared home-manager configuration
|
||||||
|
|
||||||
|
### ✅ Modular Home Manager
|
||||||
|
Your user environment is organized into:
|
||||||
|
- **common.nix** - Basic tools (git, ripgrep, etc.)
|
||||||
|
- **development.nix** - Dev tools (gh, lazygit, direnv)
|
||||||
|
- **shell.nix** - Shell config (bash/zsh/fish + starship prompt)
|
||||||
|
- **terminal.nix** - Terminal apps (tmux, neovim, alacritty)
|
||||||
|
- **linux.nix** - Linux-specific GUI apps
|
||||||
|
- **darwin.nix** - macOS-specific integrations
|
||||||
|
|
||||||
|
### ✅ Great Defaults
|
||||||
|
- Modern CLI tools (ripgrep, fd, bat, eza, zoxide, fzf)
|
||||||
|
- Starship prompt with git integration
|
||||||
|
- Syntax highlighting and autosuggestion
|
||||||
|
- Git aliases and better defaults
|
||||||
|
- macOS system preferences (dock, finder, keyboard)
|
||||||
|
- Automatic garbage collection
|
||||||
|
- Nix flakes enabled
|
||||||
|
|
||||||
|
### ✅ Easy Maintenance
|
||||||
|
```bash
|
||||||
|
# Update everything
|
||||||
|
make update && make darwin-switch # or make nixos-switch
|
||||||
|
|
||||||
|
# Format code
|
||||||
|
make fmt
|
||||||
|
|
||||||
|
# Clean old generations
|
||||||
|
make clean
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## File Structure Quick Reference
|
||||||
|
|
||||||
|
```
|
||||||
|
├── flake.nix ← Define all your systems here
|
||||||
|
├── common.nix ← Shared Nix settings
|
||||||
|
│
|
||||||
|
├── darwin/ ← macOS system config
|
||||||
|
│ └── configuration.nix
|
||||||
|
│
|
||||||
|
├── nixos/ ← Linux system config
|
||||||
|
│ └── configuration.nix
|
||||||
|
│
|
||||||
|
└── home-manager/ ← Your user environment (SHARED!)
|
||||||
|
├── home.nix ← Main entry point
|
||||||
|
├── common.nix ← Base config
|
||||||
|
├── development.nix ← Dev tools
|
||||||
|
├── shell.nix ← Shell setup
|
||||||
|
├── terminal.nix ← Terminal apps
|
||||||
|
├── linux.nix ← Linux-only
|
||||||
|
└── darwin.nix ← macOS-only
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Common Tasks
|
||||||
|
|
||||||
|
### Add a Package
|
||||||
|
|
||||||
|
**User package** (recommended):
|
||||||
|
```nix
|
||||||
|
# home-manager/common.nix
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
your-package-here
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
**System package**:
|
||||||
|
```nix
|
||||||
|
# common.nix or darwin/configuration.nix or nixos/configuration.nix
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
your-package-here
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enable a Program
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# In any home-manager/*.nix file
|
||||||
|
programs.firefox.enable = true;
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
extensions = with pkgs.vscode-extensions; [
|
||||||
|
bbenoist.nix
|
||||||
|
];
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### Platform-Specific Packages
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# In home-manager/common.nix or development.nix
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Shared
|
||||||
|
ripgrep
|
||||||
|
fd
|
||||||
|
] ++ lib.optionals stdenv.isDarwin [
|
||||||
|
# macOS only
|
||||||
|
] ++ lib.optionals stdenv.isLinux [
|
||||||
|
# Linux only
|
||||||
|
];
|
||||||
|
```
|
||||||
|
|
||||||
|
### Change Shell
|
||||||
|
|
||||||
|
```nix
|
||||||
|
# In home-manager/shell.nix, set enable = true for your preferred shell:
|
||||||
|
programs.fish.enable = true; # Fish (recommended)
|
||||||
|
programs.zsh.enable = true; # Zsh
|
||||||
|
programs.bash.enable = true; # Bash
|
||||||
|
```
|
||||||
|
|
||||||
|
Then on macOS, set in `darwin/configuration.nix`:
|
||||||
|
```nix
|
||||||
|
programs.fish.enable = true; # or zsh/bash
|
||||||
|
```
|
||||||
|
|
||||||
|
On NixOS, set in `nixos/configuration.nix`:
|
||||||
|
```nix
|
||||||
|
users.users.your-username.shell = pkgs.fish; # or zsh/bash
|
||||||
|
```
|
||||||
|
|
||||||
|
### Add SSH Keys
|
||||||
|
|
||||||
|
macOS:
|
||||||
|
```nix
|
||||||
|
# darwin/configuration.nix
|
||||||
|
users.users.your-username = {
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAA... your-key"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
NixOS:
|
||||||
|
```nix
|
||||||
|
# nixos/configuration.nix
|
||||||
|
users.users.your-username = {
|
||||||
|
openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAA... your-key"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### Multiple Machines
|
||||||
|
|
||||||
|
Add entries in `flake.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
darwinConfigurations = {
|
||||||
|
macbook = darwin.lib.darwinSystem { ... };
|
||||||
|
mac-mini = darwin.lib.darwinSystem { ... };
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosConfigurations = {
|
||||||
|
desktop = nixpkgs.lib.nixosSystem { ... };
|
||||||
|
laptop = nixpkgs.lib.nixosSystem { ... };
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Then build with:
|
||||||
|
```bash
|
||||||
|
darwin-rebuild switch --flake .#macbook
|
||||||
|
# or
|
||||||
|
sudo nixos-rebuild switch --flake .#desktop
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting One-Liners
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Check flake is valid
|
||||||
|
nix flake check
|
||||||
|
|
||||||
|
# Show flake outputs
|
||||||
|
nix flake show
|
||||||
|
|
||||||
|
# Build without switching (test)
|
||||||
|
darwin-rebuild build --flake . # macOS
|
||||||
|
sudo nixos-rebuild build --flake . # Linux
|
||||||
|
|
||||||
|
# Rollback
|
||||||
|
darwin-rebuild --rollback # macOS
|
||||||
|
sudo nixos-rebuild --rollback # Linux
|
||||||
|
|
||||||
|
# Force rebuild
|
||||||
|
darwin-rebuild switch --flake . --recreate-lock-file
|
||||||
|
|
||||||
|
# View current generation
|
||||||
|
darwin-rebuild --list-generations # macOS
|
||||||
|
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system # Linux
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Next Steps
|
||||||
|
|
||||||
|
1. ⚙️ **Customize `home-manager/development.nix`** - Add your dev tools
|
||||||
|
2. 🎨 **Tweak `home-manager/shell.nix`** - Customize your prompt and aliases
|
||||||
|
3. 🖥️ **Adjust `darwin/configuration.nix`** - Set macOS preferences
|
||||||
|
4. 📦 **Add packages** - Browse [search.nixos.org](https://search.nixos.org)
|
||||||
|
5. 🔧 **Create modules** - Extract common patterns into `modules/home-manager/`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Help & Resources
|
||||||
|
|
||||||
|
- 📖 [Full README](./README.md) - Complete documentation
|
||||||
|
- 🚀 [INSTALL.md](./INSTALL.md) - Detailed installation guide
|
||||||
|
- 🔍 [NixOS Search](https://search.nixos.org) - Find packages and options
|
||||||
|
- 💬 [NixOS Discourse](https://discourse.nixos.org) - Community forum
|
||||||
|
- 🎮 [Nix Discord](https://discord.gg/RbvHtGa) - Real-time chat
|
||||||
|
|
||||||
@@ -0,0 +1,249 @@
|
|||||||
|
# Cross-Platform Nix Configuration
|
||||||
|
|
||||||
|
A modular Nix configuration that works on both macOS (via nix-darwin) and Linux (NixOS), with maximum config sharing through home-manager.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
├── flake.nix # Main flake configuration
|
||||||
|
├── common.nix # Shared system-level config (NixOS & nix-darwin)
|
||||||
|
│
|
||||||
|
├── darwin/ # macOS system configuration
|
||||||
|
│ └── configuration.nix
|
||||||
|
│
|
||||||
|
├── nixos/ # NixOS system configuration
|
||||||
|
│ ├── configuration.nix
|
||||||
|
│ └── hardware-configuration.nix
|
||||||
|
│
|
||||||
|
├── home-manager/ # User environment (shared across platforms)
|
||||||
|
│ ├── home.nix # Main home-manager config
|
||||||
|
│ ├── common.nix # Base configuration
|
||||||
|
│ ├── development.nix # Development tools
|
||||||
|
│ ├── shell.nix # Shell configuration
|
||||||
|
│ ├── terminal.nix # Terminal apps & utilities
|
||||||
|
│ ├── linux.nix # Linux-specific overrides
|
||||||
|
│ └── darwin.nix # macOS-specific overrides
|
||||||
|
│
|
||||||
|
├── modules/
|
||||||
|
│ ├── home-manager/ # Shared home-manager modules
|
||||||
|
│ ├── nixos/ # NixOS-specific modules
|
||||||
|
│ └── darwin/ # nix-darwin-specific modules
|
||||||
|
│
|
||||||
|
├── overlays/ # Package overlays
|
||||||
|
│ └── default.nix
|
||||||
|
│
|
||||||
|
└── pkgs/ # Custom packages
|
||||||
|
└── default.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Getting Started
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
**On macOS:**
|
||||||
|
1. Install Nix: `sh <(curl -L https://nixos.org/nix/install)`
|
||||||
|
2. Enable flakes by adding to `~/.config/nix/nix.conf`:
|
||||||
|
```
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
```
|
||||||
|
|
||||||
|
**On NixOS:**
|
||||||
|
Flakes should be enabled via this configuration.
|
||||||
|
|
||||||
|
### Configuration Steps
|
||||||
|
|
||||||
|
1. **Update your username and hostname:**
|
||||||
|
- In `flake.nix`: Replace `your-username` and `your-hostname` in the configurations
|
||||||
|
- In `home-manager/home.nix`: Update the username
|
||||||
|
- In `darwin/configuration.nix` or `nixos/configuration.nix`: Update hostname and user settings
|
||||||
|
|
||||||
|
2. **Set your architecture** (macOS):
|
||||||
|
- In `darwin/configuration.nix`, set `nixpkgs.hostPlatform` to either:
|
||||||
|
- `"aarch64-darwin"` (Apple Silicon)
|
||||||
|
- `"x86_64-darwin"` (Intel)
|
||||||
|
|
||||||
|
3. **Configure Git identity** (optional):
|
||||||
|
- In `home-manager/development.nix`, uncomment and set:
|
||||||
|
```nix
|
||||||
|
userName = "Your Name";
|
||||||
|
userEmail = "your.email@example.com";
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building & Activating
|
||||||
|
|
||||||
|
**On macOS (first time):**
|
||||||
|
```bash
|
||||||
|
# Build the darwin configuration
|
||||||
|
nix build .#darwinConfigurations.your-hostname.system
|
||||||
|
|
||||||
|
# Activate it
|
||||||
|
./result/sw/bin/darwin-rebuild switch --flake .#your-hostname
|
||||||
|
```
|
||||||
|
|
||||||
|
**On macOS (subsequent builds):**
|
||||||
|
```bash
|
||||||
|
darwin-rebuild switch --flake .#your-hostname
|
||||||
|
```
|
||||||
|
|
||||||
|
**On NixOS:**
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch --flake .#your-hostname
|
||||||
|
```
|
||||||
|
|
||||||
|
**Standalone home-manager** (if not using system integration):
|
||||||
|
```bash
|
||||||
|
home-manager switch --flake .#your-username@your-hostname
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Features
|
||||||
|
|
||||||
|
### Platform-Aware Configuration
|
||||||
|
|
||||||
|
The configuration automatically detects the platform using `pkgs.stdenv.isDarwin` and `pkgs.stdenv.isLinux`:
|
||||||
|
|
||||||
|
- Home directory: Automatically uses `/Users/` on macOS, `/home/` on Linux
|
||||||
|
- Platform-specific packages and services are conditionally enabled
|
||||||
|
- Shared configuration in `common.nix` for consistent experience
|
||||||
|
|
||||||
|
### Modular Home-Manager
|
||||||
|
|
||||||
|
Your user environment is split into logical modules:
|
||||||
|
|
||||||
|
- **common.nix**: Basic tools everyone needs (git, ripgrep, etc.)
|
||||||
|
- **development.nix**: Development tools (languages, IDEs, etc.)
|
||||||
|
- **shell.nix**: Shell configuration (bash, zsh, fish, starship)
|
||||||
|
- **terminal.nix**: Terminal applications (tmux, neovim, alacritty)
|
||||||
|
- **linux.nix**: Linux-specific GUI apps and services
|
||||||
|
- **darwin.nix**: macOS-specific apps and integrations
|
||||||
|
|
||||||
|
### Shared System Configuration
|
||||||
|
|
||||||
|
`common.nix` is imported by both NixOS and nix-darwin configurations, providing:
|
||||||
|
|
||||||
|
- Unified Nix settings (flakes, garbage collection, etc.)
|
||||||
|
- Shared package overlays
|
||||||
|
- Consistent nixpkgs configuration
|
||||||
|
|
||||||
|
### Easy to Extend
|
||||||
|
|
||||||
|
- Add new home-manager modules in `modules/home-manager/`
|
||||||
|
- Add platform-specific modules in `modules/nixos/` or `modules/darwin/`
|
||||||
|
- Add custom packages in `pkgs/`
|
||||||
|
- Add overlays in `overlays/`
|
||||||
|
|
||||||
|
## Customization Tips
|
||||||
|
|
||||||
|
### Adding Packages
|
||||||
|
|
||||||
|
**User packages** (home-manager):
|
||||||
|
Add to the appropriate module:
|
||||||
|
- `home-manager/common.nix` for shared packages
|
||||||
|
- `home-manager/linux.nix` for Linux-only
|
||||||
|
- `home-manager/darwin.nix` for macOS-only
|
||||||
|
- `home-manager/development.nix` for dev tools
|
||||||
|
|
||||||
|
**System packages**:
|
||||||
|
Add to `common.nix` for shared system packages, or to the platform-specific config.
|
||||||
|
|
||||||
|
### Enabling Programs
|
||||||
|
|
||||||
|
Most programs can be enabled via home-manager:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
programs.firefox.enable = true;
|
||||||
|
programs.vscode.enable = true;
|
||||||
|
```
|
||||||
|
|
||||||
|
Check [home-manager options](https://nix-community.github.io/home-manager/options.html) for available programs.
|
||||||
|
|
||||||
|
### Multiple Machines
|
||||||
|
|
||||||
|
Add more configurations in `flake.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
darwinConfigurations = {
|
||||||
|
macbook = darwin.lib.darwinSystem { ... };
|
||||||
|
mac-mini = darwin.lib.darwinSystem { ... };
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosConfigurations = {
|
||||||
|
desktop = nixpkgs.lib.nixosSystem { ... };
|
||||||
|
laptop = nixpkgs.lib.nixosSystem { ... };
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### macOS System Defaults
|
||||||
|
|
||||||
|
The darwin configuration includes sensible defaults for macOS. Customize in `darwin/configuration.nix`:
|
||||||
|
|
||||||
|
- Dock behavior
|
||||||
|
- Finder settings
|
||||||
|
- Keyboard settings
|
||||||
|
- Global domain defaults
|
||||||
|
|
||||||
|
## Maintenance
|
||||||
|
|
||||||
|
**Update flake inputs:**
|
||||||
|
```bash
|
||||||
|
nix flake update
|
||||||
|
```
|
||||||
|
|
||||||
|
**Garbage collect old generations:**
|
||||||
|
```bash
|
||||||
|
# This happens automatically every 7 days, but you can run manually:
|
||||||
|
nix-collect-garbage -d
|
||||||
|
|
||||||
|
# On NixOS:
|
||||||
|
sudo nix-collect-garbage -d
|
||||||
|
```
|
||||||
|
|
||||||
|
**View generations:**
|
||||||
|
```bash
|
||||||
|
# On macOS:
|
||||||
|
darwin-rebuild --list-generations
|
||||||
|
|
||||||
|
# On NixOS:
|
||||||
|
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
|
||||||
|
```
|
||||||
|
|
||||||
|
**Rollback to previous generation:**
|
||||||
|
```bash
|
||||||
|
# On macOS:
|
||||||
|
darwin-rebuild --rollback
|
||||||
|
|
||||||
|
# On NixOS:
|
||||||
|
sudo nixos-rebuild --rollback
|
||||||
|
```
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
- [Nix Documentation](https://nixos.org/manual/nix/stable/)
|
||||||
|
- [NixOS Options Search](https://search.nixos.org/options)
|
||||||
|
- [Home Manager Options](https://nix-community.github.io/home-manager/options.html)
|
||||||
|
- [nix-darwin Options](https://daiderd.com/nix-darwin/manual/index.html)
|
||||||
|
- [Nix Language Basics](https://nixos.org/manual/nix/stable/language/)
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
**"error: experimental Nix feature 'flakes' is disabled"**
|
||||||
|
- Enable flakes in your nix configuration
|
||||||
|
|
||||||
|
**Build fails on macOS**
|
||||||
|
- Ensure nix-darwin is properly installed
|
||||||
|
- Check that your architecture is set correctly in `darwin/configuration.nix`
|
||||||
|
|
||||||
|
**Home manager conflicts**
|
||||||
|
- If you have existing dotfiles, back them up before applying home-manager
|
||||||
|
- Use `home-manager switch --backup-extension .backup` to preserve existing files
|
||||||
|
|
||||||
|
**"collision between" errors**
|
||||||
|
- Usually means packages are providing the same files
|
||||||
|
- Check for duplicate package installations in system vs home-manager
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
Feel free to customize this configuration to your needs! The modular structure makes it easy to:
|
||||||
|
- Add new feature modules
|
||||||
|
- Share modules between machines
|
||||||
|
- Contribute modules back to the community
|
||||||
|
|
||||||
+63
@@ -0,0 +1,63 @@
|
|||||||
|
# Shared system-level configuration for both NixOS and nix-darwin
|
||||||
|
# Import this in both nixos/configuration.nix and darwin/configuration.nix
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Shared Nix configuration
|
||||||
|
nix = let
|
||||||
|
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
|
||||||
|
in {
|
||||||
|
settings = {
|
||||||
|
# Enable flakes and new 'nix' command
|
||||||
|
experimental-features = "nix-command flakes";
|
||||||
|
|
||||||
|
# Opinionated: disable global registry
|
||||||
|
flake-registry = "";
|
||||||
|
|
||||||
|
# Deduplicate and optimize nix store
|
||||||
|
auto-optimise-store = true;
|
||||||
|
|
||||||
|
# Trusted users (useful for remote builds)
|
||||||
|
# trusted-users = [ "root" "@wheel" ];
|
||||||
|
|
||||||
|
# Workaround for https://github.com/NixOS/nix/issues/9574
|
||||||
|
nix-path = config.nix.nixPath;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Garbage collection
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
options = "--delete-older-than 7d";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Opinionated: make flake registry and nix path match flake inputs
|
||||||
|
registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs;
|
||||||
|
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Shared nixpkgs configuration
|
||||||
|
nixpkgs = {
|
||||||
|
overlays = [
|
||||||
|
inputs.self.overlays.additions
|
||||||
|
inputs.self.overlays.modifications
|
||||||
|
inputs.self.overlays.unstable-packages
|
||||||
|
];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Shared environment packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
git
|
||||||
|
curl
|
||||||
|
wget
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# This is your nix-darwin configuration for macOS
|
||||||
|
# Use this to configure your macOS system environment
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# You can import other darwin modules here
|
||||||
|
imports = [
|
||||||
|
# Shared configuration between NixOS and nix-darwin
|
||||||
|
../common.nix
|
||||||
|
|
||||||
|
# If you want to use modules your own flake exports (from modules/darwin):
|
||||||
|
# inputs.self.darwinModules.example
|
||||||
|
|
||||||
|
# You can also split up your configuration and import pieces of it here:
|
||||||
|
# ./brew.nix
|
||||||
|
# ./defaults.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# macOS-specific Nix settings (common.nix has the shared ones)
|
||||||
|
# Any darwin-specific nix configuration can go here
|
||||||
|
|
||||||
|
# Auto upgrade nix package and the daemon service
|
||||||
|
services.nix-daemon.enable = true;
|
||||||
|
|
||||||
|
# Necessary for using flakes on this system
|
||||||
|
nix.package = pkgs.nix;
|
||||||
|
|
||||||
|
# TODO: Set your hostname
|
||||||
|
networking.hostName = "your-hostname";
|
||||||
|
networking.computerName = "your-hostname";
|
||||||
|
|
||||||
|
# Create /etc/zshrc that loads the nix-darwin environment
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
programs.fish.enable = true;
|
||||||
|
|
||||||
|
# Used for backwards compatibility, please read the changelog before changing
|
||||||
|
# $ darwin-rebuild changelog
|
||||||
|
system.stateVersion = 4;
|
||||||
|
|
||||||
|
# The platform the configuration will be used on
|
||||||
|
nixpkgs.hostPlatform = "aarch64-darwin"; # or "x86_64-darwin"
|
||||||
|
|
||||||
|
# TODO: Configure your system-wide user settings (groups, etc)
|
||||||
|
users.users.your-username = {
|
||||||
|
name = "your-username";
|
||||||
|
home = "/Users/your-username";
|
||||||
|
};
|
||||||
|
|
||||||
|
# System-wide packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim
|
||||||
|
];
|
||||||
|
|
||||||
|
# macOS system defaults
|
||||||
|
system.defaults = {
|
||||||
|
dock = {
|
||||||
|
autohide = true;
|
||||||
|
orientation = "bottom";
|
||||||
|
showhidden = true;
|
||||||
|
mru-spaces = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
finder = {
|
||||||
|
AppleShowAllExtensions = true;
|
||||||
|
FXEnableExtensionChangeWarning = false;
|
||||||
|
_FXShowPosixPathInTitle = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
NSGlobalDomain = {
|
||||||
|
AppleShowAllExtensions = true;
|
||||||
|
InitialKeyRepeat = 14;
|
||||||
|
KeyRepeat = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Keyboard and trackpad settings
|
||||||
|
system.keyboard = {
|
||||||
|
enableKeyMapping = true;
|
||||||
|
remapCapsLockToControl = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Security
|
||||||
|
security.pam.enableSudoTouchIdAuth = true;
|
||||||
|
}
|
||||||
|
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
self,
|
self,
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
home-manager,
|
home-manager,
|
||||||
|
darwin,
|
||||||
...
|
...
|
||||||
} @ inputs: let
|
} @ inputs: let
|
||||||
# Supported systems for your flake packages, shell, etc.
|
# Supported systems for your flake packages, shell, etc.
|
||||||
@@ -61,17 +62,48 @@
|
|||||||
modules = [
|
modules = [
|
||||||
# > Our main nixos configuration file <
|
# > Our main nixos configuration file <
|
||||||
./nixos/configuration.nix
|
./nixos/configuration.nix
|
||||||
|
# Integrate home-manager as a NixOS module
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = {inherit inputs;};
|
||||||
|
# FIXME: Replace with your username
|
||||||
|
home-manager.users.your-username = import ./home-manager/home.nix;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# nix-darwin configuration entrypoint
|
||||||
|
# Available through 'darwin-rebuild switch --flake .#your-hostname'
|
||||||
|
darwinConfigurations = {
|
||||||
|
# FIXME replace with your hostname
|
||||||
|
your-hostname = darwin.lib.darwinSystem {
|
||||||
|
specialArgs = {inherit inputs;};
|
||||||
|
modules = [
|
||||||
|
# > Our main darwin configuration file <
|
||||||
|
./darwin/configuration.nix
|
||||||
|
# Integrate home-manager as a darwin module
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = {inherit inputs;};
|
||||||
|
# FIXME: Replace with your username
|
||||||
|
home-manager.users.your-username = import ./home-manager/home.nix;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Standalone home-manager configuration entrypoint
|
# Standalone home-manager configuration entrypoint
|
||||||
# Available through 'home-manager --flake .#your-username@your-hostname'
|
# Available through 'home-manager --flake .#your-username@your-hostname'
|
||||||
|
# Useful for systems where you don't have root access
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
# FIXME replace with your username@hostname
|
# FIXME replace with your username@hostname
|
||||||
"your-username@your-hostname" = home-manager.lib.homeManagerConfiguration {
|
"your-username@your-hostname" = home-manager.lib.homeManagerConfiguration {
|
||||||
# Home-manager requires 'pkgs' instance
|
pkgs = nixpkgs.legacyPackages.x86_64-linux; # FIXME: Set to your architecture
|
||||||
pkgs = nixpkgs.legacyPackages.x86_64-linux; # FIXME replace x86_64-linux with your architecure
|
|
||||||
extraSpecialArgs = {inherit inputs;};
|
extraSpecialArgs = {inherit inputs;};
|
||||||
modules = [
|
modules = [
|
||||||
# > Our main home-manager configuration file <
|
# > Our main home-manager configuration file <
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
# Common configuration shared across all platforms
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
nixpkgs = {
|
||||||
|
# You can add overlays here
|
||||||
|
overlays = [
|
||||||
|
# Add overlays your own flake exports (from overlays and pkgs dir):
|
||||||
|
inputs.self.overlays.additions
|
||||||
|
inputs.self.overlays.modifications
|
||||||
|
inputs.self.overlays.unstable-packages
|
||||||
|
];
|
||||||
|
# Configure your nixpkgs instance
|
||||||
|
config = {
|
||||||
|
# Disable if you don't want unfree packages
|
||||||
|
allowUnfree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable home-manager
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
# Basic packages everyone should have
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Archives
|
||||||
|
zip
|
||||||
|
unzip
|
||||||
|
|
||||||
|
# Utils
|
||||||
|
ripgrep # Better grep
|
||||||
|
fd # Better find
|
||||||
|
jq # JSON processor
|
||||||
|
yq-go # YAML processor
|
||||||
|
|
||||||
|
# System tools
|
||||||
|
htop
|
||||||
|
tree
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
];
|
||||||
|
|
||||||
|
# Basic git configuration
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
pull.rebase = true;
|
||||||
|
push.autoSetupRemote = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||||
|
home.stateVersion = "24.05";
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
# macOS-specific home-manager configuration
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
|
# macOS-specific packages
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# macOS CLI tools
|
||||||
|
# m-cli # Swiss Army Knife for macOS
|
||||||
|
|
||||||
|
# GUI applications (if you want to manage them with nix)
|
||||||
|
# Note: Many prefer to use homebrew for GUI apps on macOS
|
||||||
|
];
|
||||||
|
|
||||||
|
# macOS-specific configurations
|
||||||
|
home.sessionVariables = {
|
||||||
|
# Fix for Nix on macOS
|
||||||
|
NIX_PATH = "nixpkgs=${inputs.nixpkgs}:darwin=${inputs.darwin}";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fish shell configuration for macOS
|
||||||
|
programs.fish = lib.mkIf config.programs.fish.enable {
|
||||||
|
shellInit = ''
|
||||||
|
# Add Homebrew to PATH if it exists
|
||||||
|
if test -d /opt/homebrew/bin
|
||||||
|
fish_add_path /opt/homebrew/bin
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh configuration for macOS
|
||||||
|
programs.zsh = lib.mkIf config.programs.zsh.enable {
|
||||||
|
initExtra = ''
|
||||||
|
# Add Homebrew to PATH if it exists
|
||||||
|
if [[ -d /opt/homebrew/bin ]]; then
|
||||||
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Bash configuration for macOS
|
||||||
|
programs.bash = lib.mkIf config.programs.bash.enable {
|
||||||
|
initExtra = ''
|
||||||
|
# Add Homebrew to PATH if it exists
|
||||||
|
if [[ -d /opt/homebrew/bin ]]; then
|
||||||
|
eval "$(/opt/homebrew/bin/brew shellenv)"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
# Development tools and environment
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Version control
|
||||||
|
git
|
||||||
|
gh # GitHub CLI
|
||||||
|
lazygit # Terminal UI for git
|
||||||
|
|
||||||
|
# Languages and runtimes (add what you need)
|
||||||
|
# python311
|
||||||
|
# nodejs_20
|
||||||
|
# go
|
||||||
|
# rustc
|
||||||
|
# cargo
|
||||||
|
|
||||||
|
# Build tools
|
||||||
|
gnumake
|
||||||
|
cmake
|
||||||
|
|
||||||
|
# Text editors / IDEs
|
||||||
|
# neovim
|
||||||
|
# vscode
|
||||||
|
|
||||||
|
# Docker and containers (Linux only, macOS uses Docker Desktop)
|
||||||
|
] ++ lib.optionals pkgs.stdenv.isLinux [
|
||||||
|
# docker
|
||||||
|
# docker-compose
|
||||||
|
];
|
||||||
|
|
||||||
|
# Git configuration for development
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
# TODO: Configure your git identity
|
||||||
|
# userName = "Your Name";
|
||||||
|
# userEmail = "your.email@example.com";
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
core.editor = "vim";
|
||||||
|
merge.conflictstyle = "diff3";
|
||||||
|
diff.algorithm = "histogram";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Git aliases
|
||||||
|
aliases = {
|
||||||
|
st = "status";
|
||||||
|
co = "checkout";
|
||||||
|
br = "branch";
|
||||||
|
ci = "commit";
|
||||||
|
unstage = "reset HEAD --";
|
||||||
|
last = "log -1 HEAD";
|
||||||
|
lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# GitHub CLI
|
||||||
|
programs.gh = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
git_protocol = "ssh";
|
||||||
|
prompt = "enabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Direnv for per-directory environments
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
+28
-47
@@ -7,60 +7,41 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
# You can import other home-manager modules here
|
# Import modular configurations
|
||||||
imports = [
|
imports = [
|
||||||
|
# Base configuration shared across all platforms
|
||||||
|
./common.nix
|
||||||
|
|
||||||
|
# Feature modules
|
||||||
|
./development.nix
|
||||||
|
./shell.nix
|
||||||
|
./terminal.nix
|
||||||
|
|
||||||
|
# Platform-specific configurations
|
||||||
|
./linux.nix
|
||||||
|
./darwin.nix
|
||||||
|
|
||||||
# If you want to use modules your own flake exports (from modules/home-manager):
|
# If you want to use modules your own flake exports (from modules/home-manager):
|
||||||
# inputs.self.homeManagerModules.example
|
# inputs.self.homeManagerModules.example
|
||||||
|
|
||||||
# Or modules exported from other flakes (such as nix-colors):
|
|
||||||
# inputs.nix-colors.homeManagerModules.default
|
|
||||||
|
|
||||||
# You can also split up your configuration and import pieces of it here:
|
|
||||||
# ./nvim.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs = {
|
|
||||||
# You can add overlays here
|
|
||||||
overlays = [
|
|
||||||
# Add overlays your own flake exports (from overlays and pkgs dir):
|
|
||||||
inputs.self.overlays.additions
|
|
||||||
inputs.self.overlays.modifications
|
|
||||||
inputs.self.overlays.unstable-packages
|
|
||||||
|
|
||||||
# You can also add overlays exported from other flakes:
|
|
||||||
# neovim-nightly-overlay.overlays.default
|
|
||||||
|
|
||||||
# Or define it inline, for example:
|
|
||||||
# (final: prev: {
|
|
||||||
# hi = final.hello.overrideAttrs (oldAttrs: {
|
|
||||||
# patches = [ ./change-hello-to-hi.patch ];
|
|
||||||
# });
|
|
||||||
# })
|
|
||||||
];
|
|
||||||
# Configure your nixpkgs instance
|
|
||||||
config = {
|
|
||||||
# Disable if you don't want unfree packages
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: Set your username
|
# TODO: Set your username
|
||||||
home = {
|
home = {
|
||||||
username = "your-username";
|
username = lib.mkDefault "your-username";
|
||||||
homeDirectory = "/home/your-username";
|
homeDirectory = lib.mkDefault (
|
||||||
|
if pkgs.stdenv.isDarwin
|
||||||
|
then "/Users/${config.home.username}"
|
||||||
|
else "/home/${config.home.username}"
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
# Add stuff for your user as you see fit:
|
# Platform-aware session variables
|
||||||
# programs.neovim.enable = true;
|
home.sessionVariables = {
|
||||||
# home.packages = with pkgs; [ steam ];
|
EDITOR = "nvim";
|
||||||
|
VISUAL = "nvim";
|
||||||
# Enable home-manager and git
|
} // lib.optionalAttrs pkgs.stdenv.isDarwin {
|
||||||
programs.home-manager.enable = true;
|
# macOS-specific environment variables
|
||||||
programs.git.enable = true;
|
} // lib.optionalAttrs pkgs.stdenv.isLinux {
|
||||||
|
# Linux-specific environment variables
|
||||||
# Nicely reload system units when changing configs
|
};
|
||||||
systemd.user.startServices = "sd-switch";
|
|
||||||
|
|
||||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
|
||||||
home.stateVersion = "23.05";
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# Linux-specific home-manager configuration
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: lib.mkIf pkgs.stdenv.isLinux {
|
||||||
|
# Linux-specific packages
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# GUI applications (if you use a desktop environment)
|
||||||
|
# firefox
|
||||||
|
# chromium
|
||||||
|
|
||||||
|
# Linux-specific CLI tools
|
||||||
|
# xclip
|
||||||
|
# xsel
|
||||||
|
];
|
||||||
|
|
||||||
|
# Systemd user services (Linux only)
|
||||||
|
systemd.user.startServices = "sd-switch";
|
||||||
|
|
||||||
|
# X11/Wayland specific configurations
|
||||||
|
# xsession.enable = true;
|
||||||
|
# wayland.windowManager.sway.enable = true;
|
||||||
|
|
||||||
|
# GTK theme configuration
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
# theme = {
|
||||||
|
# name = "Adwaita-dark";
|
||||||
|
# package = pkgs.gnome.gnome-themes-extra;
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
# Qt theme configuration
|
||||||
|
qt = {
|
||||||
|
enable = true;
|
||||||
|
platformTheme.name = "gtk";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Services
|
||||||
|
services = {
|
||||||
|
# Clipboard manager
|
||||||
|
# clipmenu.enable = true;
|
||||||
|
|
||||||
|
# Notification daemon
|
||||||
|
# dunst.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,117 @@
|
|||||||
|
# Shell configuration (bash, zsh, fish, etc.)
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# Bash configuration
|
||||||
|
programs.bash = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
ll = "ls -la";
|
||||||
|
".." = "cd ..";
|
||||||
|
"..." = "cd ../..";
|
||||||
|
gs = "git status";
|
||||||
|
gd = "git diff";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zsh configuration
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
ll = "ls -la";
|
||||||
|
".." = "cd ..";
|
||||||
|
"..." = "cd ../..";
|
||||||
|
gs = "git status";
|
||||||
|
gd = "git diff";
|
||||||
|
nix-gc = "nix-collect-garbage -d";
|
||||||
|
};
|
||||||
|
|
||||||
|
history = {
|
||||||
|
size = 10000;
|
||||||
|
path = "${config.home.homeDirectory}/.zsh_history";
|
||||||
|
};
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
# Custom prompt or additional configuration
|
||||||
|
setopt HIST_IGNORE_ALL_DUPS
|
||||||
|
setopt HIST_FIND_NO_DUPS
|
||||||
|
setopt HIST_REDUCE_BLANKS
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Fish configuration
|
||||||
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
shellAliases = {
|
||||||
|
ll = "ls -la";
|
||||||
|
".." = "cd ..";
|
||||||
|
"..." = "cd ../..";
|
||||||
|
gs = "git status";
|
||||||
|
gd = "git diff";
|
||||||
|
};
|
||||||
|
|
||||||
|
functions = {
|
||||||
|
mkcd = "mkdir -p $argv[1]; and cd $argv[1]";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Starship prompt (works with all shells)
|
||||||
|
programs.starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
add_newline = true;
|
||||||
|
character = {
|
||||||
|
success_symbol = "[➜](bold green)";
|
||||||
|
error_symbol = "[➜](bold red)";
|
||||||
|
};
|
||||||
|
package.disabled = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Zoxide (better cd)
|
||||||
|
programs.zoxide = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# fzf (fuzzy finder)
|
||||||
|
programs.fzf = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Eza (modern ls replacement)
|
||||||
|
programs.eza = {
|
||||||
|
enable = true;
|
||||||
|
enableBashIntegration = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
enableFishIntegration = true;
|
||||||
|
git = true;
|
||||||
|
icons = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Bat (better cat)
|
||||||
|
programs.bat = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
theme = "TwoDark";
|
||||||
|
pager = "less -FR";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
# Terminal applications and utilities
|
||||||
|
{
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# Modern CLI tools
|
||||||
|
ripgrep # Better grep
|
||||||
|
fd # Better find
|
||||||
|
sd # Better sed
|
||||||
|
du-dust # Better du
|
||||||
|
duf # Better df
|
||||||
|
procs # Better ps
|
||||||
|
bottom # Better top/htop
|
||||||
|
|
||||||
|
# File managers
|
||||||
|
# ranger
|
||||||
|
# nnn
|
||||||
|
# lf
|
||||||
|
|
||||||
|
# Multiplexers
|
||||||
|
# tmux
|
||||||
|
# zellij
|
||||||
|
];
|
||||||
|
|
||||||
|
# Tmux configuration
|
||||||
|
programs.tmux = {
|
||||||
|
enable = true;
|
||||||
|
terminal = "tmux-256color";
|
||||||
|
historyLimit = 10000;
|
||||||
|
baseIndex = 1;
|
||||||
|
keyMode = "vi";
|
||||||
|
mouse = true;
|
||||||
|
|
||||||
|
plugins = with pkgs.tmuxPlugins; [
|
||||||
|
sensible
|
||||||
|
yank
|
||||||
|
vim-tmux-navigator
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
# Split panes using | and -
|
||||||
|
bind | split-window -h
|
||||||
|
bind - split-window -v
|
||||||
|
unbind '"'
|
||||||
|
unbind %
|
||||||
|
|
||||||
|
# Reload config
|
||||||
|
bind r source-file ~/.config/tmux/tmux.conf
|
||||||
|
|
||||||
|
# Easy pane switching
|
||||||
|
bind -n M-Left select-pane -L
|
||||||
|
bind -n M-Right select-pane -R
|
||||||
|
bind -n M-Up select-pane -U
|
||||||
|
bind -n M-Down select-pane -D
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Neovim (optional, can be expanded)
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
defaultEditor = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
|
||||||
|
extraConfig = ''
|
||||||
|
set number
|
||||||
|
set relativenumber
|
||||||
|
set expandtab
|
||||||
|
set tabstop=2
|
||||||
|
set shiftwidth=2
|
||||||
|
set smartindent
|
||||||
|
set clipboard=unnamedplus
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Alacritty terminal emulator configuration
|
||||||
|
programs.alacritty = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
window = {
|
||||||
|
padding = {
|
||||||
|
x = 10;
|
||||||
|
y = 10;
|
||||||
|
};
|
||||||
|
decorations = "full";
|
||||||
|
opacity = 0.95;
|
||||||
|
};
|
||||||
|
|
||||||
|
font = {
|
||||||
|
size = 13.0;
|
||||||
|
normal = {
|
||||||
|
family = "JetBrainsMono Nerd Font";
|
||||||
|
style = "Regular";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
colors = {
|
||||||
|
primary = {
|
||||||
|
background = "0x1e1e1e";
|
||||||
|
foreground = "0xd4d4d4";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Add your reusable nix-darwin modules to this directory, on their own file.
|
||||||
|
# These should be stuff you would like to share with others, not your personal configurations.
|
||||||
|
{
|
||||||
|
# List your module files here
|
||||||
|
# my-module = import ./my-module.nix;
|
||||||
|
}
|
||||||
|
|
||||||
+6
-41
@@ -9,6 +9,9 @@
|
|||||||
}: {
|
}: {
|
||||||
# You can import other NixOS modules here
|
# You can import other NixOS modules here
|
||||||
imports = [
|
imports = [
|
||||||
|
# Shared configuration between NixOS and nix-darwin
|
||||||
|
../common.nix
|
||||||
|
|
||||||
# If you want to use modules your own flake exports (from modules/nixos):
|
# If you want to use modules your own flake exports (from modules/nixos):
|
||||||
# inputs.self.nixosModules.example
|
# inputs.self.nixosModules.example
|
||||||
|
|
||||||
@@ -23,48 +26,10 @@
|
|||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs = {
|
# NixOS-specific Nix settings (common.nix has the shared ones)
|
||||||
# You can add overlays here
|
nix = {
|
||||||
overlays = [
|
|
||||||
# Add overlays your own flake exports (from overlays and pkgs dir):
|
|
||||||
inputs.self.overlays.additions
|
|
||||||
inputs.self.overlays.modifications
|
|
||||||
inputs.self.overlays.unstable-packages
|
|
||||||
|
|
||||||
# You can also add overlays exported from other flakes:
|
|
||||||
# neovim-nightly-overlay.overlays.default
|
|
||||||
|
|
||||||
# Or define it inline, for example:
|
|
||||||
# (final: prev: {
|
|
||||||
# hi = final.hello.overrideAttrs (oldAttrs: {
|
|
||||||
# patches = [ ./change-hello-to-hi.patch ];
|
|
||||||
# });
|
|
||||||
# })
|
|
||||||
];
|
|
||||||
# Configure your nixpkgs instance
|
|
||||||
config = {
|
|
||||||
# Disable if you don't want unfree packages
|
|
||||||
allowUnfree = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix = let
|
|
||||||
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
|
|
||||||
in {
|
|
||||||
settings = {
|
|
||||||
# Enable flakes and new 'nix' command
|
|
||||||
experimental-features = "nix-command flakes";
|
|
||||||
# Opinionated: disable global registry
|
|
||||||
flake-registry = "";
|
|
||||||
# Workaround for https://github.com/NixOS/nix/issues/9574
|
|
||||||
nix-path = config.nix.nixPath;
|
|
||||||
};
|
|
||||||
# Opinionated: disable channels
|
# Opinionated: disable channels
|
||||||
channel.enable = false;
|
channel.enable = false;
|
||||||
|
|
||||||
# Opinionated: make flake registry and nix path match flake inputs
|
|
||||||
registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs;
|
|
||||||
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# FIXME: Add the rest of your current configuration
|
# FIXME: Add the rest of your current configuration
|
||||||
@@ -103,5 +68,5 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "24.05";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user