my nix dotfiles

nix/darwin: setup kvothe afresh

anirudh.fi 7e4b07cd b71bc530

verified
+137 -55
+24
darwin/hammerspoon/init.lua
··· 1 + local function pressFn(mods, key) 2 + if key == nil then 3 + key = mods 4 + mods = {} 5 + end 6 + 7 + return function() hs.eventtap.keyStroke(mods, key, 1000) end 8 + end 9 + 10 + local function remap(mods, key, pressFn) 11 + hs.hotkey.bind(mods, key, pressFn, nil, pressFn) 12 + end 13 + 14 + remap({'ctrl'}, 'd', pressFn('pagedown')) 15 + remap({'ctrl'}, 'u', pressFn('pageup')) 16 + 17 + remap({'ctrl', 'shift'}, 'd', pressFn({'shift'}, 'pagedown')) 18 + remap({'ctrl', 'shift'}, 'u', pressFn({'shift'}, 'pageup')) 19 + 20 + remap({'ctrl'}, 'y', pressFn('left')) 21 + remap({'ctrl'}, 'n', pressFn('down')) 22 + remap({'ctrl'}, 'e', pressFn('up')) 23 + remap({'ctrl'}, 'o', pressFn('right')) 24 +
+8
darwin/home.nix
··· 22 22 }; 23 23 }; 24 24 25 + home.file.".hammerspoon" = { 26 + source = ./hammerspoon; 27 + recursive = true; 28 + }; 29 + 25 30 home.packages = with pkgs; [ 26 31 # prompt 27 32 tmux ··· 36 41 docker-buildx 37 42 pinentry_mac 38 43 kubectl 44 + 45 + signal-desktop 46 + raycast 39 47 40 48 go 41 49 gopls
+18 -18
flake.lock
··· 59 59 ] 60 60 }, 61 61 "locked": { 62 - "lastModified": 1738743987, 63 - "narHash": "sha256-O3bnAfsObto6l2tQOmQlrO6Z2kD6yKwOWfs7pA0CpOc=", 62 + "lastModified": 1740755725, 63 + "narHash": "sha256-amZbqP84H/ApugaT+TADXTB3NbjkVHI9Vac1saIk0kE=", 64 64 "owner": "lnl7", 65 65 "repo": "nix-darwin", 66 - "rev": "ae406c04577ff9a64087018c79b4fdc02468c87c", 66 + "rev": "5d6e0851b60508cffd66b4a6982440a40720338d", 67 67 "type": "github" 68 68 }, 69 69 "original": { ··· 95 95 ] 96 96 }, 97 97 "locked": { 98 - "lastModified": 1738841109, 99 - "narHash": "sha256-sEgE3nifaRU5gfAx33ds0tx/j+qM0/5/bHopv/w6c0c=", 98 + "lastModified": 1740699498, 99 + "narHash": "sha256-r9hkKzX99CGiP1ZqH0e+SWKK4CMsRNRLyotuwrUjhTI=", 100 100 "owner": "nix-community", 101 101 "repo": "home-manager", 102 - "rev": "f99c704fe3a4cf8d72b2d568ec80bc38be1a9407", 102 + "rev": "b71edac7a3167026aabea82a54d08b1794088c21", 103 103 "type": "github" 104 104 }, 105 105 "original": { ··· 133 133 }, 134 134 "nixos-hardware": { 135 135 "locked": { 136 - "lastModified": 1738816619, 137 - "narHash": "sha256-5yRlg48XmpcX5b5HesdGMOte+YuCy9rzQkJz+imcu6I=", 136 + "lastModified": 1740646007, 137 + "narHash": "sha256-dMReDQobS3kqoiUCQIYI9c0imPXRZnBubX20yX/G5LE=", 138 138 "owner": "nixos", 139 139 "repo": "nixos-hardware", 140 - "rev": "2eccff41bab80839b1d25b303b53d339fbb07087", 140 + "rev": "009b764ac98a3602d41fc68072eeec5d24fc0e49", 141 141 "type": "github" 142 142 }, 143 143 "original": { ··· 148 148 }, 149 149 "nixpkgs": { 150 150 "locked": { 151 - "lastModified": 1738680400, 152 - "narHash": "sha256-ooLh+XW8jfa+91F1nhf9OF7qhuA/y1ChLx6lXDNeY5U=", 151 + "lastModified": 1740560979, 152 + "narHash": "sha256-Vr3Qi346M+8CjedtbyUevIGDZW8LcA1fTG0ugPY/Hic=", 153 153 "owner": "NixOS", 154 154 "repo": "nixpkgs", 155 - "rev": "799ba5bffed04ced7067a91798353d360788b30d", 155 + "rev": "5135c59491985879812717f4c9fea69604e7f26f", 156 156 "type": "github" 157 157 }, 158 158 "original": { ··· 164 164 }, 165 165 "nixpkgs-master": { 166 166 "locked": { 167 - "lastModified": 1738839627, 168 - "narHash": "sha256-RerTWFfO7HJlDnxwJR+Wt9UWo8RYXisOUqHJyU1SdxM=", 167 + "lastModified": 1740777173, 168 + "narHash": "sha256-ARRPHieKOjlLigLL9/dYjoRv7Q9QLfgO7aPoq23Rgfo=", 169 169 "owner": "NixOS", 170 170 "repo": "nixpkgs", 171 - "rev": "16c225539220d31bee2f5696b22853504452708f", 171 + "rev": "58af30abcdaa77eca425cac83b7e544e7502bf81", 172 172 "type": "github" 173 173 }, 174 174 "original": { ··· 257 257 "rust-overlay": "rust-overlay" 258 258 }, 259 259 "locked": { 260 - "lastModified": 1738836742, 261 - "narHash": "sha256-Ck3lkhPEsWo2HgNIiG26wTpY7NASwsufwT/Hr2i4Ax8=", 260 + "lastModified": 1740776523, 261 + "narHash": "sha256-+47hkKLL5jntUmManU364Gd2lv3JzVoZc/Z8xFoOfBg=", 262 262 "owner": "zed-industries", 263 263 "repo": "zed", 264 - "rev": "b4d8b1be3f1eb2d1eea4bd9585affbd437986de8", 264 + "rev": "71866d6314674819a0e42df53a4c39f050639720", 265 265 "type": "github" 266 266 }, 267 267 "original": {
+1 -1
flake.nix
··· 67 67 _module.args.self = self; 68 68 nixpkgs.overlays = [ 69 69 nix-your-shell.overlays.default 70 - prompt.overlay 70 + # prompt.overlay 71 71 ]; 72 72 } 73 73 home-manager.darwinModules.home-manager
+83 -32
hosts/kvothe/configuration.nix
··· 1 1 { self, config, pkgs, lib, ... }: 2 2 3 3 { 4 - programs.bash.enable = true; 4 + 5 + nixpkgs.config.allowUnfree = true; 6 + 7 + programs = { 8 + bash.enable = true; 9 + fish.enable = true; 10 + }; 11 + 12 + services = { 13 + tailscale = { 14 + enable = true; 15 + }; 16 + }; 17 + 5 18 environment = { 6 19 shells = [ pkgs.bash ]; 7 20 }; 8 21 9 - 22 + users.knownUsers = [ "icy" ]; 10 23 users.users.icy = { 11 24 name = "icy"; 12 25 home = "/Users/icy"; 26 + uid = 501; 27 + shell = pkgs.fish; 13 28 }; 14 29 15 - services.nix-daemon.enable = true; 16 - security.pam.enableSudoTouchIdAuth = true; 17 - 18 - system.stateVersion = 5; 30 + networking = { 31 + hostName = "kvothe"; 32 + localHostName = "kvothe"; 33 + dns = [ 34 + "100.100.100.100" 35 + ]; 36 + knownNetworkServices = [ 37 + "Thunderbolt Bridge" 38 + "Wi-Fi" 39 + ]; 40 + }; 19 41 20 - system.activationScripts.applications.text = pkgs.lib.mkForce ( 21 - # '' 22 - # echo "setting up ~/Applications..." >&2 23 - # rm -rf ~/Applications/Nix\ Apps 24 - # mkdir -p ~/Applications/Nix\ Apps 25 - # for app in $(find ${config.system.build.applications}/Applications -maxdepth 1 -type l); do 26 - # src="$(/usr/bin/stat -f%Y "$app")" 27 - # cp -r "$src" ~/Applications/Nix\ Apps 28 - # done 29 - # '' 42 + nix.enable = false; 43 + 44 + security.pam.services.sudo_local.touchIdAuth = true; 45 + 46 + system = { 47 + activationScripts.applications.text = pkgs.lib.mkForce ( 48 + # '' 49 + # echo "setting up ~/Applications..." >&2 50 + # rm -rf ~/Applications/Nix\ Apps 51 + # mkdir -p ~/Applications/Nix\ Apps 52 + # for app in $(find ${config.system.build.applications}/Applications -maxdepth 1 -type l); do 53 + # src="$(/usr/bin/stat -f%Y "$app")" 54 + # cp -r "$src" ~/Applications/Nix\ Apps 55 + # done 56 + # '' 30 57 31 - '' 32 - echo "setting up /Applications..." >&2 33 - rm -rf /Applications/Nix\ Apps 34 - mkdir -p /Applications/Nix\ Apps 35 - find ${ 58 + '' 59 + echo "setting up /Applications..." >&2 60 + rm -rf /Applications/Nix\ Apps 61 + mkdir -p /Applications/Nix\ Apps 62 + find ${ 36 63 pkgs.buildEnv { 37 - name = "system-applications"; 38 - paths = config.environment.systemPackages; 39 - pathsToLink = "/Applications"; 64 + name = "system-applications"; 65 + paths = config.environment.systemPackages; 66 + pathsToLink = "/Applications"; 67 + } 68 + }/Applications -maxdepth 1 -type l -exec readlink '{}' + | 69 + while read -r src; do 70 + app_name=$(basename "$src") 71 + echo "copying $src" >&2 72 + ${pkgs.mkalias}/bin/mkalias "$src" "/Applications/Nix Apps/$app_name" 73 + done 74 + '' 75 + ); 76 + 77 + 78 + keyboard = { 79 + enableKeyMapping = true; 80 + userKeyMapping = [ 81 + { 82 + HIDKeyboardModifierMappingSrc = 30064771129; 83 + HIDKeyboardModifierMappingDst = 30064771181; 40 84 } 41 - }/Applications -maxdepth 1 -type l -exec readlink '{}' + | 42 - while read -r src; do 43 - app_name=$(basename "$src") 44 - echo "copying $src" >&2 45 - ${pkgs.mkalias}/bin/mkalias "$src" "/Applications/Nix Apps/$app_name" 46 - done 47 - '' 48 - ); 85 + ]; 86 + }; 87 + 88 + stateVersion = 6; 89 + }; 90 + 91 + homebrew = { 92 + enable = true; 93 + onActivation = { 94 + autoUpdate = true; 95 + cleanup = "uninstall"; 96 + upgrade = true; 97 + }; 98 + casks = [ "orion" ]; 99 + }; 49 100 }
+1 -1
nvim/_init.lua
··· 1 - -- loaded by home-manager; see: nix/programs/neovim.nix 1 + 2 2 3 3 -- TODO: ref: https://github.com/neovim/neovim/pull/15436 4 4 -- require 'impatient'
-1
programs/common.nix
··· 16 16 ./alacritty.nix 17 17 ./fish.nix 18 18 ./zed/default.nix 19 - # ./ghostty.nix 20 19 ]; 21 20 22 21 programs = {
+1 -1
programs/ssh.nix
··· 10 10 "*" = { 11 11 serverAliveInterval = 180; 12 12 serverAliveCountMax = 3; 13 - identityFile = [ "~/.ssh/id_ed25519" "~/.ssh/upcloud" ]; 13 + identityFile = [ "~/.ssh/id_ed25519" ]; 14 14 }; 15 15 "github.com" = { 16 16 user = "git";
+1 -1
readme
··· 8 8 NixOS, running GNOME. 9 9 10 10 • kvothe: MacBook Pro 14 (M1 Pro) 11 - macOS 14.0, Sonoma using nix-darwin. 11 + macOS 15.0 Sequoia, using nix-darwin. 12 12 13 13 Homelab cluster: 14 14 • sini: Dell OptiPlex 3040