Author SHA1 Message Date
Noah Masur 573c0acd33 disable flaky paho-mqtt test suite breaking flame rebuild 2026-07-20 18:28:57 -04:00
Noah Masur eec777c0c1 fix mathesar has a flaky test 2026-07-20 17:50:56 -04:00
Noah Masur 638b112db9 fix Discord on macOS: use Homebrew cask instead of broken nixpkgs bundle 2026-07-20 17:50:54 -04:00
Noah Masur 27917ffede remove home-manager module from nix-darwin
this fixes the starship errors when rebuilding nix-darwin
2026-07-20 14:33:48 -04:00
Noah Masur 73b62e0907 fix broken rebuilds 2026-07-20 14:25:58 -04:00
Noah Masur b25cfe6877 add llm-development profile 2026-07-20 14:25:58 -04:00
Noah Masur d162df2515 use noti for gh run watch in zellij pane 2026-07-20 09:00:59 -04:00
github-actions[bot]andgithub-actions[bot] 396337f74d flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/d5bd9cd77aea4c0a8f49e7fd85545671a208ed15' (2026-07-07)
  → 'github:lnl7/nix-darwin/a4cf1d10853b0d2be19b9eca35d749e201d70b55' (2026-07-15)
• Updated input 'home-manager':
    'github:nix-community/home-manager/2afec152df4e284d264f8489d16004c264aebf4c' (2026-07-11)
  → 'github:nix-community/home-manager/460108009ca1ff69ca2ff19079ca2c838d6e3080' (2026-07-18)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0bb7ec54c8483066ec9d7720e780a5caa71f8612' (2026-07-08)
  → 'github:nixos/nixpkgs/753cc8a3a87467296ddd1fa93f0cc3e81120ee46' (2026-07-15)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/8f0500b9660505dc3cb647775fe9a978a74b5283' (2026-07-10)
  → 'github:nixos/nixpkgs/293d6abedf0478e681a4dfcfcb35b30fc796a32f' (2026-07-17)
• Updated input 'nur':
    'github:nix-community/nur/29c4c5612e67bce09ee3f2f988bebe51ff9e6b81' (2026-07-11)
  → 'github:nix-community/nur/697f13fd230047493989b03576419792273c3a9e' (2026-07-18)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/e598b37857b895b81020a65a802ef55f5bbed72f' (2026-07-11)
  → 'github:oxalica/rust-overlay/3c38e1e1ba9c8d7030f7b5a801398ea7d8a6fdc0' (2026-07-18)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/a9620cfa43f0c1c30a46c31ae3c6e58cdb124a14' (2026-07-06)
  → 'github:nix-community/NixOS-WSL/24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad' (2026-07-14)
2026-07-18 05:53:01 +00:00
Noah Masur 76b50920de update and fix karakeep transitive dependency error 2026-07-11 09:28:07 -06:00
Noah Masur e04cdab409 switch 1password on darwin to nix module 2026-07-08 11:20:22 -06:00
Noah Masur d238b7a81a remove modules directory no longer used 2026-07-08 11:10:11 -06:00
Noah Masur f3e24c3730 add noti preset to darwin profile 2026-07-07 14:34:04 -06:00
Noah Masur 5862c7cb29 add back staeam for macos 2026-07-06 18:19:16 -06:00
Noah Masur a175acd0ad fix: ghostty breaking zellij and hammerspoon launching 2026-07-05 18:33:38 -06:00
Noah Masur 3f3cf65c77 fix: system renamed warning 2026-07-05 18:06:13 -06:00
Noah Masur 35d40ca346 switch from nix-darwin control to more home-manager darwin settings 2026-07-05 17:59:27 -06:00
github-actions[bot]andgithub-actions[bot] e0fb590314 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/8d8a6cc50ddc60748791a14ee1163c865ec57635' (2026-06-27)
  → 'github:nix-community/home-manager/b885baad531fa3d3beae2ba9a0712d22974d8016' (2026-07-04)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e73de5be04e0eff4190a1432b946d469c794e7b4' (2026-06-26)
  → 'github:nixos/nixpkgs/65179426c83bb3f6bc14898b42ea1c6f01d374b0' (2026-07-02)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/4062d36ebeae843c750011eef6b61ec9a9dbc9a9' (2026-06-25)
  → 'github:nixos/nixpkgs/95ca1e203c0750115fd4a6f17d5a245dfe6b1edd' (2026-06-30)
• Updated input 'nur':
    'github:nix-community/nur/e0abe20203566414fc15f8c1006ada8a0fb0b8af' (2026-06-27)
  → 'github:nix-community/nur/c50af1cc06115c76b81c0bbe079248193003e707' (2026-07-04)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/06ba695dfefc4afc513b49dfc41c4bf0dd2eaeb1' (2026-06-27)
  → 'github:oxalica/rust-overlay/fe5aee0952e8e1525533d61defd9e36513db811b' (2026-07-04)
2026-07-04 06:39:14 +00:00
github-actions[bot]andgithub-actions[bot] 2f107ad207 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/37f21dfa5d27e71b75bacd9418b156f9265e312e' (2026-06-19)
  → 'github:nix-community/home-manager/8d8a6cc50ddc60748791a14ee1163c865ec57635' (2026-06-27)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/567a49d1913ce81ac6e9582e3553dd90a955875f' (2026-06-16)
  → 'github:nixos/nixpkgs/e73de5be04e0eff4190a1432b946d469c794e7b4' (2026-06-26)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/a0374025a863d007d98e3297f6aa46cc3141c2f0' (2026-06-11)
  → 'github:nixos/nixpkgs/4062d36ebeae843c750011eef6b61ec9a9dbc9a9' (2026-06-25)
• Updated input 'nur':
    'github:nix-community/nur/16d79cbdb047a88b69d7dbd5a111e00ea733905d' (2026-06-20)
  → 'github:nix-community/nur/e0abe20203566414fc15f8c1006ada8a0fb0b8af' (2026-06-27)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/e8e2021ee8cf3b58b000953ed3bee0d16b5e98e0' (2026-06-20)
  → 'github:oxalica/rust-overlay/06ba695dfefc4afc513b49dfc41c4bf0dd2eaeb1' (2026-06-27)
2026-06-27 06:46:54 +00:00
Noah Masur b6b0a29a78 add antigravity cli 2026-06-21 17:13:07 -04:00
github-actions[bot]andgithub-actions[bot] fd6da7e68d flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/aabb2037edfc0f210723b72cd5f528aab5dd3f0b' (2026-06-12)
  → 'github:lnl7/nix-darwin/a1fa429e945becaf60468600daf649be4ba0350c' (2026-06-18)
• Updated input 'home-manager':
    'github:nix-community/home-manager/c87a39aa979acc4848016d2220c6238390d84779' (2026-06-12)
  → 'github:nix-community/home-manager/37f21dfa5d27e71b75bacd9418b156f9265e312e' (2026-06-19)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/9ae611a455b90cf061d8f332b977e387bda8e1ca' (2026-06-10)
  → 'github:nixos/nixpkgs/567a49d1913ce81ac6e9582e3553dd90a955875f' (2026-06-16)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/bd0ff2d3eac24699c3664d5966b9ef36f388e2ca' (2026-06-08)
  → 'github:nixos/nixpkgs/a0374025a863d007d98e3297f6aa46cc3141c2f0' (2026-06-11)
• Updated input 'nur':
    'github:nix-community/nur/d093785742fb74b13a61ca54060206da54f782d0' (2026-06-13)
  → 'github:nix-community/nur/16d79cbdb047a88b69d7dbd5a111e00ea733905d' (2026-06-20)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/5b929d8c854149d926d05ea0cd6469bf4e54db27' (2026-06-13)
  → 'github:oxalica/rust-overlay/e8e2021ee8cf3b58b000953ed3bee0d16b5e98e0' (2026-06-20)
• Updated input 'zellij-switch':
    'github:mostafaqanbaryan/zellij-switch/0e3c303c19890ccb03589230ac5a7c4307e573e4' (2025-03-21)
  → 'github:mostafaqanbaryan/zellij-switch/ced3c681afe40785b2853e3a976908466786ee79' (2026-06-19)
2026-06-20 07:40:39 +00:00
Noah Masur 28049e9c30 fix: skip broken checkPhase for kubernetes-helm 4.2.0 2026-06-14 09:54:40 -04:00
Noah Masur d95cdb1385 sign git commits with work acct 2026-06-14 09:54:40 -04:00
Noah Masur cf8f1fa221 fix: allow calibre-web to write through metadata.db symlink 2026-06-13 09:45:34 -04:00
Noah Masur 8b098f0589 fix: zoxide fuzzy search for session switching 2026-06-13 09:45:34 -04:00
github-actions[bot]andgithub-actions[bot] 12961b19c0 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/56c666e108467d87d13508936aade6d567f2a501' (2026-05-17)
  → 'github:lnl7/nix-darwin/aabb2037edfc0f210723b72cd5f528aab5dd3f0b' (2026-06-12)
• Updated input 'disko':
    'github:nix-community/disko/115e5211780054d8a890b41f0b7734cafad54dfe' (2026-06-01)
  → 'github:nix-community/disko/ff8702b4de27f72b4c78573dfb89ec74e36abdf1' (2026-06-11)
• Updated input 'home-manager':
    'github:nix-community/home-manager/b2b7db486e06e098711dc291bb25db82850e1d16' (2026-06-05)
  → 'github:nix-community/home-manager/c87a39aa979acc4848016d2220c6238390d84779' (2026-06-12)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/331800de5053fcebacf6813adb5db9c9dca22a0c' (2026-05-31)
  → 'github:nixos/nixpkgs/9ae611a455b90cf061d8f332b977e387bda8e1ca' (2026-06-10)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/6b316287bae2ee04c9b93c8c858d930fd07d7338' (2026-06-03)
  → 'github:nixos/nixpkgs/bd0ff2d3eac24699c3664d5966b9ef36f388e2ca' (2026-06-08)
• Updated input 'nur':
    'github:nix-community/nur/b4f1d49eba34ce60c2e5d0e7246da64be7904fd3' (2026-06-06)
  → 'github:nix-community/nur/d093785742fb74b13a61ca54060206da54f782d0' (2026-06-13)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/27b7e78c6935293ee868469cc4172e9b8b17823b' (2026-06-06)
  → 'github:oxalica/rust-overlay/5b929d8c854149d926d05ea0cd6469bf4e54db27' (2026-06-13)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/ad4c358ded144d26da517b999ddb51295770c419' (2026-06-06)
  → 'github:nix-community/NixOS-WSL/5675822ba756e6e56f8f6a5a76e90e0da2ece94d' (2026-06-11)
2026-06-13 07:14:35 +00:00
github-actions[bot]andgithub-actions[bot] 455c047607 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/caa775cf67bfdc47f940edd96c975b5016df9059' (2026-05-29)
  → 'github:nix-community/disko/115e5211780054d8a890b41f0b7734cafad54dfe' (2026-06-01)
• Updated input 'home-manager':
    'github:nix-community/home-manager/7d8127d308c3fb9664f7e643eec944be74ebb37d' (2026-05-30)
  → 'github:nix-community/home-manager/b2b7db486e06e098711dc291bb25db82850e1d16' (2026-06-05)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/64c08a7ca051951c8eae34e3e3cb1e202fe36786' (2026-05-23)
  → 'github:nixos/nixpkgs/331800de5053fcebacf6813adb5db9c9dca22a0c' (2026-05-31)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/ec942ba042dad5ef097e2ef3a3effc034241f011' (2026-05-28)
  → 'github:nixos/nixpkgs/6b316287bae2ee04c9b93c8c858d930fd07d7338' (2026-06-03)
• Updated input 'nur':
    'github:nix-community/nur/0014c5be6969541b8ae4c6f64f59f14ce1b09503' (2026-05-30)
  → 'github:nix-community/nur/b4f1d49eba34ce60c2e5d0e7246da64be7904fd3' (2026-06-06)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/85570ef134d92a8702de6afd1f6f0209c863fa91' (2026-05-30)
  → 'github:oxalica/rust-overlay/27b7e78c6935293ee868469cc4172e9b8b17823b' (2026-06-06)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/5482f113fd31ebac131d1ebeb2ae90bf0d5e41f5' (2026-05-02)
  → 'github:nix-community/NixOS-WSL/ad4c358ded144d26da517b999ddb51295770c419' (2026-06-06)
2026-06-06 06:47:25 +00:00
Noah Masur fa307c0f4b updates for swan 2026-05-30 22:36:02 +00:00
Noah Masur 07a980e937 fix: grafana secrets systemd 2026-05-30 22:22:14 +00:00
Noah Masur 0a4a28d06a increase mealie login session 2026-05-30 18:54:42 +00:00
Noah Masur 5fd6593a92 fix: replace enableAllTerminfo with specific terminfo packages 2026-05-30 13:56:15 -04:00
Noah Masur 8af595b62b update to 26.05 for stable 2026-05-30 13:02:48 -04:00
Noah Masur 1e723db068 use jj-starship from nixpkgs instead of separate flake 2026-05-30 12:54:20 -04:00
Noah Masur 16e42c2021 fix: upgrade prometheus-actual-exporter to nodejs_22 2026-05-30 10:36:00 -04:00
github-actions[bot]andgithub-actions[bot] 38edf0a1a6 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/8c62fba0854ba15c8917aed18894dbccb48a3777' (2026-05-03)
  → 'github:lnl7/nix-darwin/56c666e108467d87d13508936aade6d567f2a501' (2026-05-17)
• Updated input 'disko':
    'github:nix-community/disko/63b4e7e6cf75307c1d26ac3762b886b5b0247267' (2026-05-02)
  → 'github:nix-community/disko/65fb947964bd44fc0008faf77d1fcb7a9f40bb32' (2026-05-19)
• Updated input 'home-manager':
    'github:nix-community/home-manager/a89686d115e970e200eb2caa7603f3673050e00c' (2026-05-04)
  → 'github:nix-community/home-manager/509ed3c603349a9d43de9e2ae6613baea6bd5b34' (2026-05-23)
• Updated input 'jj-starship':
    'github:dmmulroy/jj-starship/76cf00619b0cce5bd08a1b9a49b310ed928794d5' (2026-01-25)
  → 'github:dmmulroy/jj-starship/292224a93d5490332f32cc26d77676ccaeec0bfa' (2026-05-13)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/15f4ee454b1dce334612fa6843b3e05cf546efab' (2026-04-30)
  → 'github:nixos/nixpkgs/f83fc3c307e74bc5fd5adb7eb6b8b13ffd2a36e1' (2026-05-21)
• Updated input 'nur':
    'github:nix-community/nur/3a67c1ca739171f7196584bc250d195736e524b4' (2026-05-04)
  → 'github:nix-community/nur/7233bc9ba561a4a40166d72f489c76592354e5e4' (2026-05-23)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/669151bbc7f2416b622af2f48e9136e2c9da5530' (2026-05-04)
  → 'github:oxalica/rust-overlay/d9973e2ab49747fada06ebbe26cda27eb0220cf1' (2026-05-23)
2026-05-23 06:27:33 +00:00
Noah Masur 15f70dce2c fix nodePackages references in prometheus-actual-exporter 2026-05-16 10:38:18 -04:00
Noah Masur 1a7633fe8c disable daily summary 2026-05-16 08:38:08 -04:00
Noah Masur 40025b1211 enable thunderbird on mac 2026-05-11 11:12:03 -04:00
Noah Masur f5d9664caf try changing murmur credentials files, and disable murmur 2026-05-09 14:03:30 -04:00
Noah Masur 7010d6cea3 update system 2026-05-05 08:59:00 -04:00
Noah Masur a2a429d286 update nixpkgs and add pi 2026-04-08 10:58:51 -04:00
Noah Masur 7f5b5eb809 fix session switching (using cli actions) 2026-04-04 10:50:07 -04:00
Noah Masur f5f3a8336e switch font to maple mono 2026-04-04 10:50:07 -04:00
Noah Masur 4444a479d4 add actionlint 2026-04-04 10:50:07 -04:00
github-actions[bot]andgithub-actions[bot] 395c4b4348 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/da529ac9e46f25ed5616fd634079a5f3c579135f' (2026-03-08)
  → 'github:lnl7/nix-darwin/06648f4902343228ce2de79f291dd5a58ee12146' (2026-04-01)
• Updated input 'home-manager':
    'github:nix-community/home-manager/02371c05a04a2876cf92e2d67a259e8f87399068' (2026-03-27)
  → 'github:nix-community/home-manager/9dc93220c1c9a410ef6277d6dc55c571d9e592d0' (2026-04-04)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9' (2026-03-24)
  → 'github:nixos/nixpkgs/6201e203d09599479a3b3450ed24fa81537ebc4e' (2026-04-01)
• Updated input 'nur':
    'github:nix-community/nur/6298c3410e4000a9e91c344ac5f163b043534e03' (2026-03-28)
  → 'github:nix-community/nur/274b289253048dec21259c12a16508fb1e30e0f6' (2026-04-04)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/98caaa8cd1fbcc45913d1bb2b7fbabcf3e8d967a' (2026-03-28)
  → 'github:oxalica/rust-overlay/740fb0203b2852917b909a72b948d34d0b171ec0' (2026-04-04)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/fd0eae98d1ecee31024271f8d64676250a386ee7' (2026-03-19)
  → 'github:nix-community/NixOS-WSL/d97e078f4788cddb8d11c3c99f72a4bb9ddec221' (2026-03-31)
2026-04-04 05:14:31 +00:00
github-actions[bot]andgithub-actions[bot] 8dbec5f6ab flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/9670de2921812bc4e0452f6e3efd8c859696c183' (2026-03-20)
  → 'github:nix-community/home-manager/02371c05a04a2876cf92e2d67a259e8f87399068' (2026-03-27)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/b40629efe5d6ec48dd1efba650c797ddbd39ace0' (2026-03-18)
  → 'github:nixos/nixpkgs/46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9' (2026-03-24)
• Updated input 'nur':
    'github:nix-community/nur/08e7d1fc8fc15731a4d6a664207e18828fe028cb' (2026-03-21)
  → 'github:nix-community/nur/6298c3410e4000a9e91c344ac5f163b043534e03' (2026-03-28)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/c807e83cc2e32adc35f51138b3bdef722c0812ab' (2026-03-21)
  → 'github:oxalica/rust-overlay/98caaa8cd1fbcc45913d1bb2b7fbabcf3e8d967a' (2026-03-28)
2026-03-28 05:14:58 +00:00
Noah Masur f8d79cdf3a add claude code 2026-03-23 10:16:19 -04:00
Noah Masur 280082acfe zoom window hiding functionality
fix hammerspoon
2026-03-23 10:16:19 -04:00
github-actions[bot]andgithub-actions[bot] 1edf9da155 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/7b9f7f88ab3b339f8142dc246445abb3c370d3d3' (2026-03-09)
  → 'github:nix-community/disko/5ad85c82cc52264f4beddc934ba57f3789f28347' (2026-03-19)
• Updated input 'home-manager':
    'github:nix-community/home-manager/ef12a9a2b0f77c8fa3dda1e7e494fca668909056' (2026-03-13)
  → 'github:nix-community/home-manager/9670de2921812bc4e0452f6e3efd8c859696c183' (2026-03-20)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/fe416aaedd397cacb33a610b33d60ff2b431b127' (2026-03-12)
  → 'github:nixos/nixpkgs/b40629efe5d6ec48dd1efba650c797ddbd39ace0' (2026-03-18)
• Updated input 'nur':
    'github:nix-community/nur/a8b4f501a52ac4a789acb4ae022ce27bb2cf3c99' (2026-03-14)
  → 'github:nix-community/nur/08e7d1fc8fc15731a4d6a664207e18828fe028cb' (2026-03-21)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/055977c30249484010750e03074c744dcdaa0d23' (2026-03-14)
  → 'github:oxalica/rust-overlay/c807e83cc2e32adc35f51138b3bdef722c0812ab' (2026-03-21)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/d2fd7da4565797cf7e18b9b0a8b1044fbada8ff8' (2026-03-13)
  → 'github:nix-community/NixOS-WSL/fd0eae98d1ecee31024271f8d64676250a386ee7' (2026-03-19)
2026-03-21 04:57:33 +00:00
github-actions[bot]andgithub-actions[bot] 8d970103e1 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/6a7fdcd5839ec8b135821179eea3b58092171bcf' (2026-02-19)
  → 'github:lnl7/nix-darwin/da529ac9e46f25ed5616fd634079a5f3c579135f' (2026-03-08)
• Updated input 'disko':
    'github:nix-community/disko/4707eec8d1d2db5182ea06ed48c820a86a42dc13' (2026-02-19)
  → 'github:nix-community/disko/7b9f7f88ab3b339f8142dc246445abb3c370d3d3' (2026-03-09)
• Updated input 'home-manager':
    'github:nix-community/home-manager/436b27742c996b75e2baf8e835e3b3eae0c9fbd4' (2026-02-21)
  → 'github:nix-community/home-manager/ef12a9a2b0f77c8fa3dda1e7e494fca668909056' (2026-03-13)
• Updated input 'nix2vim':
    'github:gytis-ivaskevicius/nix2vim/78467c8de07719f92397179844bf75cdf2e58b83' (2025-08-16)
  → 'github:gytis-ivaskevicius/nix2vim/71acbf5f97545b01778df03a8f2194e918103eba' (2026-03-07)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0182a361324364ae3f436a63005877674cf45efb' (2026-02-17)
  → 'github:nixos/nixpkgs/fe416aaedd397cacb33a610b33d60ff2b431b127' (2026-03-12)
• Updated input 'nur':
    'github:nix-community/nur/1bedc7cb7cfbb0c29970ce26f61718c9b2dac4c3' (2026-02-21)
  → 'github:nix-community/nur/a8b4f501a52ac4a789acb4ae022ce27bb2cf3c99' (2026-03-14)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/85078369717bdbe1f266c9eaad5e66956fb6feea' (2026-02-21)
  → 'github:oxalica/rust-overlay/055977c30249484010750e03074c744dcdaa0d23' (2026-03-14)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/379d20c55f552e91fb9f3f0382e4a97d3f452943' (2026-02-20)
  → 'github:nix-community/NixOS-WSL/d2fd7da4565797cf7e18b9b0a8b1044fbada8ff8' (2026-03-13)
2026-03-14 05:02:26 +00:00
Noah Masur d9137ad738 add jj to gitignore 2026-03-12 20:29:24 -04:00
Noah Masur 4eacca970e add required secret key for grafana 2026-03-07 12:33:21 -05:00
Noah Masur d09ee3337b update jj starship to remove git prompt 2026-03-06 20:18:20 -05:00
Noah Masur 22e1c9b8eb keep uv installed as an available program 2026-03-06 20:18:00 -05:00
Noah Masur acd71623e4 remove my own extension from ff because it's not signed 2026-03-06 20:17:29 -05:00
Noah Masur 9a97d94ffa add jj-starship and fix zellij lockout 2026-02-28 09:49:11 -05:00
Noah Masur 84bffd13e8 remove deprecated brew line 2026-02-26 09:46:25 -05:00
Noah Masur 774b323837 add pre-commit to work packages 2026-02-24 14:43:39 -05:00
Noah Masur 2f2d2c0145 add zellij keybinds for nested zellij 2026-02-24 14:17:51 -05:00
github-actions[bot]andgithub-actions[bot] 6b17248804 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/6c5a56295d2a24e43bcd8af838def1b9a95746b2' (2026-02-12)
  → 'github:lnl7/nix-darwin/6a7fdcd5839ec8b135821179eea3b58092171bcf' (2026-02-19)
• Updated input 'disko':
    'github:nix-community/disko/71a3fc97d80881e91710fe721f1158d3b96ae14d' (2026-01-27)
  → 'github:nix-community/disko/4707eec8d1d2db5182ea06ed48c820a86a42dc13' (2026-02-19)
• Updated input 'home-manager':
    'github:nix-community/home-manager/05e6dc0f6ed936f918cb6f0f21f1dad1e4c53150' (2026-02-14)
  → 'github:nix-community/home-manager/436b27742c996b75e2baf8e835e3b3eae0c9fbd4' (2026-02-21)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/ec7c70d12ce2fc37cb92aff673dcdca89d187bae' (2026-02-11)
  → 'github:nixos/nixpkgs/0182a361324364ae3f436a63005877674cf45efb' (2026-02-17)
• Updated input 'nur':
    'github:nix-community/nur/40fb292376611e388cb14329c96853966f57763a' (2026-02-14)
  → 'github:nix-community/nur/1bedc7cb7cfbb0c29970ce26f61718c9b2dac4c3' (2026-02-21)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/d7a86c8a4df49002446737603a3e0d7ef91a9637' (2026-02-14)
  → 'github:oxalica/rust-overlay/85078369717bdbe1f266c9eaad5e66956fb6feea' (2026-02-21)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d' (2026-02-09)
  → 'github:nix-community/NixOS-WSL/379d20c55f552e91fb9f3f0382e4a97d3f452943' (2026-02-20)
2026-02-21 04:56:29 +00:00
Noah Masur a7dacb7edf murmur (mumble server) and non-caddy acme client 2026-02-14 20:11:52 +00:00
github-actions[bot]andgithub-actions[bot] dfd3b955c0 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/0d7874ef7e3ba02d58bebb871e6e29da36fa1b37' (2026-02-04)
  → 'github:lnl7/nix-darwin/6c5a56295d2a24e43bcd8af838def1b9a95746b2' (2026-02-12)
• Updated input 'home-manager':
    'github:nix-community/home-manager/471e6a065f9efed51488d7c51a9abbd387df91b8' (2026-02-05)
  → 'github:nix-community/home-manager/05e6dc0f6ed936f918cb6f0f21f1dad1e4c53150' (2026-02-14)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/00c21e4c93d963c50d4c0c89bfa84ed6e0694df2' (2026-02-04)
  → 'github:nixos/nixpkgs/ec7c70d12ce2fc37cb92aff673dcdca89d187bae' (2026-02-11)
• Updated input 'nur':
    'github:nix-community/nur/227b931ac44365853d7a0026360878cb990b426e' (2026-02-07)
  → 'github:nix-community/nur/40fb292376611e388cb14329c96853966f57763a' (2026-02-14)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/9922ff9f99a6436756cbe6f5d11f9c3630e58cf0' (2026-02-07)
  → 'github:oxalica/rust-overlay/d7a86c8a4df49002446737603a3e0d7ef91a9637' (2026-02-14)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/38a5250e57f583662eac3b944830e4b9e169e965' (2026-01-24)
  → 'github:nix-community/NixOS-WSL/5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d' (2026-02-09)
2026-02-14 05:01:07 +00:00
Noah Masur fd7ddf71f3 update to fix builds on macos 2026-02-10 17:20:00 -05:00
github-actions[bot]andgithub-actions[bot] bba66e3e6a flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/0fc4e7ac670a0ed874abacf73c4b072a6a58064b' (2026-01-18)
  → 'github:lnl7/nix-darwin/0d7874ef7e3ba02d58bebb871e6e29da36fa1b37' (2026-02-04)
• Updated input 'home-manager':
    'github:nix-community/home-manager/475921375def3eb930e1f8883f619ff8609accb6' (2026-01-30)
  → 'github:nix-community/home-manager/471e6a065f9efed51488d7c51a9abbd387df91b8' (2026-02-05)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/bfc1b8a4574108ceef22f02bafcf6611380c100d' (2026-01-26)
  → 'github:nixos/nixpkgs/00c21e4c93d963c50d4c0c89bfa84ed6e0694df2' (2026-02-04)
• Updated input 'nur':
    'github:nix-community/nur/2db81de33100ef4d86ebc80dc4bc30df1fe97c5d' (2026-01-31)
  → 'github:nix-community/nur/227b931ac44365853d7a0026360878cb990b426e' (2026-02-07)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/a1d32c90c8a4ea43e9586b7e5894c179d5747425' (2026-01-31)
  → 'github:oxalica/rust-overlay/9922ff9f99a6436756cbe6f5d11f9c3630e58cf0' (2026-02-07)
2026-02-07 04:56:30 +00:00
Noah Masur be6d6b0d35 fix add-on manifest 2026-01-31 11:53:43 -05:00
Noah Masur 0239a9925c try to prevent unnecessary firefox rebuidl 2026-01-31 11:53:43 -05:00
Noah Masur 49e35403b6 adjust daily summary to use browser extension for history 2026-01-31 11:53:43 -05:00
Noah Masur 430b522c61 enable daily browser summary on darwin 2026-01-31 11:53:43 -05:00
Noah Masur a64488093c fix current build on darwin 2026-01-31 11:53:43 -05:00
Noah Masur 54d2376437 add alabaster theme to helix 2026-01-31 11:53:43 -05:00
Noah Masur cd0a5d5de0 fix vertical pane navigation in zellij 2026-01-31 11:53:30 -05:00
github-actions[bot]andgithub-actions[bot] 10eecfa136 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/00395d188e3594a1507f214a2f15d4ce5c07cb28' (2026-01-20)
  → 'github:nix-community/disko/71a3fc97d80881e91710fe721f1158d3b96ae14d' (2026-01-27)
• Updated input 'home-manager':
    'github:nix-community/home-manager/082a4cd87c6089d1d9c58ebe52655f9e07245fcb' (2026-01-23)
  → 'github:nix-community/home-manager/475921375def3eb930e1f8883f619ff8609accb6' (2026-01-30)
• Updated input 'nixos-generators':
    'github:nix-community/nixos-generators/032a1878682fafe829edfcf5fdfad635a2efe748' (2025-11-27)
  → 'github:nix-community/nixos-generators/8946737ff703382fda7623b9fab071d037e897d5' (2026-01-30)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/88d3861acdd3d2f0e361767018218e51810df8a1' (2026-01-21)
  → 'github:nixos/nixpkgs/bfc1b8a4574108ceef22f02bafcf6611380c100d' (2026-01-26)
• Updated input 'nur':
    'github:nix-community/nur/4d20ca56620171b095fc4b51d55b155395c86506' (2026-01-24)
  → 'github:nix-community/nur/2db81de33100ef4d86ebc80dc4bc30df1fe97c5d' (2026-01-31)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/22da29e7f3d8cff75009cbbcf992c7cb66920cfd' (2026-01-24)
  → 'github:oxalica/rust-overlay/a1d32c90c8a4ea43e9586b7e5894c179d5747425' (2026-01-31)
2026-01-31 04:53:01 +00:00
Noah Masur b5b3f6cb6a fix: n8n can't write to disk 2026-01-25 15:00:01 +00:00
Noah Masur 810c92a7b8 update restic path for actual and fix build 2026-01-24 20:25:03 +00:00
github-actions[bot]andgithub-actions[bot] fcb28c8151 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/9f48ffaca1f44b3e590976b4da8666a9e86e6eb1' (2026-01-06)
  → 'github:lnl7/nix-darwin/0fc4e7ac670a0ed874abacf73c4b072a6a58064b' (2026-01-18)
• Updated input 'disko':
    'github:nix-community/disko/916506443ecd0d0b4a0f4cf9d40a3c22ce39b378' (2025-12-19)
  → 'github:nix-community/disko/00395d188e3594a1507f214a2f15d4ce5c07cb28' (2026-01-20)
• Updated input 'home-manager':
    'github:nix-community/home-manager/d0aefc169fa9a0bd2b1239aeb98899c77d6da5b2' (2026-01-10)
  → 'github:nix-community/home-manager/082a4cd87c6089d1d9c58ebe52655f9e07245fcb' (2026-01-23)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/3497aa5c9457a9d88d71fa93a4a8368816fbeeba' (2026-01-08)
  → 'github:nixos/nixpkgs/88d3861acdd3d2f0e361767018218e51810df8a1' (2026-01-21)
• Updated input 'nur':
    'github:nix-community/nur/a4f7c05a5f80044f9dcf3dfeb55a16b5a2713caf' (2026-01-10)
  → 'github:nix-community/nur/4d20ca56620171b095fc4b51d55b155395c86506' (2026-01-24)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/312b4371e72f644ffcff25b23615195e3b390643' (2026-01-10)
  → 'github:oxalica/rust-overlay/22da29e7f3d8cff75009cbbcf992c7cb66920cfd' (2026-01-24)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/be4af8042e7a61fa12fda58fe9a3b3babdefe17b' (2025-12-15)
  → 'github:nix-community/NixOS-WSL/38a5250e57f583662eac3b944830e4b9e169e965' (2026-01-24)
• Updated input 'wsl/flake-compat':
    'github:edolstra/flake-compat/65f23138d8d09a92e30f1e5c87611b23ef451bf3' (2025-12-07)
  → 'github:edolstra/flake-compat/5edf11c44bc78a0d334f6334cdaf7d60d732daab' (2025-12-29)
2026-01-24 04:16:03 +00:00
Noah Masur e2a2d3de14 fix: playground vim plugin is archived 2026-01-17 10:40:01 -05:00
Noah Masur adbc2bd261 enable thunderbird for tasks, calendar, and email gui 2026-01-11 19:45:39 -06:00
Noah Masur 117fd8a06e replace nixfmt-rfc-style with equivalent nixfmt 2026-01-11 16:38:47 -05:00
Noah Masur d9fbdf7bfe Update flake, fix userControlled attribute
Also add nix-inspect
2026-01-10 14:21:43 -05:00
github-actions[bot]andgithub-actions[bot] 2d13780d2e flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/5fb45ece6129bd7ad8f7310df0ae9c00bae7c562' (2025-12-18)
  → 'github:lnl7/nix-darwin/c31afa6e76da9bbc7c9295e39c7de9fca1071ea1' (2025-12-29)
• Updated input 'home-manager':
    'github:nix-community/home-manager/bb35f07cc95a73aacbaf1f7f46bb8a3f40f265b5' (2025-12-19)
  → 'github:nix-community/home-manager/2f06b726061b7e1aa69f718e943da9ffcecd6397' (2026-01-02)
• Updated input 'mac-app-util':
    'github:hraban/mac-app-util/8414fa1e2cb775b17793104a9095aabeeada63ef' (2025-08-24)
  → 'github:hraban/mac-app-util/4747968574ea58512c5385466400b2364c85d2d0' (2025-12-27)
• Updated input 'mac-app-util/cl-nix-lite':
    'github:hraban/cl-nix-lite/31cfe6275c341eb3120a99f4b1c8516c49a29d87' (2024-10-06)
  → 'github:hraban/cl-nix-lite/038e341cede255a83a8f04af114dc95717461d32' (2025-12-27)
• Added input 'mac-app-util/cl-nix-lite/flake-parts':
    'github:hercules-ci/flake-parts/a34fae9c08a15ad73f295041fec82323541400a9' (2025-12-15)
• Added input 'mac-app-util/cl-nix-lite/flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/2075416fcb47225d9b68ac469a5c4801a9c4dd85' (2025-12-14)
• Added input 'mac-app-util/cl-nix-lite/nixpkgs':
    'github:nixos/nixpkgs/f560ccec6b1116b22e6ed15f4c510997d99d5852' (2025-12-26)
• Added input 'mac-app-util/cl-nix-lite/systems':
    'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09)
• Added input 'mac-app-util/cl-nix-lite/treefmt-nix':
    'github:numtide/treefmt-nix/42d96e75aa56a3f70cab7e7dc4a32868db28e8fd' (2025-12-17)
• Added input 'mac-app-util/cl-nix-lite/treefmt-nix/nixpkgs':
    'github:nixos/nixpkgs/d5faa84122bc0a1fd5d378492efce4e289f8eac1' (2025-10-23)
• Updated input 'mac-app-util/treefmt-nix':
    'github:numtide/treefmt-nix/74e1a52d5bd9430312f8d1b8b0354c92c17453e5' (2025-08-23)
  → 'github:numtide/treefmt-nix/42d96e75aa56a3f70cab7e7dc4a32868db28e8fd' (2025-12-17)
• Updated input 'mac-app-util/treefmt-nix/nixpkgs':
    'github:nixos/nixpkgs/cab778239e705082fe97bb4990e0d24c50924c04' (2025-08-04)
  → 'github:nixos/nixpkgs/d5faa84122bc0a1fd5d378492efce4e289f8eac1' (2025-10-23)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/c6245e83d836d0433170a16eb185cefe0572f8b8' (2025-12-18)
  → 'github:nixos/nixpkgs/cad22e7d996aea55ecab064e84834289143e44a0' (2025-12-30)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/2b0d2b456e4e8452cf1c16d00118d145f31160f9' (2025-12-17)
  → 'github:nixos/nixpkgs/40ee5e1944bebdd128f9fbada44faefddfde29bd' (2025-12-29)
• Updated input 'nur':
    'github:nix-community/nur/e036ffaac9c2869ab23d4fb1c0d9da50fe2f852a' (2025-12-20)
  → 'github:nix-community/nur/846861904f43cd2bb04314f664514c87e26c512b' (2026-01-03)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/66bb33fdfb50b1ee724381c3f5d6012dac6c89b3' (2025-12-20)
  → 'github:oxalica/rust-overlay/294198315a13d6d130565ad08e97685df7b0d458' (2026-01-03)
2026-01-03 04:12:23 +00:00
Noah Masur 53a712a217 update caddy hash 2026-01-01 18:16:43 +00:00
Noah Masur 31d34c6540 fixes to get nix flake check working with new updates 2025-12-30 16:33:23 -05:00
Noah Masur a978e67346 comment out spctl allow apps from anywhere
doesn't work when using nh because it requires a UI escalation when
run via indirectly
2025-12-26 10:31:31 -07:00
Noah Masur a6915a6d2d try to fix nix-darwin breaking starship prompt on rebuild 2025-12-26 10:31:12 -07:00
Noah Masur 44c4034236 more fixes on warning for renamed system 2025-12-26 10:29:18 -07:00
Noah Masur a99c14a8c2 use stable zed-editor to stop uncached builds 2025-12-26 10:28:31 -07:00
Noah Masur f1c8e26044 comment out 1password extension while it doesn't work in firefox 2025-12-26 10:27:55 -07:00
Noah Masur 29cd253d9c awscli2 overlay no longer required 2025-12-20 07:54:17 -07:00
Noah Masur 603b9a2eff fix terraform lsp in helix 2025-12-20 07:54:11 -07:00
github-actions[bot]andgithub-actions[bot] 9c35744ab9 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/7e22bf538aa3e0937effcb1cee73d5f1bcc26f79' (2025-12-06)
  → 'github:lnl7/nix-darwin/5fb45ece6129bd7ad8f7310df0ae9c00bae7c562' (2025-12-18)
• Updated input 'disko':
    'github:nix-community/disko/d64e5cdca35b5fad7c504f615357a7afe6d9c49e' (2025-12-10)
  → 'github:nix-community/disko/916506443ecd0d0b4a0f4cf9d40a3c22ce39b378' (2025-12-19)
• Updated input 'home-manager':
    'github:nix-community/home-manager/39cb677ed9e908e90478aa9fe5f3383dfc1a63f3' (2025-12-11)
  → 'github:nix-community/home-manager/bb35f07cc95a73aacbaf1f7f46bb8a3f40f265b5' (2025-12-19)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/addf7cf5f383a3101ecfba091b98d0a1263dc9b8' (2025-12-08)
  → 'github:nixos/nixpkgs/c6245e83d836d0433170a16eb185cefe0572f8b8' (2025-12-18)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/d2b1213bf5ec5e62d96b003ab4b5cbc42abfc0d0' (2025-12-10)
  → 'github:nixos/nixpkgs/2b0d2b456e4e8452cf1c16d00118d145f31160f9' (2025-12-17)
• Updated input 'nur':
    'github:nix-community/nur/da24c00523a3125a97b24783e2b59b5b98ac5da7' (2025-12-13)
  → 'github:nix-community/nur/e036ffaac9c2869ab23d4fb1c0d9da50fe2f852a' (2025-12-20)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/348b94ed9ddffccdf1a65582a2dcff0a4a3eeeb4' (2025-12-13)
  → 'github:oxalica/rust-overlay/66bb33fdfb50b1ee724381c3f5d6012dac6c89b3' (2025-12-20)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/0c040f28b44b18e0d4240e027096078e34dbb029' (2025-12-11)
  → 'github:nix-community/NixOS-WSL/be4af8042e7a61fa12fda58fe9a3b3babdefe17b' (2025-12-15)
2025-12-20 04:04:34 +00:00
github-actions[bot]andgithub-actions[bot] 7d6b29c30b flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/e95de00a471d07435e0527ff4db092c84998698e' (2025-11-26)
  → 'github:lnl7/nix-darwin/7e22bf538aa3e0937effcb1cee73d5f1bcc26f79' (2025-12-06)
• Updated input 'disko':
    'github:nix-community/disko/5a88a6eceb8fd732b983e72b732f6f4b8269bef3' (2025-12-01)
  → 'github:nix-community/disko/d64e5cdca35b5fad7c504f615357a7afe6d9c49e' (2025-12-10)
• Updated input 'home-manager':
    'github:nix-community/home-manager/ccd22c13b2200263fb59342a34bf7119a31aa363' (2025-12-06)
  → 'github:nix-community/home-manager/39cb677ed9e908e90478aa9fe5f3383dfc1a63f3' (2025-12-11)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/418468ac9527e799809c900eda37cbff999199b6' (2025-12-02)
  → 'github:nixos/nixpkgs/addf7cf5f383a3101ecfba091b98d0a1263dc9b8' (2025-12-08)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/ff06bd3398fb1bea6c937039ece7e7c8aa396ebf' (2025-12-04)
  → 'github:nixos/nixpkgs/d2b1213bf5ec5e62d96b003ab4b5cbc42abfc0d0' (2025-12-10)
• Updated input 'nur':
    'github:nix-community/nur/cfab17b2d4bf4e9fa3aa48d6b9cb36c749e096e9' (2025-12-06)
  → 'github:nix-community/nur/da24c00523a3125a97b24783e2b59b5b98ac5da7' (2025-12-13)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/086fd19a68e80fcc8a298e9df4674982e4c498a6' (2025-12-06)
  → 'github:oxalica/rust-overlay/348b94ed9ddffccdf1a65582a2dcff0a4a3eeeb4' (2025-12-13)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/10124c58674360765adcb38c9a8b081fb72904e4' (2025-12-03)
  → 'github:nix-community/NixOS-WSL/0c040f28b44b18e0d4240e027096078e34dbb029' (2025-12-11)
• Updated input 'wsl/flake-compat':
    'github:edolstra/flake-compat/f387cd2afec9419c8ee37694406ca490c3f34ee5' (2025-10-27)
  → 'github:edolstra/flake-compat/65f23138d8d09a92e30f1e5c87611b23ef451bf3' (2025-12-07)
• Updated input 'zenyd-mpv-scripts':
    'github:zenyd/mpv-scripts/d20a64a008fc6fb03f026c379313111291bdd49f' (2025-12-02)
  → 'github:zenyd/mpv-scripts/62f4bb313c6cb6366672e78dea940e9da8fec84a' (2025-12-06)
2025-12-13 04:04:17 +00:00
github-actions[bot]andgithub-actions[bot] fd589b66ef flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/2055a08fd0e2fd41318279a5355eb8a161accf26' (2025-11-28)
  → 'github:nix-community/disko/5a88a6eceb8fd732b983e72b732f6f4b8269bef3' (2025-12-01)
• Updated input 'home-manager':
    'github:nix-community/home-manager/780be8ef503a28939cf9dc7996b48ffb1a3e04c6' (2025-11-28)
  → 'github:nix-community/home-manager/ccd22c13b2200263fb59342a34bf7119a31aa363' (2025-12-06)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/2fad6eac6077f03fe109c4d4eb171cf96791faa4' (2025-11-27)
  → 'github:nixos/nixpkgs/418468ac9527e799809c900eda37cbff999199b6' (2025-12-02)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/9a7b80b6f82a71ea04270d7ba11b48855681c4b0' (2025-11-28)
  → 'github:nixos/nixpkgs/ff06bd3398fb1bea6c937039ece7e7c8aa396ebf' (2025-12-04)
• Updated input 'nur':
    'github:nix-community/nur/c23e05e2d8e852c9c128b624cfc19ea8674ad793' (2025-11-29)
  → 'github:nix-community/nur/cfab17b2d4bf4e9fa3aa48d6b9cb36c749e096e9' (2025-12-06)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/4f5a90bf043a57add9b3288bbd25ed534bfaffb5' (2025-11-29)
  → 'github:oxalica/rust-overlay/086fd19a68e80fcc8a298e9df4674982e4c498a6' (2025-12-06)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/c7832dd786175e20f2697179e0e03efadffe4201' (2025-11-25)
  → 'github:nix-community/NixOS-WSL/10124c58674360765adcb38c9a8b081fb72904e4' (2025-12-03)
• Updated input 'zenyd-mpv-scripts':
    'github:zenyd/mpv-scripts/8309b669f060f95fbb2abf9e6882c3ae4ec1ff2d' (2025-11-27)
  → 'github:zenyd/mpv-scripts/d20a64a008fc6fb03f026c379313111291bdd49f' (2025-12-02)
2025-12-06 03:58:44 +00:00
github-actions[bot]andgithub-actions[bot] 853aa644fa flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/3bda9f6b14161becbd07b3c56411f1670e19b9b5' (2025-11-18)
  → 'github:lnl7/nix-darwin/e95de00a471d07435e0527ff4db092c84998698e' (2025-11-26)
• Updated input 'disko':
    'github:nix-community/disko/e86a89079587497174ccab6d0d142a65811a4fd9' (2025-11-20)
  → 'github:nix-community/disko/2055a08fd0e2fd41318279a5355eb8a161accf26' (2025-11-28)
• Updated input 'home-manager':
    'github:nix-community/home-manager/d10a9b16b2a3ee28433f3d1c603f4e9f1fecb8e1' (2025-11-21)
  → 'github:nix-community/home-manager/780be8ef503a28939cf9dc7996b48ffb1a3e04c6' (2025-11-28)
• Updated input 'nixos-generators':
    'github:nix-community/nixos-generators/032decf9db65efed428afd2fa39d80f7089085eb' (2025-07-07)
  → 'github:nix-community/nixos-generators/032a1878682fafe829edfcf5fdfad635a2efe748' (2025-11-27)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/89c2b2330e733d6cdb5eae7b899326930c2c0648' (2025-11-17)
  → 'github:nixos/nixpkgs/2fad6eac6077f03fe109c4d4eb171cf96791faa4' (2025-11-27)
• Updated input 'nixpkgs-stable':
    'github:nixos/nixpkgs/c58bc7f5459328e4afac201c5c4feb7c818d604b' (2025-11-20)
  → 'github:nixos/nixpkgs/9a7b80b6f82a71ea04270d7ba11b48855681c4b0' (2025-11-28)
• Updated input 'nur':
    'github:nix-community/nur/77b49ed77583b3e3fee9c8962bcd7c7992ab7e72' (2025-11-22)
  → 'github:nix-community/nur/c23e05e2d8e852c9c128b624cfc19ea8674ad793' (2025-11-29)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/7f3aa46dfa230ec2a4ca9281186a24771650ccd1' (2025-11-22)
  → 'github:oxalica/rust-overlay/4f5a90bf043a57add9b3288bbd25ed534bfaffb5' (2025-11-29)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/3bcc267c4e0efa023b98b9c5cfbe11b88ec2dc8f' (2025-11-21)
  → 'github:nix-community/NixOS-WSL/c7832dd786175e20f2697179e0e03efadffe4201' (2025-11-25)
• Updated input 'zenyd-mpv-scripts':
    'github:zenyd/mpv-scripts/8bc3d8fd7660aaf08737eca4fb65f7193507b661' (2025-11-21)
  → 'github:zenyd/mpv-scripts/8309b669f060f95fbb2abf9e6882c3ae4ec1ff2d' (2025-11-27)
2025-11-29 03:59:46 +00:00
Noah Masur b6e7221cc6 fix: zellij switch command on darwin 2025-11-26 13:20:22 -07:00
Noah Masur 235901b3b0 fix jjui on darwin 2025-11-26 09:00:19 -07:00
github-actions[bot]andgithub-actions[bot] 7cd74986df flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/ea164b7c9ccdc2321379c2ff78fd4317b4c41312' (2025-11-17)
  → 'github:nix-community/home-manager/d10a9b16b2a3ee28433f3d1c603f4e9f1fecb8e1' (2025-11-21)
• Updated input 'nur':
    'github:nix-community/nur/9cfdb9c199ebf780c36a9998d27547563c7b2aaf' (2025-11-21)
  → 'github:nix-community/nur/77b49ed77583b3e3fee9c8962bcd7c7992ab7e72' (2025-11-22)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/6fbf5d328dce1828d887b8ee7d44a785196a34e7' (2025-11-21)
  → 'github:oxalica/rust-overlay/7f3aa46dfa230ec2a4ca9281186a24771650ccd1' (2025-11-22)
• Updated input 'zenyd-mpv-scripts':
    'github:zenyd/mpv-scripts/a1470f01cae24f06365fbe05e5295d906d7438fe' (2025-11-21)
  → 'github:zenyd/mpv-scripts/8bc3d8fd7660aaf08737eca4fb65f7193507b661' (2025-11-21)
2025-11-22 03:55:41 +00:00
Noah Masur a6e15b71cd update packages and fix helix language 2025-11-21 10:32:55 -07:00
Noah Masur 2e4467b6ea try to make builds work 2025-11-21 10:32:55 -07:00
Noah Masur 431ebd732c use alacritty for i3 terminal on macos 2025-11-21 10:32:55 -07:00
Noah Masur 2d576bd25d improve helix language server selection 2025-11-21 10:32:55 -07:00
Noah Masur a1615eda67 try improvements to helix git blame and bring yazi to zellij 2025-11-21 10:32:55 -07:00
Noah Masur 444582a5a5 try adding jiratui to homebrew 2025-11-21 10:32:55 -07:00
Noah Masur fbabdadb32 add bash to aws-ec2 launch script 2025-11-21 10:32:55 -07:00
Noah Masur f8dfa2a817 enable jujutsu as non-experimental 2025-11-17 02:48:06 +00:00
Noah Masur e4a8ef15ce fix rebuilds and broken packages after update 2025-11-15 13:10:48 -06:00
github-actions[bot]andgithub-actions[bot] 5c922310f5 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/e2b82ebd0f990a5d1b68fcc761b3d6383c86ccfd' (2025-11-07)
  → 'github:lnl7/nix-darwin/973db96394513fd90270ea5a1211a82a4a0ba47f' (2025-11-14)
• Updated input 'helix':
    'github:helix-editor/helix/65ea351cc30b23d40e9a5784a4be99768536b7f5' (2025-11-08)
  → 'github:helix-editor/helix/948ac05aa0db64e0e5d00710db36eb244076e988' (2025-11-12)
• Updated input 'home-manager':
    'github:nix-community/home-manager/0562fef070a1027325dd4ea10813d64d2c967b39' (2025-11-06)
  → 'github:nix-community/home-manager/827f2a23373a774a8805f84ca5344654c31f354b' (2025-11-12)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/ae814fd3904b621d8ab97418f1d0f2eb0d3716f4' (2025-11-05)
  → 'github:nixos/nixpkgs/c5ae371f1a6a7fd27823bc500d9390b38c05fa55' (2025-11-12)
• Updated input 'nur':
    'github:nix-community/nur/e7b4921cad8b7492ab9c441bda269be625bd2acc' (2025-11-08)
  → 'github:nix-community/nur/cb44dde82a279a626f8b3283fdcf52849d3ab3d4' (2025-11-15)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/a35a6144b976f70827c2fe2f5c89d16d8f9179d8' (2025-11-08)
  → 'github:oxalica/rust-overlay/89af6762b01409edbb595888a69311e8e5954110' (2025-11-15)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/e001844d4553aef268f97b32d3a825b6370eed91' (2025-11-04)
  → 'github:nix-community/NixOS-WSL/debc562c48c445f9f08778ecb9fc6b35197623ad' (2025-11-12)
2025-11-15 03:59:13 +00:00
Noah Masur 2f274cd652 chawan as manpager and fixes to rebuild shortcuts 2025-11-14 19:31:42 -05:00
Noah Masur 407e9c3af8 enable mealie for recipes 2025-11-11 04:00:51 +00:00
Noah Masur c13e029805 update zellij for launching and quitting automatically 2025-11-10 21:17:13 -06:00
github-actions[bot]andgithub-actions[bot] c56bc30200 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/7cd9aac79ee2924a85c211d21fafd394b06a38de' (2025-10-24)
  → 'github:lnl7/nix-darwin/e2b82ebd0f990a5d1b68fcc761b3d6383c86ccfd' (2025-11-07)
• Updated input 'disko':
    'github:nix-community/disko/6f4cf5abbe318e4cd1e879506f6eeafd83f7b998' (2025-10-31)
  → 'github:nix-community/disko/af087d076d3860760b3323f6b583f4d828c1ac17' (2025-11-04)
• Updated input 'helix':
    'github:helix-editor/helix/5a92474bf0453715e3139eccaaccf3264bfb2001' (2025-10-31)
  → 'github:helix-editor/helix/65ea351cc30b23d40e9a5784a4be99768536b7f5' (2025-11-08)
• Updated input 'home-manager':
    'github:nix-community/home-manager/4ac96eb21c101a3e5b77ba105febc5641a8959aa' (2025-10-31)
  → 'github:nix-community/home-manager/0562fef070a1027325dd4ea10813d64d2c967b39' (2025-11-06)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/08dacfca559e1d7da38f3cf05f1f45ee9bfd213c' (2025-10-28)
  → 'github:nixos/nixpkgs/ae814fd3904b621d8ab97418f1d0f2eb0d3716f4' (2025-11-05)
• Updated input 'nur':
    'github:nix-community/nur/f20762096406e710b930858237046c139f03a061' (2025-11-01)
  → 'github:nix-community/nur/e7b4921cad8b7492ab9c441bda269be625bd2acc' (2025-11-08)
• Updated input 'rust-overlay':
    'github:oxalica/rust-overlay/08c33e87c4829bbdd42b5af247cf7a19e126369f' (2025-11-02)
  → 'github:oxalica/rust-overlay/a35a6144b976f70827c2fe2f5c89d16d8f9179d8' (2025-11-08)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/761582d6ab431549fe1396d2cd681e3fe9376020' (2025-11-01)
  → 'github:nix-community/NixOS-WSL/e001844d4553aef268f97b32d3a825b6370eed91' (2025-11-04)
• Updated input 'wsl/flake-compat':
    'github:edolstra/flake-compat/9100a0f413b0c601e0533d1d94ffd501ce2e7885' (2025-05-12)
  → 'github:edolstra/flake-compat/f387cd2afec9419c8ee37694406ca490c3f34ee5' (2025-10-27)
2025-11-08 03:57:53 +00:00
Noah Masur 6064fdb0e0 add csvlens for viewing csvs alongside visidata 2025-11-06 20:38:45 -05:00
Noah Masur 5cf27d6d66 adjust chawan manpager to mancha 2025-11-06 20:38:23 -05:00
Noah Masur ceca1ffd5a get services to build properly again on flame 2025-11-07 00:26:00 +00:00
Noah Masur ebbc9c5a5d use yazi outside of helix and chawan as manpager 2025-11-02 18:26:40 -05:00
Noah Masur aea3e95ef5 fix build with rust-overlay 2025-11-02 18:22:56 -05:00
github-actions[bot]andgithub-actions[bot] d79c1ba7df flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5' (2025-10-17)
  → 'github:nix-community/disko/6f4cf5abbe318e4cd1e879506f6eeafd83f7b998' (2025-10-31)
• Updated input 'helix':
    'github:helix-editor/helix/d79cce4e4bfc24dd204f1b294c899ed73f7e9453' (2025-10-22)
  → 'github:helix-editor/helix/5a92474bf0453715e3139eccaaccf3264bfb2001' (2025-10-31)
• Updated input 'home-manager':
    'github:nix-community/home-manager/c644cb018f9fdec55f5ac2afb4713a8c7beb757c' (2025-10-24)
  → 'github:nix-community/home-manager/4ac96eb21c101a3e5b77ba105febc5641a8959aa' (2025-10-31)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/01f116e4df6a15f4ccdffb1bcd41096869fb385c' (2025-10-22)
  → 'github:nixos/nixpkgs/08dacfca559e1d7da38f3cf05f1f45ee9bfd213c' (2025-10-28)
• Updated input 'nur':
    'github:nix-community/nur/cbe64052fb6a79ffaeba7d0b022d38d846e86334' (2025-10-25)
  → 'github:nix-community/nur/f20762096406e710b930858237046c139f03a061' (2025-11-01)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/f98ee1de1fa36eca63c67b600f5d617e184e82ea' (2025-10-15)
  → 'github:nix-community/NixOS-WSL/761582d6ab431549fe1396d2cd681e3fe9376020' (2025-11-01)
2025-11-01 04:00:32 +00:00
Noah Masur 422131134a lower latency time on esc ctrl in kanata 2025-10-26 21:56:08 -04:00
Noah Masur 5d8e10b814 add crush coding agent to experimental 2025-10-26 21:55:24 -04:00
Noah Masur fdd5eb6418 add chawan for html in aerc 2025-10-26 21:55:14 -04:00
Noah Masur 72c548e707 update git settings renamed options 2025-10-26 12:06:48 -04:00
github-actions[bot]andgithub-actions[bot] a57207dd5d flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/c3211fcd0c56c11ff110d346d4487b18f7365168' (2025-10-17)
  → 'github:lnl7/nix-darwin/7cd9aac79ee2924a85c211d21fafd394b06a38de' (2025-10-24)
• Updated input 'helix':
    'github:helix-editor/helix/f6f8634eb07f35f02bd2881666925a90513f6f3b' (2025-10-15)
  → 'github:helix-editor/helix/d79cce4e4bfc24dd204f1b294c899ed73f7e9453' (2025-10-22)
• Updated input 'home-manager':
    'github:nix-community/home-manager/722792af097dff5790f1a66d271a47759f477755' (2025-10-17)
  → 'github:nix-community/home-manager/c644cb018f9fdec55f5ac2afb4713a8c7beb757c' (2025-10-24)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/544961dfcce86422ba200ed9a0b00dd4b1486ec5' (2025-10-15)
  → 'github:nixos/nixpkgs/01f116e4df6a15f4ccdffb1bcd41096869fb385c' (2025-10-22)
• Updated input 'nur':
    'github:nix-community/nur/01a0d3a236b249cad7f054551671d5e77d218c40' (2025-10-18)
  → 'github:nix-community/nur/cbe64052fb6a79ffaeba7d0b022d38d846e86334' (2025-10-25)
2025-10-25 03:55:46 +00:00
github-actions[bot]andgithub-actions[bot] 94b4217be3 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/c48e963a5558eb1c3827d59d21c5193622a1477c' (2025-09-25)
  → 'github:lnl7/nix-darwin/c3211fcd0c56c11ff110d346d4487b18f7365168' (2025-10-17)
• Updated input 'disko':
    'github:nix-community/disko/67ff9807dd148e704baadbd4fd783b54282ca627' (2025-09-19)
  → 'github:nix-community/disko/3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5' (2025-10-17)
• Updated input 'helix':
    'github:helix-editor/helix/5b0563419eeeaf0595c848865c46be4abad246a7' (2025-10-07)
  → 'github:helix-editor/helix/f6f8634eb07f35f02bd2881666925a90513f6f3b' (2025-10-15)
• Updated input 'home-manager':
    'github:nix-community/home-manager/c4aaddeaecc09554c92518fd904e3e84b497ed09' (2025-10-12)
  → 'github:nix-community/home-manager/722792af097dff5790f1a66d271a47759f477755' (2025-10-17)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/0b4defa2584313f3b781240b29d61f6f9f7e0df3' (2025-10-09)
  → 'github:nixos/nixpkgs/544961dfcce86422ba200ed9a0b00dd4b1486ec5' (2025-10-15)
• Updated input 'nur':
    'github:nix-community/nur/a82226091501c0ee01e7fb55b8f357afe0faa392' (2025-10-12)
  → 'github:nix-community/nur/01a0d3a236b249cad7f054551671d5e77d218c40' (2025-10-18)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/7c0c0f4c3a51761434f18209fa9499b8579ff730' (2025-10-07)
  → 'github:nix-community/NixOS-WSL/f98ee1de1fa36eca63c67b600f5d617e184e82ea' (2025-10-15)
2025-10-18 03:52:46 +00:00
Noah Masur 7619ac6ea2 enable cargo for work and home 2025-10-13 13:39:48 -04:00
Noah Masur 7543721020 launch helix for editing desktop text files 2025-10-13 13:06:42 -04:00
Noah Masur bf52069886 temp override to build awscli2 2025-10-12 18:57:40 +00:00
Noah Masur 839ca079c2 Merge branch 'caddy-cloudflare-pkg' 2025-10-12 17:26:05 +00:00
github-actions[bot]andgithub-actions[bot] 85f09b1126 flake.lock: Update
Flake lock file updates:

• Updated input 'helix':
    'github:helix-editor/helix/bfcbef10c513108c7b43317569416c2eefc4ed44' (2025-09-30)
  → 'github:helix-editor/helix/5b0563419eeeaf0595c848865c46be4abad246a7' (2025-10-07)
• Updated input 'helix/rust-overlay':
    'github:oxalica/rust-overlay/d342e8b5fd88421ff982f383c853f0fc78a847ab' (2025-02-27)
  → 'github:oxalica/rust-overlay/1d7cbdaad90f8a5255a89a6eddd8af24dc89cafe' (2025-10-05)
• Updated input 'home-manager':
    'github:nix-community/home-manager/edafd6da1936426708f1be0b1a4288007f16639a' (2025-10-04)
  → 'github:nix-community/home-manager/d305eece827a3fe317a2d70138f53feccaf890a1' (2025-10-10)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee' (2025-10-02)
  → 'github:nixos/nixpkgs/0b4defa2584313f3b781240b29d61f6f9f7e0df3' (2025-10-09)
• Updated input 'nur':
    'github:nix-community/nur/d127643d50ec16f47ca67c9695b0200ea8b7cfd1' (2025-10-04)
  → 'github:nix-community/nur/886a5646695563cbae3c1e10369c6070c7645e73' (2025-10-11)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/d96dda76c1f1827634ddf28d386feabd2d135d21' (2025-10-01)
  → 'github:nix-community/NixOS-WSL/7c0c0f4c3a51761434f18209fa9499b8579ff730' (2025-10-07)
2025-10-11 03:51:41 +00:00
github-actions[bot]andgithub-actions[bot] 29c7a27135 flake.lock: Update
Flake lock file updates:

• Updated input 'helix':
    'github:helix-editor/helix/109c812233e442addccf1739dec4406248bd3244' (2025-09-25)
  → 'github:helix-editor/helix/bfcbef10c513108c7b43317569416c2eefc4ed44' (2025-09-30)
• Updated input 'home-manager':
    'github:nix-community/home-manager/bc2afee55bc5d3b825287829d6592b9cc1405aad' (2025-09-26)
  → 'github:nix-community/home-manager/edafd6da1936426708f1be0b1a4288007f16639a' (2025-10-04)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/e643668fd71b949c53f8626614b21ff71a07379d' (2025-09-24)
  → 'github:nixos/nixpkgs/7df7ff7d8e00218376575f0acdcc5d66741351ee' (2025-10-02)
• Updated input 'nur':
    'github:nix-community/nur/c898a1ed2da0164bc6f395f44aad52edb84c84d4' (2025-09-27)
  → 'github:nix-community/nur/d127643d50ec16f47ca67c9695b0200ea8b7cfd1' (2025-10-04)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/1bfb978f2f6261b6086e04af17f9418e1fe36d70' (2025-09-25)
  → 'github:nix-community/NixOS-WSL/d96dda76c1f1827634ddf28d386feabd2d135d21' (2025-10-01)
2025-10-04 03:49:26 +00:00
github-actions[bot]andgithub-actions[bot] 3523f20665 flake.lock: Update
Flake lock file updates:

• Updated input 'darwin':
    'github:lnl7/nix-darwin/8df64f819698c1fee0c2969696f54a843b2231e8' (2025-08-22)
  → 'github:lnl7/nix-darwin/c48e963a5558eb1c3827d59d21c5193622a1477c' (2025-09-25)
• Updated input 'disko':
    'github:nix-community/disko/bafad29f89e83b2d861b493aa23034ea16595560' (2025-08-25)
  → 'github:nix-community/disko/67ff9807dd148e704baadbd4fd783b54282ca627' (2025-09-19)
• Updated input 'helix':
    'github:helix-editor/helix/77ff51caa440b1066e0a1920007ab5e148dd4856' (2025-08-29)
  → 'github:helix-editor/helix/109c812233e442addccf1739dec4406248bd3244' (2025-09-25)
• Updated input 'home-manager':
    'github:nix-community/home-manager/77a71380c38fb2a440b4b5881bbc839f6230e1cb' (2025-08-29)
  → 'github:nix-community/home-manager/bc2afee55bc5d3b825287829d6592b9cc1405aad' (2025-09-26)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/dfb2f12e899db4876308eba6d93455ab7da304cd' (2025-08-28)
  → 'github:nixos/nixpkgs/e643668fd71b949c53f8626614b21ff71a07379d' (2025-09-24)
• Updated input 'nur':
    'github:nix-community/nur/e82a8b0095f54edb6bbbb1d862f3da502dca1396' (2025-08-30)
  → 'github:nix-community/nur/c898a1ed2da0164bc6f395f44aad52edb84c84d4' (2025-09-27)
• Updated input 'wsl':
    'github:nix-community/NixOS-WSL/203a7b463f307c60026136dd1191d9001c43457f' (2025-08-15)
  → 'github:nix-community/NixOS-WSL/1bfb978f2f6261b6086e04af17f9418e1fe36d70' (2025-09-25)
2025-09-27 03:51:21 +00:00
104 changed files with 2358 additions and 696 deletions
+13
View File
@@ -0,0 +1,13 @@
{
"permissions": {
"allow": [
"WebFetch(domain:github.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(gh run *)",
"Bash(jj status *)",
"Bash(jj new *)",
"Bash(jj describe *)",
"Bash(nix flake *)"
]
}
}
+10
View File
@@ -0,0 +1,10 @@
# Changelog
## 2026-07-20
- Added `overlays/paho-mqtt.nix` to disable paho-mqtt's flaky, socket-based
test suite. Its `checkPhase` hangs in the Nix sandbox and times out with a
`KeyboardInterrupt` after ~150s, which was breaking the `flame` rebuild
(paho-mqtt is pulled in transitively, e.g. via mealie). The override is
applied through `pythonPackagesExtensions` so it covers every Python
package set.
Generated
+211 -133
View File
@@ -1,12 +1,18 @@
{
"nodes": {
"cl-nix-lite": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs",
"systems": "systems",
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1728174978,
"narHash": "sha256-Grqqg+xuicANB85j0gNEXxi9SBKY7bzGeTuyi95eGcY=",
"lastModified": 1782994178,
"narHash": "sha256-VGc3/2fe6hnOmNSLlOygEAbeS69v7A7rjKDKRzAgE2Q=",
"owner": "hraban",
"repo": "cl-nix-lite",
"rev": "31cfe6275c341eb3120a99f4b1c8516c49a29d87",
"rev": "eb584721e5e799bafe0c6210a8a1a398f90e8ac0",
"type": "github"
},
"original": {
@@ -22,11 +28,11 @@
]
},
"locked": {
"lastModified": 1755825449,
"narHash": "sha256-XkiN4NM9Xdy59h69Pc+Vg4PxkSm9EWl6u7k6D5FZ5cM=",
"lastModified": 1784123936,
"narHash": "sha256-IOWwQMJhUxcojm0MRvuKs1fKLH727u4+hHeEOPhdUyA=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "8df64f819698c1fee0c2969696f54a843b2231e8",
"rev": "a4cf1d10853b0d2be19b9eca35d749e201d70b55",
"type": "github"
},
"original": {
@@ -43,11 +49,11 @@
]
},
"locked": {
"lastModified": 1756115622,
"narHash": "sha256-iv8xVtmLMNLWFcDM/HcAPLRGONyTRpzL9NS09RnryRM=",
"lastModified": 1781152676,
"narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=",
"owner": "nix-community",
"repo": "disko",
"rev": "bafad29f89e83b2d861b493aa23034ea16595560",
"rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1",
"type": "github"
},
"original": {
@@ -59,11 +65,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1730663653,
"narHash": "sha256-kFCUWettiFHDIqxCWWQ9qY8pVh+Lj+XL0Giyy/kdomg=",
"lastModified": 1766808011,
"narHash": "sha256-s83BS0abtIj7vzUf8JE0209KphfHA6qRw/92D9k/F+0=",
"owner": "hraban",
"repo": "flake-compat",
"rev": "e5b16676185cb7548581c852f51ce7f3a49bba5e",
"rev": "6e0aafdc4c4c2043c66f756d5045374b42184fc5",
"type": "github"
},
"original": {
@@ -76,11 +82,11 @@
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
@@ -90,6 +96,24 @@
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1765835352,
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "a34fae9c08a15ad73f295041fec82323541400a9",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nur",
@@ -132,7 +156,7 @@
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
"systems": "systems_3"
},
"locked": {
"lastModified": 1731533236,
@@ -148,27 +172,6 @@
"type": "github"
}
},
"helix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1756477005,
"narHash": "sha256-e/FNNIT/LPuoruzRQZf5z5L5GApq1G2y2PShy+Lakhs=",
"owner": "helix-editor",
"repo": "helix",
"rev": "77ff51caa440b1066e0a1920007ab5e148dd4856",
"type": "github"
},
"original": {
"owner": "helix-editor",
"repo": "helix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@@ -176,11 +179,11 @@
]
},
"locked": {
"lastModified": 1756496801,
"narHash": "sha256-IYIsnPy+cJxe8RbDHBrCtfJY0ry2bG2H7WvMcewiGS8=",
"lastModified": 1784351324,
"narHash": "sha256-By+kuRJZRqs2TuXgtR8vJ8cTKWXw33YG/Yollu5cO1U=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "77a71380c38fb2a440b4b5881bbc839f6230e1cb",
"rev": "460108009ca1ff69ca2ff19079ca2c838d6e3080",
"type": "github"
},
"original": {
@@ -195,18 +198,16 @@
"cl-nix-lite": "cl-nix-lite",
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems",
"treefmt-nix": "treefmt-nix"
"nixpkgs": "nixpkgs_3",
"systems": "systems_2",
"treefmt-nix": "treefmt-nix_2"
},
"locked": {
"lastModified": 1756057867,
"narHash": "sha256-ziR5eQGqRWhW8tf8r0TIplaqNt+HXu1G1X41LUr4IYo=",
"lastModified": 1783182903,
"narHash": "sha256-7IteXipJZfFepi5zakxe0jQ5i3vRBQguk0+Gtte1Fu4=",
"owner": "hraban",
"repo": "mac-app-util",
"rev": "8414fa1e2cb775b17793104a9095aabeeada63ef",
"rev": "039f33deef21782d4db97087f426504951239887",
"type": "github"
},
"original": {
@@ -223,11 +224,11 @@
]
},
"locked": {
"lastModified": 1755344765,
"narHash": "sha256-k/Cvh/mzb5lSvilKdgwNBCyAyYmD8YPr1nc0sTSgwxI=",
"lastModified": 1779563638,
"narHash": "sha256-9CQKxDKDqVYdDhJW+A955AZwpwZjKUgvu0LbfsL6uyI=",
"owner": "gytis-ivaskevicius",
"repo": "nix2vim",
"rev": "78467c8de07719f92397179844bf75cdf2e58b83",
"rev": "6927414f0de10a18fb6bc9977717088777d50d0d",
"type": "github"
},
"original": {
@@ -259,11 +260,11 @@
]
},
"locked": {
"lastModified": 1751903740,
"narHash": "sha256-PeSkNMvkpEvts+9DjFiop1iT2JuBpyknmBUs0Un0a4I=",
"lastModified": 1769813415,
"narHash": "sha256-nnVmNNKBi1YiBNPhKclNYDORoHkuKipoz7EtVnXO50A=",
"owner": "nix-community",
"repo": "nixos-generators",
"rev": "032decf9db65efed428afd2fa39d80f7089085eb",
"rev": "8946737ff703382fda7623b9fab071d037e897d5",
"type": "github"
},
"original": {
@@ -274,11 +275,58 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1754340878,
"narHash": "sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU=",
"lastModified": 1779796641,
"narHash": "sha256-ZsIrKmhp4vbBXoXXmR/tBXA/UCsAQiJL9vsgZEduhVY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "cab778239e705082fe97bb4990e0d24c50924c04",
"rev": "25f538306313eae3927264466c70d7001dcea1df",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1765674936,
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1784280462,
"narHash": "sha256-DtoqIqM7VkR6NxAkcLpMwmi02USwWb3JdmNGLyhthc0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "293d6abedf0478e681a4dfcfcb35b30fc796a32f",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1761236834,
"narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
"type": "github"
},
"original": {
@@ -288,29 +336,45 @@
"type": "github"
}
},
"nixpkgs-stable": {
"nixpkgs_3": {
"locked": {
"lastModified": 1735563628,
"narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=",
"owner": "nixos",
"lastModified": 1782999065,
"narHash": "sha256-5Dgj5+pIQYZKrXUGaLCk7CKfN3MmpwIhO94++WVxvng=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798",
"rev": "80d591ed473cfc46329932c2aadac9b435342c7c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.05",
"owner": "NixOS",
"ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"nixpkgs_4": {
"locked": {
"lastModified": 1756386758,
"narHash": "sha256-1wxxznpW2CKvI9VdniaUnTT2Os6rdRJcRUf65ZK9OtE=",
"lastModified": 1770107345,
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "dfb2f12e899db4876308eba6d93455ab7da304cd",
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1784120854,
"narHash": "sha256-KesHgItiZPgGX740axSiQLcIQ8D24MDqNpkKYWIek8k=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "753cc8a3a87467296ddd1fa93f0cc3e81120ee46",
"type": "github"
},
"original": {
@@ -320,13 +384,13 @@
"type": "github"
}
},
"nixpkgs_3": {
"nixpkgs_6": {
"locked": {
"lastModified": 1728538411,
"narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=",
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
@@ -338,17 +402,17 @@
},
"nur": {
"inputs": {
"flake-parts": "flake-parts",
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1756524478,
"narHash": "sha256-2oSBlcYCgwrVxUZwM8MV6hBFsfsWFbeN5ErQiCA+38s=",
"lastModified": 1784353280,
"narHash": "sha256-MV8bFWGuoJCELexhGWWhv0GiWnDY9hpgGXgxB81mr9g=",
"owner": "nix-community",
"repo": "nur",
"rev": "e82a8b0095f54edb6bbbb1d862f3da502dca1396",
"rev": "697f13fd230047493989b03576419792273c3a9e",
"type": "github"
},
"original": {
@@ -361,14 +425,14 @@
"inputs": {
"darwin": "darwin",
"disko": "disko",
"helix": "helix",
"home-manager": "home-manager",
"mac-app-util": "mac-app-util",
"nix2vim": "nix2vim",
"nixos-generators": "nixos-generators",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs_5",
"nixpkgs-stable": "nixpkgs-stable",
"nur": "nur",
"rust-overlay": "rust-overlay",
"wsl": "wsl",
"zellij-switch": "zellij-switch",
"zenyd-mpv-scripts": "zenyd-mpv-scripts"
@@ -376,35 +440,14 @@
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"helix",
"nixpkgs"
]
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1740623427,
"narHash": "sha256-3SdPQrZoa4odlScFDUHd4CUPQ/R1gtH4Mq9u8CBiK8M=",
"lastModified": 1784350408,
"narHash": "sha256-OstzLWL5t7Xe14xEC6GIMJCp0PrYNTSA0El7GG2av88=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "d342e8b5fd88421ff982f383c853f0fc78a847ab",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1736476219,
"narHash": "sha256-+qyv3QqdZCdZ3cSO/cbpEY6tntyYjfe1bB12mdpNFaY=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "de30cc5963da22e9742bbbbb9a3344570ed237b9",
"rev": "3c38e1e1ba9c8d7030f7b5a801398ea7d8a6fdc0",
"type": "github"
},
"original": {
@@ -414,21 +457,6 @@
}
},
"systems": {
"locked": {
"lastModified": 1689347925,
"narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=",
"owner": "nix-systems",
"repo": "default-darwin",
"rev": "2235d7e6cc29ae99878133c95e9fe5e157661ffb",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-darwin",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
@@ -443,6 +471,21 @@
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1689347925,
"narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=",
"owner": "nix-systems",
"repo": "default-darwin",
"rev": "2235d7e6cc29ae99878133c95e9fe5e157661ffb",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-darwin",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
@@ -458,16 +501,49 @@
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": "nixpkgs"
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1755934250,
"narHash": "sha256-CsDojnMgYsfshQw3t4zjRUkmMmUdZGthl16bXVWgRYU=",
"lastModified": 1766000401,
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "74e1a52d5bd9430312f8d1b8b0354c92c17453e5",
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"treefmt-nix_2": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1780220602,
"narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "db947814a175b7ca6ded66e21383d938df01c227",
"type": "github"
},
"original": {
@@ -484,11 +560,11 @@
]
},
"locked": {
"lastModified": 1755261305,
"narHash": "sha256-EOqCupB5X5WoGVHVcfOZcqy0SbKWNuY3kq+lj1wHdu8=",
"lastModified": 1784058842,
"narHash": "sha256-3u3tvbCIAid3Mv7RrJx13jusIEQC/HeKYhO/SUSxR3A=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "203a7b463f307c60026136dd1191d9001c43457f",
"rev": "24c8dc8e0f2170e1a377be24dfadc7d9d21dc1ad",
"type": "github"
},
"original": {
@@ -502,15 +578,17 @@
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay_2",
"systems": "systems_3"
"rust-overlay": [
"rust-overlay"
],
"systems": "systems_4"
},
"locked": {
"lastModified": 1742588229,
"narHash": "sha256-IPg0pBw0ciF+xl6viq3nK+dvZoDZrfBDui7dkPLz258=",
"lastModified": 1781873766,
"narHash": "sha256-V8baEgRBa2SqtCLbQ4EaphIMKsnAogY2oMdttWYhkEs=",
"owner": "mostafaqanbaryan",
"repo": "zellij-switch",
"rev": "0e3c303c19890ccb03589230ac5a7c4307e573e4",
"rev": "ced3c681afe40785b2853e3a976908466786ee79",
"type": "github"
},
"original": {
@@ -522,11 +600,11 @@
"zenyd-mpv-scripts": {
"flake": false,
"locked": {
"lastModified": 1707704915,
"narHash": "sha256-9P/8q/OZXfaJMS08acQP4h3/zUA5mKRQee0JmkXcz1w=",
"lastModified": 1765050776,
"narHash": "sha256-9gO+GkNoGsxAbMRrBWu0FfXEQtyTmHivlaxlYLpV2YM=",
"owner": "zenyd",
"repo": "mpv-scripts",
"rev": "9bdce0050144cb24f92475f7bdd77180e0e4c26b",
"rev": "62f4bb313c6cb6366672e78dea940e9da8fec84a",
"type": "github"
},
"original": {
+16 -8
View File
@@ -8,7 +8,7 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# Used for specific stable packages
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-26.05";
# Used for MacOS system config
darwin = {
@@ -37,7 +37,7 @@
# Better App install management in macOS
mac-app-util = {
url = "github:hraban/mac-app-util";
inputs.nixpkgs.follows = "nixpkgs"; # Use system packages list for their inputs
# inputs.nixpkgs.follows = "nixpkgs"; # Use system packages list for their inputs
};
# Manage disk format and partitioning
@@ -64,17 +64,23 @@
flake = false;
};
rust-overlay = {
url = "github:oxalica/rust-overlay";
};
# Zellij Switcher
zellij-switch = {
url = "github:mostafaqanbaryan/zellij-switch";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
};
# Text editor
helix = {
url = "github:helix-editor/helix";
inputs.nixpkgs.follows = "nixpkgs";
};
# # Text editor
# helix = {
# url = "github:helix-editor/helix";
# inputs.nixpkgs.follows = "nixpkgs";
# inputs.rust-overlay.follows = "rust-overlay";
# };
# # Nextcloud Apps
# nextcloud-news = {
@@ -126,6 +132,7 @@
mathesar = "mathesar.${baseName}";
metrics = "metrics.${baseName}";
minecraft = "minecraft.${baseName}";
mumble = "mumble.${baseName}";
n8n = "n8n.${baseName}";
navidrome = "music.${baseName}";
notifications = "ntfy.${baseName}";
@@ -133,6 +140,7 @@
photos = "photos.${baseName}";
postgresql = "pg.${baseName}";
prometheus = "prom.${baseName}";
recipes = "cooking.${baseName}";
secrets = "vault.${baseName}";
smtp = "smtp.purelymail.com";
status = "status.${baseName}";
@@ -280,7 +288,7 @@
inherit (lib) overlays;
};
in
pkgs.nixfmt-rfc-style
pkgs.nixfmt
);
# Templates for starting other projects quickly
@@ -12,9 +12,9 @@ rec {
nmasur.profiles = {
base.enable = true;
work.enable = true;
extra.enable = true;
gaming.enable = true;
# work.enable = true;
# extra.enable = true;
# gaming.enable = true;
};
home-manager.users."Noah.Masur" = {
@@ -26,10 +26,13 @@ rec {
nmasur.profiles = {
common.enable = true;
darwin-base.enable = true;
darwin-gaming.enable = true;
llm-development.enable = true;
power-user.enable = true;
work.enable = true;
experimental.enable = true;
};
nmasur.presets.services.mbsync.user = "noah";
nmasur.presets.programs.git-work.work = {
name = "Noah-Masur_1701";
email = "${nmasur.settings.username}@take2games.com";
+1
View File
@@ -28,6 +28,7 @@ rec {
nmasur.profiles = {
common.enable = true;
linux-base.enable = true;
llm-development.enable = true;
power-user.enable = true;
};
nmasur.presets.programs.helix.enable = true;
+4
View File
@@ -26,6 +26,7 @@ rec {
nmasur.profiles = {
common.enable = true;
linux-base.enable = true;
llm-development.enable = true;
power-user.enable = true;
};
home.stateVersion = "23.05";
@@ -33,6 +34,9 @@ rec {
system.stateVersion = "23.05";
# Temp: disable while this isn't working
services.automatic-timezoned.enable = false;
# Not sure what's necessary but too afraid to remove anything
boot.initrd.availableKernelModules = [
"xhci_pci"
+1
View File
@@ -30,6 +30,7 @@ rec {
linux-base.enable = true;
linux-gui.enable = true;
linux-gaming.enable = true;
llm-development.enable = true;
power-user.enable = true;
developer.enable = true;
experimental.enable = true;
+34 -19
View File
@@ -66,9 +66,12 @@ lib
overlays = [
inputs.nur.overlays.default
inputs.nix2vim.overlay
inputs.zellij-switch.overlays.default
inputs.helix.overlays.default
] ++ (importOverlays ../overlays);
(final: prev: {
zellij-switch = inputs.zellij-switch.packages.${prev.stdenv.hostPlatform.system}.default;
})
# inputs.helix.overlays.default
]
++ (importOverlays ../overlays);
# System types to support.
supportedSystems = [
@@ -97,7 +100,13 @@ lib
system:
import inputs.nixpkgs {
inherit system overlays;
config.permittedInsecurePackages = [ "litestream-0.3.13" ];
config.permittedInsecurePackages = [
"litestream-0.3.13"
"electron-36.9.5"
# Build-time-only dep of karakeep's frontend; CVEs don't reach
# the runtime closure. Remove once nixpkgs bumps it.
"pnpm-9.15.9"
];
config.allowUnfree = true;
}
);
@@ -130,7 +139,8 @@ lib
];
extraSpecialArgs = {
inherit colorscheme;
} // specialArgs;
}
// specialArgs;
};
buildNixos =
@@ -152,8 +162,10 @@ lib
home-manager = {
extraSpecialArgs = {
inherit colorscheme;
} // specialArgs;
} // homeModule.home-manager;
}
// specialArgs;
}
// homeModule.home-manager;
}
];
};
@@ -167,20 +179,20 @@ lib
inputs.darwin.lib.darwinSystem {
inherit system specialArgs;
modules = [
inputs.home-manager.darwinModules.home-manager
inputs.mac-app-util.darwinModules.default
{
imports = (nixFiles ../platforms/nix-darwin);
nixpkgs.pkgs = pkgsBySystem.${system};
}
module
{
home-manager = {
extraSpecialArgs = {
inherit colorscheme;
} // specialArgs;
} // homeModule.home-manager;
}
# Home Manager is intentionally NOT activated here. It is managed
# standalone via `nh home switch` (see homeConfigurations, extracted
# from the host module's `home-manager.users`). Strip that attr so
# darwin-rebuild doesn't also activate a second, divergent HM
# generation with different store paths (useUserPackages puts packages
# in /etc/profiles/per-user vs. ~/.nix-profile standalone) -- that
# mismatch broke the prompt after every darwin-rebuild until the next
# `nh home switch`.
(builtins.removeAttrs module [ "home-manager" ])
];
};
@@ -222,12 +234,15 @@ lib
home-manager = {
extraSpecialArgs = {
inherit colorscheme;
} // specialArgs;
} // homeModule.home-manager;
}
// specialArgs;
}
// homeModule.home-manager;
}
];
specialArgs = {
} // specialArgs;
}
// specialArgs;
};
}
-67
View File
@@ -1,67 +0,0 @@
{
config,
pkgs,
lib,
...
}:
{
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
home.packages =
let
ldap_scheme = "ldaps";
magic_prefix = "take";
ldap_port = 3269;
jq_parse = pkgs.writeShellScriptBin "ljq" ''
jq --slurp \
--raw-input 'split("\n\n")|map(split("\n")|map(select(.[0:1]!="#" and length>0)) |select(length > 0)|map(capture("^(?<key>[^:]*:?): *(?<value>.*)") |if .key[-1:.key|length] == ":" then .key=.key[0:-1]|.value=(.value|@base64d) else . end)| group_by(.key) | map({key:.[0].key,value:(if .|length > 1 then [.[].value] else .[].value end)}) | from_entries)' | jq -r 'del(.[].thumbnailPhoto)'
'';
ldap_script = pkgs.writeShellScriptBin "ldap" ''
if ! [ "$LDAP_HOST" ]; then
echo "No LDAP_HOST specified!"
exit 1
fi
SEARCH_FILTER="$@"
ldapsearch -LLL \
-B -o ldif-wrap=no \
-E pr=5000/prompt \
-H "${ldap_scheme}://''${LDAP_HOST}:${builtins.toString ldap_port}" \
-D "${pkgs.lib.toUpper magic_prefix}2\\${pkgs.lib.toLower config.user}" \
-w "$(${pkgs._1password-cli}/bin/op item get T2 --fields label=password --reveal)" \
-b "dc=''${LDAP_HOST//./,dc=}" \
-s "sub" -x "(cn=''${SEARCH_FILTER})" \
| ${jq_parse}/bin/ljq
'';
ldapm_script = pkgs.writeShellScriptBin "ldapm" ''
if ! [ "$LDAP_HOST" ]; then
echo "No LDAP_HOST specified!"
exit 1
fi
${ldap_script}/bin/ldap "$@" | jq '[ .[].memberOf] | add'
'';
ldapg_script = pkgs.writeShellScriptBin "ldapg" ''
if ! [ "$LDAP_HOST" ]; then
echo "No LDAP_HOST specified!"
exit 1
fi
${ldap_script}/bin/ldap "$@" | jq '[ .[].member] | add'
'';
ldapl_script = pkgs.writeShellScriptBin "ldapl" ''
if ! [ "$LDAP_HOST" ]; then
echo "No LDAP_HOST specified!"
exit 1
fi
${ldap_script}/bin/ldap "*$@*" | jq -r '.[].name'
'';
in
[
ldap_script
ldapm_script
ldapg_script
ldapl_script
jq_parse
];
};
}
-56
View File
@@ -1,56 +0,0 @@
{
config,
pkgs,
lib,
...
}:
{
# Homebrew - Mac-specific packages that aren't in Nix
config = lib.mkIf pkgs.stdenv.isDarwin {
# # Requires Homebrew to be installed
system.activationScripts.preActivation.text = ''
if ! xcode-select --version 2>/dev/null; then
$DRY_RUN_CMD xcode-select --install
fi
if ! /opt/homebrew/bin/brew --version 2>/dev/null; then
$DRY_RUN_CMD /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
'';
# Add homebrew paths to CLI path
home-manager.users.${config.user}.home.sessionPath = [
"/opt/homebrew/bin/"
"/opt/homebrew/opt/trash/bin/"
];
homebrew = {
enable = true;
onActivation = {
autoUpdate = false; # Don't update during rebuild
cleanup = "zap"; # Uninstall all programs not declared
upgrade = true;
};
global = {
brewfile = true; # Run brew bundle from anywhere
lockfiles = false; # Don't save lockfile (since running from anywhere)
};
brews = [
"trash" # Delete files and folders to trash instead of rm
];
casks = [
"1password" # 1Password will not launch from Nix on macOS
# "gitify" # Git notifications in menu bar (downgrade manually from 4.6.1)
"keybase" # GUI on Nix not available for macOS
# "logitech-g-hub" # Mouse and keyboard management
"logitune" # Logitech webcam firmware
"meetingbar" # Show meetings in menu bar
"scroll-reverser" # Different scroll style for mouse vs. trackpad
"notunes" # Don't launch Apple Music with the play button
"steam" # Not packaged for Nixon macOS
"epic-games" # Not packaged for Nix
];
};
};
}
+5
View File
@@ -0,0 +1,5 @@
inputs: final: prev: {
firefox-unwrapped = final.stable.firefox-unwrapped;
}
+7
View File
@@ -0,0 +1,7 @@
_inputs: _final: prev: {
kubernetes-helm = prev.kubernetes-helm.overrideAttrs (_old: {
doCheck = false;
});
}
+20
View File
@@ -0,0 +1,20 @@
# Disable paho-mqtt's flaky test suite.
#
# paho-mqtt's checkPhase runs socket-based integration tests that hang in
# the Nix sandbox (they eventually time out with a KeyboardInterrupt after
# ~150s, reporting errors and failing the build). This breaks the flame
# rebuild, where paho-mqtt is pulled in transitively (e.g. via mealie).
#
# Applied through pythonPackagesExtensions so it covers every Python
# package set (python3Packages, python314Packages, ...).
_inputs: _final: prev: {
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
(_pyfinal: pyprev: {
paho-mqtt = pyprev.paho-mqtt.overridePythonAttrs (_old: {
doCheck = false;
doInstallCheck = false;
});
})
];
}
+3
View File
@@ -21,6 +21,9 @@ let
# [ package1.drv package2.drv ]
(builtins.map (name: prev.callPackage name { }))
# Filter out packages that return null (e.g. platform-specific packages)
(builtins.filter (v: v != null))
# Convert the list to an attrset
# { package1 = package1.drv, package2 = package2.drv }
listToAttrsByPnameOrName
+2 -1
View File
@@ -4,7 +4,8 @@
inputs: _final: prev: {
# Provides `pkgs.stable`.
stable = import inputs.nixpkgs-stable {
inherit (prev) system config;
system = prev.stdenv.hostPlatform.system;
config = { };
overlays = [
# inputs.self.overlays.vim-plugins
];
+2 -1
View File
@@ -4,7 +4,8 @@
inputs: _final: prev: {
# Provides `pkgs.unstable`.
unstable = import inputs.nixpkgs {
inherit (prev) system config;
system = prev.stdenv.hostPlatform.system;
inherit (prev) config;
overlays = [
# inputs.self.overlays.vim-plugins
];
@@ -100,7 +100,7 @@
lua.command = "${pkgs.stylua}/bin/stylua";
black.command = "${pkgs.black}/bin/black";
fish_indent.command = "${pkgs.fish}/bin/fish_indent";
nixfmt.command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
nixfmt.command = "${pkgs.nixfmt}/bin/nixfmt";
rustfmt.command = "${pkgs.rustfmt}/bin/rustfmt";
shfmt = {
command = "${pkgs.shfmt}/bin/shfmt";
@@ -3,10 +3,10 @@
plugins = [
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins: [
pkgs.nmasur.ini-grammar
pkgs.nmasur.puppet-grammar
pkgs.nmasur.rasi-grammar
pkgs.nmasur.vimdoc-grammar
pkgs.nmasur.tree-sitter-ini
pkgs.nmasur.tree-sitter-puppet
pkgs.nmasur.tree-sitter-rasi
pkgs.nmasur.tree-sitter-vimdoc
pkgs.tree-sitter-grammars.tree-sitter-bash
pkgs.tree-sitter-grammars.tree-sitter-c
pkgs.tree-sitter-grammars.tree-sitter-fish
@@ -21,7 +21,6 @@
pkgs.tree-sitter-grammars.tree-sitter-yaml
]))
pkgs.vimPlugins.vim-matchup # Better % jumping in languages
pkgs.vimPlugins.playground # Tree-sitter experimenting
pkgs.vimPlugins.nginx-vim
pkgs.vimPlugins.vim-helm
# pkgs.vimPlugins.hmts-nvim # Tree-sitter injections for home-manager
@@ -1,6 +1,9 @@
# Fix: Volnoti error: 'volnoti' has been removed due to lack of maintenance upstream.
{ pkgs, lib, ... }:
if !pkgs.stdenv.isLinux then
null
else
pkgs.stdenv.mkDerivation {
pname = "volnoti";
version = "2013-09-23";
+1 -1
View File
@@ -18,5 +18,5 @@
}).withPlugins
{
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
hash = "sha256-AcWko5513hO8I0lvbCLqVbM1eWegAhoM0J0qXoWL/vI=";
hash = "sha256-xz43pXTsnYmXZDAAUT+vTapoq3O/8br7igGwqZbjFdk=";
}
@@ -0,0 +1,41 @@
function exportHistory() {
const now = new Date();
const startTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0); // Beginning of today
browser.history.search({
text: '',
startTime: startTime,
endTime: now,
maxResults: 10000
}).then(historyItems => {
const historyData = JSON.stringify(historyItems, null, 2);
const blob = new Blob([historyData], {type: 'application/json'});
const url = URL.createObjectURL(blob);
const date = now.toISOString().slice(0, 10); // YYYY-MM-DD
const filename = `firefox-history/history-${date}.json`;
browser.downloads.download({
url: url,
filename: filename,
conflictAction: 'overwrite',
saveAs: false
});
});
}
browser.alarms.create('daily-export', {
periodInMinutes: 60 // every 1 hour
});
browser.alarms.onAlarm.addListener(alarm => {
if (alarm.name === 'daily-export') {
exportHistory();
}
});
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.command === "exportHistory") {
exportHistory();
}
});
@@ -0,0 +1,25 @@
{
"manifest_version": 3,
"name": "History Exporter",
"version": "1.1",
"description": "Automatically exports today's browsing history.",
"permissions": [
"history",
"downloads",
"alarms"
],
"background": {
"scripts": ["background.js"]
},
"action": {
"default_popup": "popup.html"
},
"browser_specific_settings": {
"gecko": {
"id": "[email protected]",
"data_collection_permissions": {
"required": ["none"]
}
}
}
}
+26
View File
@@ -0,0 +1,26 @@
{ pkgs, ... }:
pkgs.stdenv.mkDerivation rec {
pname = "firefox-history-exporter";
version = "1.1";
src = ./.;
nativeBuildInputs = [ pkgs.zip ];
dontUnpack = true;
installPhase = ''
dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
mkdir -p "$dst"
zip -j "$dst/firefox-history-exporter@nmasur.com.xpi" \
"${src}/manifest.json" \
"${src}/background.js" \
"${src}/popup.html" \
"${src}/popup.js"
'';
meta = with pkgs.lib; {
description = "Automatically exports today's browsing history.";
license = licenses.mit;
};
}
+25
View File
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<title>History Exporter</title>
<style>
body {
width: 200px;
text-align: center;
font-family: sans-serif;
}
button {
margin-top: 10px;
padding: 10px;
font-size: 16px;
cursor: pointer;
}
</style>
</head>
<body>
<h1>History Exporter</h1>
<button id="export-button">Export Now</button>
<p id="status"></p>
<script src="popup.js"></script>
</body>
</html>
+9
View File
@@ -0,0 +1,9 @@
document.getElementById('export-button').addEventListener('click', () => {
browser.runtime.sendMessage({command: "exportHistory"});
const statusElement = document.getElementById('status');
statusElement.textContent = 'Exporting...';
setTimeout(() => {
statusElement.textContent = 'Export complete!';
}, 2000);
});
+7
View File
@@ -89,6 +89,13 @@ let
drf-access-policy
# psycopg-binary
;
# clevercsv's test_encoding_chardet is nondeterministic (chardet
# returns None instead of ISO-8859-1/KOI8-R on some platforms),
# breaking the build. Skip its test suite.
clevercsv = pyprev.clevercsv.overridePythonAttrs (_old: {
doCheck = false;
doInstallCheck = false;
});
};
};
+11 -10
View File
@@ -1,9 +1,10 @@
{
lib,
fetchFromGitHub,
nodejs_20,
nodejs_22,
buildNpmPackage,
nodePackages,
typescript,
node-gyp,
python3,
gcc,
gnumake,
@@ -29,10 +30,10 @@ buildNpmPackage (finalAttrs: rec {
npmDepsHash = "sha256-N8xqRYFelolNGTEhG22M7KJ7B5U/uW7o+/XfLF8rHMg=";
nativeBuildInputs = [
nodejs_20
nodePackages.typescript
nodejs_22
typescript
python3
nodePackages.node-gyp
node-gyp
gcc
gnumake
];
@@ -53,8 +54,8 @@ buildNpmPackage (finalAttrs: rec {
# export npm_config_build_from_source=true
# export npm_config_unsafe_perm=true
# export BINARY_SITE=none
# export PATH=${nodePackages.node-gyp}/bin:$PATH
# export npm_config_node_gyp=${nodePackages.node-gyp}/bin/node-gyp
# export PATH=${node-gyp}/bin:$PATH
# export npm_config_node_gyp=${node-gyp}/bin/node-gyp
# npm rebuild better-sqlite3 --build-from-source --verbose
@@ -64,7 +65,7 @@ buildNpmPackage (finalAttrs: rec {
installPhase = ''
mkdir -p $out/{bin,lib}
cp -r . $out/lib/prometheus-actual-exporter
makeWrapper ${lib.getExe nodejs_20} $out/bin/prometheus-actual-exporter \
makeWrapper ${lib.getExe nodejs_22} $out/bin/prometheus-actual-exporter \
--add-flags "$out/lib/prometheus-actual-exporter/dist/app.js"
'';
@@ -74,8 +75,8 @@ buildNpmPackage (finalAttrs: rec {
export npm_config_build_from_source=true
export npm_config_unsafe_perm=true
export BINARY_SITE=none
export PATH=${nodePackages.node-gyp}/bin:$PATH
export npm_config_node_gyp=${nodePackages.node-gyp}/bin/node-gyp
export PATH=${node-gyp}/bin:$PATH
export npm_config_node_gyp=${node-gyp}/bin/node-gyp
sed -i '/"install"/d' node_modules/better-sqlite3/package.json
rm -f node_modules/better-sqlite3/build/Release/better_sqlite3.node || true
+29 -26
View File
@@ -1,39 +1,42 @@
{
lib,
stdenv,
buildDotnetModule,
fetchFromGitHub,
dotnetCorePackages,
}:
buildDotnetModule rec {
pname = "slsk-batchdl";
version = "2.4.7";
if !stdenv.isLinux then
null
else
buildDotnetModule rec {
pname = "slsk-batchdl";
version = "2.4.7";
src = fetchFromGitHub {
owner = "fiso64";
repo = "slsk-batchdl";
rev = "v${version}";
sha256 = "sha256-P7V7YJUA1bkfp13Glb1Q+NJ7iTya/xgO1TM88z1Nddc=";
};
src = fetchFromGitHub {
owner = "fiso64";
repo = "slsk-batchdl";
rev = "v${version}";
sha256 = "sha256-P7V7YJUA1bkfp13Glb1Q+NJ7iTya/xgO1TM88z1Nddc=";
};
projectFile = "slsk-batchdl/slsk-batchdl.csproj";
nugetDeps = ./nuget-deps.nix;
projectFile = "slsk-batchdl/slsk-batchdl.csproj";
nugetDeps = ./nuget-deps.nix;
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
# Patch the project file to use .NET 8
postPatch = ''
substituteInPlace slsk-batchdl/slsk-batchdl.csproj \
--replace-fail "net6.0" "net8.0"
'';
postPatch = ''
substituteInPlace slsk-batchdl/slsk-batchdl.csproj \
--replace-fail "net6.0" "net8.0"
'';
doCheck = false;
doCheck = false;
meta = with lib; {
description = "A batch downloader for Soulseek";
homepage = "https://github.com/fiso64/slsk-batchdl";
platforms = platforms.linux;
mainProgram = "slsk-batchdl";
};
}
meta = with lib; {
description = "A batch downloader for Soulseek";
homepage = "https://github.com/fiso64/slsk-batchdl";
platforms = platforms.linux;
mainProgram = "slsk-batchdl";
};
}
+9 -9
View File
@@ -6,17 +6,17 @@
# Specify AWS_PROFILE and AWS_REGION before running this script
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" |
jq -r \
'.Reservations[]
--filters "Name=instance-state-name,Values=running" |
jq -r \
'.Reservations[]
| .Instances[]
| .InstanceId + " - " +
(.PrivateIpAddress // "n/a") + " - " +
(.PublicIpAddress // "n/a") + " - " +
(.Tags // [] | from_entries | .Name // "n/a")' |
fzf \
--height 100% \
--layout reverse \
--header $'Press Enter to start SSM session\nInstance ID - Private IP - Public IP - Name' \
--preview "aws ec2 describe-instances --instance-ids \"\$(echo {} | cut -d' ' -f1)\" | jq -r '.Reservations[].Instances[0]'" \
--bind "enter:become(aws ssm start-session --target \$(echo {} | cut -d' ' -f1))"
fzf \
--height 100% \
--layout reverse \
--header $'Press Enter to start SSM session\nInstance ID - Private IP - Public IP - Name' \
--preview "aws ec2 describe-instances --instance-ids \"\$(echo {} | cut -d' ' -f1)\" | jq -r '.Reservations[].Instances[0]'" \
--bind "enter:become(aws ssm start-session --document-name 'AWS-StartInteractiveCommand' --parameters '{\"command\": [\"bash\"]}' --target \$(echo {} | cut -d' ' -f1))"
@@ -5,7 +5,7 @@ pkgs.mkShell {
buildInputs = with pkgs; [
git
stylua
nixfmt-rfc-style
nixfmt
shfmt
shellcheck
];
+36 -33
View File
@@ -1,44 +1,47 @@
{ pkgs, ... }:
{ pkgs, lib, ... }:
# Inspired by https://github.com/cleverca22/nix-tests/blob/master/kexec/justdoit.nix
# This script will partition and format drives; use at your own risk!
pkgs.writeShellScriptBin "installer" ''
set -e
if !pkgs.stdenv.isLinux then
null
else
pkgs.writeShellScriptBin "installer" ''
set -e
DISK=$1
FLAKE=$2
PARTITION_PREFIX=""
DISK=$1
FLAKE=$2
PARTITION_PREFIX=""
if [ -z "$DISK" ] || [ -z "$FLAKE" ]; then
${pkgs.gum}/bin/gum style --width 50 --margin "1 2" --padding "2 4" \
--foreground "#fb4934" \
"Missing required parameter." \
"Usage: installer -- <disk> <host>" \
"Example: installer -- nvme0n1 tempest" \
"Flake example: nix run github:nmasur/dotfiles#installer -- nvme0n1 tempest"
echo "(exiting)"
exit 1
fi
if [ -z "$DISK" ] || [ -z "$FLAKE" ]; then
${pkgs.gum}/bin/gum style --width 50 --margin "1 2" --padding "2 4" \
--foreground "#fb4934" \
"Missing required parameter." \
"Usage: installer -- <disk> <host>" \
"Example: installer -- nvme0n1 tempest" \
"Flake example: nix run github:nmasur/dotfiles#installer -- nvme0n1 tempest"
echo "(exiting)"
exit 1
fi
case "$DISK" in nvme*)
PARTITION_PREFIX="p"
esac
case "$DISK" in nvme*)
PARTITION_PREFIX="p"
esac
${pkgs.gum}/bin/gum confirm \
"This will ERASE ALL DATA on the disk /dev/''${DISK}. Are you sure you want to continue?" \
--default=false
${pkgs.gum}/bin/gum confirm \
"This will ERASE ALL DATA on the disk /dev/''${DISK}. Are you sure you want to continue?" \
--default=false
${pkgs.parted}/bin/parted /dev/''${DISK} -- mklabel gpt
${pkgs.parted}/bin/parted /dev/''${DISK} -- mkpart primary 512MiB 100%
${pkgs.parted}/bin/parted /dev/''${DISK} -- mkpart ESP fat32 1MiB 512MiB
${pkgs.parted}/bin/parted /dev/''${DISK} -- set 3 esp on
mkfs.ext4 -L nixos /dev/''${DISK}''${PARTITION_PREFIX}1
mkfs.fat -F 32 -n boot /dev/''${DISK}''${PARTITION_PREFIX}2
${pkgs.parted}/bin/parted /dev/''${DISK} -- mklabel gpt
${pkgs.parted}/bin/parted /dev/''${DISK} -- mkpart primary 512MiB 100%
${pkgs.parted}/bin/parted /dev/''${DISK} -- mkpart ESP fat32 1MiB 512MiB
${pkgs.parted}/bin/parted /dev/''${DISK} -- set 3 esp on
mkfs.ext4 -L nixos /dev/''${DISK}''${PARTITION_PREFIX}1
mkfs.fat -F 32 -n boot /dev/''${DISK}''${PARTITION_PREFIX}2
mount /dev/disk/by-label/nixos /mnt
mkdir --parents /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
mount /dev/disk/by-label/nixos /mnt
mkdir --parents /mnt/boot
mount /dev/disk/by-label/boot /mnt/boot
${pkgs.nixos-install-tools}/bin/nixos-install --flake github:nmasur/dotfiles#''${FLAKE}
''
${pkgs.nixos-install-tools}/bin/nixos-install --flake github:nmasur/dotfiles#''${FLAKE}
''
+1 -1
View File
@@ -1,7 +1,7 @@
{ pkgs, ... }:
pkgs.writeShellScriptBin "rebuild" ''
echo ${pkgs.system}
echo ${pkgs.stdenv.hostPlatform.system}
SYSTEM=${if pkgs.stdenv.isDarwin then "darwin" else "linux"}
if [ "$SYSTEM" == "darwin" ]; then
sudo darwin-rebuild switch --flake ${builtins.toString ../../../../.}
@@ -17,23 +17,27 @@ in
home.packages = [
pkgs.nerd-fonts.victor-mono # Used for Vim and Terminal
pkgs.nerd-fonts.hack # For Polybar, Rofi
# Maple Mono NF (Ligature unhinted)
pkgs.maple-mono.NF-unhinted
];
fonts.fontconfig = {
enable = true;
defaultFonts.monospace = [ "Victor Mono" ];
defaultFonts.monospace = [ "Maple Mono NF" ];
};
xsession.windowManager.i3.config.fonts = {
names = [ "pango:Victor Mono" ];
# names = [ "pango:Victor Mono" ];
names = [ "pango:Maple Mono" ];
# style = "Regular";
# size = 11.0;
};
services.polybar.config."bar/main".font-0 = "Hack Nerd Font:size=10;2";
programs.rofi.font = "Hack Nerd Font 14";
programs.alacritty.settings.font.normal.family = "VictorMono";
programs.kitty.font.name = "VictorMono Nerd Font Mono";
nmasur.presets.programs.wezterm.font = "VictorMono Nerd Font Mono";
programs.ghostty.settings.font-family = "VictorMono Nerd Font Mono";
programs.alacritty.settings.font.normal.family = "Maple Mono NF";
programs.kitty.font.name = "Maple Mono NF";
nmasur.presets.programs.wezterm.font = "Maple Mono NF";
programs.ghostty.settings.font-family = "Maple Mono NF";
services.dunst.settings.global.font = "Hack Nerd Font 14";
};
}
@@ -18,16 +18,17 @@ in
"1password"
"_1password-gui"
"1password-cli"
"onepassword-password-manager" # Firefox extension
# "onepassword-password-manager" # Firefox extension
];
home.packages = [
pkgs._1password-cli
] ++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
]
++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
# Firefox extension
programs.firefox.profiles.default.extensions.packages = [
pkgs.nur.repos.rycee.firefox-addons.onepassword-password-manager
];
# # Firefox extension
# programs.firefox.profiles.default.extensions.packages = [
# pkgs.nur.repos.rycee.firefox-addons.onepassword-password-manager
# ];
};
# # https://1password.community/discussion/135462/firefox-extension-does-not-connect-to-linux-app
@@ -174,8 +174,10 @@ in
filters = {
"text/plain" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/libexec/aerc/filters/calendar";
# "text/html" =
# "${pkgs.aerc}/libexec/aerc/filters/html | ${pkgs.aerc}/libexec/aerc/filters/colorize"; # Requires w3m, dante
"text/html" =
"${pkgs.aerc}/libexec/aerc/filters/html | ${pkgs.aerc}/libexec/aerc/filters/colorize"; # Requires w3m, dante
"!${pkgs.chawan}/bin/cha --type text/html --opt display.image-mode=kitty --opt display.columns=100 --opt display.force-columns=true";
# "text/*" =
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
"message/delivery-status" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
@@ -200,9 +202,12 @@ in
};
};
# Used for macOS
xdg.enable = lib.mkDefault pkgs.stdenv.isDarwin;
xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux) {
name = "aerc";
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} aerc %u";
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} -e aerc %u";
};
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
"${config.xsession.windowManager.i3.config.modifier}+Shift+e" =
@@ -212,7 +217,7 @@ in
if terminal == pkgs.wezterm then
"start --class com.noah.aerc -- aerc"
else
"--class=com.noah.aerc --command=aerc";
"--class=com.noah.aerc -e aerc";
in
"exec ${
# Don't name the script `aerc` or it will affect grep
@@ -32,7 +32,6 @@ in
config = lib.mkIf cfg.enable {
accounts.calendar.accounts.default = {
basePath = "other/calendars"; # Where to save calendars in ~ directory
name = "personal";
local.type = "filesystem";
primary = true;
@@ -18,15 +18,16 @@ in
ca = "cargo";
};
home.packages = with pkgs; [
gcc
rustc
cargo
cargo-watch
clippy
rustfmt
pkg-config
openssl
home.packages = [
pkgs.gcc
pkgs.rustc
pkgs.cargo
pkgs.stable.cargo-watch
pkgs.clippy
pkgs.rustfmt
pkgs.pkg-config
pkgs.openssl
pkgs.rust-analyzer
];
};
}
@@ -0,0 +1,34 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.nmasur.presets.programs.chawan;
in
{
options.nmasur.presets.programs.chawan.enable = lib.mkEnableOption "chawan TUI web browser";
config = lib.mkIf cfg.enable {
programs.chawan = {
enable = true;
settings = {
external.copy-cmd = if pkgs.stdenv.isLinux then "xclip -selection clipboard -in" else "pbcopy";
};
};
# Set Chawan as the default app for manual pages
home.sessionVariables = {
MANPAGER = "${lib.getExe pkgs.chawan} -T text/x-ansi";
};
programs.fish.shellAbbrs.man = "mancha";
};
}
@@ -29,7 +29,7 @@ in
config = lib.mkIf cfg.enable {
# Always make the dotfiles directory considered safe for git and direnv
programs.git.extraConfig.safe.directory = cfg.path;
programs.git.settings.safe.directory = cfg.path;
programs.direnv.config.whitelist.prefix = [ cfg.path ];
home.activation = {
@@ -46,6 +46,8 @@ in
ublacklist
vimium
wappalyzer # TODO: only for work profile
# pkgs.nmasur.firefox-history-exporter
# copy-as-markdown
# saml-tracer
# text-fragment
];
@@ -61,6 +63,7 @@ in
"trailhead.firstrun.didSeeAboutWelcome" = true; # Disable welcome splash
"dom.forms.autocomplete.formautofill" = false; # Disable autofill
"extensions.formautofill.creditCards.enabled" = false; # Disable credit cards
"extensions.autoDisableScopes" = false; # Enable extensions automatically
"dom.payments.defaults.saveAddress" = false; # Disable address save
"general.autoScroll" = true; # Drag middle-mouse to scroll
"services.sync.prefs.sync.general.autoScroll" = false; # Prevent disabling autoscroll
@@ -187,7 +190,7 @@ in
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
"${config.xsession.windowManager.i3.config.modifier}+Shift+b" = "exec ${
# Don't name the script `firefox` or it will affect grep
builtins.toString (
toString (
pkgs.writeShellScript "focus-ff.sh" ''
count=$(ps aux | grep -c firefox)
if [ "$count" -eq 1 ]; then
@@ -13,13 +13,35 @@ in
options.nmasur.presets.programs.fish-darwin.enable = lib.mkEnableOption {
description = "Fish macOS options";
default = config.nmasur.presets.programs.fish && pkgs.stdenv.isDarwin;
};
config = lib.mkIf cfg.enable {
programs.fish.shellAbbrs = {
# Shortcut to edit hosts file
hosts = "sudo nvim /etc/hosts";
# Default shell setting doesn't work
home.sessionVariables = {
SHELL = "${pkgs.fish}/bin/fish";
};
programs.fish = {
shellAbbrs = {
# Shortcut to edit hosts file
hosts = "sudo hx /etc/hosts";
};
shellInit = ''
set -g __nixos_path_original $PATH
function __nixos_path_fix -d "fix PATH value"
set -l result (string split ":" $__nixos_path_original)
for elt in $PATH
if not contains -- $elt $result
set -a result $elt
end
end
set -g PATH $result
end
__nixos_path_fix
'';
# # Speeds up fish launch time on macOS
# useBabelfish = true;
};
};
}
@@ -21,7 +21,7 @@ in
programs.ghostty = {
enable = true;
package = if pkgs.stdenv.isDarwin then null else pkgs.ghostty;
package = if pkgs.stdenv.isDarwin then pkgs.ghostty-bin else pkgs.ghostty;
enableFishIntegration = true;
enableBashIntegration = true;
@@ -37,8 +37,8 @@ in
fullscreen = if pkgs.stdenv.isDarwin then true else false;
keybind = [
"super+t=unbind" # Pass super-t to underlying tool (e.g. zellij tabs)
"super+shift+bracket_right=unbind"
"super+shift+bracket_left=unbind"
"super+shift+]=unbind"
"super+shift+[=unbind"
"ctrl+tab=unbind"
"ctrl+shift+tab=unbind"
"ctrl+tab=text:\\x1b[9;5u"
@@ -39,8 +39,19 @@ in
config = lib.mkIf cfg.enable {
programs.git = {
userName = lib.mkForce cfg.work.name;
userEmail = lib.mkForce cfg.work.email;
settings = {
user = {
name = lib.mkForce cfg.work.name;
email = lib.mkForce cfg.work.email;
signingKey = "~/.ssh/work_github";
};
commit = {
gpgsign = true;
};
tag = {
gpgsign = true;
};
};
includes = [
{
path = "${config.home.homeDirectory}/${config.xdg.configFile."git/personal".target}";
@@ -50,6 +61,11 @@ in
};
# Add work to signers file
xdg.configFile."git/allowed-signers".text = ''
${cfg.work.email} ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIP7aXbmKHmWUZgwG5HPtwx+nREVeMIRplpAAzxPOFXL
'';
# Personal git config
xdg.configFile."git/personal".text = lib.generators.toGitINI {
user = {
@@ -57,12 +73,6 @@ in
email = cfg.personal.email;
signingkey = "~/.ssh/id_ed25519";
};
commit = {
gpgsign = true;
};
tag = {
gpgsign = true;
};
};
# Personal jj config
@@ -29,9 +29,11 @@ in
programs.git = {
enable = true;
userName = cfg.name;
userEmail = cfg.email;
extraConfig = {
settings = {
user = {
name = cfg.name;
email = cfg.email;
};
core.pager = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight | less --no-init";
interactive.difffilter = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight";
pager = {
@@ -63,7 +65,7 @@ in
};
xdg.configFile."git/allowed-signers".text = ''
7386960+nmasur@users.noreply.github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s
${config.nmasur.presets.programs.git.email} ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB+AbmjGEwITk5CK9y7+Rg27Fokgj9QEjgc9wST6MA3s
'';
programs.fish.shellAbbrs = {
@@ -22,7 +22,6 @@ in
extensions = [
pkgs.nmasur.gh-collaborators
pkgs.gh-dash
pkgs.gh-copilot
];
};
@@ -7,6 +7,62 @@
let
cfg = config.nmasur.presets.programs.helix;
blame_file_pretty = pkgs.writeShellScriptBin "blame_file_pretty" ''
# Source: https://gist.github.com/gloaysa/828707f067e3bb20da18d72fa5d4963a
# Utility for Helix: open the patch for the commit that last touched the current line.
# If the line isnt committed yet, it shows the working-tree diff for THIS file only.
# The script writes the diff to /tmp and prints the absolute path to stdout
# Adjust `context` to see more/fewer unchanged lines around the change (default: 3).
#
# usage: git-file_pretty.sh <file> <line> [context_lines]
# Helix mapping example:
# B = ':open %sh{ ~/.config/helix/utils/git-blame-commit.sh "%{buffer_name}" %{cursor_line} 3 }'
file="$1"
line="$2"
ctx="''${3:-3}"
# blame the exact line
porc="$(git blame -L "$line",+1 --porcelain -- "$file")" || exit 1
sha="$(printf '%s\n' "$porc" | awk 'NR==1{print $1}')"
commit_path="$(printf '%s\n' "$porc" | awk '/^filename /{print substr($0,10); exit}')"
out="/tmp/hx-blame_$(basename "$file")_''${sha:-wt}.diff"
if [ -z "$sha" ] || [ "$sha" = 0000000000000000000000000000000000000000 ] || [ "$sha" = "^" ]; then
# uncommitted line working tree diff for this file
git --no-pager diff --no-color -U"$ctx" -- "$file" > "$out"
else
# committed line only this files patch in that commit
git --no-pager show --no-color -M -C -U"$ctx" "$sha" -- "''${commit_path:-$file}" > "$out"
fi
# "return" the path for :open %sh{}
printf '%s' "$out"
'';
blame_line_pretty = pkgs.writeShellScriptBin "blame_line_pretty" ''
# Source: https://gist.github.com/gloaysa/828707f067e3bb20da18d72fa5d4963a
# Utility for Helix: pretty-print blame info for the line under the cursor.
# Quite basic.
#
# usage: blame_line_pretty <file> <line>
# Helix mapping example:
# b = ":run-shell-command ~/.config/helix/utils/blame_line_pretty.sh %{buffer_name} %{cursor_line}"
file="$1"; line="$2"
out="$(git blame -L "$line",+1 --porcelain -- "$file")" || return 1
sha="$(printf '%s\n' "$out" | awk 'NR==1{print $1}')"
author="$(printf '%s\n' "$out" | awk -F'author ' '/^author /{print $2; exit}')"
epoch="$(printf '%s\n' "$out" | awk '/^author-time /{print $2; exit}')"
# dd-mm-yyyy (macOS `date -r`; fallback to gdate if present)
date="$( (date -r "$epoch" +%d-%m-%Y\ %H:%M 2>/dev/null) || (gdate -d "@$epoch" +%d-%m-%Y\ %H:%M 2>/dev/null) || printf '%s' "$epoch")"
summary="$(printf '%s\n' "$out" | awk -F'summary ' '/^summary /{print $2; exit}')"
change="$(printf '%s\n' "$out" | tail -n 1)"
printf "%s\n%s\n%s\n%s\n%s\n" "$sha" "$author" "$date" "$summary" "$change"
'';
in
{
@@ -16,13 +72,13 @@ in
config = lib.mkIf cfg.enable {
# Use Neovim as the editor for git commit messages
programs.git.extraConfig.core.editor = lib.mkForce "${lib.getExe pkgs.helix}";
programs.git.settings.core.editor = lib.mkForce "${lib.getExe pkgs.helix}";
programs.jujutsu.settings.ui.editor = lib.mkForce "${lib.getExe pkgs.helix}";
# Set Neovim as the default app for text editing and manual pages
home.sessionVariables = {
EDITOR = lib.mkForce "${lib.getExe pkgs.helix}";
MANPAGER = lib.mkForce "sh -c 'col -bx | ${lib.getExe pkgs.helix}'";
# MANPAGER = lib.mkForce "sh -c 'col -bx | ${lib.getExe pkgs.helix}'";
MANWIDTH = 87;
MANROFFOPT = "-c";
};
@@ -62,6 +118,11 @@ in
command = lib.getExe pkgs.marksman;
};
language-server.rumdl = {
command = lib.getExe pkgs.rumdl;
args = [ "server" ];
};
language-server.terraform-ls = {
command = "${lib.getExe pkgs.terraform-ls}";
args = [ "serve" ];
@@ -87,10 +148,16 @@ in
{
name = "markdown";
auto-format = false;
language-servers = [ "marksman" ];
language-servers = [
"marksman"
"rumdl"
];
formatter = {
command = lib.getExe pkgs.mdformat;
args = [ "-" ];
command = lib.getExe pkgs.rumdl;
args = [
"fmt"
"-"
];
};
# Allows return key to continue the token on the next line
comment-tokens = [
@@ -102,9 +169,18 @@ in
];
}
{
name = "tfvars";
name = "hcl";
scope = "source.hcl";
# injection-regex = "terraform";
auto-format = true;
language-servers = [ "terraform-ls" ];
language-id = "terraform";
file-types = [
"tf"
"tfvars"
"terraform"
{ glob = "*.auto.tfvars"; }
];
formatter = {
command = lib.getExe pkgs.terraform;
args = [
@@ -114,11 +190,15 @@ in
};
}
{
name = "hcl";
name = "hcl-packer";
scope = "source.hcl-packer";
auto-format = true;
language-servers = [ "terraform-ls" ];
file-types = [
"hcl"
"pkr.hcl"
];
formatter = {
command = lib.getExe pkgs.terraform;
command = "${pkgs.packer}/bin/packer";
args = [
"fmt"
"-"
@@ -179,18 +259,9 @@ in
];
# Commandline git blame
space.B = ":echo %sh{git log -n1 --date=short --pretty=format:'%%h %%ad %%s' $(git blame -L %{cursor_line},+1 \"%{buffer_name}\" | cut -d' ' -f1)}";
# Open yazi
# https://github.com/sxyazi/yazi/pull/2461
# Won't work until next Helix release
C-y = [
":sh rm -f /tmp/unique-file"
":insert-output ${lib.getExe pkgs.yazi} %{buffer_name} --chooser-file=/tmp/unique-file"
":insert-output echo \\x1b[?1049h\\x1b[?2004h > /dev/tty"
":open %sh{cat /tmp/unique-file}"
":redraw"
];
# space.B = ":echo %sh{git log -n1 --date=short --pretty=format:'%%h %%ad %%s' $(git blame -L %{cursor_line},+1 \"%{buffer_name}\" | cut -d' ' -f1)}";
space.B = '':open %sh{ ${blame_line_pretty}/bin/blame_line_pretty "%{buffer_name}" %{cursor_line} 3 }'';
space.i = '':open %sh{ ${blame_file_pretty}/bin/blame_file_pretty "%{buffer_name}" %{cursor_line} 3 }'';
# Extend selection above
X = "select_line_above";
@@ -256,6 +327,10 @@ in
git-exclude = true; # Skip excluded files
};
completion-replace = true; # Replace whole word with completion
trim-trailing-whitespace = true;
# rainbow-brackets = true; # Make it easier to match parentheses
# Show whitespace visible to the user
# Waiting for trailing whitespace option ideally
whitespace = {
@@ -272,7 +347,7 @@ in
};
themes."${config.programs.helix.settings.theme}" = {
themes.base16 = {
"attributes" = config.theme.colors.base09;
"comment" = {
fg = config.theme.colors.base03;
@@ -452,8 +527,220 @@ in
};
};
themes.alabaster-style = {
"attribute" = config.theme.colors.base05;
"comment" = {
fg = config.theme.colors.base0A;
# modifiers = [ "italic" ];
};
"constant" = config.theme.colors.base0E;
"constant.numeric" = config.theme.colors.base0E;
"constant.builtin" = config.theme.colors.base0E;
"constant.character" = config.theme.colors.base0E;
"constant.character.escape" = config.theme.colors.base0C;
"constructor" = config.theme.colors.base0D;
"debug" = config.theme.colors.base03;
"diagnostic" = {
modifiers = [ "underlined" ];
};
"diff.delta" = config.theme.colors.base09;
"diff.minus" = config.theme.colors.base08;
"diff.plus" = config.theme.colors.base0B;
"error" = config.theme.colors.base08;
"function" = config.theme.colors.base0D;
"hint" = config.theme.colors.base03;
"info" = config.theme.colors.base0D;
"keyword" = config.theme.colors.base05;
"keyword.control" = config.theme.colors.base05;
"keyword.operator" = config.theme.colors.base05;
"label" = config.theme.colors.base0E;
"namespace" = config.theme.colors.base0E;
"operator" = config.theme.colors.base05;
"punctuation" = config.theme.colors.base04;
"punctuation.bracket" = config.theme.colors.base04;
"punctuation.delimiter" = config.theme.colors.base04;
"special" = config.theme.colors.base0D;
"string" = config.theme.colors.base0B;
"string.regexp" = config.theme.colors.base0B;
"string.special" = config.theme.colors.base0C;
"type" = config.theme.colors.base0A;
"variable" = config.theme.colors.base05;
"variable.parameter" = config.theme.colors.base05;
"variable.builtin" = config.theme.colors.base05;
"variable.other.member" = config.theme.colors.base05;
"warning" = config.theme.colors.base09;
"markup.bold" = {
fg = config.theme.colors.base0A;
modifiers = [ "bold" ];
};
"markup.heading" = config.theme.colors.base0D;
"markup.italic" = {
fg = config.theme.colors.base0E;
modifiers = [ "italic" ];
};
"markup.link.text" = config.theme.colors.base08;
"markup.link.url" = {
fg = config.theme.colors.base09;
modifiers = [ "underlined" ];
};
"markup.list" = config.theme.colors.base08;
"markup.quote" = config.theme.colors.base0C;
"markup.raw" = config.theme.colors.base0B;
"markup.strikethrough" = {
modifiers = [ "crossed_out" ];
};
"diagnostic.hint" = {
underline = {
style = "curl";
};
};
"diagnostic.info" = {
underline = {
style = "curl";
};
};
"diagnostic.warning" = {
underline = {
style = "curl";
};
};
"diagnostic.error" = {
underline = {
style = "curl";
};
};
"ui.background" = {
bg = config.theme.colors.base00;
};
"ui.bufferline.active" = {
fg = config.theme.colors.base00;
bg = config.theme.colors.base03;
modifiers = [ "bold" ];
};
"ui.bufferline" = {
fg = config.theme.colors.base04;
bg = config.theme.colors.base00;
};
"ui.cursor" = {
fg = config.theme.colors.base04;
modifiers = [ "reversed" ];
};
"ui.cursor.insert" = {
fg = config.theme.colors.base0A;
modifiers = [ "reversed" ];
};
"ui.cursorline.primary" = {
fg = config.theme.colors.base05;
bg = config.theme.colors.base01;
};
"ui.cursor.match" = {
fg = config.theme.colors.base03;
modifiers = [ "reversed" ];
};
"ui.cursor.select" = {
fg = config.theme.colors.base04;
modifiers = [ "reversed" ];
};
"ui.gutter" = {
bg = config.theme.colors.base00;
};
"ui.help" = {
fg = config.theme.colors.base06;
bg = config.theme.colors.base01;
};
"ui.linenr" = {
fg = config.theme.colors.base03;
bg = config.theme.colors.base00;
};
"ui.linenr.selected" = {
fg = config.theme.colors.base04;
bg = config.theme.colors.base01;
modifiers = [ "bold" ];
};
"ui.menu" = {
fg = config.theme.colors.base05;
bg = config.theme.colors.base01;
};
"ui.menu.scroll" = {
fg = config.theme.colors.base03;
bg = config.theme.colors.base01;
};
"ui.menu.selected" = {
fg = config.theme.colors.base01;
bg = config.theme.colors.base04;
};
"ui.popup" = {
bg = config.theme.colors.base01;
};
"ui.selection" = {
bg = config.theme.colors.base01;
};
"ui.selection.primary" = {
bg = config.theme.colors.base02;
};
"ui.statusline" = {
fg = config.theme.colors.base04;
bg = config.theme.colors.base01;
};
"ui.statusline.inactive" = {
bg = config.theme.colors.base01;
fg = config.theme.colors.base03;
};
"ui.statusline.insert" = {
fg = config.theme.colors.base00;
bg = config.theme.colors.base0B;
};
"ui.statusline.normal" = {
fg = config.theme.colors.base00;
bg = config.theme.colors.base03;
};
"ui.statusline.select" = {
fg = config.theme.colors.base00;
bg = config.theme.colors.base0F;
};
"ui.text" = config.theme.colors.base05;
"ui.text.focus" = config.theme.colors.base05;
"ui.virtual.indent-guide" = {
fg = config.theme.colors.base03;
};
"ui.virtual.inlay-hint" = {
fg = config.theme.colors.base03;
};
"ui.virtual.ruler" = {
bg = config.theme.colors.base01;
};
"ui.virtual.jump-label" = {
fg = config.theme.colors.base0A;
modifiers = [ "bold" ];
};
"ui.window" = {
bg = config.theme.colors.base01;
};
};
};
# Create a desktop option for launching Helix from a file manager
# (Requires launching the terminal and then executing Helix)
xdg.desktopEntries.helix =
lib.mkIf (pkgs.stdenv.isLinux && config.nmasur.presets.services.i3.enable)
{
name = "Helix wrapper";
exec = ''sh -c "${lib.getExe config.nmasur.presets.services.i3.terminal} --command='hx \$1'" _ %F ''; # TODO: change to work for any terminal
mimeType = [
"text/plain"
"text/markdown"
];
};
xdg.mimeApps.defaultApplications = {
"text/plain" = lib.mkBefore [ "Helix.desktop" ];
"text/markdown" = lib.mkBefore [ "Helix.desktop" ];
};
home.packages = [
(pkgs.writers.writeDashBin "xterm" ''${lib.getExe config.nmasur.presets.services.i3.terminal} +new-window --command"$@" '')
];
};
}
@@ -0,0 +1,83 @@
{
config,
lib,
...
}:
let
cfg = config.nmasur.presets.programs.homebrew;
in
{
options.nmasur.presets.programs.homebrew.enable =
lib.mkEnableOption "Homebrew macOS package manager";
config = lib.mkIf cfg.enable {
home.file.".Brewfile".text = /* homebrew */ ''
# Taps
# tap "homebrew/bundle"
# Brews (CLI Apps)
brew "trash" # Delete files and folders to trash instead of rm
# Casks (GUI Apps)
cask "scroll-reverser" # Different scroll style for mouse vs. trackpad
cask "notunes" # Don't launch Apple Music with the play button
cask "topnotch" # Darkens the menu bar to complete black
cask "ghostty" # Terminal application (not buildable on Nix on macOS)
cask "discord" # nixpkgs bundle breaks its notarization seal on macOS 26+
# Mac App Store apps (requires 'mas' CLI, optional)
# mas "Tailscale", id: 1475387142
'';
# Add homebrew paths to CLI path
home.sessionPath = [
"/opt/homebrew/bin/"
"/opt/homebrew/opt/trash/bin"
];
programs.fish.shellAbbrs.t = "trash";
home.activation.backendBrewBundle = /* bash */ ''
# Requires Homebrew to be installed
if ! /usr/bin/xcode-select --version 2>/dev/null; then
$DRY_RUN_CMD /usr/bin/xcode-select --install
fi
if ! /opt/homebrew/bin/brew --version 2>/dev/null; then
$DRY_RUN_CMD /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
verboseEcho "Syncing Homebrew dependencies via Brewfile..."
# Ensure Homebrew is in the PATH for the script (Apple Silicon path)
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
# Keep activation deterministic and non-interactive. Without this, brew
# auto-updates (git-fetches its taps) which can hang forever when there
# is no TTY (network stall, credential prompt, or a leftover brew lock).
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_NO_ENV_HINTS=1
# Point brew at the generated Brewfile in the Nix store directly. This
# avoids depending on the ~/.Brewfile symlink being linked first, and
# sidesteps the --global vs. inherited HOMEBREW_BUNDLE_FILE conflict.
unset HOMEBREW_BUNDLE_FILE
brewfile="${config.home.file.".Brewfile".source}"
if command -v brew &> /dev/null; then
# Install/upgrade everything declared in the Brewfile...
$DRY_RUN_CMD brew bundle install --file="$brewfile"
# ...then uninstall anything NOT listed (replaces deprecated --cleanup).
$DRY_RUN_CMD brew bundle cleanup --file="$brewfile" --force
else
verboseEcho "Warning: Homebrew not found. Actions skipped."
fi
'';
};
}
@@ -20,8 +20,8 @@ in
# https://github.com/martinvonz/jj/blob/main/docs/config.md
settings = {
user = {
name = config.programs.git.userName;
email = config.programs.git.userEmail;
name = config.programs.git.settings.user.name;
email = config.programs.git.settings.user.email;
};
ui.paginate = "never";
@@ -33,7 +33,10 @@ in
home.packages = [
# Required for the fsmonitor to auto-snapshot
pkgs.watchman
pkgs.stable.watchman
# Required to be on path to work in Zellij
pkgs.jjui
];
};
@@ -38,13 +38,13 @@ in
);
# Use Neovim as the editor for git commit messages
programs.git.extraConfig.core.editor = "${lib.getExe cfg.package}";
programs.git.settings.core.editor = "${lib.getExe cfg.package}";
programs.jujutsu.settings.ui.editor = "${lib.getExe cfg.package}";
# Set Neovim as the default app for text editing and manual pages
home.sessionVariables = {
EDITOR = "${lib.getExe cfg.package}";
MANPAGER = "${lib.getExe cfg.package} +Man!";
# MANPAGER = "${lib.getExe cfg.package} +Man!";
};
# Create quick aliases for launching Neovim
@@ -66,7 +66,7 @@ in
lib.mkIf (pkgs.stdenv.isLinux && config.nmasur.presets.services.i3.enable)
{
name = "Neovim wrapper";
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} nvim %F"; # TODO: change to generic
exec = ''${lib.getExe config.nmasur.presets.services.i3.terminal} --command="nvim %F"''; # TODO: change to generic
mimeType = [
"text/plain"
"text/markdown"
@@ -29,6 +29,18 @@ in
doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path}
'';
};
rebuildNixosAndPause = lib.mkOption {
type = lib.types.package;
default = pkgs.writeShellScriptBin "rebuild-nixos-pause" ''
${lib.getExe cfg.commands.rebuildNixos} || read
'';
};
rebuildHomeAndPause = lib.mkOption {
type = lib.types.package;
default = pkgs.writeShellScriptBin "rebuild-home-pause" ''
${lib.getExe cfg.commands.rebuildHome} || read
'';
};
};
};
@@ -15,10 +15,21 @@ in
config = lib.mkIf (cfg.enable && (pkgs.stdenv.isDarwin || config.services.dunst.enable)) {
home.packages = [ pkgs.noti ];
programs.fish.shellAbbrs = {
# Add noti for ghpr in Darwin
ghpr = lib.mkForce "gh pr create && sleep 3 && noti gh run watch";
grw = lib.mkForce "noti gh run watch";
programs.fish = {
shellAbbrs = {
# Add noti for ghpr in Darwin
ghpr = lib.mkForce "gh pr create && sleep 3 && noti gh run watch";
grw = lib.mkForce "noti gh run watch";
};
functions = {
gh-run = {
body =
lib.mkForce # fish
''
${lib.getExe pkgs.zellij} action new-pane --start-suspended -- noti gh run watch
'';
};
};
};
};
}
@@ -22,6 +22,6 @@ in
# Broken on 2023-12-11
# https://forum.obsidian.md/t/electron-25-is-now-eol-please-upgrade-to-a-newer-version/72878/8
# insecurePackages = [ "electron-25.9.0" ];
# allowInsecurePackages = [ "electron-36.9.5" ];
};
}
@@ -24,6 +24,7 @@ in
.terraform/
.target/
/Library/
.jj/
'';
};
};
@@ -15,6 +15,8 @@ in
config = lib.mkIf cfg.enable {
home.packages = [ pkgs.jj-starship ];
programs.starship = {
enable = true;
enableFishIntegration = true;
@@ -27,6 +29,7 @@ in
"$git_branch"
"$git_commit"
"$git_status"
"\${custom.jj}"
"$hostname"
"$cmd_duration"
"$character"
@@ -38,23 +41,37 @@ in
vicmd_symbol = "[](bold green)";
};
cmd_duration = {
min_time = 5000;
min_time = 5001;
show_notifications = if pkgs.stdenv.isLinux then false else true;
min_time_to_notify = 30000;
format = "[$duration]($style) ";
};
custom = {
jj = {
when = "jj-starship detect";
shell = [
"jj-starship"
"--no-jj-prefix"
"--no-git-prefix"
];
format = "$output ";
};
};
directory = {
truncate_to_repo = true;
truncation_length = 100;
};
git_branch = {
disabled = true;
format = "[$symbol$branch]($style)";
};
git_commit = {
disabled = true;
format = "( @ [$hash]($style) )";
only_detached = false;
};
git_status = {
disabled = true;
format = "([$all_status$ahead_behind]($style) )";
conflicted = "=";
ahead = "";
@@ -0,0 +1,17 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBTYTRy
elYzTGpSNDQ3UEcwTXlVeGJleUJmWWhaeDdDQTFRcGpmNlNrQlNVCjA5L2JrS3Vx
Q0cyRkk5dTBLOHJXa0xJSG9MTDFnNjV1M0F5L3F5RUlVbW8KLT4gc3NoLWVkMjU1
MTkgWXlTVU1RIG5vNm1Xem9lN2pkS25WRi9xSlpZUjhuYmdUVDUvc2o4M0xqYURR
UmY0VGcKWVVQc2wyV0Jqbk9JR3N4bW5HOXFTZHpCa25EMC85eThQY05MdHdaeXZy
VQotPiBzc2gtZWQyNTUxOSBuanZYNUEgWXRVa3c4STZ3WmFaNThSdE1QdVpiMVR1
cm5hYXJsckZiRGtXLzN5RzJEawpkVHBscFd2c0R1SGxnZ3lKUnNnMEZtTUxoQlB4
dVBEbTkvUzBJSVRiV1hBCi0+IHNzaC1lZDI1NTE5IENxSU9VQSAvQjhVam1heHNU
elVrVGtvaUx1elFCeTdNTkRnN3c5NEc5MWg4dDU3NUhzCm5sUlhHclJrNldnVDhF
MTV2cGd3ZFhFdm1rM2ExWVFXbkNJYWlWY0VnUmsKLT4gc3NoLWVkMjU1MTkgejFP
Y1p3IGc1QUdkZEp0Z0xEekFjcHd4WVFVam9BZTBEQm9NR3QzQmxNS09VVXpHV2sK
c2tYSElVK2prRlF3VlFqKzlVUFRHUWU3TmFXcEdsV2FKWVhKT3pWZkxVNAotLS0g
c1cxdk5sL1c3dDZuVGp5VWJrTlBGZTByNjRxMGxTdHd0NFNHV1pyN2k5Ywr7SW9q
/FaTTUHB5QiCihA+385sNogq7Q1RvgT2Dwn9NdmMRd/ObESbokJXVSiDDEt6d39s
D/uoDY20p3PCk4julNn1
-----END AGE ENCRYPTED FILE-----
@@ -0,0 +1,106 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (config.nmasur.settings) hostnames;
cfg = config.nmasur.presets.programs.thunderbird;
in
{
options.nmasur.presets.programs.thunderbird = {
enable = lib.mkEnableOption "Thunderbird email client";
calendar = {
username = lib.mkOption {
type = lib.types.str;
description = "Username for the calendar service backend";
default = config.nmasur.settings.username;
};
passwordCommand = lib.mkOption {
type = lib.types.str;
description = "Password for the calendar service backend";
default = config.accounts.email.accounts.home.passwordCommand;
};
hostname = lib.mkOption {
type = lib.types.str;
description = "Hostname for the calendar service backend";
default = hostnames.content;
};
url = lib.mkOption {
type = lib.types.str;
description = "URL for the calendar service backend";
default = "https://${cfg.calendar.hostname}/remote.php/dav";
};
};
tasks = {
username = lib.mkOption {
type = lib.types.str;
description = "Username for the tasks service backend";
default = config.nmasur.settings.username;
};
passwordCommand = lib.mkOption {
type = lib.types.str;
description = "Password for the tasks service backend";
default = "${lib.getExe pkgs.age} --decrypt --identity ~/.ssh/id_ed25519 ${pkgs.writeText "taskspass.age" (builtins.readFile ./taskspass.age)}";
};
hostname = lib.mkOption {
type = lib.types.str;
description = "Hostname for the tasks service backend";
default = hostnames.content;
};
url = lib.mkOption {
type = lib.types.str;
description = "URL for the tasks service backend";
default = "https://${cfg.tasks.hostname}/remote.php/dav";
};
};
};
config = lib.mkIf cfg.enable {
programs.thunderbird = {
enable = true;
profiles.default = {
isDefault = true;
};
};
accounts.email.accounts.home.thunderbird = {
enable = true;
profiles = [ "default" ];
};
accounts.calendar.basePath = "other/calendars"; # Where to save calendars in ~ directory
# accounts.calendar.accounts.home = {
# local.type = "filesystem";
# primary = true;
# remote = {
# passwordCommand = [ cfg.calendar.passwordCommand ];
# type = "caldav";
# url = cfg.calendar.url;
# userName = cfg.calendar.username;
# };
# thunderbird = {
# enable = true;
# profiles = [ "default" ];
# };
# };
# accounts.calendar.accounts.tasks = {
# local.type = "filesystem";
# primary = false;
# remote = {
# passwordCommand = [ cfg.tasks.passwordCommand ];
# type = "caldav";
# url = cfg.tasks.url;
# userName = cfg.tasks.username;
# };
# thunderbird = {
# enable = true;
# profiles = [ "default" ];
# };
# };
};
}
@@ -16,6 +16,7 @@ in
config = lib.mkIf cfg.enable {
programs.zed-editor = {
enable = true;
package = pkgs.stable.zed-editor;
extensions = [
"nix"
@@ -6,6 +6,7 @@
}:
let
inherit (config.nmasur.settings) username;
cfg = config.nmasur.presets.programs.zellij;
zellij-switch-to-last = pkgs.writeShellScriptBin "zellij-switch-to-last" ''
@@ -14,7 +15,7 @@ let
return 1
fi
echo "$ZELLIJ_SESSION_NAME" > ~/.local/state/zellij-last-session
zellij pipe --plugin file:$(which zellij-switch.wasm) -- "--session $TARGET_SESSION"
${lib.getExe pkgs.zellij} action switch-session $TARGET_SESSION
'';
in
@@ -33,7 +34,24 @@ in
# description = "Open a session in Zellij";
body = # fish
''
set TARGET_DIR $(zoxide query --interactive)
set TARGET_DIR $( \
zoxide query --list --score | \
fzf --filter="$query" --no-sort | \
fzf \
--prompt="zoxide > " \
--nth=2.. \
--ansi \
--height=60% \
--info=inline \
--border=rounded \
--layout=reverse \
--preview-window=down:40%:wrap \
--preview='ls -F -C --color=always {2..}' \
--bind 'ctrl-z:ignore,btab:up,tab:down,enter:become:echo {2..}' \
--cycle \
--keep-right \
--tabstop=1 \
)
if test -z $TARGET_DIR
return 0
end
@@ -41,18 +59,20 @@ in
return 1
end
echo "$ZELLIJ_SESSION_NAME" > ~/.local/state/zellij-last-session
zellij pipe --plugin file:$(which zellij-switch.wasm) -- "--cwd $TARGET_DIR --layout default --session $(basename $TARGET_DIR)"
${lib.getExe pkgs.zellij} action switch-session $(basename $TARGET_DIR) --cwd $TARGET_DIR --layout default
'';
};
gh-run = {
body = # fish
''
zellij action new-pane --start-suspended -- gh run watch
${lib.getExe pkgs.zellij} action new-pane --start-suspended -- gh run watch
'';
};
};
};
programs.ghostty.settings.initial-command = lib.getExe pkgs.zellij;
xdg.configFile."zellij/layouts/compact-top.kdl".text = # kdl
''
layout {
@@ -85,10 +105,14 @@ in
enableFishIntegration = true;
enableZshIntegration = true;
attachExistingSession = true;
exitShellOnExit = false;
exitShellOnExit = true;
settings = {
default_mode = "locked";
# Spawn fish directly instead of trusting $SHELL, which inherits the
# macOS login shell. On darwin that login shell is no longer managed by
# nix-darwin, so $SHELL can point at a stale /run/current-system path.
default_shell = lib.getExe pkgs.fish;
# default_layout = "compact-top";
# Remove border
pane_frames = false;
@@ -98,6 +122,22 @@ in
show_startup_tips = false;
keybinds = {
locked = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) {
# For servers that I SSH into, use c-a-G to unlock
"bind \"Ctrl Alt G\"" = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) {
SwitchToMode = {
_args = [ "normal" ];
};
};
};
normal = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) {
# For servers that I SSH into, use c-a-G to lock
"bind \"Ctrl Alt G\"" = lib.mkIf (pkgs.stdenv.isLinux && !config.programs.ghostty.enable) {
SwitchToMode = {
_args = [ "locked" ];
};
};
};
session = {
"bind \"w\"" = {
LaunchOrFocusPlugin = {
@@ -121,9 +161,15 @@ in
shared = {
"bind \"Alt Shift s\"" = {
Run = {
_args = [
(lib.getExe zellij-switch-to-last)
];
_args =
if pkgs.stdenv.isDarwin then
[
# "env"
# "PATH=/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin"
(lib.getExe zellij-switch-to-last)
]
else
[ (lib.getExe zellij-switch-to-last) ];
close_on_exit = true;
};
};
@@ -186,9 +232,28 @@ in
};
};
"bind \"Alt Shift j\"" = {
Run = {
_args =
if pkgs.stdenv.isDarwin then
[
"env"
"PATH=${config.home.homeDirectory}/.nix-profile/bin:/etc/profiles/per-user/${username}/bin:/usr/bin"
(lib.getExe pkgs.jjui)
]
else
[ (lib.getExe pkgs.jjui) ];
close_on_exit = true;
floating = true;
x = "1%";
y = "1%";
width = "99%";
height = "99%";
};
};
"bind \"Alt Shift y\"" = {
Run = {
_args = [
(lib.getExe pkgs.lazyjj)
(lib.getExe pkgs.yazi)
];
close_on_exit = true;
floating = true;
@@ -243,6 +308,16 @@ in
_args = [ "Left" ];
};
};
"bind \"Alt j\"" = {
MoveFocus = {
_args = [ "Down" ];
};
};
"bind \"Alt k\"" = {
MoveFocus = {
_args = [ "Up" ];
};
};
};
};
@@ -0,0 +1,93 @@
{
config,
lib,
...
}:
let
cfg = config.nmasur.presets.services.darwin-settings;
in
{
options.nmasur.presets.services.darwin-settings.enable = lib.mkEnableOption "macOS settings";
config = lib.mkIf cfg.enable {
targets.darwin.defaults = {
NSGlobalDomain = {
# Set to dark mode
AppleInterfaceStyle = "Dark";
# Don't change from dark to light automatically
# AppleInterfaceSwitchesAutomatically = false;
# Enable full keyboard access for all controls (e.g. enable Tab in modal dialogs)
AppleKeyboardUIMode = 3;
# Expand save panel by default
NSNavPanelExpandedStateForSaveMode = true;
# Expand print panel by default
PMPrintingExpandedStateForPrint = true;
# Replace press-and-hold with key repeat
ApplePressAndHoldEnabled = false;
# Set a fast key repeat rate
KeyRepeat = 2;
# Shorten delay before key repeat begins
InitialKeyRepeat = 12;
# Disable autocorrect capitalization
NSAutomaticCapitalizationEnabled = false;
# Disable autocorrect smart dashes
NSAutomaticDashSubstitutionEnabled = false;
# Disable autocorrect adding periods
NSAutomaticPeriodSubstitutionEnabled = false;
# Disable autocorrect smart quotation marks
NSAutomaticQuoteSubstitutionEnabled = false;
# Disable autocorrect spellcheck
NSAutomaticSpellingCorrectionEnabled = false;
};
"com.apple.LaunchServices" = {
# Disable "Are you sure you want to open" dialog
LSQuarantine = false;
};
# Where to save screenshots
"com.apple.screencapture" = {
location = "~/Downloads";
};
# Disable disk image verification
"com.apple.frameworks.diskimages" = {
skip-verify = true;
skip-verify-locked = true;
skip-verify-remote = true;
};
# Require password immediately after screen saver begins
"com.apple.screensaver" = {
askForPassword = 1;
askForPasswordDelay = 0;
};
};
targets.darwin.currentHostDefaults = {
"com.apple.mouse.tapBehavior" = {
# Disable trackpad tap to click
Clicking = false;
};
};
};
}
@@ -0,0 +1,78 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.nmasur.presets.services.dock;
# macOS stores persistent-apps as an array of dicts, not strings.
# nix-darwin's dock module did this transform for us; targets.darwin.defaults
# writes values verbatim, so we build the tile dicts ourselves.
mkDockApp = path: {
tile-data.file-data = {
_CFURLString = path;
_CFURLStringType = 0;
};
};
in
{
options.nmasur.presets.services.dock.enable = lib.mkEnableOption "macOS Dock";
config = lib.mkIf cfg.enable {
targets.darwin.defaults = {
"com.apple.dock" = {
magnification = true;
largesize = 48;
# Automatically show and hide the dock
autohide = true;
# Add translucency in dock for hidden applications
showhidden = true;
# Enable spring loading on all dock items
enable-spring-load-actions-on-all-items = true;
# Highlight hover effect in dock stack grid view
mouse-over-hilite-stack = true;
mineffect = "genie";
orientation = "bottom";
show-recents = false;
tilesize = 44;
persistent-apps = map mkDockApp [
"${pkgs._1password-gui}/Applications/1Password.app"
"${pkgs.slack}/Applications/Slack.app"
"/System/Applications/Calendar.app"
"${pkgs.firefox-unwrapped}/Applications/Firefox.app"
"/System/Applications/Messages.app"
"/System/Applications/Mail.app"
"/Applications/zoom.us.app"
"${config.programs.ghostty.package}/Applications/Ghostty.app"
# Discord comes from Homebrew on macOS: the nixpkgs bundle is
# modified in place, breaking its notarization seal, so macOS 26+
# refuses to launch it ("damaged"). See presets/programs/homebrew.nix.
"/Applications/Discord.app"
"${pkgs.obsidian}/Applications/Obsidian.app"
"${pkgs.thunderbird}/Applications/Thunderbird.app"
];
};
};
# Automatically reload the Dock and Finder when Home Manager switches
home.activation = {
reloadMacSettings = config.lib.dag.entryAfter [ "writeBoundary" ] ''
verboseEcho "Restarting macOS desktop services..."
run /usr/bin/killall Dock Finder || true
'';
};
};
}
@@ -0,0 +1,50 @@
{
config,
lib,
...
}:
let
cfg = config.nmasur.presets.services.finder;
in
{
options.nmasur.presets.services.finder.enable = lib.mkEnableOption "macOS Finder options";
config = lib.mkIf cfg.enable {
targets.darwin.defaults = {
"com.apple.finder" = {
# Default Finder window set to column view
FXPreferredViewStyle = "clmv";
# Finder search in current folder by default
FXDefaultSearchScope = "SCcf";
# Disable warning when changing file extension
FXEnableExtensionChangeWarning = false;
# Allow quitting of Finder application
QuitMenuItem = true;
# Disable the warning before emptying the Trash
WarnOnEmptyTrash = false;
};
NSGlobalDomain = {
# Save to local disk by default, not iCloud
NSDocumentSaveNewDocumentsToCloud = false;
};
# Avoid creating .DS_Store files on network or USB volumes
"com.apple.desktopservices" = {
DSDontWriteNetworkStores = true;
DSDontWriteUSBStores = true;
};
};
};
}
@@ -0,0 +1,45 @@
--- === Hide Zoom Window ===
-- Credit: https://news.ycombinator.com/item?id=47369091
local obj = {}
obj.__index = obj
-- Metadata
obj.name = "HideZoomWindow"
obj.version = "0.1"
function obj:init()
-- Hide Zoom's "share" windows so it doesn't come back on ESC keypress
local zoomWindow = nil
local originalFrame = nil
hs.hotkey.bind({"cmd", "ctrl", "alt"}, "H", function()
print("> trying to hide zoom")
if not zoomWindow then
print("> looking for window")
zoomWindow = hs.window.find("zoom share statusbar window")
end
if zoomWindow then
print("> found window")
if originalFrame then
print("> restoring")
zoomWindow:setFrame(originalFrame)
originalFrame = nil
zoomWindow = nil
else
print("> hiding")
originalFrame = zoomWindow:frame()
local screen = zoomWindow:screen()
local frame = zoomWindow:frame()
frame.x = screen:frame().w + 99000
frame.y = screen:frame().h + 99000
zoomWindow:setFrame(frame)
end
else
print("> window not found")
end
end)
end
return obj
@@ -57,7 +57,7 @@ function obj:init()
self.launcher:bind("ctrl", "space", function() end)
self.launcher:bind("", "return", function()
-- self:switch("@wezterm@")
self:switch("/Applications/Ghostty.app")
self:switch("@ghostty@")
end)
self.launcher:bind("", "C", function()
self:switch("Calendar.app")
@@ -7,6 +7,7 @@
let
cfg = config.nmasur.presets.services.hammerspoon;
# inherit (config.nmasur.settings) username;
in
{
@@ -15,6 +16,17 @@ in
lib.mkEnableOption "Hammerspoon macOS automation";
config = lib.mkIf cfg.enable {
home.file.".Brewfile".text = /* homebrew */ ''
cask "hammerspoon" # Different scroll style for mouse vs. trackpad
'';
targets.darwin.defaults = {
"org.hammerspoon.Hammerspoon" = {
MJConfigFile = "${config.xdg.configHome}/hammerspoon/init.lua";
};
};
xdg.configFile."hammerspoon/init.lua".source = ./init.lua;
xdg.configFile."hammerspoon/Spoons/ControlEscape.spoon".source = ./Spoons/ControlEscape.spoon;
xdg.configFile."hammerspoon/Spoons/DismissAlerts.spoon".source = ./Spoons/DismissAlerts.spoon;
@@ -23,17 +35,28 @@ in
{
discord = "${pkgs.discord}/Applications/Discord.app";
firefox = "${pkgs.firefox-unwrapped}/Applications/Firefox.app";
ghostty = "${pkgs.ghostty-bin}/Applications/Ghostty.app";
obsidian = "${pkgs.obsidian}/Applications/Obsidian.app";
slack = "${pkgs.slack}/Applications/Slack.app";
wezterm = "${pkgs.wezterm}/Applications/WezTerm.app";
zed = "${pkgs.zed-editor}/Applications/Zed.app";
zed = "${config.programs.zed-editor.package}/Applications/Zed.app";
};
xdg.configFile."hammerspoon/Spoons/MoveWindow.spoon".source = ./Spoons/MoveWindow.spoon;
xdg.configFile."hammerspoon/Spoons/HideZoomWindow.spoon".source = ./Spoons/HideZoomWindow.spoon;
home.activation.reloadHammerspoon = config.lib.dag.entryAfter [ "writeBoundary" ] ''
$DRY_RUN_CMD /Applications/Hammerspoon.app/Contents/Frameworks/hs/hs -c "hs.reload()"
$DRY_RUN_CMD sleep 1
$DRY_RUN_CMD /Applications/Hammerspoon.app/Contents/Frameworks/hs/hs -c "hs.console.clearConsole()"
# The `hs` CLI blocks forever on Hammerspoon's IPC message port when the
# app isn't running (|| true can't help it never returns). Only reload
# when the app is actually up, and wrap each call in `timeout` as a hard
# backstop so activation can never hang even if IPC is unresponsive.
hs=/Applications/Hammerspoon.app/Contents/Frameworks/hs/hs
if /usr/bin/pgrep -x Hammerspoon > /dev/null 2>&1; then
$DRY_RUN_CMD ${pkgs.coreutils}/bin/timeout 10 "$hs" -c "hs.reload()" || true
$DRY_RUN_CMD sleep 1
$DRY_RUN_CMD ${pkgs.coreutils}/bin/timeout 10 "$hs" -c "hs.console.clearConsole()" || true
else
verboseEcho "Hammerspoon not running; skipping reload."
fi
'';
};
@@ -3,3 +3,4 @@ hs.loadSpoon("ControlEscape"):start() -- Load Hammerspoon bits from https://gith
hs.loadSpoon("Launcher"):init()
hs.loadSpoon("DismissAlerts"):init()
hs.loadSpoon("MoveWindow"):init()
hs.loadSpoon("HideZoomWindow"):init()
@@ -214,9 +214,9 @@ in
cfg.commands.lockScreen != null
) "exec ${cfg.commands.lockScreen}";
"${modifier}+Mod1+h" =
''exec --no-startup-id ${lib.getExe cfg.terminal} --command="${pkgs.home-manager}/bin/home-manager switch --flake ${config.nmasur.presets.programs.dotfiles.path}#''${hostname} || read" '';
''exec --no-startup-id ${lib.getExe cfg.terminal} -e "${lib.getExe config.nmasur.presets.programs.nixpkgs.commands.rebuildHome} '';
"${modifier}+Mod1+r" =
"exec --no-startup-id ${lib.getExe cfg.terminal} --command='doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path} || read'";
"exec --no-startup-id ${lib.getExe cfg.terminal} -e ${lib.getExe config.nmasur.presets.programs.nixpkgs.commands.rebuildNixos}";
# Window options
"${modifier}+q" = "kill";
@@ -0,0 +1,53 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.nmasur.presets.services.menubar;
in
{
options.nmasur.presets.services.menubar.enable = lib.mkEnableOption "macOS menubar settings";
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.ice-bar # Menu bar hiding
];
targets.darwin.defaults = {
NSGlobalDomain = {
# Only hide menu bar in fullscreen
_HIHideMenuBar = false;
NSStatusItemSelectionPadding = 6;
NSStatusItemSpacing = 6;
};
"com.apple.menuextra.clock" = {
# Show seconds on the clock
ShowSeconds = true;
FlashDateSeparator = false;
};
"leits.MeetingBar" = {
eventTimeFormat = ''"show"'';
eventTitleFormat = ''"none"'';
eventTitleIconFormat = ''"iconCalendar"'';
slackBrowser = ''{"deletable":true,"arguments":"","name":"Slack","path":""}'';
zoomBrowser = ''{"deletable":true,"arguments":"","name":"Zoom","path":""}'';
teamsBrowser = ''{"deletable":true,"arguments":"","name":"Teams","path":""}'';
KeyboardShortcuts_joinEventShortcut = ''{"carbonModifiers":6400,"carbonKeyCode":38}'';
timeFormat = ''"12-hour"'';
};
};
};
}
@@ -33,6 +33,7 @@ in
nmasur.presets = {
programs = {
bat.enable = lib.mkDefault true;
chawan.enable = lib.mkDefault true;
fd.enable = lib.mkDefault true;
ripgrep.enable = lib.mkDefault true;
starship.enable = lib.mkDefault true;
@@ -17,33 +17,23 @@ in
nmasur.presets = {
fonts.enable = lib.mkDefault true;
services.hammerspoon.enable = lib.mkDefault true;
programs.nixpkgs-darwin.enable = lib.mkDefault true;
programs.mpv.enable = lib.mkDefault true;
services = {
darwin-settings.enable = lib.mkDefault true;
dock.enable = lib.mkDefault true;
finder.enable = lib.mkDefault true;
hammerspoon.enable = lib.mkDefault true;
menubar.enable = lib.mkDefault true;
};
programs = {
fish-darwin.enable = lib.mkDefault true;
homebrew.enable = lib.mkDefault true;
nixpkgs-darwin.enable = lib.mkDefault true;
mpv.enable = lib.mkDefault true;
noti.enable = lib.mkDefault true;
};
};
home.homeDirectory = lib.mkForce "/Users/${config.home.username}";
# Default shell setting doesn't work
home.sessionVariables = {
SHELL = "${pkgs.fish}/bin/fish";
};
# Used for aerc
xdg.enable = lib.mkDefault pkgs.stdenv.isDarwin;
programs.fish.shellAbbrs.t = "trash";
# Add homebrew paths to CLI path
home.sessionPath = [
"/opt/homebrew/bin/"
"/opt/homebrew/opt/trash/bin"
];
home.packages = [
pkgs.noti # Create notifications programmatically
pkgs.ice-bar # Menu bar hiding
];
};
# Fix for: 'Error: HOME is set to "/var/root" but we expect "/var/empty"'
@@ -0,0 +1,24 @@
{
config,
lib,
...
}:
let
cfg = config.nmasur.profiles.darwin-gaming;
in
{
options.nmasur.profiles.darwin-gaming.enable = lib.mkEnableOption "gaming config for macOS";
config = lib.mkIf cfg.enable {
home.file.".Brewfile".text = /* homebrew */ ''
# Casks (GUI Apps)
cask "steam" # Not packaged for Nix on macOS
cask "epic-games" # Not packaged for Nix
'';
};
}
@@ -19,6 +19,10 @@ in
pkgs.pgcli # Postgres client with autocomplete
];
nmasur.presets = {
programs.cargo.enable = lib.mkDefault true;
};
};
}
@@ -17,7 +17,6 @@ in
nmasur.presets.programs = {
zed-editor.enable = lib.mkDefault true;
jujutsu.enable = lib.mkDefault true;
};
home.packages = [
@@ -28,8 +27,14 @@ in
pkgs.skate # Key-value store
pkgs.charm # Manage account and filesystem
pkgs.pop # Send emails from a TUI
pkgs.snitch # Network
pkgs.comma # Nix-index auto-launch
pkgs.nix-inspect # TUI for browsing Nix configs
pkgs.chawan # Browser TUI
# pkgs.crush # AI LLM Agent
pkgs.gemini-cli # AI LLM Agent
pkgs.antigravity-cli # AI LLM Agent
pkgs.pi-coding-agent # AI LLM Agent
];
@@ -32,6 +32,7 @@ in
nsxiv.enable = lib.mkDefault true;
obsidian.enable = lib.mkDefault true;
rofi.enable = lib.mkDefault true;
thunderbird.enable = lib.mkDefault true;
xclip.enable = lib.mkDefault true;
zathura.enable = lib.mkDefault true;
};
@@ -0,0 +1,26 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.nmasur.profiles.llm-development;
in
{
options.nmasur.profiles.llm-development.enable = lib.mkEnableOption "LLM coding tools";
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.pi-coding-agent # AI LLM Agent
];
};
}
@@ -16,16 +16,17 @@ in
pkgs.age # Encryption
pkgs.bc # Calculator
pkgs.bottom # System monitor (top)
pkgs.csvlens # CSV viewer (easier than visidata)
pkgs.delta # Fancy diffs
pkgs.difftastic # Other fancy diffs
pkgs.doggo # DNS client (dig)
pkgs.du-dust # Disk usage tree (ncdu)
pkgs.dust # Disk usage tree (ncdu)
pkgs.dua # File sizes (du)
pkgs.duf # Basic disk information (df)
pkgs.jless # JSON viewer
pkgs.jo # JSON output
pkgs.mpd # TUI slideshows
pkgs.nixfmt-rfc-style # Format Nix code
pkgs.stable.mpd # TUI slideshows
pkgs.nixfmt # Format Nix code
pkgs.nmasur.jqr # FZF fq JSON tool
pkgs.nmasur.osc # Clipboard over SSH
pkgs.nmasur.ren-find # Rename files
@@ -33,7 +34,7 @@ in
pkgs.pandoc # Convert text documents
pkgs.qrencode # Generate qr codes
pkgs.spacer # Output lines in terminal
pkgs.tealdeer # Cheatsheets
pkgs.stable.tealdeer # Cheatsheets
pkgs.tree # Print tree in terminal
pkgs.vimv-rs # Batch rename files
pkgs.yazi # TUI file explorer
@@ -42,7 +43,7 @@ in
programs.fish.shellAliases = {
"du" = lib.mkDefault (lib.getExe pkgs.dua);
"ncdu" = lib.mkDefault (lib.getExe pkgs.du-dust);
"ncdu" = lib.mkDefault (lib.getExe pkgs.dust);
"df" = lib.mkDefault (lib.getExe pkgs.duf);
# Use eza (exa) instead of ls for fancier output
@@ -63,8 +64,9 @@ in
ghostty.enable = lib.mkDefault true;
git.enable = lib.mkDefault true;
helix.enable = lib.mkDefault true;
jujutsu.enable = lib.mkDefault true;
lazygit.enable = lib.mkDefault true;
neovim.enable = lib.mkDefault true;
# neovim.enable = lib.mkDefault true;
nix-index.enable = lib.mkDefault true;
nixpkgs.enable = lib.mkDefault true;
notes.enable = lib.mkDefault true;
@@ -21,7 +21,9 @@ in
];
home.packages = [
pkgs.visidata # CSV inspector
pkgs.actionlint # Lint for GitHub Actions Workflows
pkgs.claude-code # AI LLM Agent
pkgs.stable.visidata # CSV inspector
pkgs.dos2unix # Convert Windows text files
pkgs.inetutils # Includes telnet
pkgs.gnupg # Encryption
@@ -29,6 +31,7 @@ in
pkgs.ssm-session-manager-plugin
pkgs.awslogs
pkgs.stu # TUI for AWS S3
pkgs.pre-commit
pkgs.google-cloud-sdk
pkgs.vault-bin
pkgs.ipcalc # Make IP network calculations
@@ -37,18 +40,28 @@ in
pkgs.nmasur.ocr # Converts images to text
pkgs.nmasur.aws-ec2 # Browse EC2 instances
pkgs.nmasur.terraform-init # Quick shortcut for initializing Terraform backend
pkgs.uv # Python packaging
];
home.file.".Brewfile".text = /* homebrew */ ''
# cask "1password" # 1Password will not launch from Nix on macOS
# cask "gitify" # Git notifications in menu bar (downgrade manually from 4.6.1)
# cask "logitech-g-hub" # Mouse and keyboard management
cask "logitune" # Logitech webcam firmware
cask "meetingbar" # Show meetings in menu bar
'';
programs.fish.shellAliases.ec2 = "aws-ec2";
nmasur.presets = {
fonts.enable = lib.mkDefault true;
programs = {
_1password.enable = lib.mkDefault true;
# _1password.enable = lib.mkDefault true;
atuin.enable = lib.mkDefault true;
aws-ssh.enable = lib.mkDefault true;
bash.enable = lib.mkDefault true;
bat.enable = lib.mkDefault true;
cargo.enable = lib.mkDefault true;
direnv.enable = lib.mkDefault true;
dotfiles.enable = lib.mkDefault true;
fd.enable = lib.mkDefault true;
@@ -67,8 +80,12 @@ in
ripgrep.enable = lib.mkDefault true;
starship.enable = lib.mkDefault true;
terraform.enable = lib.mkDefault true;
thunderbird.enable = lib.mkDefault true;
weather.enable = lib.mkDefault true;
};
services = {
mbsync.enable = lib.mkDefault true;
};
};
};
@@ -0,0 +1,26 @@
{
config,
lib,
...
}:
let
cfg = config.nmasur.presets.programs._1password;
in
{
options.nmasur.presets.programs._1password.enable = lib.mkEnableOption "1Password password manager";
config = lib.mkIf cfg.enable {
# Unfree packages are already permitted via the shared nixpkgs instance
# created in lib/default.nix (config.allowUnfree = true). Setting
# nixpkgs.config here would conflict with nixpkgs.pkgs being set externally.
programs._1password.enable = true;
programs._1password-gui = {
enable = true;
# Certain features, including CLI integration and system authentication support,
# require enabling PolKit integration on some desktop environments (e.g. Plasma).
# polkitPolicyOwners = [ "yourUsernameHere" ];
};
};
}
@@ -23,5 +23,19 @@ in
# Speeds up fish launch time on macOS
programs.fish.useBabelfish = true;
programs.fish.shellInit = ''
set -g __nixos_path_original $PATH
function __nixos_path_fix -d "fix PATH value"
set -l result (string split ":" $__nixos_path_original)
for elt in $PATH
if not contains -- $elt $result
set -a result $elt
end
end
set -g PATH $result
end
__nixos_path_fix
'';
};
}
@@ -33,7 +33,6 @@ in
};
global = {
brewfile = true; # Run brew bundle from anywhere
lockfiles = false; # Don't save lockfile (since running from anywhere)
};
};
@@ -0,0 +1,70 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (config.nmasur.settings) username;
cfg = config.nmasur.presets.services.daily-summary;
# Remove process urls in favor of using extention
# process_urls = pkgs.writers.writePython3Bin "process-urls" {
# libraries = [
# pkgs.python3Packages.requests
# pkgs.python3Packages.beautifulsoup4
# ];
# } (builtins.readFile ./process-urls.py);
# prompt = "Based on my browser usage for today from the markdown file located in /Users/${username}/Downloads/Sidebery/todays_urls.md, create or update a daily summary markdown file in the generated notes directory located in /Users/${username}/dev/personal/notes/generated/ with the filename format 'YYYY-MM-DD Daily Summary.md'. The resulting markdown file should use /Users/${username}/dev/personal/notes/templates/generated-summary.md as a format template, and it should summarize where I have spent my time today and highlight any notable links that I have visited. Please create markdown links to other relevant notes in /Users/${username}/dev/personal/notes/. If there is an existing markdown file for today, update it to include the newest information.";
prompt = "Based on my browser usage for today from the JSON file located in /Users/${username}/Downloads/firefox-history/history-YYYY-MM-DD.json, create or update a daily summary markdown file in the generated notes directory located in /Users/${username}/dev/personal/notes/generated/ with the filename format 'YYYY-MM-DD Daily Summary.md'. If the JSON file for today doesn't exist, exit. The resulting markdown file should use /Users/${username}/dev/personal/notes/templates/generated-summary.md as a format template, and it should summarize where I have spent my time today and highlight any notable pages that I have visited, using the titles of each URL in the JSON file for markdown links. Please create markdown links to other relevant notes in /Users/${username}/dev/personal/notes/ and explain why they are being referenced. If there is an existing markdown file for today, update it to include the newest information.";
in
{
options.nmasur.presets.services.daily-summary.enable = lib.mkEnableOption "Daily work summary";
config = lib.mkIf cfg.enable {
launchd.user.agents.daily-summary = {
# This replaces program and args entirely
# script = ''
# ${process_urls}/bin/process-urls /Users/${username}/Downloads/Sidebery/
# GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.gemini-cli}/bin/gemini --allowed-tools all --yolo --include-directories /Users/${username}/Downloads/Sidebery/ --include-directories /Users/${username}/dev/personal/notes/ "${prompt}"
# '';
script = ''
GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.gemini-cli}/bin/gemini --allowed-tools all --yolo --include-directories "/Users/${username}/Downloads/firefox-history/,/Users/${username}/dev/personal/notes/" "${prompt} | tee -a /Users/${username}/dev/personal/gemini-archive/daily-summary-logs/$(date +"%Y-%m-%d").log"
'';
path = [
pkgs.bash
pkgs.coreutils
];
serviceConfig = {
Label = "com.example.daily-summary";
# Runs the script through /bin/sh automatically
# RunAtLoad = true;
StartCalendarInterval = [
{
Hour = 4;
Minute = 45;
}
{
Hour = 6;
Minute = 0;
}
{
Hour = 9;
Minute = 0;
}
{
Hour = 11;
Minute = 0;
}
];
};
};
};
}
@@ -0,0 +1,115 @@
# Temporarily disabled in favor of using an extension to save history
import requests
from bs4 import BeautifulSoup
import json
import os
import sys
from datetime import datetime
from urllib.parse import urlparse
def find_urls(data):
urls = []
if isinstance(data, dict):
for key, value in data.items():
if key == 'url' and isinstance(value, str):
urls.append(value)
else:
urls.extend(find_urls(value))
elif isinstance(data, list):
for item in data:
urls.extend(find_urls(item))
return urls
def main():
if len(sys.argv) > 1:
base_dir = sys.argv[1]
if not os.path.isdir(base_dir):
print(f"Error: Directory '{base_dir}' not found.")
sys.exit(1)
else:
base_dir = '.'
today = datetime.now().strftime('%Y.%m.%d')
output_filename = 'todays_urls.md'
output_filepath = os.path.join(base_dir, output_filename)
url_titles = {}
print(f"Searching for files in '{base_dir}' "
f"starting with 'snapshot-{today}-'")
with open(output_filepath, 'w') as md_file:
md_file.write(f'# URLs from Sidebery Snapshots for '
f'{today.replace(".", "-")}\n\n')
files_processed = 0
for filename in sorted(os.listdir(base_dir)):
# Debugging print removed
if (filename.startswith(f'snapshot-{today}-')
and filename.endswith('.json')):
files_processed += 1
print(f"Processing file: "
f"{os.path.join(base_dir, filename)}")
# Extract and format date and time from filename
# Example: snapshot-2026.01.25-13.19.29.json
clean_filename = (filename.replace('snapshot-', '')
.replace('.json', ''))
date_time_parts = clean_filename.split('-', 1)
formatted_date = date_time_parts[0].replace('.', '-')
formatted_time = date_time_parts[1].replace('.', ':')
datetime_str = f"{formatted_date} {formatted_time}"
md_file.write(f'## {datetime_str}\n\n')
with open(os.path.join(base_dir, filename), 'r') as json_file:
try:
data = json.load(json_file)
urls = find_urls(data)
print(f" Found {len(urls)} URLs")
for url in urls:
if url not in url_titles:
try:
# Get title of URL
res = requests.get(
url,
timeout=10,
allow_redirects=True
)
soup = BeautifulSoup(
res.text,
'html.parser'
)
if soup.title and soup.title.string:
title = soup.title.string.strip()
else:
domain = urlparse(url).netloc
title = domain if domain else url
url_titles[url] = title
except requests.exceptions.InvalidSchema:
continue
except Exception:
domain = urlparse(url).netloc
title = domain if domain else url
url_titles[url] = title
if url in url_titles:
title = url_titles[url]
md_file.write(f'- [{title}]({url})\n')
md_file.write('\n')
except json.JSONDecodeError:
print(f" Error decoding JSON in {filename}")
md_file.write('- Error decoding JSON\n\n')
if files_processed == 0:
print("No files found for today.")
print(f"Processing complete. Output written to {output_filepath}")
if __name__ == '__main__':
main()
@@ -50,8 +50,12 @@ in
"/System/Applications/Mail.app"
"/Applications/zoom.us.app"
"/Applications/Ghostty.app"
"${pkgs.discord}/Applications/Discord.app"
# Discord comes from Homebrew on macOS: the nixpkgs bundle is modified
# in place, breaking its notarization seal, so macOS 26+ refuses to
# launch it ("damaged").
"/Applications/Discord.app"
"${pkgs.obsidian}/Applications/Obsidian.app"
"${pkgs.thunderbird}/Applications/Thunderbird.app"
];
};
};
@@ -25,85 +25,85 @@ in
enableKeyMapping = true; # Allows for skhd
};
defaults = {
NSGlobalDomain = {
# defaults = {
# NSGlobalDomain = {
# Set to dark mode
AppleInterfaceStyle = "Dark";
# # Set to dark mode
# AppleInterfaceStyle = "Dark";
# Don't change from dark to light automatically
# AppleInterfaceSwitchesAutomatically = false;
# # Don't change from dark to light automatically
# # AppleInterfaceSwitchesAutomatically = false;
# Enable full keyboard access for all controls (e.g. enable Tab in modal dialogs)
AppleKeyboardUIMode = 3;
# # Enable full keyboard access for all controls (e.g. enable Tab in modal dialogs)
# AppleKeyboardUIMode = 3;
# Expand save panel by default
NSNavPanelExpandedStateForSaveMode = true;
# # Expand save panel by default
# NSNavPanelExpandedStateForSaveMode = true;
# Expand print panel by default
PMPrintingExpandedStateForPrint = true;
# # Expand print panel by default
# PMPrintingExpandedStateForPrint = true;
# Replace press-and-hold with key repeat
ApplePressAndHoldEnabled = false;
# # Replace press-and-hold with key repeat
# ApplePressAndHoldEnabled = false;
# Set a fast key repeat rate
KeyRepeat = 2;
# # Set a fast key repeat rate
# KeyRepeat = 2;
# Shorten delay before key repeat begins
InitialKeyRepeat = 12;
# # Shorten delay before key repeat begins
# InitialKeyRepeat = 12;
# Disable autocorrect capitalization
NSAutomaticCapitalizationEnabled = false;
# # Disable autocorrect capitalization
# NSAutomaticCapitalizationEnabled = false;
# Disable autocorrect smart dashes
NSAutomaticDashSubstitutionEnabled = false;
# # Disable autocorrect smart dashes
# NSAutomaticDashSubstitutionEnabled = false;
# Disable autocorrect adding periods
NSAutomaticPeriodSubstitutionEnabled = false;
# # Disable autocorrect adding periods
# NSAutomaticPeriodSubstitutionEnabled = false;
# Disable autocorrect smart quotation marks
NSAutomaticQuoteSubstitutionEnabled = false;
# # Disable autocorrect smart quotation marks
# NSAutomaticQuoteSubstitutionEnabled = false;
# Disable autocorrect spellcheck
NSAutomaticSpellingCorrectionEnabled = false;
};
# # Disable autocorrect spellcheck
# NSAutomaticSpellingCorrectionEnabled = false;
# };
# Disable "Are you sure you want to open" dialog
LaunchServices.LSQuarantine = false;
# # Disable "Are you sure you want to open" dialog
# LaunchServices.LSQuarantine = false;
# Disable trackpad tap to click
trackpad.Clicking = false;
# # Disable trackpad tap to click
# trackpad.Clicking = false;
# Where to save screenshots
screencapture.location = "~/Downloads";
# # Where to save screenshots
# screencapture.location = "~/Downloads";
CustomUserPreferences = {
# Disable disk image verification
"com.apple.frameworks.diskimages" = {
skip-verify = true;
skip-verify-locked = true;
skip-verify-remote = true;
};
# Require password immediately after screen saver begins
"com.apple.screensaver" = {
askForPassword = 1;
askForPasswordDelay = 0;
};
};
# CustomUserPreferences = {
# # Disable disk image verification
# "com.apple.frameworks.diskimages" = {
# skip-verify = true;
# skip-verify-locked = true;
# skip-verify-remote = true;
# };
# # Require password immediately after screen saver begins
# "com.apple.screensaver" = {
# askForPassword = 1;
# askForPasswordDelay = 0;
# };
# };
CustomSystemPreferences = {
# CustomSystemPreferences = {
};
};
# };
# };
# Settings that don't have an option in nix-darwin
activationScripts.postActivation.text = ''
echo "Allow apps from anywhere"
SPCTL=$(spctl --status)
if ! [ "$SPCTL" = "assessments disabled" ]; then
sudo spctl --master-disable
fi
'';
# # Settings that don't have an option in nix-darwin
# activationScripts.postActivation.text = ''
# echo "Allow apps from anywhere"
# SPCTL=$(spctl --status)
# if ! [ "$SPCTL" = "assessments disabled" ]; then
# spctl --master-disable
# fi
# '';
};
@@ -18,29 +18,31 @@ in
nmasur.presets = {
programs = {
_1password.enable = lib.mkDefault true;
fish.enable = lib.mkDefault true;
homebrew.enable = lib.mkDefault true;
# homebrew.enable = lib.mkDefault true;
};
services = {
dock.enable = lib.mkDefault true;
finder.enable = lib.mkDefault true;
hammerspoon.enable = lib.mkDefault true;
menubar.enable = lib.mkDefault true;
# daily-summary.enable = lib.mkDefault false;
# dock.enable = lib.mkDefault true;
# finder.enable = lib.mkDefault true;
# hammerspoon.enable = lib.mkDefault true;
# menubar.enable = lib.mkDefault true;
nix.enable = lib.mkDefault true;
settings.enable = lib.mkDefault true;
user.enable = lib.mkDefault true;
};
};
homebrew.brews = [
"trash" # Delete files and folders to trash instead of rm
];
homebrew.casks = [
"scroll-reverser" # Different scroll style for mouse vs. trackpad
"notunes" # Don't launch Apple Music with the play button
"topnotch" # Darkens the menu bar to complete black
"ghostty" # Terminal application (not buildable on Nix on macOS)
];
# homebrew.brews = [
# "trash" # Delete files and folders to trash instead of rm
# ];
# homebrew.casks = [
# "scroll-reverser" # Different scroll style for mouse vs. trackpad
# "notunes" # Don't launch Apple Music with the play button
# "topnotch" # Darkens the menu bar to complete black
# "ghostty" # Terminal application (not buildable on Nix on macOS)
# ];
};
}
@@ -16,12 +16,12 @@ in
nmasur.profiles.base.enable = lib.mkDefault true;
homebrew.casks = [
"1password" # 1Password will not launch from Nix on macOS
# "gitify" # Git notifications in menu bar (downgrade manually from 4.6.1)
# "logitech-g-hub" # Mouse and keyboard management
"logitune" # Logitech webcam firmware
"meetingbar" # Show meetings in menu bar
];
# homebrew.casks = [
# "1password" # 1Password will not launch from Nix on macOS
# # "gitify" # Git notifications in menu bar (downgrade manually from 4.6.1)
# # "logitech-g-hub" # Mouse and keyboard management
# "logitune" # Logitech webcam firmware
# "meetingbar" # Show meetings in menu bar
# ];
};
}
@@ -125,7 +125,7 @@ in
services.cloudflare-dyndns.domains = [ hostnames.budget ];
# Backups
services.restic.backups.default.paths = [ "/var/lib/actual" ];
services.restic.backups.default.paths = [ "/var/lib/private/actual" ];
};
@@ -71,7 +71,7 @@ in
bazarr = {
enable = true;
};
jellyseerr.enable = true;
seerr.enable = true;
prowlarr.enable = true;
sabnzbd = {
enable = true;
@@ -244,7 +244,7 @@ in
handle = [
{
handler = "reverse_proxy";
upstreams = [ { dial = "localhost:${builtins.toString config.services.jellyseerr.port}"; } ];
upstreams = [ { dial = "localhost:${builtins.toString config.services.seerr.port}"; } ];
}
];
}
@@ -58,6 +58,7 @@ in
{
handler = "static_response";
status_code = "403";
body = "IP not allowed";
}
];
}
@@ -109,96 +110,95 @@ in
apps.tls.automation.policies = cfg.tlsPolicies;
# Setup logging to journal and files
logging.logs =
{
# System logs and catch-all
# Must be called `default` to override Caddy's built-in default logger
default = {
level = "INFO";
encoder.format = "console";
writer = {
output = "stderr";
};
exclude = (map (hostname: "http.log.access.${hostname}") (builtins.attrNames hostname_map)) ++ [
"http.log.access.${default_logger_name}"
];
logging.logs = {
# System logs and catch-all
# Must be called `default` to override Caddy's built-in default logger
default = {
level = "INFO";
encoder.format = "console";
writer = {
output = "stderr";
};
# This is for the default access logs (anything not captured by hostname)
other = {
level = "INFO";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/other.log";
roll = true;
inherit roll_size_mb;
};
include = [ "http.log.access.${default_logger_name}" ];
};
# This is for using the Caddy API, which will probably never happen
admin = {
level = "INFO";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/admin.log";
roll = true;
inherit roll_size_mb;
};
include = [ "admin" ];
};
# This is for TLS cert management tracking
tls = {
level = "INFO";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/tls.log";
roll = true;
inherit roll_size_mb;
};
include = [ "tls" ];
};
# This is for debugging
debug = {
level = "DEBUG";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/debug.log";
roll = true;
roll_keep = 1;
inherit roll_size_mb;
};
};
}
# These are the access logs for individual hostnames
// (lib.mapAttrs (name: value: {
exclude = (map (hostname: "http.log.access.${hostname}") (builtins.attrNames hostname_map)) ++ [
"http.log.access.${default_logger_name}"
];
};
# This is for the default access logs (anything not captured by hostname)
other = {
level = "INFO";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/${name}-access.log";
filename = "${config.services.caddy.logDir}/other.log";
roll = true;
inherit roll_size_mb;
};
include = [ "http.log.access.${default_logger_name}" ];
};
# This is for using the Caddy API, which will probably never happen
admin = {
level = "INFO";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/admin.log";
roll = true;
inherit roll_size_mb;
};
include = [ "admin" ];
};
# This is for TLS cert management tracking
tls = {
level = "INFO";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/tls.log";
roll = true;
inherit roll_size_mb;
};
include = [ "tls" ];
};
# This is for debugging
debug = {
level = "DEBUG";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/debug.log";
roll = true;
roll_keep = 1;
inherit roll_size_mb;
};
};
}
# These are the access logs for individual hostnames
// (lib.mapAttrs (name: value: {
level = "INFO";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/${name}-access.log";
roll = true;
inherit roll_size_mb;
};
include = [ "http.log.access.${name}" ];
}) hostname_map)
# We also capture just the errors separately for easy debugging
// (lib.mapAttrs' (name: value: {
name = "${name}-error";
value = {
level = "ERROR";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/${name}-error.log";
roll = true;
inherit roll_size_mb;
};
include = [ "http.log.access.${name}" ];
}) hostname_map)
# We also capture just the errors separately for easy debugging
// (lib.mapAttrs' (name: value: {
name = "${name}-error";
value = {
level = "ERROR";
encoder.format = "json";
writer = {
output = "file";
filename = "${config.services.caddy.logDir}/${name}-error.log";
roll = true;
inherit roll_size_mb;
};
include = [ "http.log.access.${name}" ];
};
}) hostname_map);
};
}) hostname_map);
}
);
};
@@ -36,6 +36,11 @@ in
};
};
# metadata.db lives in /var/lib/calibre-web-db and is symlinked into the
# library dir; ProtectSystem=strict in the upstream module blocks writes
# through symlinks unless the real target path is also listed.
systemd.services.calibre-web.serviceConfig.ReadWritePaths = [ "/var/lib/calibre-web-db" ];
# Allow web traffic to Caddy
nmasur.presets.services.caddy.routes = [
{
@@ -173,5 +173,16 @@ in
# Enable the home-made service that we created for non-proxied records
services.cloudflare-dyndns-noproxy.enable = true;
# Create certs when not using proxy
secrets.cloudflare-dns-api-prefixed = {
source = ./cloudflare-api.age;
dest = "${config.secretsDirectory}/cloudflare-dns-api-prefixed";
prefix = "CLOUDFLARE_DNS_API_TOKEN=";
};
security.acme = {
acceptTerms = true;
defaults.email = "acme@${config.nmasur.presets.programs.msmtp.domain}";
};
};
}
@@ -0,0 +1,17 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBxUDhh
SkpvdDNNS04yNk0yNGtqRlRXT2V2QVVScUpVd3RrMWUvYnVyRlJFCktoZUw1VnJI
SnJ4dDBZK1ROUDRhWm1EaExKZUJmM1NrcUZ0elRtZXZFSTQKLT4gc3NoLWVkMjU1
MTkgWXlTVU1RICtHZGEyUm1lelBEWVFIaCsxSmx0S2V3Yk5qREVRaDdtSkp6ckcz
UDB5aWcKUFNoeU1YQjhaTG1zTEZBZElkUUpUcXVXdzgrUENUajNqRytMMFZVTzNm
NAotPiBzc2gtZWQyNTUxOSBuanZYNUEgNjNoM0U0ZnE5dzNCenRWZmVkRVdXOGFa
cmFjSWtFOUVXSUdzTFNlWGhUSQpvNnk3NXdGZkhtaGRJRmd3czFNUHh3OUlTSGpG
YUJjT1Baa3dRdzF4V2EwCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBXcnNQcnY5MnJ3
b3hLM01PYXNwa2tPTFVRMC96QmZZTkdDNktWZFRHOVE4Ck1PZUlLcXN6Rnh3UnlS
dVkwODJ2QjBXWUZOUTdBU01DYjFSemJxY1haVVUKLT4gc3NoLWVkMjU1MTkgejFP
Y1p3IEQwZTA3WFkwMWJjbXhMRDlFaEJjMVhuZFpTVTFsaktqWHFXN0J1ajJHMmMK
bXRTdTI2N1o4ZXhYcG9kWCtMNjJCMG0zeUpqMS95SC9VdTRNdUY3ZFVVSQotLS0g
OXJFMUkvOXkvdStrU1dBSEhhNnE0NU56SHE0UkUvbXhwcWRCdkdxdXN3SQpXUnGQ
XJT+KXvM80eW2z/je+0kq9Yh+DkgcWtUpq2k2WyzIue9AifKco9CQ4AsBtKKoxO9
SxjY/7b0HRwoXS578gwTxJD0j9sBRsz4s64IeiepKn01KcMTgo1TxYzB7JgM
-----END AGE ENCRYPTED FILE-----
@@ -28,9 +28,22 @@ in
before = [ "grafana.service" ];
};
secrets.grafana-secret-key = {
source = ./grafana-secret-key.age;
dest = "${config.secretsDirectory}/grafana-secret-key";
owner = "grafana";
group = "grafana";
permissions = "0440";
};
systemd.services.grafana-secret-key-secret = {
requiredBy = [ "grafana.service" ];
before = [ "grafana.service" ];
};
services.grafana = {
enable = true;
settings = {
security.secret_key = "$__file{${config.secrets.grafana-secret-key.dest}}";
server = {
domain = hostnames.metrics;
http_addr = "127.0.0.1";
@@ -773,12 +786,12 @@ in
{
matcher = {
id = "byName";
options = "localhost:${builtins.toString config.services.jellyseerr.port}";
options = "localhost:${builtins.toString config.services.seerr.port}";
};
properties = [
{
id = "displayName";
value = "Jellyseerr";
value = "Seerr";
}
{
id = "links";
@@ -29,7 +29,7 @@ in
caps
)
(defalias
escctrl (tap-hold-press 1000 1000 esc lctrl)
escctrl (tap-hold-press 200 200 esc lctrl)
)
(deflayer base
@escctrl
@@ -0,0 +1,43 @@
{ config, lib, ... }:
let
inherit (config.nmasur.settings) hostnames;
cfg = config.nmasur.presets.services.mealie;
in
{
options.nmasur.presets.services.mealie.enable = lib.mkEnableOption "mealie recipe manager";
config = lib.mkIf cfg.enable {
services.mealie = {
enable = true;
port = 9099;
database.createLocally = true;
listenAddress = "127.0.0.1";
settings = {
TOKEN_TIME = 7200; # Hours for login to last (300 days)
};
};
nmasur.presets.services.caddy.routes = [
{
match = [ { host = [ hostnames.recipes ]; } ];
handle = [
{
handler = "reverse_proxy";
upstreams = [ { dial = "localhost:${toString config.services.mealie.port}"; } ];
}
];
}
];
# Configure Cloudflare DNS to point to this machine
services.cloudflare-dyndns.domains = [ hostnames.recipes ];
# Point localhost to the local domain
networking.hosts."127.0.0.1" = [ hostnames.recipes ];
};
}
@@ -0,0 +1,43 @@
# murmur is a Mumble server for hosting voice chat
{
config,
lib,
...
}:
let
inherit (config.nmasur.settings) hostnames;
cfg = config.nmasur.presets.services.murmur;
in
{
options.nmasur.presets.services.murmur.enable =
lib.mkEnableOption "murmur (mumble) voice chat service";
config = lib.mkIf cfg.enable {
services.murmur = {
enable = true;
users = 50; # Max concurrent users
bonjour = false; # Auto-connect LAN
registerUrl = "https://${hostnames.mumble}";
registerName = "Mumble";
environmentFile = null;
sslKey = "${config.security.acme.certs."${hostnames.mumble}".directory}/key.pem";
sslCert = "${config.security.acme.certs."${hostnames.mumble}".directory}/fullchain.pem";
openFirewall = true;
};
# Configure Cloudflare DNS to point to this machine
nmasur.presets.services.cloudflare.noProxyDomains = [ hostnames.mumble ];
security.acme.certs."${hostnames.mumble}" = {
dnsProvider = "cloudflare";
credentialFiles = {
CLOUDFLARE_API_KEY_FILE = config.secrets.cloudflare-dns-api-prefixed.dest;
};
group = config.services.murmur.group;
};
};
}
@@ -2,7 +2,6 @@
# together with triggers.
{ config, lib, ... }:
let
inherit (config.nmasur.settings) hostnames;
cfg = config.nmasur.presets.services.n8n;
@@ -18,18 +17,14 @@ in
services.n8n = {
enable = true;
webhookUrl = "https://${hostnames.n8n}";
settings = {
listen_address = "127.0.0.1";
port = 5678;
environment = {
N8N_LISTEN_ADDRESS = "127.0.0.1";
N8N_PORT = 5678;
N8N_EDITOR_BASE_URL = "https://${hostnames.n8n}";
N8N_RESTRICT_FILE_ACCESS_TO = "/var/lib/n8n";
};
};
systemd.services.n8n.environment = {
N8N_EDITOR_BASE_URL = config.services.n8n.webhookUrl;
};
# Configure Cloudflare DNS to point to this machine
services.cloudflare-dyndns.domains = [ hostnames.n8n ];
@@ -40,7 +35,9 @@ in
handle = [
{
handler = "reverse_proxy";
upstreams = [ { dial = "localhost:${builtins.toString config.services.n8n.settings.port}"; } ];
upstreams = [
{ dial = "localhost:${toString config.services.n8n.environment.N8N_PORT}"; }
];
}
];
}
@@ -17,7 +17,7 @@ in
services.nextcloud = {
enable = true;
package = pkgs.nextcloud31; # Required to specify
package = pkgs.nextcloud33; # Required to specify
configureRedis = true;
datadir = "/data/nextcloud";
database.createLocally = true;
@@ -3,6 +3,7 @@
{
config,
lib,
pkgs,
...
}:
@@ -46,6 +47,9 @@ in
) cfg.publicKeys;
# Add terminfo for SSH from popular terminal emulators
environment.enableAllTerminfo = true;
environment.systemPackages = [
pkgs.ghostty.terminfo
pkgs.kitty.terminfo
];
};
}
@@ -5,12 +5,12 @@
let
inherit (config.nmasur.settings) hostnames;
cfg = config.nmasur.presets.services.stalwart-mail;
cfg = config.nmasur.presets.services.stalwart;
in
{
options.nmasur.presets.services.stalwart-mail = {
options.nmasur.presets.services.stalwart = {
enable = lib.mkEnableOption "Stalwart mail and contacts server";
port = lib.mkOption {
type = lib.types.port;
@@ -21,7 +21,7 @@ in
config = lib.mkIf cfg.enable {
services.stalwart-mail = {
services.stalwart = {
enable = true;
settings = {
server.listener.http = {
@@ -34,6 +34,7 @@ in
};
};
};
services.stalwart.stateVersion = config.system.stateVersion;
# Configure Cloudflare DNS to point to this machine
services.cloudflare-dyndns.domains = [ hostnames.contacts ];

Some files were not shown because too many files have changed in this diff Show More