Skip to content

yuanw/nix-home

Repository files navigation

My nix-darwin/NixOS configuration

https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgarnix.io%2Fapi%2Fbadges%2Fyuanw%2Fnix-home

https://github.com/yuanw/nix-home/actions/workflows/ci.yml/badge.svg

https://builtwithnix.org/badge.svg

./screenshots/macos.png

The goal for this repo is to declaratively configure MacOS and Linux system using nixos/nix-darwin and home-manger.

feel free to take what you like.

Current MacOS setup

Shellzsh + starship
WMyabai + skhd + sketchybar
TerminalAlacritty + tmux
EditorEmacs + helix
BrowserFirefox (shyfox)

Current Nixos setup

Shellzsh + starship
WMxmonad + xmobar
TerminalAlacritty + tmux
EditorEmacs + helix
BrowserFirefox (shyfox)

Inspirations

https://github.com/stars/yuanw/lists/nix-home/

MacOS

Install

Install Nix (with daemon)

with official script sh <(curl -L https://nixos.org/nix/install) or using https://github.com/DeterminateSystems/nix-installer

curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install

Turn on flake

edit /etc/nix/nix.conf experimental-features = nix-command flakes

Install nix-darwin

https://github.com/LnL7/nix-darwin#install

nix-build https://github.com/LnL7/nix-darwin/archive/master.tar.gz -A installer
./result/bin/darwin-installer

install xcode

Install brew

there are lots of GUI programs, we cannot install nicely using pure nix. There is brew-module in nix-darwin. /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh) What is benefits of this ? we can install/uninstall applications using nix don’t forget to do brew analytics off

import gpg keys (airdrop)

gpg --list-secret-keys or gpg --list-secret-keys user@example.com

pub   4096R/ABC12345 2020-01-01 [expires: 2025-12-31]
uid                  Your Name <user@example.com>
sub   4096R/DEF67890 2020-01-01 [expires: 2025-12-31]

ID of your key (second column e.g “ABC12345”)

gpg --export-secret-keys YOUR_ID_HERE > private.key

install font

font

Import

gpg --import private.key

ssh file

.ssh/config

Host *
  IgnoreUnknown UseKeychain
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

git-crypt

git-crypt unlock to load private files if needed

nix flake update --recreate-lock-file

build on macos?

nix build .#yuan-mac

switch ?

./result/sw/bin/darwin-rebuild switch --flake .

How to rollback (require sudo)

darwin-rebuild --rollback or darwin-rebuild --list-generations darwin-rebuild --switch-generation XX

Nixos

$ nixos-rebuild switch --flake '.#' -user-remote-sudo

See the diff between build and current system

nix-diff /run/current-system ./result

Caveats

Exclude Nix directory from Spotlight index

nix-darwin permission issue

sudo chown -R whoami:staff /nix/store