From ee7ed15ce7547ac51081024e88c592897478cb2e Mon Sep 17 00:00:00 2001 From: Lap Tran Date: Sat, 18 Jul 2026 09:21:51 -0400 Subject: [PATCH] feat: fix dotfiles configuration and add home-manager --- configuration.nix | 49 +++++++++++++++++++++ flake.lock | 107 ++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 32 ++++++++++++++ home.nix | 25 +++++++++++ readme.md | 1 + rebuild.sh | 5 +++ 6 files changed, 219 insertions(+) create mode 100644 configuration.nix create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home.nix create mode 100644 readme.md create mode 100755 rebuild.sh diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..fc03adb --- /dev/null +++ b/configuration.nix @@ -0,0 +1,49 @@ +{ ... }: + +{ + # Determinate already manages the Nix daemon, so nix-darwin shouldn't. + nix.enable = false; + + nixpkgs.config.allowUnfree = true; + nixpkgs.hostPlatform = "aarch64-darwin"; # use x86_64-darwin for Intel CPU + + system.primaryUser = "laptran"; + users.users.laptran = { + home = "/Users/laptran"; + }; + + system.stateVersion = 6; + system.defaults = { + NSGlobalDomain = { + AppleInterfaceStyle = "Dark"; + KeyRepeat = 2; # fast key repeat + InitialKeyRepeat = 15; # short delay before repeat + _HIHideMenuBar = true; # auto-hide the menu bar + AppleShowAllExtensions = true; + }; + dock.autohide = true; + finder.FXPreferredViewStyle = "Nlsv"; # list view by default + finder.CreateDesktop = false; # clean desktop + trackpad.Clicking = true; # tap to click + }; + + nix-homebrew = { + enable = true; + user = "laptran"; + autoMigrate = true; # adopt existing homebrew if already installed + }; + + homebrew = { + enable = true; + onActivation.cleanup = "zap"; # remove anything not listed here + onActivation.autoUpdate = true; + onActivation.extraFlags = [ "--force" ]; + brews = [ + "herdr" + ]; + casks = [ + "wezterm" + ]; + }; +} + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..104314c --- /dev/null +++ b/flake.lock @@ -0,0 +1,107 @@ +{ + "nodes": { + "brew-src": { + "flake": false, + "locked": { + "lastModified": 1784068757, + "narHash": "sha256-7KnV7rTlMpys+2J+TFVxUDDyKPLXFs4wIMtckMC72VM=", + "owner": "Homebrew", + "repo": "brew", + "rev": "6bd951d96e7ebc54787799dba77bfb26ec956c4c", + "type": "github" + }, + "original": { + "owner": "Homebrew", + "ref": "6.0.11", + "repo": "brew", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1784350909, + "narHash": "sha256-ZWyzLbS1yKUTeFJLmdVuWNnHttL333/ldJbEE+KzCrM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "4ce190229c73d44536caa7072f6308fb2d8feeb3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-26.05", + "repo": "home-manager", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1783744694, + "narHash": "sha256-2cp6N3rrwnGYLTx9l6N+NI+kwrCWxvJUbj5WJhvB29A=", + "owner": "nix-darwin", + "repo": "nix-darwin", + "rev": "c3e90c89649b07d1a96e4b9dd6cd0d6e44b91a74", + "type": "github" + }, + "original": { + "owner": "nix-darwin", + "ref": "nix-darwin-26.05", + "repo": "nix-darwin", + "type": "github" + } + }, + "nix-homebrew": { + "inputs": { + "brew-src": "brew-src" + }, + "locked": { + "lastModified": 1784159664, + "narHash": "sha256-I/B6YoRLImHEqNWh8bs+tPjEDeteACeFhcLyoSMo1GE=", + "owner": "zhaofengli", + "repo": "nix-homebrew", + "rev": "842eeb863ecca0eeb463f7a814cdc51e1d925776", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "repo": "nix-homebrew", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1784255083, + "narHash": "sha256-0Jz8G3+3g6i/l4aISUri0EidLnREelCff0m6+pE6aZg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "fc51889f81924f15fba77a3c0b79cfb3f78fe0d4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-26.05-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nix-darwin": "nix-darwin", + "nix-homebrew": "nix-homebrew", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..4c0e8a3 --- /dev/null +++ b/flake.nix @@ -0,0 +1,32 @@ +{ + description = "lt-dotfiles"; + + inputs = { + # Use `github:NixOS/nixpkgs/nixpkgs-26.05-darwin` to use Nixpkgs 26.05. + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-26.05-darwin"; + + # Use `github:nix-darwin/nix-darwin/nix-darwin-26.05` to use Nixpkgs 26.05. + nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-26.05"; + nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; + + home-manager.url = "github:nix-community/home-manager/release-26.05"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + + nix-homebrew.url = "github:zhaofengli/nix-homebrew"; + }; + + outputs = inputs@{ self, nix-darwin, nixpkgs, nix-homebrew, home-manager }: { + darwinConfigurations."lt-mbp" = nix-darwin.lib.darwinSystem { + modules = [ + ./configuration.nix + nix-homebrew.darwinModules.nix-homebrew + home-manager.darwinModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.laptran = import ./home.nix; + } + ]; + }; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..4ae61df --- /dev/null +++ b/home.nix @@ -0,0 +1,25 @@ +{ config, pkgs, ... }: + +let + dotfiles = "${config.home.homeDirectory}/.dotfiles"; +in + +{ + home.username = "laptran"; + home.homeDirectory = "/Users/laptran"; + home.stateVersion = "24.11"; + home.packages = with pkgs; [ + ripgrep + fd + fzf + jq + lazygit + neovim + nerd-fonts.hack + ]; + fonts.fontconfig.enable = true; + home.sessionVariables.EDITOR = "nvim"; + + home.file.".config/wezterm".source = + config.lib.file.mkOutOfStoreSymlink "${dotfiles}/home/.config/wezterm"; +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..b0dd627 --- /dev/null +++ b/readme.md @@ -0,0 +1 @@ +The reason you are still seeing command not found is that darwin-rebuild does not exist on your computer yet.When doing a brand-new installation of nix-darwin, the darwin-rebuild tool is not part of the standard Nix installer. You have to bootstrap it using the nix run command first, which will dynamically pull the tool from GitHub and execute the initial build.Run the following command from your terminal inside your ~/.dotfiles directory:zshsudo nix run nix-darwin#darwin-rebuild -- switch --flake ~/.dotfiles#lt-mbp diff --git a/rebuild.sh b/rebuild.sh new file mode 100755 index 0000000..9a4a578 --- /dev/null +++ b/rebuild.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +set -euo pipefail +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)" +ln -sfn "$DIR" ~/.dotfiles +exec sudo darwin-rebuild switch --flake ~/.dotfiles#lt-mbp