this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: port darwin config to Denix

+394 -291
-105
darwin/shimmer/configuration.nix
··· 1 - { 2 - config, 3 - lib, 4 - inputs, 5 - pkgs, 6 - ... 7 - }: { 8 - imports = [./homebrew.nix ./wm.nix ../../modules/nixpkgs.nix]; 9 - 10 - nixpkgs.hostPlatform = "aarch64-darwin"; 11 - 12 - # Nix setup 13 - nix.distributedBuilds = true; 14 - 15 - nix.gc = { 16 - automatic = true; 17 - options = "--delete-older-than 7d"; 18 - interval.Weekday = 6; 19 - }; 20 - 21 - nix.optimise.automatic = true; 22 - 23 - nix.settings = { 24 - builders-use-substitutes = true; 25 - experimental-features = "nix-command flakes"; 26 - trusted-users = ["root" "ovy"]; 27 - }; 28 - 29 - environment.systemPackages = with pkgs; [ 30 - ffmpeg-full 31 - git 32 - imagemagick 33 - nil 34 - obsidian 35 - openssh 36 - wget 37 - # TODO: the Xcode packages makes us manually download and put it into the Nix store 38 - # but it seems to contain no reference to our actual result so I don't think `systemPackages` 39 - # picks it up properly. Need to see how `requireFile` works and how `systemPackages` 40 - # works under the hood. 41 - # darwin.xcode_14_1 42 - ]; 43 - 44 - programs.bash.enable = true; 45 - programs.zsh.enable = true; 46 - programs.fish.enable = true; 47 - 48 - # Fix problem in nix-darwin relating to $PATH order in fish. 49 - # https://github.com/LnL7/nix-darwin/issues/122#issuecomment-1659465635 50 - programs.fish.loginShellInit = let 51 - dquote = str: "\"${str}\""; 52 - makeBinPathList = map (path: path + "/bin"); 53 - in '' 54 - fish_add_path --move --prepend --path ${lib.concatMapStringsSep " " dquote (makeBinPathList config.environment.profiles)} 55 - set fish_user_paths $fish_user_paths 56 - fish_add_path /opt/homebrew/bin 57 - alias tailscale /Applications/Tailscale.app/Contents/MacOS/Tailscale 58 - ''; 59 - 60 - nix.buildMachines = [ 61 - { 62 - hostName = "rushing.axolotl-map.ts.net"; 63 - sshUser = "colmena-deploy"; 64 - system = "x86_64-linux"; 65 - speedFactor = 2; 66 - maxJobs = 6; 67 - protocol = "ssh-ng"; 68 - } 69 - { 70 - hostName = "skyline.axolotl-map.ts.net"; 71 - sshUser = "colmena-deploy"; 72 - system = "aarch64-linux"; 73 - speedFactor = 1; 74 - maxJobs = 2; 75 - protocol = "ssh-ng"; 76 - } 77 - ]; 78 - 79 - # nix-darwin 80 - system.configurationRevision = inputs.self.rev or inputs.self.dirtyRev or null; 81 - # Used for backwards compatibility, please read the changelog before changing. 82 - # $ darwin-rebuild changelog 83 - system.stateVersion = 4; 84 - 85 - system.defaults.NSGlobalDomain.AppleShowAllExtensions = true; 86 - system.defaults.finder.ShowPathbar = true; 87 - system.defaults.menuExtraClock.Show24Hour = true; 88 - system.defaults.trackpad.Dragging = true; 89 - 90 - # Dock settings 91 - system.defaults.dock = { 92 - autohide = false; 93 - magnification = false; 94 - minimize-to-application = false; 95 - mru-spaces = false; 96 - orientation = "bottom"; 97 - show-recents = false; 98 - tilesize = 48; 99 - }; 100 - 101 - fonts.packages = with pkgs; [ 102 - inter 103 - inputs.iosevka-solai.packages.aarch64-darwin.bin 104 - ]; 105 - }
+9 -5
darwin/shimmer/homebrew.nix modules/darwin/homebrew.nix
··· 1 - {...}: { 2 - homebrew = { 1 + {delib, ...}: 2 + delib.module { 3 + name = "darwin.homebrew"; 4 + 5 + options = delib.singleEnableOption true; 6 + 7 + darwin.ifEnabled.homebrew = { 3 8 enable = true; 4 9 # Update and cleanup homebrew packages when rebuilding. 5 10 global.autoUpdate = false; ··· 14 19 ]; 15 20 16 21 brews = [ 17 - "bitwarden-cli" 18 22 "klog" 19 23 "mas" 20 24 "swiftformat" ··· 35 39 # Actually searches symlinks for apps, compared to Alfred. 36 40 "raycast" 37 41 "swiftformat-for-xcode" 38 - "visual-studio-code" 42 + # "visual-studio-code" 39 43 # "vorta" 40 44 ]; 41 45 ··· 43 47 Keka = 470158793; 44 48 "Yubico Authenticator" = 1497506650; 45 49 "System Color Picker" = 1545870783; 46 - Tailsacle = 1475387142; 50 + Tailscale = 1475387142; 47 51 }; 48 52 }; 49 53 }
-89
darwin/shimmer/wm.nix
··· 1 - {lib, ...}: { 2 - services.yabai = { 3 - enable = true; 4 - config = let 5 - gap = 10; 6 - gapKeys = [ 7 - "window_gap" 8 - "top_padding" 9 - "bottom_padding" 10 - "left_padding" 11 - "right_padding" 12 - ]; 13 - 14 - gaps = builtins.listToAttrs ( 15 - builtins.map (k: lib.attrsets.nameValuePair k gap) gapKeys 16 - ); 17 - in 18 - { 19 - layout = "bsp"; 20 - window_placement = "second_child"; 21 - } 22 - // gaps; 23 - extraConfig = '' 24 - yabai -m rule --add app="Bitwarden" manage=off 25 - yabai -m rule --add app="Discord" manage=off 26 - yabai -m rule --add app="^Finder$" manage=off 27 - yabai -m rule --add app="Keka" manage=off 28 - yabai -m rule --add app="^System Information$" manage=off 29 - yabai -m rule --add app="^System Preferences$" manage=off 30 - yabai -m rule --add app="^System Settings$" manage=off 31 - yabai -m rule --add title="Preferences$" manage=off 32 - yabai -m rule --add title="^Archive Utility$" manage=off 33 - yabai -m rule --add title="Settings$" manage=off 34 - yabai -m rule --add title="Karabiner" manage=off 35 - yabai -m rule --add title="^Weather$" manage=off 36 - yabai -m rule --add title="Yubico Authenticator" manage=off 37 - yabai -m rule --add app="Rewind" manage=off 38 - yabai -m rule --add app="eqMac" manage=off 39 - yabai -m rule --add app="^Arc$" manage=off 40 - yabai -m rule --add app="OBS" manage=off 41 - yabai -m rule --add app="Raycast" manage=off 42 - ''; 43 - }; 44 - 45 - services.skhd = { 46 - enable = true; 47 - skhdConfig = '' 48 - # Move/swap windows 49 - meh - w : yabai -m window --swap north 50 - meh - a : yabai -m window --swap west 51 - meh - r : yabai -m window --swap south 52 - meh - s : yabai -m window --swap east 53 - 54 - hyper - w : yabai -m window --warp north 55 - hyper - a : yabai -m window --warp west 56 - hyper - r : yabai -m window --warp south 57 - hyper - s : yabai -m window --warp east 58 - 59 - # Focus windows 60 - ralt + rcmd - w : yabai -m window --focus north 61 - ralt + rcmd - a : yabai -m window --focus west 62 - ralt + rcmd - r : yabai -m window --focus south 63 - ralt + rcmd - s : yabai -m window --focus east 64 - 65 - # Increase window size 66 - meh - n : yabai -m window --resize left:-100:0 67 - meh - e : yabai -m window --resize bottom:0:100 68 - meh - i : yabai -m window --resize top:0:-100 69 - meh - o : yabai -m window --resize right:100:0 70 - 71 - # Decrease window size 72 - hyper - n : yabai -m window --resize right:-100:0 73 - hyper - e : yabai -m window --resize top:0:100 74 - hyper - i : yabai -m window --resize bottom:0:-100 75 - hyper - o : yabai -m window --resize left:100:0 76 - 77 - # Expand floating window to fill screen 78 - # (full stop) 79 - meh - 0x2F : yabai -m window --grid 1:1:0:0:1:1 80 - 81 - meh - p : yabai -m window --toggle float; \ 82 - yabai -m window --grid 4:4:1:1:2:2 83 - 84 - # Rebalance grid 85 - # (backtick) 86 - hyper - 0x32 : yabai -m space --balance 87 - ''; 88 - }; 89 - }
+75 -46
flake.lock
··· 9 9 "nixpkgs": [ 10 10 "nixpkgs" 11 11 ], 12 + "nixpkgs-lib": "nixpkgs-lib", 12 13 "pre-commit-hooks": "pre-commit-hooks" 13 14 }, 14 15 "locked": { 15 - "lastModified": 1749374482, 16 - "narHash": "sha256-IAyAgmxZ+8YUPkyxn6gvCUZiV93dX6oLmcOOCSU9We4=", 16 + "lastModified": 1749889036, 17 + "narHash": "sha256-sLj+y810h3a02G/b5pj6J9Uj1fWw3xGgl6LkCLr5UQw=", 17 18 "owner": "yunfachi", 18 19 "repo": "denix", 19 - "rev": "5a27d210ee6ff79375731a515810a02c6bb8b0d4", 20 + "rev": "9f6b0cb1c5bfb1bed685b9d953b2a9779ccaa3a0", 20 21 "type": "github" 21 22 }, 22 23 "original": { ··· 139 140 ] 140 141 }, 141 142 "locked": { 142 - "lastModified": 1749526396, 143 - "narHash": "sha256-UL9F76abAk87llXOrcQRjhd5OaOclUd6MIltsqcUZmo=", 143 + "lastModified": 1750304462, 144 + "narHash": "sha256-Mj5t4yX05/rXnRqJkpoLZTWqgStB88Mr/fegTRqyiWc=", 144 145 "owner": "nix-community", 145 146 "repo": "home-manager", 146 - "rev": "427c96044f11a5da50faf6adaf38c9fa47e6d044", 147 + "rev": "863842639722dd12ae9e37ca83bcb61a63b36f6c", 147 148 "type": "github" 148 149 }, 149 150 "original": { ··· 201 202 "narHash": "sha256-DN5/166jhiiAW0Uw6nueXaGTueVxhfZISAkoxasmz/g=", 202 203 "rev": "f19bd752910bbe3a861c9cad269bd078689d50fe", 203 204 "type": "tarball", 204 - "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz?rev=f19bd752910bbe3a861c9cad269bd078689d50fe" 205 + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/f19bd752910bbe3a861c9cad269bd078689d50fe.tar.gz" 205 206 }, 206 207 "original": { 207 208 "type": "tarball", ··· 220 221 "xwayland-satellite-unstable": "xwayland-satellite-unstable" 221 222 }, 222 223 "locked": { 223 - "lastModified": 1749533158, 224 - "narHash": "sha256-wIw3Q/Ls1nsLjBN4VsAiTMHZiyf5RGRVy2MWfyYPgMI=", 224 + "lastModified": 1750339466, 225 + "narHash": "sha256-lX8iwxjvubzEwSR2THa4HgwN6e+9ZZUs4dyAEMds33g=", 225 226 "owner": "sodiboo", 226 227 "repo": "niri-flake", 227 - "rev": "e5c4564ec3704f5e358f50d883b5200c4e8dfd7e", 228 + "rev": "c7a546d233748e8af0b5747b9130f49d06fdf871", 228 229 "type": "github" 229 230 }, 230 231 "original": { ··· 236 237 "niri-stable": { 237 238 "flake": false, 238 239 "locked": { 239 - "lastModified": 1740117926, 240 - "narHash": "sha256-mTTHA0RAaQcdYe+9A3Jx77cmmyLFHmRoZdd8RpWa+m8=", 240 + "lastModified": 1748151941, 241 + "narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=", 241 242 "owner": "YaLTeR", 242 243 "repo": "niri", 243 - "rev": "b94a5db8790339cf9134873d8b490be69e02ac71", 244 + "rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7", 244 245 "type": "github" 245 246 }, 246 247 "original": { 247 248 "owner": "YaLTeR", 248 - "ref": "v25.02", 249 + "ref": "v25.05.1", 249 250 "repo": "niri", 250 251 "type": "github" 251 252 } ··· 253 254 "niri-unstable": { 254 255 "flake": false, 255 256 "locked": { 256 - "lastModified": 1749474820, 257 - "narHash": "sha256-hf5eCZ0bbqwOKPvPKn8Rutwj+xs3GhAfB0AjGa8tIEM=", 257 + "lastModified": 1750334747, 258 + "narHash": "sha256-nsD1Z6vVP2Hhdgrd0uYHacre2+NhaH/53TFRXn6pRcs=", 258 259 "owner": "YaLTeR", 259 260 "repo": "niri", 260 - "rev": "a18d24fc24d8b17242e336ccf39fcbe91e8161fd", 261 + "rev": "e0b0b04b445f7044f383e50104f861e632e1c905", 261 262 "type": "github" 262 263 }, 263 264 "original": { ··· 294 295 ] 295 296 }, 296 297 "locked": { 297 - "lastModified": 1749194393, 298 - "narHash": "sha256-vt6hM9DNywnXXuW1qPDLzECmbDcmxhh58wpb0EEQjAo=", 298 + "lastModified": 1750325256, 299 + "narHash": "sha256-vvlxGz/waqJ3TGqM/iqXbnEc7/R1qnEXmaBiPaQ1RE0=", 299 300 "owner": "LnL7", 300 301 "repo": "nix-darwin", 301 - "rev": "19346808c445f23b08652971be198b9df6c33edc", 302 + "rev": "0d71cbf88d63e938b37b85b3bf8b238bcf7b39b9", 302 303 "type": "github" 303 304 }, 304 305 "original": { ··· 314 315 ] 315 316 }, 316 317 "locked": { 317 - "lastModified": 1749355504, 318 - "narHash": "sha256-L17CdJMD+/FCBOHjREQLXbe2VUnc3rjffenBbu2Kwpc=", 318 + "lastModified": 1749960154, 319 + "narHash": "sha256-EWlr9MZDd+GoGtZB4QsDzaLyaDQPGnRY03MFp6u2wSg=", 319 320 "owner": "nix-community", 320 321 "repo": "nix-index-database", 321 - "rev": "40a6e15e44b11fbf8f2b1df9d64dbfc117625e94", 322 + "rev": "424a40050cdc5f494ec45e46462d288f08c64475", 322 323 "type": "github" 323 324 }, 324 325 "original": { ··· 330 331 "nix-vscode-extensions": { 331 332 "inputs": { 332 333 "flake-utils": "flake-utils_3", 333 - "nixpkgs": "nixpkgs" 334 + "nixpkgs": "nixpkgs_2" 334 335 }, 335 336 "locked": { 336 - "lastModified": 1749521131, 337 - "narHash": "sha256-ezZ15tLA2L+rmtn39dKLFW/UM2xlksC61V12blulpjE=", 337 + "lastModified": 1750298804, 338 + "narHash": "sha256-GEp1QwoQ7qQPYuOm5cGb3f5FZSlVwbw86KUrHlLbI2E=", 338 339 "owner": "nix-community", 339 340 "repo": "nix-vscode-extensions", 340 - "rev": "299b2aa650d32310153746135b6a84a6c4de9c21", 341 + "rev": "7b962ab252cecf0b88ae621e1986899e20a4ead3", 341 342 "type": "github" 342 343 }, 343 344 "original": { ··· 348 349 }, 349 350 "nixpkgs": { 350 351 "locked": { 351 - "lastModified": 1744868846, 352 - "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", 352 + "lastModified": 1749213349, 353 + "narHash": "sha256-UAaWOyQhdp7nXzsbmLVC67fo+QetzoTm9hsPf9X3yr4=", 353 354 "owner": "NixOS", 354 355 "repo": "nixpkgs", 355 - "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 356 + "rev": "a4ff0e3c64846abea89662bfbacf037ef4b34207", 356 357 "type": "github" 357 358 }, 358 359 "original": { 359 360 "owner": "NixOS", 361 + "ref": "nixpkgs-unstable", 360 362 "repo": "nixpkgs", 361 - "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 363 + "type": "github" 364 + } 365 + }, 366 + "nixpkgs-lib": { 367 + "locked": { 368 + "lastModified": 1749345370, 369 + "narHash": "sha256-w2J8aeSsMT6v6xAokr076vSCDHs5LRi2JkTUyNsEl4o=", 370 + "owner": "nix-community", 371 + "repo": "nixpkgs.lib", 372 + "rev": "2a3d74c76852805ec8eba6dd52350e85e75805ec", 373 + "type": "github" 374 + }, 375 + "original": { 376 + "owner": "nix-community", 377 + "repo": "nixpkgs.lib", 362 378 "type": "github" 363 379 } 364 380 }, 365 381 "nixpkgs-stable": { 366 382 "locked": { 367 - "lastModified": 1749237914, 368 - "narHash": "sha256-N5waoqWt8aMr/MykZjSErOokYH6rOsMMXu3UOVH5kiw=", 383 + "lastModified": 1750133334, 384 + "narHash": "sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw=", 369 385 "owner": "NixOS", 370 386 "repo": "nixpkgs", 371 - "rev": "70c74b02eac46f4e4aa071e45a6189ce0f6d9265", 387 + "rev": "36ab78dab7da2e4e27911007033713bab534187b", 372 388 "type": "github" 373 389 }, 374 390 "original": { ··· 380 396 }, 381 397 "nixpkgs_2": { 382 398 "locked": { 383 - "lastModified": 1749285348, 384 - "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", 399 + "lastModified": 1744868846, 400 + "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", 401 + "owner": "NixOS", 402 + "repo": "nixpkgs", 403 + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 404 + "type": "github" 405 + }, 406 + "original": { 407 + "owner": "NixOS", 408 + "repo": "nixpkgs", 409 + "rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c", 410 + "type": "github" 411 + } 412 + }, 413 + "nixpkgs_3": { 414 + "locked": { 415 + "lastModified": 1750134718, 416 + "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", 385 417 "owner": "nixos", 386 418 "repo": "nixpkgs", 387 - "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", 419 + "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", 388 420 "type": "github" 389 421 }, 390 422 "original": { ··· 398 430 "inputs": { 399 431 "flake-compat": "flake-compat", 400 432 "gitignore": "gitignore", 401 - "nixpkgs": [ 402 - "denix", 403 - "nixpkgs" 404 - ] 433 + "nixpkgs": "nixpkgs" 405 434 }, 406 435 "locked": { 407 436 "lastModified": 1746537231, ··· 427 456 "nix-darwin": "nix-darwin_2", 428 457 "nix-index-database": "nix-index-database", 429 458 "nix-vscode-extensions": "nix-vscode-extensions", 430 - "nixpkgs": "nixpkgs_2" 459 + "nixpkgs": "nixpkgs_3" 431 460 } 432 461 }, 433 462 "systems": { ··· 478 507 "xwayland-satellite-stable": { 479 508 "flake": false, 480 509 "locked": { 481 - "lastModified": 1739246919, 482 - "narHash": "sha256-/hBM43/Gd0/tW+egrhlWgOIISeJxEs2uAOIYVpfDKeU=", 510 + "lastModified": 1748488455, 511 + "narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=", 483 512 "owner": "Supreeeme", 484 513 "repo": "xwayland-satellite", 485 - "rev": "44590a416d4a3e8220e19e29e0b6efe64a80315d", 514 + "rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73", 486 515 "type": "github" 487 516 }, 488 517 "original": { 489 518 "owner": "Supreeeme", 490 - "ref": "v0.5.1", 519 + "ref": "v0.6", 491 520 "repo": "xwayland-satellite", 492 521 "type": "github" 493 522 }
+2 -1
flake.nix
··· 67 67 in { 68 68 inherit moduleSystem homeManagerUser; 69 69 70 - paths = [./denix/hosts ./denix/modules]; #./denix/rices]; 70 + paths = [./hosts ./modules]; #./rices]; 71 71 specialArgs = {inherit inputs moduleSystem homeManagerUser;}; 72 72 }); 73 73 in { ··· 87 87 # }; 88 88 89 89 nixosConfigurations = mkConfigurations "nixos"; 90 + darwinConfigurations = mkConfigurations "darwin"; 90 91 91 92 # nixosModules.serverHomeManager = {...}: { 92 93 # imports = [home-manager.nixosModules.home-manager];
+15
hosts/shimmer/default.nix
··· 1 + {delib, ...}: 2 + delib.host { 3 + name = "shimmer"; 4 + 5 + myconfig._1password.enable = false; 6 + myconfig.gaming.enable = false; 7 + myconfig.tray.enable = false; 8 + myconfig.virtualisation.enable = false; 9 + 10 + myconfig.programs.chromium.enable = false; 11 + myconfig.programs.desktop-apps.enable = false; 12 + myconfig.programs.espanso.enable = false; 13 + myconfig.programs.kitty.enable = false; 14 + myconfig.programs.syncthing.enable = false; 15 + }
+19
hosts/shimmer/hardware.nix
··· 1 + { 2 + delib, 3 + inputs, 4 + ... 5 + }: 6 + delib.host { 7 + name = "shimmer"; 8 + 9 + homeManagerSystem = "aarch64-darwin"; 10 + home.home.stateVersion = "24.05"; 11 + 12 + darwin = { 13 + nixpkgs.hostPlatform = "aarch64-darwin"; 14 + # TODO: `darwin-rebuild changelog` to see what changed, latest is 6 15 + system.stateVersion = 4; 16 + # TODO: see what this does, i forgor 17 + system.configurationRevision = inputs.self.rev or inputs.self.dirtyRev or null; 18 + }; 19 + }
+4 -1
modules/config/home.nix
··· 18 18 in { 19 19 home = { 20 20 inherit username; 21 - homeDirectory = "/home/${username}"; 21 + homeDirectory = 22 + if moduleSystem == "darwin" 23 + then "/Users/${username}" 24 + else "/home/${username}"; 22 25 }; 23 26 news.display = "silent"; 24 27 programs.home-manager.enable = false;
+15 -7
modules/config/user.nix
··· 9 9 nixos.always = {myconfig, ...}: let 10 10 inherit (myconfig.constants) username userfullname; 11 11 in { 12 - users = { 13 - users.${username} = { 14 - isNormalUser = true; 15 - description = userfullname; 16 - extraGroups = ["wheel" "cdrom" "adbusers"]; 17 - shell = pkgs.fish; 18 - }; 12 + users.users.${username} = { 13 + isNormalUser = true; 14 + description = userfullname; 15 + extraGroups = ["wheel" "cdrom" "adbusers"]; 16 + shell = pkgs.fish; 17 + }; 18 + }; 19 + 20 + darwin.always = {myconfig, ...}: let 21 + inherit (myconfig.constants) username userfullname; 22 + in { 23 + users.users.${username} = { 24 + description = userfullname; 25 + home = "/Users/${username}"; 26 + shell = pkgs.fish; 19 27 }; 20 28 }; 21 29 }
+24
modules/darwin/defaults.nix
··· 1 + {delib, ...}: 2 + delib.module { 3 + name = "darwin.defaults"; 4 + 5 + options = delib.singleEnableOption true; 6 + 7 + darwin.ifEnabled.system.defaults = { 8 + NSGlobalDomain.AppleShowAllExtensions = true; 9 + finder.ShowPathbar = true; 10 + menuExtraClock.Show24Hour = true; 11 + trackpad.Dragging = true; 12 + 13 + # Dock settings 14 + dock = { 15 + autohide = false; 16 + magnification = false; 17 + minimize-to-application = false; 18 + mru-spaces = false; 19 + orientation = "bottom"; 20 + show-recents = false; 21 + tilesize = 48; 22 + }; 23 + }; 24 + }
+100
modules/darwin/wm.nix
··· 1 + { 2 + delib, 3 + lib, 4 + ... 5 + }: 6 + delib.module { 7 + name = "darwin.wm"; 8 + 9 + options = delib.singleEnableOption true; 10 + 11 + darwin.ifEnabled = { 12 + services.yabai = { 13 + enable = true; 14 + config = let 15 + gap = 10; 16 + gapKeys = [ 17 + "window_gap" 18 + "top_padding" 19 + "bottom_padding" 20 + "left_padding" 21 + "right_padding" 22 + ]; 23 + 24 + gaps = builtins.listToAttrs ( 25 + builtins.map (k: lib.attrsets.nameValuePair k gap) gapKeys 26 + ); 27 + in 28 + { 29 + layout = "bsp"; 30 + window_placement = "second_child"; 31 + } 32 + // gaps; 33 + extraConfig = '' 34 + yabai -m rule --add app="Bitwarden" manage=off 35 + yabai -m rule --add app="Discord" manage=off 36 + yabai -m rule --add app="^Finder$" manage=off 37 + yabai -m rule --add app="Keka" manage=off 38 + yabai -m rule --add app="^System Information$" manage=off 39 + yabai -m rule --add app="^System Preferences$" manage=off 40 + yabai -m rule --add app="^System Settings$" manage=off 41 + yabai -m rule --add title="Preferences$" manage=off 42 + yabai -m rule --add title="^Archive Utility$" manage=off 43 + yabai -m rule --add title="Settings$" manage=off 44 + yabai -m rule --add title="Karabiner" manage=off 45 + yabai -m rule --add title="^Weather$" manage=off 46 + yabai -m rule --add title="Yubico Authenticator" manage=off 47 + yabai -m rule --add app="Rewind" manage=off 48 + yabai -m rule --add app="eqMac" manage=off 49 + yabai -m rule --add app="^Arc$" manage=off 50 + yabai -m rule --add app="OBS" manage=off 51 + yabai -m rule --add app="Raycast" manage=off 52 + ''; 53 + }; 54 + 55 + services.skhd = { 56 + enable = true; 57 + skhdConfig = '' 58 + # Move/swap windows 59 + meh - w : yabai -m window --swap north 60 + meh - a : yabai -m window --swap west 61 + meh - r : yabai -m window --swap south 62 + meh - s : yabai -m window --swap east 63 + 64 + hyper - w : yabai -m window --warp north 65 + hyper - a : yabai -m window --warp west 66 + hyper - r : yabai -m window --warp south 67 + hyper - s : yabai -m window --warp east 68 + 69 + # Focus windows 70 + ralt + rcmd - w : yabai -m window --focus north 71 + ralt + rcmd - a : yabai -m window --focus west 72 + ralt + rcmd - r : yabai -m window --focus south 73 + ralt + rcmd - s : yabai -m window --focus east 74 + 75 + # Increase window size 76 + meh - n : yabai -m window --resize left:-100:0 77 + meh - e : yabai -m window --resize bottom:0:100 78 + meh - i : yabai -m window --resize top:0:-100 79 + meh - o : yabai -m window --resize right:100:0 80 + 81 + # Decrease window size 82 + hyper - n : yabai -m window --resize right:-100:0 83 + hyper - e : yabai -m window --resize top:0:100 84 + hyper - i : yabai -m window --resize bottom:0:-100 85 + hyper - o : yabai -m window --resize left:100:0 86 + 87 + # Expand floating window to fill screen 88 + # (full stop) 89 + meh - 0x2F : yabai -m window --grid 1:1:0:0:1:1 90 + 91 + meh - p : yabai -m window --toggle float; \ 92 + yabai -m window --grid 4:4:1:1:2:2 93 + 94 + # Rebalance grid 95 + # (backtick) 96 + hyper - 0x32 : yabai -m space --balance 97 + ''; 98 + }; 99 + }; 100 + }
+7
modules/fonts.nix
··· 47 47 # ]; 48 48 # }; 49 49 }; 50 + 51 + darwin.always = { 52 + fonts.packages = with pkgs; [ 53 + inter 54 + inputs.iosevka-solai.packages.aarch64-darwin.bin 55 + ]; 56 + }; 50 57 }
+4 -2
modules/gaming.nix
··· 7 7 delib.module { 8 8 name = "gaming"; 9 9 10 - nixos.always = { 10 + options = delib.singleEnableOption true; 11 + 12 + nixos.ifEnabled = { 11 13 programs.steam = { 12 14 enable = true; 13 15 remotePlay.openFirewall = true; ··· 19 21 programs.gamemode.enable = true; 20 22 }; 21 23 22 - home.always = { 24 + home.ifEnabled = { 23 25 programs.mangohud = { 24 26 enable = true; 25 27 settings = {
+41
modules/nix.nix
··· 36 36 nixpkgs.config.allowUnfree = true; 37 37 system.tools.nixos-option.enable = false; 38 38 }; 39 + 40 + darwin.always = { 41 + nixpkgs.config.allowUnfree = true; 42 + 43 + nix = { 44 + buildMachines = [ 45 + { 46 + hostName = "rushing.axolotl-map.ts.net"; 47 + sshUser = "colmena-deploy"; 48 + system = "x86_64-linux"; 49 + speedFactor = 2; 50 + maxJobs = 6; 51 + protocol = "ssh-ng"; 52 + } 53 + { 54 + hostName = "skyline.axolotl-map.ts.net"; 55 + sshUser = "colmena-deploy"; 56 + system = "aarch64-linux"; 57 + speedFactor = 1; 58 + maxJobs = 2; 59 + protocol = "ssh-ng"; 60 + } 61 + ]; 62 + 63 + distributedBuilds = true; 64 + 65 + gc = { 66 + automatic = true; 67 + options = "--delete-older-than 7d"; 68 + interval.Weekday = 6; 69 + }; 70 + 71 + optimise.automatic = true; 72 + 73 + settings = { 74 + builders-use-substitutes = true; 75 + experimental-features = "nix-command flakes"; 76 + trusted-users = ["root" "ovy"]; 77 + }; 78 + }; 79 + }; 39 80 }
+3 -1
modules/programs/bat.nix
··· 2 2 delib.module { 3 3 name = "programs.bat"; 4 4 5 - home.always.programs.bat = { 5 + options = delib.singleEnableOption true; 6 + 7 + home.ifEnabled.programs.bat = { 6 8 enable = true; 7 9 config = { 8 10 theme = "DarkNeon";
+37
modules/programs/core-cli.nix
··· 6 6 delib.module { 7 7 name = "programs.core-cli"; 8 8 9 + options = delib.singleEnableOption true; 10 + 9 11 nixos.always = { 10 12 environment.systemPackages = with pkgs; [ 11 13 ffmpeg-full ··· 25 27 ]; 26 28 27 29 programs.fish.enable = true; 30 + }; 31 + 32 + darwin.always = { 33 + environment.systemPackages = with pkgs; [ 34 + ffmpeg-full 35 + git 36 + imagemagick 37 + nil 38 + openssh 39 + wget 40 + # TODO: the Xcode packages makes us manually download and put it into the Nix store 41 + # but it seems to contain no reference to our actual result so I don't think `systemPackages` 42 + # picks it up properly. Need to see how `requireFile` works and how `systemPackages` 43 + # works under the hood. 44 + # darwin.xcode_14_1 45 + ]; 46 + 47 + programs.bash.enable = true; 48 + programs.zsh.enable = true; 49 + programs.fish.enable = true; 50 + 51 + # Fix problem in nix-darwin relating to $PATH order in fish. 52 + # https://github.com/LnL7/nix-darwin/issues/122#issuecomment-1659465635 53 + # programs.fish.loginShellInit = let 54 + # dquote = str: "\"${str}\""; 55 + # makeBinPathList = map (path: path + "/bin"); 56 + # in '' 57 + # fish_add_path --move --prepend --path ${lib.concatMapStringsSep " " dquote (makeBinPathList config.environment.profiles)} 58 + # set fish_user_paths $fish_user_paths 59 + # fish_add_path /opt/homebrew/bin 60 + # ''; 61 + 62 + programs.fish.loginShellInit = '' 63 + alias tailscale /Applications/Tailscale.app/Contents/MacOS/Tailscale 64 + ''; 28 65 }; 29 66 30 67 home.always = {
+3 -1
modules/programs/desktop-apps.nix
··· 6 6 delib.module { 7 7 name = "programs.desktop-apps"; 8 8 9 - home.always = { 9 + options = delib.singleEnableOption true; 10 + 11 + home.ifEnabled = { 10 12 home.packages = with pkgs; [ 11 13 alejandra 12 14 audacity
+3 -1
modules/programs/desktop-cli.nix
··· 6 6 delib.module { 7 7 name = "programs.desktop-cli"; 8 8 9 - home.always.home.packages = with pkgs; [ 9 + options = delib.singleEnableOption true; 10 + 11 + home.ifEnabled.home.packages = with pkgs; [ 10 12 age-plugin-yubikey 11 13 alejandra 12 14 cachix
+1 -1
modules/programs/direnv.nix
··· 4 4 ... 5 5 }: 6 6 delib.module { 7 - name = "programs.bat"; 7 + name = "programs.direnv"; 8 8 9 9 home.always.programs.direnv = { 10 10 enable = true;
+3 -1
modules/programs/espanso.nix
··· 6 6 delib.module { 7 7 name = "programs.espanso"; 8 8 9 - home.always.services.espanso = { 9 + options = delib.singleEnableOption true; 10 + 11 + home.ifEnabled.services.espanso = { 10 12 enable = true; 11 13 package = pkgs.espanso-wayland; 12 14 matches.base.matches = [
+1 -1
modules/programs/fish.nix
··· 35 35 ''; 36 36 37 37 shellAbbrs = { 38 - code = "codium"; 38 + # code = "codium"; 39 39 ga = "git add"; 40 40 gaa = "git add -A"; 41 41 gc = {
+1 -1
modules/programs/git.nix
··· 5 5 home.always = {myconfig, ...}: let 6 6 inherit (myconfig.constants) userfullname useremail; 7 7 in { 8 - xdg.configFile."git/allowed_signers".source = ../../../files/git/allowed_signers; 8 + xdg.configFile."git/allowed_signers".source = ../../files/git/allowed_signers; 9 9 10 10 programs.git = { 11 11 enable = true;
+1 -1
modules/programs/ssh.nix
··· 13 13 }; 14 14 15 15 # TODO: if darwin 16 - # programs.ssh.includes = ["~/.orbstack/ssh/config"]; 16 + includes = ["~/.orbstack/ssh/config"]; 17 17 }; 18 18 }
+4 -6
modules/tray.nix
··· 1 - { 2 - delib, 3 - pkgs, 4 - ... 5 - }: 1 + {delib, ...}: 6 2 delib.module { 7 3 name = "tray"; 4 + 5 + options = delib.singleEnableOption true; 8 6 9 7 # TODO: i don't think this is needed anymore??? 10 - home.always.systemd.user.targets.tray = { 8 + home.ifEnabled.systemd.user.targets.tray = { 11 9 Unit = { 12 10 Description = "Home Manager System Tray"; 13 11 Requires = ["graphical-session-pre.target"];
+4 -2
modules/virtualisation.nix
··· 6 6 delib.module { 7 7 name = "virtualisation"; 8 8 9 - nixos.always = {myconfig, ...}: let 9 + options = delib.singleEnableOption true; 10 + 11 + nixos.ifEnabled = {myconfig, ...}: let 10 12 inherit (myconfig.constants) username; 11 13 in { 12 14 environment.systemPackages = [pkgs.docker-compose]; ··· 22 24 users.users.${username}.extraGroups = ["libvirtd"]; 23 25 }; 24 26 25 - home.always.home.sessionVariables.DOCKER_HOST = "unix:///run/user/1000/podman/podman.sock"; 27 + home.ifEnabled.home.sessionVariables.DOCKER_HOST = "unix:///run/user/1000/podman/podman.sock"; 26 28 }
+18 -19
modules/xdg.nix
··· 1 1 { 2 2 delib, 3 + moduleSystem, 3 4 pkgs, 5 + lib, 4 6 ... 5 7 }: 6 8 delib.module { 7 - name = "programs.espanso"; 9 + name = "xdg"; 8 10 9 11 home.always = let 10 12 vivalarc = pkgs.fetchFromGitHub { ··· 13 15 rev = "7ee09e9efb46c1524a43f0cb6763b9750db6e81c"; 14 16 hash = "sha256-xYSxB8KjcbeUDEdbA2AJ9FeQC1TkqyXdB9rTMMSm+FA="; 15 17 }; 16 - in { 17 - xdg.desktopEntries.davinci-resolve = { 18 - name = "Davinci Resolve"; 19 - exec = "davinci-resolve"; 20 - categories = ["AudioVideo" "AudioVideoEditing" "Video" "Graphics"]; 21 - comment = "Professional video editing, color, effects and audio post-processing"; 22 - genericName = "Video Editor"; 23 - type = "Application"; 24 - settings.Version = "1.4"; 25 - }; 26 - 27 - xdg.dataFile."vivalarc".source = vivalarc; 28 - }; 29 - 30 - # if darwin: xdg.configFile = { 31 - # TODO: replace with the full karabiner config instead of needing to manually set complex mods 32 - # "karabiner/assets/complex_modifications/keybind-helpers.json".source = ../../../files/karabiner/keybind-helpers.json; 33 - # }; 18 + in ({ 19 + xdg.dataFile."vivalarc".source = vivalarc; 20 + xdg.configFile."karabiner/assets/complex_modifications/keybind-helpers.json".source = ../files/karabiner/keybind-helpers.json; 21 + } 22 + // lib.optionalAttrs (moduleSystem == "nixos") { 23 + xdg.desktopEntries.davinci-resolve = { 24 + name = "Davinci Resolve"; 25 + exec = "davinci-resolve"; 26 + categories = ["AudioVideo" "AudioVideoEditing" "Video" "Graphics"]; 27 + comment = "Professional video editing, color, effects and audio post-processing"; 28 + genericName = "Video Editor"; 29 + type = "Application"; 30 + settings.Version = "1.4"; 31 + }; 32 + }); 34 33 }