367 Commits

Author SHA1 Message Date
100b8e40f9 [nix-darwin] Bump flake.lock, add claude-code
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-09 11:57:09 -08:00
ea4a577076 [NixOS] Bump flake.lock, make railbird-sf full 2025-08-23 21:02:15 +00:00
7d15907ee3 [NixOS] Bump claude, add mcp-language-server 2025-08-23 13:24:29 -07:00
9c5dab9ecc Update git-sync-rs hash 2025-08-16 14:10:25 -07:00
8b9c71b77e [NixOS] Use git-sync-rs 2025-08-16 12:55:08 -07:00
b3c3a7249c [NixOS] Add mcp servers 2025-08-15 10:36:06 -06:00
82f3a0eda3 [NixOS] Bump rumno patch hash 2025-08-14 14:16:02 -06:00
7d603e3d4f [NixOS] Small tweaks to flake definitions for xmonad and taffybar 2025-08-14 14:02:27 -06:00
612c0ef78d [Emacs] Remove repeating in agenda for now 2025-08-14 14:00:58 -06:00
db7e115542 [NixOS] Force Brightness management to work 2025-08-14 03:26:36 -06:00
7c25d8d578 [NixOS] Bump rumno patch hash 2025-08-14 02:35:13 -06:00
37070171c2 [NixOS] Better integration with rumno in brightness.sh 2025-08-14 02:04:57 -06:00
5dc82b90e2 [NixOS] Bump rumno patch hash 2025-08-14 01:39:47 -06:00
2cc0a54e07 [NixOS] Add gh 2025-08-14 01:39:38 -06:00
f9d7375f7b [NixOS] Finish integrating rumno 2025-08-14 00:43:19 -06:00
4d714d4416 [xmonad] Bump submodules 2025-08-14 00:26:44 -06:00
96f35ab9d6 [NixOS] Enable rumno service 2025-08-13 23:44:19 -06:00
f092bc782e [NixOS] Use evalConfig/applyPatches to patch nixpkgs 2025-08-13 21:50:02 -06:00
e84d333ea6 [NixOS] Only use backlight class in brightness.sh 2025-08-13 21:38:28 -06:00
05ab80c13f [NixOS] Modify brightness.sh to use brightnessctl 2025-08-13 21:36:34 -06:00
8a972a72f3 [taffybar] Bump 2025-08-13 21:26:07 -06:00
01081d25c7 [tmux] Automatically rename sessions 2025-08-13 21:25:33 -06:00
25a1afa317 [NixOS] Add brightnessctl and relevant permissions to user groups 2025-08-13 21:25:33 -06:00
17efe79dfa [NixOS] Bump flake.lock 2025-08-13 21:25:33 -06:00
90f7a5dc90 [NixOS] Install codex 2025-08-08 14:10:43 -06:00
6dc320ff1c [Emacs] claude-code-ide 2025-08-08 14:10:08 -06:00
ff4c9c8e9a [hyprland] Tweaks, still not working 2025-08-08 14:09:54 -06:00
2bcd5dc9bd [NixOS] Bump flake.lock 2025-08-07 19:13:18 -06:00
e130df3c70 [NixOS] Add overlay for claude code 2025-08-07 19:12:48 -06:00
307710e7a5 [NixOS] Remove nativeSystemd and add ryzen-shine-wsl 2025-07-19 18:10:36 +00:00
4349671e14 [taffybar] Bump submodule 2025-07-19 18:10:36 +00:00
33e4758389 [NixOS] Add ryzen-shine-wsl 2025-07-19 18:10:36 +00:00
0004a1d715 [NixOS] Enable hyprland 2025-07-15 15:32:04 -06:00
abfc369407 [NixOS] Add yarn and prettier 2025-07-15 12:43:39 -06:00
9d61a15337 [NixOS] Remove strong swan 2025-07-14 18:08:16 -06:00
733beb094b [NixOS] Add yarn 2025-07-14 18:07:29 -06:00
4848a20a8d [NixOS] Bump flake.lock 2025-07-09 11:24:34 -06:00
24346c9e88 [Emacs] Add vundo 2025-07-09 11:10:54 -06:00
bb3ba5d702 Remove assumption that user is imalison 2025-07-08 23:35:01 -06:00
77d0a8504e [NixOS] Adell updates 2025-07-02 11:34:44 -06:00
6ec03f7821 [NixOS] Fix k3s etcd flag 2025-07-02 11:33:54 -06:00
d4db3b81a8 [NixOS] Increase etcd db size in k3s 2025-07-02 11:25:02 -06:00
69f982526d [Emacs] Remove overseer 2025-06-14 13:15:34 -06:00
c952702742 [NixOS] Try another k3s nvidia-container-toolkit fix 2025-06-13 14:42:37 -06:00
5963113964 [NixOS] Oops move container toolkit enable 2025-06-13 13:45:51 -06:00
4cc07c65ae [NixOS] Reenable nvidia-container-toolkit 2025-06-13 13:45:06 -06:00
5c2b810a4f [NixOS] Fix k3s? 2025-06-13 13:17:24 -06:00
33ca6d490a [NixOS] Configure runtime and grpc in containedConfigTemplate 2025-06-13 12:59:59 -06:00
2acc6d25c7 [NixOS] Remove label, its not a thing 2025-06-13 00:22:04 -06:00
a74e5ab4b6 [NixOS] Bump flake.lock 2025-06-13 00:20:00 -06:00
39af365839 [NixOS] Set container-runtime-endpoint in k3s 2025-06-13 00:18:45 -06:00
973c5dc134 [NixOS] Bump flake.lock 2025-06-07 16:05:17 -06:00
a244ee2223 [NixOS] Add just to gitea-runner environment 2025-06-01 01:25:06 -06:00
1eaf5166d9 [NixOS] Add uv 2025-06-01 01:24:30 -06:00
a081f743a5 [NixOS] Reenable tzupdate 2025-06-01 01:24:30 -06:00
aa19cc3204 [NixOS] Bump to plasma 6 2025-05-30 10:46:52 -06:00
8d92c45ffe [NixOS] Bump flake.lock 2025-05-28 17:08:34 -06:00
96c74ac95e [NixOS] Add windsurf 2025-05-28 17:08:25 -06:00
b5ffc833fb [NixOS] Try to fix railbird bucket mount timeout 2025-05-21 17:00:04 -06:00
e18c41cf90 [NixOS] Bump flake.lock 2025-05-21 16:52:35 -06:00
291e77b4b4 [NixOS] Don't override dependencies for taffybar overlay 2025-05-15 12:28:58 -07:00
5cbf3ac32e [NixOS] Bump nixpkgs 2025-05-07 09:32:21 -06:00
e7d06c8b91 [NixOS] Add another will key 2025-05-07 09:30:43 -06:00
07a367dc67 [NixOS] Restore obsidian to kat 2025-05-07 09:30:14 -06:00
a0e6ecd222 [NixOS] Enable accounts daemon in plasma 2025-04-25 13:45:04 -06:00
331ce9eec5 [NixOS] Re-enable nixified-ai 2025-04-25 13:42:48 -06:00
3ed35fd553 [NixOS] Reenable heroic games 2025-04-25 13:42:13 -06:00
2df1d71367 [NixOS] Fix key duplication 2025-03-10 15:51:28 -06:00
5341a75a08 [NixOS] Switch to plasma6 2025-03-10 11:21:31 -06:00
d33fc584d0 [NixOS] Allow "electron-32.3.3" 2025-03-10 07:44:44 -06:00
375a7ed910 [NixOS] Fix okular 2025-03-10 07:39:35 -06:00
81e88f6610 [NixOS] Bump emacs version 2025-03-10 07:39:22 -06:00
3da6262856 [NixOS] Fix kleopatra 2025-03-10 07:34:27 -06:00
f8cb82fd60 [NixOS] Use qt6 dolphin 2025-03-10 07:33:00 -06:00
3a3dbad845 [NixOS] Bump flake 2025-03-10 07:31:32 -06:00
017d47ca41 [NixOS] Z-wave js works 2025-02-20 00:52:49 -07:00
78046685f9 [NixOS] Fix keys for zwave json 2025-02-19 22:35:50 -07:00
2046f360a6 [NixOS] Add z-wave js 2025-02-19 20:33:45 -07:00
e70146fd1d [NixOS] Enable home-assistant on biskcomp 2025-02-19 20:09:53 -07:00
ea9d4145d4 [NixOS] Bump flake inputs and fix home manager fallout from module rename 2025-02-19 20:09:20 -07:00
d1814a3072 [NixOS] Fix org-api basic auth 2025-02-18 21:10:41 -07:00
08db2c3a75 [NixOS] Set ota-provider-directory for matter-server 2025-02-07 18:30:32 -07:00
2c384fb003 [NixOS] Add notification sound for wyoming satellite 2025-02-07 18:30:26 -07:00
8ae53c14bd Add obsidian to kat nix 2025-02-07 11:50:29 -07:00
b189e1fa3e [NixOS] Add tts via coqui 2025-02-07 01:24:27 -07:00
107d3cfdb3 [NixOS] Use pulseaudio 2025-02-06 22:53:02 -07:00
e31f684f7b [NixOS] Enable wyoming for jay-lenovo 2025-02-06 19:49:58 -07:00
ab87bb325f [NixOS] Tweak wyoming service names 2025-02-06 19:49:14 -07:00
fd9ceb1dda [NixOS] Use the turbo model for faster-whisper 2025-02-06 17:51:24 -07:00
6fe2f72025 [NixOS] Fix issue with propagatedBuildInputs for wyoming-satellite 2025-02-06 13:27:20 -07:00
94e3c08f88 [NixOS] Reindent strixi-minaj 2025-02-06 13:00:37 -07:00
7138b67f59 [NixOS] Add voice assistant integrations for home assistant 2025-02-06 12:39:15 -07:00
1958d2ebf7 [Emacs] Add swift mode 2025-02-06 12:23:50 -07:00
a744a8fc2d [NixOS] Fix missing propagatedBuildInputs 2025-02-06 12:13:09 -07:00
30d50d72ec [NixOS] Bump flake.lock 2025-02-06 12:04:53 -07:00
a938447b8a [NixOS] Explicitly enable pipewire 2025-02-06 12:04:29 -07:00
9408eeff52 [NixOS] Fix mic for wyoming-satellite 2025-02-06 11:23:42 -07:00
947eaad2f1 [NixOS] Add wyoming protocol setup for home assistant voice assistant 2025-02-06 03:51:40 -07:00
eb6f67559e [NixOS] Enable external access to home assistant 2025-02-06 02:29:57 -07:00
166c3a24ea [NixOS] Fix google home service account key 2025-02-06 01:44:55 -07:00
3f3de17097 [NixOS] Add host key for justin-bieber-creek 2025-02-06 01:32:04 -07:00
d7ceec572f [NixOS] Add google service account for home assistant integration 2025-02-06 01:14:11 -07:00
50bb8561d8 [NixOS] Disable attestation verification in chip/matter-server for Home Assistant 2025-01-29 21:56:34 -07:00
6ece92b75d [NixOS] Set up virt-manager 2025-01-29 21:27:48 -07:00
accb330589 [NixOS] Configure otbr matter server and more for Home Assistant 2025-01-29 00:51:36 -07:00
9d8777e85c [NixOS] Add extensions that fix home-assistant to justin-bieber-creek 2025-01-19 17:35:50 +00:00
6b7a428145 [NixOS] Use my-unstable 2025-01-17 12:33:13 -07:00
6278da83fa Revert "[NixOS] Add matter_server python component"
This reverts commit bf5009fdd4.
2025-01-17 02:04:06 -07:00
bf5009fdd4 [NixOS] Add matter_server python component 2025-01-17 02:02:13 -07:00
4f573be120 [NixOS] More home-assistant fix 2025-01-17 01:59:55 -07:00
aba47c6ce9 [NixOS] Fix home assistant config 2025-01-17 01:57:33 -07:00
14d24534f9 [NixOS] Add home-assistant components needed to complete onboarding 2025-01-17 01:53:47 -07:00
e1752368b4 [NixOS] Xmonad on justin-bieber-creek 2025-01-17 08:52:23 +00:00
ce9c752cbe [NixOS] Set some annoying home-assistant defaults 2025-01-17 01:51:58 -07:00
0b1591642b [NixOS] Remove configuration for home assistant 2025-01-17 01:39:25 -07:00
998099ae10 [NixOS] Set int for elevation 2025-01-17 01:38:04 -07:00
d01659c1b0 [NixOS] Add the matter-server to justin-bieber-creek 2025-01-17 01:20:56 -07:00
251f03838b [NixOS] More adele -> adell fallout 2025-01-17 00:54:39 -07:00
2a303c445c [taffybar] Change adele -> adele in taffybar 2025-01-15 00:20:10 -07:00
7515a871a7 [NixOS] Finish exposing org-mode api on biskcomp 2025-01-03 01:02:09 -07:00
1ead310c05 [NixOS] Add org-api-passwords 2025-01-03 00:21:28 -07:00
76253e34ef [NixOS] Enable emacs org-api server 2025-01-02 23:51:20 -07:00
bbb0017bee [Emacs] Add org-api code 2025-01-02 23:40:27 -07:00
718cf756b9 [Emacs] Generalize kat's org-mode journal system so I can use it too 2025-01-02 16:07:40 -07:00
05e135d61d [NixOS] Remove redundant disableRegistration setting for gitea 2025-01-01 14:40:01 -07:00
9a66f3fc5a [NixOS] Disable ghostty for now 2025-01-01 14:16:18 -07:00
0d3b15c072 [NixOS] Fix nixified.ai to use comfyui 2025-01-01 13:58:27 -07:00
ebc7c2ede5 [NixOS] Attempt to disable registration in gitea 2025-01-01 13:24:59 -07:00
8035ae008b [NixOS] Disable k3s on biskcomp 2025-01-01 13:12:35 -07:00
a6d9bdb7a9 [NixOS] Replace shutter with flameshot (for screenshots) 2025-01-01 12:20:30 -07:00
4f4168768d [NixOS] Enable vaultwarden admin page 2025-01-01 12:03:48 -07:00
eb61989a59 [NixOS] Backup vaultwarden 2025-01-01 11:55:23 -07:00
3dcb49fc1b [NixOS] Disable discourse 2025-01-01 11:39:52 -07:00
442ed2aca4 [NixOS] Enable podman 2024-12-31 23:50:40 -07:00
5df6c5aecf [Emacs] Use new version of org-mode branch 2024-12-31 23:50:40 -07:00
884a8b31ae [Emacs] Reenable habits 2024-12-31 23:02:58 -07:00
fef852f4bf [NixOS] Remove any cdi hook 2024-12-31 03:49:35 -07:00
8453cc92b6 [NixOS] Temporarily remove create-symlinks hooks 2024-12-31 03:47:54 -07:00
e273e34662 [NixOS] Trap errors 2024-12-31 02:22:42 -07:00
b681e4b5b4 [NixOS] Fix executable permission 2024-12-31 02:18:01 -07:00
24c5bb3ec6 [NixOS] Try simple no errors nvidia-cdi-hook 2024-12-31 02:15:10 -07:00
70c5c011f8 [NixOS] Add some buildInputs to nvidia-container-toolkit overlay 2024-12-31 01:43:50 -07:00
fcae542755 [NixOS] More tweaks 2024-12-31 01:34:30 -07:00
0e20737cb3 [NixOS] Allow nvidia-container-toolkit failure 2024-12-31 01:27:07 -07:00
58ea719bed [NixOS] Remove program wrap 2024-12-31 01:17:16 -07:00
15ffb7355e [NixOS] Remove stracing from nvidia-container-toolkit 2024-12-31 01:09:46 -07:00
ca1b22ba98 [NixOS] Wrap nvidia-cdi-hook with LD_LIBRARY_PATH setting 2024-12-31 01:09:26 -07:00
d2add34317 [NixOS] Run ldd on nvidia-cdi-hook 2024-12-31 00:34:40 -07:00
5da32bceea [NixOS] Move nvidia-container-toolkit overlay into its own file and disable 2024-12-30 23:54:39 -07:00
92c2d613af [NixOS] strace nvidia-container-toolkit 2024-12-30 23:47:23 -07:00
c1a2c404e9 [NixOS] Add --debug flag to nvidia-cdi-hook automatically 2024-12-30 23:18:28 -07:00
5b3915ad27 [NixOS] Build runc from source 2024-12-30 23:07:09 -07:00
2d4c1df31f [NixOS] Log runc outputs 2024-12-30 20:31:16 -07:00
0f1895c5d2 [NixOS] Add overlay to log all runc invocations 2024-12-30 20:11:59 -07:00
990b7f0180 Restore environment override 2024-12-30 18:33:23 -07:00
a895c2471d [NixOS] A few more logging nvidia-container-toolkit tweaks 2024-12-30 18:20:46 -07:00
8fd220c919 Debug nvidia-container-toolkit commands 2024-12-30 18:11:01 -07:00
626d719e16 [NixOS] Bump nvidia container toolkit 2024-12-30 16:57:29 -07:00
7873981341 Revert "[NixOS] Remove a possibly unnecessary addition to nvidia-container-toolkit-cdi-generator"
This reverts commit fca6d487f0.
2024-12-30 16:47:09 -07:00
fca6d487f0 [NixOS] Remove a possibly unnecessary addition to nvidia-container-toolkit-cdi-generator 2024-12-30 16:39:31 -07:00
e297235517 [NixOS] Try to fix containerdconfig 2024-12-30 15:38:25 -07:00
29ab9150f8 [NixOS] Put k3s-containerd config in the right place 2024-12-30 15:36:29 -07:00
953d57be15 [NixOS] Debug k3s containerd 2024-12-30 15:20:54 -07:00
7b63af8aae [NixOS] Bump flake.lock 2024-12-30 14:26:33 -07:00
697d216397 [NixOS] Reenable serviec that enabled cdi for k3s containerd
enabel
2024-12-30 01:25:53 -07:00
794f3c1eb8 [NixOS] Remove container runtime endpoint setting 2024-12-30 01:06:17 -07:00
4a8e077b5d Reapply "[NixOS] Use plugins path"
This reverts commit 7d76728651.
2024-12-30 00:59:17 -07:00
7d76728651 Revert "[NixOS] Use plugins path"
This reverts commit 957b94e1cc.
2024-12-30 00:56:02 -07:00
957b94e1cc [NixOS] Use plugins path 2024-12-30 00:25:10 -07:00
2445e6e7d6 [NixOS] Back to /opt/cni/bin 2024-12-29 23:45:17 -07:00
f5ddd2e4c5 [NixOS] Remove bin dir again 2024-12-29 23:33:50 -07:00
f071068e6d [NixOS] Expose flannel plugins 2024-12-29 19:53:13 -07:00
c8ffe51c66 [NixOS] Remove external flannel 2024-12-29 19:45:16 -07:00
e12d261a9f [NixOS] Remove cni binary directory 2024-12-29 19:44:37 -07:00
2557a2b538 [NixOS] Enable flannel 2024-12-29 19:20:40 -07:00
ea3cfe9604 Revert "[NixOS] Switch to gnome as backup desktop environment"
This reverts commit 9fbdead63f.
2024-12-29 19:12:14 -07:00
8f3802a010 [NixOS] Add more cni plugins to containers 2024-12-29 18:56:52 -07:00
4d42e5c89d [NixOS] Use /opt/cni/bin as dir for network plugins 2024-12-29 18:10:45 -07:00
b8872e957f [NixOS] Add bin to the plugins path 2024-12-29 17:58:31 -07:00
fe8b6caf3c [NixOS] Use custom cni directory 2024-12-29 17:46:46 -07:00
3f0311b127 [NixOS] Add calico plugin 2024-12-29 17:20:00 -07:00
0b56680911 [NixOS] Use calico cni plugin 2024-12-29 17:17:03 -07:00
9fbdead63f [NixOS] Switch to gnome as backup desktop environment 2024-12-29 15:59:41 -07:00
5db03a0695 [NixOS] Disable rabbitmq by default 2024-12-29 15:48:16 -07:00
c697b5684a [NixOS] Make the unencrypted ryzen-shine permanent 2024-12-29 15:40:59 -07:00
95bd8dd280 [NixOS] Add ghostty 2024-12-29 15:22:01 -07:00
aa9d7b2d88 [NixOS] Temporarily diable nixified-ai 2024-12-29 14:11:28 -07:00
a1b5f3838d [NixOS] More disables 2024-12-29 14:09:50 -07:00
fe710dac80 [NixOS] Disable clipit 2024-12-29 13:07:44 -07:00
18aee952be [NixOS] Fix biskcomp 2024-12-29 13:06:54 -07:00
728e5ee02f [NixOS] Disable shutter 2024-12-29 13:06:27 -07:00
cb9f478cbc [NixOS] Fail to fix discourse-admin-password 2024-12-29 12:23:01 -07:00
6654470109 [NixOS] Set permissions on discourse-admin-password 2024-12-29 12:21:05 -07:00
4913622bad [NixOS] Remove nixified-ai setting from jimi-hendnix 2024-12-29 12:16:33 -07:00
ed9bed85d9 Remove taffybar follows flake deps 2024-12-29 12:13:14 -07:00
8881b704ca Revert "[NixOS] Disable a bunch of stuff to make ryzen-shine-unencrypted work"
This reverts commit 354b54b772.
2024-12-29 12:11:44 -07:00
89bd7e9a4c [NixOS] Remove enable nvidia 2024-12-29 01:55:16 -07:00
354b54b772 [NixOS] Disable a bunch of stuff to make ryzen-shine-unencrypted work 2024-12-28 20:30:34 -07:00
7e445e7fd3 [NixOS] Mount nvidia executables 2024-12-28 19:58:07 -07:00
a0f75a0f4d [NixOS] Add ryzen-shine-unencrypted 2024-12-28 18:09:06 -07:00
04b7672f0e [Emacs] Add variable to control org repeating files 2024-12-28 17:36:13 -07:00
b643092237 [NixOS] Remove unused imports 2024-12-28 17:35:52 -07:00
f4b753d750 [NixOS] Set container runtime endpoint 2024-12-23 17:48:40 -07:00
0d14cc41a8 [NixOS] Bring back dccsillag picom 2024-12-23 14:36:49 -07:00
3904b09b8c [NixOS] Add discourse secret key base 2024-12-22 23:48:19 -07:00
36e43c3f27 [NixOS] Set admin email 2024-12-22 19:47:19 -07:00
e178958e4f [NixOS] Ignore postgres version discourse 2024-12-22 19:44:59 -07:00
e89501f139 [NixOS] Enable discourse on biskcomp 2024-12-22 18:11:37 -07:00
7f3fe70cac [NixOS] Fix adell 2024-12-18 00:52:28 -07:00
8acb093f34 [NixOS] enableRedistributableFirmware on justin-bieber-creek 2024-12-17 00:20:13 -07:00
d2ff285109 [NixOS] Add iwlwifi to justin-bieber-creek 2024-12-17 00:16:29 -07:00
80c6ec0080 [NixOS] No source code pro nerd font 2024-12-16 17:23:16 -07:00
af706c8f40 [NixOS] Fix nerd fonts 2024-12-16 17:21:36 -07:00
01d2d1d31b [NixOS] Bump flake.lock 2024-12-12 01:02:12 -07:00
df045e44b5 [NixOS] Use nvidia_x11 kernel packages 2024-12-12 01:01:58 -07:00
1c8def8999 [NixOS] xkcdpass 2024-12-12 01:01:40 -07:00
f40788cd15 Revert "[NixOS] Use default taffybar package"
This reverts commit 3e774e37f9.
2024-12-12 01:01:34 -07:00
f077cc647b [NixOS] Temporarily disable volnoti and nerdfonts 2024-12-09 16:22:01 -07:00
6428ec9f2a [NixOS] Fix katnivan git repo 2024-12-09 16:21:29 -07:00
a97cd99394 [NixOS] Bump strixy-minaj packages 2024-12-09 16:21:13 -07:00
27258da627 [NixOS] Rename: adele -> adell 2024-12-01 23:47:48 -07:00
ce962bad1a [NixOS] Rekey 2024-12-01 12:23:41 -07:00
1b29407793 [NixOS] Add justin-bieber--creeek key 2024-12-01 12:22:56 -07:00
81f9cb6cf9 [NixOS] Add home-assistant config 2024-11-24 14:14:18 -07:00
37d1109bc3 [NixOS] Enable home-assistant on justin-bieber-creek 2024-11-24 14:02:35 -07:00
5cb32ff923 [NixOS] Bump nixpkgs 2024-11-24 09:11:19 +00:00
f972642cfa [NixOS] Add justin-bieber-creek 2024-11-24 09:10:44 +00:00
3e774e37f9 [NixOS] Use default taffybar package 2024-11-24 01:31:19 -07:00
574885f327 [NixOS] Add beelink key 2024-11-23 21:22:55 -07:00
46899bf76a [NixOS] Reorder flake inputs 2024-11-20 16:06:11 -07:00
f7af858e16 [NixOS] Move dean's home directory back for now 2024-11-20 14:34:04 -07:00
5e3452c091 [NixOS] Disable mission-center for now 2024-11-20 14:07:24 -07:00
bb87510a0c [NixOS] Use google dns and mount shared with users group 2024-11-20 13:25:45 -07:00
4d554f50c1 [NixOS] A few more cdi/k3s fixes 2024-11-11 19:18:30 -07:00
4d72cbc1b4 [NixOS] Renable containerd cdi 2024-11-11 18:58:48 -07:00
88d85f11b2 [NixOS] Don't try to mount nvidia executables 2024-11-11 18:48:51 -07:00
be7448b710 [NixOS] Use open nvidia drivers 2024-11-11 18:39:32 -07:00
b742fc78cb [NixOS] Remove nvidia-container-runtime 2024-11-11 18:18:57 -07:00
b703588b79 [NixOS] Disable ventura nixquick 2024-11-11 14:06:12 -07:00
8e4d8ac662 [taffybar] Bump 2024-11-10 15:17:49 -07:00
27888a7a3e [NixOS] Always make imalison user id 1000 2024-11-10 15:17:35 -07:00
0d6624bc09 [NixOS] Comment out taint flags 2024-11-10 15:17:23 -07:00
50c28d68c2 [NixOS] Add kotlin language server 2024-11-10 15:17:06 -07:00
7e301c1452 [NixOS] Bump flake.lock 2024-11-10 15:16:50 -07:00
ad73cfebde Remove expressvpn 2024-11-10 15:16:44 -07:00
2ba7a7f805 [alacritty] Fix deprecation warning 2024-10-30 05:50:44 -06:00
867ebad8ea [NixOS] Fix nvidia issues on strixi-minaj 2024-10-29 23:39:08 -06:00
ebf91de2d8 [NixOS] Fix dns issues 2024-10-29 23:38:59 -06:00
e6832e3c1e [NixOS] Fix deprecation 2024-10-29 18:14:02 -06:00
15499b292a [NixOS] Add wantedBy to mount-railbird-bucket 2024-10-24 17:10:45 -06:00
1af9a5497b [NixOS] Restart mount bucket service on failure 2024-10-24 17:05:12 -06:00
a7b24c0fa4 [NixOS] Set gitlab host 2024-10-21 00:09:09 -06:00
661a6b6c2f [NixOS] Remove extra config from networkmanager 2024-10-20 20:31:35 -06:00
d4faa061dc [NixOS] Try gitlab on biskcomp 2024-10-20 16:29:38 -06:00
a2bbd4e04e [NixOS] Add mullvad 2024-10-20 16:16:14 -06:00
7e62881c4d Fix ns name collision 2024-10-17 20:31:15 -06:00
9f69f16471 [NixOS] Periodically check on railbird-bucket state 2024-10-09 13:21:30 -06:00
5525fda4bf [Emacs] Make magit faster for nixpkgs 2024-10-09 11:41:12 -06:00
ee7c0ed11c [NixOS] Fix pavolume 2024-10-09 11:40:56 -06:00
e2875e1741 [NixOS] Use my branch with multiple backup files 2024-10-09 11:32:54 -06:00
57e13b8319 [NixOS] Try to add a taint to ryzen-shine k3s 2024-10-09 11:32:35 -06:00
1d31f870c5 Fix actions runner in macos 2024-10-08 23:24:45 -06:00
9f3f835253 Actions runner working 2024-10-08 23:24:45 -06:00
066902e37a Actions runner runs as kat 2024-10-08 23:24:45 -06:00
d790bc9e25 Put gitea actions runner in its own user 2024-10-08 23:24:45 -06:00
1ea8333994 Gitea runner working 2024-10-08 23:24:45 -06:00
e464d8fec5 [nix-darwin] Updates 2024-10-08 23:24:45 -06:00
14a32c151c [NixOS] Add mac mini key 2024-10-08 23:24:45 -06:00
bfdf5f221e [Darwin-nix] Add cocoapods 2024-10-08 23:24:45 -06:00
ae29832dbc [NixOS] Disable k3s for now on railbird-sf 2024-10-08 13:17:26 -06:00
ae6ce6b19c [NixOS] Fix command 2024-10-07 15:16:16 -06:00
8e1abde359 [NixOS] Fix permissions 2024-10-07 15:12:41 -06:00
c25cd05b15 [NixOS] Just run bucket mounting as root 2024-10-07 15:01:43 -06:00
5deba06fb0 [NixOS] Trying to mount bucket 2024-10-07 15:00:14 -06:00
7dcc785da6 [Emacs] Add import shortcuts for numpy and sqlalchemy 2024-10-06 17:58:49 -06:00
5eb3654d0c [git] Remove dumb gitconfig 2024-10-03 18:43:05 -06:00
Your Name
cbcf03c784 [NixOS] Make gitea-runner a trusted user 2024-10-03 15:18:46 -06:00
Your Name
a9d5ee5eb0 Revert "[NixOS] Disable gitea-runner"
This reverts commit 8402c6f1d2.
2024-10-03 14:28:41 -06:00
Your Name
8402c6f1d2 [NixOS] Disable gitea-runner 2024-10-03 14:16:52 -06:00
Your Name
da8b6b3b75 [NixOS] Bump runner token 2024-10-03 01:22:57 -06:00
Your Name
526bf6e2a9 [NixOS] New gitea-runner secret 2024-10-03 01:22:57 -06:00
Your Name
04870cd682 [NixOS] Biskcomp dev.railbird.ai for k3s 2024-10-02 23:04:36 -06:00
Your Name
46108ab249 [NixOS] Fix 2024-10-02 22:05:11 -06:00
Your Name
a8e23460f9 [NixOS] Fix 2024-10-02 22:03:01 -06:00
Your Name
a88018fe47 [NixOS] Remove flags that don't work with agent for railbird-sf 2024-10-02 22:02:24 -06:00
Your Name
5757681ce0 [NixOS] railbird-sf is only an agent 2024-10-02 21:55:36 -06:00
Your Name
6c393b3837 [NixOS] Fix gpg key import 2024-10-02 19:55:09 -06:00
Your Name
618f927cb9 [NixOS] Fix cdi issues with k3s containerd 2024-10-02 18:54:27 -06:00
Your Name
bb259bf358 [NixOS] Add nixos-nvidia-cdi=enabled label to k3s 2024-10-02 16:24:02 -06:00
Your Name
3f7de563db [NixOS] Fix 2024-10-02 16:15:52 -06:00
Your Name
6ae5f4c503 [NixOS] Remove labels 2024-10-02 16:10:48 -06:00
Your Name
e6c3d55fc8 [NixOS] label -> labels 2024-10-02 16:05:20 -06:00
Your Name
36331ea60c [NixOS] Add label for nvidia cdi 2024-10-02 16:04:16 -06:00
Your Name
6b18d0accf [NixOS] Set cdi spec dirs 2024-10-02 15:43:59 -06:00
Your Name
9a764fc7c8 [NixOS] Its registry.yaml registries.yaml 2024-10-02 14:32:21 -06:00
Your Name
9100167e4d [NixOS] Another registry.yaml fix 2024-10-01 19:09:12 -06:00
Your Name
e0e98bc237 [NixOS] Fix whitespace issue in registry.yaml 2024-10-01 18:59:42 -06:00
Your Name
4c989fcda3 [NixOS] Make registry.yaml real 2024-10-01 18:29:32 -06:00
Your Name
35f8c10e7c [NixOS] k3s registry file working in principle 2024-10-01 16:27:34 -06:00
Your Name
ac49823b4c Try a local serverAddr for biskcomp 2024-09-30 21:36:34 -06:00
daaead9c1e [Emacs] Align with all cursors 2024-09-30 21:34:10 -06:00
Your Name
c5c86145b1 [NixOS] Encrypt k3s token to railbird-sf 2024-09-30 21:05:39 -06:00
Your Name
32755e1411 [NixOS] Enable k3s on biskcomp nixquick and railbird-sf 2024-09-30 20:47:12 -06:00
Your Name
de27a133e7 [NixOS] Take 3 2024-09-30 20:40:39 -06:00
Your Name
f89155e4d2 [NixOS] Actually fix 2024-09-30 20:40:03 -06:00
Your Name
f345cf8f18 [NixOS] Disable tmp2 2024-09-30 20:38:51 -06:00
Your Name
4cb9c006d7 [NixOS] railbird-sf tweaks 2024-10-01 00:41:48 +00:00
1dd54ba638 [NixOS] Allow another alias for api connection 2024-09-30 18:26:14 -06:00
517c2f333e [NixOS] Another fix 2024-09-30 17:25:02 -06:00
d850ba999d [NixOS] Add tls aliases 2024-09-30 17:23:42 -06:00
dd9f5ccf88 [NixOS] Try to fix insecure skip arg 2024-09-30 17:17:41 -06:00
59da59c74f [NixOS] Ignore insecure tls 2024-09-30 17:15:13 -06:00
1f36c4942b [NixOS] Fix serverAddr port for k3s 2024-09-30 16:49:10 -06:00
eaa46e7034 [NixOS] Fix k3s definition 2024-09-30 16:42:58 -06:00
f00d9bdb12 [NixOS] Try to connect jimi-hendnix to ryzen-shine in k3s 2024-09-30 16:35:50 -06:00
1003c33dee [NixOS] Use myModules.nvidia in jimi-hendnix 2024-09-30 15:19:29 -06:00
a493a530be [NixOS] k3s draft 2024-09-30 00:05:50 -06:00
01361b7217 [NixOS] Kubelet->gke kind of works but not really 2024-09-29 17:28:42 -06:00
cdd8ed60e9 [NixOS] Get kubelet partially working 2024-09-28 21:45:25 -06:00
fd033ba72c [NixOS] Add bencbox to syncthing 2024-09-27 19:45:57 -06:00
9aae7c0c16 [NixOS] Remove old virtualization style 2024-09-27 19:37:23 -06:00
aa9be16abf [NixOS] Add macos virtualmachine to nixquick 2024-09-27 14:28:23 -06:00
342fc4f4c6 [NixOS] Use nvidia module for nixquick 2024-09-27 14:23:32 -06:00
d62d538562 [NixOS] Put nvidia configuration into a file 2024-09-27 13:09:45 -06:00
ffb55c157b [NixOS] Fix deprecations in nixquick.nix 2024-09-26 15:43:37 -06:00
cd7698bebf [NixOS] Remove picom overlay for now 2024-09-26 15:26:26 -06:00
700cccfd60 [NixOS] Switch to pipewire and other fixes 2024-09-26 14:25:48 -06:00
814966b172 [Emacs] Disable indent-bars 2024-09-26 14:15:51 -06:00
c4a9a60112 [NixOS] modules -> myModules 2024-09-26 14:15:27 -06:00
9b9da29b7a [NixOS] Enable nvidia-container-toolkit 2024-09-26 11:16:58 -06:00
6cced9dad4 [NixOS] Enable nvidia dockerisation 2024-09-26 11:14:33 -06:00
50542d9b24 [NixOS] Enable kat on nixquick 2024-09-07 18:21:58 +00:00
701e8d7d82 With cursor 2024-08-31 17:03:08 +00:00
10b8f61d27 [NixOS] Picom is only needed for xmonad 2024-08-20 00:43:37 -06:00
58432fe908 [NixOS] Host docs.railbird.ai 2024-08-19 14:32:48 -06:00
79908fae93 [NixOS] Add ryzen-shine kubernetes token 2024-08-18 15:32:36 -06:00
b597b6e239 [Emacs] Use rubocop in ruby-mode 2024-08-18 15:32:10 -06:00
9e8cd58d7f [nix-darwin] Add gitea-runner token for mac-demarco-mini 2024-08-15 01:52:05 -06:00
6643428fca Revert "[NixOS] Use yshui's picom version from git"
This reverts commit 6cb9597df7.
2024-08-14 01:33:19 -06:00
10a732ad75 [taffybar] Bump version 2024-08-11 17:54:49 -06:00
e6a75734fb [NixOS] [zsh] Enable bracketed-paste-magic 2024-08-11 17:54:03 -06:00
eb22968ab4 [NixOS] Package renames 2024-08-11 17:52:53 -06:00
b12f84c007 [NixOS] Bump nixpkgs version 2024-08-11 17:52:37 -06:00
54645ba497 [NixOS] Fix deprecated option use in ryzen-shine 2024-08-11 17:52:17 -06:00
6cb9597df7 [NixOS] Use yshui's picom version from git 2024-08-11 17:51:56 -06:00
51e6116100 [Emacs] Search hidden files when doing directory based consult-rg search 2024-08-10 12:40:01 -06:00
4fd99eae63 [NixOS] Add interview user 2024-08-09 12:41:32 -06:00
b8f2452d11 [NixOS] Add ns function for incrementally searching through nixpkgs 2024-08-04 22:21:13 -06:00
ddb4a257cf Add nix-darwin justfile 2024-08-04 22:20:33 -06:00
Kat
3a6c9fbb49 Add nix-darwin 2024-08-04 22:20:33 -06:00
Kat
f3b8a769c6 [Emacs] Add swift-mode 2024-08-04 22:20:33 -06:00
4a27118f24 Delete travis 2024-08-04 22:20:33 -06:00
7ddc215dcc [Emacs] Remove indent-guide 2024-08-04 22:02:59 -06:00
3559edb3a5 [git] Don't ignore .sw* files (swift) 2024-07-28 14:20:58 -06:00
0e611dbb57 Fix location of DISABLE_REGISTRATION 2024-07-20 01:18:56 -06:00
3a71c8600c [NixOS] Remove sound.enable 2024-07-18 15:57:42 -06:00
280debd530 [NixOS] Disable gitea registration 2024-07-18 15:55:59 -06:00
e34248ede3 [NixOS] Add dean to syncthing 2024-07-18 14:09:37 -06:00
ea3ba8e2d6 [Emacs] Replace highlight-indent-guides with indent-bars 2024-07-11 01:44:13 -06:00
69411c14f6 [NixOS] Use testing kernel on strixi-minaj to fix audio 2024-07-04 12:44:23 -06:00
f560d87aa3 [linux] Allow selection of specific path for case where multiple brightness paths 2024-07-03 22:49:29 -06:00
e188936253 [NixOS] Use module from nixos-hardware for strixy-minaj 2024-07-03 02:12:56 -06:00
f91ff8c987 Revert "[NixOS] Use intel drivers on strixi-minaj"
This reverts commit 204569fff1.
2024-07-03 02:12:56 -06:00
f4b87c40eb Remove gtkrc 2024-07-02 17:19:51 -06:00
26fb168ec5 [NixOS] Set backup extension for home-manager 2024-07-02 17:18:03 -06:00
16e6b980ba [NixOS] Flake update past ssh issue 2024-07-01 22:45:03 -06:00
204569fff1 [NixOS] Use intel drivers on strixi-minaj 2024-07-01 22:44:44 -06:00
123 changed files with 5232 additions and 1528 deletions

View File

@@ -1,8 +0,0 @@
language: generic
script: bash ./gen-gh-pages/deploy.sh
env:
global:
- ENCRYPTION_LABEL: "73e6c870aa87"
- COMMIT_AUTHOR_EMAIL: "IvanMalison@gmail.com"
- COMMIT_AUTHOR_NAME: "Ivan Malison"

View File

@@ -1,4 +1,5 @@
import = ["/home/imalison/.config/alacritty/themes/themes/dracula.toml"]
[general]
import = ["~/.config/alacritty/themes/themes/dracula.toml"]
[font]
size = 8

View File

@@ -0,0 +1,294 @@
# Hyprland Configuration
# Based on XMonad configuration from xmonad.hs
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto
# Source a file (multi-file configs)
# source = ~/.config/hypr/myColors.conf
# Set programs that you use
$terminal = alacritty
$fileManager = dolphin
$menu = rofi -show drun -show-icons
$runMenu = rofi -show run
# Environment variables
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORMTHEME,qt5ct
env = GDK_DPI_SCALE,1.25
env = QT_FONT_DPI,120
# Input configuration
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
natural_scroll = no
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
# General settings
general {
gaps_in = 5
gaps_out = 20
border_size = 2
col.active_border = rgba(edb443ee) rgba(33ccffee) 45deg
col.inactive_border = rgba(595959aa)
layout = master
allow_tearing = false
}
# Decoration
decoration {
rounding = 10
blur {
enabled = true
size = 3
passes = 1
}
}
# Animations
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
# Layout configuration
dwindle {
pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = yes # you probably want this
}
master {
mfact = 0.25
orientation = left
}
# Misc
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
}
# Scratchpad-like windows
windowrule = float, title:^(htop)$
windowrule = size 80% 80%, title:^(htop)$
# Chrome specific rules
windowrule = float, class:^(chrome)$,title:^(.*@gmail.com.*Gmail.*)$
windowrule = float, class:^(chrome)$,title:^(Messages)$
windowrule = size 90% 90%, class:^(chrome)$,title:^(.*@gmail.com.*Gmail.*)$
windowrule = size 90% 90%, class:^(chrome)$,title:^(Messages)$
# ===== KEY BINDINGS =====
# Based on XMonad configuration
# Main modifier key (Super/Windows key equivalent to mod4Mask)
$mainMod = SUPER
# Mod+Alt combination (equivalent to modalt in XMonad)
$modAlt = SUPER_ALT
# Hyper key (equivalent to mod3Mask in XMonad)
$hyper = ALT_R
# Program launching
bind = $mainMod, P, exec, $menu
bind = $mainMod SHIFT, P, exec, $runMenu
bind = $mainMod SHIFT, Return, exec, $terminal
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, C, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, E, exec, emacsclient -c
bind = $mainMod, V, exec, xclip -o | xdotool type --file -
# Chrome/Browser launching (equivalent to bindBringAndRaise)
bind = $modAlt, C, exec, google-chrome-stable
# Scratchpad equivalents (toggle special workspaces)
bind = $modAlt, E, togglespecialworkspace, element
bind = $modAlt, G, togglespecialworkspace, gmail
bind = $modAlt, H, togglespecialworkspace, htop
bind = $modAlt, M, togglespecialworkspace, messages
bind = $modAlt, K, togglespecialworkspace, slack
bind = $modAlt, S, togglespecialworkspace, spotify
bind = $modAlt, T, togglespecialworkspace, transmission
bind = $modAlt, V, togglespecialworkspace, volume
# Move windows to special workspaces
bind = $modAlt SHIFT, E, movetoworkspace, special:element
bind = $modAlt SHIFT, G, movetoworkspace, special:gmail
bind = $modAlt SHIFT, H, movetoworkspace, special:htop
bind = $modAlt SHIFT, M, movetoworkspace, special:messages
bind = $modAlt SHIFT, K, movetoworkspace, special:slack
bind = $modAlt SHIFT, S, movetoworkspace, special:spotify
bind = $modAlt SHIFT, T, movetoworkspace, special:transmission
bind = $modAlt SHIFT, V, movetoworkspace, special:volume
# Directional navigation (WASD keys as in XMonad)
bind = $mainMod, W, movefocus, u
bind = $mainMod, S, movefocus, d
bind = $mainMod, A, movefocus, l
bind = $mainMod, D, movefocus, r
# Move windows directionally
bind = $mainMod SHIFT, W, movewindow, u
bind = $mainMod SHIFT, S, movewindow, d
bind = $mainMod SHIFT, A, movewindow, l
bind = $mainMod SHIFT, D, movewindow, r
# Resize windows
bind = $mainMod CTRL, W, resizeactive, 0 -50
bind = $mainMod CTRL, S, resizeactive, 0 50
bind = $mainMod CTRL, A, resizeactive, -50 0
bind = $mainMod CTRL, D, resizeactive, 50 0
# Layout control
bind = $mainMod, Space, exec, hyprctl dispatch layoutmsg cyclenext
bind = $mainMod CTRL, Space, fullscreen, 0
bind = $mainMod, slash, exec, hyprctl dispatch layoutmsg orientationcycle left top
bind = $mainMod, F, fullscreen, 0
bind = $mainMod SHIFT, F, fullscreen, 1
bind = $mainMod, T, togglefloating,
bind = $mainMod SHIFT, Y, pseudo, # dwindle pseudotile
bind = $mainMod, J, togglesplit, # dwindle split direction
bind = $mainMod, comma, exec, hyprctl dispatch splitratio -0.05
bind = $mainMod, period, exec, hyprctl dispatch splitratio +0.05
bind = $mainMod, N, exec, hyprctl dispatch layoutmsg addmaster
bind = $mainMod SHIFT, N, exec, hyprctl dispatch layoutmsg removemaster
# Focus manipulation
bind = $mainMod, Tab, exec, hyprctl dispatch focuswindow "class:$(hyprctl activewindow -j | jq -r '.class')"
bind = $mainMod, M, exec, hyprctl dispatch focuswindow "class:master"
# Monitor/Screen control
bind = $mainMod, Z, focusmonitor, +1
bind = $mainMod SHIFT, Z, movewindow, mon:+1
# Window management
bind = $mainMod, G, exec, hyprctl clients -j | jq -r '.[] | select(.workspace.id >= 0) | "\(.title) - \(.class)"' | rofi -dmenu -i -p "Go to window" | head -1 | xargs -I {} hyprctl dispatch focuswindow "title:{}"
bind = $mainMod, B, exec, SELECTION=$(hyprctl clients -j | jq -r '.[] | select(.workspace.id >= 0) | "\(.title) - \(.class) [\(.address)]"' | rofi -dmenu -i -p "Bring window"); if [ -n "$SELECTION" ]; then ADDRESS=$(echo "$SELECTION" | sed 's/.*\[\(.*\)\]/\1/'); hyprctl dispatch movetoworkspace "$(hyprctl activeworkspace -j | jq -r '.id')",address:"$ADDRESS"; fi
bind = $mainMod SHIFT, B, exec, hyprctl clients -j | jq -r '.[] | select(.workspace.id >= 0) | "\(.title) - \(.class)"' | rofi -dmenu -i -p "Replace window" | head -1 | xargs -I {} hyprctl dispatch swapwindow "title:{}"
bind = $mainMod, M, exec, hyprctl dispatch togglespecialworkspace minimized
bind = $mainMod SHIFT, M, exec, hyprctl dispatch movetoworkspace special:minimized
bind = $mainMod SHIFT, H, exec, EMPTY_WS=$(hyprctl workspaces -j | jq -r 'map(select(.windows == 0)) | .[0].id // empty'); if [ -z "$EMPTY_WS" ]; then EMPTY_WS=$(hyprctl workspaces -j | jq -r 'max_by(.id).id + 1'); fi; hyprctl dispatch movetoworkspace $EMPTY_WS && hyprctl dispatch workspace $EMPTY_WS
bind = $mainMod, X, exec, hyprctl dispatch movetoworkspace special:NSP
# Workspace switching
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move windows to workspaces
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Move and follow to workspace
bind = $mainMod CTRL, 1, movetoworkspace, 1
bind = $mainMod CTRL, 2, movetoworkspace, 2
bind = $mainMod CTRL, 3, movetoworkspace, 3
bind = $mainMod CTRL, 4, movetoworkspace, 4
bind = $mainMod CTRL, 5, movetoworkspace, 5
bind = $mainMod CTRL, 6, movetoworkspace, 6
bind = $mainMod CTRL, 7, movetoworkspace, 7
bind = $mainMod CTRL, 8, movetoworkspace, 8
bind = $mainMod CTRL, 9, movetoworkspace, 9
bind = $mainMod CTRL, 0, movetoworkspace, 10
# Media keys and volume control
bind = , XF86AudioRaiseVolume, exec, set_volume --unmute --change-volume +5
bind = , XF86AudioLowerVolume, exec, set_volume --unmute --change-volume -5
bind = , XF86AudioMute, exec, set_volume --toggle-mute
bind = $mainMod, I, exec, set_volume --unmute --change-volume +5
bind = $mainMod, K, exec, set_volume --unmute --change-volume -5
bind = $mainMod, U, exec, set_volume --toggle-mute
# Media player controls
bind = $mainMod, semicolon, exec, playerctl play-pause
bind = , XF86AudioPlay, exec, playerctl play-pause
bind = , XF86AudioPause, exec, playerctl play-pause
bind = $mainMod, L, exec, playerctl next
bind = , XF86AudioNext, exec, playerctl next
bind = $mainMod, J, exec, playerctl previous
bind = , XF86AudioPrev, exec, playerctl previous
# Brightness control
bind = , XF86MonBrightnessUp, exec, brightness.sh 5
bind = , XF86MonBrightnessDown, exec, brightness.sh -5
# Utility bindings
bind = $hyper, V, exec, rofi_clipit.sh
bind = $hyper, Y, exec, rofi-pass
bind = $hyper, H, exec, rofi_shutter
bind = $hyper, C, exec, shell_command.sh
bind = $hyper, X, exec, rofi_command.sh
bind = $hyper SHIFT, L, exec, dm-tool lock
bind = $hyper, K, exec, rofi_kill_process.sh
bind = $hyper SHIFT, K, exec, rofi_kill_all.sh
bind = $hyper, R, exec, rofi-systemd
bind = $hyper, 9, exec, start_synergy.sh
bind = $hyper, slash, exec, toggle_taffybar
bind = $hyper, Space, exec, skippy-xd
bind = $hyper, I, exec, rofi_select_input.hs
bind = $hyper, O, exec, rofi_paswitch
bind = $mainMod, apostrophe, exec, load_default_map
bind = $modAlt, apostrophe, exec, load_xkb_map
bind = $mainMod, R, exec, hyprctl reload
# Workspace cycling
bind = $mainMod, backslash, workspace, previous
bind = $mainMod, Tab, workspace, previous
# Mouse bindings
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Special workspaces for "scratchpad" applications
exec-once = [workspace special:element silent] element-desktop
exec-once = [workspace special:gmail silent] google-chrome-stable --new-window https://mail.google.com/mail/u/0/#inbox
exec-once = [workspace special:htop silent] alacritty --title htop -e htop
exec-once = [workspace special:messages silent] google-chrome-stable --new-window https://messages.google.com/web/conversations
exec-once = [workspace special:slack silent] slack
exec-once = [workspace special:spotify silent] spotify
exec-once = [workspace special:transmission silent] transmission-gtk
exec-once = [workspace special:volume silent] pavucontrol

View File

@@ -1,7 +1,7 @@
{
inputs = {
flake-utils.url = github:numtide/flake-utils;
xmonad.url = github:xmonad/xmonad/master;
flake-utils.url = "github:numtide/flake-utils";
xmonad.url = "github:xmonad/xmonad/master";
taffybar.url = "github:taffybar/taffybar";
};
outputs = { self, flake-utils, taffybar, nixpkgs, xmonad }:
@@ -39,7 +39,7 @@
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
hpkgs = pkgs.lib.attrsets.getAttrFromPath (xmonad.lib.hpath defComp) pkgs;
in
rec {
{
devShell = hpkgs.shellFor {
packages = p: [ p.imalison-taffybar p.taffybar ];
nativeBuildInputs = with hpkgs; [

View File

@@ -218,7 +218,7 @@ main = do
[ ( "uber-loaner"
, baseConfig { endWidgets = laptopEndWidgets }
)
, ( "adele"
, ( "adell"
, baseConfig { endWidgets = laptopEndWidgets }
)
, ( "stevie-nixos"

View File

@@ -17,7 +17,7 @@
in flake-utils.lib.eachDefaultSystem (system:
let pkgs = import nixpkgs { inherit system overlays; config.allowBroken = true; };
in
rec {
{
devShell = pkgs.haskellPackages.shellFor {
packages = p: [ p.imalison-xmonad p.xmonad-contrib ];
buildInputs = with pkgs.haskellPackages; [

View File

@@ -1059,8 +1059,8 @@ addKeys conf@XConfig { modMask = modm } =
, ((hyper .|. shiftMask, xK_q), spawn "toggle_mute_current_window.sh")
, ((hctrl, xK_q), spawn "toggle_mute_current_window.sh only")
, ((0, xF86XK_MonBrightnessUp), spawn "brightness.sh 5")
, ((0, xF86XK_MonBrightnessDown), spawn "brightness.sh -5")
, ((0, xF86XK_MonBrightnessUp), spawn "brightness.sh up")
, ((0, xF86XK_MonBrightnessDown), spawn "brightness.sh down")
] ++

View File

@@ -4,6 +4,7 @@
(setq mc/cmds-to-run-for-all
'(
TeX-insert-backslash
align
backward-sexp
beginning-of-buffer
beginning-of-visual-line

View File

@@ -361,8 +361,6 @@ but provide support for writing custom elisp.
*** shut-up
#+BEGIN_SRC emacs-lisp
(use-package shut-up
:demand t
:ensure (:inherit t :wait t)
:config
(defun imalison:shut-up-around (function &rest args)
(shut-up (apply function args))))
@@ -858,7 +856,6 @@ details.
(directory-files filepath))))
(use-package eshell
:ensure nil
:commands (eshell-parse-colon-path imalison:get-executables-on-path)
:config
(defun imalison:get-executables-on-path ()
@@ -1141,7 +1138,8 @@ I keep it around just in case I need it.
*** frame-mode
#+BEGIN_SRC emacs-lisp
(defvar imalison:use-frame-mode
(s-contains? "xmonad" (shell-command-to-string "wmctrl -m")))
(or (s-contains? "xmonad" (shell-command-to-string "wmctrl -m"))
(s-contains? "Hyprland" (shell-command-to-string "wmctrl -m"))))
(use-package frame-mode
:if imalison:use-frame-mode
@@ -1236,7 +1234,6 @@ This makes ~forward-word~ and ~backward-word~ understand snake and camel case.
proced is an top like utility that runs inside of emacs. The following sets auto updating automatically and makes the update interval faster.
#+BEGIN_SRC emacs-lisp
(use-package proced
:ensure nil
:defer t
:config
(progn
@@ -1380,7 +1377,6 @@ Paradox is a package.el extension. I have no use for it now that I use straight.
** server
#+BEGIN_SRC emacs-lisp
(use-package server
:ensure nil
:demand t
:config
(progn
@@ -1449,6 +1445,19 @@ The file server file for this emacs instance no longer exists.")
(use-package refine
:disabled t)
#+END_SRC
** winner
#+BEGIN_SRC emacs-lisp
(use-package winner
:commands (winner-undo winner-redo)
:bind ("C-c q" . imalison:winner-hydra/body)
:config
(progn
(defhydra imalison:winner-hydra ()
"Winner"
("p" winner-undo "back")
("n" winner-redo "forward" :exit t))
(winner-mode 1)))
#+END_SRC
** eyebrowse
I don't have any use for this now that I use frames mode, but its an interesting idea.
#+BEGIN_SRC emacs-lisp
@@ -1506,26 +1515,32 @@ https://github.com/alpaker/Fill-Column-Indicator/issues/21 for more details
(advice-add 'company-call-frontends :before #'fci-on-off-fci-before-company)
(add-hook 'prog-mode-hook 'fci-mode)))
#+END_SRC
** highlight-indent-guides
If the load-theme hook from this package starts causing trouble check for
custom-set-faces in your custom file.
#+BEGIN_SRC emacs-lisp
(use-package highlight-indent-guides
:commands highlight-indent-guides-mode
:diminish highlight-indent-guides-mode
:demand t
** indent-bars
#+begin_src emacs-lisp
(use-package indent-bars
:disabled t
:straight (indent-bars :type git :host github :repo "jdtsmith/indent-bars")
:config
(progn
(add-hook 'prog-mode-hook 'highlight-indent-guides-mode)
(setq highlight-indent-guides-method 'fill)))
#+END_SRC
(require 'indent-bars-ts) ; not needed with straight
:custom
(indent-bars-treesit-support t)
(indent-bars-treesit-ignore-blank-lines-types '("module"))
;; Add other languages as needed
(indent-bars-treesit-scope '((python function_definition class_definition for_statement
if_statement with_statement while_statement)))
;; wrap may not be needed if no-descend-list is enough
;; (indent-bars-treesit-wrap '((python argument_list parameters ; for python, as an example
;; list list_comprehension
;; dictionary dictionary_comprehension
;; parenthesized_expression subscript)))
:hook ((prog-mode) . indent-bars-mode))
#+end_src
** man-mode
Man page escape sequences aren't properly handled by emacs pager. This function
fixes that, but for now, it needs to be run manually, since I haven't figured
out how to detect that a buffer is a man mode buffer.
#+BEGIN_SRC emacs-lisp
(use-package man
:ensure nil
:config
(progn
(defun imalison:fontify-man-page-buffer ()
@@ -1751,7 +1766,6 @@ bind-key and global-set-key forms.
#+END_SRC
** projectile
#+BEGIN_SRC emacs-lisp
(use-package projectile
:demand t
:bind (:map projectile-mode-map
@@ -1765,7 +1779,7 @@ bind-key and global-set-key forms.
(projectile-git-submodule-command nil)
(project-vc-merge-submodules nil)
(projectile-current-project-on-switch 'keep))
:config
:preface
(progn
(defmacro imalison:projectile-do-in-project (project-dir &rest forms)
`(imalison:with-default-directory ,project-dir
@@ -1778,7 +1792,8 @@ bind-key and global-set-key forms.
(defun imalison:do-rg-default-directory (&rest args)
(interactive)
(apply 'consult-ripgrep default-directory args))
(let ((consult-ripgrep-args (concat consult-ripgrep-args " --no-ignore" " --hidden")))
(apply 'consult-ripgrep default-directory args)))
(emit-prefix-selector imalison:do-rg
consult-ripgrep
@@ -1797,7 +1812,9 @@ bind-key and global-set-key forms.
(write-region "" nil
(expand-file-name
(concat directory "/"
(nth 0 file-info) "/.projectile"))))))
(nth 0 file-info) "/.projectile")))))))
:config
(progn
(projectile-global-mode)
(diminish 'projectile-mode)))
#+END_SRC
@@ -1846,8 +1863,7 @@ bind-key and global-set-key forms.
** avy
#+BEGIN_SRC emacs-lisp
(use-package avy
:after emit
:config
:preface
(progn
(emit-prefix-selector imalison:avy
avy-goto-word-1
@@ -1859,13 +1875,11 @@ bind-key and global-set-key forms.
** ace-window
#+BEGIN_SRC emacs-lisp
(use-package ace-window
:after emit
:config
(progn
:preface
(emit-prefix-selector imalison:ace-window
ace-select-window
ace-swap-window)
(setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l)))
:config (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
:bind ("C-c w" . imalison:ace-window))
#+END_SRC
** neotree
@@ -1891,7 +1905,7 @@ Neotree is useless with frame mode for now, so I've disabled it.
* Completion
** vertico
#+begin_src emacs-lisp
(use-package vertico
(use-package vertico
:demand t
:config
(progn
@@ -2020,12 +2034,10 @@ Neotree is useless with frame mode for now, so I've disabled it.
** company
#+BEGIN_SRC emacs-lisp
(use-package company
:after emit
:commands company-mode imalison:company
:bind (("C-\\" . imalison:company))
:config
(progn
(add-hook 'prog-mode-hook (lambda () (company-mode t)))
(emit-prefix-selector imalison:company
company-complete
company-yasnippet)
@@ -2035,7 +2047,9 @@ Neotree is useless with frame mode for now, so I've disabled it.
:demand t
:config (company-prescient-mode +1))
(global-company-mode)
(diminish 'company-mode)))
(diminish 'company-mode))
:init
(add-hook 'prog-mode-hook (lambda () (company-mode t))))
#+END_SRC
*** company-flx
#+BEGIN_SRC emacs-lisp
@@ -2208,7 +2222,6 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
** align
#+BEGIN_SRC emacs-lisp
(use-package align
:ensure nil
:bind ("C-c C-a" . imalison:align-regexp-hydra/body)
:config
(progn
@@ -2235,12 +2248,11 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
#+END_SRC
* flycheck
#+BEGIN_SRC emacs-lisp
(use-package flycheck
(use-package flycheck
:commands flycheck-mode
:defer 1
:init (add-hook 'prog-mode-hook 'flycheck-mode)
:config
(progn
(add-hook 'prog-mode-hook 'flycheck-mode)
(use-package flycheck-package
:disabled t
:config (flycheck-package-setup))
@@ -2257,6 +2269,12 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
(global-flycheck-mode))
:diminish flycheck-mode)
#+END_SRC
* straight
#+BEGIN_SRC emacs-lisp
(use-package straight
:config
(setq straight-vc-git-auto-fast-forward t))
#+END_SRC
* auth-source
#+begin_src emacs-lisp
(use-package auth-source
@@ -2306,98 +2324,105 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
(unbind-key "C-j" python-mode-map)
(add-hook 'python-mode-hook #'imalison:python-mode)))
#+END_SRC
*** ruby
#+begin_src emacs-lisp
(use-package ruby-mode
:config
(setf (alist-get 'ruby-ts-mode apheleia-mode-alist)
'(rubocop)))
#+end_src
*** go
#+BEGIN_SRC emacs-lisp
;; (use-package go-mode
;; :mode (("\\.go\\'" . go-mode))
;; :after emit
;; :config
;; (progn
;; (defun imalison:glide-novendor ()
;; (projectile-with-default-dir (projectile-project-root)
;; (shell-command-to-string "glide novendor")))
(use-package go-mode
:mode (("\\.go\\'" . go-mode))
:preface
(progn
(defun imalison:glide-novendor ()
(projectile-with-default-dir (projectile-project-root)
(shell-command-to-string "glide novendor")))
;; (defun imalison:go-mode-create-imenu-index ()
;; "Create and return an imenu index alist. Unlike the default
;; alist created by go-mode, this method creates an alist where
;; items follow a style that is consistent with other prog-modes."
;; (let* ((patterns '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)))
;; (type-index (imenu--generic-function patterns))
;; (func-index))
;; (save-excursion
;; (goto-char (point-min))
;; (while (re-search-forward go-func-meth-regexp (point-max) t)
;; (let* ((var (match-string-no-properties 1))
;; (func (match-string-no-properties 2))
;; (name (if var
;; (concat (substring var 0 -1) "." func)
;; func))
;; (beg (match-beginning 0))
;; (marker (copy-marker beg))
;; (item (cons name marker)))
;; (setq func-index (cons item func-index)))))
;; (nconc type-index (list (cons "func" func-index)))))
(defun imalison:go-mode-create-imenu-index ()
"Create and return an imenu index alist. Unlike the default
alist created by go-mode, this method creates an alist where
items follow a style that is consistent with other prog-modes."
(let* ((patterns '(("type" "^type *\\([^ \t\n\r\f]*\\)" 1)))
(type-index (imenu--generic-function patterns))
(func-index))
(save-excursion
(goto-char (point-min))
(while (re-search-forward go-func-meth-regexp (point-max) t)
(let* ((var (match-string-no-properties 1))
(func (match-string-no-properties 2))
(name (if var
(concat (substring var 0 -1) "." func)
func))
(beg (match-beginning 0))
(marker (copy-marker beg))
(item (cons name marker)))
(setq func-index (cons item func-index)))))
(nconc type-index (list (cons "func" func-index)))))
;; (defun imalison:go-workspace-path ()
;; (file-relative-name (projectile-project-root)
;; (concat (file-name-as-directory
;; (imalison:get-go-path)) "src")))
(defun imalison:go-workspace-path ()
(file-relative-name (projectile-project-root)
(concat (file-name-as-directory
(imalison:get-go-path)) "src")))
;; (defun imalison:install-current-go-project ()
;; (interactive)
;; (start-process
;; "go install" "go install log" "go" "install"
;; (concat (file-name-as-directory (imalison:go-workspace-path)) "...")))
(defun imalison:install-current-go-project ()
(interactive)
(start-process
"go install" "go install log" "go" "install"
(concat (file-name-as-directory (imalison:go-workspace-path)) "...")))
;; (defun imalison:get-go-path ()
;; (let ((environment-go-path (getenv "GOPATH")))
;; (if environment-go-path
;; (file-name-as-directory (car (s-split ":" environment-go-path)))
;; "~/go")))
(defun imalison:get-go-path ()
(let ((environment-go-path (getenv "GOPATH")))
(if environment-go-path
(file-name-as-directory (car (s-split ":" environment-go-path)))
"~/go")))
;; (defmacro imalison:get-go-src (&rest paths)
;; `(imalison:join-paths (imalison:get-go-path) "src" ,@paths))
(defmacro imalison:get-go-src (&rest paths)
`(imalison:join-paths (imalison:get-go-path) "src" ,@paths))
;; (imalison:let-advise-around imalison:advise-normal-go-command
;; (go-command "go"))
(imalison:let-advise-around imalison:advise-normal-go-command
(go-command "go"))
;; (defun imalison:go-mode-hook ()
;; (go-eldoc-setup)
;; (set (make-local-variable 'company-backends) '(company-go))
;; (make-local-variable 'projectile-globally-ignored-files)
;; (add-hook 'after-save-hook 'imalison:install-current-go-project nil
;; 'yes-do-local)
;; (add-to-list 'projectile-globally-ignored-files
;; "vendor"))
;; (use-package gotest
;; :demand t
;; :after emit
;; :bind (:map go-mode-map
;; ("C-c t" . imalison:gotest))
;; :preface
;; (progn
;; (emit-prefix-selector imalison:gotest
;; go-test-current-test
;; go-test-current-file)
(defun imalison:go-mode-hook ()
(go-eldoc-setup)
(set (make-local-variable 'company-backends) '(company-go))
(make-local-variable 'projectile-globally-ignored-files)
(add-hook 'after-save-hook 'imalison:install-current-go-project nil
'yes-do-local)
(add-to-list 'projectile-globally-ignored-files
"vendor")))
:config
(progn
(use-package gotest
:demand t
:bind (:map go-mode-map
("C-c t" . imalison:gotest))
:preface
(progn
(emit-prefix-selector imalison:gotest
go-test-current-test
go-test-current-file)
;; (defun imalison:add-expected-test-name-for-suite (suite-name test-name)
;; (if (> (length suite-name) 0)
;; (concat " -run Test" suite-name)
;; "")))
;; :config
;; (progn
;; (setq go-test-verbose t
;; go-test-additional-arguments-function
;; 'imalison:add-expected-test-name-for-suite)))
;; (use-package company-go
;; :config (setq company-go-show-annotation t))
(defun imalison:add-expected-test-name-for-suite (suite-name test-name)
(if (> (length suite-name) 0)
(concat " -run Test" suite-name)
"")))
:config
(progn
(setq go-test-verbose t
go-test-additional-arguments-function
'imalison:add-expected-test-name-for-suite)))
(use-package company-go
:config (setq company-go-show-annotation t))
;; (advice-add 'go-import-add :around 'imalison:advise-normal-go-command)
(advice-add 'go-import-add :around 'imalison:advise-normal-go-command)
;; (setq gofmt-command "goimports")
(setq gofmt-command "goimports")
;; (add-hook 'go-mode-hook 'imalison:go-mode-hook)
;; (add-hook 'before-save-hook 'gofmt-before-save t)))
(add-hook 'go-mode-hook 'imalison:go-mode-hook)
(add-hook 'before-save-hook 'gofmt-before-save t)))
#+END_SRC
**** Show diffs of testify output
#+BEGIN_SRC emacs-lisp
@@ -2439,25 +2464,13 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
**** elisp-slime-nav
#+BEGIN_SRC emacs-lisp
(use-package elisp-slime-nav
:after emit
:commands elisp-slime-nav-mode
:config
(progn
(defvar imalison:check-parens nil)
(defun imalison:maybe-check-parens ()
(if imalison:check-parens
(check-parens)))
(defun imalison:emacs-lisp-hook ()
(elisp-slime-nav-mode t)
(add-hook 'write-file-functions 'imalison:maybe-check-parens nil t))
(add-hook 'emacs-lisp-mode-hook 'imalison:emacs-lisp-hook)
(diminish 'elisp-slime-nav-mode)
:preface
(emit-prefix-selector imalison:elisp-slime-nav
elisp-slime-nav-find-elisp-thing-at-point
elisp-slime-nav-describe-elisp-thing-at-point))
elisp-slime-nav-describe-elisp-thing-at-point)
:bind (:map elisp-slime-nav-mode-map
("M-." . imalison:elisp-slime-nav)))
#+END_SRC
@@ -2467,7 +2480,6 @@ it's supposed to do, but instead uses its own collection of functions to control
where the definition is popped up. This fixes that.
#+BEGIN_SRC emacs-lisp
(use-package find-func
:ensure nil
:preface
(progn
(defun imalison:find-function-display-buffer (function)
@@ -2487,6 +2499,14 @@ Macrostep is an indespensible tool for writing emacs lisp macros. It lets you se
:bind (:map lisp-mode-shared-map
("C-c e" . macrostep-expand)))
#+END_SRC
**** emr
#+BEGIN_SRC emacs-lisp
(use-package emr
:bind ("M-RET" . emr-show-refactor-menu)
:config
(progn
(add-hook 'prog-mode-hook 'emr-initialize)))
#+END_SRC
**** Editing configuration
Reduce indentation for some functions
#+BEGIN_SRC emacs-lisp
@@ -2500,16 +2520,10 @@ Reduce indentation for some functions
**** edebug
#+BEGIN_SRC emacs-lisp
(use-package edebug
:ensure nil
:defer t
:config
(progn (setq edebug-trace t)))
#+END_SRC
**** overseer
#+BEGIN_SRC emacs-lisp
(use-package overseer
:defer t)
#+END_SRC
**** Misc
#+BEGIN_SRC emacs-lisp
(defun imenu-elisp-sections ()
@@ -2539,7 +2553,6 @@ Reduce indentation for some functions
:commands (eros-mode)
:config
(progn
(add-hook 'emacs-lisp-mode-hook 'eros-mode)
(advice-add 'eval-defun :around 'eros-around-eval-defun)
(advice-add 'eval-last-sexp :around 'eros-around-eval-last-sexp))
:preface
@@ -2560,7 +2573,9 @@ Reduce indentation for some functions
(save-excursion
(end-of-defun)
(point))))
result))))
result))
(add-hook 'emacs-lisp-mode-hook 'eros-mode)))
#+END_SRC
**** Reevalute defvars when running eval-last-sexp
We noflet elisp--preceding-sexp to munge defvars into sexps only for
@@ -2578,10 +2593,27 @@ eval-last-sexp.
#+END_SRC
**** Init hook
#+BEGIN_SRC emacs-lisp
(defvar imalison:check-parens nil)
(defun imalison:maybe-check-parens ()
(if imalison:check-parens
(check-parens)))
(defun imalison:emacs-lisp-hook ()
(elisp-slime-nav-mode t)
(add-hook 'write-file-functions 'imalison:maybe-check-parens nil t))
(add-hook 'emacs-lisp-mode-hook 'imalison:emacs-lisp-hook)
#+END_SRC
**** Keybinds
#+BEGIN_SRC emacs-lisp
(emit-compose
imalison:copy-eval-last-sexp kill-new prin1-to-string eval-last-sexp)
(emit-prefix-selector imalison:eval-last-sexp
eval-region-or-last-sexp
imalison:copy-eval-last-sexp)
(define-key lisp-mode-shared-map (kbd "C-c C-c") 'eval-defun)
(define-key lisp-mode-shared-map (kbd "C-x C-e") 'imalison:eval-last-sexp)
(unbind-key "C-j" lisp-interaction-mode-map)
@@ -2682,6 +2714,11 @@ The following is taken from [[https://github.com/syl20bnr/spacemacs/blob/a650877
cider-preferred-build-tool "boot")
(add-hook 'clojure-mode-hook 'cider-mode)))
#+END_SRC
**** clj-refactor
#+BEGIN_SRC emacs-lisp
(use-package clj-refactor
:commands clj-refactor-mode)
#+END_SRC
*** scala
#+BEGIN_SRC emacs-lisp
(use-package scala-mode
@@ -2865,6 +2902,10 @@ The following is taken from [[https://github.com/syl20bnr/spacemacs/blob/a650877
:defer t
:mode ("\\.kt\\'"))
#+END_SRC
*** swift
#+begin_src emacs-lisp
(use-package swift-mode)
#+end_src
*** groovy
#+begin_src emacs-lisp
(use-package groovy-mode)
@@ -2881,7 +2922,7 @@ The following is taken from [[https://github.com/syl20bnr/spacemacs/blob/a650877
#+END_SRC
*** C/C++
#+BEGIN_SRC emacs-lisp
(use-package cc-mode :ensure nil)
(use-package cc-mode)
#+END_SRC
*** C--
#+BEGIN_SRC emacs-lisp
@@ -3086,10 +3127,9 @@ My org-mode configuration now lives in its own file org-config.org.
** magit
#+BEGIN_SRC emacs-lisp
(use-package magit
:after emit
:commands magit-status
:bind (("C-x g" . imalison:magit-status))
:config
:preface
(progn
(emit-let-around imalison:magit-status-traditional
magit-status
@@ -3100,17 +3140,42 @@ My org-mode configuration now lives in its own file org-config.org.
imalison:magit-status-traditional)
(defun imalison:after-magit-visit-file (&rest args)
(when (derived-mode-p 'org-mode)
(org-show-context 'magit-goto)))
(org-show-context 'magit-goto))))
:config
(progn
(when frame-mode
(setq magit-commit-show-diff t))
(unbind-key "C-j" magit-status-mode-map)
(unbind-key "C-j" magit-hunk-section-map)
(unbind-key "C-j" magit-file-section-map)
(unbind-key "C-j" magit-diff-section-base-map)
(remove-hook 'magit-status-headers-hook 'magit-insert-tags-header)
(setq magit-revision-insert-related-refs nil)
(remove-hook 'magit-status-sections-hook 'magit-insert-unpulled-from-upstream)
(remove-hook 'magit-status-sections-hook 'magit-insert-unpushed-to-upstream-or-recent)
(setq magit-last-seen-setup-instructions "1.4.0"
magit-display-buffer-function
'magit-display-buffer-same-window-except-diff-v1)
(magit-auto-revert-mode)
(dir-locals-set-class-variables
'huge-git-repository
'((nil
. ((magit-refresh-buffers . nil)
(magit-revision-insert-related-refs . nil)))
(magit-status-mode
. ((eval . (magit-disable-section-inserter 'magit-insert-tags-header))
(eval . (magit-disable-section-inserter 'magit-insert-recent-commits))
(eval . (magit-disable-section-inserter 'magit-insert-unpushed-to-pushremote))
(eval . (magit-disable-section-inserter 'magit-insert-unpushed-to-upstream-or-recent))
(eval . (magit-disable-section-inserter 'magit-insert-unpulled-from-pushremote))
(eval . (magit-disable-section-inserter 'magit-insert-unpulled-from-pushremote))
(eval . (magit-disable-section-inserter 'magit-insert-unpulled-from-upstream))
))
))
(dir-locals-set-directory-class
"/home/imalison/Projects/nixpkgs" 'huge-git-repository)
(add-to-list 'org-show-context-detail '(magit-goto . lineage))
(advice-add 'magit-diff-visit-file :after 'imalison:after-magit-visit-file)
(add-hook 'magit-popup-mode-hook 'imalison:disable-show-trailing-whitespace)))
@@ -3121,6 +3186,20 @@ My org-mode configuration now lives in its own file org-config.org.
:disabled t
:after magit)
#+end_src
** vc
#+begin_src emacs-lisp
(use-package vc
:config
(progn
(defun vc-find-revision-of-file (revision)
(interactive
(list (vc-read-revision
"Revision to visit: "
(list (imalison:join-paths (magit-toplevel) (car (magit-list-files)))))))
(let* ((file (completing-read "Select file to visit: " (magit-revision-files revision)))
(full-file (imalison:join-paths (magit-toplevel) file)))
(switch-to-buffer (vc-find-revision full-file revision))))))
#+end_src
** git-link
#+BEGIN_SRC emacs-lisp
(use-package git-link
@@ -3245,6 +3324,14 @@ modeline and with excessive http requests to github.
gist-unstar gist-list-starred gist-fork))
#+END_SRC
* Programming
** emr
emr (emacs refactor) provides support for refactoring in many programming languages
#+BEGIN_SRC emacs-lisp
(use-package emr
:bind (:map prog-mode-map
("M-RET" . emr-show-refactor-menu))
:config (emr-initialize))
#+END_SRC
** semantic
#+BEGIN_SRC emacs-lisp
(use-package semantic
@@ -3301,7 +3388,8 @@ modeline and with excessive http requests to github.
(file-name-directory
(file-truename (imalison:join-paths eat--install-path "eat.el"))))
(eat-compile-terminfo)
(setq eat-term-shell-integration-directory (imalison:join-paths eat--install-path "integration"))))
(setq eat-term-shell-integration-directory
(imalison:join-paths eat--install-path "integration"))))
#+end_src
** term
The main thing I do here is restore a bunch of keybindings that are eliminated
@@ -3310,7 +3398,6 @@ in term-mode. This makes term-mode 1000% more useful
#+BEGIN_SRC emacs-lisp
(use-package term
:demand t
:ensure nil
:preface
(progn
(defun imalison:avy-term (arg)
@@ -3375,7 +3462,6 @@ in term-mode. This makes term-mode 1000% more useful
#+BEGIN_SRC emacs-lisp
(use-package term-projectile
:bind ("C-c 7" . imalison:term-hydra-global/body)
:after emit
:commands
(term-projectile-backward
term-projectile-create-new
@@ -3486,6 +3572,15 @@ crux-reopen-as-root-mode makes it so that any file owned by root will automatica
(setq gptel-model "gpt-4")
))
#+end_src
** claude-code-ide
#+begin_src emacs-lisp
(use-package claude-code-ide
:straight (:type git :host github :repo "manzaltu/claude-code-ide.el")
:bind ("C-c C-'" . claude-code-ide-menu)
:config
(claude-code-ide-emacs-tools-setup)
(setq claude-code-ide-terminal-backend 'eat))
#+end_src
* Cooperation
** togetherly
#+BEGIN_SRC emacs-lisp
@@ -3547,7 +3642,6 @@ I don't use iedit directly, but it is used by [[*emr][emr]] and I need to disabl
** narrow-indirect
#+BEGIN_SRC emacs-lisp
(use-package narrow-indirect
:ensure nil
:init
(progn
(define-key ctl-x-4-map "nd" 'ni-narrow-to-defun-indirect-other-window)
@@ -3583,20 +3677,11 @@ I had to disable this mode because something that it does messes with coding set
(interactive)
(setq dtrt-indent-original-indent nil)
(dtrt-indent-adapt)))
:init (add-hook 'prog-mode-hook 'dtrt-indent-mode)
:config
(progn
(add-hook 'prog-mode-hook 'dtrt-indent-mode)
(setq dtrt-indent-active-mode-line-info " [⟼]")))
#+END_SRC
** indent-guide
#+BEGIN_SRC emacs-lisp
(use-package indent-guide
:disabled t
:config
(progn
(indent-guide-global-mode -1)
(setq indent-guide-delay 0.1)))
#+END_SRC
** rainbow-delimiters
#+BEGIN_SRC emacs-lisp
(use-package rainbow-delimiters
@@ -3605,30 +3690,14 @@ I had to disable this mode because something that it does messes with coding set
(progn
(add-hook 'prog-mode-hook (lambda () (rainbow-delimiters-mode t)))))
#+END_SRC
** undo-tree
Disabled because it makes it hard to redo things
#+BEGIN_SRC emacs-lisp
(use-package undo-tree
:disabled t
:bind (("C--" . undo-redo)
("C-c u" . undo-tree-visualize)
("C-c r" . undo-tree-redo))
:config
(diminish 'undo-tree-mode)
:init
(progn
;;(setq undo-tree-visualizer-diff t) ;; This causes performance problems
(setq undo-limit (expt 2 25)
undo-strong-limit (expt 2 25))
(global-undo-tree-mode)
(setq undo-tree-visualizer-timestamps t)))
#+END_SRC
** vundo
#+begin_src emacs-lisp
(use-package vundo)
#+end_src
** recentf
#+BEGIN_SRC emacs-lisp
(use-package recentf
:ensure nil
:demand t
:after shut-up
:config
(progn
(setq recentf-max-saved-items 1000
@@ -3724,7 +3793,6 @@ Not really sure what this is
#+BEGIN_SRC emacs-lisp
(use-package epg
:after shut-up
:ensure nil
:config
(shut-up
(epa-file-enable)))
@@ -3747,6 +3815,113 @@ Not really sure what this is
:disabled t ;; fails to load eieio on startup
)
#+END_SRC
** mu4e
#+BEGIN_SRC emacs-lisp
;; (eval-when-compile
;; (require 's)
;; (defvar mu4e-elisp-directory
;; (s-trim (shell-command-to-string "mu4e_directory"))))
(use-package mu4e
:disabled t
:load-path mu4e-elisp-directory
:straight nil
:commands (mu4e mu4e-view-message-with-msgid mu4e-update-index email)
:bind ("C-c 0" . email)
:config
(progn
(defun email (&optional arg)
(interactive "P")
(if (string-equal (persp-name persp-curr) "email")
(progn (delete-other-windows) (mu4e))
(progn
(persp-switch "email")
(when (or (not (mu4e-running-p)) arg)
(delete-other-windows) (mu4e)))))
;; enable inline images
(setq mu4e-view-show-images t)
;; show images
(setq mu4e-show-images t)
;; Try to display html as text
(setq mu4e-view-prefer-html nil)
(setq mu4e-html2text-command "html2text -width 80 -nobs -utf8")
;; use imagemagick, if available
(when (fboundp 'imagemagick-register-types)
(imagemagick-register-types))
(setq mail-user-agent 'mu4e-user-agent)
(require 'org-mu4e)
(setq mu4e-compose-complete-only-after nil)
(setq mu4e-maildir "~/Mail")
(setq mu4e-drafts-folder "/[Gmail].Drafts")
(setq mu4e-sent-folder "/[Gmail].Sent Mail")
(setq mu4e-trash-folder "/[Gmail].Trash")
(setq mu4e-sent-messages-behavior 'delete)
(setq mu4e-headers-skip-duplicates t)
(setq mu4e-update-interval (* 60 20))
(setq message-kill-buffer-on-exit t)
(setq mail-user-agent 'mu4e-user-agent) ;; make mu4e the default mail client
;; don't save message to Sent Messages, Gmail/IMAP takes care of this
(setq mu4e-sent-messages-behavior 'delete)
;; allow for updating mail using 'U' in the main view:
(setq mu4e-get-mail-command "timeout 60 offlineimap")
(add-hook 'mu4e-compose-mode-hook
(defun my-do-compose-stuff () (flyspell-mode)))
(add-to-list 'mu4e-headers-actions '("view in browser" . mu4e-action-view-in-browser))
(add-to-list 'mu4e-view-actions '("view in browser" . mu4e-action-view-in-browser))
(defun mu4e-view (msg headersbuf)
"Display the message MSG in a new buffer, and keep in sync with HDRSBUF.
'In sync' here means that moving to the next/previous message in
the the message view affects HDRSBUF, as does marking etc.
As a side-effect, a message that is being viewed loses its 'unread'
marking if it still had that."
(let* ((embedded ;; is it as an embedded msg (ie. message/rfc822 att)?
(when (gethash (mu4e-message-field msg :path)
mu4e~path-parent-docid-map) t))
(buf
(if embedded
(mu4e~view-embedded-winbuf)
(get-buffer-create mu4e~view-buffer-name))))
;; note: mu4e~view-mark-as-read will pseudo-recursively call mu4e-view again
;; by triggering mu4e~view again as it marks the message as read
(with-current-buffer buf
(switch-to-buffer buf)
(setq mu4e~view-msg msg)
;;(or embedded (not (mu4e~view-mark-as-read msg)))
(when (or (mu4e~view-mark-as-read msg) t)
(let ((inhibit-read-only t))
(erase-buffer)
(mu4e~delete-all-overlays)
(insert (mu4e-view-message-text msg))
(goto-char (point-min))
(mu4e~fontify-cited)
(mu4e~fontify-signature)
(mu4e~view-make-urls-clickable)
(mu4e~view-show-images-maybe msg)
(setq
mu4e~view-buffer buf
mu4e~view-headers-buffer headersbuf)
(when embedded (local-set-key "q" 'kill-buffer-and-window))
(mu4e-view-mode))))))
(require 'smtpmail)
;; alternatively, for emacs-24 you can use:
(setq message-send-mail-function 'smtpmail-send-it
smtpmail-stream-type 'starttls
smtpmail-default-smtp-server "smtp.gmail.com"
smtpmail-smtp-server "smtp.gmail.com"
smtpmail-smtp-service 587)))
#+END_SRC
** gmail-message-mode
This is useful with server mode when editing gmail messages. I think that it is not currently working, or it may need to be manually enabled.
#+BEGIN_SRC emacs-lisp
@@ -3781,6 +3956,56 @@ This is useful with server mode when editing gmail messages. I think that it is
:notifier 'imalison:windows-toast-notify)
(setq alert-default-style 'windows-toast))))
#+END_SRC
** sauron
#+BEGIN_SRC emacs-lisp
(use-package sauron
:disabled t
:defer 5
:commands (sauron-start sauron-start-hidden)
:init
(progn
(when (eq system-type 'darwin)
(setq sauron-modules '(sauron-erc sauron-org sauron-notifications
sauron-twittering sauron-jabber sauron-identica))
(defun sauron-dbus-start ()
nil)
(makunbound 'dbus-path-emacs)))
:config
(progn
(sauron-start-hidden)
;; This should really check (featurep 'dbus) but for some reason
;; this is always true even if support is not there.
(setq sauron-prio-sauron-started 2)
(setq sauron-min-priority 3)
;; (setq sauron-dbus-cookie t) ;; linux only?
(setq sauron-separate-frame nil)
(setq sauron-nick-insensitivity 1)
(defun sauron:jabber-notify (origin priority message &optional properties)
(funcall notify-function "gtalk" message))
(defun sauron:erc-notify (origin priority message &optional properties)
(let ((event (plist-get properties :event)))
(funcall notify-function "IRC" message)))
(defun sauron:mu4e-notify (origin priority message &optional properties)
nil)
(defun sauron:dbus-notify (origin priority message &optional properties)
(funcall notify-function "GMail" message))
(defun sauron:dispatch-notify (origin priority message &optional properties)
(let ((handler (cond ((string= origin "erc") 'sauron:erc-notify)
((string= origin "jabber") 'sauron:jabber-notify)
((string= origin "mu4e") 'sauron:mu4e-notify)
((string= origin "dbus") 'sauron:dbus-notify)
(t (lambda (&rest r) nil)))))
(funcall handler origin priority message properties)))
;; Prefering alert.el for now ;; (add-hook 'sauron-event-added-functions 'sauron:dispatch-notify)
(sauron-start-hidden)
(add-hook 'sauron-event-added-functions 'sauron-alert-el-adapter)))
#+END_SRC
** screenshot
#+BEGIN_SRC emacs-lisp
(use-package screenshot
:commands screenshot)
#+END_SRC
** libmpdee
#+BEGIN_SRC emacs-lisp
(use-package libmpdee
@@ -3911,16 +4136,20 @@ This also adds syntax highlighting for gradle
** jsx-mode
#+BEGIN_SRC emacs-lisp
(use-package jsx-mode
:ensure nil
:defer t)
#+END_SRC
** css
#+BEGIN_SRC emacs-lisp
(use-package css-mode
:ensure nil
:mode (("\\.css\\'" . css-mode)
("\\.rasi\\'" . css-mode)))
#+END_SRC
** sgml-mode
#+BEGIN_SRC emacs-lisp
(use-package sgml-mode
;; :bind ("C-c b" . web-beautify-html) TODO: mode specific, change binding
:commands sgml-mode)
#+END_SRC
** evil
#+BEGIN_SRC emacs-lisp
(use-package evil
@@ -3949,9 +4178,6 @@ Ensure all themes that I use are installed:
(progn
(setq solarized-high-contrast-mode-line t)))
(defun elpaca-function (pkg)
(eval `(elpaca ,pkg)))
(defvar-setq packages-appearance
'(monokai-theme zenburn-theme base16-theme molokai-theme moe-theme
tango-2-theme gotham-theme sublime-themes rainbow-delimiters
@@ -3960,7 +4186,7 @@ Ensure all themes that I use are installed:
forest-blue-theme flatland-theme afternoon-theme
cyberpunk-theme dracula-theme))
(mapcar 'elpaca-function packages-appearance)
(mapcar 'straight-use-package packages-appearance)
(use-package doom-themes
:defer t)
@@ -4115,15 +4341,14 @@ load-theme hook (See the heading below).
(unless imalison:appearance-setup-done
(unless (member imalison:dark-theme custom-enabled-themes)
(load-theme imalison:dark-theme t))
(doom-modeline-mode +1)
(apply 'imalison:appearance args)
(message "running appearance")
(doom-modeline-mode +1)
(setq imalison:default-font-size-pt (face-attribute 'default :height))
(setq imalison:appearance-setup-done t)))
(add-hook 'elpaca-after-init-hook
(lambda () (add-hook 'after-make-frame-functions 'imalison:appearance-setup-hook)))
(add-hook 'elpaca-after-init-hook 'imalison:appearance-setup-hook)
(add-hook 'after-make-frame-functions 'imalison:appearance-setup-hook)
(add-hook 'after-init-hook 'imalison:appearance-setup-hook)
#+END_SRC
* Post Init Custom
#+BEGIN_SRC emacs-lisp

View File

@@ -1,44 +0,0 @@
(defvar elpaca-installer-version 0.7)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil :depth 1
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
(elpaca elpaca-use-package
;; Enable use-package :ensure support for Elpaca.
(elpaca-use-package-mode))

View File

@@ -1,28 +1,41 @@
;; -*- no-byte-compile: t -*-
(let ((bootstrap-file (concat user-emacs-directory "straight/bootstrap.el"))
(bootstrap-version 2))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(setq native-comp-deferred-compilation-deny-list '("magit"))
(setq native-comp-always-compile t)
(setq load-no-native t)
(setq no-native-compile t)
(setq warning-minimum-level :emergency)
(setq straight-disable-native-compile t)
;; This is a workaround for an issue in emacs28 with symlinks. See https://github.com/radian-software/straight.el/issues/701
(defun my-patch-package-find-file-visit-truename (oldfun &rest r)
(let ((find-file-visit-truename nil))
(apply oldfun r)))
(advice-add #'straight--build-autoloads :around
#'my-patch-package-find-file-visit-truename)
(setq package-enable-at-startup nil
straight-use-package-by-default t
straight-vc-git-default-protocol 'ssh)
(straight-use-package 'use-package)
(require 'use-package)
(setq use-package-enable-imenu-support t)
(setq use-package-always-ensure t)
(setq use-package-ensure-function 'straight-use-package-ensure-function)
(defvar imalison:do-benchmark nil)
(defun emacs-directory-filepath (filename)
(concat (file-name-directory load-file-name) filename))
(load (emacs-directory-filepath "elpaca.el"))
(setq use-package-always-ensure t)
(let ((bench-file (concat (file-name-directory user-init-file) "benchmark.el")))
(when (file-exists-p bench-file) (load bench-file)))
@@ -42,9 +55,6 @@
(setq mac-option-modifier 'meta)
(setq mac-command-modifier 'super))
(use-package transient
:demand t)
;; See https://github.com/magit/magit/discussions/4997 . Without this magit is broken.
(use-package magit
:demand t)
@@ -52,56 +62,29 @@
;; This seems to fix issues with helm not explicitly declaring its dependency on async
(use-package async :demand t)
(use-package s :demand t)
;; Without this, org can behave very strangely
(use-package org
:ensure
:straight
(org :type git :host github :repo "colonelpanic8/org-mode" :local-repo "org"
:branch "my-main"
:depth full
:build
:wait t
:branch "my-main-2025"
:depth full :pre-build (straight-recipes-org-elpa--build) :build
(:not autoloads) :files
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*"))))
(:defaults "lisp/*.el" ("etc/styles/" "etc/styles/*")))
:defer t)
(use-package dash :demand t)
(use-package emit
:ensure (emit :type git :host github :repo "colonelpanic8/emit")
:demand t
:config
(progn
(emit-prefix-selector imalison:mark-ring mark-ring)
(emit-prefix-selector imalison:shell-command-on-region
imalison:copy-shell-command-on-region
imalison:shell-command-on-region-replace
imalison:jq-replace)
(defun imalison:jq-replace (start end)
(interactive (region-if-active-otherwise-buffer))
(imalison:shell-command-on-region-replace start end "jq ."))
(emit-compose
imalison:copy-eval-last-sexp kill-new prin1-to-string eval-last-sexp)
(emit-prefix-selector imalison:eval-last-sexp
eval-region-or-last-sexp
imalison:copy-eval-last-sexp)))
(use-package s
:ensure (:inherit t :wait t)
:config
(when (or (equal (s-trim (shell-command-to-string "whoami")) "kat")
imalison:kat-mode)
(let ((debug-on-error t))
(org-babel-load-file
(concat (file-name-directory load-file-name) "kat-mode.org")))))
(let ((debug-on-error t))
(org-babel-load-file
(concat (file-name-directory load-file-name) "README.org")))
;; (when imalison:do-benchmark (benchmark-init/deactivate))
(when (or (equal (s-trim (shell-command-to-string "whoami")) "kat")
imalison:kat-mode)
(let ((debug-on-error t))
(org-babel-load-file
(concat (file-name-directory load-file-name) "kat-mode.org"))))
(when imalison:do-benchmark (benchmark-init/deactivate))
;; Local Variables:
;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)

View File

@@ -58,41 +58,11 @@ This makes evil-mode play nice with org-fc
(file+datetree "~/org/weekly_reviews.org")
(file "~/org/weekly_review_template.org")))))
#+end_src
** Daily Journal Entries
** Journal
#+begin_src emacs-lisp
(defun imalison:journal-filepath-for-date (&optional date)
(interactive (list (org-read-date)))
(let ((date-str (or date (format-time-string "%Y-%m-%d"))))
(imalison:join-paths
org-directory "journal" (concat date-str ".org"))))
(defun imalison:open-todays-org-journal ()
(interactive)
(imalison:open-org-journal (format-time-string "%Y-%m-%d")))
(defun imalison:get-journal-template ()
(with-temp-buffer
(insert-file-contents (imalison:join-paths org-directory "templates" "daily-journal-template.org"))
(buffer-string)))
(defun imalison:open-org-journal (&optional date)
(interactive (list (org-read-date nil nil nil "Select a date:")))
(let* ((filepath (imalison:journal-filepath-for-date date))
(file-existed (file-exists-p filepath))
(date-str (or date (format-time-string "%Y-%m-%d")))
(time-vals (append '(0 0 0) (nthcdr 3 (parse-time-string date-str))))
(original-format-time-string (symbol-function 'format-time-string)))
(find-file filepath)
(when (not file-existed)
(cl-letf (((symbol-function 'format-time-string)
(lambda (format-string &optional _time _universal)
(funcall original-format-time-string format-string (apply #'encode-time time-vals)))))
(insert (org-capture-fill-template (imalison:get-journal-template)))))))
(bind-key "C-c j" 'imalison:open-todays-org-journal)
(setq imalison:journal-template-filepath
(imalison:join-paths org-directory "templates" "daily-journal-template.org"))
#+end_src
** Insert a link to a task selected from agenda
#+begin_src emacs-lisp
(defun imalison:insert-link-to-agenda ()
@@ -161,6 +131,10 @@ This makes evil-mode play nice with org-fc
* Packages
#+begin_src emacs-lisp
(use-package org-drill)
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
#+end_src
@@ -168,3 +142,35 @@ This makes evil-mode play nice with org-fc
#+begin_src emacs-lisp
(setq org-wild-notifier-day-wide-alert-times nil)
#+end_src
* Swift
#+begin_src emacs-lisp
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(package-initialize)
(unless (package-installed-p 'swift-mode)
(package-refresh-contents)
(package-install 'swift-mode))
(unless (package-installed-p 'lsp-mode)
(package-refresh-contents)
(package-install 'lsp-mode))
;; Swift Mode
(require 'swift-mode)
(add-to-list 'auto-mode-alist '("\\.swift\\'" . swift-mode))
;; LSP Mode
(require 'lsp-mode)
(add-hook 'swift-mode-hook #'lsp)
;; Set the path to SourceKit-LSP if it's not in your PATH
(setq lsp-sourcekit-executable "/path/to/sourcekit-lsp")
;; Optional: Set the path to your Swift toolchain if necessary
(setq lsp-sourcekit-executable-args '("-toolchain" "/path/to/swift-toolchain"))
#+end_src

View File

@@ -0,0 +1,91 @@
(let ((current-dir (if load-file-name (file-name-directory load-file-name) "~/.emacs.d/")))
(load (expand-file-name "init.el" current-dir)))
(use-package simple-httpd
:demand t)
(require 'simple-httpd)
(defun org-api-get-todo-elements-from-filepath (filepath)
(let ((todo-elements nil))
(with-current-buffer (find-file-noselect filepath)
(save-excursion
(goto-char (point-min))
(while (re-search-forward org-todo-regexp nil t)
(let* ((element (org-element-at-point))
(type (org-element-type element)))
(when (eq type 'headline)
(let ((todo (org-element-property :todo-keyword element)))
(when todo
(push element todo-elements))))))))
todo-elements))
(defun org-api-get-agenda-todos ()
(let* ((today (calendar-gregorian-from-absolute (org-today))))
(mapcan 'org-api-get-todo-elements-from-filepath org-agenda-files)))
(defun org-api-get-element-json (element)
(let ((todo (org-element-property :todo-keyword element))
(title (org-element-property :raw-value element))
(tags (org-element-property :tags element))
(level (org-element-property :level element))
(scheduled (org-element-property :scheduled element))
(deadline (org-element-property :deadline element)))
`(("todo" . ,todo)
("title" . ,title)
("tags" . ,tags)
("level" . ,level)
("scheduled" . ,(when scheduled (org-format-timestamp scheduled "%Y-%m-%dT%H:%M:%SZ")))
("deadline" . ,(when deadline (org-format-timestamp deadline "%Y-%m-%dT%H:%M:%SZ"))))))
(defun org-api-item-json (item)
(let* ((todo (get-text-property 0 'todo-state item))
(title (substring-no-properties item))
(tags (get-text-property 0 'tags item))
(s (get-text-property 0 'ts-date item))
(scheduled (when s
(org-format-timestamp (org-time-from-absolute s) "%Y-%m-%dT%H:%M:%SZ") )))
`(("todo" . ,todo)
("title" . ,title)
("tags" . ,tags))))
(defun org-api-get-scheduled-or-deadlined (day filepath)
(with-current-buffer (find-file-noselect filepath)
(org-dlet ((date day))
(setf org-agenda-current-date date)
(nconc (org-agenda-get-deadlines) (org-agenda-get-scheduled)))))
(defun org-api-get-today-agenda ()
(let ((day (calendar-current-date)))
(mapcan (lambda (filepath) (org-api-get-scheduled-or-deadlined day filepath))
org-agenda-files)))
(defservlet get-all-todos application/json ()
(insert (json-encode (mapcar 'org-api-get-element-json (org-api-get-agenda-todos)))))
(defservlet get-todays-agenda application/json ()
(insert
(json-encode
(mapcar 'org-api-item-json
(org-api-get-today-agenda)))))
(defservlet create-todo application/json (a b c)
(org-api-capture (gethash "title" (json-parse-string (cadr (assoc "Content" c))))))
(cl-defun org-api-build-capture-template
(content &key (character "d") (heading "Dynamic"))
`(,character ,heading entry (file "~/org/inbox.org")
(function (lambda ()
(imalison:make-org-todo-template :content content)))
:immediate-finish t))
(defun org-api-capture (content)
(let* ((org-capture-templates (list (org-api-build-capture-template content))))
(org-capture nil "d")))
(message "Starting http server")
(setq httpd-port 2025)
(httpd-start)
(message "Finished starting http server")

View File

@@ -62,6 +62,11 @@ We're going to use this to write separate parts of our config to different secti
(imalison:join-paths imalison:shared-org-dir "ivan_orgzly.org")
(imalison:join-paths imalison:org-dir "orgzly.org")))
(defvar imalison:repeating-org-files
(list imalison:org-habits-file imalison:shared-habits-file imalison:shared-repeating-file))
(defvar imalison:include-repeating-in-agenda nil)
(defun imalison:add-to-org-agenda-files (incoming-files)
(setq org-agenda-files
(delete-dups
@@ -366,12 +371,13 @@ We're going to use this to write separate parts of our config to different secti
*** Agenda Files
#+begin_src emacs-lisp :tangle org-config-config.el
(imalison:add-to-org-agenda-files
(nconc (list imalison:org-gtd-file imalison:org-habits-file
imalison:org-calendar-file imalison:org-inbox-file
imalison:shared-org-gtd-file imalison:shared-habits-file
imalison:shared-calendar-file imalison:shared-shopping-file
imalison:shared-repeating-file)
(nconc (list imalison:org-gtd-file imalison:org-calendar-file
imalison:org-inbox-file imalison:shared-org-gtd-file
imalison:shared-calendar-file imalison:shared-shopping-file)
imalison:orgzly-files))
(when imalison:include-repeating-in-agenda
(imalison:add-to-org-agenda-files imalison:repeating-org-files))
#+end_src
*** Predicates
#+begin_src emacs-lisp :tangle org-config-config.el
@@ -588,6 +594,43 @@ specific time, they should appear in the agenda at that time!
(defun imalison:make-org-linked-todo-template ()
(imalison:make-org-todo-template "[#C] %? %A"))
#+end_src
*** Journal
#+begin_src emacs-lisp :tangle org-config-config.el
(defun imalison:journal-filepath-for-date (&optional date)
(interactive (list (org-read-date)))
(let ((date-str (or date (format-time-string "%Y-%m-%d"))))
(imalison:join-paths
org-directory "journal" (concat date-str ".org"))))
(defun imalison:open-todays-org-journal ()
(interactive)
(imalison:open-org-journal (format-time-string "%Y-%m-%d")))
(defvar imalison:journal-template-filepath
(imalison:join-paths org-directory "capture-templates" "journal.org"))
(defun imalison:get-journal-template ()
(with-temp-buffer
(insert-file-contents imalison:journal-template-filepath)
(buffer-string)))
(defun imalison:open-org-journal (&optional date)
(interactive (list (org-read-date nil nil nil "Select a date:")))
(let* ((filepath (imalison:journal-filepath-for-date date))
(file-existed (file-exists-p filepath))
(date-str (or date (format-time-string "%Y-%m-%d")))
(time-vals (append '(0 0 0) (nthcdr 3 (parse-time-string date-str))))
(original-format-time-string (symbol-function 'format-time-string)))
(find-file filepath)
(when (not file-existed)
(cl-letf (((symbol-function 'format-time-string)
(lambda (format-string &optional _time _universal)
(funcall original-format-time-string format-string (apply #'encode-time time-vals)))))
(insert (org-capture-fill-template (imalison:get-journal-template)))))))
(bind-key "C-c j" 'imalison:open-todays-org-journal)
#+end_src
*** Templates
#+begin_src emacs-lisp :tangle org-config-config.el
(use-package org-capture
@@ -626,7 +669,15 @@ SCHEDULED: %^t
:PROPERTIES:
:CREATED: %U
:STYLE: habit
:END:")))
:END:"))
(add-to-list 'org-capture-templates
'("w" "Weekly Planning and Self Assesment"
plain
(function (lambda ()
(find-file (let ((date (format-time-string "%Y-%m-%d")))
(expand-file-name (concat date ".org")
"~/org/weekly")))))
(file "~/org/capture-templates/weekly.org"))))
#+end_src
** Babel
#+begin_src emacs-lisp :tangle org-config-config.el
@@ -803,7 +854,7 @@ alphanumeric characters only."
** Use org-tempo to allow inserting templates using e.g. <s
#+begin_src emacs-lisp
(use-package org-tempo
:ensure nil
:straight nil
:after org)
#+end_src
* Packages
@@ -938,6 +989,9 @@ alphanumeric characters only."
#+end_src
***** ui
#+begin_src emacs-lisp
(use-package emacs-http-server
:demand t)
(use-package org-roam-ui
:after org-roam
:custom

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: inp
# key: inp
# --
import numpy as np

View File

@@ -0,0 +1,5 @@
# -*- mode: snippet -*-
# name: isa
# key: isa
# --
import sqlalchemy as sa

View File

@@ -24,7 +24,6 @@ pom.xml
TAGS
# Vim
*.sw*
*.tmp*
# JavaScript

View File

@@ -1,20 +0,0 @@
binding "gtk-emacs-text-entry"
{
bind "<alt>BackSpace" { "delete-from-cursor" (word-ends, -1) }
}
gtk-theme-name="Paper"
gtk-icon-theme-name="Paper"
gtk-font-name="Roboto 11"
gtk-cursor-theme-name="Paper"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"

164
dotfiles/lib/bin/brightness.hs Executable file
View File

@@ -0,0 +1,164 @@
#!/usr/bin/env runhaskell
import System.Environment (getArgs)
import System.Process
import System.Exit
import Data.List (isPrefixOf, isSuffixOf)
import Data.Maybe (mapMaybe, fromMaybe)
import Text.Read (readMaybe)
import Control.Monad (forM, when)
import Data.Time.Clock
import Data.Time.Format
import System.IO
-- Types
data Device = Device { deviceName :: String, deviceBrightness :: Int }
deriving (Show)
data BrightnessCommand = Absolute Int | Increase Int | Decrease Int | Query
deriving (Show)
-- Logging
logAction :: String -> IO ()
logAction arg = do
time <- getCurrentTime
let timeStr = formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S" time
ppid <- readProcess "sh" ["-c", "ps -p $PPID -o comm= 2>/dev/null || echo unknown"] ""
pwd <- readProcess "pwd" [] ""
let logEntry = "[" ++ timeStr ++ "] Called with: '" ++ arg ++ "' | Parent: " ++
filter (/= '\n') ppid ++ " | PWD: " ++ filter (/= '\n') pwd ++ "\n"
appendFile "/tmp/brightness.log" logEntry
-- Parse command line argument
parseArg :: String -> BrightnessCommand
parseArg "" = Query
parseArg ('+':rest) = case readMaybe rest of
Just n -> Increase n
Nothing -> Query
parseArg ('-':rest) = case readMaybe rest of
Just n -> Decrease n
Nothing -> Query
parseArg s = case readMaybe s of
Just n -> Absolute n
Nothing -> Query
-- Get list of backlight devices
getBacklightDevices :: IO [String]
getBacklightDevices = do
output <- readProcess "brightnessctl" ["--list"] ""
return $ mapMaybe extractDevice (lines output)
where
extractDevice line
| "Device '" `isInfixOf` line && "class 'backlight'" `isInfixOf` line =
let afterDevice = drop (length "Device '") line
deviceName = takeWhile (/= '\'') afterDevice
in if null deviceName then Nothing else Just deviceName
| otherwise = Nothing
-- Get brightness percentage for a device
getDeviceBrightness :: String -> IO (Maybe Int)
getDeviceBrightness device = do
output <- readProcess "brightnessctl" ["-d", device] ""
return $ extractPercentage output
where
extractPercentage s = case dropWhile (/= '(') s of
('(':rest) -> readMaybe (takeWhile (/= '%') rest)
_ -> Nothing
-- Set brightness for a device
setDeviceBrightness :: String -> String -> IO ()
setDeviceBrightness device cmd = do
_ <- readProcess "brightnessctl" ["-d", device, "set", cmd] ""
return ()
-- Build brightness command string
buildCommand :: BrightnessCommand -> String
buildCommand (Absolute n) = show n ++ "%"
buildCommand (Increase n) = show n ++ "%+"
buildCommand (Decrease n) = show n ++ "%-"
buildCommand Query = ""
-- Apply brightness change to all devices
applyBrightness :: BrightnessCommand -> IO ()
applyBrightness Query = return ()
applyBrightness cmd = do
devices <- getBacklightDevices
let cmdStr = buildCommand cmd
-- Log what we're about to do
appendFile "/tmp/brightness.log" $
" Applying: " ++ cmdStr ++ " to devices: " ++ show devices ++ "\n"
-- Apply to all devices
mapM_ (\dev -> setDeviceBrightness dev cmdStr) devices
-- Sync devices if needed
when (length devices > 1) $ do
brightnesses <- forM devices $ \dev -> do
mbBright <- getDeviceBrightness dev
return (dev, mbBright)
let validBrightnesses = [(d, b) | (d, Just b) <- brightnesses]
when (not $ null validBrightnesses) $ do
let values = map snd validBrightnesses
maxBright = maximum values
minBright = minimum values
-- If devices are out of sync
when (maxBright /= minBright) $ do
-- Use minimum when brightness is low (15% or below)
let syncValue = if maxBright <= 15 then minBright else maxBright
-- Log sync decision for debugging
appendFile "/tmp/brightness.log" $
" Syncing: max=" ++ show maxBright ++ "%, min=" ++ show minBright ++
"%, using=" ++ show syncValue ++ "%\n"
mapM_ (\dev -> setDeviceBrightness dev (show syncValue ++ "%")) devices
-- Get average brightness across all devices
getAverageBrightness :: IO Int
getAverageBrightness = do
devices <- getBacklightDevices
if null devices
then return 50 -- Default fallback
else do
brightnesses <- forM devices getDeviceBrightness
let validValues = [b | Just b <- brightnesses]
if null validValues
then return 50
else return $ sum validValues `div` length validValues
-- Send notification using rumno if available
sendNotification :: Int -> IO ()
sendNotification brightness = do
rumnoExists <- (== ExitSuccess) <$>
rawSystem "sh" ["-c", "command -v rumno >/dev/null 2>&1"]
if rumnoExists
then do
_ <- readProcess "rumno" ["notify", "-b", show brightness] ""
return ()
else putStrLn (show brightness)
-- Check if a string contains another
isInfixOf :: String -> String -> Bool
isInfixOf needle haystack = any (isPrefixOf needle) (tails haystack)
where
tails [] = [[]]
tails xs@(_:xs') = xs : tails xs'
main :: IO ()
main = do
args <- getArgs
let arg = case args of
[] -> ""
(x:_) -> x
-- Log the invocation
logAction arg
-- Parse and apply command
let cmd = parseArg arg
applyBrightness cmd
-- Get current brightness and notify
brightness <- getAverageBrightness
sendNotification brightness

View File

@@ -1,3 +1,92 @@
#!/usr/bin/env sh
#!/usr/bin/env bash
volnoti-show $(sudo brightness_manager.py -c "$@" -p)
# Get the brightness argument (default to empty string to just show current)
ARG="${1:-}"
# Log the incoming arguments for debugging
echo "[$(date '+%Y-%m-%d %H:%M:%S')] brightness.sh called with: '$ARG' (all args: $@)" >> /tmp/brightness_bash.log
# Function to get current brightness percentage
get_brightness_percentage() {
# Get list of display backlight devices only (filter by class 'backlight')
local devices=$(brightnessctl --list 2>/dev/null | grep 'class.*backlight' | cut -d' ' -f2 | cut -d"'" -f2)
local device_count=$(echo "$devices" | wc -w)
if [ "$device_count" -eq 0 ]; then
echo "50" # Default fallback
return
fi
if [ "$device_count" -eq 1 ]; then
# Single device - just output its percentage
local info=$(brightnessctl 2>/dev/null | grep -oP '\d+%' | head -1 | tr -d '%')
if [ -n "$info" ]; then
echo "$info"
else
echo "50"
fi
else
# Multiple devices - calculate average brightness
local total=0
local count=0
for device in $devices; do
local info=$(brightnessctl -d "$device" 2>/dev/null | grep -oP '\d+%' | head -1 | tr -d '%')
if [ -n "$info" ]; then
total=$((total + info))
count=$((count + 1))
fi
done
if [ "$count" -gt 0 ]; then
echo $((total / count))
else
echo "50"
fi
fi
}
# Apply brightness change if argument provided
if [ -n "$ARG" ]; then
# Determine if it's absolute or relative
if [[ "$ARG" == "up" ]]; then
# Increase by 5%
BRIGHTNESS_CMD="5%+"
elif [[ "$ARG" == "down" ]]; then
# Decrease by 5%
BRIGHTNESS_CMD="5%-"
elif [[ "$ARG" == +* ]]; then
# Relative increase (e.g., +5)
BRIGHTNESS_CMD="${ARG:1}%+"
elif [[ "$ARG" == -* ]]; then
# Relative decrease (e.g., -5)
BRIGHTNESS_CMD="${ARG:1}%-"
else
# Absolute value (e.g., 50)
BRIGHTNESS_CMD="${ARG}%"
fi
# Try to apply to all devices
# Get list of display backlight devices only (filter by class 'backlight')
DEVICES=$(brightnessctl --list 2>/dev/null | grep 'class.*backlight' | cut -d' ' -f2 | cut -d"'" -f2)
if [ -n "$DEVICES" ]; then
# Apply to each device independently without syncing
# This allows each device to maintain its own brightness range
for device in $DEVICES; do
brightnessctl -d "$device" set "$BRIGHTNESS_CMD" >/dev/null 2>&1
done
else
# Fallback: just run brightnessctl without specifying device
brightnessctl set "$BRIGHTNESS_CMD" >/dev/null 2>&1
fi
fi
# Get current brightness percentage for display
BRIGHTNESS=$(get_brightness_percentage)
# Show notification if rumno is available
if command -v rumno &> /dev/null; then
rumno notify -b "$BRIGHTNESS"
else
echo "$BRIGHTNESS"
fi

View File

@@ -1,76 +0,0 @@
#!/usr/bin/env python
import argparse
import os
import sys
class BrightnessManager(object):
@classmethod
def find_brightness(cls):
return cls.from_path(
os.path.join("/sys/class/backlight", os.listdir("/sys/class/backlight")[0])
)
@classmethod
def from_path(cls, path):
return cls(
set_brightness_filepath=os.path.join(path, "brightness"),
actual_brightness_filepath=os.path.join(path, "actual_brightness"),
max_brightness_filepath=os.path.join(path, "max_brightness"),
)
def __init__(
self, set_brightness_filepath, max_brightness_filepath, actual_brightness_filepath
):
self.set_brightness_filepath = set_brightness_filepath
self.max_brightness_filepath = max_brightness_filepath
self.actual_brightness_filepath = actual_brightness_filepath
@property
def current_brightness(self):
with open(self.actual_brightness_filepath) as fd:
return int(fd.read())
@property
def max_brightness(self):
with open(self.max_brightness_filepath) as fd:
return int(fd.read())
@current_brightness.setter
def current_brightness(self, brightness):
with open(self.set_brightness_filepath, 'w') as fd:
fd.write(str(brightness))
def increment_by_proportion(self, proportion):
new_brightness = self.current_brightness + int(self.max_brightness * proportion)
new_brightness = min(new_brightness, self.max_brightness)
self.current_brightness = new_brightness
@property
def current_proportion(self):
return float(self.current_brightness) / self.max_brightness
def build_parser():
parser = argparse.ArgumentParser(
description='Interact with macbook brightness',
)
parser.add_argument(
"--change", "-c",
help="Change volume by the given percentage",
default=0
)
parser.add_argument(
"--print", "-p", dest="do_print",
action='store_true',
default=False
)
return parser
if __name__ == '__main__':
args = build_parser().parse_args()
BrightnessManager.find_brightness().increment_by_proportion(float(args.change) / 100)
if args.do_print:
print(int(IntelBrightnessManager.current_proportion * 100))

7
dotfiles/lib/functions/ns Executable file
View File

@@ -0,0 +1,7 @@
#!/usr/bin/env sh
function ns {
sk --ansi -i -c 'nix-search "{}"' | get_cols 1
}
ns "$@"

View File

@@ -2,12 +2,12 @@
function pashowvolume {
if paismuted; then
volnoti-show -m
rumno notify -m
else
actual=$(pavolume)
max=100
show=$(( actual < max ? actual : max ))
volnoti-show "$show"
rumno notify -v "$show"
fi
}

View File

@@ -1,9 +1,7 @@
#!/usr/bin/env sh
function pavolume {
pacmd list-sinks |
awk '/^\s+name: /{indefault = $2 == "<'"$(pasink)"'>"}
/^\s+volume: / && indefault {print $5; exit}' | grep -Eo "[0-9]*"
pactl get-sink-volume $(pactl get-default-sink) | FS="/" get_cols 2 | grep -oE '[0-9]*'
}
pavolume

View File

@@ -1,10 +1,6 @@
#!/usr/bin/env sh
function set_volume {
current_default=$(pahelper list | grep '*' | all_after_char ":" | xargs)
environment_variable_exists USE_ONLY_O_PASINK && pahelper "$current_default"
# XXX: this does not prevent volumes higher than 100
pulsemixer "$@"
pashowvolume
}

View File

@@ -13,7 +13,7 @@ section: aliases
tv:
imalison-arch
imalison-desktop
imalison-home
imalison-home justin-bieber-creek
controlling:
uber-loaner
imalison-mpb-arch
@@ -22,4 +22,5 @@ section: aliases
kat-uber-loaner
Dean-PC
imalison-mbp
strixi-minaj
end

View File

@@ -0,0 +1,5 @@
# Automatically rename new sessions to the basename of the current directory
set-hook -g session-created 'run-shell "tmux rename-session -t #{session_name} $(basename #{pane_current_path})"'
# Also rename when attaching to a session (optional)
set-hook -g client-session-changed 'run-shell "tmux rename-session -t #{session_name} $(basename #{pane_current_path})"'

293
nix-darwin/flake.lock generated Normal file
View File

@@ -0,0 +1,293 @@
{
"nodes": {
"agenix": {
"inputs": {
"darwin": "darwin",
"home-manager": "home-manager_2",
"nixpkgs": [
"railbird-secrets",
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1707830867,
"narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=",
"owner": "ryantm",
"repo": "agenix",
"rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"brew-src": {
"flake": false,
"locked": {
"lastModified": 1763638478,
"narHash": "sha256-n/IMowE9S23ovmTkKX7KhxXC2Yq41EAVFR2FBIXPcT8=",
"owner": "Homebrew",
"repo": "brew",
"rev": "fbfdbaba008189499958a7aeb1e2c36ab10c067d",
"type": "github"
},
"original": {
"owner": "Homebrew",
"ref": "5.0.3",
"repo": "brew",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"railbird-secrets",
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1700795494,
"narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d",
"type": "github"
},
"original": {
"owner": "lnl7",
"ref": "master",
"repo": "nix-darwin",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1709126324,
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1767930051,
"narHash": "sha256-YXtqo8h5bAbqC64XAPMMsZdYk8XkwkyNj/7XOsIyVf8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "297a08510894822ddd93ee2cfc66d6ac65a3cebb",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"railbird-secrets",
"agenix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1703113217,
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"homebrew-cask": {
"flake": false,
"locked": {
"lastModified": 1767937441,
"narHash": "sha256-hiGvxqI6npGOAnNwMXkF1628IkyKhhYsAqO5kmSAuqM=",
"owner": "homebrew",
"repo": "homebrew-cask",
"rev": "cc94d21fe7abb3cc93db50671bf5048176711be9",
"type": "github"
},
"original": {
"owner": "homebrew",
"repo": "homebrew-cask",
"type": "github"
}
},
"homebrew-core": {
"flake": false,
"locked": {
"lastModified": 1767948289,
"narHash": "sha256-a6s+kRHOXRq4QoA4bDLZVKpC1woi6tTRqEt8Vk0ikGo=",
"owner": "homebrew",
"repo": "homebrew-core",
"rev": "f268dcd932823c65f8feb2cfc533300ccbcc4541",
"type": "github"
},
"original": {
"owner": "homebrew",
"repo": "homebrew-core",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1767718503,
"narHash": "sha256-V+VkFs0aSG0ca8p/N3gib7FAf4cq9jyr5Gm+ZBrHQpo=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "9f48ffaca1f44b3e590976b4da8666a9e86e6eb1",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"nix-homebrew": {
"inputs": {
"brew-src": "brew-src"
},
"locked": {
"lastModified": 1764473698,
"narHash": "sha256-C91gPgv6udN5WuIZWNehp8qdLqlrzX6iF/YyboOj6XI=",
"owner": "zhaofengli-wip",
"repo": "nix-homebrew",
"rev": "6a8ab60bfd66154feeaa1021fc3b32684814a62a",
"type": "github"
},
"original": {
"owner": "zhaofengli-wip",
"repo": "nix-homebrew",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1767364772,
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "16c7794d0a28b5a37904d55bcca36003b9109aaa",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1709703039,
"narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"railbird-secrets": {
"inputs": {
"agenix": "agenix",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1766173571,
"narHash": "sha256-iYU5oTgXkZHqkb03IDPVMHA4Yte4AFhusTem0nf7pcc=",
"ref": "refs/heads/master",
"rev": "5b42885b7c702fb30b4678e5cb51cc8501fd7830",
"revCount": 139,
"type": "git",
"url": "ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git"
},
"original": {
"type": "git",
"url": "ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"homebrew-cask": "homebrew-cask",
"homebrew-core": "homebrew-core",
"nix-darwin": "nix-darwin",
"nix-homebrew": "nix-homebrew",
"nixpkgs": "nixpkgs",
"railbird-secrets": "railbird-secrets"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

211
nix-darwin/flake.nix Normal file
View File

@@ -0,0 +1,211 @@
{
description = "Example Darwin system flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nix-darwin.url = "github:LnL7/nix-darwin";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
railbird-secrets = {
url = "git+ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git";
};
nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew";
# Optional: Declarative tap management
homebrew-core = {
url = "github:homebrew/homebrew-core";
flake = false;
};
homebrew-cask = {
url = "github:homebrew/homebrew-cask";
flake = false;
};
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, ... }:
let
libDir = ../dotfiles/lib;
configuration = { pkgs, config, ... }: {
networking.hostName = "mac-demarco-mini";
imports = [ (import ./gitea-actions-runner.nix) ];
services.gitea-actions-runner = {
user = "gitea-runner";
instances.nix = {
enable = true;
name = config.networking.hostName;
url = "https://dev.railbird.ai";
token = "H0A7YXAWsKSp9QzvMymfJI12hbxwR7UerEHpCJUe";
labels = [
"nix-darwin-${pkgs.system}:host"
"macos-aarch64-darwin"
"nix:host"
];
settings = {
cache = {
enabled = true;
};
host = {
workdir_parent = "/var/lib/gitea-runner/action-cache-dir";
};
};
hostPackages = with pkgs; [
bash
coreutils
curl
direnv
gawk
just
git-lfs
isort
gitFull
gnused
ncdu
nixVersions.stable
nodejs
openssh
wget
];
};
};
launchd.daemons.gitea-runner-nix.serviceConfig.EnvironmentVariables = {
XDG_CONFIG_HOME = "/var/lib/gitea-runner";
XDG_CACHE_HOME = "/var/lib/gitea-runner/.cache";
XDG_RUNTIME_DIR = "/var/lib/gitea-runner/tmp";
};
system.primaryUser = "kat";
# launchd.daemons.gitea-runner-restarter = {
# serviceConfig = {
# ProgramArguments = [
# "/usr/bin/env"
# "bash"
# "-c"
# ''
# SERVICE_NAME="org.nixos.gitea-runner-nix"
# while true; do
# # Check the second column of launchctl list output for our service
# EXIT_CODE=$(sudo launchctl list | grep "$SERVICE_NAME" | awk '{print $2}')
# if [ -z "$EXIT_CODE" ]; then
# echo "$(date): $SERVICE_NAME is running correctly. Terminating the restarter."
# exit 0
# else
# echo "$(date): $SERVICE_NAME is not running or in error state. Attempting to restart..."
# sudo launchctl bootout system/$SERVICE_NAME 2>/dev/null || true
# sudo launchctl load /Library/LaunchDaemons/$SERVICE_NAME.plist
# sleep 2 # Give the service some time to start
# fi
# done
# ''
# ];
# RunAtLoad = true;
# ThrottleInterval = 300;
# };
# };
launchd.daemons.does-anything-work = {
serviceConfig = {
ProgramArguments = ["/usr/bin/env" "bash" "-c" "date > /var/log/does-anything-work"];
RunAtLoad = true;
};
};
nixpkgs.overlays = [(import ../nixos/overlay.nix)];
environment.systemPackages = with pkgs; [
#python-with-my-packages
emacs
alejandra
cocoapods
gitFull
just
tmux
htop
nodePackages.prettier
nodejs
ripgrep
slack
claude-code
typescript
vim
yarn
];
nixpkgs.config.allowUnfree = true;
# Auto upgrade nix package and the daemon service.
launchd.user.envVariables.PATH = config.environment.systemPath;
programs.direnv.enable = true;
# Necessary for using flakes on this system.
nix.settings.experimental-features = "nix-command flakes";
# Set Git commit hash for darwin-version.
system.configurationRevision = self.rev or self.dirtyRev or null;
# Used for backwards compatibility, please read the changelog before changing
system.stateVersion = 4;
# The platform the configuration will be used on.
nixpkgs.hostPlatform = "aarch64-darwin";
users.users.kat.openssh.authorizedKeys.keys = inputs.railbird-secrets.keys.kanivanKeys;
users.users.gitea-runner = {
name = "gitea-runner";
isHidden = false;
home = "/Users/gitea-runner";
createHome = false;
};
home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true;
users.users.kat = {
name = "kat";
home = "/Users/kat";
};
programs.zsh = {
enable = true;
shellInit = ''
fpath+="${libDir}/functions"
for file in "${libDir}/functions/"*
do
autoload "''${file##*/}"
done
'';
interactiveShellInit = ''
# eval "$(register-python-argcomplete prb)"
# eval "$(register-python-argcomplete prod-prb)"
# eval "$(register-python-argcomplete railbird)"
# [ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"
autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
'';
};
home-manager.users.kat = {
programs.starship = {
enable = true;
};
programs.zsh.enable = true;
home.stateVersion = "24.05";
};
};
in
{
darwinConfigurations."mac-demarco-mini" = nix-darwin.lib.darwinSystem {
modules = [
home-manager.darwinModules.home-manager
configuration
];
};
# Expose the package set, including overlays, for convenience.
darwinPackages = self.darwinConfigurations."mac-demarco-mini".pkgs;
};
}

View File

@@ -0,0 +1,176 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.services.gitea-actions-runner;
settingsFormat = pkgs.formats.yaml {};
hasDockerScheme = instance:
instance.labels == [] || any (label: hasInfix ":docker:" label) instance.labels;
wantsContainerRuntime = any hasDockerScheme (attrValues cfg.instances);
hasHostScheme = instance: any (label: hasSuffix ":host" label) instance.labels;
tokenXorTokenFile = instance:
(instance.token == null && instance.tokenFile != null)
|| (instance.token != null && instance.tokenFile == null);
in {
options.services.gitea-actions-runner = {
package = mkOption {
type = types.package;
default = pkgs.gitea-actions-runner;
defaultText = literalExpression "pkgs.gitea-actions-runner";
description = "The gitea-actions-runner package to use.";
};
user = mkOption {
type = types.str;
default = "gitea-runner";
description = "The user account under which the Gitea Actions Runner should run.";
};
instances = mkOption {
default = {};
description = "Gitea Actions Runner instances.";
type = types.attrsOf (types.submodule {
options = {
enable = mkEnableOption "Gitea Actions Runner instance";
name = mkOption {
type = types.str;
example = "my-runner";
description = "The name identifying the runner instance towards the Gitea/Forgejo instance.";
};
url = mkOption {
type = types.str;
example = "https://forge.example.com";
description = "Base URL of your Gitea/Forgejo instance.";
};
token = mkOption {
type = types.nullOr types.str;
default = null;
description = "Plain token to register at the configured Gitea/Forgejo instance.";
};
tokenFile = mkOption {
type = types.nullOr (types.either types.str types.path);
default = null;
description = "Path to a file containing the token to register at the configured Gitea/Forgejo instance.";
};
labels = mkOption {
type = types.listOf types.str;
default = [];
example = ["macos:host" "x86_64:host"];
description = "Labels used to map jobs to their runtime environment.";
};
settings = mkOption {
description = "Configuration for `act_runner daemon`.";
type = types.submodule {
freeformType = settingsFormat.type;
};
default = {};
};
hostPackages = mkOption {
type = types.listOf types.package;
default = with pkgs; [
bash
coreutils
curl
gawk
git
gnused
nodejs
wget
openssh
];
description = "List of packages available to actions when the runner is configured with a host execution label.";
};
};
});
};
};
config = mkIf (cfg.instances != {}) {
assertions = [
{
assertion = all tokenXorTokenFile (attrValues cfg.instances);
message = "Instances of gitea-actions-runner can have `token` or `tokenFile`, not both.";
}
];
users.users.${cfg.user} = {
name = cfg.user;
description = "Gitea Actions Runner user";
};
launchd.daemons =
(mapAttrs' (
name: instance:
nameValuePair "gitea-runner-${name}" {
serviceConfig = {
ProgramArguments = [
"/usr/bin/env"
"bash"
"-c"
''
cd /var/lib/gitea-runner/${name}
exec ${cfg.package}/bin/act_runner daemon --config ${settingsFormat.generate "config.yaml" instance.settings}
''
];
KeepAlive = true;
ThrottleInterval = 5;
SessionCreate = true;
UserName = cfg.user;
GroupName = "staff";
WorkingDirectory = "/var/lib/gitea-runner/${name}";
EnvironmentVariables = {
PATH = (lib.makeBinPath (instance.hostPackages ++ [cfg.package])) + ":/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin";
};
};
}
)
cfg.instances)
// (mapAttrs' (
name: instance:
nameValuePair "gitea-runner-setup-${name}"
{
serviceConfig = {
EnvironmentVariables =
{}
// optionalAttrs (instance.token != null) {
TOKEN = instance.token;
};
RunAtLoad = true;
ProgramArguments = [
"${pkgs.writeShellScript "gitea-runner-setup-${name}" ''
mkdir -p /var/lib/gitea-runner/${name}
cd /var/lib/gitea-runner/${name}
if [ ! -e "/var/lib/gitea-runner/${name}/.runner" ]; then
${cfg.package}/bin/act_runner register --no-interactive \
--instance ${escapeShellArg instance.url} \
--token "$TOKEN" \
--name ${escapeShellArg instance.name} \
--labels ${escapeShellArg (concatStringsSep "," instance.labels)} \
--config ${settingsFormat.generate "config.yaml" instance.settings}
fi
# Start the runner
chown -R ${cfg.user} /var/lib/gitea-runner
chown -R ${cfg.user} /var/log/gitea-runner
''}"
];
};
}
)
cfg.instances);
};
}

2
nix-darwin/justfile Normal file
View File

@@ -0,0 +1,2 @@
switch:
nix run nix-darwin -- switch --flake .#

View File

@@ -1,12 +1,13 @@
{ config, pkgs, forEachUser, makeEnable, realUsers, ... }:
makeEnable config "modules.base" true {
makeEnable config "myModules.base" true {
nixpkgs.config.permittedInsecurePackages = [
"openssl-1.0.2u"
"electron-12.2.3"
"etcher"
"electron-19.1.9"
"openssl-1.1.1w"
"electron-32.3.3"
"etcher"
"nix-2.16.2"
"openssl-1.0.2u"
"openssl-1.1.1w"
];
# Disabling these waits disables the stuck on boot up issue
@@ -29,15 +30,26 @@ makeEnable config "modules.base" true {
'';
networking.firewall.enable = false;
networking.nameservers = [ "8.8.8.8" "8.8.4.4" ];
networking.networkmanager = {
enable = true;
enableStrongSwan = true;
plugins = [ pkgs.networkmanager-l2tp pkgs.networkmanager-openvpn ];
};
networking.resolvconf.enable = false;
services.mullvad-vpn.enable = true;
# Audio
sound.enable = true;
hardware.pulseaudio.enable = true;
services.pulseaudio.enable = true;
services.pipewire = {
enable = false;
systemWide = true;
alsa.enable = true;
alsa.support32Bit = true;
jack.enable = true;
pulse.enable = true;
};
# Bluetooth
hardware.bluetooth.enable = true;
@@ -53,7 +65,7 @@ makeEnable config "modules.base" true {
defaultLocale = "en_US.UTF-8";
};
# Update timezone automatically
# # Update timezone automatically
services.tzupdate.enable = true;
# TODO: Add a comment explaining what this does.
@@ -61,6 +73,13 @@ makeEnable config "modules.base" true {
virtualisation.docker.enable = true;
virtualisation.podman = {
enable = true;
autoPrune = {
enable = true;
};
};
hardware.keyboard.zsa.enable = true;
services.logind.extraConfig = "RuntimeDirectorySize=5G";
@@ -71,5 +90,5 @@ makeEnable config "modules.base" true {
programs.dconf.enable = true;
home-manager.users = forEachUser (import ./home-manager.nix);
nix.settings.trusted-users = realUsers;
nix.settings.trusted-users = realUsers ++ ["gitea-runner"];
}

View File

@@ -1,5 +1,5 @@
{ pkgs, inputs, config, makeEnable, ... }:
makeEnable config "modules.ben" true {
makeEnable config "myModules.ben" true {
home-manager.backupFileExtension = "backup"; # Add this line
home-manager.users.ben = {
programs.zsh = {

View File

@@ -1,4 +1,4 @@
{ pkgs, config, lib, ... }:
{ pkgs, ... }:
{
imports = [
./essential.nix
@@ -21,7 +21,7 @@
enable = true;
layout = "us";
desktopManager = {
plasma5.enable = true;
plasma6.enable = true;
};
displayManager = {
sddm = {
@@ -36,7 +36,7 @@
'';
};
};
nix = rec {
nix = {
extraOptions = ''
experimental-features = nix-command flakes
'';

View File

@@ -1,10 +1,10 @@
{ config, lib, ... }:
with lib;
let cfg = config.modules.cache-server;
let cfg = config.myModules.cache-server;
in
{
options = {
modules.cache-server = {
myModules.cache-server = {
enable = mkEnableOption "nix cache server";
port = mkOption {
type = types.int;

View File

@@ -1,11 +1,22 @@
{ pkgs, config, makeEnable, ... }:
makeEnable config "modules.code" true {
makeEnable config "myModules.code" true {
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
environment.systemPackages = with pkgs; [
# LLM Tools
claude-code
codex
# MCP
github-mcp-server
gitea-mcp-server
mcp-nixos
playwright-mcp
mcp-language-server
# C
clang
@@ -24,6 +35,8 @@ makeEnable config "modules.code" true {
# Node
nodePackages.npm
nodejs
yarn
prettier
# Typescript
typescript
@@ -43,8 +56,13 @@ makeEnable config "modules.code" true {
ruby
# python
poetry
black
poetry
uv
# kotlin
kotlin
kotlin-language-server
# dhall
haskellPackages.dhall

View File

@@ -17,12 +17,17 @@
./gitea-runner.nix
./gitea.nix
./gnome.nix
./home-assistant.nix
./imalison.nix
./internet-computer.nix
./k3s.nix
./kat.nix
./keybase.nix
./kubelet.nix
./laptop.nix
./nix.nix
./nixified.ai.nix
./nvidia.nix
./options.nix
./plasma.nix
./postgres.nix
@@ -30,10 +35,12 @@
./secrets.nix
./ssh.nix
./syncthing.nix
./tts.nix
./user-specific.nix
./users.nix
./vscode.nix
./wsl.nix
./wyoming.nix
./xmonad.nix
];
@@ -42,17 +49,16 @@
};
config = lib.mkIf config.features.full.enable {
modules.base.enable = true;
modules.desktop.enable = true;
modules.plasma.enable = true;
modules.gnome.enable = false;
modules.xmonad.enable = true;
modules.extra.enable = true;
modules.electron.enable = true;
modules.code.enable = true;
modules.games.enable = true;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.plasma.enable = true;
myModules.gnome.enable = false;
myModules.xmonad.enable = true;
myModules.extra.enable = true;
myModules.electron.enable = true;
myModules.code.enable = true;
myModules.games.enable = false;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
};
}

View File

@@ -1,5 +1,5 @@
{ config, pkgs, makeEnable, ... }:
makeEnable config "modules.desktop" true {
{ inputs, config, pkgs, makeEnable, ... }:
makeEnable config "myModules.desktop" true {
imports = [
./fonts.nix
];
@@ -21,6 +21,8 @@ makeEnable config "modules.desktop" true {
};
};
programs.hyprland.enable = true;
services.autorandr = {
enable = true;
};
@@ -32,9 +34,11 @@ makeEnable config "modules.desktop" true {
services.gnome.gnome-keyring.enable = true;
# Visual notification manager
environment.systemPackages = with pkgs; [
# Appearance
gnome.adwaita-icon-theme
adwaita-icon-theme
hicolor-icon-theme
libsForQt5.breeze-gtk
# materia-theme
@@ -54,45 +58,48 @@ makeEnable config "modules.desktop" true {
# Desktop
alacritty
blueman
clipit
# clipit
d-spy
dolphin
kdePackages.dolphin
# inputs.ghostty.packages."${system}".default
feh
firefox
gnome.cheese
gnome.gpaste
kleopatra
cheese
gpaste
kdePackages.kleopatra
libnotify
libreoffice
lxappearance
lxqt.lxqt-powermanagement
networkmanagerapplet
notify-osd-customizable
okular
picom
kdePackages.okular
pinentry
psensor
# mission-center
quassel
remmina
rofi
wofi
rofi-pass
rofi-systemd
shutter
simplescreenrecorder
skippy-xd
synergy
transmission-gtk
# TODO: reenable
# transmission_3-gtk
vlc
volnoti
xfce.thunar
# Audio
picard
pavucontrol
playerctl
pulsemixer
espeak
#
brightnessctl
# Visualization
graphviz
nodePackages.mermaid-cli

View File

@@ -1,5 +1,5 @@
{ pkgs, config, makeEnable, forEachUser, ... }:
makeEnable config "modules.electron" false {
makeEnable config "myModules.electron" false {
environment.systemPackages = with pkgs; [
element-desktop
# bitwarden

View File

@@ -34,6 +34,10 @@ with lib;
eval "$(register-python-argcomplete prod-prb)"
eval "$(register-python-argcomplete railbird)"
[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"
# Enable bracketed paste
autoload -Uz bracketed-paste-magic
zle -N bracketed-paste bracketed-paste-magic
'';
};

View File

@@ -5,6 +5,7 @@
environment.systemPackages = with pkgs; [
automake
bazel
bento4
bind
binutils
cachix
@@ -16,13 +17,13 @@
emacs
fd
ffmpeg
bento4
file
gawk
gcc
gdb
git-lfs
gh
git-fame
git-lfs
git-sync
gitFull
glxinfo
@@ -42,23 +43,28 @@
neofetch
neovim
nix-index
nix-search-cli
pass
patchelf
pciutils
pstree
pulseaudio
python-with-my-packages
rclone
rcm
ripgrep
runc
silver-searcher
sysz
skim
sshfs
sysz
tmux
tzupdate
udiskie
unzip
usbutils
wget
xkcdpass
yubikey-manager
];
}

View File

@@ -1,6 +1,5 @@
{ config, pkgs, makeEnable, ... }:
makeEnable config "modules.extra" false {
services.expressvpn.enable = true;
makeEnable config "myModules.extra" false {
programs.hyprland.enable = true;
environment.systemPackages = with pkgs; [
@@ -10,7 +9,6 @@ makeEnable config "modules.extra" false {
asciidoctor
roomeqwizard
razergenie
expressvpn
signal-desktop
gource
gimp

1429
nixos/flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,45 @@
{
inputs = {
railbird-secrets = {
url = "git+ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git";
};
nixos-hardware = { url = "github:colonelpanic8/nixos-hardware"; };
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-unstable";
};
home-manager = {
url = "github:nix-community/home-manager";
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
systems = { url = "github:nix-systems/default"; };
git-ignore-nix = {
url = "github:hercules-ci/gitignore.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/master";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware = { url = "github:colonelpanic8/nixos-hardware/my-master"; };
nixos-wsl = { url = "github:nix-community/NixOS-WSL"; };
agenix = { url = "github:ryantm/agenix"; };
railbird-secrets = {
url = "git+ssh://gitea@dev.railbird.ai:1123/railbird/secrets-flake.git";
};
xmonad = {
url = "github:xmonad/xmonad";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
};
};
xmonad-contrib = {
url = "github:IvanMalison/xmonad-contrib/withMyChanges";
inputs = {
@@ -24,35 +50,21 @@
};
};
xmonad = {
url = "github:xmonad/xmonad";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
};
};
taffybar = {
url = "github:taffybar/taffybar";
url = "github:taffybar/taffybar/old-master";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
git-ignore-nix.follows = "git-ignore-nix";
xmonad.follows = "xmonad";
gtk-sni-tray.follows = "gtk-sni-tray";
gtk-strut.follows = "gtk-strut";
};
};
imalison-taffybar = {
url = "path:../dotfiles/config/taffybar";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
xmonad.follows = "xmonad";
taffybar.follows = "taffybar";
};
# inputs = {
# nixpkgs.follows = "nixpkgs";
# flake-utils.follows = "flake-utils";
# xmonad.follows = "xmonad";
# taffybar.follows = "taffybar";
# };
};
notifications-tray-icon = {
@@ -62,18 +74,6 @@
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "systems";
};
systems = { url = "github:nix-systems/default"; };
git-ignore-nix = {
url = "github:hercules-ci/gitignore.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
gtk-sni-tray = {
url = "github:taffybar/gtk-sni-tray";
inputs = {
@@ -104,17 +104,13 @@
vscode-server.url = "github:nix-community/nixos-vscode-server";
nixpkgs-regression = { url = "github:NixOS/nixpkgs"; };
nixified-ai = { url = "github:nixified-ai/flake"; };
nixos-wsl = { url = "github:nix-community/NixOS-WSL"; };
agenix.url = "github:ryantm/agenix";
nixtheplanet.url = "github:matthewcroughan/nixtheplanet";
};
outputs = inputs@{
self, nixpkgs, nixos-hardware, home-manager, taffybar, xmonad,
self, nixpkgs, nixos-hardware, home-manager, taffybar, xmonad, nixtheplanet,
xmonad-contrib, notifications-tray-icon, nix, agenix, imalison-taffybar, ...
}:
let
@@ -126,7 +122,7 @@
name = machineNameFromFilename filename;
value = {
modules = [
(machinesFilepath + ("/" + filename)) agenix.nixosModules.default
(machinesFilepath + ("/" + filename)) agenix.nixosModules.default nixtheplanet.nixosModules.macos-ventura
];
};
};
@@ -141,14 +137,44 @@
};
};
mkConfig =
args@
{ system ? "x86_64-linux"
, baseModules ? []
, modules ? []
, specialArgs ? {}
, ...
}:
nixpkgs.lib.nixosSystem (args // {
let
# Bootstrap nixpkgs for this specific system
bootstrapPkgs = import nixpkgs {
inherit system;
config = {};
overlays = [];
};
# Apply patches to nixpkgs source
patchedSource = bootstrapPkgs.applyPatches {
name = "nixpkgs-patched";
src = nixpkgs;
patches = [
# Rumno service PR
(bootstrapPkgs.fetchpatch {
url = "https://github.com/NixOS/nixpkgs/pull/433540.patch";
hash = "sha256-G4eJaX351/HMB0z4QNfgob+bVuqCcTEMGE7IPNcIGbw=";
})
# git-sync-rs package
(bootstrapPkgs.fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/434160.patch";
hash = "sha256-1xm75lWEKWbX0qsbeXWX3lRRZIFO3/sdrZZYJxKGD2o=";
})
(bootstrapPkgs.fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/NixOS/nixpkgs/pull/436061.patch";
hash = "sha256-HZquaNBB+w5Hm5kdzvaGg7QAOgAf/EPBO7o7pKkIrMY=";
})
];
};
# Get eval-config from patched source
evalConfig = import "${patchedSource}/nixos/lib/eval-config.nix";
in
evalConfig {
inherit system;
modules = baseModules ++ modules;
specialArgs = rec {
@@ -166,7 +192,7 @@
mapAllKeysToValue = keys: value: builtins.listToAttrs (map (name: { inherit name value; }) keys);
forEachUser = mapAllKeysToValue realUsers;
} // specialArgs;
});
};
in
{
nixConfig = {

View File

@@ -1,5 +1,5 @@
{ pkgs, makeEnable, config, ... }:
makeEnable config "modules.fonts" true {
makeEnable config "myModules.fonts" true {
# Enable the gtk icon cache
gtk.iconCache.enable = true;
@@ -21,13 +21,10 @@ makeEnable config "modules.fonts" true {
source-sans-pro
source-serif-pro
twemoji-color-font
(nerdfonts.override { fonts = [
"JetBrainsMono"
"FantasqueSansMono"
"Iosevka"
"VictorMono"
"SourceCodePro"
]; })
nerd-fonts.jetbrains-mono
nerd-fonts.fantasque-sans-mono
nerd-fonts.iosevka
nerd-fonts.victor-mono
];
fontconfig = {
hinting.autohint = true;
@@ -35,7 +32,7 @@ makeEnable config "modules.fonts" true {
allowBitmaps = true;
useEmbeddedBitmaps = true;
defaultFonts = {
monospace = [ "Source Code Pro" ];
monospace = [ "JetBrains Mono" ];
sansSerif = [ "Roboto" ];
serif = [ "Source Serif Pro" ];
};

View File

@@ -1,11 +1,8 @@
{ config, pkgs, makeEnable, ... }:
makeEnable config "modules.games" false {
makeEnable config "myModules.games" false {
environment.systemPackages = with pkgs; [
steam
# heroic
];
boot.extraModulePackages = with pkgs; [
xboxdrv
heroic
];
hardware.xone.enable = true;
}

View File

@@ -1,7 +1,8 @@
{ ... }: {
{ pkgs, ... }: {
home-manager.users.imalison = ({ config, ... }: {
services.git-sync = {
enable = true;
package = pkgs.git-sync-rs;
repositories = {
config = {
path = config.home.homeDirectory + "/config";
@@ -18,7 +19,7 @@
};
katnivan = {
path = config.home.homeDirectory + "/katnivan";
uri = "ssh://gitea@1896Folsom.duckdns.org:1123/colonelpanic/katnivan.git";
uri = "ssh://gitea@dev.railbird.ai:1123/colonelpanic/katnivan.git";
interval = 30;
};
};

View File

@@ -1,7 +1,7 @@
{ pkgs, config, makeEnable, ... }:
makeEnable config "modules.gitea-runner" false {
makeEnable config "myModules.gitea-runner" false {
age.secrets.gitea-runner-token = {
file = ./secrets/gitea-runner-token.${config.networking.hostName}.age;
file = ./secrets/gitea-runner-token.age;
group = "docker";
};
@@ -21,16 +21,17 @@ makeEnable config "modules.gitea-runner" false {
};
hostPackages = with pkgs; [
bash
direnv
coreutils
curl
direnv
docker
gawk
git-lfs
nixFlakes
gitFull
gnused
just
nixVersions.stable
nodejs
docker
openssh
wget
];

View File

@@ -1,5 +1,5 @@
{ config, makeEnable, ... }:
makeEnable config "modules.gitea" false {
makeEnable config "myModules.gitea" false {
services.gitea = {
enable = true;
@@ -8,11 +8,15 @@ makeEnable config "modules.gitea" false {
enable = true;
interval = "23:05";
};
settings.service = {
DISABLE_REGISTRATION = true;
};
settings.server = {
DOMAIN = "dev.railbird.ai";
SSH_PORT = 1123;
HTTP_PORT = 3001;
ROOT_URL = "https://dev.railbird.ai";
DISABLE_REGISTRATION = true;
};
settings.actions = {
ENABLED = true;

View File

@@ -1,5 +1,5 @@
{ config, makeEnable, ... }:
makeEnable config "modules.gnome" false {
makeEnable config "myModules.gnome" false {
services.xserver = {
desktopManager.gnome.enable = true;
displayManager.gdm.enable = true;

119
nixos/home-assistant.nix Normal file
View File

@@ -0,0 +1,119 @@
{ pkgs, config, lib, makeEnable, realUsers, ... }:
makeEnable config "myModules.home-assistant" false {
boot.kernel.sysctl = {
# For all interfaces (e.g. if you want to accept RA on all):
"net.ipv6.conf.all.accept_ra" = lib.mkForce "1";
"net.ipv6.conf.all.accept_ra_rt_info_max_plen" = lib.mkForce "64";
"net.ipv6.conf.default.accept_ra" = lib.mkForce "1";
"net.ipv6.conf.default.accept_ra_rt_info_max_plen" = lib.mkForce "64";
"net.ipv6.conf.wlo1.accept_ra" = lib.mkForce "1";
"net.ipv6.conf.wlo1.accept_ra_rt_info_max_plen" = lib.mkForce "64";
# Ensure forwarding is off on all interfaces unless needed
"net.ipv6.conf.all.forwarding" = lib.mkForce "0";
};
# services.matter-server = {
# enable = true;
# logLevel = "debug";
# extraArgs = let cert-dir = pkgs.fetchFromGitHub {
# repo = "connectedhomeip";
# owner = "project-chip";
# rev = "6e8676be6142bb541fa68048c77f2fc56a21c7b1";
# hash = "sha256-QwPKn2R4mflTKMyr1k4xF04t0PJIlzNCOdXEiQwX5wk=";
# }; in
# [
# # "--bluetooth-adapter=0"
# "--paa-root-cert-dir=${cert-dir}/credentials/production/paa-root-certs"
# "--enable-test-net-dcl"
# "--ota-provider-dir=/var/lib/matter-server/ota-provider"
# ];
# };
# age.secrets.google-service-account = {
# file = ../secrets/google-assistant-integration-service-key.age;
# owner = "hass";
# };
age.secrets.zwave-js-config-filepath = {
file = ./secrets/zwave-js.json.age;
owner = "imalison";
group = "users";
mode = "777";
};
services.zwave-js = {
enable = true;
serialPort = "/dev/serial/by-id/usb-Silicon_Labs_Zooz_ZST10_700_Z-Wave_Stick_fec41d5809caec11843b63a341be1031-if00-port0";
secretsConfigFile = config.age.secrets.zwave-js-config-filepath.path;
};
systemd.services.zwave-js = {
serviceConfig = {
# DynamicUser = lib.mkForce false;
};
};
services.zwave-js-ui = {
enable = true;
serialPort = "/dev/serial/by-id/usb-Silicon_Labs_Zooz_ZST10_700_Z-Wave_Stick_fec41d5809caec11843b63a341be1031-if00-port0";
settings = {
HOST = "::";
PORT = "8091";
};
};
services.home-assistant = {
enable = true;
extraComponents = [
"anthropic"
"cast"
"dlna_dmr"
"esphome"
"google_assistant"
"google_translate"
"homeassistant_hardware"
"homeassistant_sky_connect"
"homekit_controller"
"hue"
"ibeacon"
"isal"
"kef"
"kegtron"
"matter"
"met"
"opensky"
"otbr"
"piper"
"radio_browser"
"roomba"
"spotify"
"samsungtv"
"thread"
"wake_word"
"webostv"
"whisper"
"wyoming"
"yale"
"zwave_js"
];
extraPackages = python3Packages: with python3Packages; [
numpy
python-matter-server
universal-silabs-flasher
];
config = {
http = {
use_x_forwarded_for = true;
trusted_proxies = ["0.0.0.0" "127.0.0.1" "::1" "192.168.50.1"];
};
# google_assistant = {
# project_id = "canyon-run-b104-home-assistant";
# service_account = "!include ${config.age.secrets.google-service-account.path}";
# report_state = true;
# exposed_domains = ["switch" "light"];
# };
default_config = {};
};
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, config, specialArgs, ... }:
{ pkgs, ... }:
{
xsession = {
enable = true;

View File

@@ -2,7 +2,7 @@ switch *args:
sudo nixos-rebuild switch --flake '.#' --impure {{args}}
fix-local-path-issue:
nix flake lock --update-input imalison-taffybar
nix flake update imalison-taffybar
expire-home-manager-generations:

165
nixos/k3s.nix Normal file
View File

@@ -0,0 +1,165 @@
{
pkgs,
config,
lib,
...
}:
with lib; let
cfg = config.myModules.railbird-k3s;
mount-path = "/var/lib/railbird/bucket";
bucket-name = "railbird-dev-videos";
plugins-path = pkgs.buildEnv {
name = "combined-cni-plugins";
paths = [
pkgs.cni-plugins
pkgs.calico-cni-plugin
pkgs.calico-kube-controllers
pkgs.cni-plugin-flannel
];
};
in {
options = {
myModules.railbird-k3s = {
enable = mkEnableOption "railbird k3s";
serverAddr = mkOption {
type = lib.types.str;
default = "";
};
extraFlags = mkOption {
type = lib.types.listOf lib.types.str;
default = [];
};
};
};
config = mkIf cfg.enable {
age.secrets."1896Folsom-k3s-token.age".file = ./secrets/1896Folsom-k3s-token.age;
age.secrets."k3s-registry.yaml.age".file = ./secrets/k3s-registry.yaml.age;
age.secrets.api-service-key = {
file = ./secrets/api_service_account_key.json.age;
owner = "railbird";
group = "users";
};
environment.etc."rancher/k3s/registries.yaml".source = config.age.secrets."k3s-registry.yaml.age".path;
services.dockerRegistry = {
enable = true;
listenAddress = "0.0.0.0";
port = 5279;
enableDelete = true;
enableGarbageCollect = true;
};
virtualisation.containerd = {
enable = true;
settings = {
plugins."io.containerd.cri.v1.runtime" = {
enable_cdi = true;
cdi_spec_dirs = [ "/var/run/cdi" ];
};
plugins."io.containerd.grpc.v1.cri" = {
enable_cdi = true;
cdi_spec_dirs = [ "/var/run/cdi" ];
cni.bin_dir = "${plugins-path}/bin";
};
};
};
hardware.nvidia-container-toolkit.enable = true;
virtualisation.containers = {
containersConf.cniPlugins = [
pkgs.cni-plugins
pkgs.calico-cni-plugin
pkgs.calico-kube-controllers
pkgs.cni-plugin-flannel
];
};
systemd.services = {
nvidia-container-toolkit-cdi-generator = {
# Even with `--library-search-path`, `nvidia-ctk` won't find the libs
# unless I bodge their path into the environment.
environment.LD_LIBRARY_PATH = "${config.hardware.nvidia.package}/lib";
};
};
systemd.services.mount-railbird-bucket = {
after = ["agenix.service"];
wantedBy = [ "multi-user.target" ];
description = "Mount railbird bucket";
serviceConfig = {
Type = "simple";
RemainAfterExit = true;
Restart = "on-failure"; # Restart the service on failure
RestartSec = 5; # Wait 5 seconds before restarti
TimeoutStopSec = 2;
ExecStartPre = [
"-${pkgs.util-linux}/bin/umount -f ${mount-path}"
"${pkgs.coreutils}/bin/mkdir -p ${mount-path}"
"${pkgs.coreutils}/bin/chown railbird:users ${mount-path}"
"${pkgs.coreutils}/bin/chmod 0775 ${mount-path}"
];
ExecStart = let
key-file = config.age.secrets.api-service-key.path;
in
pkgs.writeShellScript "mount-railbird-bucket" ''
while true; do
if ${pkgs.util-linux}/bin/mount | grep -q "${mount-path}" && [ -d "${mount-path}/dev" ]; then
echo "Mount path ${mount-path} is mounted and valid (contains directory 'dev')."
else
echo "Mount path is not valid or not mounted, attempting remount."
${pkgs.util-linux}/bin/umount -f "${mount-path}" || true
${pkgs.gcsfuse}/bin/gcsfuse --implicit-dirs --key-file "${key-file}" "${bucket-name}" "${mount-path}"
fi
echo "Sleeping"
sleep 30
done
'';
User = "root";
};
};
services.k3s = {
enable = true;
clusterInit = cfg.serverAddr == "";
serverAddr = cfg.serverAddr;
configPath = pkgs.writeTextFile {
name = "k3s-config.yaml";
text = ''
kubelet-arg:
- "eviction-hard=nodefs.available<2Gi"
- "eviction-soft=nodefs.available<5Gi"
- "eviction-soft-grace-period=nodefs.available=5m"
'';
};
tokenFile = config.age.secrets."1896Folsom-k3s-token.age".path;
extraFlags =
[
"--tls-san ryzen-shine.local"
"--tls-san nixquick.local"
"--tls-san biskcomp.local"
"--tls-san jimi-hendnix.local"
"--tls-san dev.railbird.ai"
"--node-label nixos-nvidia-cdi=enabled"
"--etcd-arg=quota-backend-bytes=8589934592"
]
++ cfg.extraFlags;
containerdConfigTemplate = ''
{{ template "base" . }}
plugins."io.containerd.grpc.v1.cri".cdi_spec_dirs = [ "/var/run/cdi" ]
plugins."io.containerd.grpc.v1.cri".enable_cdi = true
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
runtime_type = "io.containerd.runc.v2"
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]
BinaryName = "/run/current-system/sw/bin/nvidia-container-runtime.cdi"
[debug]
level = "trace"
'';
gracefulNodeShutdown = {
enable = true;
};
};
};
}

View File

@@ -1,10 +1,11 @@
{ pkgs, inputs, config, makeEnable, ... }:
makeEnable config "modules.kat" false {
{ pkgs, config, makeEnable, ... }:
makeEnable config "myModules.kat" false {
environment.systemPackages = with pkgs; [
bitwarden
obsidian
obs-studio
ffmpeg
bitwarden
code-cursor
obsidian
windsurf
];
environment.extraInit = ''

View File

@@ -6,6 +6,8 @@ rec {
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIoHW29TmS5FgK12N+bCXhGWASDdmzqSEA0QxbyGaJ+j nixquick.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIaA0tRVTqwBDxY6X03wx+50pbB37y5e8gqFpFMDa/Bj adele.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID4j70BoksIEiX+OMBCsSG8wvMIEwoRQf5Gz5ppbm7Iy jimi-hendnix.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOYAoN3l15Avweu5fcfcnlRzmFPHtlYIpo02sxBHANZ+ strixy-minaj.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFTYwBuQ3CNbkj6gAQ0oqxhPlKZ+X6tUaZotccowzjCW justin-bieber-creek.local"
];
kanivanKeys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUSkj7587e+MAUNyU/KRpw9Vk++53Wv5nB+0V1QgiTO3rMQe6HJt0Tm2wi/o/T8GNjueT2D69YgkqOIF1FQwsj2EFLObcMzeBgs5gTSglqggA2I91BIc1vvgjCDpogOMAzAQGlTxRnqrEXhqG0jJtw8KIzLr9WrvWLdTT4rHtWS8RoOBgkQ8oxbggZ4vtbMBIwoIAYGRr70KBRNCsLTPLa8yEf+DDQxq1entzxSjHXHgyeBSVVpPCrBVmhjandk+lIFInjvAiAE1ZkJHSRccL73ORmgb1crwH7xlD9NwBPmypowMi8UIRMKfL2lNehT0AQIlEAikUBLMDzPIPhnwLZ imalison@ivanm-dfinity-razer.local"
@@ -23,6 +25,8 @@ rec {
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOVGIGnpkU7HNQ/zl/Ffi562M+laWY9/yIjB63BCMiTS kat@nixcomp.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO3tlMePru6ZlSuf8yUii3N1dy3WwJnSQAt3EgETkctK kat@jay-lenovo.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFrOYD3ReFc2+xFUylBFHREcm1lO7BRJGW5JrOoY3I8s ivanm@strixi-minaj"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYy93265G59aA1ksckjqlfeHq0vpEpzC8BwqCrpeXdh kat@Kats-Mac-mini.local"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG60q//rVd2JESQT59XLvLdsH9AdYfQXTkXMjx9pH3xp imalison@justin-bieber-creek"
];
deanKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICDvbEVL+y7eV4+mtxOuHwyomBBQ6uYMesctstua20+e deanwenstrand@deans-mbp-2.lan"
@@ -38,6 +42,7 @@ rec {
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqBnDZXcZIMtOTPxg4pJWyMyNp84kpU2uH88aCkrhMBY2TI4dqAXGY4h1DOyOEyQo9nTgyvdlv4M1Hlp5tzfbuapdTWtt36gb+FKpsTUy8dz45fhKJerUszNbVQ+SpZu4ZFN4Nv9eP3AHO+Mzjcvbf666VMDEzZWu2totd7jxyI9PdK78TD5AOi+kGTtbEgqMpJCcZmJlzJ9NJJ2ejhPCRwcfDrShHcfMeEwWL5MmnzT+WstkRwJAM0f9/ks77jWDnB1Eu55rQykU8zVZ1nz1GiXZcxUpm6B0IRhwn8NGH6nVzSLITtO5eJ7LPQR9XNUODpbrsVGNK6jgGql9gZpYp andy@nixos"
];
willKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDqBw9QBC0t1TGu7JdryJ6vX3hkBjNnDLe4GFptN2Y3k willgester@gmail.com"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILgLjW6R+dTEmlUoPfE4GA8gRn93UlcSJqlJP1xw0KWl willgester@gmail.com"
];
loewyKeys = [
@@ -55,4 +60,6 @@ rec {
benKeys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAJ6lD0c+frh2vzQjvsrsmJpwM1ovaY59m5NNPml5G+E benjamin.j.corner@gmail.com"
];
interviewKeys = [
];
}

23
nixos/kubelet-client.crt Normal file
View File

@@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIIDyTCCAjGgAwIBAgIRAMQBZiVjA5BGSkDldScI9cMwDQYJKoZIhvcNAQELBQAw
LzEtMCsGA1UEAxMkM2I2N2M2NzgtNzI5My00YTIzLTg3ZWItY2NiMTZjYWFkMzFm
MB4XDTI0MDkyOTIwNTAzNloXDTI5MDkyODIwNTIzNlowOTEVMBMGA1UEChMMc3lz
dGVtOm5vZGVzMSAwHgYDVQQDExdzeXN0ZW06bm9kZTpyeXplbi1zaGluZTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANIOfbq05IIdgX2jXYLaEt66rkXp
NlqPNfh6v9nL1Aw6PSM3DEIWXVko8AyduRF4kXNO6xc6l/Rzk03w3qSvJpWpALGD
JjslgRL4VJWUC6/QydsCO9io7SoUEmXFtDcsW6DftFejosr+56ZnVFrz5MMzfUAL
Ix6n83NJvXZ8f9oHSX8TFW34ZClLxDq2fprFIs+D2QlFRE50Jr/Q8gPI2OSQDUBW
DFdQrjt81bLs6doQipUqvHb4/Ms49agHek1ceWIMf+KZWoao5KNQTBe6XL2BUgA/
MS3ZvQppDDTygA0QkgdtOJyG2lsrAmd7LEXTr9ilsqLV3YQMMKhCifwINa0CAwEA
AaNWMFQwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMAwGA1Ud
EwEB/wQCMAAwHwYDVR0jBBgwFoAUjvcbOeZ4QIk53EkATOaOFiAZUq0wDQYJKoZI
hvcNAQELBQADggGBAELWgmdmg9TKjDDqmF6pYr1j43gZYclXW4sB509itSiIeltX
Isrvn5R5ok0W5Jcl+7QMhpntqIKJi26OqbcdBhqlaVURkBkbrx8aegkWJfPO+Fzz
NyyiIpk7KQzGy6N5//jfMPZtJfQEQZwMenW0cj7F0QHOdVZy90+JNr2P3uV3Ad7u
WZuYpbOFjOeQg1hJsX8wEU4KJyptn/kXhM+CqAnQ4S+k2wpjECD8KpWKAmpJWZg0
RaBPyHZSmWnbXqs4LU6ERaZJxZQG0ODuA18DmGfaAkUUUvE2J0ploc2Y8Xl4zUWW
Ivwslyx30YO3J9qI30d9tTQw/A0vHCoDNDbCg7lorZqP3TiTG9ANLndPqqg6inYU
yfj612//JrO8w/4qh7cxR03P35aK0paLC74FaKLtZ5CwPK3BAW/0Zhv5fH4io6hE
rfJmcjhbKD0Cwr9Dn6wVFz/a33H+0vMohHrVlDk4bSDIymbuJcZpYgR8n5WNQbGu
nwjiLXCnVxcVjkcj2w==
-----END CERTIFICATE-----

22
nixos/kubelet.nix Normal file
View File

@@ -0,0 +1,22 @@
{ config, pkgs, makeEnable, ... }:
makeEnable config "myModules.kubelet" false {
age.secrets."api_service_account_key.json.age".file = ./secrets/api_service_account_key.json.age;
services.kubernetes.kubelet = {
enable = true;
kubeconfig = {
server = "https://34.31.205.230";
caFile = ./railbird-kubernetes.crt;
certFile = ./kubelet-client.crt;
keyFile = config.age.secrets."api_service_account_key.json.age".path;
};
registerNode = true;
cni = {
packages = [ pkgs.cni-plugins pkgs.calico-cni-plugin ];
};
extraOpts = ''
--fail-swap-on=false
# --container-runtime=remote
# --container-runtime-endpoint=unix:///run/containerd/containerd.sock
'';
};
}

6
nixos/laptop.nix Normal file
View File

@@ -0,0 +1,6 @@
{ makeEnable, config, ... }:
makeEnable config "myModules.laptop" true {
services.logind = {
lidSwitchExternalPower = "ignore";
};
}

View File

@@ -1,4 +1,4 @@
{ config, lib, pkgs, inputs, forEachUser, ... }:
{ lib, pkgs, inputs, forEachUser, ... }:
{
imports = [
@@ -6,16 +6,24 @@
inputs.nixos-hardware.nixosModules.dell-xps-17-9700-nvidia
];
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = true;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.gitea-runner.enable = false;
# services.tts.servers.coqui = {
# enable = false;
# useCuda = false;
# port = 11400;
# };
myModules.wyoming.enable = false;
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.xmonad.enable = true;
myModules.extra.enable = false;
myModules.code.enable = true;
myModules.games.enable = false;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
myModules.nixified-ai.enable = false;
myModules.gitea-runner.enable = false;
hardware.nvidia.open = true;
hardware.enableRedistributableFirmware = true;
@@ -23,7 +31,7 @@
android-studio
];
boot.kernelPackages = pkgs.linuxPackages_latest;
# boot.kernelPackages = pkgs.linuxPackages_latest;
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
@@ -33,7 +41,7 @@
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
services.xserver.libinput = {
services.libinput = {
enable = true;
touchpad.tapping = true;
};
@@ -59,7 +67,7 @@
swapDevices = [ ];
networking.hostName = "adele";
networking.hostName = "adell";
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";

View File

@@ -8,10 +8,10 @@
sublime
vlc
];
modules.desktop.enable = false;
modules.plasma.enable = false;
myModules.desktop.enable = false;
myModules.plasma.enable = false;
imalison.nixOverlay.enable = false;
modules.wsl.enable = true;
myModules.wsl.enable = true;
networking.hostName = "bencbox";

View File

@@ -1,4 +1,4 @@
{ forEachUser, ... }:
{ pkgs, lib, forEachUser, config, ... }:
let biskcomp-nginx-hostnames = "192.168.1.44 railbird.ai 1896Folsom.duckdns.org biskcomp.local 0.0.0.0 67.162.131.71";
in
{
@@ -13,28 +13,42 @@ in
extraGroups = ["syncthing"];
};
modules.raspberry-pi.enable = true;
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = false;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.cache-server = {
myModules.home-assistant.enable = true;
myModules.raspberry-pi.enable = true;
myModules.plasma.enable = false;
myModules.base.enable = true;
myModules.desktop.enable = false;
myModules.xmonad.enable = false;
myModules.extra.enable = false;
myModules.code.enable = true;
myModules.games.enable = false;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
myModules.nixified-ai.enable = false;
myModules.cache-server = {
enable = false;
host-string = biskcomp-nginx-hostnames;
port = 80;
path = "/nix-cache";
};
modules.gitea.enable = true;
modules.gitea-runner.enable = false;
myModules.gitea.enable = true;
myModules.gitea-runner.enable = false;
myModules.railbird-k3s = {
enable = false;
serverAddr = "https://dev.railbird.ai:6443";
};
services.k3s.disableAgent = true;
age.secrets.vaultwarden-environment-file = {
file = ../secrets/vaultwarden-environment-file.age;
owner = "vaultwarden";
};
services.vaultwarden = {
enable = true;
backupDir = "/var/backup/vaultwarden";
environmentFile = config.age.secrets.vaultwarden-environment-file.path;
config = {
ROCKET_ADDRESS = "::1";
ROCKET_PORT = 8222;
@@ -46,14 +60,62 @@ in
defaults.email = "IvanMalison@gmail.com";
};
# services.nextcloud = {
# enable = true;
# hostName = "nextcloud.railbird.ai";
# config = {
# dbtype = "pgsql";
# database.createLocally = true;
# };
# };
services.gitlab = {
enable = true;
databasePasswordFile = pkgs.writeText "dbPassword" "zgvcyfwsxzcwr85l";
initialRootPasswordFile = pkgs.writeText "rootPassword" "dakqdvp4ovhksxer";
host = "gitlab.railbird.ai";
secrets = {
secretFile = pkgs.writeText "secret" "Aig5zaic";
otpFile = pkgs.writeText "otpsecret" "Riew9mue";
dbFile = pkgs.writeText "dbsecret" "we2quaeZ";
jwsFile = pkgs.runCommand "oidcKeyBase" {} "${pkgs.openssl}/bin/openssl genrsa 2048 > $out";
};
};
age.secrets.discourse-admin-password = {
file = ../secrets/discourse-admin-password.age;
mode = "770";
owner = "discourse";
group = "users";
};
age.secrets.discourse-secret-key-base = {
file = ../secrets/discourse-secret-key-base.age;
group = "users";
owner = "discourse";
};
services.discourse = {
enable = false;
enableACME = true;
hostname = "discourse.railbird.ai";
admin = {
passwordFile = config.age.secrets.discourse-admin-password.path;
email = "support@railbird.ai";
fullName = "Admin";
username = "admin";
};
secretKeyBaseFile = config.age.secrets.discourse-secret-key-base.path;
database.ignorePostgresqlVersion = true;
};
systemd.services.emacs-org-api = {
description = "Emacs org api";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = ''${pkgs.runtimeShell} -l -c "${lib.getExe' pkgs.emacs "emacs"} --load /home/imalison/.emacs.d/org-api.el --daemon=org-api"'';
RemainAfterExit = true;
Restart = "on-failure";
User = "imalison";
};
};
age.secrets.org-api-passwords = {
file = ../secrets/org-api-passwords.age;
owner = "nginx";
};
services.nginx = {
enable = true;
@@ -61,6 +123,23 @@ in
recommendedGzipSettings = true;
recommendedTlsSettings = true;
virtualHosts = {
"org-mode.1896Folsom.duckdns.org" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://localhost:2025";
basicAuthFile = config.age.secrets.org-api-passwords.path;
extraConfig = ''
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Allow-Methods' 'POST, PUT, DELETE, GET, PATCH, OPTIONS' always;
'';
};
};
"gitlab.railbird.ai" = {
enableACME = true;
forceSSL = true;
locations."/".proxyPass = "http://unix:/run/gitlab/gitlab-workhorse.socket";
};
"vaultwarden.railbird.ai" = {
enableACME = true;
forceSSL = true;
@@ -68,13 +147,6 @@ in
proxyPass = "http://[::1]:8222";
};
};
"cache.railbird.ai" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://192.168.1.20:3090";
};
};
"syncthing.railbird.ai" = {
enableACME = true;
forceSSL = true;
@@ -85,6 +157,16 @@ in
'';
};
};
"docs.railbird.ai" = {
enableACME = true;
forceSSL = true;
root = "/var/lib/syncthing/railbird/docs";
locations."/" = {
extraConfig = ''
autoindex on;
'';
};
};
};
};
@@ -97,20 +179,6 @@ in
fsType = "ext4";
};
services.home-assistant = {
enable = false;
extraComponents = [
# Components required to complete the onboarding
"met"
"radio_browser"
];
config = {
# Includes dependencies for a basic setup
# https://www.home-assistant.io/integrations/default_config/
default_config = {};
};
};
swapDevices = [
{ device = "/swapfile"; size = 8192; } # size is in MiB
];

View File

@@ -5,15 +5,15 @@
../configuration.nix
];
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = false;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.xmonad.enable = false;
myModules.extra.enable = false;
myModules.code.enable = true;
myModules.games.enable = false;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
myModules.nixified-ai.enable = false;
hardware.enableRedistributableFirmware = true;

View File

@@ -5,10 +5,10 @@
];
services.xserver.enable = true;
environment.systemPackages = with pkgs; [sublime];
modules.desktop.enable = false;
modules.plasma.enable = false;
myModules.desktop.enable = false;
myModules.plasma.enable = false;
imalison.nixOverlay.enable = false;
modules.wsl.enable = true;
myModules.wsl.enable = true;
networking.hostName = "dean-zephyrus";

View File

@@ -5,7 +5,7 @@
];
imalison.nixOverlay.enable = false;
modules.wsl.enable = true;
myModules.wsl.enable = true;
networking.hostName = "jay-lenovo-wsl";

View File

@@ -5,12 +5,14 @@
../configuration.nix
];
myModules.wyoming.enable = true;
features.full.enable = true;
environment.systemPackages = with pkgs; [
android-studio
linuxPackages_latest.perf
zenmonitor
code-cursor
];
hardware.enableRedistributableFirmware = true;
@@ -26,8 +28,8 @@
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
modules.postgres.enable = true;
myModules.postgres.enable = true;
myModules.kat.enable = true;
networking.networkmanager.enable = true;
services.xserver = {

View File

@@ -5,23 +5,23 @@
../configuration.nix
];
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = true;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.gitea-runner.enable = true;
modules.postgres.enable = true;
myModules.railbird-k3s = {
enable = true;
serverAddr = "https://ryzen-shine.local:6443";
};
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.xmonad.enable = true;
myModules.extra.enable = false;
myModules.code.enable = true;
myModules.games.enable = false;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
myModules.gitea-runner.enable = true;
myModules.postgres.enable = true;
hardware.enableRedistributableFirmware = true;
# install nvidia drivers in addition to intel one
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
myModules.nvidia.enable = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
boot.kernelModules = [ "kvm-intel" ];

View File

@@ -0,0 +1,207 @@
{ config, lib, pkgs, forEachUser, ... }:
{
imports = [
../configuration.nix
];
services.synergy.server = {
enable = true;
};
myModules.fonts.enable = true;
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.xmonad.enable = true;
myModules.wyoming.enable = true;
networking.enableIPv6 = true;
services.synergy.client = {
enable = true;
serverAddress = "strixi-minaj.local:24800";
};
boot.kernel.sysctl = {
# For all interfaces (e.g. if you want to accept RA on all):
"net.ipv6.conf.all.accept_ra" = lib.mkForce "1";
"net.ipv6.conf.all.accept_ra_rt_info_max_plen" = lib.mkForce "64";
"net.ipv6.conf.default.accept_ra" = lib.mkForce "1";
"net.ipv6.conf.default.accept_ra_rt_info_max_plen" = lib.mkForce "64";
"net.ipv6.conf.wlo1.accept_ra" = lib.mkForce "1";
"net.ipv6.conf.wlo1.accept_ra_rt_info_max_plen" = lib.mkForce "64";
# Ensure forwarding is off on all interfaces unless needed
"net.ipv6.conf.all.forwarding" = lib.mkForce "0";
};
systemd.services.otbr-agent = {
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
};
services.openthread-border-router = {
enable = true;
backboneInterface = "wpan0";
logLevel = "debug";
radio = {
device = "/dev/serial/by-id/usb-Nabu_Casa_Home_Assistant_Connect_ZBT-1_0cd053abfa38ef119c66e1d154516304-if00-port0";
baudRate = 460800;
flowControl = true;
};
web = {
listenPort = 8087;
};
rest = {
listenPort = 8089;
};
};
services.matter-server = {
enable = true;
logLevel = "debug";
extraArgs = let cert-dir = pkgs.fetchFromGitHub {
repo = "connectedhomeip";
owner = "project-chip";
rev = "6e8676be6142bb541fa68048c77f2fc56a21c7b1";
hash = "sha256-QwPKn2R4mflTKMyr1k4xF04t0PJIlzNCOdXEiQwX5wk=";
}; in
[
"--bluetooth-adapter=0"
"--paa-root-cert-dir=${cert-dir}/credentials/production/paa-root-certs"
"--enable-test-net-dcl"
"--ota-provider-dir=/var/lib/matter-server/ota-provider"
];
};
age.secrets.google-service-account = {
file = ../secrets/google-assistant-integration-service-key.age;
owner = "hass";
};
services.home-assistant = {
enable = true;
extraComponents = [
"anthropic"
"cast"
"dlna_dmr"
"esphome"
"google_assistant"
"homeassistant_hardware"
"homeassistant_sky_connect"
"homekit_controller"
"ibeacon"
"isal"
"kef"
"kegtron"
"matter"
"met"
"opensky"
"otbr"
"piper"
"radio_browser"
"roomba"
"samsungtv"
"thread"
"wake_word"
"webostv"
"whisper"
"wyoming"
"yale"
];
extraPackages = python3Packages: with python3Packages; [
numpy
python-matter-server
universal-silabs-flasher
];
config = {
http = {
use_x_forwarded_for = true;
trusted_proxies = ["0.0.0.0" "127.0.0.1" "::1" "192.168.50.1"];
};
google_assistant = {
project_id = "canyon-run-b104-home-assistant";
service_account = "!include ${config.age.secrets.google-service-account.path}";
report_state = true;
exposed_domains = ["switch" "light"];
};
default_config = {};
};
};
security.acme = {
acceptTerms = true;
defaults.email = "IvanMalison@gmail.com";
};
services.nginx = {
enable = true;
recommendedProxySettings = true;
recommendedGzipSettings = true;
recommendedTlsSettings = true;
virtualHosts = {
"homeassistant.canyonrunb104.duckdns.org" = {
enableACME = true;
addSSL = true;
locations."/" = {
proxyPass = "http://localhost:8123";
extraConfig = ''
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
'';
};
};
"ha.canyonrunb104.duckdns.org" = {
enableACME = true;
addSSL = true;
locations."/" = {
proxyPass = "http://localhost:8123";
extraConfig = ''
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
'';
};
};
};
};
boot.loader.systemd-boot.configurationLimit = 3;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
boot.loader.systemd-boot.enable = true;
# Add Intel Wi-Fi firmware
hardware.enableRedistributableFirmware = true;
hardware.enableAllFirmware = true;
fileSystems."/" =
{ device = "/dev/disk/by-uuid/453d28a1-26f2-4b25-ac72-c6d301fd0bb8";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/184E-E5E8";
fsType = "vfat";
};
swapDevices = [ ];
networking.hostName = "justin-bieber-creek";
networking.useDHCP = false;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
system.stateVersion = "23.05";
home-manager.users = forEachUser {
home.stateVersion = "23.05";
};
}

View File

@@ -4,13 +4,25 @@
../configuration.nix
];
services.macos-ventura = {
enable = false;
openFirewall = true;
vncListenAddr = "0.0.0.0";
};
features.full.enable = true;
modules.cache-server = {
myModules.cache-server = {
enable = true;
port = 3090;
};
modules.gitea-runner.enable = true;
modules.vscode.enable = true;
myModules.gitea-runner.enable = true;
myModules.vscode.enable = true;
myModules.kat.enable = true;
myModules.nvidia.enable = true;
myModules.railbird-k3s = {
enable = true;
serverAddr = "https://dev.railbird.ai:6443";
};
networking.hostName = "nixquick";
@@ -21,15 +33,6 @@
boot.extraModulePackages = [ ];
boot.loader.systemd-boot.enable = true;
# install nvidia drivers in addition to intel one
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
hardware.opengl.driSupport32Bit = true;
hardware.nvidia.modesetting.enable = true;
# This also enables v4l2loopback

View File

@@ -12,58 +12,37 @@
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
boot.loader.systemd-boot.enable = true;
myModules.postgres.enable = true;
features.full.enable = true;
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
# Enable OpenGL
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
services.k3s.role = "agent";
services.k3s.extraFlags = lib.mkForce ["--node-label nixos-nvidia-cdi=enabled"];
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
features.full.enable = false;
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = false;
modules.gnome.enable = true;
modules.code.enable = true;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.plasma.enable = false;
modules.gitea-runner.enable = true;
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.xmonad.enable = false;
myModules.code.enable = true;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
myModules.plasma.enable = true;
myModules.nvidia.enable = true;
myModules.gitea-runner.enable = true;
myModules.railbird-k3s = {
enable = false;
serverAddr = "https://dev.railbird.ai:6443";
};
fileSystems."/" =
{ device = "/dev/disk/by-uuid/a317d456-6f84-41ee-a149-8e466e414aae";

View File

@@ -0,0 +1,101 @@
{ lib, pkgs, forEachUser, ... }:
{
imports = [
../configuration.nix
];
features.full.enable = true;
myModules.kubelet.enable = false;
myModules.nvidia.enable = true;
# Needed for now because monitors have different refresh rates
myModules.xmonad.picom.vSync.enable = false;
myModules.cache-server = {
enable = true;
port = 3090;
};
myModules.gitea-runner.enable = true;
myModules.postgres.enable = true;
myModules.railbird-k3s = {
enable = true;
# extraFlags = ["--node-taint preferNoSchedule=true:NoSchedule"];
};
boot.loader.systemd-boot.configurationLimit = 5;
networking.hostName = "ryzen-shine";
environment.systemPackages = with pkgs; [
linuxPackages_latest.perf
];
boot.initrd.systemd.enable = true;
boot.plymouth = {
enable = false;
};
services.autorandr = {
enable = true;
};
hardware.enableRedistributableFirmware = true;
networking.interfaces.enp5s0.useDHCP = true;
networking.interfaces.wlp4s0.useDHCP = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.luks.devices."cryptroot".device = "/dev/nvme0n1p5";
boot.initrd.kernelModules = [ "dm-snapshot" ];
# install nvidia drivers in addition to intel one
hardware.graphics.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
hardware.graphics.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
hardware.nvidia.modesetting.enable = true;
hardware.graphics.enable32Bit = true;
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/356173ab-d076-43e0-aeb6-6a6829c4402b";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B270-C7E6";
fsType = "vfat";
};
fileSystems."/shared" = {
device = "/dev/disk/by-uuid/D4009CE8009CD33A";
fsType = "ntfs";
options = [ "nofail" "uid=0" "gid=users" "umask=002" ];
};
swapDevices = [
{ device = "/dev/disk/by-uuid/f719b44e-295a-4909-9a60-84f87acb7f77"; }
];
# nix.settings.maxJobs = lib.mkDefault 16;
# High-DPI console
console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";
# services.xrdp.enable = true;
# services.xrdp.defaultWindowManager = "startplasma-x11";
# services.xrdp.openFirewall = true;
system.stateVersion = "20.03";
home-manager.users = forEachUser {
home.stateVersion = "21.05";
};
# users.extraUsers.dean.home = "/shared/dean";
}

View File

@@ -0,0 +1,24 @@
{ lib, pkgs, config, inputs, forEachUser, ... }:
{
imports = [
../configuration.nix
];
services.xserver.enable = true;
environment.systemPackages = with pkgs; [
sublime
vlc
];
myModules.desktop.enable = false;
myModules.plasma.enable = false;
imalison.nixOverlay.enable = false;
myModules.wsl.enable = true;
networking.hostName = "ryzen-shine-wsl";
wsl.defaultUser = "imalison";
system.stateVersion = "22.05";
home-manager.users = forEachUser {
home.stateVersion = "22.05";
};
}

View File

@@ -1,4 +1,4 @@
{ config, lib, pkgs, inputs, forEachUser, ... }:
{ lib, pkgs, forEachUser, ... }:
{
imports = [
@@ -6,14 +6,23 @@
];
features.full.enable = true;
myModules.kubelet.enable = false;
myModules.nvidia.enable = true;
# Needed for now because monitors have different refresh rates
modules.xmonad.picom.vSync.enable = false;
modules.cache-server = {
myModules.xmonad.picom.vSync.enable = false;
myModules.cache-server = {
enable = true;
port = 3090;
};
modules.gitea-runner.enable = true;
modules.postgres.enable = true;
myModules.gitea-runner.enable = true;
myModules.postgres.enable = true;
myModules.railbird-k3s = {
enable = true;
serverAddr = "https://jimi-hendnix.local:6443";
# extraFlags = ["--node-taint preferNoSchedule=true:NoSchedule"];
};
myModules.nixified-ai.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.loader.systemd-boot.configurationLimit = 5;
@@ -41,43 +50,30 @@
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
boot.initrd.luks.devices."cryptroot".device = "/dev/nvme0n1p5";
boot.initrd.kernelModules = [ "dm-snapshot" ];
# install nvidia drivers in addition to intel one
hardware.opengl.extraPackages = [ pkgs.linuxPackages.nvidia_x11.out ];
hardware.opengl.extraPackages32 = [ pkgs.linuxPackages.nvidia_x11.lib32 ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
hardware.nvidia.modesetting.enable = true;
hardware.opengl.driSupport32Bit = true;
hardware.graphics.enable32Bit = true;
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/356173ab-d076-43e0-aeb6-6a6829c4402b";
device = "/dev/disk/by-uuid/9bd06145-8151-4f7b-bcfe-f1809e0db1ea";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B270-C7E6";
device = "/dev/disk/by-uuid/E1E1-909E";
fsType = "vfat";
};
fileSystems."/shared" = {
device = "/dev/disk/by-uuid/D4009CE8009CD33A";
fsType = "ntfs";
options = [ "nofail" ];
options = [ "nofail" "uid=0" "gid=users" "umask=002" ];
};
swapDevices = [
{ device = "/dev/disk/by-uuid/f719b44e-295a-4909-9a60-84f87acb7f77"; }
];
# nix.settings.maxJobs = lib.mkDefault 16;
# High-DPI console
console.font = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz";
@@ -91,5 +87,5 @@
home.stateVersion = "21.05";
};
users.extraUsers.dean.home = "/shared/dean";
# users.extraUsers.dean.home = "/shared/dean";
}

View File

@@ -4,7 +4,7 @@
../configuration.nix
];
modules.wsl.enable = true;
myModules.wsl.enable = true;
networking.hostName = "strixi-minaj-wsl";
@@ -30,5 +30,6 @@
"electron-19.1.9"
"openssl-1.1.1w"
"nix-2.16.2"
"electron-32.3.3"
];
}

View File

@@ -3,64 +3,77 @@
{
imports = [
../configuration.nix
inputs.nixos-hardware.nixosModules.asus-rog-strix-g834jzr
];
modules.base.enable = true;
modules.desktop.enable = true;
modules.xmonad.enable = true;
modules.extra.enable = false;
modules.code.enable = true;
modules.games.enable = false;
modules.syncthing.enable = true;
modules.fonts.enable = true;
modules.nixified-ai.enable = false;
modules.gitea-runner.enable = false;
hardware.nvidia.open = true;
myModules.base.enable = true;
myModules.desktop.enable = true;
myModules.xmonad.enable = true;
myModules.extra.enable = false;
myModules.code.enable = true;
myModules.games.enable = false;
myModules.syncthing.enable = true;
myModules.fonts.enable = true;
myModules.gitea-runner.enable = false;
myModules.nvidia.enable = true;
myModules.electron.enable = true;
myModules.wyoming.enable = false;
myModules.tts.enable = false;
hardware.enableRedistributableFirmware = true;
# nixpkgs.config.cudaSupport = true;
environment.systemPackages = with pkgs; [
android-studio
];
services.synergy.server = {
enable = true;
autoStart = true;
configFile = ../../dotfiles/synergy.conf;
};
services.matter-server = {
enable = true;
logLevel = "debug";
extraArgs = ["--bluetooth-adapter=0" "--enable-test-net-dcl"];
};
programs.virt-manager.enable = true;
virtualisation.libvirtd.enable = true;
virtualisation.spiceUSBRedirection.enable = true;
services.xserver.dpi = 96;
boot.kernelPackages = pkgs.linuxPackages_latest;
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "thunderbolt" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.initrd.kernelModules = [ "nvidia" "nvidia_drm" "nvidia_uvm" "nvidia_modeset" ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.production;
hardware.nvidia.modesetting.enable = true;
hardware.nvidia.powerManagement.enable = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
services.asusd.enable = true;
fileSystems."/" =
{ device = "/dev/disk/by-uuid/fc06a54c-cc45-423a-914b-8dfcb5939106";
fileSystems."/" = {
device = "/dev/disk/by-uuid/fc06a54c-cc45-423a-914b-8dfcb5939106";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/B28A-829A";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B28A-829A";
fsType = "vfat";
};
swapDevices =
[ { device = "/dev/disk/by-uuid/27f277a0-b552-43a0-904d-625e48922bb9"; }
swapDevices = [
{ device = "/dev/disk/by-uuid/27f277a0-b552-43a0-904d-625e48922bb9"; }
];
networking.hostName = "strixi-minaj";
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.cpu.intel.updateMicrocode = lib.mkDefault true;
home-manager.users = forEachUser {
home.stateVersion = "23.05";

View File

@@ -1,7 +1,7 @@
{ inputs, specialArgs, config, lib, ... }:
{
imports = [
inputs.home-manager.nixosModule
inputs.home-manager.nixosModules.home-manager
];
options = {
@@ -18,6 +18,7 @@
};
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
nix = rec {
extraOptions = ''
@@ -30,10 +31,12 @@
substituters = [
"https://cache.nixos.org"
"https://cuda-maintainers.cachix.org"
"https://ai.cachix.org"
];
trusted-public-keys = [
"cache.railbird.ai:KhnvcouxtIU2zxUcjJsm4bUK3o1S3p8xMf9qfZGF7/A="
"cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E="
"ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc="
];
nix-path = nixPath;
};
@@ -44,6 +47,8 @@
};
nixpkgs.overlays = [
# (import ./nvidia-container-toolkit-overlay.nix)
(import ./runc-overlay.nix)
(import ./overlay.nix)
] ++ (if config.imalison.nixOverlay.enable then [ inputs.nix.overlays.default ] else []);

View File

@@ -1,16 +1,11 @@
{ inputs, config, specialArgs, ... }:
specialArgs.makeEnable config "modules.nixified-ai" false {
specialArgs.makeEnable config "myModules.nixified-ai" false {
imports = [
inputs.nixified-ai.nixosModules.invokeai
inputs.nixified-ai.nixosModules.comfyui
];
environment.systemPackages = [
inputs.nixified-ai.packages.${config.nixpkgs.system}.invokeai-nvidia
];
services.invokeai = {
enable = false;
services.comfyui = {
enable = true;
host = "0.0.0.0";
package = inputs.nixified-ai.packages.${config.nixpkgs.system}.invokeai-nvidia;
};
}

Binary file not shown.

View File

@@ -0,0 +1,140 @@
final: prev: {
nvidia-container-toolkit = final.stdenv.mkDerivation {
pname = "nvidia-container-toolkit-debug";
version = prev.nvidia-container-toolkit.version;
# This is key: multiple outputs, so you can reference them later as:
# $out -> for main
# $tools -> for the 'tools' output in your new derivation
outputs = [ "out" "tools" ];
# No source required for a pure wrap
src = null;
dontUnpack = true;
dontPatchShell = true;
nativeBuildInputs = [ final.installShellFiles ] ++ final.lib.optionals final.stdenv.hostPlatform.isLinux [ final.makeWrapper ];
buildInputs = [
prev.nvidia-container-toolkit
prev.nvidia-container-toolkit.tools
final.glibc
final.coreutils
final.bash
];
# Create wrapper scripts for each set of binaries
buildPhase = ''
# --- Wrap binaries from the main output of the original toolkit ---
mkdir -p wrapper-out
if [ -d "${prev.nvidia-container-toolkit}/bin" ]; then
for exe in $(ls ${prev.nvidia-container-toolkit}/bin); do
cat > wrapper-out/$exe <<EOF
#!${final.bash}/bin/bash
if [ "\$(id -u)" -eq 0 ]; then
mkdir -p /var/log/nvidia-container-toolkit
chown root:users /var/log/nvidia-container-toolkit
chmod 2777 /var/log/nvidia-container-toolkit
fi
# --- STARTUP LOG ---
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe started" \
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
# --- COMMAND INVOCATION LOG ---
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Executing $exe with args: \$@" \
>> /var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
# --- Run the real tool, piping stdout+stderr to tee ---
${prev.nvidia-container-toolkit}/bin/$exe "\$@" > \
>(tee -a /var/log/nvidia-container-toolkit/$exe.stdout.log) \
2> >(tee -a /var/log/nvidia-container-toolkit/$exe.stderr.log >&2)
exit_code=\$?
# --- FINISHED LOG ---
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Finished $exe with exit code: \$exit_code" >> \
/var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe finished" \
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
EOF
chmod +x wrapper-out/$exe
done
fi
# --- Wrap binaries from the 'tools' output of the original toolkit ---
mkdir -p wrapper-tools
if [ -d "${prev.nvidia-container-toolkit.tools}/bin" ]; then
for exe in $(ls ${prev.nvidia-container-toolkit.tools}/bin); do
cat > wrapper-tools/$exe <<EOF
#!${final.bash}/bin/bash
echo "STARTING TOOL"
if [ "\$(id -u)" -eq 0 ]; then
mkdir -p /var/log/nvidia-container-toolkit
chown root:users /var/log/nvidia-container-toolkit
chmod 2777 /var/log/nvidia-container-toolkit
fi
# --- STARTUP LOG ---
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe started" \
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
# --- COMMAND INVOCATION LOG ---
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Executing $exe with args: \$@" \
>> /var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
debug_flag="$([[ $exe = "nvidia-cdi-hook" ]] && echo "--debug")"
ldd ${prev.nvidia-container-toolkit.tools}/bin/$exe
set +e
# --- Run the real tool, piping stdout+stderr to tee ---
${prev.nvidia-container-toolkit.tools}/bin/$exe $debug_flag "\$@" > \
>(tee -a /var/log/nvidia-container-toolkit/$exe.stdout.log) \
2> >(tee -a /var/log/nvidia-container-toolkit/$exe.stderr.log >&2) || true
exit_code=\$?
# --- FINISHED LOG ---
echo "\$(date '+%Y-%m-%d %H:%M:%S') - Finished $exe with exit code: \$exit_code" >> \
/var/log/nvidia-container-toolkit/$exe.log 2>/dev/null || true
echo "\$(date '+%Y-%m-%d %H:%M:%S') - $exe finished" \
>> /var/log/nvidia-container-toolkit/$exe.startup.log 2>/dev/null || true
EOF
chmod +x wrapper-tools/$exe
done
fi
'';
installPhase = ''
# For the main output of our wrapper derivation
mkdir -p $out/bin
if [ -d wrapper-out ]; then
cp wrapper-out/* $out/bin/
fi
# For the 'tools' output of our wrapper derivation
mkdir -p $tools/bin
if [ -d wrapper-tools ]; then
cp wrapper-tools/* $tools/bin/
fi
'';
# If you need runtime dependencies, inherit them from the original package
propagatedBuildInputs = prev.nvidia-container-toolkit.propagatedBuildInputs or [];
propagatedUserEnvPkgs = prev.nvidia-container-toolkit.propagatedUserEnvPkgs or [];
meta = {
description = "Debug-wrapped NVIDIA Container Toolkit with separate tools output.";
homepage = prev.nvidia-container-toolkit.meta.homepage;
license = prev.nvidia-container-toolkit.meta.license;
maintainers = prev.nvidia-container-toolkit.meta.maintainers;
platforms = prev.nvidia-container-toolkit.meta.platforms;
};
};
}

25
nixos/nvidia.nix Normal file
View File

@@ -0,0 +1,25 @@
{ config, pkgs, makeEnable, lib, ... }:
makeEnable config "myModules.nvidia" false {
environment.systemPackages = with pkgs; [
nvidia-container-toolkit
nvidia-container-toolkit.tools
];
hardware.nvidia-container-toolkit = {
enable = true;
mount-nvidia-executables = true;
# additionalEdit = ''
# ${lib.getExe pkgs.jq} '
# .devices |= map(
# .containerEdits.hooks |= map(select(.args | index("nvidia-cdi-hook") < 0))
# )' | ${lib.getExe pkgs.jq} '.containerEdits.hooks |= map(select(.args | index("nvidia-cdi-hook") < 0 ))' '';
};
hardware.nvidia.open = true;
hardware.graphics.enable32Bit = true;
hardware.graphics.extraPackages = [ config.boot.kernelPackages.nvidia_x11.out ];
hardware.graphics.extraPackages32 = [ config.boot.kernelPackages.nvidia_x11.lib32 ];
services.xserver = {
videoDrivers = [ "nvidia" ];
};
# nixpkgs.config.cudaSupport = true;
}

View File

@@ -1,6 +1,6 @@
{ lib, ... }: {
options = {
modules.xmonad.picom.vSync.enable = lib.mkOption {
myModules.xmonad.picom.vSync.enable = lib.mkOption {
default = true;
type = lib.types.bool;
};

View File

@@ -1,4 +1,68 @@
final: prev: {
final: prev:
{
# nvidia-container-toolkit = prev.nvidia-container-toolkit.overrideAttrs(old: {
# postInstall = ''
# ${old.postInstall or ""}
# mv $tools/bin/nvidia-cdi-hook $tools/bin/.nvidia-cdi-hook-wrapped
# cat > $tools/bin/nvidia-cdi-hook <<EOF
# #!${final.bash}/bin/bash
# # Trap any errors, including crashes
# trap 'exit 0' ERR
# set +e
# $tools/bin/.nvidia-cdi-hook-wrapped "\$@" || true
# EOF
# chmod +x $tools/bin/nvidia-cdi-hook
# '';
# });
runc = final.stdenv.mkDerivation {
pname = "runc-with-logging";
version = builtins.getAttr "version" prev.runc or "unknown";
# No sources; we're only wrapping
src = null;
dontUnpack = true;
dontPatchShell = true;
dontBuild = true;
dontConfigure = true;
nativeBuildInputs = [final.installShellFiles];
buildInputs = [];
outputs = ["out" "man"];
installPhase = ''
mkdir -p "$out/bin"
cat > "$out/bin/runc" <<EOF
#!${final.stdenv.shell}
# If we're running as root, ensure the /var/log/debug/runc directory exists
# with the desired permissions.
if [ "\$(id -u)" -eq 0 ]; then
mkdir -p /var/log/debug/runc
chown root:users /var/log/debug/runc
chmod 2777 /var/log/debug/runc
fi
# Log this invocation to /var/log/debug/runc/invocations.log
echo "\$(date) - runc invoked with: \$@" >> /var/log/debug/runc/invocations.log
# Hand off control to the original runc from prev.runc.
${prev.runc}/bin/runc --debug "\$@" > \
>(tee -a /var/log/debug/runc/stdout.log) \
2> >(tee -a /var/log/debug/runc/stderr.log >&2)
EOF
chmod +x "$out/bin/runc"
installManPage ${prev.runc.man}/*/*.[1-9]
mkdir -p $man
touch $man/afile
'';
# Optionally inherit original metadata
meta = prev.runc.meta // {};
};
rofi-systemd = prev.rofi-systemd.overrideAttrs (_: {
src = prev.fetchFromGitHub {
repo = "rofi-systemd";
@@ -8,6 +72,20 @@ final: prev: {
};
});
wyoming-satellite = prev.wyoming-satellite.overridePythonAttrs (oldAttrs: {
src = prev.fetchFromGitHub {
owner = "colonelpanic8";
repo = "wyoming-satellite";
rev = "509628a9be2cf61116b6d0475e19c0b92a855e0b";
hash = "sha256-ewSxVv+8r2VGYNOoj8jiMogXtp1GPApcRc2BH3Q+8W8=";
};
build-system = with final.python3.pkgs; [ poetry-core setuptools ];
pythonImportsCheck = [
"wyoming_satellite"
];
propagatedBuildInputs = [];
});
git-sync = prev.git-sync.overrideAttrs (_: {
src = prev.fetchFromGitHub {
repo = "git-sync";
@@ -24,7 +102,11 @@ final: prev: {
rev = "51b21355696add83f39ccdb8dd82ff5009ba0ae5";
sha256 = "sha256-crCwRJd859DCIC0pEerpDqdX2j8ZrNAzVaSSB3mTPN8==";
};
nativeBuildInputs = old.nativeBuildInputs ++ [final.pcre];
nativeBuildInputs = old.nativeBuildInputs ++ [final.pcre final.gnugrep.pcre2 final.asciidoc];
buildInputs = old.buildInputs ++ [final.pcre];
nativeInstallCheckInputs = [];
doCheck = false;
dontCheck = true;
});
expressvpn = prev.expressvpn.overrideAttrs (_: {
@@ -44,7 +126,7 @@ final: prev: {
};
});
emacs = prev.emacs29.override {
emacs = prev.emacs30.override {
withNativeCompilation = true;
withTreeSitter = true;
};
@@ -52,6 +134,7 @@ final: prev: {
python-with-my-packages = let
my-python-packages = python-packages:
with python-packages; [
universal-silabs-flasher
argcomplete
appdirs
ipdb
@@ -61,19 +144,43 @@ final: prev: {
pip
requests
tox
virtualenv
virtualenvwrapper
];
in
final.python311.withPackages my-python-packages;
# gitea = prev.gitea.overrideAttrs(_: {
# src = prev.fetchFromGitHub {
# repo = "gitea";
# owner = "colonelpanic8";
# rev = "40e15b12bf104f8018f56e5b826d8a2f8e2587ea";
# sha256 = "sha256-VXP8Ga681rcKn548rOZq9I19abY0GzXRpdiYGpwyMJ4=";
# };
# go = final.buildPackages.go_1_21;
# });
claude-code = prev.claude-code.overrideAttrs (oldAttrs: rec {
version = "1.0.86";
src = prev.fetchzip {
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${version}.tgz";
hash = "sha256-mVXS75KgeKgD7EI5t9X6+TkwjBFyBLOo4/m50sS9XdA=";
};
npmDepsHash = "";
});
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
(
python-final: python-prev: {
pysilero-vad = python-prev.pysilero-vad.overridePythonAttrs (_: {
src = final.fetchFromGitHub {
owner = "colonelpanic8";
repo = "pysilero-vad";
rev = "846caf4aa6c5f5319b87d3127dfe0aa9e88b338e";
hash = "sha256-SjoyiHm2RiLDFbwduKsoPK4/AvQiwZ39ZsPj2etXRV0=";
};
});
home-assistant-chip-wheels = python-prev.home-assistant-chip-wheels.overrideAttrs
(oldAttrs: rec {
bypassAttestationVerificationPatch = final.fetchpatch {
url = "https://raw.githubusercontent.com/tronikos/chip-wheels/8a5ec21d114010723cf428ffe79e244da7562390/8766-Bypass-attestation-verification.patch";
sha256 = "sha256-RgmlPRSfw1PPMdHBzpoK2Drrb8nEagATY8Y5ngi7x0k=";
};
postPatch = ''
pushd connectedhomeip
patch -p1 < ${bypassAttestationVerificationPatch}
popd
'' + oldAttrs.postPatch;
});
}
)
];
}

View File

@@ -1,7 +1,22 @@
{ config, makeEnable, ... }:
makeEnable config "modules.plasma" true {
services.displayManager.sddm.enable = true;
{ pkgs, config, makeEnable, ... }:
makeEnable config "myModules.plasma" true {
services.accounts-daemon.enable = true;
services.displayManager.sddm = {
enable = true;
settings = {
Users = {
# Show a maximum number of users
MaximumUid = 60000;
MinimumUid = 1000;
# Enable user icons
RememberLastUser = true;
};
};
extraPackages = with pkgs; [
# sddm-astronaut
];
};
services.xserver = {
desktopManager.plasma5.enable = true;
desktopManager.plasma6.enable = true;
};
}

View File

@@ -1,5 +1,5 @@
{ pkgs, config, makeEnable, realUsers, ... }:
makeEnable config "modules.postgres" true {
makeEnable config "myModules.postgres" true {
services.postgresql = {
enable = true;
package = pkgs.postgresql_15;

View File

@@ -1,5 +1,5 @@
{ pkgs, config, makeEnable, realUsers, ... }:
makeEnable config "modules.rabbitmq" true {
makeEnable config "myModules.rabbitmq" false {
services.rabbitmq = {
enable = true;
};

View File

@@ -0,0 +1,25 @@
-----BEGIN CERTIFICATE-----
MIIELTCCApWgAwIBAgIRALNxOT7J7N/eK6edp9LbKAIwDQYJKoZIhvcNAQELBQAw
LzEtMCsGA1UEAxMkM2I2N2M2NzgtNzI5My00YTIzLTg3ZWItY2NiMTZjYWFkMzFm
MCAXDTIzMTIyOTE5NTQ0MloYDzIwNTMxMjIxMjA1NDQyWjAvMS0wKwYDVQQDEyQz
YjY3YzY3OC03MjkzLTRhMjMtODdlYi1jY2IxNmNhYWQzMWYwggGiMA0GCSqGSIb3
DQEBAQUAA4IBjwAwggGKAoIBgQCUYUuTrpDbwUS2B3SYUoa7LI5mi8NNr0lDe1w4
3yPpVnu6ubvnTNm2j/v88HYwEjlppEg4HjhP7YEJ8gsGdgUCpIaPWTpifVmA7E4o
2DbJDiePkkUGkNL0whCClOOcO0hyxdk9Pol5wRzci0l6zSalE6DB4rJrmB5Ppl/A
t2KAVVqpwbynmbijr4yZh7Bp7LfaIrFthlv2ZPEjLfPLz7YthBw9/iUt94mLMyWZ
BpygA5y/CocQQnnFMnU1o0eUd37YL7zErfIxx/AmL10Sq0qdFXiYOJJqubURbdS8
DZ6dyHdX+UlxPls2Rlx9nDaiNGFJdzqHJzDdOlzN3kkdDQoO8xUdH9ekFU7rOwkP
5NpubSwrd1FOGHh+EknugnEQD4Oip/YQ7IUj3Afm5Ag2la9k4WJRgjACbkQ2+k9I
sFmPmmMVHn9nepCMiYQMjX7ApZw0isDPeVK5EuQeImgu7uNoV8R5VwG0XoBCXz4S
UqYv11uEsMqFu07Zwlznsxnm0uECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgIEMA8G
A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI73GznmeECJOdxJAEzmjhYgGVKtMA0G
CSqGSIb3DQEBCwUAA4IBgQAm19zlm3WVePflA6Zh/FxvE8MirrJF6jmJzRrBCEM5
DwkSmY3dvONqCYeeNb4+xWXWQ8eVKVlPdkoW3V7H5xnJ63dXRNN2lQ3JpSTG3+yP
Omp6XGY9mmatdHwyV7N4h10aKEWAuRhy148sdJZLYj0LbR42pCVYhEP4D3Qj7KjN
PJe+cR8NSpiYmDH5y88Jqubztj5NVcDj/iN9h/7/GajbU6lCgN/SxZgi9cNGjxSb
JHFHE2Mp3z9sjsieTXMplLqK045TQ2IBqnJyMdKkvSNkRUCbz2yXdiIOKtvU4ly0
h884z9P5JQ9bxe+6cwYC4ky3G5WYMn++RUsuCk4ScsrbZtM9jpKnz/TygMdVTC5w
Siq6OHKtAnh8Ax1LEKicg9FLd6ODxR3OVKu+fUPV4XHAWJnmvElGlivjneHiE+OL
dzgb/CfBEGHYBVc2PDIhwBmUdoEZ/t3UjvmSI46ZblYpWodJvLFwge2HxSivRlLW
Uh/oPWX5N/CH9I34HTAhI48=
-----END CERTIFICATE-----

View File

@@ -1,6 +1,6 @@
{ config, pkgs, inputs, makeEnable, ... }:
makeEnable config "modules.raspberry-pi" false {
makeEnable config "myModules.raspberry-pi" false {
imports = [
inputs.nixos-hardware.nixosModules.raspberry-pi-4
];
@@ -12,6 +12,7 @@ makeEnable config "modules.raspberry-pi" false {
# hardware.raspberry-pi."4".audio.enable = true;
boot = {
initrd.systemd.tpm2.enable = false;
initrd.availableKernelModules = [
"usbhid"
"usb_storage"

10
nixos/runc-overlay.nix Normal file
View File

@@ -0,0 +1,10 @@
final: prev: {
runc = prev.runc.overrideAttrs (_: {
src = prev.fetchFromGitHub {
repo = "runc";
owner = "colonelpanic8";
rev = "4b809881415e99247d8dea2eda862491dbc9acd2";
sha256 = "sha256-XOslGNu+ix52938SnnhmWKUaZaTQx9+/o74tnAjmo3I=";
};
});
}

Binary file not shown.

Binary file not shown.

View File

@@ -1,48 +1,56 @@
age-encryption.org/v1
-> ssh-ed25519 ZgrTqA O0XHnLd6cH/2OZyZWRvB028wmx8x8b4ojoqzidpANQM
tQXIb/FsHcXwBet9icQrU1gYxpWUXOMFnxhHq+pJegc
-> ssh-ed25519 ZaBdSg dXtxOGI6j+NyJadTzlhTkb+6/rf5BEtUeZCnH4SjpA4
UCqDgtXh3tMFGz0xDyWn5I81S91CRrEJ9j4LAUN14vI
-> ssh-ed25519 MHZylw GGmyYlC28NKCP+uuAQBO3EIqB+XY63SCkDN4e/WdGkY
GVzmq2tmIJvFnmMnvO12Ok8gOofTRBt20HH586tNzps
-> ssh-ed25519 sIUg6g +VSuYouQxNM8Ch9xTIdokrtAK6RU5NoMNN6nUAr+rQQ
GDRltKHjD6D4d9Z0vq04M6ELi53GdZZFAZde/V6YzuE
-> ssh-ed25519 TnanwQ HeLm9uq5waI09epfKCsRLFO0Ll/V9Rg6y7LAOjGKLmc
jjpTs70FeSaxBH3OyvEfGl71kpVRZmtaCkS29VXehVw
-> ssh-ed25519 ZgrTqA +u18TitbmPrZLwLNMT5C9wbkXPeROgHrh3Tb1RpE52s
WcIdsXKxuTOEeja8mh5qoZ38hSlyS2K0WFS4sB/yKv8
-> ssh-ed25519 ZaBdSg f9kJeTDYYwQLbfL0lfSZjAkRj/8i7MOzp9MQ8ojEl0s
Ez8Pmw5sLZUNWE6nIswzE6mQxZiAhKERLbD7MT/RTN4
-> ssh-ed25519 MHZylw P/KulIF/w8YmSUpXObabu0El/rGAuETPvMGHLdfpR10
Mz9S83bVirlz+pjOrEsJP8oRIBz6PdneMopEshYbj/I
-> ssh-ed25519 sIUg6g mobkna3lBZAMq7IwqR4uV5Bg6c353po4/+YY8Iqg/Bg
rCyfVkXKoPotBEEb6r3T56sRdjn9fC+taxrnRZuUSvc
-> ssh-ed25519 TnanwQ hCPpi8mAGltRM8bpl5OoFGVToPy58Pia9ElyCIi1enM
o9m5Zzl+8kDPEFkQ/evupeGJG6S4aiZk+PaUxlvMTSU
-> ssh-ed25519 cH4aug mR6lvjeeWSUmK50rsOjGGG6ccwzTpGVt97dW1rEEqQo
AQvUomG2XgQo6dFIkZ24N97l8/B3F9WnN/KVGzITcz8
-> ssh-ed25519 ggrAFQ lYeue71aHAhUsy/LOgDPCNmavQEl9VIVnOVC/W/VoWk
SwYzh1DpS5WHSdX2e16wkDUwm1Sa3ARHPF9UBycdHUg
-> ssh-rsa gwJx0Q
a6q+jlWud5INiCOwPH570EdyrEOahksIsz5ehCwi21xUpsw8uDAJvwJZ4LTUk7Pp
rgCu56ndd0LBqNAsqCO0NeP6rHj11Y9gVI1VAe8JZwQAd9uxP1wCFSamGPBAG3qU
6K7tSWxUJg5E5N8xn0UVasdC49PSadEBpvWOw7gxUcZSZk+zdXZkmNNJOJjblp48
BzjLiFs/NEapIrpx80nXurSiyN5IV97vK3owXqqYSKOoBR2JWbVeYVO47cR9UN8G
df43ozz2wrG3tfVgy23JfRUPinDxPkUJ0AbkpD7aBuEJfFmQSDjyl+wGevf5GAOI
rTNpOz31YvchkiynnXLhyg
-> ssh-ed25519 YFIoHA 9Sx54ArYGvWtaM64vIuh/xNfC00Kn/6OiIL7zkK/IBI
cHLc5wccimYC6ICqnz3e1hs+4XAHzRd32dj0/g+4q6s
-> ssh-ed25519 KQfiow p7igfY7SkJe2k9EZMy+VEr+uYnEZZSosmAJKOWwopDU
z3HZmOrrhK6Ns5z5EOtlgoo6IROMuo2elRrnX/I9YvI
-> ssh-ed25519 kScIxg de1921H/EqUtCsmjytrGa/9vx41qKO/jiTTNRXRK/xg
IzjtdSwv/FwgGyl6qumTvDi5imcUKolt5upP0hNDd1g
-> ssh-ed25519 HzX1zw u7OB64Wzd4siphc3kyRbPwYswc/vn0eqtUiId5byuVE
t8CF85/o71ra6IAgXAfcoCZHs4VN/ejOQVsdUZaaLqo
-> ssh-ed25519 KQfiow uzyI3JXAF3twmqSKDZAgNEMv/Su832geK/y46hKiJCg
qpbPTkQYUcPSuFEXoOnYmGLcAL2TH2XpkBOqeVvUVVk
-> ssh-ed25519 1o2X0w u9pY09CQumynSF+9z59nuEuZFPwdVld8XQOLG0N4llw
i1HrE7Nk5O/h9eYGeq+nx5UCIgO2c0ROHcwUDiFFxoM
-> ssh-ed25519 KQ5iUA zpOP9fMu7Mqm0LbkA78KInXworz+LGpovjk5mIOOfVM
Q2y9sMSgwIahs+7ceXY6bYha87uXcD28irc4zRYbOSE
-> ssh-ed25519 AKGkDw mLi5T/ia2gQ9z357LYQUbgUQ37DLPhbRlR3LkPvOPk8
rPUwUtTwDAbn49GgLO9vfW/P8hfrhf4znvrmHiiPXLE
-> ssh-ed25519 0eS5+A DomPBIFcr3Wxi1sfGzEBKTpRruHijRX5CDh7xk/mQgg
u9hQHSq3w/NBv3zpIpbX3bMk2vYaNn8dl079zz4cRmE
-> ssh-ed25519 9/4Prw kczIhptmCQmYolhBX+omXqbtTuqqEeL8Mnx2k/1c3Wg
3QBDp0WfYP8Ni3zZ3xk8yC5WscRa+niwjO+6Q2MR9Is
-> ssh-ed25519 gAk3+Q HhCggnhkMhbZG1VyyjtibA7eAnnhS+ZVDMuKmFW+fiQ
7URzpfoMkgD/Jn0N2FV5WJxLpDOPkmI3W7yA5G+MyQg
-> ssh-ed25519 X6eGtQ KBzu6+tTigAYC+ifRi5rGyocU0l1PfBj2KuK9yasUiw
ShtvUv9tuuvYf7dHDnBIQtLWVkN9gaP6ryyeCVoNVIU
-> ssh-ed25519 0ma8Cw 4kkPaMRoYuYflcHDAzBAaWd9+Q3CXV97Hs7d8sFIU3w
7JQH4QYVnnxhjfr0wQTqLieGc3G5ymEBdivqO2/vEWM
-> ssh-ed25519 Tp0Z1Q 3GL4a2CUqmbEK0POxjUADiUtnA96enIKavGEJBr4QTM
RP5mZ7PKqB29cU5ir3wiX7CDM6KuqBysO2g9HyONlKE
--- hLdA7jp69UiOM2LP3bMxOCNnHUWwcgL2BbSsz3+D8lM
2<EFBFBD><EFBFBD><EFBFBD>1<EFBFBD>Q><12><><EFBFBD><1A><>2-<2D><><EFBFBD><13><><EFBFBD><EFBFBD>R<EFBFBD>><3E><12>B<EFBFBD><42><EFBFBD>(<28>^~<7E>(<28>ۻ<1D><><EFBFBD>?<3F><>n*T<><54>MK;oN<6F>W<EFBFBD><57><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD>; K븬=.<2E><><EFBFBD>Ȑ<EFBFBD>J<EFBFBD>U+<2B>a<19><>Q<EFBFBD>Zr<><72>g^<5E><EFBFBD>"R<>0<14><18>J<EFBFBD><4A>c<EFBFBD><63>4d?<3F>Ȧ3<C8A6>,<2C>O<EFBFBD><4F><EFBFBD>
fbU+nVFbxpVC0D1rxouGi8aOirZ5CYaMlmm+pLmpI81WZRweyi/8j16IvRSqV9CB
T4uLqBcpsYKVroPIvkIzy1LBUE0LrYj4tVAoAtPWUOk+Z3+pSs9MpTf4nhxjj2UJ
xXw+Kjw0rlAIy48cG8UssI3MAvF17m3JUG4xJxDmM/69J428tE1xa0JMjMXf/E7s
g/RSO7cx+Pcn2ClrFdMOVEkVNIKUkJdpymRSdOpwQnwzgOo4NNwBowFv/6OpfFdP
tS9zX9ZgpcOLKdCV463afYCbZ9z6lsw4KnEUL+bg0QAz8PtlRpF56LUnmBRSWPNN
nl002m6a+uZZQl1HizgR9Q
-> ssh-ed25519 YFIoHA Q8+eEd7maA4f64SGQfyk0pRuxY2WiD3UzHuLmzIPvVc
XWV6IuKDftDStCgj4brPMaTvea+kIlYg7JGnkyX1+Ps
-> ssh-ed25519 KQfiow rra4AZqxS0duGI0GrMAGt1KnUVRyBbnGcZhsu2QeCxM
jaIThcqxxxh9atSgrVEzMFsDip5aNTxWaekgIw+lLKw
-> ssh-ed25519 kScIxg NBVuAT7UXhPMu1THkAXJ1QYNwSnFIgvjQB6jYD7t4AI
xs+x0xP/jRBsvr2IMhEBrpP0o1Ian9Guw1yuMT0b5XA
-> ssh-ed25519 HzX1zw yyjdUbfty0hE0jIc2MMYvRkq/c/DABHJczH/CqyOkRw
c5lkqMwaxsojqx/jYJhMbgWuN0qdgf3VlBYnUHpc/OE
-> ssh-ed25519 KQfiow 70CAriiLnPXfh3a7HJnjRk0K5vYPc24AKjEWjiD/bSM
Sp/hULrynhI79p/zh96sD3rIYMTMzGD6CvN+6Dmxhhg
-> ssh-ed25519 1o2X0w +xLXrJLT2PITsHGkhak6M6/1ifd32sEHcNtI9xdTNTE
PI80gCMGaR24FRiOmNeReTXrUecgCNJZMInKGNfQHic
-> ssh-ed25519 KQ5iUA J2rBvdYjd9RYlQtVfaV50ZN0naHT58e3rZrnhgEszkg
/iG3OU/HVraqegvrTgZz5/gp1HZwyGgGkXhjGYJXAoY
-> ssh-ed25519 AKGkDw 7gJhihE5rASMzycK4rzrSj3oll5hHqzXNQo1qzoqnwE
zlisCc+y2x028mosTHDQjrMDAX2lF3HAJ8LLtzuwwZ4
-> ssh-ed25519 0eS5+A sLIAQR51fxFZatgc7CCJYgjCtfdqYFLBnL4Qs9WmbyM
CgeHGN6+/ZE/RrQoPlaizGtu3bEz8lPfWEfFYY9wzrA
-> ssh-ed25519 9/4Prw uytvwSpCRE/5xDu/Og60k6jBF3wyBanyZMWhEjzcf1E
CM37OOCnORhdGDPXLJ7VIRYJhvMXKxfs6oK9WnHycV4
-> ssh-ed25519 gAk3+Q hqrzZ+KHXT7mfI/6332ZymbDTQmjS2m7jDhtqNQ44no
n/k8+t4BcmPy5Tgkl9e8/CSoCcmVp2lkU8rCRlSGfZU
-> ssh-ed25519 X6eGtQ kO2cKtxVcAIRA3xC4zLLuj2cfZ6CKlOq3aTrB9cqhg8
tG5GtTne/45DqNkJ8XjOlfbbDGLfTxweUKG1+f7aXNU
-> ssh-ed25519 0ma8Cw /PwKBNkRtj0mWkG3fJZOIjdLkhWlxxtowVABKjxShG0
OSfm0wSpyrd8bb836wbFi1BrWHkuZ4DuWw9ZwfMP5b0
-> ssh-ed25519 Tp0Z1Q qJqv47mimbpQkdiYO5sDqj+Qyi7Nq+y9Bb/EuxneXQg
F+b8rEY9rxDdPe+mVy0h7AggugMvGi9lvwKDfe/rjJs
-> ssh-ed25519 ePNWZQ MO3gceW2gDffFS/Tr2F2BkMSKD6Ydn/mRXHqYckGOnU
3CxqL9EwDQ99T7pN6b/NU0NQungyh2EHE56L8Stuj/U
-> ssh-ed25519 hILzzA AIf5pdaRPGOtKKV/gY5GM/PNtqSXVhoxB69t5JEgUlA
d6TC0L2OpbhvaREkVc+rNzY7U8VIQMG0in0UHFsGSUY
--- 6QUiesVdF1mNKhzpT/tPTMDvL7MAkEbXR2CHau5/SHE
<EFBFBD>ڙM<EFBFBD><EFBFBD> x<>0<EFBFBD><30>_<EFBFBD><5F>v<EFBFBD><76><EFBFBD><EFBFBD>uA<75><41>u1ON<4F>* ݩQJ<14><>E@<40>ϚȬ<0E><><EFBFBD>b<EFBFBD>Clg<6C><67><EFBFBD>j<EFBFBD><6A><EFBFBD><EFBFBD>ǘ<EFBFBD><C798>F+6"C<><43><EFBFBD><EFBFBD><08>/Ya<59>#<23>l<EFBFBD>p<EFBFBD><08><18><>E4w<34>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3<>i<><11>L<EFBFBD>?<3F><>v:2<><1C>ߖY<><59>l<EFBFBD><6C>s<EFBFBD><73><EFBFBD>

Binary file not shown.

Binary file not shown.

View File

@@ -1,48 +1,52 @@
age-encryption.org/v1
-> ssh-ed25519 ZgrTqA iez83NCzN7sb/O+bYHDWB/420SYC6Wz++js1clRvSyk
pkOvxmV4JJLHrzNjF8bpwVxmcH06JF1jUuB+7Hy5QX4
-> ssh-ed25519 ZaBdSg ib4g0QcRi6MPHDLvTgoksKjra3L3PLmIcHZFu332Qnk
TQTrIrHUv/xmN/kwsAlgOqmj9HAB72ubjiD+zz8JcUI
-> ssh-ed25519 MHZylw SxdlNrD7U4QSXsxOmXDteKpvJ9WGpLrZZjYHnxI3yjc
6EmdU8LPyanusjmszO3mdDJozxZuLyN7N52kxH0SA40
-> ssh-ed25519 sIUg6g 4pxG9NrxTmoOkKvt/J0LNPG2c0DmbDYe1suvYORTFm4
eT1/an3xE6iqn0ewms8d6T2tpn5wpeEhC1pab2jb/MY
-> ssh-ed25519 TnanwQ VR8oO8fW7YK85eXxmVJWUysdPOTuy3d0ymLDLOcJnVE
ATNa9yjmsVpeMuJx+RhhfN18a8p501xkb5cnCaWAqaU
-> ssh-ed25519 ZgrTqA iW7mNP6ZLuX+VH9RQykM/kD/xYhuZ/req0K977h+0G8
N8IfXH9wGB4W3cc/t/dMXvpiuA467sYpbSJ1FbNK1nM
-> ssh-ed25519 ZaBdSg xHC5cGTqglVLNtX9Eq9c1+puKticyX3tC3yJ7XhTCWY
wAIVpjfcTtthyYiLUr4ZeIMr3R6a9sZKQLBlwGd0JgU
-> ssh-ed25519 MHZylw xDm+4POwUcPFS16M0EbXcwCY1MCwLodvp5KXINN5dQU
sBxSYj8reNgfwpUpbRfQHsD9cZxVcv/14d9PPjWkMLg
-> ssh-ed25519 sIUg6g 5CF+k/ZnWrI85qzWgs93NiPL7XeA7xtt0NikXjdopkc
jn/MxKBCkV3TZKzHWoK85BPYDyKWZrz2dvnSvmMBJds
-> ssh-ed25519 TnanwQ dPvxr2PF2huQjuDMm8u9Jtt9qHOGANe8PFTmk9C5MDk
C3mdAy04NHA6GvxkHY0/mJimmlakqEaM5nQj0yNRR2k
-> ssh-rsa gwJx0Q
ReyIQtExcQR/pmOYGamTgTxz1JoyzFgLiJYu02SNGZRyjqNSFeCpQuowjJyYApJM
aJUpSsyK4vJ1X+2+bbzPTZrp9S2BgmO/3ebCKCm2Y4EhIXZCvffcno8TaoJRysWw
34EwLZ/30r4iLBscDIQB2oat7hWLJQoLiDreBRS90JZOock9FfGP4SfXirBRfDgr
gh817YZvIhpTzU8/0gLrsQ9hnN6eNre22N9rLdZSXWFfkeD01723sJMr6w/ntXxb
gmzuC8JEhicxPkTzwVBeSPzeopHiUrqld5EGe3ZWDHAoYtmQCjN2H0BHQe/B5YJU
YFU4MZdgUykhrnxM26byDw
-> ssh-ed25519 YFIoHA 2Yv2+qhYd74prfDyu0osYbpXFmE+wMJK6W0JHjgqOGM
HSHHQOx/COo0s+dAtMITGIfrCcdYUYNzjLuiU+pGccM
-> ssh-ed25519 KQfiow cMKtLUkUMxFeEJdGmmHuRha93zCBNimQadaGZFVc+Bo
jgaenccqng03pj4WTNlIpmoDL9ZgVHSF0EmYLZ61GRk
-> ssh-ed25519 kScIxg 9vBKRKl4cFUhAsnmu5hW6s1SWe/vjPEJVrAvL/N7DCA
pPI7ZZPEZNlmR/44AE5WNATCJstiYgEkJQI7sZMtf9c
-> ssh-ed25519 HzX1zw 3aq/89MOxaQyDls41D3My6CWKmrzbP16XWRFnxSkqUs
wS6sHCOZUV8bn6z4sfhR9q5vVGGKeiFR2x6EmBi5A8g
-> ssh-ed25519 KQfiow mPERPckf5u2yDfdN9rYOKRWMKiNoOBpZUFePccYh7D4
92HxFjBC97bDWo+zfZNUYBEauSQWvxbAla4AYmhs0xI
-> ssh-ed25519 1o2X0w MGFx77Vg+nydzZqTC/+ohfN/6z6SDuO5ZgzplleGMRY
ked3VPIEk6QISpBemBNyNdV8a6a4b1KvMi3T8etojvs
-> ssh-ed25519 KQ5iUA CrDNvZYJNgfHnRCD+wiTuMnlZh4XT++FASlPfuTpOAY
GQKpp+6QKG+0nr2JFWtq87o7Eg9tol64JOkx8g7USpM
-> ssh-ed25519 AKGkDw uEF+jr3sCN3JsMRJrgeV0rJqdhDZog3fjrAe0tsLpjY
xLpw7Q7YgTw6D7JhqlNV3uSiT4Bt5ARWpo+6RiDd/iI
-> ssh-ed25519 0eS5+A +37WnrBGsf6CJ4Yro/RScEIQpaodiK3tbWr8736ADHg
4wG1HKA/96vOGO9jCJc/JkK/7KNWr1ovx078kStHH/Y
-> ssh-ed25519 9/4Prw e/mMP+AMG4HMhQcJ2uzfHHXQhmVjE7xoY13Di74OU08
1JUAd7FEXhncnNP5Ddt0o4vpZ4oj/omIs2aEwtVc0Xw
-> ssh-ed25519 gAk3+Q pe+2dfMK4o5e/qabl42cSMSkkw0MrZIHKZaUCmFt6mQ
CM8qOOE3/BYAyt/3igyBEhSmFIfhdI27N0zwfmvOGrE
-> ssh-ed25519 X6eGtQ q6vwAZm4onKe4/G8sw/stsgmrikNw1yUsxiiBFYxMlM
/hCXkTHiMe2AX0BZAmPuP1EnDtrKL9lb0kmErJueTbQ
-> ssh-ed25519 0ma8Cw NNuXxI5c3Bjs3XBn/GSMkn2K1F+X4WAStOWGZpD/lj4
kVxDinO7MAieUAZ0AoUE0560gXlh6QvIl5SO8qkrfU8
-> ssh-ed25519 Tp0Z1Q G/sxerwQ0vdiC3Evvevy6pkt/lWaIQJ3QVNoX2tIOjs
8+zWd1lUpOhknOJcABI1TKPNlBQheZD9aNDlGnF4Fkk
--- BjAZNIHU5U4toPAlQqLCB5vXP0MtpeK4zceu+dTdf/k
S<17>wf<77>D<15>Ѿ<><D1BE>V<EFBFBD>
arxGqHS2sOD+m05Ce0kw6DMDiK+0Go1t74m6yuJf1/mH2F7uw8sgrZQxdWon+r8t
ZyroQGRwMAWaya+bL9waDGV6j+MCyIcUa25dQHbGIGUnpKZVoYn8YVFLyiySTkLW
S5ve3HQNu4pp0EbL/+e3l2E7XPe1ssb4LGbbHZHXm7V4hKwgJqfnX8VUVTlWCHRd
6Gsd1Wezg4Qz8bnghjaaagWSKDhf8/iZL7B/+8NniZtMsY0Ajeqf6OpJuPdXnmCc
OnWZHriEhSqB+oEg4vGPU1iuo6WXwDW8oMNZ+2uHHV/UE7hgLfkvZaRUSGfcsK6m
EMnarBbUfsbsEmzEMMZ0lw
-> ssh-ed25519 YFIoHA wxFUFWCoLZ5TroHAVB4ffcwNx5vShL8pZZyhNB8P8kA
4Zl9WdtTlFRf6N45Ib6zdaQup5BfcDIEXPDnLUvG45A
-> ssh-ed25519 KQfiow x177D9cUo3jd+RzaLaPD/S3GDTE6j+8+V/3qYHkMeyE
PPnb3/lDia87oycMStdMjns2bDQt4wFln5+SnAAYs+A
-> ssh-ed25519 kScIxg aol/G1Qs/QbDkPBCqfrLdWCuk1JrIiIV+vGoAQoaWTQ
8XziIW+ST8De384wav/s8DIenM1oMdnDt7m33K+Fr5I
-> ssh-ed25519 HzX1zw sHNG8nyVp+YQuWvsyTGGVROGtQwuaWwt2vdgrnMY8F0
oB96+Cy0BUUJvWyr79x0BvVvE6PGjAWZQ4F5M8tcvfI
-> ssh-ed25519 KQfiow mAmkvvvUV/Q5uNBlCzbd9pssRfrmVL2j/FdS7b87wSg
4NvE6fhb9nDzZAAFZ8V7TH7HlI8pneB44miqS6u1Eew
-> ssh-ed25519 1o2X0w 6BVN/+6QeL+kfP4InEY+jS6khB6NDBWAXnqxUEMFAT0
y/nSLtF+ViQftlahBPQcGDKcJpDNva3drF6cKC6kdZY
-> ssh-ed25519 KQ5iUA U8mS+gIc0tXxuPbObNsd1D1hs55JGGcI5loPqrSA+38
od25qdUN3i3TW82r/I0ASH2TcdedB5fx8bIruiRFvTE
-> ssh-ed25519 AKGkDw PYy1rFbiygNpHGvLLjpdL576kBK4ZrJMw2xfgYobUks
VBPTCvuR2sU0jxK+R7PuV32EOuCUL0I7t1GkVeHhsxc
-> ssh-ed25519 0eS5+A gOl/bjYvFdjKqumiQqSEXgi50Q/WFhDcE9avn2IhT2Q
O8tSrAwn4rFwgAeKEvBtsjotsQLL1YnUP+Pdv+h+nJI
-> ssh-ed25519 9/4Prw 8nFSnwnJK2Zmowndn4+oHcZB3lnnc+ftwzulMMLDVig
BSnOn7wQ/wzeP1BU7aOYkq38yP8oxlxwJ/NP4xAkQyc
-> ssh-ed25519 gAk3+Q 4874w13segiQbbAIN9qOMOG8/ZJJsw/Cbk8r6x6wHiU
hiDoRDUe668+nMEeJAmRqqMXvURsm5IZdgejUZ01dx8
-> ssh-ed25519 X6eGtQ EDpZRMJFeVi9frrLX90RdgY9I5OhDZiL/mUqLjNYcg4
+Pl91UhUK6JCB7qNHCm16b7pzzWPbyJJ9RwbItorMLk
-> ssh-ed25519 0ma8Cw r/yyr38mx1CRWbrcws+CzFQIcDInpqqhhXi0IwlUPn8
7MfAXxEt6TYNCglqV1JPvfrotXXFR98UUp0D8iVjg2E
-> ssh-ed25519 Tp0Z1Q vuqbPEbx+M5BeXNvdV4MW61BqTqmATXP41krZYrqGlw
FxRpxiYob2OrdL7KmWfExCsxqj7F6rGc83H5xkokKwE
-> ssh-ed25519 ePNWZQ sZV5J+AbDKJY3JCfMMv4Ar+6dZsfvrUJLuwzq8ZF0zw
yA85IpelgbbdklaFTkBJhs8KVCqi6gbFwOPplZXPcDQ
-> ssh-ed25519 hILzzA dUPwyiJPkVnXA/9rfY8a5CQTDYaG+bWJBmWNXbI551Y
l7XxSTndJ1/OheLTHg4NzkKmFQmUljttxqTt+SWcQiQ
--- T0uccGgB2l7+horZsw91HVYl2FA1bZo8gJZiXzgTzlU
<EFBFBD><EFBFBD>"<22>#Qi<51><69>q^<5E>+<2B>$<24>1<15>4<EFBFBD><34>GqY<71><59><EFBFBD><EFBFBD>G<EFBFBD>'<13><><EFBFBD>򎠖<EFBFBD><F28EA096>.

Binary file not shown.

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