Compare commits

...

488 commits

Author SHA1 Message Date
Anish Lakhwara e86084786d updating website 2024-10-29 00:00:10 -07:00
Anish Lakhwara b6b6efc4c7 updating website 2024-10-26 00:00:09 -07:00
Anish Lakhwara 8d2f747337 add mast route to box 2024-10-25 16:15:05 -07:00
Anish Lakhwara 3c3236cd2d curnve does ssh now too 2024-10-25 15:37:45 -07:00
Anish Lakhwara 19125e33ad updating website 2024-10-25 00:00:13 -07:00
Anish Lakhwara f482febff4 updating website 2024-10-22 00:00:10 -07:00
Anish Lakhwara c861e5639e updating website 2024-10-21 00:00:10 -07:00
Anish Lakhwara ea5e541a1d updating website 2024-10-20 00:00:10 -07:00
Anish Lakhwara e8cf604de7 updating website 2024-10-19 00:00:11 -07:00
Anish Lakhwara c1d771f7a4 updating website 2024-10-15 00:00:09 -07:00
Anish Lakhwara 6c5a37d8b0 updating website 2024-10-14 00:00:10 -07:00
Anish Lakhwara 61fea48f7a updating website 2024-10-13 00:00:11 -07:00
Anish Lakhwara 39814fd4d8 updating website 2024-10-10 00:00:13 -07:00
Anish Lakhwara d8787678a7 updating website 2024-10-06 00:00:09 -07:00
Anish Lakhwara 0f6a608f76 updating website 2024-10-05 00:00:09 -07:00
Anish Lakhwara 076ad4b116 updating website 2024-10-02 00:00:08 -07:00
Anish Lakhwara f8a8515ba2 updating website 2024-09-30 00:00:09 -07:00
Anish Lakhwara 9bf6e1eb31 updating website 2024-09-29 00:00:10 -07:00
Anish Lakhwara a676f4e36f updating website 2024-09-25 00:00:12 -07:00
Anish Lakhwara 73cd1a4986 updating website 2024-09-24 21:36:57 -07:00
Anish Lakhwara c5f30bf4a6 updating website 2024-09-12 00:00:11 -07:00
Anish Lakhwara c02899d7f9 updating website 2024-09-02 00:00:11 -07:00
Anish Lakhwara 862a94db5b updating website 2024-08-29 00:00:10 -07:00
Anish Lakhwara 0836b8cf55 updating website 2024-08-28 00:00:11 -07:00
Anish Lakhwara 7a9bbebf29 updating website 2024-08-26 00:00:11 -07:00
Anish Lakhwara c9f9940477 updating website 2024-08-25 00:00:09 -07:00
Anish Lakhwara 2f93cff966 helix: fix gitea 2024-08-21 22:09:39 -07:00
Anish Lakhwara 6538121f1d update flake.lock 2024-08-19 22:36:57 -07:00
Anish Lakhwara 50ac68b6df Merge branch 'main' of git.sealight.xyz:aynish/helm 2024-08-19 22:17:40 -07:00
Anish Lakhwara 676ed31aad feat(box): gpodder deployed 2024-08-19 22:16:53 -07:00
Anish Lakhwara afb1c0efb4 update to 24.05 2024-08-19 21:29:41 -07:00
Anish Lakhwara fb9d892015 feat: gpodder2go module + pkg 2024-08-19 21:29:25 -07:00
Anish Lakhwara e92a34b76a delete failed blog attempt 2024-08-19 21:28:53 -07:00
Anish Lakhwara d6d2aaa329 updating website 2024-08-19 21:07:02 -07:00
Anish Lakhwara 92e293d863 feat(wireguard): add hyperplane and work 2024-08-18 18:55:28 -07:00
Anish Lakhwara a1da6fac2b updating website 2024-08-17 00:00:10 -07:00
Anish Lakhwara 83dd8db5ef updating website 2024-08-16 00:00:07 -07:00
Anish Lakhwara 5dcf12980a updating website 2024-08-08 00:00:11 -07:00
Anish Lakhwara 7e725a2926 updating website 2024-08-04 00:00:12 -07:00
Anish Lakhwara 564cd8d3d5 updating website 2024-08-02 00:00:15 -07:00
Anish Lakhwara 9559e354a1 updating website 2024-07-22 00:00:12 -07:00
Anish Lakhwara 6de4e4fe1e updating website 2024-07-21 00:00:09 -07:00
Anish Lakhwara 56da25133d updating website 2024-07-19 00:00:09 -07:00
Anish Lakhwara b46c1ae4fb updating website 2024-07-16 00:00:14 -07:00
Anish Lakhwara 3bd1a5d622 updating website 2024-07-15 00:00:07 -07:00
Anish Lakhwara 130f9e70ec Merge branch 'main' of git.sealight.xyz:aynish/helm 2024-07-14 20:22:57 -07:00
Anish Lakhwara 54b3654d3b box: change website deploy to point to helix 2024-07-14 20:22:43 -07:00
Anish Lakhwara e0165b2f37 lituus: remove /storage (i'll need to add it back eventually) 2024-07-14 20:21:55 -07:00
Anish Lakhwara c5ce711784 lituus: use unstable mautrix-signal 2024-07-14 20:21:29 -07:00
Anish Lakhwara ca6a9fdafb add gopls to nvim 2024-07-14 20:21:20 -07:00
Anish Lakhwara 20a8684f60 add git machete 2024-07-14 20:21:12 -07:00
Anish Lakhwara c1af9a9ca7 fix(box): wallabag is working again!!! 2024-07-14 20:20:49 -07:00
Anish Lakhwara c5acd82638 updating website 2024-07-14 19:41:36 -07:00
Anish Lakhwara 07891dc81d remove sublime-music 2024-07-14 18:48:44 -07:00
Anish Lakhwara 12862e0891 dns: update lakhwara.com to point to helix 2024-07-14 18:48:24 -07:00
Anish Lakhwara ed40099439 Merge branch 'main' of git.sealight.xyz:aynish/helm 2024-07-14 16:52:26 -07:00
Anish Lakhwara 7c96b1ff5b website: move to helix 2024-07-14 16:52:11 -07:00
Anish Lakhwara 557706c7fd website: move to helix 2024-07-14 16:51:38 -07:00
Anish Lakhwara 0b5a013faf remove: ngipkgs from flake input 2024-07-14 16:45:02 -07:00
Anish Lakhwara d496c20a82 fix: taskwarrior moved from home/cli to home/gui 2024-07-14 16:44:39 -07:00
Anish Lakhwara 6522536dc8 dns: add write.sealight.xyz? 2024-07-14 16:43:57 -07:00
Anish Lakhwara 8f452ad995 updating website 2024-06-04 00:00:12 -07:00
Anish Lakhwara 7e5bd0cc2b updating website 2024-05-26 00:00:07 -07:00
Anish Lakhwara ec29b3c156 Merge branch 'main' of git.sealight.xyz:aynish/helm 2024-05-21 20:49:35 -07:00
Anish Lakhwara ab98af5e83 update flake lock 2024-05-21 20:49:24 -07:00
Anish Lakhwara 091b653c9a feat: ghost 2024-05-21 20:39:19 -07:00
Anish Lakhwara 51d41e19d0 updating website 2024-05-17 00:00:09 -07:00
Anish Lakhwara f89f7d290a updating website 2024-05-08 00:00:09 -07:00
Anish Lakhwara 92648e1b09 updating website 2024-05-01 00:00:13 -07:00
Anish Lakhwara 1883020f83 updating website 2024-04-28 00:00:09 -07:00
Anish Lakhwara 46b8aab58b updating website 2024-04-16 00:00:14 -07:00
Anish Lakhwara b0bca103db updating website 2024-04-12 00:00:10 -07:00
Anish Lakhwara 690889d3c1 updating website 2024-04-09 00:00:08 -07:00
Anish Lakhwara 42a152a9e5 updating website 2024-04-08 00:00:10 -07:00
Anish Lakhwara cd97312394 updating website 2024-04-07 00:00:10 -07:00
Anish Lakhwara f9cecaa969 updating website 2024-04-06 00:00:10 -07:00
Anish Lakhwara fb330f5d04 updating website 2024-04-05 00:00:11 -07:00
Anish Lakhwara 010bbcd469 updating website 2024-04-03 00:00:11 -07:00
Anish Lakhwara 7193bcfd63 updating website 2024-03-31 00:00:13 -07:00
Anish Lakhwara 0844b4792f updating website 2024-03-29 00:00:08 -07:00
Anish Lakhwara 5a71e1534b updating website 2024-03-28 00:00:08 -07:00
Anish Lakhwara 9971be0303 updating website 2024-03-24 00:00:10 -07:00
Anish Lakhwara 7d8015774f updating website 2024-03-22 00:00:10 -07:00
Anish Lakhwara 66020d2921 updating website 2024-03-21 00:00:11 -07:00
Anish Lakhwara 3d7dd18d6f updating website 2024-03-20 00:00:12 -07:00
Anish Lakhwara 3869c6e695 updating website 2024-03-18 00:00:13 -07:00
Anish Lakhwara 0dc5e1ee48 updating website 2024-03-17 00:00:13 -07:00
Anish Lakhwara a37a72e81f box: get gonic working again (needed headphones user) 2024-03-16 00:56:57 -07:00
Anish Lakhwara c0ff69d9f8 rnix-lsp deprecated 2024-03-16 00:31:57 -07:00
Anish Lakhwara 97dfc062d4 Merge branch 'main' of git.sealight.xyz:aynish/helm 2024-03-15 23:27:28 -07:00
Anish Lakhwara b9fa71a9d3 i can't remember what caused this... 2024-03-15 23:25:49 -07:00
Anish Lakhwara d57b2c27f9 updating website 2024-03-09 00:00:07 -08:00
Anish Lakhwara 417b58e7b9 updating website 2024-03-08 00:00:08 -08:00
Anish Lakhwara e33328c55a updating website 2024-03-06 00:00:10 -08:00
Anish Lakhwara 3601bac28a updating website 2024-03-05 00:00:10 -08:00
Anish Lakhwara 3dc27ee18d updating website 2024-03-03 00:00:12 -08:00
Anish Lakhwara 070bb603e9 updating website 2024-03-02 00:00:08 -08:00
Anish Lakhwara 5232de5fdd updating website 2024-02-29 00:00:09 -08:00
Anish Lakhwara efb72f5d26 updating website 2024-02-28 00:00:10 -08:00
Anish Lakhwara bd96fc4601 updating website 2024-02-25 00:00:11 -08:00
Anish Lakhwara 6c6d7e5c0a updating website 2024-02-22 00:00:13 -08:00
Anish Lakhwara dc5f7bc835 updating website 2024-02-21 00:00:14 -08:00
Anish Lakhwara b797e8b1ec updating website 2024-02-20 00:00:11 -08:00
Anish Lakhwara a3fd61c360 updating website 2024-02-18 00:00:08 -08:00
Anish Lakhwara c5322b041e updating website 2024-02-13 00:00:09 -08:00
Anish Lakhwara 396438f9b5 updating website 2024-02-07 00:00:13 -08:00
Anish Lakhwara 05cacb7971 updating website 2024-02-04 00:00:17 -08:00
Anish Lakhwara 5968f60796 updating website 2024-01-28 00:00:11 -08:00
Anish Lakhwara 0cb31587ef updating website 2024-01-20 00:00:15 -08:00
Anish Lakhwara e9960e9257 updating website 2024-01-17 00:00:12 -08:00
Anish Lakhwara cbe3f7bd1c updating website 2024-01-14 00:00:12 -08:00
Anish Lakhwara f8ec4cfa0f Merge branch 'main' of git.sealight.xyz:aynish/helm 2024-01-11 21:57:19 -08:00
Anish Lakhwara 861364d30f break: wallabag is borked 2024-01-11 21:56:55 -08:00
Anish Lakhwara 1e6f965412 updating website 2024-01-11 00:00:14 -08:00
Anish Lakhwara 6988a8f0c5 updating website 2024-01-08 00:00:16 -08:00
Anish Lakhwara e52c6bf59a updating website 2024-01-07 00:00:11 -08:00
Anish Lakhwara 6fb6d4ca75 update to 23.11 2024-01-05 23:44:08 -08:00
Anish Lakhwara b59ad9f485 misc: various small tweaks 2024-01-05 23:43:01 -08:00
Anish Lakhwara b1284ab5d0 misc: add all subfolders of vimwiki to git sync service 2024-01-05 23:40:43 -08:00
Anish Lakhwara fc4670c1db updating website 2023-12-29 00:00:11 -08:00
Anish Lakhwara 73e5f1138d updating website 2023-12-28 00:00:11 -08:00
Anish Lakhwara 91d80a68e5 updating website 2023-12-27 00:00:11 -08:00
Anish Lakhwara 96540172ab updating website 2023-12-19 00:00:13 -08:00
Anish Lakhwara 84428730a1 updating website 2023-12-18 00:00:10 -08:00
Anish Lakhwara cb73505c7c updating website 2023-12-17 00:00:11 -08:00
Anish Lakhwara f28af89913 updating website 2023-12-16 00:00:12 -08:00
Anish Lakhwara bcfbfba1fb updating website 2023-12-15 00:00:09 -08:00
Anish Lakhwara 750998c7ea updating website 2023-12-13 00:00:10 -08:00
Anish Lakhwara 660a1c7ced updating website 2023-12-10 00:00:14 -08:00
Anish Lakhwara d846d04a0c updating website 2023-12-08 09:56:52 -08:00
Anish Lakhwara 351e2bddb8 updating website 2023-12-07 00:00:14 -08:00
Anish Lakhwara c50ff572a9 updating website 2023-12-05 10:43:05 -08:00
Anish Lakhwara 5b5b5ed764 add headphones dns 2023-12-05 10:42:19 -08:00
Anish Lakhwara ccf57a4308 updating website 2023-12-03 00:00:10 -08:00
Anish Lakhwara 88fb151cb8 updating website 2023-12-02 00:00:11 -08:00
Anish Lakhwara fb077f78d4 updating website 2023-11-26 00:00:11 -08:00
Anish Lakhwara f93d011f22 updating website 2023-11-25 00:00:12 -08:00
Anish Lakhwara 982643f6ac updating website 2023-11-24 00:00:12 -08:00
Anish Lakhwara 8977ab36fb updating website 2023-11-23 00:00:14 -08:00
Anish Lakhwara 9c7e7b18b7 updating website 2023-11-22 00:00:09 -08:00
Anish Lakhwara 8b9c623fa6 updating website 2023-11-20 00:00:11 -08:00
Anish Lakhwara 4be4c81207 updating website 2023-11-17 00:00:13 -08:00
Anish Lakhwara 11123fc742 updating website 2023-11-15 00:00:10 -08:00
Anish Lakhwara 580a72d1a9 box: update wireguard ssh key 🙄 2023-11-13 23:27:29 -08:00
Anish Lakhwara 9c68a9f625 updating website 2023-11-11 00:00:13 -08:00
Anish Lakhwara 82c8668f43 updating website 2023-11-10 00:00:11 -08:00
Anish Lakhwara bcd2e85916 updating website 2023-11-09 00:00:14 -08:00
Anish Lakhwara dfc9aa27d6 updating website 2023-11-07 00:00:12 -08:00
Anish Lakhwara 81b75223b7 Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-11-06 12:46:04 -08:00
Anish Lakhwara 8d93c27231 curve: add fly-wg config 2023-11-06 12:45:40 -08:00
Anish Lakhwara 5216158fa8 updating website 2023-11-06 00:00:12 -08:00
Anish Lakhwara 1e500cd6be Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-11-05 01:33:56 -07:00
Anish Lakhwara 8d89bc6772 fix(lituus): correct uuid for block storage 2023-11-05 01:33:20 -07:00
Anish Lakhwara 172bf8b767 feat(curve): add signal-desktop 2023-11-05 01:33:03 -07:00
Anish Lakhwara 8e47abfe06 update unstable 2023-11-05 01:32:53 -07:00
Anish Lakhwara 335361c496 feat(curve): add kalpana to production
it generates backlinks and indexs in a more reliable way
2023-11-05 01:31:36 -07:00
Anish Lakhwara 75a150feb4 updating website 2023-11-05 00:00:14 -07:00
Anish Lakhwara 67ac32afdb updating website 2023-11-04 00:00:10 -07:00
Anish Lakhwara 97141f7c9c updating website 2023-11-02 00:00:11 -07:00
Anish Lakhwara f5b8894702 updating website 2023-10-31 00:00:12 -07:00
Anish Lakhwara d538600bff updating website 2023-10-30 00:00:10 -07:00
Anish Lakhwara 0592013e68 updating website 2023-10-27 00:00:10 -07:00
Anish Lakhwara f4a9b3dfe4 Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-10-24 15:21:38 -07:00
Anish Lakhwara 46ea10093a all: update flake.lock 2023-10-24 15:19:04 -07:00
Anish Lakhwara 9b470b6a0c all: pin nixpkgs flake registry to stable nixpkgs 2023-10-24 15:18:45 -07:00
Anish Lakhwara 78ab4dd552 curve: add screen recording to screeshot script 2023-10-24 15:18:27 -07:00
Anish Lakhwara f573800e84 curve: include kontact and thunderbird 2023-10-24 15:18:15 -07:00
Anish Lakhwara 59afaae458 curve: fix polybar 2023-10-24 15:17:59 -07:00
Anish Lakhwara be7be14980 nvim: fennel repl in conjure (instead of love) 2023-10-24 15:17:34 -07:00
Anish Lakhwara 471b42cfec curve: disable k8s 2023-10-24 15:17:22 -07:00
Anish Lakhwara cc61e850ec curve: xdg portal 2023-10-24 15:16:58 -07:00
Anish Lakhwara 651d41c163 k8s: include kubectl by default, disable libvirtd 2023-10-24 15:16:36 -07:00
Anish Lakhwara e0e10c9e3e curve: open pdfs in zathura through mimetypes 2023-10-24 15:16:05 -07:00
Anish Lakhwara 43ed8c7ed0 hyperplane: don't include in wireguard (yet) 2023-10-24 15:15:48 -07:00
Anish Lakhwara 4a7b588976 updating website 2023-10-24 00:00:12 -07:00
Anish Lakhwara d403b80913 updating website 2023-10-21 00:00:10 -07:00
Anish Lakhwara b9559e09b3 updating website 2023-10-20 00:00:11 -07:00
Anish Lakhwara 4214fd37ad updating website 2023-10-18 00:00:11 -07:00
Anish Lakhwara fe026955fc updating website 2023-10-16 00:00:12 -07:00
Anish Lakhwara 57f19940dd updating website 2023-10-11 00:00:11 -07:00
Anish Lakhwara 87079098bf updating website 2023-10-10 00:00:12 -07:00
Anish Lakhwara c5d362c5fc updating website 2023-10-09 00:00:12 -07:00
Anish Lakhwara 391f4855ea updating website 2023-10-08 00:00:13 -07:00
Anish Lakhwara 110b32d411 updating website 2023-10-06 00:00:10 -07:00
Anish Lakhwara fcd1fe8c35 updating website 2023-10-03 17:29:49 -07:00
Anish Lakhwara 5659ed8471 updating website 2023-10-03 00:00:12 -07:00
Anish Lakhwara 1d93c351d3 updating website 2023-10-02 00:00:13 -07:00
Anish Lakhwara 632971e5c1 updating website 2023-10-01 00:00:14 -07:00
Anish Lakhwara e1ad7e5046 updating website 2023-09-30 00:00:10 -07:00
Anish Lakhwara 09a7fc3340 updating website 2023-09-29 00:00:10 -07:00
Anish Lakhwara 71ec3eca83 updating website 2023-09-28 00:00:10 -07:00
Anish Lakhwara cc2524e939 updating website 2023-09-27 00:00:12 -07:00
Anish Lakhwara 69db8f7b47 updating website 2023-09-25 00:00:12 -07:00
Anish Lakhwara c6c72e9c0d updating website 2023-09-23 00:00:16 -07:00
Anish Lakhwara 07d59126b9 updating website 2023-09-22 00:00:15 -07:00
Anish Lakhwara f90c514a86 updating website 2023-09-21 00:00:10 -07:00
Anish Lakhwara b08b116a88 updating website 2023-09-20 00:00:12 -07:00
Anish Lakhwara 522f5cfba7 updating website 2023-09-19 12:47:48 -07:00
Anish Lakhwara 665de5b53d updating website 2023-09-19 00:00:11 -07:00
Anish Lakhwara 296d542e15 updating website 2023-09-18 00:00:13 -07:00
Anish Lakhwara e85bef622d updating website 2023-09-17 00:00:14 -07:00
Anish Lakhwara eada817f86 updating website 2023-09-16 00:00:14 -07:00
Anish Lakhwara a6a9b6f277 updating website 2023-09-15 00:00:15 -07:00
Anish Lakhwara 6400f5e47f updating website 2023-09-14 00:00:16 -07:00
Anish Lakhwara 8868a09f2a updating website 2023-09-13 00:00:16 -07:00
Anish Lakhwara 6b005f9b11 updating website 2023-09-12 00:00:18 -07:00
Anish Lakhwara ed3d014690 updating website 2023-09-11 00:00:17 -07:00
Anish Lakhwara fbce9ee976 updating website 2023-09-09 00:00:11 -07:00
Anish Lakhwara fec7b0ee61 updating website 2023-09-08 00:00:11 -07:00
Anish Lakhwara 4b4974bc76 updating website 2023-09-07 00:00:10 -07:00
Anish Lakhwara 60a293f515 updating website 2023-09-06 00:00:12 -07:00
Anish Lakhwara 840bc580c6 updating website 2023-09-04 00:00:11 -07:00
Anish Lakhwara b17b9d2ec1 updating website 2023-09-03 00:00:12 -07:00
Anish Lakhwara c056e9473f updating website 2023-09-02 00:00:13 -07:00
Anish Lakhwara 45c384518e updating website 2023-09-01 00:00:12 -07:00
Anish Lakhwara 049a6eeb09 updating website 2023-08-31 00:00:14 -07:00
Anish Lakhwara a9ce654247 updating website 2023-08-30 00:00:15 -07:00
Anish Lakhwara 88bab701fb updating website 2023-08-29 00:00:12 -07:00
Anish Lakhwara 791c4f9eaf updating website 2023-08-26 00:00:19 -07:00
Anish Lakhwara aae132c12d updating website 2023-08-25 00:00:11 -07:00
Anish Lakhwara 6b612112f8 updating website 2023-08-24 00:00:11 -07:00
Anish Lakhwara 007dd8f2e4 updating website 2023-08-23 00:00:11 -07:00
Anish Lakhwara 56831a98e8 curve: add light to installed programs 2023-08-21 18:03:33 -07:00
Anish Lakhwara 1a92107b16 updating website 2023-08-18 00:00:14 -07:00
Anish Lakhwara 2880674464 updating website 2023-08-17 00:00:14 -07:00
Anish Lakhwara 348d39a928 Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-08-16 23:37:10 -07:00
Anish Lakhwara 1f52b21cd2 nvim: change sumneko to lua_ls 2023-08-16 23:36:51 -07:00
Anish Lakhwara a6ca28c3f3 lituus: add mautrix-signal with necessary dependencies 2023-08-16 23:36:27 -07:00
Anish Lakhwara 0ad0b9f296 lituus: disable mjolnir (it's broken) 2023-08-16 23:36:09 -07:00
Anish Lakhwara fd4b357537 curve: fix fonts on rofi menus 2023-08-16 23:35:52 -07:00
Anish Lakhwara 7e2f8c52c5 curve: add ssh agent forwarding 2023-08-16 09:59:43 -07:00
Anish Lakhwara ee2435590e updating website 2023-08-16 00:00:14 -07:00
Anish Lakhwara d65943354f updating website 2023-08-15 00:00:15 -07:00
Anish Lakhwara 4779aa5273 updating website 2023-08-13 00:00:15 -07:00
Anish Lakhwara 7290bdad3b fix: merge conflight in lockfile 2023-08-12 19:01:41 -07:00
Anish Lakhwara a8f0e05f32 Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-08-12 18:57:52 -07:00
Anish Lakhwara e352f95114 all: welcome to 23.05 2023-08-12 18:57:16 -07:00
Anish Lakhwara d3a469a3f7 curve: enable profiling 2023-08-12 17:16:09 -07:00
Anish Lakhwara 37b68f9653 curve: updating taskwarrior 2023-08-12 17:15:44 -07:00
Anish Lakhwara b7e290b5f5 curve: kitaab generate backlinks 2023-08-12 17:08:52 -07:00
Anish Lakhwara b6afca684c curve: add ku to alias' 2023-08-12 17:08:34 -07:00
Anish Lakhwara 90c85594e9 curve: firefox default zoom 2023-08-12 17:08:18 -07:00
Anish Lakhwara 6183793068 curve: increase kitty font size and disable sounds 2023-08-12 17:01:27 -07:00
Anish Lakhwara 14f631213d curve: clean up desktop config 2023-08-12 17:01:15 -07:00
Anish Lakhwara 1628cbb0c4 curve: ku for kitaab untagged 2023-08-12 16:59:57 -07:00
Anish Lakhwara 673eac2cca curve: taskwarrior alias' 2023-08-12 16:59:33 -07:00
Anish Lakhwara 3d30ec7a0d formatting 2023-08-12 16:56:25 -07:00
Anish Lakhwara b1ea99f22e curve: taskwarrior-tui commands 2023-08-12 16:55:40 -07:00
Anish Lakhwara b42ede3a30 updating website 2023-08-12 00:00:15 -07:00
Anish Lakhwara 777ddb1add updating website 2023-08-11 00:00:17 -07:00
Anish Lakhwara 8d8438fc73 updating website 2023-08-11 00:00:09 +10:00
Anish Lakhwara 6f713121fe updating website 2023-08-10 00:00:09 +10:00
Anish Lakhwara 058fa3dd98 updating website 2023-08-08 00:00:09 +10:00
Anish Lakhwara 7e136a1d56 updating website 2023-08-07 00:00:10 +10:00
Anish Lakhwara 4ffec611d4 updating website 2023-08-05 00:00:08 +10:00
Anish Lakhwara db513a11d2 updating website 2023-08-03 00:00:07 +10:00
Anish Lakhwara bda3c874ba updating website 2023-08-02 00:00:17 +10:00
Anish Lakhwara 2ec98898ae updating website 2023-08-01 00:00:10 +10:00
Anish Lakhwara 65cea97345 updating website 2023-07-31 00:00:10 +10:00
Anish Lakhwara 64d5e6b939 updating website 2023-06-24 00:00:17 +10:00
Anish Lakhwara aa4691f738 updating website 2023-06-22 00:00:18 +10:00
Anish Lakhwara aba6234103 updating website 2023-06-21 00:00:13 +10:00
Anish Lakhwara a2de29bdbe updating website 2023-06-20 00:00:13 +10:00
Anish Lakhwara bd0b247020 updating website 2023-06-19 00:00:15 +10:00
Anish Lakhwara a1d69406f9 updating website 2023-06-18 00:00:14 +10:00
Anish Lakhwara 4feec414df updating website 2023-06-17 00:00:15 +10:00
Anish Lakhwara e9b892f339 updating website 2023-06-15 00:00:15 +10:00
Anish Lakhwara 3057ac91d0 updating website 2023-06-14 00:00:15 +10:00
Anish Lakhwara 76aa629d27 updating website 2023-06-11 00:00:14 +10:00
Anish Lakhwara 3b17eb7e9c updating website 2023-06-09 00:00:15 +10:00
Anish Lakhwara 720edb0c09 updating website 2023-06-08 00:00:15 +10:00
Anish Lakhwara 336bef0e55 updating website 2023-06-07 00:00:17 +10:00
Anish Lakhwara e8e9d5b863 updating website 2023-06-06 00:00:18 +10:00
Anish Lakhwara 930f36af70 updating website 2023-06-05 00:00:19 +10:00
Anish Lakhwara efe6d46f44 curve: working ku now that poonam is working on that front 2023-06-04 21:20:13 +10:00
Anish Lakhwara 2d7442c991 curve: add kitaab unlinked fzf command 2023-06-04 20:04:50 +10:00
Anish Lakhwara bba3ee8778 curve: add kt kitaab tags command 2023-06-04 19:02:56 +10:00
Anish Lakhwara 650641dd25 curve: add more fzf task warrior commands 2023-06-04 19:02:35 +10:00
Anish Lakhwara e92edf8366 curve: allow .taskrc to be writeable, enabling contexts 2023-06-04 19:02:03 +10:00
Anish Lakhwara 5a75f5ad02 updating website 2023-06-04 00:00:19 +10:00
Anish Lakhwara 067c583378 remove: unused wireguard profile 2023-06-03 23:21:55 +10:00
Anish Lakhwara 7ba8c51cd6 curve: trying to add luasnip to nvim 2023-06-03 23:21:19 +10:00
Anish Lakhwara b54a803556 curve: kt alias to list tag indexs in fzf 2023-06-03 23:20:18 +10:00
Anish Lakhwara 3d744185aa curve: run generateIndex from poonam on kitaab sync 2023-06-03 21:47:44 +10:00
Anish Lakhwara 262c0f8ded curve: fix: task-note.py 2023-06-03 21:47:27 +10:00
Anish Lakhwara 37e25bb697 curve: move kitaab alias 2023-06-03 21:47:11 +10:00
Anish Lakhwara 54dc988f7c updating website 2023-05-31 00:00:19 +10:00
Anish Lakhwara a06cb1231f curve: maybe fix kitaab sync not pushing at all 2023-05-30 22:29:26 +10:00
Anish Lakhwara 0e7cacc12b lituus: enable hyperplane wg 2023-05-30 22:24:46 +10:00
Anish Lakhwara 3b1aa44e63 curve: enable libvirtd 2023-05-30 22:24:37 +10:00
Anish Lakhwara 99a14250f0 curve: correct kitty terminal fix 2023-05-30 22:24:26 +10:00
Anish Lakhwara c751f0f6d1 formatting 2023-05-30 22:24:18 +10:00
Anish Lakhwara 5a2f0dc43b curve: remove kitty bell sound config 2023-05-30 22:24:00 +10:00
Anish Lakhwara ba2d0c4917 curve: add ocr and screenshot desktop entries 2023-05-30 22:23:49 +10:00
Anish Lakhwara 8c3924d942 box: add smtp config to grafana, allow access to psql dbs 2023-05-30 22:23:28 +10:00
Anish Lakhwara da8e4b25eb helix: make psql dbs from nix 2023-05-30 22:23:05 +10:00
Anish Lakhwara a6980a1b74 helix: new deployment 2023-05-30 22:22:21 +10:00
Anish Lakhwara 984d29ee2b box: add borg-key from secrets 2023-05-30 22:22:03 +10:00
Anish Lakhwara aa97bc3618 cube: add coaching.lakhwara.com nginx conf 2023-05-30 22:21:49 +10:00
Anish Lakhwara 2b211cc29d add disko (unused) 2023-05-30 22:21:29 +10:00
Anish Lakhwara 7ef8033b53 update secrets for new helix 2023-05-30 22:21:12 +10:00
Anish Lakhwara 9ca6e47078 add lakhwara.com to dnsconfig 2023-05-30 22:20:52 +10:00
Anish Lakhwara ad7bd1ebbb Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-05-29 15:18:51 +10:00
Anish Lakhwara 9012e55951 updated lock? 2023-05-29 15:18:44 +10:00
Anish Lakhwara b3cdb97335 add coaching.lakhwara.com static site (no build) 2023-05-28 20:31:53 +10:00
Anish Lakhwara 52c76af334 clear-vim-trash script 2023-05-23 21:28:49 +10:00
Anish Lakhwara 38a4c41a1f updating website 2023-05-23 00:00:17 +10:00
Anish Lakhwara 4dc773f2ce add vimwiki-cli to flake inputs 2023-05-22 21:58:58 +10:00
Anish Lakhwara 9723f79d24 working split dns 2023-05-22 21:58:46 +10:00
Anish Lakhwara 03b1edc941 make kitaab update a user unit, use user path 2023-05-22 21:58:12 +10:00
Anish Lakhwara 9cf8f24852 updating website 2023-05-18 00:00:13 +10:00
Anish Lakhwara 069963eeca updating website 2023-05-17 00:00:15 +10:00
Anish Lakhwara 16c975db35 Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-05-16 10:48:48 +10:00
Anish Lakhwara 11e36c5082 box: remove autoRollback 2023-05-16 00:22:41 +10:00
Anish Lakhwara fe806757d2 curve: remove mossnet mount 2023-05-16 00:22:19 +10:00
Anish Lakhwara 6fafa22851 box: add photoprism, include photoprism and ulogger in db backup 2023-05-16 00:22:00 +10:00
Anish Lakhwara 8ce0eca9af curve: add howdoi to cli 2023-05-16 00:21:13 +10:00
Anish Lakhwara 71f417b250 box: add photos.mossnet.lan to hosts 2023-05-16 00:20:57 +10:00
Anish Lakhwara d50510a8aa box: disable paperless, have fun run for multi-user target 2023-05-16 00:20:26 +10:00
Anish Lakhwara 90c62bcd39 helix: add email config to gitea 2023-05-16 00:20:01 +10:00
Anish Lakhwara 658ecc4c7b curve: disable k3s 2023-05-16 00:19:52 +10:00
Anish Lakhwara cf2f8b40eb box: add emailer config to grafana 2023-05-16 00:19:38 +10:00
Anish Lakhwara 793604b9de curve: add more mossnet hosts to /etc 2023-05-16 00:19:20 +10:00
Anish Lakhwara 05038f2001 photoprism fix 2023-05-16 00:19:09 +10:00
Anish Lakhwara 55c47ec2aa fix: microbin css issue 2023-05-16 00:18:50 +10:00
Anish Lakhwara f8f8995c30 add nullhex-smtp secret 2023-05-16 00:18:41 +10:00
Anish Lakhwara 4767e073c9 updating website 2023-05-15 00:00:13 +10:00
Anish Lakhwara 66b0a3db70 need to specify we're using the unstable package 2023-05-14 14:43:23 +10:00
Anish Lakhwara e45f12ddf6 add gen-secret alias 2023-05-14 14:42:29 +10:00
Anish Lakhwara a377eb2f69 add photoprism 2023-05-14 14:42:23 +10:00
Anish Lakhwara 8862e3ddd0 updating website 2023-05-14 00:00:13 +10:00
Anish Lakhwara 1461881cf8 Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-05-13 22:50:33 +10:00
Anish Lakhwara 3f1af8ca77 upgrade to forgejo (needs unstable) 2023-05-13 22:49:56 +10:00
Anish Lakhwara 2368a1b6a6 use latest microbin for all the features 2023-05-13 22:49:47 +10:00
Anish Lakhwara 63a18c2bc3 add unstable overlay to litePackages 2023-05-13 22:49:37 +10:00
Anish Lakhwara df629af5ab working split dns config :3 2023-05-13 21:12:05 +10:00
Anish Lakhwara f374e8bd1f paste should be super+a not super+e 2023-05-12 21:33:48 +10:00
Anish Lakhwara 2a1f956227 update microbin, add sxhkdrc command to paste clipboard to my bin 2023-05-12 21:23:45 +10:00
Anish Lakhwara 110ba17935 bin.sealight.xyz 2023-05-12 20:51:34 +10:00
Anish Lakhwara 41a64a3248 microbin works 2023-05-12 20:51:28 +10:00
Anish Lakhwara 27138bdc7d helix runs lite config, out of space 2023-05-12 20:51:07 +10:00
Anish Lakhwara 6a8a4985df ensure woodpecker runs after postgres 2023-05-12 20:50:51 +10:00
Anish Lakhwara 487800eba8 updating website 2023-05-12 00:00:13 +10:00
Anish Lakhwara b6b7601a68 only use docker for minikube 2023-05-11 23:04:13 +10:00
Anish Lakhwara 73f53bfd50 fix box grasp 2023-05-11 23:04:05 +10:00
Anish Lakhwara adf222b873 add microbin module to config 2023-05-11 23:03:51 +10:00
Anish Lakhwara f140ebbda3 add microbin to helix (create module) 2023-05-11 23:03:33 +10:00
Anish Lakhwara 728dce4115 updating website 2023-05-11 00:00:14 +10:00
Anish Lakhwara 400ae53104 updating website 2023-05-10 00:00:14 +10:00
Anish Lakhwara af42f517bf updating website 2023-05-09 00:00:15 +10:00
Anish Lakhwara 50a766a070 updating website 2023-05-08 00:00:16 +10:00
Anish Lakhwara 278d64c1f0 updating website 2023-05-06 00:00:12 +10:00
Anish Lakhwara eef4f59aa6 setup docker / kvm2 for minikube usage 2023-05-05 14:04:30 +10:00
Anish Lakhwara f580f35339 updating website 2023-05-05 00:00:14 +10:00
Anish Lakhwara 2f940bc682 update flake.lock file 2023-05-04 23:10:17 +10:00
Anish Lakhwara 4856c4e2ca correct location of print command for ulogger-install script 2023-05-04 23:10:01 +10:00
Anish Lakhwara cc547e7da3 add k8s config for k3s and minikube to curve 2023-05-04 23:09:47 +10:00
Anish Lakhwara b595688a65 task-note matches correct template, %link is highlighted on vimwiki
filetypes
2023-05-04 23:09:27 +10:00
Anish Lakhwara 5f3d27695e gitignore node_modules 2023-05-04 23:09:18 +10:00
Anish Lakhwara c04d45ee80 add ssh shortcut sb for allwell bonfire instance 2023-05-04 23:08:57 +10:00
Anish Lakhwara 41385b273a updating website 2023-05-04 00:00:14 +10:00
Anish Lakhwara 176a4f7ff5 updating website 2023-05-03 00:00:15 +10:00
Anish Lakhwara 3d47406034 updating website 2023-05-02 00:00:16 +10:00
Anish Lakhwara 853c85578b updating website 2023-04-30 00:00:13 +10:00
Anish Lakhwara d5a7035334 updating website 2023-04-29 00:00:13 +10:00
Anish Lakhwara b363fd3c9e make ulogger-install idempotent 2023-04-28 09:10:29 +10:00
Anish Lakhwara ee3d5d42f4 updating website 2023-04-28 00:00:14 +10:00
Anish Lakhwara ad7d63eea7 update ulogger so it dosen't recreate everytime 2023-04-27 16:14:58 +10:00
Anish Lakhwara ac312637e7 unstable newsflash and lifera 2023-04-27 16:14:11 +10:00
Anish Lakhwara f8acfda6e5 make grasp work 2023-04-27 16:14:01 +10:00
Anish Lakhwara 0c4e816bfd updating website 2023-04-27 00:00:14 +10:00
Anish Lakhwara 07c88f27f2 updating website 2023-04-26 00:00:15 +10:00
Anish Lakhwara 70e8fa79bd update unstable 2023-04-25 11:43:21 +10:00
Anish Lakhwara 85763a9327 updating website 2023-04-25 00:00:16 +10:00
Anish Lakhwara 642324cfd8 updating website 2023-04-24 00:00:17 +10:00
Anish Lakhwara 101d2cd2c7 Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-04-23 21:04:08 +10:00
Anish Lakhwara a68dd78843 working ulogger! 2023-04-23 21:02:59 +10:00
Anish Lakhwara 315ffe52d6 updating website 2023-04-23 17:51:43 +10:00
Anish Lakhwara 042c8dcec9 init: ulogger 2023-04-22 15:19:58 +10:00
Anish Lakhwara 2e4b063a0c updating website 2023-04-21 00:00:14 +10:00
Anish Lakhwara a9f40feeff updating website 2023-04-20 00:00:16 +10:00
Anish Lakhwara 8dc56d73d6 updating website 2023-04-19 00:00:16 +10:00
Anish Lakhwara 11e5db6614 updating website 2023-04-18 00:00:17 +10:00
Anish Lakhwara edd9ab3dc5 updating website 2023-04-17 00:00:17 +10:00
Anish Lakhwara bc0a4823dc updating website 2023-04-13 16:19:21 +10:00
Anish Lakhwara 669bf7f423 correctly import llamacpp 2023-04-13 16:15:41 +10:00
Anish Lakhwara 77ca52177d Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-04-13 13:58:43 +10:00
Anish Lakhwara 7d5e5e992e hide bspwmrc? 2023-04-13 13:57:05 +10:00
Anish Lakhwara e30f7dc3ea add jellyfin domain name (still needs reverse proxy) 2023-04-13 13:56:53 +10:00
Anish Lakhwara 4f8c2ce1be configure jellyfin 2023-04-13 13:56:46 +10:00
Anish Lakhwara ef492c30b3 add commitlint and jsonlint 2023-04-13 13:56:32 +10:00
Anish Lakhwara e306143b8e add termpdfpy as graphics tool 2023-04-13 13:56:18 +10:00
Anish Lakhwara 79ed71d45b add anish to video users 2023-04-13 13:55:42 +10:00
Anish Lakhwara 88f35c9099 make sure poonam nixpkgs follows this flake. add llamacpp as input 2023-04-13 13:55:28 +10:00
Anish Lakhwara adb251a690 updating website 2023-04-13 13:43:39 +10:00
Anish Lakhwara 903e8006e7 updating website 2023-04-13 00:00:19 +10:00
Anish Lakhwara d48675d07f updating website 2023-04-10 00:00:14 +10:00
Anish Lakhwara b0185c7212 updating website 2023-04-09 00:00:18 +10:00
Anish Lakhwara 8496ebb567 updating website 2023-04-07 00:00:14 +10:00
Anish Lakhwara eed035cd73 updating website 2023-04-06 00:00:15 +10:00
Anish Lakhwara 07e81bf794 updating website 2023-04-05 00:17:57 +10:00
Anish Lakhwara 9298855b43 updating website 2023-04-05 00:00:16 +10:00
Anish Lakhwara f4b5cf9d50 add wifi config for remote boot unlock 2023-04-04 23:35:06 +10:00
Anish Lakhwara 1ad6a07094 add jellyfin 2023-04-04 23:34:47 +10:00
Anish Lakhwara daa1eb79c0 updating website 2023-04-04 00:29:02 +10:00
Anish Lakhwara 08f641fd82 updating website 2023-04-03 23:59:40 +10:00
Anish Lakhwara a773e011f6 updating website 2023-04-03 00:02:52 +10:00
Anish Lakhwara e60dd168a2 updating website 2023-04-03 00:00:18 +10:00
Anish Lakhwara 1ac6e25275 updating website 2023-04-02 00:00:13 +10:00
Anish Lakhwara d7d5314ee8 updating website 2023-04-01 00:00:13 +10:00
Anish Lakhwara 6fea3c44a6 updating website 2023-03-31 00:00:14 +10:00
Anish Lakhwara cbd4b9f1bd updating website 2023-03-30 00:00:15 +10:00
Anish Lakhwara fc63d18730 updating website 2023-03-29 00:00:16 +10:00
Anish Lakhwara b4f64ea074 updating website 2023-03-24 00:00:15 +10:00
Anish Lakhwara 8eb0b079b4 updating website 2023-03-22 00:00:17 +10:00
Anish Lakhwara 697bcdcb06 updating website 2023-03-21 00:00:18 +10:00
Anish Lakhwara 282b7b0f2f updating website 2023-03-18 00:00:13 +10:00
Anish Lakhwara 309ad4840b updating website 2023-03-16 00:00:12 +10:00
Anish Lakhwara c053e59a47 updating website 2023-03-14 00:00:13 +10:00
Anish Lakhwara abc030288f updating website 2023-03-12 00:00:15 +10:00
Anish Lakhwara 2449fd096c updating website 2023-03-09 00:00:17 +10:00
Anish Lakhwara 1139a12686 updating website 2023-02-27 17:52:28 +10:00
Anish Lakhwara fe6a829baf updating website 2023-02-26 00:00:30 +10:00
Anish Lakhwara 3e7273f83c fix flake.lock 2023-02-25 00:04:43 +10:00
Anish Lakhwara e9612fb46d Merge branch 'main' of git.sealight.xyz:aynish/helm 2023-02-24 23:39:02 +10:00
Anish Lakhwara 203cf8d767 add box public key to allowed to ssh 2023-02-24 23:37:27 +10:00
Anish Lakhwara e10afb0b82 add offpunk 2023-02-24 23:37:10 +10:00
Anish Lakhwara 135f4e60af update firefox 2023-02-24 23:36:51 +10:00
Anish Lakhwara d7034ab6f1 update lock file 2023-02-24 23:36:33 +10:00
Anish Lakhwara 5035552e12 updating website 2023-02-24 00:00:15 +10:00
Anish Lakhwara 5bdde331ba updating website 2023-02-23 00:00:21 +10:00
Anish Lakhwara bce92b3482 only install used treesitter grammars 2023-02-06 03:27:35 +10:00
Anish Lakhwara ab009a1363 fix tree-sitter-nvim 2023-02-06 03:07:39 +10:00
Anish Lakhwara b9b0015a93 luasnip for supercollider 2023-02-05 23:55:44 +10:00
Anish Lakhwara a1dd5bb1d9 fix borg backup (untested) 2023-02-05 23:55:29 +10:00
Anish Lakhwara f787e4cfc0 add back lightdm config 2023-02-05 23:54:48 +10:00
Anish Lakhwara f81f66da88 follow shellcheck for install-yubikey 2023-01-13 23:35:32 +10:00
Anish Lakhwara 1c459761b2 move website deploy to box 2023-01-13 23:33:44 +10:00
Anish Lakhwara 33bfb2c745 grasp stopped working :( 2023-01-13 21:22:46 +10:00
Anish Lakhwara bc60d64b5b add shortcuts to ssh into lituus and helix 2023-01-13 21:22:33 +10:00
Anish Lakhwara c0055bf8cc grasp stopped working :( 2023-01-13 21:22:24 +10:00
Anish Lakhwara b8d7e4117e update backup module to use /run/agenix/borg-key for key location 2023-01-13 21:22:10 +10:00
Anish Lakhwara 4bb578ac1a add borg key to secrets so we don't have to manually put keys into place
for backup
2023-01-13 21:21:48 +10:00
Anish Lakhwara bee12b2edf update grasp manually?? 2023-01-13 15:24:39 +10:00
Anish Lakhwara d0f906a6d6 somehow still didn't update wireguard-server with new curve pubkey 2023-01-13 15:11:10 +10:00
Anish Lakhwara 998d50288b bspSwallow lol 2023-01-13 15:00:03 +10:00
Anish Lakhwara 654453265d make hotplug run on xinit as well 2023-01-13 14:58:11 +10:00
Anish Lakhwara 714832032d agenix not secrets for taskwarrior secrets 2023-01-12 15:57:12 +10:00
Anish Lakhwara bbcb8fab48 emails open in firefox again, browsh busted 2023-01-12 15:57:00 +10:00
Anish Lakhwara b120f59cf9 add taskwarrior secrets + keys to config 2023-01-10 22:27:47 +10:00
Anish Lakhwara 0a0da37807 increase upload limit for both matrix and calibre-web 2023-01-10 22:10:54 +10:00
Anish Lakhwara 1076452eff remote ssh decryption for box 2023-01-10 22:05:17 +10:00
Anish Lakhwara 6a59186059 disable systemd emergency mode for box 2023-01-10 21:54:00 +10:00
Anish Lakhwara 5f4b79adb1 nofail to external harddrives 2023-01-10 21:51:26 +10:00
Anish Lakhwara 45e402d44d add nixos-hardware 2023-01-10 21:31:20 +10:00
Anish Lakhwara 9a7c2b11ad remove broken color script from taskwarrior 2023-01-10 21:31:20 +10:00
Anish Lakhwara d72e11cebe go back to greeters.mini 2023-01-10 21:31:05 +10:00
Anish Lakhwara 0c7daf7530 fix up curve-hardware 2023-01-10 21:19:56 +10:00
Anish Lakhwara 105fe00a81 add taskwarrior-tui 2023-01-10 21:19:46 +10:00
Anish Lakhwara 18f336cbd6 update curve wg password 2023-01-10 21:16:48 +10:00
Anish Lakhwara a346131bb5 rekeying secrets 2023-01-10 21:05:23 +10:00
Anish Lakhwara 0897332293 add nix-matrix-appserivce overlay 2023-01-02 19:59:00 +10:00
Anish Lakhwara 90db0af0ec move scripts from xinit to cli 2023-01-02 19:58:34 +10:00
Anish Lakhwara 2236734ded add my-mautrix-discord 2023-01-02 19:58:26 +10:00
Anish Lakhwara a98ede44c7 fix mautrix signal service
use my-discord-mautrix
2023-01-02 19:57:23 +10:00
Anish Lakhwara 5e49e3bb44 tk-calendar drv 2023-01-01 16:49:09 +10:00
Anish Lakhwara 19aebb049d bspwm terminal swallowing, dosen't work for mpv?? 2023-01-01 16:48:35 +10:00
Anish Lakhwara 801a5e1e23 live-reloading fennel with love! 2023-01-01 16:48:25 +10:00
Anish Lakhwara 55aea142fe add more matrix bridges through flake input 2023-01-01 16:48:11 +10:00
Anish Lakhwara a8b735e34d add kobo utils 2023-01-01 16:48:01 +10:00
Anish Lakhwara a90219e7cd working fennel-ls wowsa 2022-12-30 23:04:47 +10:00
Anish Lakhwara 708e0fec3a fennel-ls maybe 2022-12-30 22:36:20 +10:00
Anish Lakhwara 63bd48abf6 make bspswallow executable 2022-12-30 21:07:20 +10:00
Anish Lakhwara 532ec3e17f rounded somethign 2022-12-30 21:06:14 +10:00
Anish Lakhwara 444b82680d update flake lock 2022-12-30 21:06:05 +10:00
Anish Lakhwara d8ca4ecaf9 dasht languages installed 2022-12-30 21:05:58 +10:00
Anish Lakhwara b63a8318a9 bspswallow 2022-12-30 21:05:46 +10:00
Anish Lakhwara 5eb1eee3d2 update flake 2022-12-27 14:25:55 +10:00
Anish Lakhwara 5f5c2491b1 fix terminal 2022-12-27 14:25:43 +10:00
Anish Lakhwara 8ab9339e9b maybe fix terminal getting stuck? 2022-12-27 14:24:56 +10:00
Anish Lakhwara 93a833f9cb ytfzf 2022-12-27 14:24:48 +10:00
Anish Lakhwara c30f0f5e38 woodpecker works, but only with docker... 2022-12-27 14:24:38 +10:00
Anish Lakhwara 977c316049 woodpecker things 2022-12-23 16:16:19 +10:00
Anish Lakhwara fc1f99b45f go to definition restored 2022-12-23 16:16:13 +10:00
Anish Lakhwara 47e073f9d1 more woodpecker updates 2022-12-21 22:33:39 +10:00
Anish Lakhwara a309cf3fb3 nicer lsp 2022-12-21 21:43:00 +10:00
Anish Lakhwara 3bea51a834 working towards woodpecker 2022-12-21 21:42:06 +10:00
Anish Lakhwara d2252ae1fe realign notifications 2022-12-20 16:55:48 +10:00
138 changed files with 5540 additions and 1244 deletions

View file

@ -0,0 +1,8 @@
#!/usr/bin/env bash
dir="$(realpath $(dirname ${BASH_SOURCE[0]})/../..)"
_nix_direnv_force_reload=1 direnv exec "$dir" true
direnv reload
# direnv reload updates the mtime of .envrc. Also update the timestamp of the
# profile_rc file to keep track that we actually are up to date.
touch $dir/.direnv/{nix,flake}-profile-*.rc

File diff suppressed because it is too large Load diff

2
.envrc Normal file
View file

@ -0,0 +1,2 @@
export HE_PASSWORD=SuperDuper
use flake

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.direnv/

View file

@ -4,6 +4,27 @@ var REG_NONE = NewRegistrar('none'); // No registrar.
var DNS_BIND = NewDnsProvider('bind'); // ISC BIND. var DNS_BIND = NewDnsProvider('bind'); // ISC BIND.
var DNS_HEDNS = NewDnsProvider('hedns'); var DNS_HEDNS = NewDnsProvider('hedns');
D("lakhwara.com", REG_NONE,
DnsProvider(DNS_HEDNS),
DefaultTTL(300),
//SOA('@', 'ns1.he.net.', 'hostmaster.he.net.', 2022041702, 86400, 7200, 3600000, 86400, TTL(172800)),
A('anish', '69.61.2.203'),
A('@', '69.61.2.203'),
//A('coaching', '103.16.130.98'),
TXT('anish', 'datkey=dat://1a240a14fab2bae9c85ebad29bddc04505aaba24e5fb809c2ccb4cdf71e3a7d5'),
CNAME('fm1._domainkey', 'fm1.lakhwara.com.dkim.fmhosted.com.'),
CNAME('fm2._domainkey', 'fm2.lakhwara.com.dkim.fmhosted.com.'),
CNAME('fm3._domainkey', 'fm3.lakhwara.com.dkim.fmhosted.com.'),
MX('@', 10, 'in1-smtp.messagingengine.com.'),
MX('@', 20, 'in2-smtp.messagingengine.com.'),
//NAMESERVER('ns1.he.net.'),
//NAMESERVER('ns2.he.net.'),
//NAMESERVER('ns3.he.net.'),
//NAMESERVER('ns4.he.net.'),
//NAMESERVER('ns5.he.net.'),
TXT('@', 'v=spf1 include:spf.messagingengine.com ?all')
)
D('sealight.xyz', REG_NONE, DnsProvider(DNS_HEDNS), D('sealight.xyz', REG_NONE, DnsProvider(DNS_HEDNS),
DefaultTTL(86400), DefaultTTL(86400),
//SOA('@', 'ns1.he.net.', 'hostmaster.he.net.', 2022121008, 86400, 7200, 3600000, 172800, TTL(172800)), //SOA('@', 'ns1.he.net.', 'hostmaster.he.net.', 2022121008, 86400, 7200, 3600000, 172800, TTL(172800)),
@ -13,9 +34,12 @@ D('sealight.xyz', REG_NONE, DnsProvider(DNS_HEDNS),
//NAMESERVER('ns4.he.net.'), //NAMESERVER('ns4.he.net.'),
//NAMESERVER('ns5.he.net.'), //NAMESERVER('ns5.he.net.'),
// capsul: helix // capsul: helix
A('bridge', '69.61.38.225', TTL(300)), A('bridge', '69.61.2.203', TTL(300)),
A('rss', '69.61.38.225', TTL(300)), A('rss', '69.61.2.203', TTL(300)),
A('git', '69.61.38.225', TTL(300)), A('git', '69.61.2.203', TTL(300)),
A('bin', '69.61.2.203', TTL(300)),
A('ci', '69.61.2.203', TTL(300)),
A('write', '69.61.2.203', TTL(300)),
// vultr -> nulled: lituus // vultr -> nulled: lituus
A('@', '45.77.48.108', TTL(300)), A('@', '45.77.48.108', TTL(300)),
A('jitsi', '45.77.48.108', TTL(300)), A('jitsi', '45.77.48.108', TTL(300)),

0
dns/test_nullhex.sh Executable file → Normal file
View file

View file

@ -0,0 +1,22 @@
; lakhwara.com Dumped Sun May 28 22:30:02 2023
;
lakhwara.com. 172800 IN SOA ns1.he.net. hostmaster.he.net. (
2022041702 ;serial
86400 ;refresh
7200 ;retry
3600000 ;expire
86400 ) ;minimum
anish.lakhwara.com. 86400 IN A 103.16.130.98
anish.lakhwara.com. 86400 IN TXT datkey=dat://1a240a14fab2bae9c85ebad29bddc04505aaba24e5fb809c2ccb4cdf71e3a7d5
fm1._domainkey.lakhwara.com. 86400 IN CNAME fm1.lakhwara.com.dkim.fmhosted.com.
fm2._domainkey.lakhwara.com. 86400 IN CNAME fm2.lakhwara.com.dkim.fmhosted.com.
fm3._domainkey.lakhwara.com. 86400 IN CNAME fm3.lakhwara.com.dkim.fmhosted.com.
lakhwara.com. 86400 IN A 103.16.130.98
lakhwara.com. 86400 IN MX 10 in1-smtp.messagingengine.com.
lakhwara.com. 86400 IN MX 20 in2-smtp.messagingengine.com.
lakhwara.com. 86400 IN NS ns1.he.net.
lakhwara.com. 86400 IN NS ns2.he.net.
lakhwara.com. 86400 IN NS ns3.he.net.
lakhwara.com. 86400 IN NS ns4.he.net.
lakhwara.com. 86400 IN NS ns5.he.net.
lakhwara.com. 86400 IN TXT "v=spf1 include:spf.messagingengine.com ?all"

View file

@ -2,16 +2,19 @@
"nodes": { "nodes": {
"agenix": { "agenix": {
"inputs": { "inputs": {
"darwin": "darwin",
"home-manager": "home-manager",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1665870395, "lastModified": 1723293904,
"narHash": "sha256-Tsbqb27LDNxOoPLh0gw2hIb6L/6Ow/6lIBvqcHzEKBI=", "narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=",
"owner": "ryantm", "owner": "ryantm",
"repo": "agenix", "repo": "agenix",
"rev": "a630400067c6d03c9b3e0455347dc8559db14288", "rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -31,11 +34,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1663665682, "lastModified": 1682226636,
"narHash": "sha256-YB+vmQB3N9RyeshHAO4GjIFebA7NPY2jlkdvGGZtM64=", "narHash": "sha256-fmETHfUtQ5zOVr/4MT5wE7eNALCSQCnEUYZYmV3UEwg=",
"ref": "main", "ref": "main",
"rev": "36bda6965ab2e1a206f8c2b7a74f3b022c873662", "rev": "095d14ff2469c8f3de7cbf45d229c0f46a733aae",
"revCount": 65, "revCount": 77,
"type": "git", "type": "git",
"url": "ssh://gitea@git.sealight.xyz/aynish/basant" "url": "ssh://gitea@git.sealight.xyz/aynish/basant"
}, },
@ -45,6 +48,28 @@
"url": "ssh://gitea@git.sealight.xyz/aynish/basant" "url": "ssh://gitea@git.sealight.xyz/aynish/basant"
} }
}, },
"darwin": {
"inputs": {
"nixpkgs": [
"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"
}
},
"deploy-rs": { "deploy-rs": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@ -54,11 +79,11 @@
"utils": "utils" "utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1668797197, "lastModified": 1718194053,
"narHash": "sha256-0w6iD3GSSQbIeSFVDzAAQZB+hDq670ZTms3d9XI+BtM=", "narHash": "sha256-FaGrf7qwZ99ehPJCAwgvNY5sLCqQ3GDiE/6uLhxxwSY=",
"owner": "serokell", "owner": "serokell",
"repo": "deploy-rs", "repo": "deploy-rs",
"rev": "2a3c5f70eee04a465aa534d8bd4fcc9bb3c4a8ce", "rev": "3867348fa92bc892eba5d9ddb2d7a97b9e127a8a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -67,55 +92,65 @@
"type": "github" "type": "github"
} }
}, },
"devshell": {
"locked": {
"lastModified": 1642188268,
"narHash": "sha256-DNz4xScpXIn7rSDohdayBpPR9H9OWCMDOgTYegX081k=",
"owner": "numtide",
"repo": "devshell",
"rev": "696acc29668b644df1740b69e1601119bf6da83b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"dirt-samples-src": { "dirt-samples-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1588278411, "lastModified": 1698439458,
"narHash": "sha256-h8vQxRym6QzNLOTZU7A43VCHuG0H77l+BFwXnC0L1CE=", "narHash": "sha256-Mp8qBpsOvW9Zguv95Kv7EU6S3ICaF2aO02Wz6xGURtE=",
"owner": "tidalcycles", "owner": "tidalcycles",
"repo": "dirt-samples", "repo": "dirt-samples",
"rev": "66d432418c9a7d82cf049d9246adfa62f46df2a6", "rev": "9a6dff8f9ec3cd55b287290cf04e01afa6b8f532",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tidalcycles", "owner": "tidalcycles",
"ref": "master",
"repo": "dirt-samples", "repo": "dirt-samples",
"type": "github" "type": "github"
} }
}, },
"eww": { "disko": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
],
"rust-overlay": [
"rust-overlay"
] ]
}, },
"locked": { "locked": {
"lastModified": 1669643151, "lastModified": 1724031427,
"narHash": "sha256-39/l57QusriyNr426kXNqtub0ciZna+t20VKPYUAgsM=", "narHash": "sha256-o1HdAf+7IGv9M13R3c+zc/sJ0QgeEnhsvHBcodI4UpM=",
"owner": "elkowar", "owner": "nix-community",
"repo": "eww", "repo": "disko",
"rev": "ec4c2d1a4f12e9c3664e9f53ad99007b4a10a16a", "rev": "4e719b38fa7c85f4f65d0308ca7084c91e7bdd6d",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "elkowar", "owner": "nix-community",
"repo": "eww", "repo": "disko",
"type": "github" "type": "github"
} }
}, },
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1648199409, "lastModified": 1696426674,
"narHash": "sha256-JwPKdC2PoVBkG6E+eWw3j6BMR6sL3COpYWfif7RVb8Y=", "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "64a525ee38886ab9028e6f61790de0832aa3ef03", "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -127,11 +162,11 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1650374568, "lastModified": 1641205782,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=", "narHash": "sha256-4jY7RCWUoZ9cKD8co0/4tFARpWB+57+r1bLLvXNJliY=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8", "rev": "b7547d3eed6f32d06102ead8991ec52ab0a4f1a7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -157,26 +192,11 @@
}, },
"flake-utils_2": { "flake-utils_2": {
"locked": { "locked": {
"lastModified": 1652372896, "lastModified": 1667395993,
"narHash": "sha256-lURGussfF3mGrFPQT3zgW7+RC0pBhbHzco0C7I+ilow=", "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "0d347c56f6f41de822a4f4c7ff5072f3382db121", "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -188,17 +208,16 @@
"grasp": { "grasp": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
"grasp": "grasp_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1652615971, "lastModified": 1682644301,
"narHash": "sha256-e8fvTQCR/At2jgenuY71WXN13XawYRiMpKiHSGgGSkY=", "narHash": "sha256-gMBFZLf41s3+cnhxgZVRvj2JSAFYv4jn2xBKwEESthE=",
"ref": "main", "ref": "main",
"rev": "ef605857248ec1b60cece250f98d2964164d48db", "rev": "a2d85675b930ffc26f6891b2e14491795907be4e",
"revCount": 19, "revCount": 137,
"type": "git", "type": "git",
"url": "ssh://gitea@git.sealight.xyz/aynish/grasp.git" "url": "ssh://gitea@git.sealight.xyz/aynish/grasp.git"
}, },
@ -208,29 +227,13 @@
"url": "ssh://gitea@git.sealight.xyz/aynish/grasp.git" "url": "ssh://gitea@git.sealight.xyz/aynish/grasp.git"
} }
}, },
"grasp_2": {
"flake": false,
"locked": {
"lastModified": 1586706168,
"narHash": "sha256-xLkxE24xtTghQpAfAqAsOvsGpz0coACXjNT8bHZhcxM=",
"owner": "karlicoss",
"repo": "grasp",
"rev": "4bc8f011227d1baa18b4e98543561534065490d8",
"type": "github"
},
"original": {
"owner": "karlicoss",
"repo": "grasp",
"type": "github"
}
},
"hardware": { "hardware": {
"locked": { "locked": {
"lastModified": 1670174919, "lastModified": 1723310128,
"narHash": "sha256-XdQr3BUnrvVLRFunLWrZORhwYHDG0+9jUUe0Jv1pths=", "narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
"owner": "nixos", "owner": "nixos",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "9d87bc030a0bf3f00e953dbf095a7d8e852dab6b", "rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -242,16 +245,16 @@
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"agenix",
"nixpkgs" "nixpkgs"
], ]
"utils": "utils_2"
}, },
"locked": { "locked": {
"lastModified": 1670280307, "lastModified": 1703113217,
"narHash": "sha256-3x+0whP1nCz5adQMIsBA3L9fI/ABOpRUJdbw0AmxBnU=", "narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "2af0d07678fc15612345e0dd55337550dcf6465f", "rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -260,44 +263,118 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs": { "home-manager_2": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1670193339, "lastModified": 1720042825,
"narHash": "sha256-oHTAhX4p6+uxcabq0rKL4EyKWPbDLGKec88ocPIU/2Y=", "narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=",
"owner": "nixos", "owner": "nix-community",
"repo": "nixpkgs", "repo": "home-manager",
"rev": "e169cf5b3b1e6cc4a25ff15087c2621605f83409", "rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nix-community",
"ref": "nixos-22.11", "ref": "release-24.05",
"repo": "home-manager",
"type": "github"
}
},
"nix-matrix-appservices": {
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat_2",
"nixlib": "nixlib",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1683490239,
"narHash": "sha256-QKzpvl2XrqbobWq/I/smDa9hEniwctjJybXPVILHP0w=",
"owner": "coffeetables",
"repo": "nix-matrix-appservices",
"rev": "e795d2fbc61da45d49802bb3e8f8d0c70ddc1e68",
"type": "gitlab"
},
"original": {
"owner": "coffeetables",
"repo": "nix-matrix-appservices",
"type": "gitlab"
}
},
"nixlib": {
"locked": {
"lastModified": 1643502816,
"narHash": "sha256-Wrbt6Gs+hjXD3HUICPBJHKnHEUqiyx8rzHCgvqC1Bok=",
"owner": "divnix",
"repo": "nixpkgs.lib",
"rev": "ebed7ec5bcb5d01e298535989c6c321df18b631a",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1723310128,
"narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1662099760,
"narHash": "sha256-MdZLCTJPeHi/9fg6R9fiunyDwP3XHJqDd51zWWz9px0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "67e45078141102f45eff1589a831aeaa3182b41e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1662446902, "lastModified": 1723938990,
"narHash": "sha256-Dmsd3jSG2ldZUlhFaIwunqgMf14EEK7ylXpw+OPDLxE=", "narHash": "sha256-9tUadhnZQbWIiYVXH8ncfGXGvkNq3Hag4RCBEMUk7MI=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3bfaf06b12253ddaafe64a67f4ed39b547d41667", "rev": "c42fcfbdfeae23e68fc520f9182dde9f38ad1890",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-24.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nur": { "nur": {
"locked": { "locked": {
"lastModified": 1670315682, "lastModified": 1724040334,
"narHash": "sha256-/v0RgZZIjvsFuJbJLUlzRbzSlYFXq3olgJTuJBNtcoY=", "narHash": "sha256-Ia4gRRmhFn4oJ4SJKJPDNPomsRRFWU+bqCK7yuiLW4E=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "af814db16c89385c65e758608296440555f61ccc", "rev": "24471a48600e18669d13d24c9640b9859357d2cf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -308,15 +385,16 @@
}, },
"poonam": { "poonam": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_2", "nixpkgs": [
"vimwiki-cli": "vimwiki-cli" "nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1671357603, "lastModified": 1730098805,
"narHash": "sha256-LIathTJK9ElWdjlT+zI+CJFB5adORTM9kYeWqEbKwiU=", "narHash": "sha256-LvLTqCX3BZ92srebbpMFMCOOBXJ1GZn/rbayiEcXScE=",
"ref": "main", "ref": "main",
"rev": "ea3d0f9a8146f1985dec0b0348a79e3a3038d9b7", "rev": "ec87c69f50283d106d16338963baaa614580ce4a",
"revCount": 465, "revCount": 1512,
"type": "git", "type": "git",
"url": "ssh://gitea@git.sealight.xyz/aynish/kitaab" "url": "ssh://gitea@git.sealight.xyz/aynish/kitaab"
}, },
@ -331,31 +409,33 @@
"agenix": "agenix", "agenix": "agenix",
"basant": "basant", "basant": "basant",
"deploy-rs": "deploy-rs", "deploy-rs": "deploy-rs",
"eww": "eww", "disko": "disko",
"grasp": "grasp", "grasp": "grasp",
"hardware": "hardware", "hardware": "hardware",
"home-manager": "home-manager", "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs", "nix-matrix-appservices": "nix-matrix-appservices",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nur": "nur", "nur": "nur",
"poonam": "poonam", "poonam": "poonam",
"rust-overlay": "rust-overlay", "rust-overlay": "rust-overlay",
"tidalcycles": "tidalcycles", "tidalcycles": "tidalcycles",
"unstable": "unstable" "unstable": "unstable",
"vimwikicli": "vimwikicli"
} }
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1670293639, "lastModified": 1724034091,
"narHash": "sha256-RkPLwza77YkFgxKHGzfYAYVKiD9SeIvsOA7+ihiySwI=", "narHash": "sha256-b1g7w0sw+MDAhUAeCoX1vlTghsqcDZkxr+k9OZmxPa8=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "9767af967a0becaa3bb79eeda838dbf81295eb62", "rev": "c7d36e0947826e0751a5214ffe82533fbc909bc0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -367,33 +447,62 @@
"superdirt-src": { "superdirt-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1611740180, "lastModified": 1697377840,
"narHash": "sha256-GtnqZeMFqFkVhgx2Exu0wY687cHa7mNnVCgjQd6fiIA=", "narHash": "sha256-9qU9CHYAXbN1IE3xXDqGipuroifVaSVXj3c/cDfwM80=",
"owner": "musikinformatik", "owner": "musikinformatik",
"repo": "superdirt", "repo": "superdirt",
"rev": "7abb62e89649daa1232b9cbd6427241868abd30e", "rev": "c7f32998572984705d340e7c1b9ed9ad998a39b6",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "musikinformatik", "owner": "musikinformatik",
"ref": "master",
"repo": "superdirt", "repo": "superdirt",
"type": "github" "type": "github"
} }
}, },
"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"
}
},
"tidal-src": { "tidal-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1654350756, "lastModified": 1712519522,
"narHash": "sha256-tONM5SYYBca0orTLH1EUOilSC1FCluWrFt8AetUx+YQ=", "narHash": "sha256-LbvxQmVxHElidCgvt+w0g1k+QQbNLebK46vtRCgsLeQ=",
"owner": "tidalcycles", "owner": "tidalcycles",
"repo": "tidal", "repo": "tidal",
"rev": "fda9c1ecb3722698935245e5409ef8ccdfca16c8", "rev": "88f09edf6bef2228d5f530dea872b08a9d803066",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tidalcycles", "owner": "tidalcycles",
"ref": "main", "ref": "v1.9.5",
"repo": "tidal", "repo": "tidal",
"type": "github" "type": "github"
} }
@ -406,16 +515,15 @@
], ],
"superdirt-src": "superdirt-src", "superdirt-src": "superdirt-src",
"tidal-src": "tidal-src", "tidal-src": "tidal-src",
"utils": "utils_3",
"vim-tidal-src": "vim-tidal-src", "vim-tidal-src": "vim-tidal-src",
"vowel-src": "vowel-src" "vowel-src": "vowel-src"
}, },
"locked": { "locked": {
"lastModified": 1664760044, "lastModified": 1723223284,
"narHash": "sha256-e5LGk/tDnphory1mYhADgPnVtShofY2w/3xY09jEE2A=", "narHash": "sha256-NAT+g5nsaJZkpR0sCZjerd1xx233ZUdRH3ZWwZhzq/c=",
"owner": "mitchmindtree", "owner": "mitchmindtree",
"repo": "tidalcycles.nix", "repo": "tidalcycles.nix",
"rev": "3f3a820cd43709077d15a24fa6062de7d623a6bf", "rev": "82f3e8e8d02eb9f0c9dfe9ab3773b825c6bc1982",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -426,11 +534,11 @@
}, },
"unstable": { "unstable": {
"locked": { "locked": {
"lastModified": 1670152712, "lastModified": 1723637854,
"narHash": "sha256-LJttwIvJqsZIj8u1LxVRv82vwUtkzVqQVi7Wb8gxPS4=", "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "14ddeaebcbe9a25748221d1d7ecdf98e20e2325e", "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -441,42 +549,15 @@
} }
}, },
"utils": { "utils": {
"inputs": {
"systems": "systems_2"
},
"locked": { "locked": {
"lastModified": 1648297722, "lastModified": 1701680307,
"narHash": "sha256-W+qlPsiZd8F3XkzXOzAoR+mpFqzm3ekQkJNa+PIh1BQ=", "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "0f8662f1319ad6abf89b3380dd2722369fc51ade", "rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_2": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"utils_3": {
"locked": {
"lastModified": 1653893745,
"narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -488,24 +569,22 @@
"vim-tidal-src": { "vim-tidal-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1664252474, "lastModified": 1685703852,
"narHash": "sha256-hleiK2Q7xYndpB+tIbyyXIM2sk4NunUh9DPgMqmf/Wc=", "narHash": "sha256-8gyk17YLeKpLpz3LRtxiwbpsIbZka9bb63nK5/9IUoA=",
"owner": "tidalcycles", "owner": "tidalcycles",
"repo": "vim-tidal", "repo": "vim-tidal",
"rev": "b07f5c12986fb837e055d7fcf0acf3b7e248148f", "rev": "e440fe5bdfe07f805e21e6872099685d38e8b761",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tidalcycles", "owner": "tidalcycles",
"ref": "master",
"repo": "vim-tidal", "repo": "vim-tidal",
"type": "github" "type": "github"
} }
}, },
"vimwiki-cli": { "vimwikicli": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"poonam",
"nixpkgs" "nixpkgs"
] ]
}, },
@ -536,7 +615,6 @@
}, },
"original": { "original": {
"owner": "supercollider-quarks", "owner": "supercollider-quarks",
"ref": "master",
"repo": "vowel", "repo": "vowel",
"type": "github" "type": "github"
} }

149
flake.nix
View file

@ -1,13 +1,17 @@
{ {
description = "Your new nix config"; description = "Sealight NixOS Config";
inputs = { inputs = {
# Nixpkgs # Nixpkgs
nixpkgs.url = "github:nixos/nixpkgs/nixos-22.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
unstable.url = "github:nixos/nixpkgs/nixos-unstable"; unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
# ngipkgs.url = "github:Chickensoupwithrice/ngipkgs?ref=aynish/atomic-server-module";
# ngipkgs-local.url = "path:/home/anish/usr/ngipkgs";
# Home manager # Home manager
home-manager.url = "github:nix-community/home-manager"; home-manager.url = "github:nix-community/home-manager/release-24.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
hardware.url = "github:nixos/nixos-hardware"; hardware.url = "github:nixos/nixos-hardware";
@ -16,25 +20,30 @@
agenix.inputs.nixpkgs.follows = "nixpkgs"; agenix.inputs.nixpkgs.follows = "nixpkgs";
deploy-rs.url = "github:serokell/deploy-rs"; deploy-rs.url = "github:serokell/deploy-rs";
deploy-rs.inputs.nixpkgs.follows = "nixpkgs"; deploy-rs.inputs.nixpkgs.follows = "nixpkgs";
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
# Packages # My Packages
poonam.url = "git+ssh://gitea@git.sealight.xyz/aynish/kitaab?ref=main"; poonam.url = "git+ssh://gitea@git.sealight.xyz/aynish/kitaab?ref=main";
poonam.inputs.nixpkgs.follows = "nixpkgs";
basant.url = "git+ssh://gitea@git.sealight.xyz/aynish/basant?ref=main"; basant.url = "git+ssh://gitea@git.sealight.xyz/aynish/basant?ref=main";
vimwikicli.url =
"git+ssh://gitea@git.sealight.xyz/aynish/vimwiki-cli?ref=main";
basant.inputs.nixpkgs.follows = "nixpkgs"; basant.inputs.nixpkgs.follows = "nixpkgs";
basant.inputs.poonam.follows = "poonam"; basant.inputs.poonam.follows = "poonam";
vimwikicli.inputs.nixpkgs.follows = "nixpkgs";
grasp.url = "git+ssh://gitea@git.sealight.xyz/aynish/grasp.git?ref=main"; grasp.url = "git+ssh://gitea@git.sealight.xyz/aynish/grasp.git?ref=main";
grasp.inputs.nixpkgs.follows = "nixpkgs"; grasp.inputs.nixpkgs.follows = "nixpkgs";
# Matrix
nix-matrix-appservices.url = "gitlab:coffeetables/nix-matrix-appservices";
# Others # Others
nur.url = "github:nix-community/NUR"; nur.url = "github:nix-community/NUR";
rust-overlay = { rust-overlay = {
url = "github:oxalica/rust-overlay"; url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
eww = {
url = "github:elkowar/eww";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
};
tidalcycles.url = "github:mitchmindtree/tidalcycles.nix"; tidalcycles.url = "github:mitchmindtree/tidalcycles.nix";
tidalcycles.inputs.nixpkgs.follows = "unstable"; tidalcycles.inputs.nixpkgs.follows = "unstable";
# TODO hundred rabbits software # TODO hundred rabbits software
@ -46,21 +55,9 @@
# muneem.inputs.nixpkgs.follows = "nixpkgs"; # muneem.inputs.nixpkgs.follows = "nixpkgs";
}; };
outputs = outputs = { self, nixpkgs, unstable, nixos-hardware, home-manager, deploy-rs
{ self , agenix, disko, basant, grasp, nix-matrix-appservices, nur, tidalcycles
, nixpkgs , rust-overlay, vimwikicli, ... }@inputs:
, unstable
, home-manager
, deploy-rs
, agenix
, basant
, grasp
, nur
, tidalcycles
, rust-overlay
, eww
, ...
}@inputs:
let let
forAllSystems = nixpkgs.lib.genAttrs [ forAllSystems = nixpkgs.lib.genAttrs [
"aarch64-linux" "aarch64-linux"
@ -74,12 +71,17 @@
unstable = unstable.legacyPackages.${prev.system}; unstable = unstable.legacyPackages.${prev.system};
deploy = deploy-rs.packages.${prev.system}.deploy-rs; deploy = deploy-rs.packages.${prev.system}.deploy-rs;
}; };
vimwikiOverlay = final: prev: {
vimwiki-cli = vimwikicli.packages.${prev.system}.vimwiki-cli;
};
nixpkgsFor = forAllSystems (system: import nixpkgs { nixpkgsFor = forAllSystems (system:
import nixpkgs {
inherit system; inherit system;
config.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [ config.allowUnfreePredicate = pkg:
builtins.elem (nixpkgs.lib.getName pkg) [
"ripcord" "ripcord"
"VCV-Rack" "vcv-rack"
"SunVox" "SunVox"
"renoise" "renoise"
]; ];
@ -90,36 +92,42 @@
overlays = [ overlays = [
rust-overlay.overlays.default rust-overlay.overlays.default
tidalcycles.overlays.default tidalcycles.overlays.default
agenix.overlay agenix.overlays.default
nur.overlay nur.overlay
nix-matrix-appservices.overlay
unstableOverlay unstableOverlay
vimwikiOverlay
self.overlays.additions self.overlays.additions
self.overlays.modifications self.overlays.modifications
]; ];
}); });
# for when space matters # for when space matters
litePkgsFor = forAllSystems (system: import nixpkgs { litePkgsFor = forAllSystems (system:
import nixpkgs {
inherit system; inherit system;
# config.permittedInsecurePackages = [
# "forgejo-1.19.4-0" # Needed for archivebox deployments on curve
# # Check when archive box updates it's dependeny
# ];
overlays = [ overlays = [
agenix.overlay agenix.overlays.default
self.overlays.additions
self.overlays.modifications
tidalcycles.overlays.default # needed for nvim which comes pre-installed lol tidalcycles.overlays.default # needed for nvim which comes pre-installed lol
]; ];
}); });
in in {
{
# Your custom packages # Your custom packages
# Acessible through 'nix build', 'nix shell', etc # Acessible through 'nix build', 'nix shell', etc
packages = forAllSystems (system: packages = forAllSystems (system:
let pkgs = nixpkgsFor.${system}; let pkgs = nixpkgsFor.${system};
in import ./pkgs { pkgs = pkgs; } in import ./pkgs { pkgs = pkgs; });
);
# Devshell for bootstrapping # Devshell for bootstrapping
# Acessible through 'nix develop' or 'nix-shell' (legacy) # Acessible through 'nix develop' or 'nix-shell' (legacy)
devShells = forAllSystems (system: devShells = forAllSystems (system:
let pkgs = nixpkgsFor.${system}; let pkgs = nixpkgsFor.${system};
in import ./shell.nix { pkgs = pkgs; } in import ./shell.nix { pkgs = pkgs; });
);
# Your custom packages and modifications, exported as overlays # Your custom packages and modifications, exported as overlays
overlays = import ./overlays; overlays = import ./overlays;
@ -141,8 +149,12 @@
agenix.nixosModules.age agenix.nixosModules.age
self.nixosModules.backup self.nixosModules.backup
self.nixosModules.wireguard self.nixosModules.wireguard
self.nixosModules.wallabag
nixos-hardware.nixosModules.lenovo-thinkpad-x270
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
nix.registry.nixpkgs.flake = nixpkgs;
nix.registry.unstable.flake = unstable;
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.anish = import ./home/gui; home-manager.users.anish = import ./home/gui;
@ -153,17 +165,18 @@
helix = nixpkgs.lib.nixosSystem rec { helix = nixpkgs.lib.nixosSystem rec {
specialArgs = { inherit inputs self; }; specialArgs = { inherit inputs self; };
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgsFor.${system}; pkgs = litePkgsFor.${system};
modules = [ modules = [
./hosts/helix ./hosts/helix
agenix.nixosModules.age agenix.nixosModules.age
self.nixosModules.backup self.nixosModules.backup
self.nixosModules.wireguard self.nixosModules.wireguard
home-manager.nixosModules.home-manager basant.nixosModule
# self.nixosModules.microbin
disko.nixosModules.disko
{ {
home-manager.useGlobalPkgs = true; nixpkgs.flake.setNixPath = false;
home-manager.useUserPackages = true; nixpkgs.flake.setFlakeRegistry = false;
home-manager.users.anish = import ./home/core;
} }
]; ];
}; };
@ -177,6 +190,7 @@
agenix.nixosModules.age agenix.nixosModules.age
self.nixosModules.backup self.nixosModules.backup
self.nixosModules.hesienbridge self.nixosModules.hesienbridge
nix-matrix-appservices.nixosModule
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
@ -186,19 +200,6 @@
]; ];
}; };
cube = nixpkgs.lib.nixosSystem rec {
specialArgs = { inherit inputs self; };
system = "x86_64-linux";
pkgs = litePkgsFor.${system};
modules = [
./hosts/cube
agenix.nixosModules.age
self.nixosModules.backup
self.nixosModules.wireguard
basant.nixosModule
];
};
box = nixpkgs.lib.nixosSystem rec { box = nixpkgs.lib.nixosSystem rec {
specialArgs = { inherit inputs self; }; specialArgs = { inherit inputs self; };
system = "x86_64-linux"; system = "x86_64-linux";
@ -208,14 +209,17 @@
agenix.nixosModules.age agenix.nixosModules.age
self.nixosModules.backup self.nixosModules.backup
self.nixosModules.wireguard self.nixosModules.wireguard
self.nixosModules.wallabag
self.nixosModules.gonic self.nixosModules.gonic
self.nixosModules.gpodder2go
self.nixosModules.wallabag
self.nixosModules.ulogger-server
grasp.nixosModule grasp.nixosModule
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
nix.registry.nixpkgs.flake = nixpkgs;
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.anish = import ./home/core; home-manager.users.anish = import ./home/dev;
} }
]; ];
}; };
@ -225,46 +229,47 @@
# Available through 'home-manager --flake .#your-username@your-hostname' # Available through 'home-manager --flake .#your-username@your-hostname'
homeConfigurations = { homeConfigurations = {
"anish@work" = home-manager.lib.homeManagerConfiguration { "anish@work" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgsFor."x86_64-linux"; # Home-manager requires 'pkgs' instance pkgs =
nixpkgsFor."x86_64-linux"; # Home-manager requires 'pkgs' instance
extraSpecialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; };
modules = [ modules = [ ./home/core.nix ./home/profiles/firefox ];
./home/core.nix
./home/profiles/firefox
];
}; };
}; };
deploy.nodes = { deploy.nodes = {
box = { box = {
hostname = "mossnet.lan"; hostname = "mossnet.lan";
autoRollback = false;
magicRollback = false;
remoteBuild = true;
profiles.system = { profiles.system = {
user = "root"; user = "root";
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.box; path = deploy-rs.lib.x86_64-linux.activate.nixos
self.nixosConfigurations.box;
}; };
}; };
lituus = { lituus = {
hostname = "sealight.xyz"; hostname = "sealight.xyz";
# autoRollback = false;
profiles.system = { profiles.system = {
user = "root"; user = "root";
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.lituus; path = deploy-rs.lib.x86_64-linux.activate.nixos
self.nixosConfigurations.lituus;
}; };
}; };
helix = { helix = {
hostname = "git.sealight.xyz"; hostname = "git.sealight.xyz";
autoRollback = false;
magicRollback = false;
profiles.system = { profiles.system = {
user = "root"; user = "root";
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.helix; path = deploy-rs.lib.x86_64-linux.activate.nixos
}; self.nixosConfigurations.helix;
};
cube = {
hostname = "lakhwara.com";
profiles.system = {
user = "root";
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.cube;
}; };
}; };
}; };
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib; checks = builtins.mapAttrs
(system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
}; };
} }

View file

@ -1,11 +1,9 @@
{ self, pkgs, ... }: { self, pkgs, ... }:
{ {
imports = [ imports = [
../profiles/nvim
../profiles/cli ../profiles/cli
../profiles/direnv ../profiles/direnv
../profiles/git ../profiles/git
../profiles/task
]; ];
home.stateVersion = "22.05"; home.stateVersion = "22.05";
} }

5
home/dev/default.nix Normal file
View file

@ -0,0 +1,5 @@
{ self, pkgs, ... }: {
imports =
[ ../profiles/cli ../profiles/nvim ../profiles/direnv ../profiles/git ];
home.stateVersion = "22.05";
}

View file

@ -2,9 +2,13 @@
{ {
imports = [ imports = [
../core ../core
../profiles/nvim
../profiles/firefox ../profiles/firefox
../profiles/desktop ../profiles/desktop
../profiles/email ../profiles/email
../profiles/cal ../profiles/cal
../profiles/sync/kitaab
../profiles/ssh
../profiles/task
]; ];
} }

View file

@ -0,0 +1,5 @@
#!/usr/bin/env bash
working_directory=$(pwd)
vim_directory="${working_directory//\//%}.vim"
trash "$HOME/.local/share/nvim/sessions/${vim_directory}"

View file

@ -0,0 +1,19 @@
`dasht-docsets-intstall`
Bash
Clojure
Docker
Elixir
HTML
JavaScript
Jinja
Lua_5.4
Nginx
OpenGL_4
PostgreSQL
Processing
Python_3
React
Rust
TypeScript
Vim

View file

@ -7,6 +7,7 @@
dasht dasht
dosfstools dosfstools
#git #git
git-machete
bottom bottom
gptfdisk gptfdisk
starship starship
@ -26,10 +27,12 @@
iftop iftop
wget wget
curl curl
exa eza
bat bat
fd fd
ncdu ncdu
du-dust
# dia-cli
duf duf
trash-cli trash-cli
nix-index nix-index
@ -51,16 +54,19 @@
gdb gdb
xxd xxd
taskwarrior taskwarrior
yt-dlp
gnupg gnupg
syncthing syncthing
dijo dijo
#ssb-patchwork #ssb-patchwork
fontconfig fontconfig
pandoc pandoc
taskwarrior-tui
python3Packages.howdoi
vimwiki-cli
(pkgs.writeScriptBin "jq-repl" '' (pkgs.writeScriptBin "jq-repl" ''
#!/usr/bin/env bash #!/usr/bin/env bash
if [[ -z $1 ]] || [[ $1 == "-" ]] then if [[ -z $1 ]] || [[ $1 == "-" ]]; then
input=$(mktemp) input=$(mktemp)
trap "rm -f $input" EXIT trap "rm -f $input" EXIT
cat /dev/stdin > $input cat /dev/stdin > $input
@ -70,16 +76,9 @@
echo "" \ | fzf --phony --preview-window="up:90%" --print-query --preview "jq --color-output -r {q} $input" echo "" \ | fzf --phony --preview-window="up:90%" --print-query --preview "jq --color-output -r {q} $input"
'') '')
]; (pkgs.writeScriptBin "clear-vim-trash" (builtins.readFile ./bin/clear-vim-trash.sh))
(pkgs.writeScriptBin "flakify" ''
programs.zsh = { #!/usr/bin/env zsh
enable = true;
enableCompletion = true;
enableAutosuggestions = true;
initExtra = ''
bindkey -v
flakify() {
if [ ! -e flake.nix ]; then if [ ! -e flake.nix ]; then
nix flake new -t github:nix-community/nix-direnv . nix flake new -t github:nix-community/nix-direnv .
elif [ ! -e .envrc ]; then elif [ ! -e .envrc ]; then
@ -87,10 +86,54 @@
direnv allow direnv allow
fi fi
vim flake.nix vim flake.nix
} '')
mx() { (pkgs.writeScriptBin "mx" ''
#!/usr/bin/env bash
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | fzf --preview="manix '{}'" | xargs manix manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | fzf --preview="manix '{}'" | xargs manix
'')
(pkgs.writeScriptBin "monitor" ''
# hotplug
connect() {
# Turn it on if it was off
xrandr --output HDMI-2 --auto
xrandr --output HDMI-2 --same-as eDP-1
} }
disconnect() {
xrandr --output HDMI-2 --off
}
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
'')
(pkgs.writeScriptBin "disconnect-keyboard" ''
# keyboard on curve is busted
get_keyboard_id() {
xinput list | grep 'AT Translated Set' | cut -f2 | cut -d'=' -f2 | xinput float
}
disconnect_keyboard() {
id=$(get_keyboard_id)
xinput float $id
unset id
}
attach_keyboard() {
id=$(get_keyboard_id)
xinput reattach $id 3
unset id
}
disconnect_keyboard
'')
];
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = false;
initExtra = ''
bindkey -v
autopair-init autopair-init
''; '';
sessionVariables = { sessionVariables = {
@ -98,15 +141,6 @@
TERMINFO_DIRS = "${pkgs.kitty.terminfo.outPath}/share/terminfo"; # Needed to run home-manager switch on non-nixOS TERMINFO_DIRS = "${pkgs.kitty.terminfo.outPath}/share/terminfo"; # Needed to run home-manager switch on non-nixOS
}; };
plugins = [ plugins = [
# {
# name = "zsh-autocomplete";
# src = pkgs.fetchFromGitHub {
# owner = "marlonrichert";
# repo = "zsh-autocomplete";
# rev = "22.01.21";
# sha256 = "+UziTYsjgpiumSulrLojuqHtDrgvuG91+XNiaMD7wIs=";
# };
# }
{ {
name = "zsh-autopair"; name = "zsh-autopair";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -137,16 +171,16 @@
}; };
file = "zsh-autoquoter.zsh"; file = "zsh-autoquoter.zsh";
} }
{ # {
name = "zsh-nix-shell"; # name = "zsh-nix-shell";
file = "nix-shell.plugin.zsh"; # file = "nix-shell.plugin.zsh";
src = pkgs.fetchFromGitHub { # src = pkgs.fetchFromGitHub {
owner = "chisui"; # owner = "chisui";
repo = "zsh-nix-shell"; # repo = "zsh-nix-shell";
rev = "v0.5.0"; # rev = "v0.5.0";
sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91"; # sha256 = "0za4aiwwrlawnia4f29msk822rj9bgcygw6a8a6iikiwzjjz0g91";
}; # };
} # }
]; ];
}; };
@ -164,7 +198,6 @@
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
nix-direnv.enable = true; nix-direnv.enable = true;
# nix-direnv.enableFlakes = true; always enabled
}; };
programs.zoxide = { programs.zoxide = {
@ -181,13 +214,14 @@
"...." = "cd ../../.."; "...." = "cd ../../..";
"....." = "cd ../../../.."; "....." = "cd ../../../..";
# kitaab recents icat = "kitty +kitten icat";
kr = "cd /home/anish/kitaab/vimwiki; ls --sort=modified --reverse | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 {}'"; yt = "ytfzf -T kitty -t ";
gen-secret = "< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c\${1:-32};echo;";
# modern cli tools # modern cli tools
ls = "exa --icons"; ls = "eza --icons";
l = "exa -l --icons"; l = "esa -l --icons";
la = "exa -la --icons"; la = "eza -la --icons";
tree = "ls --tree --icons"; tree = "ls --tree --icons";
cat = "bat"; cat = "bat";
unzip = "aunpack"; unzip = "aunpack";
@ -198,19 +232,25 @@
make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;"; make-secret = "< /dev/urandom \\tr -dc _A-Za-z0-9 | head -c \${1:-32};echo;";
# task warrior # task warrior
# TODO: make blocked a context? t = "task -BLOCKED -idea -backlog";
t = "task -BLOCKED"; tw = "t rc.context:work";
tin = "task in"; # TODO find a reasonable way to manage this from a non-nix managed file in ~/.task/context or something
tun = "task -BLOCKED -wait"; # we can do something like task rc.context:$(cat ~/.task/context) to read context
tb = "task list +backlog"; # and write a little script make-context = cat $@ > ~/.task/context or something
tt = "taskwarrior-tui -r list";
ti = "task +idea";
tb = "task +backlog list";
ttb = "taskwarrior-tui -r backlog";
tr = "task newest limit:page"; tr = "task newest limit:page";
tu = "task unblocked -wait"; twait = "task +wait";
tl = "task list";
ta = "task add"; ta = "task add";
tai = "task add +in"; tai = "task add +idea";
tn = "task-note"; tn = "task-note";
tp = "task limit:page";
ts = "task sync"; ts = "task sync";
# taskwarrior task lists
twt = "task tags +PENDING | tail -n +4 | cut -d ' ' -f1 | fzf --preview 'task +{}'";
# task warrior projects list
tp = "task projects +PENDING | tail -n +4 | head -n -2 | cut -d ' ' -f1 | fzf --preview 'task pro:{}'";
# keeping for posterity but now sxhkbd handles screenshot with <Super+O> # keeping for posterity but now sxhkbd handles screenshot with <Super+O>
# scrot = "flameshot screen -c -p ~/screenshots/"; # scrot = "flameshot screen -c -p ~/screenshots/";
@ -235,12 +275,12 @@
nf = "n flake"; nf = "n flake";
nfl = "nf lock"; nfl = "nf lock";
nepl = "n repl '<nixpkgs>'"; nepl = "n repl '<nixpkgs>'";
srch = "ns nixos"; srch = "ns nixpkgs";
orch = "ns override"; orch = "ns override";
nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/etc/nixos/#curve'; cd $OLDPWD"; nrb = "cd /tmp; sudo nixos-rebuild switch --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
nrt = "cd /tmp; sudo nixos-rebuild test --flake '/etc/nixos/#curve'; cd $OLDPWD"; nrt = "cd /tmp; sudo nixos-rebuild test --flake '/home/anish/usr/helm#curve'; cd $OLDPWD";
ned = "cd /etc/nixos; vim; cd $OLDPWD"; ned = "cd /home/anish/usr/helm; vim; cd $OLDPWD";
ncd = "cd /etc/nixos"; ncd = "cd /home/anish/usr/helm";
mn = '' mn = ''
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix
''; '';
@ -265,10 +305,11 @@
jtl = "journalctl"; jtl = "journalctl";
# quick ssh # quick ssh
kssh = "kitten +kitty ssh"; kssh = "kitty +kitten ssh";
smm = "ssh 10.0.69.4"; # box over wireguard smm = "ssh 10.0.69.4"; # box over wireguard
sm = "ssh mossnet.lan"; # box regular sm = "ssh mossnet.lan"; # box regular
ss = "ssh sealight.xyz"; # helix sl = "ssh sealight.xyz"; # lituus
# sl = "ssh 69.61.38.225"; # lituus has become helix sh = "ssh git.sealight.xyz"; # helix
sb = "ssh cyberian@69.61.38.246"; # bonfire for allwell
}; };
} }

0
home/profiles/desktop/Xresources Normal file → Executable file
View file

View file

@ -0,0 +1,71 @@
#!/bin/sh
# Get class of a wid
get_class() {
id=$1
if [ -z "$id" ]; then
echo ""
else
xprop -id "$id" | sed -n \
-e '/WM_CLASS/s/\( "\)/\n/g; s/[^\n]*\n\([^"]*\)[^\n]*/\1\n/g' \
-e '/WM_COMMAND/s/[^"]*/\n\n/1; s/\n"//1; s/\n\([^"]*\)".*/\n\1/; /\n/p' | sed '/^$/d' | head -n1
fi
}
get_pid() {
xprop _NET_WM_PID -id "$1" | awk '/[0-9]+/ {print $3}'
}
get_ppid() {
ps -o ppid= -p $1
}
check_swallowing_process() {
pid=$(get_pid $1)
[ -z $pid ] && return 0
gppid=$(get_ppid $(get_ppid $pid))
grep -i "^$(ps -o cmd= -p $gppid | awk '{print $1}' | sed 's_^.*/__')$" ~/.config/bspwm/terminals && return 0
[ "$(get_ppid "$(get_ppid "$(get_pid "$1")")")" = "$(get_pid "$2")" ] && return 0 || return 1
}
swallow() {
addedtodesktop=$2
lasttermdesktop=$(bspc query -D -n last)
swallowerid=$1
swallowingid=$(bspc query -N -n last)
if [ "$addedtodesktop" = "$lasttermdesktop" ] && check_swallowing_process "$swallowerid" "$swallowingid"; then
grep -q "^$(get_class "$swallowerid")$" ~/.config/bspwm/{noswallow, terminals} && return
grep -i "^$(get_class "$swallowingid")$" ~/.config/bspwm/terminals || return
echo "$swallowerid $swallowingid" >> /tmp/swallowids
bspc node "$swallowingid" --flag hidden=on
fi
}
spit() {
spitterid=$1
spitterdesktop=$2
grep "^$spitterid" /tmp/swallowids || return
spittingid=$(grep "^$spitterid" /tmp/swallowids | head -n1 | awk '{print $2}')
bspc node "$spittingid" --flag hidden=off
termdesktop=$(bspc query -D -n "$spittingid")
[ "$termdesktop" = "$spitterdesktop" ] || bspc node "$spittingid" -d "$spitterdesktop"
bspc node "$spittingid" -f
sed -i "/^$spitterid/d" /tmp/swallowids
}
bspc subscribe node_add node_remove | while read -r event
do
case $(echo "$event" | awk '{ print $1 }') in
node_add)
swallow $(echo "$event" | awk '{print $5 " " $3}')
;;
node_remove)
spit $(echo "$event" | awk '{print $4 " " $3}')
;;
esac
done

15
home/profiles/desktop/bin/ku Executable file
View file

@ -0,0 +1,15 @@
#!/usr/bin/env bash
# get into a shell that has poonam
cd ~/kitaab || exit;
nix develop;
# Use fzf to select a file and capture the output
selected_file=$(${pkgs.poonam}/main report --titles=false | head -n -2 | fzf --preview 'bat --color=always --terminal-width -1 ./vimwiki/{}')
echo $selected_file
# Add additional details to the file path
# file_path="./vimwiki/${selected_file}"
#
# # Open the file in vim for editing
# vim "${file_path}"
#

View file

@ -0,0 +1 @@
curl -F "content=$(xclip -o)" -X POST https://bin.sealight.xyz/upload

View file

@ -5,9 +5,9 @@ rofi_command="rofi -theme theme/powermenu.rasi"
### Options ### ### Options ###
power_off="\tShutdown" power_off="\tShutdown"
reboot="\tReboot" reboot="\tReboot"
lock="\tLock" lock="\tLock"
suspend="\tSleep" suspend="󰤄\tSleep"
log_out="\tLogout" log_out="󰍃\tLogout"
# Variable passed to rofi # Variable passed to rofi
options="$power_off\n$reboot\n$lock\n$suspend\n$log_out" options="$power_off\n$reboot\n$lock\n$suspend\n$log_out"
@ -18,14 +18,14 @@ case "$(echo -e "$options" | $rofi_command -dmenu)" in
" Reboot") " Reboot")
systemctl reboot systemctl reboot
;; ;;
" Lock") " Lock")
dm-tool lock dm-tool lock
;; ;;
" Sleep") "󰤄 Sleep")
dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
systemctl suspend systemctl suspend
;; ;;
" Logout") "󰍃 Logout")
bspc quit bspc quit
;; ;;
esac esac

View file

@ -3,11 +3,12 @@
timer=5 timer=5
# Options # Options
select="麗" select="󰩭 "
window="类" window=" "
screen="" screen=" "
delay="" record=" "
cancel="" delay="󱑃 "
cancel="󰜺 "
# Variable passed to rofi # Variable passed to rofi
options="$select\n$window\n$screen\n$delay\n$cancel" options="$select\n$window\n$screen\n$delay\n$cancel"
@ -50,4 +51,6 @@ case $chosen in
| tee $filepath | xclip -selection c -t image/png | tee $filepath | xclip -selection c -t image/png
notify notify
;; ;;
$record)
kooha
esac esac

View file

@ -39,7 +39,10 @@ bspc rule -a Pinentry state=floating center=on
bspc rule -a Firefox state=fullscreen bspc rule -a Firefox state=fullscreen
bspc rule -a feh state=fullscreen bspc rule -a feh state=fullscreen
# bspswallow
pgrep bspswallow || bspswallow &
# polybar # polybar
for file in $XDG_CONFIG_HOME/bspwm/rc.d/*; do for file in "$XDG_CONFIG_HOME"/bspwm/rc.d/*; do
source "$file" source "$file"
done done

View file

@ -29,8 +29,104 @@ in
kitty kitty
libreoffice libreoffice
inotify-tools inotify-tools
offpunk
termpdfpy
libsForQt5.kontact
thunderbird
]; ];
# GTK4 color scheme?
dconf.settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
};
};
# Move required config files around
xdg.enable = true; # This doesn't seem to do anything so we have below
xdg.configHome = "/home/anish/.config"; # TODO bad hardcode
xdg.configFile = {
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
};
xdg.mimeApps.defaultApplications = {
};
home.file = {
".config/bspwm/rc.d/polybar".source = ./run.sh;
".config/bspwm/bspwmrc".source = ./bspwmrc;
".config/sxhkdrc".source = ./sxhkdrc;
".config/rofi/theme" = {
source = ./rofi;
recursive = true;
};
".config/polybar" = {
source = ./polybar;
recursive = true;
};
".config/dunst/dunstrc".source = ./dunstrc;
".config/kitty/kitty.conf".source = ./kitty.conf;
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
".config/zathura/zathurarc".source = ./zathurarc;
".background-image".source = ./background.jpg;
#gtk4 theme
".config/gtk-4.0/settings.ini".text = ''
[Settings]
gtk-application-prefer-dark-theme=1
'';
# gtk3 theme
".config/gtk-3.0/settings.ini".text = ''
[Settings]
gtk-theme-name=Dracula
gtk-icon-theme-name=Paper
gtk-cursor-theme-name=Capitaine Cursors - White
gtk-fallback-icon-theme=gnome
gtk-application-prefer-dark-theme=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=none
'';
# GTK2 global theme (widget and icon theme)
".config/gtk-2.0/gtkrc".text = ''
gtk-theme-name=Ayu-Mirage
gtk-icon-theme-name=Capitaine Cursors - White
gtk-font-name="Sans 10"
'';
".local/bin/passmenu".source = ./bin/passmenu;
".local/bin/paste".source = ./bin/paste;
".local/bin/bluetoothmenu".source = ./bin/bluetoothmenu;
".local/bin/wifimenu".source = ./bin/wifimenu;
".local/bin/powermenu".source = ./bin/powermenu;
".local/bin/screenshot".source = ./bin/screenshot;
".local/bin/mpv-ify".source = ./bin/mpv-ify;
".local/bin/bspswallow".source = ./bin/bspswallow;
".config/bspwm/terminals".text = "Kitty";
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
};
xdg.desktopEntries = {
ocr = {
name = "OCR image";
exec = "${pkgs.writeScript "ocr" ''
${pkgs.xfce.xfce4-screenshooter}/bin/xfce4-screenshooter -r --save /tmp/ocr-tmp.png
${pkgs.tesseract}/bin/tesseract /tmp/ocr-tmp.png | ${pkgs.xclip}/bin/xclip -sel clip
rm /tmp/ocr-tmp.png
''}";
};
screenshot = {
name = "Screenshot";
exec = "screenshot";
};
};
qt = {
enable = true;
platformTheme.name = "gtk";
style = { name = "qt5ct-style"; };
};
# set up env # set up env
xsession.enable = true; xsession.enable = true;
@ -66,67 +162,10 @@ in
"*.colorBD" = "#e6e1cf"; "*.colorBD" = "#e6e1cf";
}; };
# Move required config files around programs.autorandr.enable = true;
xdg.enable = true; # This doesn't seem to do anything so we have below services.udiskie.automount = true;
xdg.configHome = "/home/anish/.config"; # TODO bad hardcode
xdg.configFile = {
"Kvantum/Dracula/Dracula.kvconfig".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.kvconfig";
"Kvantum/Dracula/Dracula.svg".source = "${dracula-gtk}/kde/kvantum/Dracula-purple-solid/Dracula-purple-solid.svg";
"Kvantum/kvantum.kvconfig".text = "[General]\ntheme=Dracula";
};
home.file = {
".config/bspwm/rc.d/polybar".source = ./run.sh;
".config/bspwm/bspwmrc".source = ./bspwmrc;
".config/sxhkdrc".source = ./sxhkdrc;
".config/rofi/theme" = {
source = ./rofi;
recursive = true;
};
".config/polybar" = {
source = ./polybar;
recursive = true;
};
".config/dunst/dunstrc".source = ./dunstrc;
".config/kitty/kitty.conf".source = ./kitty.conf;
".config/kitty/ayu.conf".source = ./ayu-kitty.conf;
".config/zathura/zathurarc".source = ./zathurarc;
".background-image".source = ./background.jpg;
# gtk3 theme
".config/gtk-3.0/settings.ini".text = ''
[Settings]
gtk-theme-name=Dracula
gtk-icon-theme-name=Paper
gtk-cursor-theme-name=Capitaine Cursors - White
gtk-fallback-icon-theme=gnome
gtk-application-prefer-dark-theme=true
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=none
'';
# GTK2 global theme (widget and icon theme)
".config/gtk-2.0/gtkrc".text = ''
gtk-theme-name=Ayu-Mirage
gtk-icon-theme-name=Capitaine Cursors - White
gtk-font-name="Sans 10"
'';
# TODO hardcoded
".local/bin/passmenu".source = ./bin/passmenu;
".local/bin/bluetoothmenu".source = ./bin/bluetoothmenu;
".local/bin/wifimenu".source = ./bin/wifimenu;
".local/bin/powermenu".source = ./bin/powermenu;
".local/bin/screenshot".source = ./bin/screenshot;
".local/bin/mpv-ify".source = ./bin/mpv-ify;
".config/eww/eww.yuck".source = ./eww/eww.yuck;
".config/eww/eww.scss".source = ./eww/eww.scss;
".config/eww/widgets.yuck".source = ./eww/widgets.yuck;
# ".local/bin/hotplug-monitor.sh".source = ./bin/hotplug-monitor.sh;
};
qt = { services.mpris-proxy.enable = true; # bluetooth media control
enable = true;
platformTheme = "gtk";
style = { name = "qt5ct-style"; };
};
# Compositor # Compositor
# services.picom = { # services.picom = {
@ -149,9 +188,4 @@ in
# corner-radius = 3 # corner-radius = 3
# ''; # '';
# }; # };
programs.autorandr.enable = true;
services.udiskie.automount = true;
services.mpris-proxy.enable = true; # bluetooth media control
} }

View file

@ -35,7 +35,7 @@
origin = top-right origin = top-right
# Offset from the origin # Offset from the origin
offset = 18x36 offset = 12x36
# Scale factor. It is auto-detected if value is 0. # Scale factor. It is auto-detected if value is 0.
scale = 0 scale = 0

View file

@ -1,11 +1,13 @@
include ayu.conf include ayu.conf
font_family Hermit font_family Hermit
font_size 13
bold_font auto bold_font auto
italic_font auto italic_font auto
bold_italic_font auto bold_italic_font auto
open_url_with default open_url_with default
mouse_map left click ungrabbed mouse_click_url_or_select mouse_map left click ungrabbed mouse_click_url_or_select
confirm_os_window_close 0 confirm_os_window_close 0
enable_audio_bell no
-- Allows zen-mode.nvim to increase font size -- Allows zen-mode.nvim to increase font size
allow_remote_control socket-only -- allow_remote_control socket-only
listen_on unix:/tmp/kitty -- listen_on unix:/tmp/kitty

View file

@ -34,9 +34,6 @@ fixed-center = true
width = 100% width = 100%
height = 34 height = 34
offset-x =
offset-y =
; Background ARGB color (e.g. #f00, #ff992a, #ddff1023) ; Background ARGB color (e.g. #f00, #ff992a, #ddff1023)
background = ${colors.bg} background = ${colors.bg}
@ -58,14 +55,15 @@ padding-left = 0
module-margin = 0 module-margin = 0
margin-bottom = 34 margin-bottom = 34
font-0 = "Iosevka Term:pixelsize=13;4" font-0 = "Iosevka Nerd Font,Iosevka NF:pixelsize=10;1" ; Icon Size
font-1 = "Iosevka Term:pixelsize=6;1" font-1 = "Iosevka Nerd Font,Iosevka NF:pixelsize=12;4" ; Large Text font
font-2 = "Fira Code:pixelsize=13;2" font-2 = "FiraCode Nerd Font:pixelsize=12;2"
font-3 = "Siji:pixelsize=8;2" font-3 = "Siji:pixelsize=10;2"
font-4 = "Iosevka Nerd Font,Iosevka NF:pixelsize=8;1" ; Small Icon Size
; Add module mpd for artist - title info ; Add module mpd for artist - title info
modules-left = bspwm sps volume modules-left = bspwm sps volume
modules-center = title ; modules-center = title
modules-right = wireless-network sps battery sps memory sps cpu sps date modules-right = wireless-network sps battery sps memory sps cpu sps date
; The separator will be inserted between the output of each module ; The separator will be inserted between the output of each module
@ -116,11 +114,11 @@ type = internal/bspwm
pin-workspaces = true pin-workspaces = true
enable-click = true enable-click = true
ws-icon-0 = 1;%{T1}%{T-} ws-icon-0 = 1;%{T2} %{T-}
ws-icon-1 = 2;%{T1}%{T-} ws-icon-1 = 2;%{T2} %{T-}
ws-icon-2 = 3;%{T1}%{T-} ws-icon-2 = 3;%{T2}󰺻 %{T-}
ws-icon-3 = 4;%{T1}%{T-} ws-icon-3 = 4;%{T2} %{T-}
ws-icon-4 = 5;%{T1}%{T-} ws-icon-4 = 5;%{T2} %{T-}
ws-icon-default =  ws-icon-default = 
; fuzzy-match = true ; fuzzy-match = true
@ -157,14 +155,14 @@ interval = 1.0
; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string ; See "http://en.cppreference.com/w/cpp/io/manip/put_time" for details on how to format the date string
; NOTE: if you want to use syntax tags here you need to use %%{...} ; NOTE: if you want to use syntax tags here you need to use %%{...}
date = %{T1}%{T-}%{T2} %d/%a%{T-} date = %{T2} %{T-}%{T1} %d/%a%{T-}
; Optional time format ; Optional time format
time = %{T2} %H:%M%{T-} time = %{T2} %H:%M%{T-}
; if `date-alt` or `time-alt` is defined, clicking ; if `date-alt` or `time-alt` is defined, clicking
; the module will toggle between formats ; the module will toggle between formats
date-alt = %{T1}%{T-}%{T2} %a, %d %b %y%{T-} date-alt = %{T2} %{T-} %{T1} %a, %d %b %y%{T-}
time-alt = %{T2} %H:%M:%S%{T-} time-alt = %{T2} %H:%M:%S%{T-}
label = %date%%time% label = %date%%time%
@ -177,11 +175,12 @@ interface = wlp3s0
label-connected = %essid% label-connected = %essid%
label-connected-font = 2 label-connected-font = 2
format-connected = <ramp-signal><label-connected> format-connected = <ramp-signal> <label-connected>
label-connected-foreground = #82b414 label-connected-foreground = #82b414
format-disconnected = <label-disconnected> format-disconnected = <label-disconnected>
label-disconnected = "" label-disconnected = "󰖪"
label-disconnected-foreground = #f92672 label-disconnected-foreground = #f92672
ramp-signal-foreground = #82b414 ramp-signal-foreground = #82b414
@ -199,7 +198,7 @@ type = internal/cpu
; Default: 1 ; Default: 1
interval = 0.5 interval = 0.5
label = %{T1}%{T-}%{T2} %percentage:2%%%{T-} label = %{T2} %{T-}%{T1} %percentage:2%%%{T-}
label-foreground = ${colors.cyan} label-foreground = ${colors.cyan}
@ -229,7 +228,7 @@ format = <label>
; %gb_swap_free% ; %gb_swap_free%
; %gb_swap_used% ; %gb_swap_used%
label = %{T1}%{T-}%{T2} %gb_used%%{T-} label = %{T2}󰍛 %{T-}%{T1} %gb_used%%{T-}
label-foreground = ${colors.cyan} label-foreground = ${colors.cyan}
@ -277,38 +276,6 @@ type = custom/text
content = " " content = " "
content-padding = 0 content-padding = 0
[module/network]
type = internal/network
interface = wlp3s0
;enp0s29u1u2
interval = 1.0
label-connected = "%{T1}龍%{T-}%{T2} %downspeed% | %upspeed%%{T-}"
label-disconnected = "%{T2}0/0%{T-}"
label-connected-background = ${colors.bg}
label-connected-foreground = ${colors.blue}
label-disconnected-foreground = ${colors.red}
[module/title]
type = internal/xwindow
; Available tags:
; <label> (default)
format = <label>
format-background = ${colors.bg}
format-foreground = ${colors.green}
format-padding = 4
; Available tokens:
; %title%
; Default: %title%
label = "%{T1}类%{T-}%{T2} %title%%{T-}"
label-maxlen = 65
; Used instead of label when there is no window title
; Available tokens:
; None
label-empty =%{T2}Empty%{T-}
label-empty-foreground = #707880
[module/volume] [module/volume]
type = internal/pulseaudio type = internal/pulseaudio
@ -316,7 +283,7 @@ use-ui-max = false
interval = 5 interval = 5
format-volume = <ramp-volume><bar-volume> format-volume = <ramp-volume> <bar-volume>
format-muted = <label-muted> format-muted = <label-muted>
format-muted-prefix = "  " format-muted-prefix = "  "
@ -332,13 +299,13 @@ label-muted-foreground = ${colors.mauve}
bar-volume-width = 8 bar-volume-width = 8
bar-volume-gradient = false bar-volume-gradient = false
bar-volume-indicator = | bar-volume-indicator = |
bar-volume-indicator-font = 2 bar-volume-indicator-font = 6
bar-volume-indicator-foreground = ${colors.mauve} bar-volume-indicator-foreground = ${colors.mauve}
bar-volume-fill = ─ bar-volume-fill = ─
bar-volume-fill-font = 2 bar-volume-fill-font = 6
bar-volume-fill-foreground = ${colors.mauve} bar-volume-fill-foreground = ${colors.mauve}
bar-volume-empty = ─ bar-volume-empty = ─
bar-volume-empty-font = 2 bar-volume-empty-font = 6
bar-volume-empty-foreground = ${colors.fg-alt} bar-volume-empty-foreground = ${colors.fg-alt}
ramp-volume-0 = "  " ramp-volume-0 = "  "
@ -370,19 +337,19 @@ battery = BAT0
poll-interval = 2 poll-interval = 2
time-format = %H:%M time-format = %H:%M
format-charging = <animation-charging><label-charging> format-charging = <animation-charging> <label-charging>
format-charging-prefix = format-charging-prefix =
format-discharging = <ramp-capacity><label-discharging> format-discharging = <ramp-capacity> <label-discharging>
format-full = <label-full> format-full = <label-full>
format-full-prefix = " " format-full-prefix = " "
format-full-prefix-font = 1 format-full-prefix-font = 2
format-full-prefix-foreground = ${colors.sky} format-full-prefix-foreground = ${colors.sky}
label-charging = "%percentage%% " label-charging = "%percentage%% "
label-discharging = "%percentage%% " label-discharging = "%percentage%% "
label-full = "%percentage%% " label-full = "%percentage%%"
label-charging-foreground = ${colors.sky} label-charging-foreground = ${colors.sky}
label-discharging-foreground = ${colors.sky} label-discharging-foreground = ${colors.sky}
@ -409,3 +376,4 @@ animation-charging-foreground = ${colors.sky}
animation-charging-framerate = 750 animation-charging-framerate = 750
;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ ;; _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_

0
home/profiles/desktop/polybar/run.sh Normal file → Executable file
View file

View file

@ -2,7 +2,7 @@
@import "config.rasi" @import "config.rasi"
textbox-icon { textbox-icon {
str: " "; str: "󱎂 ";
} }
prompt { prompt {

View file

@ -27,6 +27,9 @@ super + Tab
super + e super + e
rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy rofimoji --selector-args "-theme theme/emojimenu.rasi" --skin-tone moderate --action copy
super + a
paste
super + p super + p
passmenu passmenu

View file

@ -20,7 +20,7 @@
programs.msmtp.enable = true; programs.msmtp.enable = true;
programs.notmuch.enable = true; programs.notmuch.enable = true;
home.file.".mailcap".text = '' home.file.".mailcap".text = ''
text/html; browsh %s text/html; firefox %s
application/pdf; zathura %s application/pdf; zathura %s
image/png; feh %s image/png; feh %s
image/jpeg; feh %s image/jpeg; feh %s
@ -175,7 +175,7 @@
bind editor ^T complete bind editor ^T complete
# Press A to archive # Press A to archive
macro index,pager A "<clear-flag>N<save-message>=/Archive" "mark message as Archived" macro index,pager A "<clear-flag><save-message>=/Archive" "mark message as Archived"
# Press C to add contact to Khard address book # Press C to add contact to Khard address book
macro index,pager C \ macro index,pager C \
"<pipe-message>khard add-email<return>" \ "<pipe-message>khard add-email<return>" \

View file

@ -13,10 +13,15 @@
#env.XDG_DEXSTOP_DIR = "$HOME/"; #env.XDG_DEXSTOP_DIR = "$HOME/";
programs.firefox = { programs.firefox = {
enable = true; enable = true;
profiles.anish = {
id = 0;
isDefault = true;
name = "anish";
userChrome = (builtins.readFile ./userChrome.css);
extensions = with pkgs.nur.repos.rycee.firefox-addons; [ extensions = with pkgs.nur.repos.rycee.firefox-addons; [
# Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix # Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
ublock-origin ublock-origin
wallabagger # wallabagger
# tree-style-tab # tree-style-tab
tridactyl tridactyl
promnesia promnesia
@ -38,12 +43,10 @@
meta = { }; meta = { };
}) })
]; ];
profiles.anish = {
id = 0;
isDefault = true;
name = "anish";
userChrome = (builtins.readFile ./userChrome.css);
settings = { settings = {
"browser.zoom.siteSpecific" = false;
"zoom.minPercent" = "150"; # TODO doesn't seem to work anymore, you have to manually go into preferences and set the zoom level.
"devtools.theme" = "dark"; "devtools.theme" = "dark";
# Enable userContent.css and userChrome.css for our theme modules # Enable userContent.css and userChrome.css for our theme modules
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
@ -51,6 +54,7 @@
"browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this! "browser.download.dir" = "/home/anish/downloads"; # TODO Don't hardcode this!
# Don't use the built-in password manager; a nixos user is more likely # Don't use the built-in password manager; a nixos user is more likely
# using an external one (you are using one, right?). # using an external one (you are using one, right?).
# I am, but it's far too convienent. I'm enabling 2FA anyway so w/e
#"signon.rememberSignons" = false; #"signon.rememberSignons" = false;
# Do not check if Firefox is the default browser # Do not check if Firefox is the default browser
"browser.shell.checkDefaultBrowser" = false; "browser.shell.checkDefaultBrowser" = false;

View file

@ -49,6 +49,7 @@
".tmp" ".tmp"
".direnv" ".direnv"
"result" "result"
"node_modules/"
]; ];
extraConfig = { extraConfig = {

View file

@ -19,7 +19,16 @@ let
sha256 = "rs3NTZwWdsmBGXnrgUeVxUiNjbN/ULxJHifPYJD9mT4="; sha256 = "rs3NTZwWdsmBGXnrgUeVxUiNjbN/ULxJHifPYJD9mT4=";
}; };
}; };
nvim-luapad = pkgs.vimUtils.buildVimPluginFrom2Nix { my-lspsaga = pkgs.vimUtils.buildVimPlugin {
name = "lspsaga.nvim";
src = pkgs.fetchFromGitHub {
owner = "glepnir";
repo = "lspsaga.nvim";
rev = "b7b4777369b441341b2dcd45c738ea4167c11c9e";
sha256 = "sciX/fMxzY1YOxXxjj1+ymrdMi451avcFFu+14R+/pk=";
};
};
nvim-luapad = pkgs.vimUtils.buildVimPlugin {
name = "nvim-luapad"; name = "nvim-luapad";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "rafcamlet"; owner = "rafcamlet";
@ -28,7 +37,7 @@ let
sha256 = "gMaS5YFi3+gmUIfkCMEt9vhm8XSgv54Cquv5+WCWeTo="; sha256 = "gMaS5YFi3+gmUIfkCMEt9vhm8XSgv54Cquv5+WCWeTo=";
}; };
}; };
leap = pkgs.vimUtils.buildVimPluginFrom2Nix { leap = pkgs.vimUtils.buildVimPlugin {
name = "leap"; name = "leap";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
owner = "ggandor"; owner = "ggandor";
@ -46,7 +55,7 @@ let
sha256 = "vX7ZVJxgatIicmijehtaRvyHxk1i4gFfXrbPM/+VoFc="; sha256 = "vX7ZVJxgatIicmijehtaRvyHxk1i4gFfXrbPM/+VoFc=";
}; };
}; };
my-which-key-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix { my-which-key-nvim = pkgs.vimUtils.buildVimPlugin {
pname = "which-key.nvim"; pname = "which-key.nvim";
version = "2022-05-04"; version = "2022-05-04";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -57,17 +66,7 @@ let
}; };
meta.homepage = "https://github.com/folke/which-key.nvim/"; meta.homepage = "https://github.com/folke/which-key.nvim/";
}; };
my-conjure = pkgs.vimUtils.buildVimPluginFrom2Nix { scnvim = pkgs.vimUtils.buildVimPlugin {
pname = "conjure";
version = "2022-05-04";
src = pkgs.fetchFromGitHub {
owner = "olical";
repo = "conjure";
rev = "2e7f449d06753f2996e186954e96afc60edd5862";
sha256 = "ZV0vPYiZI5/3Isw2l7rrLuiO+kA9G0vrA6OxHFkLTFw=";
};
};
scnvim = pkgs.vimUtils.buildVimPluginFrom2Nix {
pname = "scnvim"; pname = "scnvim";
version = "2022-06-04"; version = "2022-06-04";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -77,7 +76,7 @@ let
sha256 = "kvSwS6FNUY2Ue84NhWLLcm0ldLMSp4WqQ7s6TUoX6Cc="; sha256 = "kvSwS6FNUY2Ue84NhWLLcm0ldLMSp4WqQ7s6TUoX6Cc=";
}; };
}; };
yuck-vim = pkgs.vimUtils.buildVimPluginFrom2Nix { yuck-vim = pkgs.vimUtils.buildVimPlugin {
pname = "yuck.vim"; pname = "yuck.vim";
version = "2021-08-09"; version = "2021-08-09";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -87,7 +86,7 @@ let
sha256 = "lp7qJWkvelVfoLCyI0aAiajTC+0W1BzDhmtta7tnICE="; sha256 = "lp7qJWkvelVfoLCyI0aAiajTC+0W1BzDhmtta7tnICE=";
}; };
}; };
nvim-parinfer = pkgs.vimUtils.buildVimPluginFrom2Nix { nvim-parinfer = pkgs.vimUtils.buildVimPlugin {
pname = "nvim-parinfer"; pname = "nvim-parinfer";
version = "v1.2.0"; version = "v1.2.0";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -97,7 +96,7 @@ let
sha256 = "Dlzfp3CZTzq8zQeHByWf3ER6/Em+KNGYNI4Z17ui8Lc="; sha256 = "Dlzfp3CZTzq8zQeHByWf3ER6/Em+KNGYNI4Z17ui8Lc=";
}; };
}; };
my-marks = pkgs.vimUtils.buildVimPluginFrom2Nix { my-marks = pkgs.vimUtils.buildVimPlugin {
pname = "marks"; pname = "marks";
version = "2022-08-31"; version = "2022-08-31";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -107,7 +106,7 @@ let
sha256 = "XdbgIWuAHNdTfyKDrKmQVq5oSbBoi56DpwtgOqhScAk="; sha256 = "XdbgIWuAHNdTfyKDrKmQVq5oSbBoi56DpwtgOqhScAk=";
}; };
}; };
my-fterm = pkgs.vimUtils.buildVimPluginFrom2Nix { my-fterm = pkgs.vimUtils.buildVimPlugin {
pname = "fterm"; pname = "fterm";
version = "2022-07-22"; version = "2022-07-22";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -117,7 +116,7 @@ let
sha256 = "rR6KDwj58aYfyaSsoUy75536SdBhk394yspCUl/hzfE="; sha256 = "rR6KDwj58aYfyaSsoUy75536SdBhk394yspCUl/hzfE=";
}; };
}; };
my-nvim-peekup = pkgs.vimUtils.buildVimPluginFrom2Nix { my-nvim-peekup = pkgs.vimUtils.buildVimPlugin {
pname = "nvim-peekup"; pname = "nvim-peekup";
version = "0.1.0"; version = "0.1.0";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -146,12 +145,21 @@ in
home.sessionVariables.EDITOR = "nvim"; home.sessionVariables.EDITOR = "nvim";
home.shellAliases = { home.shellAliases = {
k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD"; k = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex; cd $OLDPWD";
# kitaab zettel
kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD"; kz = "cd ~/kitaab/vimwiki; vim -c :VimwikiIndex -c :ZettelNew; cd $OLDPWD";
# kitaab recents
kr = "cd /home/anish/kitaab/vimwiki; eza --sort=modified --reverse | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD";
# kitaab get by tagged
kt = "cd /home/anish/kitaab/vimwiki; eza *_index.wiki | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./{}';cd $OLDPWD";
# List files that have no links in them
ku = "cd /home/anish/kitaab/;vim ./vimwiki/$(python3 poonam/main.py report --titles=false | tail -n +4 | fzf --preview 'bat --style=numbers --color=always --terminal-width -1 ./vimwiki/{}');cd $OLDPWD";
}; };
# Add %update to the highlight clause for vimwiki files # Add %update to the highlight clause for vimwiki files
home.file.".config/nvim/after/syntax/vimwiki.vim".text = '' home.file.".config/nvim/after/syntax/vimwiki.vim".text = ''
" match with %update " match with %update
syntax match VimwikiPlaceholder /^\s*%update\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite syntax match VimwikiPlaceholder /^\s*%update\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
" match with %link
syntax match VimwikiPlaceholder /^\s*%link\ze\%(\s.*\)\?$/ nextgroup=VimwikiPlaceholderParam skipwhite
''; '';
#environment.systemPackages = with customPlugins; [ tidal ]; #environment.systemPackages = with customPlugins; [ tidal ];
@ -261,6 +269,10 @@ in
" Sexp in Conjure (since it's fennel) " Sexp in Conjure (since it's fennel)
let g:sexp_filetypes = "clojure,scheme,lisp,janet,fennel,yuck" let g:sexp_filetypes = "clojure,scheme,lisp,janet,fennel,yuck"
let g:conjure#filetype#fennel = "conjure.client.fennel.stdio" let g:conjure#filetype#fennel = "conjure.client.fennel.stdio"
" we only use fennel with love; no we don't...
let g:conjure#client#fennel#stdio#command = "fennel"
" let g:conjure#extract#tree_sitter#enabled = true
map <localleader>lt :ConjureLogToggle<CR>
let g:rainbow_active = 0 let g:rainbow_active = 0
autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll
@ -338,23 +350,25 @@ in
let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.8 } } let g:fzf_layout = { 'window': { 'width': 0.8, 'height': 0.8 } }
" lsp commands " lsp commands
nnoremap <leader>vd :lua vim.lsp.buf.definition()<CR> nnoremap <leader>vgd :lua vim.lsp.buf.definition()<CR>
nnoremap <leader>vi :lua require('telescope.builtin').lsp_implementation()<CR> nnoremap <leader>vi :lua require('telescope.builtin').lsp_implementation()<CR>
nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR> nnoremap <leader>vsh :lua vim.lsp.buf.signature_help()<CR>
nnoremap <leader>vrr :lua require('telescope.builtin').lsp_references()<CR> nnoremap <leader>vrr :lua require('telescope.builtin').lsp_references()<CR>
nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR> " nnoremap <leader>vrn :lua vim.lsp.buf.rename()<CR>
nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR> " nnoremap <leader>vh :lua vim.lsp.buf.hover()<CR>
nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR> " nnoremap <leader>vca :lua vim.lsp.buf.code_action()<CR>
nnoremap <leader>vsd :lua vim.lsp.util.show_line_diagnostics()<CR> " nnoremap <leader>vsd :lua vim.lsp.util.show_line_diagnostics()<CR>
nnoremap <leader>vn :lua vim.lsp.diagnostic.goto_next()<CR> " nnoremap <leader>vn :lua vim.lsp.diagnostic.goto_next()<CR>
nnoremap <leader>va :lua require('telescope.builtin').lsp_code_actions(require('telescope.themes').get_cursor())<cr> " nnoremap <leader>va :lua require('telescope.builtin').lsp_code_actions(require('telescope.themes').get_cursor())<cr>
" lspsaga stuff doesn't work " lspsaga stuff doesn't work
" nnoremap <leader>vd :call Lspsaga peek_definition<CR> nnoremap <leader>vd :Lspsaga peek_definition<CR>
" nnoremap <leader>vrn :call Lspsaga rename<CR><CR> nnoremap <leader>vrn :Lspsaga rename<CR><CR>
" nnoremap <leader>vh :call Lspsaga hover_doc<CR> nnoremap <leader>vh :Lspsaga hover_doc<CR>
" nnoremap <leader>vca :call Lspsaga code_action<CR> nnoremap <leader>vca :Lspsaga code_action<CR>
" nnoremap <leader>vsd :call Lspsaga show_line_diagnostics<CR> nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR>
" nnoremap <leader>vn :call Lspsaga diagnostic_jump_prev<CR> nnoremap <leader>vs :Dasht<Space>
nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR>
nnoremap <leader>vo :LSoutlineToggle<CR>
" dashboard " dashboard
let g:dashboard_custom_header = [ let g:dashboard_custom_header = [
@ -464,6 +478,14 @@ in
} }
) )
local orig_util_open_floating_preview = vim.lsp.util.open_floating_preview
function vim.lsp.util.open_floating_preview(contents, syntax, opts, ...)
opts = opts or {}
opts.border = opts.border or 'rounded'
return orig_util_open_floating_preview(contents, syntax, opts, ...)
end
vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>', {noremap = true, silent = true}) vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>', {noremap = true, silent = true})
-- autopairs -- autopairs
@ -494,22 +516,6 @@ in
format = lspkind.cmp_format({ format = lspkind.cmp_format({
mode = 'symbol_text', mode = 'symbol_text',
maxwidth = 50, maxwidth = 50,
-- old format
-- format = function(entry, vim_item)
-- -- fancy icons and a name of kind
-- vim_item.kind = require("lspkind").presets.default[vim_item.kind] ..
-- " " .. vim_item.kind
-- -- set a name for each source
-- vim_item.menu = ({
-- buffer = "[Buffer]",
-- nvim_lsp = "[LSP]",
-- look = "[Look]",
-- path = "[Path]",
-- spell = "[Spell]",
-- calc = "[Calc]",
-- })[entry.source.name]
-- return vim_item
-- end
}) })
}, },
mapping = { mapping = {
@ -568,6 +574,8 @@ in
sources = { sources = {
null_ls.builtins.diagnostics.shellcheck, null_ls.builtins.diagnostics.shellcheck,
null_ls.builtins.diagnostics.proselint.with({ filetypes = { "vimwiki", "mail", }, }), null_ls.builtins.diagnostics.proselint.with({ filetypes = { "vimwiki", "mail", }, }),
null_ls.builtins.diagnostics.commitlint,
null_ls.builtins.diagnostics.jsonlint,
-- null_ls.builtins.code_actions.statix, -- null_ls.builtins.code_actions.statix,
-- null_ls.builtins.diagnostics.clj_kondo, -- null_ls.builtins.diagnostics.clj_kondo,
-- null_ls.builtins.formatting.isort, -- null_ls.builtins.formatting.isort,
@ -582,24 +590,52 @@ in
local navic = require("nvim-navic") local navic = require("nvim-navic")
-- lspsaga, code_action lightbulb is annoying -- lspsaga, code_action lightbulb is annoying
-- local saga = require('lspsaga') local saga = require('lspsaga')
-- saga.init_lsp_saga({ saga.init_lsp_saga({
-- code_action_lightbulb = { border_style = "rounded",
-- enable = true, code_action_icon = "",
-- enable_in_insert = true, code_action_num_shortcut = true,
-- cache_code_action = true, code_action_lightbulb = {
-- sign = true, enable = false,
-- update_time = 150, enable_in_insert = false,
-- sign_priority = 4, cache_code_action = true,
-- virtual_text = false, sign = true,
-- }, update_time = 150,
-- }) sign_priority = 20,
virtual_text = false,
},
code_action_keys = {
quit = 'q',
exec = '<CR>',
},
-- show outline
show_outline = {
win_position = 'right',
--set special filetype win that outline window split.like NvimTree neotree
-- defx, db_ui
auto_enter = true,
auto_preview = true,
virt_text = '',
jump_key = 'o',
-- auto refresh when change buffer
auto_refresh = true,
},
})
local capabilities = vim.lsp.protocol.make_client_capabilities() capabilities = require('cmp_nvim_lsp').default_capabilities()
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
-- fennel-ls is bleeding edge
local lspconfig = require('lspconfig') local lspconfig = require('lspconfig')
local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'sumneko_lua' } require("lspconfig.configs")["fennel-ls"] = {
default_config = {
cmd = {"fennel-ls"},
filetypes = {"fennel"},
root_dir = function(dir) return lspconfig.util.find_git_ancestor(dir) end,
settings = {}
}
}
local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'lua_ls', 'nil_ls', 'gopls'}
for _, lsp in ipairs(servers) do for _, lsp in ipairs(servers) do
lspconfig[lsp].setup { lspconfig[lsp].setup {
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
@ -609,13 +645,15 @@ in
capabilities = capabilities, capabilities = capabilities,
} }
end end
-- rnix doesn't support gps
require('lspconfig').rnix.setup { -- fennel-ls doesn't support gps
lspconfig['fennel-ls'].setup {
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
format.on_attach(client) format.on_attach(client)
end, end,
capabilities = capabilities, capabilities = capabilities,
} }
-- deprecated pylsp -- deprecated pylsp
-- require('lspconfig').pylsp.setup { -- require('lspconfig').pylsp.setup {
-- on_attach = function(client, bufnr) -- on_attach = function(client, bufnr)
@ -645,8 +683,8 @@ in
-- treesitter -- treesitter
require('nvim-treesitter.configs').setup { require('nvim-treesitter.configs').setup {
parser_install_dir = "~/.local/share/nvim/site/parser/", -- parser_install_dir = "~/.local/share/nvim/site/parser/",
ensure_installed={'nix', 'clojure', 'python', 'fennel', 'lua', 'html', 'css', 'regex', 'supercollider', 'beancount'}, -- ensure_installed={'nix', 'clojure', 'python', 'fennel', 'lua', 'html', 'css', 'regex', 'supercollider', 'beancount', 'janet'},
highlight = { enabled = true, additional_vim_regex_highting = true, }, highlight = { enabled = true, additional_vim_regex_highting = true, },
textobjects = { enabled = true }, textobjects = { enabled = true },
} }
@ -759,6 +797,7 @@ in
['<F2>'] = map_expr('s.meter'), ['<F2>'] = map_expr('s.meter'),
} }
} }
-- You gotta run :SCNvimGenerateAssets for this first
-- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets()) -- require("luasnip").add_snippets("supercollider", require("scnvim/utils").get_snippets())
-- zen mode -- zen mode
@ -806,21 +845,26 @@ in
} }
require('twilight').setup{} require('twilight').setup{}
-- hologram
require('hologram').setup{
auto_display = false -- WIP automatic markdown image display, may be prone to breaking
}
EOF EOF
''; '';
extraPackages = with pkgs // customPlugins; [ extraPackages = with pkgs // customPlugins; [
# used to compile tree-sitter grammar # used to compile tree-sitter grammar
tree-sitter
python-with-my-packages python-with-my-packages
nodejs nodejs
clojure-lsp clojure-lsp
clojure clojure
rnix-lsp nil
terraform-lsp terraform-lsp
rust-analyzer rust-analyzer
clj-kondo clj-kondo
zls zls
gopls
gcc gcc
nodePackages_latest.pyright nodePackages_latest.pyright
shellcheck shellcheck
@ -828,7 +872,8 @@ in
statix statix
nodePackages.typescript nodePackages.typescript
nodePackages.typescript-language-server nodePackages.typescript-language-server
sumneko-lua-language-server luajitPackages.lua-lsp
fennel-ls
]; ];
plugins = with pkgs.vimPlugins // customPlugins; [ plugins = with pkgs.vimPlugins // customPlugins; [
@ -845,7 +890,7 @@ in
telescope-nvim telescope-nvim
plenary-nvim plenary-nvim
nvim-navic nvim-navic
nvim-treesitter (nvim-treesitter.withPlugins (p: [ p.nix p.clojure p.python p.fennel p.lua p.html p.css p.regex p.supercollider p.beancount p.markdown p.glsl p.yaml p.toml p.dockerfile p.json ]))
nvim-treesitter-context nvim-treesitter-context
my-fterm my-fterm
barbar-nvim barbar-nvim
@ -855,7 +900,8 @@ in
nvim-peekup nvim-peekup
zen-mode-nvim zen-mode-nvim
twilight-nvim twilight-nvim
lspsaga-nvim my-lspsaga
vim-dasht
# language # language
vim-nix vim-nix
@ -870,6 +916,7 @@ in
vimwiki vimwiki
taskwiki taskwiki
vim-zettel vim-zettel
hologram-nvim
# lsp stuff # lsp stuff
# nvim-lint # nvim-lint

View file

@ -0,0 +1,9 @@
{
"console.log": {
"prefix": "clog",
"body": [
"console.log('$1')"
],
"description": "Log output to console"
}
}

View file

@ -0,0 +1,10 @@
{
home.file.".ssh/config".text = ''
Host mossnet.lan
ForwardAgent Yes
Host sealight.xyz
ForwardAgent Yes
Host git.sealight.xyz
ForwardAgent Yes
'';
}

View file

@ -0,0 +1,39 @@
{ pkgs, ... }:
let
name = "kitaab-sync";
# Note this will fail if index.wiki is open in vim while this runs
mkStartScript = name: pkgs.writeShellScript "${name}.sh" ''
# set -euo pipefail # Sometimes vimwiki is open and that causes `vimwiki tags rebuild` to fail, we still want to push to git in those cases
PATH=/run/current-system/sw/bin:/etc/profiles/per-user/anish/bin:$PATH
cd /home/anish/kitaab/vimwiki
vimwiki tags rebuild
cd ..
pushd kalpana/
${pkgs.luaPackages.fennel}/bin/fennel main.fnl build
popd
pushd vimwiki/
git add -A .
popd
git diff-index --quiet HEAD || git commit -m 'syncing kitaab' # if nothing, don't exit 1
git push
exit 0
'';
in
{
systemd.user.services.kitaab-sync = {
Service = {
ExecStart = "${mkStartScript name}";
Path = [ pkgs.luaPackages.fennel ];
};
};
systemd.user.timers.kitaab-sync = {
Install = {
WantedBy = [ "timers.target" ];
PartOf = [ "kitaab-sync.service" ];
};
Timer = {
OnCalendar = [ "hourly" ];
};
};
}

View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
task rc.bulk=0 rc.confirmation=off rc.dependency.confirmation=off rc.recurrence.confirmation=off "$@" modify -idea +backlog

View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
task rc.bulk=0 rc.confirmation=off rc.dependency.confirmation=off rc.recurrence.confirmation=off "$@" modify -idea -backlog

View file

@ -0,0 +1,3 @@
#!/usr/bin/env bash
task rc.bulk=0 rc.confirmation=off rc.dependency.confirmation=off rc.recurrence.confirmation=off "$@" modify +idea -backlog

View file

@ -34,16 +34,16 @@ def write_note(task_id: int):
if not os.path.exists(notes_file): if not os.path.exists(notes_file):
logging.info("Adding description to empty notes file") logging.info("Adding description to empty notes file")
task_description = os.popen(f"task _get {task_id}.description").read() task_description = os.popen(f"task _get {task_id}.description").read()
task_project = os.popen(f"task _get {task_id}.project").read().strip("\n") task_project = os.popen(f"task _get {task_id}.project").read().strip("\n").replace(".", ":")
task_tags = os.popen(f"task _get {task_id}.tags").read().split(",") task_tags = os.popen(f"task _get {task_id}.tags").read().split(",")
if len(task_tags): if len(task_tags):
task_tags = ":".join(task_tags).strip("\n") + ":" task_tags = ":".join(task_tags).strip("\n") + ":"
time = datetime.datetime.now().strftime("%y-%m-%d %H:%M") time = datetime.datetime.now().strftime("%y-%m-%d %H:%M")
with open(notes_file, "w") as f: with open(notes_file, "w") as f:
f.write(f"%title: {task_description}") f.write(f"%title {task_description}")
f.write(f":task:{task_project}:{task_tags if len(task_tags) else ''}\n") f.write(f":task:{task_project}:{task_tags if len(task_tags) else ''}\n")
f.write(f"%date: {time}\n\n") f.write(f"%date {time}\n\n")
f.flush() f.flush()
os.execlp(EDITOR, EDITOR, notes_file) os.execlp(EDITOR, EDITOR, notes_file)

View file

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIE/zCCAuegAwIBAgIUTLEuHYBh/sST/IrIhs+pWjDjW3UwDQYJKoZIhvcNAQEM
BQAwFjEUMBIGA1UEAxMLMTkyLjE2OC4xLjYwIBcNMjEwMjEzMDUzODUxWhgPOTk5
OTEyMzEyMzU5NTlaMBYxFDASBgNVBAMTCzE5Mi4xNjguMS42MIICIjANBgkqhkiG
9w0BAQEFAAOCAg8AMIICCgKCAgEA8ZyNGBoudva5KAe1F281Fe3u91whLPB7SWv4
zvN6n81NaMtl+rkfcO5GrYSbtemeQUz04N9dUIRABPyHGO+y0gQn/1p1KMdFzhH1
wDR45h/Eo7+U+2Y/qjyvdjNU9aPe5yymuqSm0cTdFbRkXBoZDSDrwA0U078oYCBo
yDxubKK7H7jWlSVyaBmsWDA72qdZhcOGKy6YoIEiT18V/57wTXBacBZvs3ORbOR6
SMPjq0Pr32+kDriRbb9lQ9TAAGLE51hM8IBMnAZVvgS5GQ1y8elH4WJc7caom5B3
l1MVQKEtgxU+QA4ZqGr9y7H4ey4Xf0V9pvrnsUTu1zCz+P4wd8jS6toxCnn8A8Tq
c3ytA7t3o7BntLSWeQV5LKEiXqF3n3njqXk5Z0ZxDkI+FkhbnOytwGvUEpanTS1d
z3EyZA8h1huoDdTmL1hVrg9pIaFJG5S9GuwcJiFPFo0QN6lcbhJmKrCOzPKb8Kwn
zhymN7vtskSeqPZnQX+/tGupMzeITwcudoBg7zRUNKikIsTwFze+QV+puGFCjH+B
BIe0NQ+rzpWOyI7FDYIMb5q+/PJKTkH2Bu5qYhgebzdCxKcJGBNoWsgzvl+tofQw
XchzIqR35xbkmvLeuIIABd8BKaowrAUGrRxtp7IZqxcR3XxH1RIimkHzeRHTphU2
oycB3eMCAwEAAaNDMEEwDwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwQA
MB0GA1UdDgQWBBQBl2OoCoAweUqsfVQNmL9H3jtl2DANBgkqhkiG9w0BAQwFAAOC
AgEAypV1zutIu7an9tansll20LH2WMAHqi5JrALPBCO9yTqnCS3xZg8VZott/qxm
/SsdlhKtekpvljiQhKqB4wROTf26GjxB9iAzdfxAZEcpYWkyXQ6qzDpjIHLLB3X2
31KHbMc63GOI4wmpGY532tt3qDb+VhgfK25GyvUvvw5qvFsYeGHdSD/HIEJHKlOK
8esaF2/r+wuOWABbbmSBaCtR8H8T4Z/B5l6PoVft9uu8IQbtuhiDn08mZHat8tUq
nxm3O1JsV4ZNtvqh5st1Qn32f7buM6AFMhMy9bcXwR33TJBuv994zRjJQYk+FKzE
UzrWl9mlglWV34P0+xMxpDFEgQvkJAFmdhcVsZlDwILWzEa/ZrS2EQGsEuzHbfFo
oVQuXjzQkX504kAypwQBwbqPfwwYEev7EPVOj32/ke1TzBLaqqJ5AMABShOUJD3L
pNOWMD3B23lRDll2f/Tkhqq4qriqWmtn7urC5ga6AlnAUueiORHTTcA9XBuAz68q
dVfU3cIwwnGhDAYUB27yeb0mhPGnTz2Xr4tn8TLrL7c0tXZPjDCttr6hUnB+X/Yx
tBxT1fJMZR7lzRMvnLJJQKC5rVKE4AAy+FJb3JvhQw01CF4odCmgWT3y+MG4RxnN
sqTWkKoE6bRT9rnRAG8EntRycibGKH0b1PhpY8ngOgMbfCw=
-----END CERTIFICATE-----

View file

@ -1,9 +1,19 @@
{ pkgs, config, lib, ... }: { pkgs, config, lib, ... }:
{ {
# If you're setting up taskwarrior again, there's a task-setup.sh script in seafile
home.file = { home.file = {
# Because the below is inconsistent, I turn it off once I have a copy in place.
".taskrc".enable = true;
# WARN ugly hack
# taskwarrior needs write access to this file for centexts
# this way, we get a copy of the file, and we make sure it's writable
".taskrc".source = ./taskrc; ".taskrc".source = ./taskrc;
# ".taskrc".executable = true;
# ".taskrc".onChange = "cp ~/.taskrc ~/.taskrc2;rm ~/.taskrc;mv ~/.taskrc2 ~/.taskrc;chmod +w ~/.taskrc";
".task/keys/ca.cert".source = ./ca.cert;
".task/keys/public.cert".source = ./public.cert;
".local/bin/task-note".source = ./bin/task-note.py; ".local/bin/task-note".source = ./bin/task-note.py;
".local/bin/set-idea".source = ./bin/set-idea.sh;
}; };
} }

View file

@ -0,0 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIFRDCCAyygAwIBAgIUCsfV17Ag4utaNHY9sv6x7g/Z3bgwDQYJKoZIhvcNAQEM
BQAwFjEUMBIGA1UEAxMLMTkyLjE2OC4xLjYwIBcNMjEwMjEzMDUzODU0WhgPOTk5
OTEyMzEyMzU5NTlaMCgxFDASBgNVBAMTCzE5Mi4xNjguMS42MRAwDgYDVQQKEwdt
b3NzbmV0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA23j6Xo+BlPpM
APbncIztaYOfL02lvCOhbx5sxPk6TH5dIxzkBAc3T9X6uY+hTY36QT+SjN5z0EBi
UghxwMM8r2G4ip3XLEFgyFDuDzVgRRuGBbSGtOEIqt49lvmBEWKaxDdYftdlDpKq
qV8NlQJJnBJ9cNZlWzlheRALHMvCUsfnX60piWbQjYrq6j+lF9VjUKUClD92/jhS
LaeaQ6vMlCabYNOf+vq8J3L2oRwHkLMPHBa/a5vNT3bL8Q/Sjuegi+zD68k/fobt
Y7gYL/qyhrFfIvGyN0Jf92DTKdj+1ma3kIaG+REeAx5W8NtRdfnSlS+DA5O0mp0P
oMZICs0Xbq474XYkhBoz7smWA4DLT86on7qcCo24CvII9YU0VDYHNtnDi8CaStea
dvGFDiQS5X3Awwsgt5OWJSgBx+NL9piiZq9Eu5E3CGpoYNiTCANrRV21qmyf090h
md01QUU/f1IMa+wBgryTW94OUhSMmknB9roFAmQaD9Xnj6ecGJkq2ZiytpJ37QiV
8h2ZM9K1PUD4/QulCG/U4IG1II7ef1IUyEFpj6BB7CGCHq+qJ7QKT6Kc/quEewHB
eUjG+FvSmCCgfVf/hqYvul7ybbiqMgCSTSziKF7tN8DuFfIZo9EGdckKXxBgQ7ua
BRVnSZw2vh8nJ8jtGkrw/grKwHL/yA0CAwEAAaN2MHQwDAYDVR0TAQH/BAIwADAT
BgNVHSUEDDAKBggrBgEFBQcDAjAPBgNVHQ8BAf8EBQMDB6AAMB0GA1UdDgQWBBQi
MnF9Np64W1zshqQxe8Cgvm8hFDAfBgNVHSMEGDAWgBQBl2OoCoAweUqsfVQNmL9H
3jtl2DANBgkqhkiG9w0BAQwFAAOCAgEAsNqR/SziOtCRS+n7FGxJ+3FpfACqV4Yl
MDTbpRe0qUcbMDetWZALdPS5gNW/4rj2cpacd3eQI6qRLtUW/l8QGqZl8OjslA2X
/N+9Alza8D+cv6Almx1TclcYJF/Z0NneJ4DgdFXJAPK3zf5eD73N/7EohNWy70Bj
J/4cmYL3T1Pq/FhN/9DV9HoSaRxy9naRjZ3dZXC4CgFRExXw+sEHLDzOHrLDz2xN
4qOjYUH3I1rGWXsSGRFztgNTnA02hPxG1VHzmTvwPjoBxn2/QGTMuXnk8xQGGtdy
G8oav2RLBqvh0AD4fqd2fnMezJiRipXzYmWb1bySe48HRtHJrZ/aQQrUlPdNQwAe
EeixS97JEdBqtag41VhRBFxF9nML8ozA6cgj+Jm2M6OGU+M3tVhioEiuKPm6jXgl
3v8AA2CQrSJjhkTzinxE4FXa9O8INwziHSCE3GNIZaDCMYj7R8tTVcLaQWzUtdj/
i+0fI61n3ZOabvhLXttsdrtqcfNbrxCBVezoweg2RrVFcJc2GojCwJWt6a0cO+69
ggHZgpAwXsMmyMhhCbBXhnxBrsuGbN7f3YN2ty2veeFtp8uDvjCqmgJ5AG32w5E4
Ck9Rup6lwgq3YTQ4pTxl2y26HinobPrMzsZiWkZhN7elnVZL00kSF2Qn6x6xuAap
Z5oPkwZtYnM=
-----END CERTIFICATE-----

View file

@ -15,7 +15,7 @@ data.location=~/.task
taskd.server=task.mossnet.lan:53589 taskd.server=task.mossnet.lan:53589
#taskd.server=10.0.69.4:53589 #taskd.server=10.0.69.4:53589
taskd.ca=~/.task/keys/ca.cert taskd.ca=~/.task/keys/ca.cert
taskd.key=~/.task/keys/private.key taskd.key=/run/agenix/taskwarrior-private
taskd.certificate=~/.task/keys/public.cert taskd.certificate=~/.task/keys/public.cert
taskd.trust=ignore hostname taskd.trust=ignore hostname
taskd.credentials=mossnet\/anish\/1647259c-e340-405c-a38b-11ac18e34688 taskd.credentials=mossnet\/anish\/1647259c-e340-405c-a38b-11ac18e34688
@ -29,7 +29,7 @@ taskd.credentials=mossnet\/anish\/1647259c-e340-405c-a38b-11ac18e34688
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-green-256.theme #include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-green-256.theme
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-blue-256.theme #include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-blue-256.theme
# TODO this needs to be not a hardlink but a nix link # TODO this needs to be not a hardlink but a nix link
include /nix/store/64nvv0ac2dr8rdz2414f53x97j3msiz0-taskwarrior-2.6.2/share/doc/task/rc/dark-violets-256.theme # include /nix/store/64nvv0ac2dr8rdz2414f53x97j3msiz0-taskwarrior-2.6.2/share/doc/task/rc/dark-violets-256.theme
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-yellow-green.theme #include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-yellow-green.theme
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-256.theme #include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-256.theme
#include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-blue-256.theme #include /nix/store/nv662d85k32kkpqidrj64qy1lnihac4c-taskwarrior-2.5.3/share/doc/task/rc/dark-gray-blue-256.theme
@ -42,12 +42,11 @@ news.version=2.6.0
## Contexts ## Contexts
context.poor.read=-purchase context.poor.read=-purchase
context.dev.read=+dev context.dev.read=+dev or +ops -work
context.ops.read=+ops context.home.read=-work
context.bucket.read=+in context.work.read=+work
context.focused=(priority:H or priority:M) -idea -backlog -finances urgency > 5.0 context.work.write=+work
# context.work=+Work -idea -personal context.bucket.read=+idea
# context.offwork=-Work
## Reports ## Reports
@ -59,17 +58,35 @@ report.list.labels=ID,P,Project,Tags,R,Sch,Due,Until,Description
report.in.columns=id,project,tags,description report.in.columns=id,project,tags,description
report.in.labels=ID,Proj,Tags,Description report.in.labels=ID,Proj,Tags,Description
report.in.description=Inbox report.in.description=Inbox
report.in.filter=status:pending limit:page (+in) report.in.filter=status:pending limit:page (+idea)
# Backlog
report.backlog.columns=id,priority,project,tags,recur.indicator,scheduled.countdown,due,until.remaining,description.count
report.backlog.labels=ID,P,Project,Tags,R,Sch,Due,Until,Description
report.backlog.description=backlog
report.backlog.filter=status:pending limit:page (+backlog)
report.backlog.sort=start-,due+,project+/,urgency-
# Unblocked # Unblocked
report.unblocked.labels=ID,Deps,Proj,Tags,Due,Active,Description report.unblocked.labels=ID,Deps,Proj,Tags,Due,Active,Description
report.unblocked.columns=id,depends,project,tags,due,start.active,description report.unblocked.columns=id,depends,project,tags,due,start.active,description
# Next # Next
report.next.filter=(status:pending -in -backlog pro.not:ideas limit:0) # It's not a good idea to filter this view, since modify depends on the next view
report.next.filter=(status:pending limit:0) # pro.not:ideas -idea -backlog
report.next.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description report.next.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description
report.next.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description report.next.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description
# Everything, including inbox
report.every.filter=(status:pending limit:0)
report.every.labels=ID,Active,Deps,P,Project,Tag,Recur,S,Due,Until,Description
report.every.columns=id,start.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description
report.poms.filter=(status:pending -idea -backlog -BLOCKED)
report.poms.labels=UUID,ID,Project,Tag,Description
report.poms.columns=uuid,id,project,tags,description
report.poms.sort=start+,urgency+
# Urgency # Urgency
urgency.user.project.wait.coefficient=-10.0 urgency.user.project.wait.coefficient=-10.0
urgency.user.project.craft.coefficient=1.9 urgency.user.project.craft.coefficient=1.9
@ -78,6 +95,11 @@ urgency.user.tag.think.coefficient=-7.0
urgency.user.tag.purchase.coefficient=-1.2 urgency.user.tag.purchase.coefficient=-1.2
urgency.user.project.curve.glam.coefficient=-1.3 urgency.user.project.curve.glam.coefficient=-1.3
# UDAs
uda.taskwarrior-tui.shortcuts.1=~/.local/bin/task/set-focus.sh
uda.taskwarrior-tui.shortcuts.2=~/.local/bin/task/set-backlog.sh
uda.taskwarrior-tui.shortcuts.3=~/.local/bin/task/set-idea.sh
# Colors # Colors
color.project.chores=blue color.project.chores=blue
color.tag.dev=cyan color.tag.dev=cyan

View file

@ -11,13 +11,15 @@
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
# No systemd emergency mode (can't reliably be accessed over SSH)
systemd.enableEmergencyMode = false;
# Use the GRUB 2 boot loader. # Use the GRUB 2 boot loader.
boot.loader.efi.canTouchEfiVariables = false; boot.loader.efi.canTouchEfiVariables = false;
boot.loader.efi.efiSysMountPoint = "/boot/efi"; boot.loader.efi.efiSysMountPoint = "/boot/efi";
boot.loader.grub = { boot.loader.grub = {
enable = true; enable = true;
device = "nodev"; device = "nodev";
version = 2;
efiSupport = true; efiSupport = true;
enableCryptodisk = true; enableCryptodisk = true;
efiInstallAsRemovable = true; efiInstallAsRemovable = true;
@ -28,6 +30,16 @@
"/keyfile1.bin" = /etc/secrets/initrd/keyfile1.bin; "/keyfile1.bin" = /etc/secrets/initrd/keyfile1.bin;
}; };
# Remote SSH unlock
boot.initrd.network.enable = true;
boot.initrd.network.ssh = {
enable = true;
port = 22;
authorizedKeys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve " ];
hostKeys = [ "/etc/secrets/initrd/ssh_host_ed25519_key" ]; # create this file with `ssh-keygen -t ed25519 -N "" -f /etc/secrets/initrd/ssh_host_ed25519_key`
};
boot.initrd.availableKernelModules = [ "igc" "iwlwifi" ];
boot.initrd.luks.devices = { boot.initrd.luks.devices = {
"root" = { "root" = {
#name = "root"; #name = "root";
@ -73,16 +85,13 @@
networking.useDHCP = false; networking.useDHCP = false;
networking.interfaces.wlp3s0.useDHCP = true; networking.interfaces.wlp3s0.useDHCP = true;
# Set your time zone.
time.timeZone = "Australia/Brisbane";
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh.enable = true; services.openssh.enable = true;
networking.firewall.allowedTCPPorts = [ 22 ]; networking.firewall.allowedTCPPorts = [ 22 ];
sound.enable = false; sound.enable = false;
programs.gnupg.agent.enable = true; programs.gnupg.agent.enable = true;
programs.gnupg.agent.pinentryFlavor = "curses"; programs.gnupg.agent.pinentryPackage = pkgs.pinentry-curses;
programs.gnupg.agent.enableSSHSupport = true; programs.gnupg.agent.enableSSHSupport = true;
# This value determines the NixOS release with which your system is to be # This value determines the NixOS release with which your system is to be

View file

@ -1,5 +1,4 @@
{ self, pkgs, ... }: { self, pkgs, ... }: {
{
imports = [ imports = [
./configuration.nix ./configuration.nix
../profiles/core ../profiles/core
@ -7,31 +6,33 @@
../profiles/taskd ../profiles/taskd
../profiles/shaarli ../profiles/shaarli
../profiles/dns ../profiles/dns
../profiles/monitoring # ../profiles/monitoring
../profiles/nfs ../profiles/nfs
../profiles/gonic ../profiles/gonic
../profiles/headphones # ../profiles/headphones # TODO broken on 23.11, see: https://github.com/rembo10/headphones/issues/3320
../profiles/radicale ../profiles/radicale
../profiles/seafile # ../profiles/seafile # waiting for https://github.com/NixOS/nixpkgs/pull/249523 to be merged
../profiles/syncthing ../profiles/syncthing
../profiles/dhyan ../profiles/dhyan
../profiles/calibre ../profiles/calibre
../profiles/wallabag ../profiles/wallabag
../profiles/finance ../profiles/finance
../profiles/sync/website
../profiles/grasp
# ../profiles/archivebox # ../profiles/archivebox
# ../profiles/woodpecker-agent
# ../profiles/jellyfin
../profiles/ulogger-server
../profiles/photoprism # Replace with immich
../profiles/gpodder
#../profiles/postgres_upgrade_script
]; ];
# For some reason this doesn't work in the profile, but does over here??
# Something weird in the way I'm importing nixpkgs in the profile or something
services.grasp.enable = true;
services.grasp.path = "/home/anish/kitaab/grasp/grasp.wiki";
services.grasp.user = "anish";
# Backups # Backups
age.secrets.borg-password.file = "${self}/secrets/borg-password.age"; age.secrets.borg-password.file = "${self}/secrets/borg-password.age";
services.postgresqlBackup = { services.postgresqlBackup = {
enable = true; enable = true;
databases = [ "wallabag" ]; databases = [ "wallabag" "photoprism" "ulogger" ];
location = "/var/backup/postgresql"; location = "/var/backup/postgresql";
}; };
mossnet.backup = { mossnet.backup = {
@ -51,8 +52,40 @@
# seafile # seafile
}; };
services.transmission = {
enable = true;
settings = {
rpc.bind-address = "0.0.0.0";
download-dir = "/mnt/two/new-music";
};
};
services.nginx.virtualHosts."transmission.mossnet.lan" = {
enableACME = false;
forceSSL = false;
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:9091/;
proxy_set_header X-Forwarded-Host $host;
'';
};
};
services.nginx.virtualHosts."mast.mossnet.lan" = {
enableACME = false;
forceSSL = false;
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:5731/;
proxy_set_header X-Forwarded-Host $host;
'';
};
};
age.secrets.box-wg.file = "${self}/secrets/box-wg.age"; age.secrets.box-wg.file = "${self}/secrets/box-wg.age";
age.secrets.box-wg.owner = "anish"; age.secrets.box-wg.owner = "anish";
age.secrets.borg-key.file = "${self}/secrets/borg-key.age";
mossnet.wg = { mossnet.wg = {
enable = true; enable = true;
ips = [ "10.0.69.4/24" ]; ips = [ "10.0.69.4/24" ];

View file

@ -30,18 +30,33 @@
{ {
device = "/dev/disk/by-uuid/0f857c6e-509d-436f-9e78-bc25f1b0d23b"; device = "/dev/disk/by-uuid/0f857c6e-509d-436f-9e78-bc25f1b0d23b";
fsType = "ext4"; fsType = "ext4";
options = [
"noatime"
"nodiratime"
"nofail"
];
}; };
fileSystems."/mnt/two" = fileSystems."/mnt/two" =
{ {
device = "/dev/disk/by-uuid/5bc894bf-ed87-4c30-aab4-87e154e0cd08"; device = "/dev/disk/by-uuid/5bc894bf-ed87-4c30-aab4-87e154e0cd08";
fsType = "ext4"; fsType = "ext4";
options = [
"noatime"
"nodiratime"
"nofail"
];
}; };
fileSystems."/mnt/three" = fileSystems."/mnt/three" =
{ {
device = "/dev/disk/by-uuid/0be3ded1-9c8b-40aa-94ca-dc2297d5988e"; device = "/dev/disk/by-uuid/0be3ded1-9c8b-40aa-94ca-dc2297d5988e";
fsType = "ext4"; fsType = "ext4";
options = [
"noatime"
"nodiratime"
"nofail"
];
}; };
swapDevices = swapDevices =

View file

@ -8,11 +8,9 @@
]; ];
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
networking.hostName = "cube"; # Define your hostname. networking.hostName = "cube"; # Define your hostname.
time.timeZone = "Australia/Brisbane";
networking.useDHCP = false; networking.useDHCP = false;
networking.interfaces.ens3.useDHCP = true; networking.interfaces.ens3.useDHCP = true;

View file

@ -6,4 +6,11 @@
../profiles/server ../profiles/server
../profiles/site ../profiles/site
]; ];
services.nginx.enable = true;
services.nginx.virtualHosts."coaching.lakhwara.com" = {
forceSSL = true;
enableACME = true;
locations."/" = { root = "/var/lib/coaching"; index = "/index.html"; };
};
} }

View file

@ -1,7 +1,6 @@
{ {
imports = [ ./hardware-configuration.nix ]; imports = [ ./hardware-configuration.nix ];
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
# Define on which hard drive you want to install Grub. # Define on which hard drive you want to install Grub.
boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only boot.loader.grub.device = "/dev/sda"; # or "nodev" for efi only
@ -28,8 +27,6 @@
networking.hostName = "curve"; networking.hostName = "curve";
#networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. #networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
time.timeZone = "Australia/Brisbane";
# Select internationalisation properties. # Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
# console = { # console = {
@ -39,5 +36,5 @@
sound.enable = true; sound.enable = true;
services.xserver.libinput.enable = true; services.libinput.enable = true;
} }

View file

@ -1,31 +1,45 @@
{ self, pkgs, ... }: { self, pkgs, ... }: {
{
imports = [ imports = [
./configuration.nix ./configuration.nix
../users/anish ../users/anish
../profiles/core ../profiles/core
../profiles/bluetooth ../profiles/bluetooth
../profiles/music ../profiles/music
../profiles/sync/kitaab
../profiles/sync/website
../profiles/sync/cal ../profiles/sync/cal
../profiles/wifi ../profiles/wifi
../profiles/desktop ../profiles/desktop
../profiles/mimetypes ../profiles/mimetypes
../profiles/syncthing ../profiles/syncthing
../profiles/mossnet-hosts ../profiles/mossnet-hosts
# ../profiles/fly-wg
# ../profiles/kuberenetes
# ../profiles/mount-mossnet
]; ];
# home-manager.users.anish = import ../../home/gui; # temporarily allow ssh access for work, to be able to do deploy new services
services.openssh = {
enable = true;
settings.PasswordAuthentication = false;
settings.PermitRootLogin = "no";
};
# import profiling tools
programs.systemtap.enable = true;
virtualisation.docker.enable = true;
virtualisation.docker.storageDriver = "btrfs";
environment.systemPackages = with pkgs; [ docker-compose ];
# Speed up boot by removing dependency on network # Speed up boot by removing dependency on network
systemd = { systemd = {
targets.network-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"] targets.network-online.wantedBy =
services.NetworkManager-wait-online.wantedBy = pkgs.lib.mkForce [ ]; # Normally ["network-online.target"] pkgs.lib.mkForce [ ]; # Normally ["multi-user.target"]
services.NetworkManager-wait-online.wantedBy =
pkgs.lib.mkForce [ ]; # Normally ["network-online.target"]
}; };
programs.gnupg.agent.enable = true; programs.gnupg.agent.enable = true;
programs.gnupg.agent.pinentryFlavor = "gnome3"; programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;
fileSystems."/mnt/ftp" = { fileSystems."/mnt/ftp" = {
device = "192.168.1.240:/home/ftp"; device = "192.168.1.240:/home/ftp";
@ -56,8 +70,15 @@
# lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?) # lazy enable of ports necessary for KDE connect which is installed via cli home profile (for some reason?)
networking.firewall = { networking.firewall = {
allowedTCPPortRanges = [{ from = 1714; to = 1764; }]; allowedTCPPorts = [ 22 ]; # allow ssh
allowedUDPPortRanges = [{ from = 1714; to = 1764; }]; allowedTCPPortRanges = [{
from = 1714;
to = 1764;
}];
allowedUDPPortRanges = [{
from = 1714;
to = 1764;
}];
}; };
age.secrets.curve-wg.file = "${self}/secrets/curve-wg.age"; age.secrets.curve-wg.file = "${self}/secrets/curve-wg.age";
@ -69,10 +90,11 @@
}; };
age.secrets.borg-password.file = "${self}/secrets/borg-password.age"; age.secrets.borg-password.file = "${self}/secrets/borg-password.age";
age.secrets.borg-key.file = "${self}/secrets/borg-key.age";
mossnet.backup = { mossnet.backup = {
enable = true; enable = true;
name = "curve"; name = "curve";
paths = [ "/home/anish/usr" ]; paths = [ "/home/anish/usr" "/home/anish/.ssh" ];
}; };
# enable adb # enable adb
@ -81,7 +103,8 @@
#virtualisation.docker.enable = true; #virtualisation.docker.enable = true;
boot.blacklistedKernelModules = [ "qcserial" ]; boot.blacklistedKernelModules = [ "qcserial" ];
# Used for packer Capsul # Used for packer Capsul
users.users.anish.extraGroups = [ "adbusers" "wheel" "plugdev" "libvertd" ]; users.users.anish.extraGroups =
[ "adbusers" "wheel" "plugdev" "libvertd" "docker" ];
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
hardware.keyboard.zsa.enable = true; hardware.keyboard.zsa.enable = true;
services.udev.extraRules = '' services.udev.extraRules = ''

View file

@ -5,47 +5,43 @@
{ {
imports = imports =
[ [ (modulesPath + "/installer/scan/not-detected.nix")
(modulesPath + "/installer/scan/not-detected.nix")
]; ];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ]; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ "dm-snapshot" ]; boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ { device = "/dev/disk/by-uuid/e1268753-4f18-4e6f-8edb-d4724ad8eb4a";
device = "/dev/disk/by-uuid/74ba39ee-35cd-4b87-9ee9-651384fa55bd";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=root" ]; options = [ "subvol=root" ];
}; };
fileSystems."/home" = fileSystems."/home" =
{ { device = "/dev/disk/by-uuid/e1268753-4f18-4e6f-8edb-d4724ad8eb4a";
device = "/dev/disk/by-uuid/74ba39ee-35cd-4b87-9ee9-651384fa55bd";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=home" ]; options = [ "subvol=home" ];
}; };
fileSystems."/boot" = fileSystems."/boot" =
{ { device = "/dev/disk/by-uuid/8244-A184";
device = "/dev/disk/by-uuid/87DA-98E7";
fsType = "vfat"; fsType = "vfat";
}; };
swapDevices = swapDevices =
[{ device = "/dev/disk/by-uuid/c36e3ba9-8eee-4fbf-837c-7e1cfda33f09"; }]; [ { device = "/dev/disk/by-uuid/e220fea6-cf3b-4687-bfe1-9cf6d3ba57f7"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction # still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
# networking.useDHCP = lib.mkDefault true; networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -0,0 +1,337 @@
# Auto-generated using compose2nix v0.1.6.
{ pkgs, lib, ... }:
{
# Runtime
virtualisation.podman = {
enable = true;
autoPrune.enable = true;
dockerCompat = true;
defaultNetwork.settings = {
# Required for container networking to be able to use names.
dns_enabled = true;
};
};
virtualisation.oci-containers.backend = "podman";
# Containers
virtualisation.oci-containers.containers."blackbird-api" = {
image = "";
environment = {
API_DOMAIN = "http://localhost:3000";
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
JWT_SECRET = "test1234";
MEDIA_LOCATION = "./data/media/";
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
MINIO_HOST = "minio";
MINIO_PORT = "9000";
MINIO_ROOT_PASSWORD = "password";
MINIO_ROOT_USER = "blackbird";
NODE_ENV = "development";
PORT = "3000";
POSTGRES_LOCAL_MACHINE_PORT = "5434";
POSTGRES_PASSWORD = "nomads";
POSTGRES_USER = "nomads";
REACT_APP_API_DOMAIN = "http://localhost:3000";
REDIS_HOST = "redis";
REDIS_PASSWORD = "password";
REDIS_PORT = "6379";
REFRESH_TOKEN_SECRET = "test1234";
STATIC_MEDIA_HOST = "http://localhost:3000";
STRIPE_KEY = "";
};
volumes = [
"/home/anish/.ssh:/root/.ssh:rw"
"/home/anish/usr/mirlo:/var/www/api:rw"
"/home/anish/usr/mirlo/data/media/downloadCache:/data/media/downloadCache:rw"
"/home/anish/usr/mirlo/data/media/incoming:/data/media/incoming:rw"
];
ports = [
"3000:3000/tcp"
];
cmd = [ "/bin/sh" "-c" "yarn && yarn migrate:deploy && yarn dev:api" ];
dependsOn = [
"blackbird-minio"
"blackbird-pgsql"
"blackbird-redis"
];
log-driver = "journald";
extraOptions = [
"--network-alias=api"
"--network=mirlo-api-network"
"--network=mirlo-redis-network"
];
};
systemd.services."podman-blackbird-api" = {
serviceConfig = {
Restart = lib.mkOverride 500 "always";
};
after = [
"podman-network-mirlo-api-network.service"
"podman-network-mirlo-redis-network.service"
];
requires = [
"podman-network-mirlo-api-network.service"
"podman-network-mirlo-redis-network.service"
];
partOf = [
"podman-compose-mirlo-root.target"
];
unitConfig.UpheldBy = [
"podman-blackbird-minio.service"
"podman-blackbird-pgsql.service"
"podman-blackbird-redis.service"
];
wantedBy = [
"podman-compose-mirlo-root.target"
];
};
virtualisation.oci-containers.containers."blackbird-background" = {
image = "";
environment = {
API_DOMAIN = "http://localhost:3000";
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
JWT_SECRET = "test1234";
MEDIA_LOCATION = "./data/media/";
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
MINIO_HOST = "minio";
MINIO_PORT = "9000";
MINIO_ROOT_PASSWORD = "password";
MINIO_ROOT_USER = "blackbird";
NODE_ENV = "development";
PORT = "3000";
POSTGRES_LOCAL_MACHINE_PORT = "5434";
POSTGRES_PASSWORD = "nomads";
POSTGRES_USER = "nomads";
REACT_APP_API_DOMAIN = "http://localhost:3000";
REDIS_HOST = "redis";
REDIS_PASSWORD = "password";
REDIS_PORT = "6379";
REFRESH_TOKEN_SECRET = "test1234";
STATIC_MEDIA_HOST = "http://localhost:3000";
STRIPE_KEY = "";
};
volumes = [
"/home/anish/.ssh:/root/.ssh:rw"
"/home/anish/usr/mirlo:/var/www/api:rw"
"/home/anish/usr/mirlo/data/media/processing:/data/media/processing:rw"
];
dependsOn = [
"blackbird-api"
"blackbird-minio"
"blackbird-pgsql"
"blackbird-redis"
];
log-driver = "journald";
extraOptions = [
"--network-alias=background"
"--network=mirlo-api-network"
"--network=mirlo-redis-network"
];
};
systemd.services."podman-blackbird-background" = {
serviceConfig = {
Restart = lib.mkOverride 500 "always";
};
after = [
"podman-network-mirlo-api-network.service"
"podman-network-mirlo-redis-network.service"
];
requires = [
"podman-network-mirlo-api-network.service"
"podman-network-mirlo-redis-network.service"
];
partOf = [
"podman-compose-mirlo-root.target"
];
unitConfig.UpheldBy = [
"podman-blackbird-api.service"
"podman-blackbird-minio.service"
"podman-blackbird-pgsql.service"
"podman-blackbird-redis.service"
];
wantedBy = [
"podman-compose-mirlo-root.target"
];
};
virtualisation.oci-containers.containers."blackbird-minio" = {
image = "minio/minio";
environment = {
API_DOMAIN = "http://localhost:3000";
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
JWT_SECRET = "test1234";
MEDIA_LOCATION = "./data/media/";
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
MINIO_HOST = "minio";
MINIO_PORT = "9000";
MINIO_ROOT_PASSWORD = "password";
MINIO_ROOT_USER = "blackbird";
PORT = "3000";
POSTGRES_LOCAL_MACHINE_PORT = "5434";
POSTGRES_PASSWORD = "nomads";
POSTGRES_USER = "nomads";
REACT_APP_API_DOMAIN = "http://localhost:3000";
REDIS_HOST = "redis";
REDIS_PASSWORD = "password";
REDIS_PORT = "6379";
REFRESH_TOKEN_SECRET = "test1234";
STATIC_MEDIA_HOST = "http://localhost:3000";
STRIPE_KEY = "";
};
volumes = [
"/home/anish/usr/mirlo/data/minio_storage:/data:rw"
];
ports = [
"9000:9000/tcp"
"9001:9001/tcp"
];
cmd = [ "server" "--console-address" ":9001" "/data" ];
log-driver = "journald";
extraOptions = [
"--network-alias=minio"
"--network=mirlo-api-network:alias=minio"
];
};
systemd.services."podman-blackbird-minio" = {
serviceConfig = {
Restart = lib.mkOverride 500 "no";
};
after = [
"podman-network-mirlo-api-network.service"
];
requires = [
"podman-network-mirlo-api-network.service"
];
partOf = [
"podman-compose-mirlo-root.target"
];
wantedBy = [
"podman-compose-mirlo-root.target"
];
};
virtualisation.oci-containers.containers."blackbird-pgsql" = {
image = "postgres:14-alpine";
environment = {
API_DOMAIN = "http://localhost:3000";
DATABASE_URL = "postgresql://nomads:nomads@pgsql:5432/nomads?schema=public";
JWT_SECRET = "test1234";
MEDIA_LOCATION = "./data/media/";
MEDIA_LOCATION_DOWNLOAD_CACHE = "/data/media/downloadCache";
MEDIA_LOCATION_INCOMING = "/data/media/incoming";
MINIO_HOST = "minio";
MINIO_PORT = "9000";
MINIO_ROOT_PASSWORD = "password";
MINIO_ROOT_USER = "blackbird";
PORT = "3000";
POSTGRES_LOCAL_MACHINE_PORT = "5434";
POSTGRES_PASSWORD = "nomads";
POSTGRES_USER = "nomads";
REACT_APP_API_DOMAIN = "http://localhost:3000";
REDIS_HOST = "redis";
REDIS_PASSWORD = "password";
REDIS_PORT = "6379";
REFRESH_TOKEN_SECRET = "test1234";
STATIC_MEDIA_HOST = "http://localhost:3000";
STRIPE_KEY = "";
};
volumes = [
"/home/anish/usr/mirlo/data/pgsql:/var/lib/postgresql/data:rw"
"/home/anish/usr/mirlo/data/pgsql_backups:/backups:rw"
];
ports = [
"5432:5432/tcp"
];
log-driver = "journald";
extraOptions = [
"--network-alias=pgsql"
"--network=mirlo-api-network:alias=pgsql"
];
};
systemd.services."podman-blackbird-pgsql" = {
serviceConfig = {
Restart = lib.mkOverride 500 "no";
};
after = [
"podman-network-mirlo-api-network.service"
];
requires = [
"podman-network-mirlo-api-network.service"
];
partOf = [
"podman-compose-mirlo-root.target"
];
wantedBy = [
"podman-compose-mirlo-root.target"
];
};
virtualisation.oci-containers.containers."blackbird-redis" = {
image = "redis";
ports = [
"6379:6379/tcp"
];
cmd = [ "redis-server" "--appendonly" "yes" "--requirepass " ];
log-driver = "journald";
extraOptions = [
"--network-alias=redis"
"--network=mirlo-redis-network"
];
};
systemd.services."podman-blackbird-redis" = {
serviceConfig = {
Restart = lib.mkOverride 500 "always";
};
after = [
"podman-network-mirlo-redis-network.service"
];
requires = [
"podman-network-mirlo-redis-network.service"
];
partOf = [
"podman-compose-mirlo-root.target"
];
wantedBy = [
"podman-compose-mirlo-root.target"
];
};
# Networks
systemd.services."podman-network-mirlo-api-network" = {
path = [ pkgs.podman ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStop = "${pkgs.podman}/bin/podman network rm -f mirlo-api-network";
};
script = ''
podman network inspect mirlo-api-network || podman network create mirlo-api-network --opt isolate=true
'';
partOf = [ "podman-compose-mirlo-root.target" ];
wantedBy = [ "podman-compose-mirlo-root.target" ];
};
systemd.services."podman-network-mirlo-redis-network" = {
path = [ pkgs.podman ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStop = "${pkgs.podman}/bin/podman network rm -f mirlo-redis-network";
};
script = ''
podman network inspect mirlo-redis-network || podman network create mirlo-redis-network --opt isolate=true
'';
partOf = [ "podman-compose-mirlo-root.target" ];
wantedBy = [ "podman-compose-mirlo-root.target" ];
};
# Root service
# When started, this will automatically create all resources and start
# the containers. When stopped, this will teardown all resources.
systemd.targets."podman-compose-mirlo-root" = {
unitConfig = {
Description = "Root target generated by compose2nix.";
};
wantedBy = [ "multi-user.target" ];
};
}

View file

@ -8,7 +8,6 @@
# Use the GRUB 2 boot loader. # Use the GRUB 2 boot loader.
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
networking.hostName = "helix"; # Define your hostname. networking.hostName = "helix"; # Define your hostname.
@ -22,8 +21,6 @@
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh.enable = true; services.openssh.enable = true;
services.openssh.passwordAuthentication = false;
services.openssh.permitRootLogin = "no";
sound.enable = false; sound.enable = false;
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.

View file

@ -1,14 +1,19 @@
{ self, profiles, suites, ... }: { self, profiles, suites, pkgs, ... }:
{ {
imports = [ imports = [
./configuration.nix ./configuration.nix
../profiles/core ../profiles/core
../profiles/server ../profiles/server
../profiles/metrics # ../profiles/metrics
../profiles/gitea ../profiles/gitea
# ../profiles/woodpecker-server
../profiles/rss-bridge ../profiles/rss-bridge
../profiles/mount-mossnet # ../profiles/mount-mossnet
../profiles/freshrss ../profiles/freshrss
../profiles/microbin
../profiles/site
# ../profiles/postgres_upgrade_script
]; ];
# Capsul specific # Capsul specific
@ -17,10 +22,31 @@
extraGroups = [ "wheel" ]; extraGroups = [ "wheel" ];
}; };
age.secrets.helix-wg.file = "${self}/secrets/helix-wg.age";
age.secrets.helix-wg.owner = "anish";
mossnet.wg = { mossnet.wg = {
enable = true; enable = true;
ips = [ "10.0.69.5/24" ]; ips = [ "10.0.69.5/24" ];
privateKeyFile = "/home/anish/wg/wg-priv"; privateKeyFile = "/run/agenix/helix-wg";
}; };
services.postgresql.package = pkgs.postgresql_15;
services.postgresqlBackup = {
# TODO needs working wireguard to box
enable = false;
databases = [ "gitea" "freshrss" ]; # "woodpecker"
location = "/mnt/two/postgres";
};
mossnet.backup = {
enable = true;
name = "helix";
paths = [
"/var/lib/gitea"
"/var/lib/freshrss"
# "/var/lib/woodpecker"
"/var/lib/microbin"
];
};
} }

51
hosts/helix/disko.nix Normal file
View file

@ -0,0 +1,51 @@
{ disks ? [ "/dev/vdb" ], ... }: {
disko.devices = {
disk = {
vdb = {
type = "disk";
device = builtins.elemAt disks 0;
content = {
type = "table";
format = "gpt";
partitions = [
{
name = "ESP";
start = "1MiB";
end = "128MiB";
fs-type = "fat32";
bootable = true;
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
}
{
name = "root";
start = "128MiB";
end = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ]; # Override existing partition
subvolumes = {
# Subvolume name is different from mountpoint
"/rootfs" = {
mountpoint = "/";
};
# Mountpoints inferred from subvolume name
"/home" = {
mountOptions = [ "compress=zstd" ];
};
"/nix" = {
mountOptions = [ "compress=zstd" "noatime" ];
};
};
};
}
];
};
};
};
};
}

View file

@ -5,23 +5,27 @@
{ {
imports = imports =
[ [ (modulesPath + "/profiles/qemu-guest.nix")
(modulesPath + "/profiles/qemu-guest.nix")
]; ];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "sr_mod" "virtio_blk" ]; boot.initrd.availableKernelModules = [ "ata_piix" "virtio_pci" "floppy" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ]; boot.kernelModules = [ ];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ { device = "/dev/disk/by-uuid/7c560634-d545-41cc-b375-42ce3037fd73";
device = "/dev/disk/by-uuid/3b8b2c4b-835e-4822-8ac8-0effdc8270d6"; fsType = "ext4";
fsType = "btrfs";
}; };
swapDevices = [ ]; swapDevices = [ ];
nix.settings.max-jobs = lib.mkDefault 1; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
nixpkgs.hostPlatform = "x86_64-linux"; # (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens3.useDHCP = lib.mkDefault true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View file

@ -8,7 +8,6 @@
# Use the GRUB 2 boot loader. # Use the GRUB 2 boot loader.
boot.loader.grub.enable = true; boot.loader.grub.enable = true;
boot.loader.grub.version = 2;
boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only boot.loader.grub.device = "/dev/vda"; # or "nodev" for efi only
networking.hostName = "lituus"; # Define your hostname. networking.hostName = "lituus"; # Define your hostname.

View file

@ -16,8 +16,8 @@
fileSystems."/" = fileSystems."/" =
{ {
device = "/dev/disk/by-uuid/7c560634-d545-41cc-b375-42ce3037fd73"; device = "/dev/disk/by-uuid/3b8b2c4b-835e-4822-8ac8-0effdc8270d6";
fsType = "ext4"; fsType = "btrfs";
}; };
swapDevices = [ ]; swapDevices = [ ];

View file

@ -36,6 +36,7 @@
extraConfig = '' extraConfig = ''
proxy_pass http://localhost:8083/; proxy_pass http://localhost:8083/;
proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Host $host;
client_max_body_size 50M;
''; '';
}; };
}; };

View file

@ -4,9 +4,8 @@ in
{ {
imports = [ ../../users/anish ]; imports = [ ../../users/anish ];
fonts = { fonts = {
fonts = with pkgs; [ powerline-fonts dejavu_fonts ]; packages = with pkgs; [ powerline-fonts dejavu_fonts ];
fontconfig.defaultFonts = { fontconfig.defaultFonts = {
monospace = [ "DejaVu Sans Mono for Powerline" ]; monospace = [ "DejaVu Sans Mono for Powerline" ];
sansSerif = [ "DejaVu Sans" ]; sansSerif = [ "DejaVu Sans" ];
@ -33,7 +32,7 @@ in
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pinentry_gnome pinentry-gnome3
cached-nix-shell cached-nix-shell
]; ];
@ -43,6 +42,8 @@ in
openFirewall = lib.mkDefault false; openFirewall = lib.mkDefault false;
}; };
time.timeZone = "Canada/Pacific";
# programs.gnupg.agent.enable = true; # programs.gnupg.agent.enable = true;
# programs.gnupg.agent.pinentryFlavor = "curses"; # programs.gnupg.agent.pinentryFlavor = "curses";

View file

@ -28,6 +28,10 @@ in
age.secrets.mossnet.file = "${self}/secrets/mossnet.age"; age.secrets.mossnet.file = "${self}/secrets/mossnet.age";
age.secrets.mossnet.owner = "anish"; age.secrets.mossnet.owner = "anish";
# Taskwarrior private key
age.secrets.taskwarrior-private.file = "${self}/secrets/taskwarrior-private.age";
age.secrets.taskwarrior-private.owner = "anish";
# We don't plug USBs into servers # We don't plug USBs into servers
services.devmon.enable = true; services.devmon.enable = true;
@ -40,6 +44,7 @@ in
packages = [ pkgs.dconf ]; packages = [ pkgs.dconf ];
}; };
}; };
programs.dconf.enable = true;
security.pam.services.Default.enableGnomeKeyring = true; security.pam.services.Default.enableGnomeKeyring = true;
security.pam.services.Login.enableGnomeKeyring = true; security.pam.services.Login.enableGnomeKeyring = true;
@ -57,23 +62,23 @@ in
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
unstable.signal-desktop # bridge to sealight? #unstable.sublime-music
unstable.sublime-music
unstable.nheko unstable.nheko
unstable.tootle unstable.signal-desktop
newsflash unstable.tuba
liferea unstable.newsflash
unstable.liferea
unstable.gh
unstable.flyctl
scrot kooha
ripcord light
xfce.orage xfce.orage
feh feh
sxiv sxiv
xkblayout-state xkblayout-state
vcv-rack
zathura zathura
calibre calibre
fractal
mpv mpv
zeal zeal
xclip xclip
@ -81,7 +86,6 @@ in
rofi rofi
rofimoji rofimoji
rofi-calc rofi-calc
eww
obs-studio obs-studio
lightdm lightdm
dunst dunst
@ -93,10 +97,18 @@ in
papirus-icon-theme papirus-icon-theme
calendar-cli calendar-cli
wyrd wyrd
tex # tic-80
tic-80 ytfzf
yt-dlp
]; ];
xdg.portal = {
# Breaks link clicking in nheko
# Portal doesn't seem to find Firefox as an acceptable app to open links?
enable = false;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
xdgOpenUsePortal = false;
};
location.provider = "geoclue2"; location.provider = "geoclue2";
services = { services = {
@ -107,12 +119,15 @@ in
night = 3700; night = 3700;
}; };
}; };
displayManager.defaultSession = "none+bspwm";
xserver = { xserver = {
enable = true; enable = true;
layout = "us,dvorak"; # TODO should be xkb.layout
xkb.layout = "us";
# xkb.variant = "dvorak";
desktopManager.wallpaper.mode = "fill"; desktopManager.wallpaper.mode = "fill";
displayManager = { displayManager = {
defaultSession = "none+bspwm"; # startx.enable = true;
sessionCommands = '' sessionCommands = ''
${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF ${pkgs.xorg.xrdb}/bin/xrdb -merge <<EOF
#define blk #1F2430 #define blk #1F2430
@ -163,10 +178,11 @@ in
*.color239: #565761 *.color239: #565761
*.color240: #6272a4 *.color240: #6272a4
*.color241: #b6b6b2 *.color241: #b6b6b2
EOF
# hotplug # hotplug
connect() { connect() {
# Turn it on if it was off
xrandr --output HDMI-2 --auto
xrandr --output HDMI-2 --same-as eDP-1 xrandr --output HDMI-2 --same-as eDP-1
} }
@ -175,24 +191,7 @@ in
} }
xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect xrandr | grep "HDMI-2 connected" &>>/dev/null && connect || disconnect
EOF
# keyboard on curve is busted
get_keyboard_id() {
xinput list | grep 'AT Translated Set' | cut -f2 | cut -d'=' -f2 | xinput float
}
disconnect_keyboard() {
id=$(get_keyboard_id)
xinput float $id
unset id
}
attach_keyboard() {
id=$(get_keyboard_id)
xinput reattach $id 3
}
disconnect_keyboard
''; '';
lightdm = { lightdm = {
enable = true; enable = true;
@ -215,7 +214,7 @@ in
}; };
}; };
fonts.fonts = with pkgs; [ fonts.packages = with pkgs; [
fira-code fira-code
fira-code-symbols fira-code-symbols
hermit hermit

View file

@ -1,24 +1,31 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
{ let
services.dnsmasq.enable = true; adblockLocalZones = pkgs.stdenv.mkDerivation {
services.dnsmasq.extraConfig = '' name = "unbound-zones-adblock";
domain-needed
no-resolv src = (pkgs.fetchFromGitHub {
local=/lan/ owner = "StevenBlack";
local=/moss/ repo = "hosts";
cache-size=5000 rev = "3.12.21";
addn-hosts=/etc/adblock.hosts sha256 = "Yzr6PY/zqQE+AHH0J6ioHTsgkikM+dz4aelbGpQJa1s=";
''; # TODO find a way to make adblock hosts reproducible and updateable } + "/hosts");
services.dnsmasq.servers = [ "45.90.30.49" "45.90.28.49" "1.1.1.1" "8.8.8.8" ];
# TODO use this list in mossnet-hosts phases = [ "installPhase" ];
networking.hosts = {
"192.168.1.240" = [ installPhase = ''
${pkgs.gawk}/bin/awk '{sub(/\r$/,"")} {sub(/^127\.0\.0\.1/,"0.0.0.0")} BEGIN { OFS = "" } NF == 2 && $1 == "0.0.0.0" { print "local-zone: \"", $2, "\" static"}' $src | tr '[:upper:]' '[:lower:]' | sort -u > $out
'';
};
mossnet = "192.168.1.240"; # The local lan-ip for box
wg-mossnet = "10.0.69.4"; # The wireguard ip for box
mossnet-hosts = [
"mossnet.lan" "mossnet.lan"
"headphones.mossnet.lan"
"links.mossnet.lan" "links.mossnet.lan"
"read.mossnet.lan" "read.mossnet.lan"
"stats.mossnet.lan" "stats.mossnet.lan"
"music.mossnet.lan" "music.mossnet.lan"
"rss.mossnet.lan"
"tasks.mossnet.lan" "tasks.mossnet.lan"
"file.mossnet.lan" "file.mossnet.lan"
"books.mossnet.lan" "books.mossnet.lan"
@ -26,11 +33,57 @@
"paper.mossnet.lan" "paper.mossnet.lan"
"cal.mossnet.lan" "cal.mossnet.lan"
"archive.mossnet.lan" "archive.mossnet.lan"
"headphones.mossnet.lan"
"transmission.mossnet.lan"
"tracks.mossnet.lan"
"grasp.mossnet.lan"
"photos.mossnet.lan"
"pod.mossnet.lan"
"mast.mossnet.lan"
]; ];
"192.168.1.226" = [
"df-web.lan" in {
]; services.unbound = {
enable = true;
settings = {
server = {
include = "${adblockLocalZones}";
prefetch = "yes";
# private-address = "10.0.69.0/8";
# private-address = "192.168.1.0/24";
cache-min-ttl = 0;
serve-expired = "yes";
interface = [ "0.0.0.0" ];
access-control =
[ "127.0.0.0/8 allow" "192.168.1.0/24 allow" "10.0.69.0/24 allow" ];
access-control-view = "10.0.69.0/24 wireguard";
# so-reuseport = "yes";
tls-upstream = "yes";
domain-insecure = "mossnet.lan";
local-zone = ''"mossnet.lan." redirect'';
local-data = ''"mossnet.lan. IN A ${mossnet}"'';
}; };
forward-zone = [{
name = ".";
forward-addr = [
"45.90.28.0#6939b9.dns.nextdns.io"
"1.1.1.1@853#cloudflare-dns.com"
];
# non-tls
# forward-addr = ["45.90.30.49" "45.90.28.49" "1.1.1.1" "8.8.8.8"]
}];
view = {
name = "wireguard";
local-zone = ''"mossnet.lan." redirect'';
local-data = ''"mossnet.lan. IN A ${wg-mossnet}"'';
};
};
};
# With unbound we're doing wildcard redirects, so we don't need that anymore
# networking.hosts = {
# mossnet = mossnet-hosts;
# };
networking.firewall.allowedTCPPorts = [ 53 ]; networking.firewall.allowedTCPPorts = [ 53 ];
networking.firewall.allowedUDPPorts = [ 53 ]; networking.firewall.allowedUDPPorts = [ 53 ];
} }

View file

@ -2,9 +2,9 @@
{ {
services.paperless = { services.paperless = {
enable = true; enable = false;
consumptionDirIsPublic = true; consumptionDirIsPublic = true;
extraConfig.PAPERLESS_AUTO_LOGIN_USERNAME = "admin"; settings.PAPERLESS_AUTO_LOGIN_USERNAME = "admin";
}; };
environment.systemPackages = [ environment.systemPackages = [
@ -18,6 +18,7 @@
path = [ path = [
pkgs.fava pkgs.fava
]; ];
wantedBy = [ "multi-user.target" ];
before = [ "nginx.service" ]; before = [ "nginx.service" ];
serviceConfig = { serviceConfig = {
User = "anish"; User = "anish";

View file

@ -0,0 +1,6 @@
{ pkgs, config, lib, ... }:
{
networking.wireguard.interfaces.fly-wg = "/home/anish/usr/fly-io-test/fly-wg.conf";
# ssh.startAgent = true;
}

View file

@ -17,17 +17,21 @@
services.postgresql = { services.postgresql = {
enable = true; # Ensure postgresql is enabled enable = true; # Ensure postgresql is enabled
package = pkgs.postgresql_11; # authentication = ''
authentication = '' # local freshrss all ident map=freshrss-users
local freshrss all ident map=freshrss-users # '';
''; # identMap = # Map the freshrss user to postgresql
identMap = # Map the freshrss user to postgresql # ''
'' # freshrss-users freshrss freshrss
freshrss-users freshrss freshrss # freshrss-users postgres freshrss
''; # '';
ensureDatabases = [ "freshrss" ]; ensureDatabases = [ "freshrss" ];
ensureUsers = [{
name = "freshrss";
ensureDBOwnership = true;
}];
# TODO # TODO
# initialScript # set password for gitea user # initialScript # set password for freshrss user
}; };
services.nginx.virtualHosts."rss.sealight.xyz" = { services.nginx.virtualHosts."rss.sealight.xyz" = {

View file

@ -4,56 +4,78 @@
age.secrets.gitea-dbpass.file = "${self}/secrets/gitea-dbpass.age"; age.secrets.gitea-dbpass.file = "${self}/secrets/gitea-dbpass.age";
age.secrets.gitea-dbpass.owner = "gitea"; age.secrets.gitea-dbpass.owner = "gitea";
services.gitea = { services.forgejo = {
enable = true; enable = true;
appName = "Sealight Git Forge"; user = "gitea";
domain = "git.sealight.xyz"; group = "gitea";
rootUrl = "https://git.sealight.xyz"; stateDir = "/var/lib/gitea";
httpPort = 3001;
database = { database = {
type = "postgres"; type = "postgres";
user = "gitea";
name = "gitea";
passwordFile = "/run/agenix/gitea-dbpass"; passwordFile = "/run/agenix/gitea-dbpass";
}; };
settings = { settings = {
DEFAULT.APP_NAME = "Sealight Git Forge";
server = {
DOMAIN = "git.sealight.xyz";
ROOT_URL = "https://git.sealight.xyz";
HTTP_PORT = 3001;
};
metrics = { metrics = {
ENABLED = true; ENABLED = true;
}; };
repository = { repository = {
DEFAULT_BRANCH = "main"; DEFAULT_BRANCH = "main";
}; };
# TODO service.DISABLE_REGISTRATION = true;
"markup.restructuredtext" = { "markup.restructuredtext" = {
ENABLED = true; ENABLED = true;
FILE_EXTENSIONS = ".rst"; FILE_EXTENSIONS = ".rst";
RENDER_COMMAND = "pandoc +RTS -M512M -RTS -f rst"; RENDER_COMMAND = "timeout 30s pandoc +RTS -RTS -f rst";
IS_INPUT_FILE = false; IS_INPUT_FILE = false;
}; };
# TODO
mailer = { mailer = {
ENABLED = false; ENABLED = true;
MAILER_TYPE = "smtp"; MAILER_TYPE = "smtp";
FROM = "ops@sealight.xyz"; FROM = "ops@sealight.xyz";
SENDMAIL_PATH = "${pkgs.system-sendmail}/bin/sendmail"; SMTP_ADDR = "smtp.nullhex.com";
SMTP_PORT = "465";
USER = "ops@sealight.xyz";
PASSWD = "breed deputy fossil glory"; # TODO how do we pass this from agenix?
IS_TLS_ENABLED = "true";
}; };
}; };
}; };
users.users.gitea = {
home = "/var/lib/gitea";
useDefaultShell = true;
group = "gitea";
isSystemUser = true;
};
users.groups.gitea = {};
environment.systemPackages = [ pkgs.pandoc ]; environment.systemPackages = [ pkgs.pandoc ];
services.postgresql = { services.postgresql = {
enable = true; # Ensure postgresql is enabled enable = true; # Ensure postgresql is enabled
authentication = '' # authentication = ''
local gitea all ident map=gitea-users # local gitea all ident map=gitea-users
''; # '';
identMap = # Map the gitea user to postgresql # identMap = # Map the gitea user to postgresql
'' # ''
gitea-users gitea gitea # gitea-users gitea gitea
''; # gitea-users postgres gitea
# ensureDatabases = [ "gitea" ]; # '';
ensureUsers = [ ensureDatabases = [ "gitea" ];
{ name = "gitea"; ensurePermissions."DATABASE gitea" = "ALL PRIVILEGES"; } ensureUsers = [{
]; name = "gitea";
ensureDBOwnership = true;
}];
# TODO # TODO
# initialScript # set password for gitea user # initialScript
# set password for gitea user
}; };
services.nginx = { services.nginx = {
@ -70,6 +92,4 @@
}; };
}; };
networking.firewall.allowedTCPPorts = [ 80 443 22 ]; networking.firewall.allowedTCPPorts = [ 80 443 22 ];
security.acme.defaults.email = "anish+acme@lakhwara.com";
security.acme.acceptTerms = true;
} }

View file

@ -1,12 +1,21 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
services.gonic.enable = true; mossnet.gonic.enable = true;
services.gonic.settings = '' mossnet.gonic.settings = ''
music-path /mnt/two/music/ music-path /mnt/two/music/
podcast-path /data/podcasts podcast-path /data/podcasts
cache-path /data/cache cache-path /data/cache
playlists-path /data/playlists
''; '';
services.gonic.group = "audio"; mossnet.gonic.user = "gonic";
services.gonic.user = "headphones"; mossnet.gonic.group = "audio";
networking.firewall.allowedTCPPorts = [ 4747 ]; networking.firewall.allowedTCPPorts = [ 4747 ];
users.users.gonic = {
# uid = config.ids.uids.headphones;
# isSystemUser = true;
group = "audio";
# home = "/var/lib/headphones";
createHome = true;
};
} }

View file

@ -68,14 +68,10 @@ in
Group = cfg.group; Group = cfg.group;
DevicePolicy = "closed"; DevicePolicy = "closed";
NoNewPrivileges = " yes"; NoNewPrivileges = " yes";
PrivateTmp = "yes";
PrivateUsers = "yes";
ProtectControlGroups = "yes"; ProtectControlGroups = "yes";
ProtectKernelModules = "yes"; ProtectKernelModules = "yes";
ProtectKernelTunables = "yes"; ProtectKernelTunables = "yes";
RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6"; RestrictAddressFamilies = "AF_UNIX AF_INET AF_INET6";
RestrictNamespaces = "yes";
RestrictRealtime = "yes";
SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap"; SystemCallFilter = "~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap";
ReadWritePaths = dataFolder; ReadWritePaths = dataFolder;
StateDirectory = baseNameOf dataFolder; StateDirectory = baseNameOf dataFolder;

View file

@ -0,0 +1,16 @@
{
services.gpodder.enable = true;
networking.firewall.allowedTCPPorts = [ 3005 ];
services.nginx.virtualHosts."pod.mossnet.lan" = {
extraConfig = "client_max_body_size 20M;";
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:3005/;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
'';
};
};
}

View file

@ -1,6 +1,12 @@
{ ... }: { ... }:
{ {
services."grasp".enable = true; services.grasp = {
services."grasp".path = "/home/anish/kitaab/grasp"; enable = true;
services."grasp".user = "anish"; path = "/home/anish/kitaab/grasp/notes.wiki";
user = "anish";
};
services.nginx.virtualHosts."grasp.mossnet.lan" = {
locations."/".proxyPass = "http://localhost:12212";
};
} }

View file

@ -2,11 +2,21 @@
{ {
services.headphones = { services.headphones = {
enable = true; enable = true;
host = "192.168.1.240"; host = "0.0.0.0";
port = 8181; port = 8181;
package = "${pkgs.unstable.headphones}";
user = "headphones"; user = "headphones";
group = "audio"; group = "audio";
dataDir = "/data/music"; dataDir = "/data/music";
}; };
networking.firewall.allowedTCPPorts = [ 8181 ]; services.nginx.virtualHosts."headphones.mossnet.lan" = {
enableACME = false;
forceSSL = false;
locations."/" = {
extraConfig = ''
proxy_pass http://127.0.0.1:8181/;
'';
};
};
} }

View file

@ -0,0 +1,27 @@
{ config, lib, pkgs, ... }:
{
# Enable Hardware Acceleration for transcoding
nixpkgs.config.packageOverrides = pkgs: {
vaapiIntel = pkgs.vaapiIntel.override { enableHybridCodec = true; };
};
hardware.opengl = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
vaapiVdpau
libvdpau-va-gl
intel-compute-runtime # OpenCL filter support (hardware tonemapping and subtitle burn-in)
];
};
services.jellyfin = {
enable = true;
user = "jellyfin";
group = "video";
openFirewall = true; # only for defaults
};
networking.firewall.allowedTCPPorts = [ 8181 ];
users.users.jellyfin = {
extraGroups = [ "video" "audio" ];
};
}

View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
# k3s
networking.firewall.allowedTCPPorts = [ 6443 ];
services.k3s.enable = true;
services.k3s.role = "server";
services.k3s.clusterInit = false;
# services.k3s.extraFlags = toString [
# "--kubelet-arg=v=4" # Optionally add additional args to k3s
# ];
environment.systemPackages = [ pkgs.k3s pkgs.kubernetes-helm pkgs.kubectl ];
# minikube on docker
virtualisation.docker.enable = true;
virtualisation.docker.storageDriver = "btrfs";
# or use kvm
# virtualisation.libvirtd.enable = true;
users.users.anish.extraGroups = [ "docker" "libvert" ]; #
}

View file

@ -3,6 +3,7 @@
{ {
imports = [ imports = [
./mautrix-telegram.nix ./mautrix-telegram.nix
./mautrix-services.nix
# ./mautrix-discord.nix # ./mautrix-discord.nix
# ./mautrix-whatsapp.nix # ./mautrix-whatsapp.nix
# ./mautrix-slack.nix # ./mautrix-slack.nix
@ -19,6 +20,7 @@
services.matrix-synapse = { services.matrix-synapse = {
enable = true; enable = true;
settings = { settings = {
max_upload_size = "100M";
server_name = "sealight.xyz"; server_name = "sealight.xyz";
listeners = [ listeners = [
{ {
@ -40,11 +42,15 @@
tls = false; tls = false;
} }
]; ];
app_service_config_files = [ app_service_config_files = [
# The registration file is automatically generated after starting the appservice for the first time. # The registration file is automatically generated after starting the appservice for the first time.
# cp /var/lib/matrix-appservice-discord/discord-registration.yaml /var/lib/matrix-synapse/ # cp /var/lib/matrix-appservice-discord/discord-registration.yaml /var/lib/matrix-synapse/
# chown matrix-synapse:matrix-synapse /var/lib/matrix-synapse/discord-registration.yaml # chown matrix-synapse:matrix-synapse /var/lib/matrix-synapse/discord-registration.yaml
"/var/lib/matrix-synapse/telegram-registration.yaml" "/var/lib/matrix-synapse/telegram-registration.yaml"
"/var/lib/matrix-synapse/signal-registration.yaml"
"/var/lib/matrix-as-whatsapp/whatsapp-registration.yaml"
"/var/lib/matrix-as-discord/discord-registration.yaml"
# "/var/lib/matrix-synapse/slack-registration.yaml" # "/var/lib/matrix-synapse/slack-registration.yaml"
# "/var/lib/matrix-synapse/discord-registration.yaml" # "/var/lib/matrix-synapse/discord-registration.yaml"
# "/var/lib/matrix-synapse/whatsapp-registration.yaml" # "/var/lib/matrix-synapse/whatsapp-registration.yaml"

View file

@ -0,0 +1,52 @@
{ config, lib, pkgs, ... }:
{
# Mautrix-signal settings
services.signald.enable = true;
systemd.services.matrix-as-signal = {
requires = [ "signald.service" ];
after = [ "signald.service" ];
unitConfig = {
JoinsNamespaceOf = "signald.service";
};
path = [
pkgs.ffmpeg # voice messages need `ffmpeg`
];
};
services.matrix-appservices = {
addRegistrationFiles = false;
homeserverURL = "https://sealight.xyz/";
homeserverDomain = "sealight.xyz";
services = {
whatsapp = {
port = 29183;
format = "mautrix-go";
package = pkgs.mautrix-whatsapp;
};
discord = {
port = 29188;
format = "mautrix-go";
package = pkgs.my-mautrix-discord;
};
signal = {
port = 29184;
format = "mautrix-python";
package = pkgs.unstable.mautrix-signal;
serviceConfig = {
StateDirectory = [ "matrix-as-signal" "signald" ];
SupplementaryGroups = [ "signald" ];
TimeoutStopSec = 1; # work around the service ignoring SIGTERM, see https://gitlab.com/coffeetables/nix-matrix-appservices/-/issues/12
User = lib.mkForce config.services.signald.user;
Group = lib.mkForce config.services.signald.group;
};
settings.signal = {
socket_path = config.services.signald.socketPath;
outgoing_attachment_dir = "/var/lib/signald/tmp";
};
};
};
};
}

View file

@ -1,9 +1,9 @@
{ self, pkgs, lib, config, ... }: { self, pkgs, lib, config, ... }:
{ {
age.secrets.sealight-mod-password.file = "${self}/secrets/sealight-mod-password.age"; # age.secrets.sealight-mod-password.file = "${self}/secrets/sealight-mod-password.age";
age.secrets.sealight-mod-password.owner = "mjolnir"; # age.secrets.sealight-mod-password.owner = "mjolnir";
services.mjolnir = { services.mjolnir = {
enable = true; enable = false;
protectedRooms = [ protectedRooms = [
"https://matrix.to/#/#public:sealight.xyz" "https://matrix.to/#/#public:sealight.xyz"
"https://matrix.to/#/#theFeed:sealight.xyz" "https://matrix.to/#/#theFeed:sealight.xyz"

View file

@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
{
services.microbin.enable = true;
services.microbin.settings.PUBLIC_PATH = "bin.sealight.xyz";
services.microbin.settings.MICROBIN_PORT = 4949;
networking.firewall.allowedTCPPorts = [ 4949 ];
services.nginx.virtualHosts."bin.sealight.xyz" = {
enableACME = true;
forceSSL = true;
extraConfig = "client_max_body_size 20M;";
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:4949/;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
'';
};
};
}

View file

@ -2,7 +2,7 @@
{ {
xdg.mime.defaultApplications = { xdg.mime.defaultApplications = {
"application/pdf" = "firefox.desktop"; "application/pdf" = "zathura.desktop";
"image/png" = [ "image/png" = [
"sxiv.desktop" "sxiv.desktop"
"feh.desktop" "feh.desktop"

View file

@ -1,25 +1,54 @@
{ self, config, pkgs, ... }: { { self, config, pkgs, ... }: {
age.secrets.nullhex-smtp.file = "${self}/secrets/nullhex-smtp.age";
age.secrets.nullhex-smtp.owner = "grafana";
# grafana configuration # grafana configuration
services.grafana = { services.grafana = {
enable = true; enable = true;
settings.server = { settings = {
smtp = {
enabled = true;
password = "$__file{/run/agenix/nullhex-smtp}";
host = "smtp.nullhex.com";
user = "ops@sealight.xyz";
from_address = "ops@sealight.xyz";
};
server = {
domain = "stats.mossnet.lan"; domain = "stats.mossnet.lan";
http_port = 2342;
http_addr = "127.0.0.1"; http_addr = "127.0.0.1";
http_port = 2342;
root_url = "http://stats.mossnet.lan/";
};
}; };
# TODO enable # TODO enable
# provision.alerting.rules.path = "${self}/hosts/profiles/monitoring/alert-rules.yaml"; # provision.alerting.rules.path = "${self}/hosts/profiles/monitoring/alert-rules.yaml";
}; };
# nginx reverse proxy # nginx reverse proxy
services.nginx.recommendedProxySettings = true; # Needed for new grafana versions # services.nginx.recommendedProxySettings = true; # Needed for new grafana versions
services.nginx.virtualHosts.${config.services.grafana.domain} = { services.nginx.virtualHosts.${config.services.grafana.settings.server.domain} = {
locations."/" = { locations."/" = {
proxyPass = "http://127.0.0.1:${toString config.services.grafana.port}"; proxyPass = "http://127.0.0.1:2342";
proxyWebsockets = true; proxyWebsockets = true;
}; };
}; };
services.postgresql = {
ensureUsers = [{
name = "grafana";
# TODO this is deprecated
# Need to translate this to
# systemd.services.postgresql.postStart
# or initialScript
ensurePermissions = {
"ALL TABLES IN SCHEMA public" = "SELECT";
"DATABASE wallabag" = "CONNECT";
"DATABASE ulogger" = "CONNECT";
"DATABASE photoprism" = "CONNECT";
};
}];
};
services.prometheus = { services.prometheus = {
enable = true; enable = true;
port = 9001; port = 9001;

View file

@ -4,6 +4,8 @@
192.168.1.240 mossnet.lan 192.168.1.240 mossnet.lan
192.168.1.240 links.mossnet.lan 192.168.1.240 links.mossnet.lan
192.168.1.240 read.mossnet.lan 192.168.1.240 read.mossnet.lan
192.168.1.240 headphones.mossnet.lan
192.168.1.240 transmission.mossnet.lan
192.168.1.240 music.mossnet.lan 192.168.1.240 music.mossnet.lan
192.168.1.240 stats.mossnet.lan 192.168.1.240 stats.mossnet.lan
192.168.1.240 file.mossnet.lan 192.168.1.240 file.mossnet.lan
@ -11,10 +13,16 @@
192.168.1.240 fin.mossnet.lan 192.168.1.240 fin.mossnet.lan
192.168.1.240 paper.mossnet.lan 192.168.1.240 paper.mossnet.lan
192.168.1.240 books.mossnet.lan 192.168.1.240 books.mossnet.lan
192.f.1.240 archive.mossnet.lan 192.168.1.240 archive.mossnet.lan
192.168.1.240 music.mossnet.lan
192.168.1.240 tracks.mossnet.lan
192.168.1.240 grasp.mossnet.lan
192.168.1.240 photos.mossnet.lan
192.168.1.240 pod.mossnet.lan
''; '';
# 10.0.69.4 mossnet.lan # 10.0.69.4 mossnet.lan
# 10.0.69.4 links.mossnet.lan # 10.0.69.4 links.mossnet.lan
# 10.0.69.4 read.mossnet.lan # 10.0.69.4 read.mossnet.lan
# 10.0.69.4 stats.mossnet.lan # 10.0.69.4 stats.mossnet.lan
} }

View file

@ -16,7 +16,7 @@
orca-c orca-c
supercollider supercollider
dirt dirt
sunvox # sunvox
vcv-rack vcv-rack
lmms lmms
bespokesynth bespokesynth
@ -31,21 +31,22 @@
]; ];
hardware.pulseaudio.enable = lib.mkForce false; hardware.pulseaudio.enable = lib.mkForce false;
security.rtkit.enable = true; security.rtkit.enable = false;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
alsa.enable = true; alsa.enable = true;
alsa.support32Bit = true; alsa.support32Bit = false;
pulse.enable = true; pulse.enable = true;
jack.enable = true; jack.enable = true;
config = { # Deprecated as of 23.05
pipewire."context.properties"."default.clock.rate" = "48000"; # config = {
pipewire-pulse."stream.properties"."resample.quality" = 15; # pipewire."context.properties"."default.clock.rate" = "48000";
client."stream.properties"."resample.quality" = 15; # pipewire-pulse."stream.properties"."resample.quality" = 15;
client-rt."stream.properties"."resample.quality" = 15; # client."stream.properties"."resample.quality" = 15;
#jack."context.modules" = []; # client-rt."stream.properties"."resample.quality" = 15;
}; # #jack."context.modules" = [];
# };
#media-session.config.bluez-monitor.properties = { #media-session.config.bluez-monitor.properties = {
# "bluez5.headset-roles" = [ "hsp_hs" "hsp_ag" ]; # "bluez5.headset-roles" = [ "hsp_hs" "hsp_ag" ];
# "bluez5.codecs" = [ "aac" "ldac" "aptx_hd" ]; # "bluez5.codecs" = [ "aac" "ldac" "aptx_hd" ];
@ -57,6 +58,6 @@
# "${config.hardware.bluetooth.package}/libexec/bluetooth/bluetoothd --noplugin=sap" # "${config.hardware.bluetooth.package}/libexec/bluetooth/bluetoothd --noplugin=sap"
#]; #];
boot.kernelModules = [ "snd-seq" "snd-rawmidi" ]; # midi sequence kernel mods boot.kernelModules = [ "snd-seq" "snd-rawmidi" ]; # midi sequence kernel mods
hardware.pulseaudio.package = pkgs.pulseaudio.override { jackaudioSupport = true; }; # hardware.pulseaudio.package = pkgs.pulseaudio.override { jackaudioSupport = true; };
} }

View file

@ -0,0 +1,46 @@
{ self, pkgs, config, lib, ... }:
{
services.postgresql = {
enable = true;
ensureDatabases = [ "photoprism" ];
ensureUsers = [{
name = "photoprism";
ensureDBOwnership = true;
}];
};
services.photoprism = {
enable = true;
package = pkgs.unstable.photoprism;
port = 5152;
originalsPath = "/var/lib/private/photoprism/originals";
address = "0.0.0.0";
settings = {
PHOTOPRISM_ADMIN_USER = "admin";
PHOTOPRISM_ADMIN_PASSWORD = "photoprism"; # initial password, do change it!
PHOTOPRISM_DEFAULT_LOCALE = "en";
PHOTOPRISM_DATABASE_DRIVER = "postgres";
PHOTOPRISM_DATABASE_NAME = "photoprism";
PHOTOPRISM_DATABASE_SERVER = "/run/postgresql/";
PHOTOPRISM_DATABASE_USER = "photoprism";
PHOTOPRISM_SITE_URL = "http://photos.mossnet.lan/";
PHOTOPRISM_SITE_TITLE = "mossnet photos";
};
};
services.nginx.clientMaxBodySize = "500m";
services.nginx.recommendedProxySettings = true;
services.nginx.virtualHosts."photos.mossnet.lan" = {
enableACME = false;
forceSSL = false;
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:5152/;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
proxy_http_version 1.1;
'';
};
};
}

View file

@ -6,13 +6,12 @@
# TODO it's perhaps advisable to stop all services that depend on postgresql # TODO it's perhaps advisable to stop all services that depend on postgresql
systemctl stop postgresql systemctl stop postgresql
# TODO replace `<new version>` with the psqlSchema here
# The schema can be found by running: # The schema can be found by running:
# nix-instantiate '<nixpkgs>' --eval -A postgresql_14.psqlSchema # nix eval --raw nixpkgs#postgresql_15.psqlSchema
export NEWDATA="/var/lib/postgresql/<new version>" export NEWDATA="/var/lib/postgresql/15"
# TODO specify the postgresql package you'd like to upgrade to # TODO specify the postgresql package you'd like to upgrade to
export NEWBIN="${pkgs.postgresql_14}/bin" export NEWBIN="${pkgs.postgresql_15}/bin"
export OLDDATA="${config.services.postgresql.dataDir}" export OLDDATA="${config.services.postgresql.dataDir}"
export OLDBIN="${config.services.postgresql.package}/bin" export OLDBIN="${config.services.postgresql.package}/bin"

View file

@ -3,7 +3,7 @@
services.rss-bridge = { services.rss-bridge = {
enable = true; enable = true;
virtualHost = "bridge.sealight.xyz"; virtualHost = "bridge.sealight.xyz";
whitelist = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ]; config.system.enabled_bridges = [ "Facebook" "Bandcamp" "Twitter" "Telegram" "Instagram" "Reddit" ];
}; };
services.nginx.virtualHosts."bridge.sealight.xyz".forceSSL = true; services.nginx.virtualHosts."bridge.sealight.xyz".forceSSL = true;

View file

@ -2,8 +2,8 @@
{ {
services.openssh = { services.openssh = {
enable = true; enable = true;
passwordAuthentication = false; settings.PasswordAuthentication = false;
permitRootLogin = "no"; settings.PermitRootLogin = "no";
}; };
networking.firewall.allowedTCPPorts = [ 80 443 22 ]; # ssh and website networking.firewall.allowedTCPPorts = [ 80 443 22 ]; # ssh and website
security.sudo.wheelNeedsPassword = false; # needed for deploy-rs security.sudo.wheelNeedsPassword = false; # needed for deploy-rs

View file

@ -1,27 +0,0 @@
{ pkgs, ... }:
{
systemd.services.kitaab-sync = {
serviceConfig.Type = "oneshot";
path = [
pkgs.git
pkgs.openssh
pkgs.coreutils
];
script = ''
cd /home/anish/kitaab
git add -A
git diff-index --quiet HEAD || git commit -m 'syncing kitaab' # if nothing, don't exit 1
git push
exit 0
'';
serviceConfig = {
User = "anish";
};
};
systemd.timers.kitaab-sync = {
wantedBy = [ "timers.target" ];
partOf = [ "kitaab-sync.service" ];
timerConfig.OnCalendar = [ "hourly" ];
};
}

0
hosts/profiles/sync/music/get-music.sh Executable file → Normal file
View file

View file

@ -6,19 +6,19 @@
path = [ path = [
pkgs.git pkgs.git
pkgs.coreutils pkgs.coreutils
pkgs.nixUnstable pkgs.nixVersions.latest
pkgs.openssh pkgs.openssh
pkgs.deploy pkgs.deploy
]; ];
script = '' script = ''
cd /etc/nixos/ # TODO make variable cd /home/anish/usr/helm/
git pull
nix flake lock --update-input poonam nix flake lock --update-input poonam
nix flake lock --update-input basant nix flake lock --update-input basant
# TODO git add flake.lock
# git add flake.lock git diff-index --quiet HEAD || git commit -m 'updating website' # if nothing, don't exit 1
# git commit -m "update website" git push
# git push deploy .#helix
deploy .#cube
exit 0 exit 0
''; '';
serviceConfig = { serviceConfig = {

View file

@ -0,0 +1,61 @@
{ self, pkgs, config, lib, ... }:
{
services.postgresql = {
enable = true;
ensureDatabases = [ "ulogger" ];
ensureUsers = [{
name = "ulogger";
ensureDBOwnership = true;
}];
};
services.ulogger = {
enable = true;
hostName = "tracks.mossnet.lan";
user = "ulogger";
conf = ''
<?php
/* μlogger
*
* Copyright(C) 2017 Bartek Fabiszewski (www.fabiszewski.net)
*
* This is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
// This is default configuration file.
// Copy it to config.php and customize
// Database config
// PDO data source name, eg.:
// mysql:host=localhost;port=3307;dbname=ulogger;charset=utf8
// mysql:unix_socket=/path/to/mysql.sock;dbname=ulogger;charset=utf8
// pgsql:host=localhost;port=5432;dbname=ulogger
// sqlite:/path/to/ulogger.db
$dbdsn = "pgsql:host=/run/postgresql/;port=5432;dbname=ulogger";
// Database user name
$dbuser = "ulogger";
// Database user password
$dbpass = "";
// Optional table names prefix, eg. "ulogger_"
$dbprefix = "";
?>
'';
};
}

View file

@ -1,94 +1,37 @@
{ self, pkgs, config, lib, ... }: { self, pkgs, config, lib, ... }:
{ {
# age.secrets.wallabag-password.file = "${self}/secrets/wallabag-password.age"; age.secrets.wallabag-password.file = "${self}/secrets/wallabag-password.age";
# age.secrets.wallabag-secret.file = "${self}/secrets/wallabag-secret.age"; age.secrets.wallabag-secret.file = "${self}/secrets/wallabag-secret.age";
# age.secrets.wallabag-password.owner = "wallabag"; age.secrets.wallabag-password.owner = "wallabag";
# age.secrets.wallabag-secret.owner = "wallabag"; age.secrets.wallabag-secret.owner = "wallabag";
services.postgresql = { services.postgresql = {
enable = true; enable = true;
package = pkgs.postgresql_11; package = pkgs.postgresql_15;
# Ensure the database, user, and permissions always exist # Ensure the database, user, and permissions always exist
ensureDatabases = [ "wallabag" ]; ensureDatabases = [ "wallabag" ];
ensureUsers = [ ensureUsers = [
{ {
name = "wallabag"; name = "wallabag";
ensurePermissions."DATABASE wallabag" = "ALL PRIVILEGES"; # ensureDBOwnership = true;
} }
]; ];
authentication = ''
local wallabag all peer
'';
}; };
services.wallabag = { services.wallabag = {
enable = true; enable = true;
hostName = "read.mossnet.lan"; domain = "read.mossnet.lan";
package = pkgs.wallabag; virtualHost.enable = true;
conf = '' package = pkgs.my-wallabag;
# This file is a "template" of what your parameters.yml file should look like # Systemd now defaults to /var/lib?
parameters: # dataDir = "/var/lib/wallabag";
database_driver: pdo_pgsql parameters = {
database_host: localhost "env(SECRET_FILE)" = config.age.secrets.wallabag-secret.path;
database_port: ~ secret = "%env(file:resolve:SECRET_FILE)%";
database_name: wallabag };
database_user: wallabag
database_password: wallabag
# For SQLite, database_path should be "%kernel.project_dir%/data/db/wallabag.sqlite"
database_path: ~
database_table_prefix: wallabag_
database_socket: null
# with PostgreSQL and SQLite, you must set "utf8"
database_charset: utf8
domain_name: http://read.mossnet.lan
server_name: "mossnet wallabag instance"
mailer_transport: smtp
mailer_user: ~
mailer_password: ~
mailer_host: 127.0.0.1
mailer_port: false
mailer_encryption: ~
mailer_auth_mode: ~
locale: en
# A secret key that's used to generate certain security-related tokens
secret: SAFGOECRIlfal89oe6u0(*^dsaaih961
# two factor stuff
twofactor_auth: true
twofactor_sender: no-reply@wallabag.org
# fosuser stuff
fosuser_registration: true
fosuser_confirmation: true
# how long the access token should live in seconds for the API
fos_oauth_server_access_token_lifetime: 3600
# how long the refresh token should life in seconds for the API
fos_oauth_server_refresh_token_lifetime: 1209600
from_email: ops@sealight.xyz
rss_limit: 50
# RabbitMQ processing
rabbitmq_host: localhost
rabbitmq_port: 5672
rabbitmq_user: guest
rabbitmq_password: guest
rabbitmq_prefetch_count: 10
# Redis processing
redis_scheme: tcp
redis_host: localhost
redis_port: 6379
redis_path: null
redis_password: null
# sentry logging
sentry_dsn: ~
'';
}; };
# networking.firewall.allowedTCPPorts = [ 8080 ];
} }

View file

@ -18,7 +18,7 @@
peers = [ peers = [
{ {
# box # box
publicKey = "Ra78mOc110K7URN5uB3m9d78iBKgeRHzT+3HkiFp9BU="; publicKey = "OnvVM1UaX0nmdohzSDyl90VKwd4VUpJZ+4oBpkkytwU=";
allowedIPs = [ "10.0.69.4/32" ]; allowedIPs = [ "10.0.69.4/32" ];
} }
{ {
@ -28,7 +28,7 @@
} }
{ {
# curve # curve
publicKey = "kzw+51vVYkitGmSMJPAj1jdhzmxhvmSrrIQ4Ar8wzlI="; publicKey = "zkC7IzXX16i2ixqnRrPlUq2fD2/4noe84FlZBFaDBEE=";
allowedIPs = [ "10.0.69.2/32" ]; allowedIPs = [ "10.0.69.2/32" ];
} }
{ {
@ -36,6 +36,16 @@
publicKey = "gcdq86hhEUlqF2chqYB/F8pALyAMNFvwLycxBoHuoDs="; publicKey = "gcdq86hhEUlqF2chqYB/F8pALyAMNFvwLycxBoHuoDs=";
allowedIPs = [ "10.0.69.5/32" ]; allowedIPs = [ "10.0.69.5/32" ];
} }
{
# hyperplane
publicKey = "v+EUuM60yZLvBmdCG9GxfFAtSjS1VvbUWcyNb8emjDg=";
allowedIPs = [ "10.0.69.6/32" ];
}
{
# work
publicKey = "/gv66s8DfppCCjaEN/jlc8z95IhEWPgDumykqKEl0QU=";
allowedIPs = [ "10.0.69.7/32" ];
}
]; ];
}; };
} }

View file

@ -1,30 +0,0 @@
{ config, pkgs, lib, ... }:
{
# services.tailscale.enable = true;
networking.firewall.allowedUDPPorts = [ 60990 ];
age.secrets.curve-wg.file = "/etc/nixos/secrets/curve-wg.age";
age.secrets.curve-wg.owner = "anish";
networking.wireguard.interfaces = {
# TODO need some kind of module here to configure curve & box from hosts or something
wg0 = {
ips = [ "10.0.69.2/24" ];
listenPort = 60990; # to match firewall allowedUDPPorts (without this wg uses random port numbers)
privateKeyFile = "/run/agenix/curve-wg";
peers = [
# For a client configuration, one peer entry for the server will suffice.
{
publicKey = "c1J4p63rD3IlszugMZiki7UBV3YmDdqa3DU4UejXzAI=";
allowedIPs = [ "10.0.69.0/24" ];
# Set this to the server IP and port.
endpoint = "69.61.38.225:60990"; # ToDo: route to endpoint not automatically configured https://wiki.archlinux.org/index.php/WireGuard#Loop_routing https://discourse.nixos.org/t/solved-minimal-firewall-setup-for-wireguard-client/7577
# Send keepalives every 25 seconds. Important to keep NAT tables alive.
persistentKeepalive = 25;
}
];
};
};
}

View file

@ -1,61 +1,60 @@
{ pkgs, config, self, ... }:
{ {
users.users.woodpecker-runner = { users.users.woodpecker-runner = {
isSystemUser = true; isSystemUser = true;
group = "woodpecker-runner"; group = "woodpecker-runner";
home = "/var/lib/woodpecker";
createHome = true;
extraGroups = [ "docker" ];
}; };
users.groups.woodpecker-runner = { }; users.groups.woodpecker-runner = { };
# Allow the exec runner to write to build with nix # Allow the exec runner to write to build with nix
nix.allowedUsers = [ "woodpecker-runner" ]; nix.settings.allowed-users = [ "woodpecker-runner" ];
virtualisation.docker.enable = true;
systemd.services.woodpecker-runner-exec = { age.secrets.woodpecker-agent-secret.owner = "woodpecker-runner";
age.secrets.woodpecker-agent-secret.file = "${self}/secrets/woodpecker-agent-secret.age";
systemd.services.woodpecker-agent = {
enable = true; enable = true;
wantedBy = [ "multi-user.target" ];
### MANUALLY RESTART SERVICE IF CHANGED ### MANUALLY RESTART SERVICE IF CHANGED
restartIfChanged = true; restartIfChanged = true;
confinement.enable = true; # confinement.enable = true;
confinement.packages = [ # confinement.packages = [
pkgs.git # pkgs.git
pkgs.gnutar # pkgs.gnutar
pkgs.bash # pkgs.bash
pkgs.nixFlakes # pkgs.nixFlakes
pkgs.gzip # pkgs.gzip
]; # ];
path = [ # path = [
pkgs.git # pkgs.git
pkgs.gnutar # pkgs.gnutar
pkgs.bash # pkgs.bash
pkgs.nixFlakes # pkgs.nixFlakes
pkgs.gzip # pkgs.gzip
]; # ];
serviceConfig = { serviceConfig = {
Type = "simple";
Environment = [ Environment = [
"WOODPECKER_RUNNER_CAPACITY=2" "WOODPECKER_RUNNER_CAPACITY=6"
"WOODPECKER_RUNNER_NAME=woodpecker-agent" "WOODPECKER_RUNNER_NAME=woodpecker-agent"
"WOODPECKER_SERVER=ci.sealight.xyz:9000"
"WOODPECKER_HOSTNAME=mossnet"
"WOODPECKER_BACKEND=docker"
"NIX_REMOTE=daemon" "NIX_REMOTE=daemon"
"PAGER=cat" "PAGER=cat"
# "WOODPECKER_PROTO=https"
# "WOODPECKER_LOG_LEVEL=debug"
]; ];
BindPaths = [ WorkingDirectory = "/var/lib/woodpecker";
"/nix/var/nix/daemon-socket/socket" # Runtime directory and mode
"/run/nscd/socket" RuntimeDirectory = "woodpecker";
# "/var/lib/woodpecker" RuntimeDirectoryMode = "0755";
]; # Access write directories
BindReadOnlyPaths = [ ReadWritePaths = [ "/var/lib/woodpecker" ];
"/etc/passwd:/etc/passwd"
"/etc/group:/etc/group"
"/nix/var/nix/profiles/system/etc/nix:/etc/nix"
"${config.environment.etc."ssl/certs/ca-certificates.crt".source}:/etc/ssl/certs/ca-certificates.crt"
"${config.environment.etc."ssh/ssh_known_hosts".source}:/etc/ssh/ssh_known_hosts"
"${builtins.toFile "ssh_config" ''
Host git.sealight.xyz
ForwardAgent yes
''}:/etc/ssh/ssh_config"
"/etc/machine-id"
"/etc/resolv.conf"
"/nix/"
];
EnvironmentFile = [ EnvironmentFile = [
# /run/agenix/woodpecker-agent-secret /run/agenix/woodpecker-agent-secret
]; ];
ExecStart = "${pkgs.woodpecker-agent}/bin/woodpecker-agent"; ExecStart = "${pkgs.woodpecker-agent}/bin/woodpecker-agent";
User = "woodpecker-runner"; User = "woodpecker-runner";

View file

@ -1,9 +1,16 @@
{ self, pkgs, config, ... }:
{ {
age.secrets.woodpecker-server-secrets.owner = "woodpecker";
age.secrets.woodpecker-server-secrets.file = "${self}/secrets/woodpecker-server-secrets.age";
age.secrets.woodpecker-agent-secret.owner = "woodpecker";
age.secrets.woodpecker-agent-secret.file = "${self}/secrets/woodpecker-agent-secret.age";
users.users.woodpecker = { users.users.woodpecker = {
group = woodpecker; group = "woodpecker";
description = "woodpecker user"; description = "woodpecker user";
home = "/var/lib/woodpecker"; home = "/var/lib/woodpecker";
createHome = true; createHome = true;
isNormalUser = true;
}; };
users.groups.woodpecker = { }; users.groups.woodpecker = { };
@ -11,41 +18,43 @@
services.nginx.virtualHosts."ci.sealight.xyz" = { services.nginx.virtualHosts."ci.sealight.xyz" = {
enableACME = true; enableACME = true;
forceSSL = true; forceSSL = true;
locations."/".proxyPass = "http://localhost:3030/"; locations."/".proxyPass = "http://localhost:38125";
}; };
networking.firewall.allowedTCPPorts = [ 80 443 22 ];
services.postgresql = { services.postgresql = {
ensureDatabases = [ "woodpecker" ]; ensureDatabases = [ "woodpecker" ];
ensureUsers = [{ ensureUsers = [{
name = "woodpecker"; name = "woodpecker";
ensurePermissions = { ensureDBOwnership = true;
"DATABASE woodpecker" = "ALL PRIVILEGES";
};
}]; }];
}; };
systemd.services.woodpecker-server = { systemd.services.woodpecker-server = {
after = [ "postgresql.service" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = { serviceConfig = {
WorkingDirectory = "/var/lib/woodpecker";
EnvironmentFile = [ EnvironmentFile = [
# GITEA_CLIENT_SECRET etc /run/agenix/woodpecker-server-secrets
# /run/agenix/woodpecker /run/agenix/woodpecker-agent-secret
]; ];
Environment = [ Environment = [
"WOODPECKER_OPEN=true" "WOODPECKER_OPEN=false"
"WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}" "WOODPECKER_HOST=https://ci.sealight.xyz"
"WOODPECKER_SERVER_ADDR=:38125"
"WOODPECKER_GITEA=true" "WOODPECKER_GITEA=true"
"WOODPECKER_GITEA_URL=https://git.sealight.xyz" "WOODPECKER_GITEA_URL=https://git.sealight.xyz"
"WOODPECKER_DATABASE_DATASOURCE=postgres:///woodpecker?host=/run/postgresql" "WOODPECKER_DATABASE_DATASOURCE=postgres:///woodpecker?host=/run/postgresql"
"WOODPECKER_DATABASE_DRIVER=postgres" "WOODPECKER_DATABASE_DRIVER=postgres"
"WOODPECKER_SERVER_PORT=:3030" "WOODPECKER_ADMIN=aynish"
"WOODPECKER_USER_CREATE=username:aynish,admin:true" # set your admin username
]; ];
ExecStart = "${pkgs.woodpecker-server}/bin/woodpecker-server"; ExecStart = "${pkgs.woodpecker-server}/bin/woodpecker-server";
User = woodpecker; User = "woodpecker";
Group = woodpecker; Group = "woodpecker";
}; };
}; };

View file

@ -1,17 +1,23 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
programs.zsh.enable = true;
users.users.anish = { users.users.anish = {
description = "Personal user for Anish"; description = "Personal user for Anish";
hashedPassword = "$y$j9T$y3DPt/dWaPE.gRazQqw1w0$1RMH5sl/Nu8kW3ZMywYCPRniHD/jF5qRh0VKrdJ.bV2"; hashedPassword =
"$y$j9T$y3DPt/dWaPE.gRazQqw1w0$1RMH5sl/Nu8kW3ZMywYCPRniHD/jF5qRh0VKrdJ.bV2";
shell = pkgs.zsh; shell = pkgs.zsh;
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "audio" "networkmanager" ]; extraGroups = [ "wheel" "audio" "networkmanager" "video" ];
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
# Curve # Curve
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve"
# Line # Box
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDtU2GMYjXj6RGO1+mwM4TDGOo0qrKLTL4Di8+QgDX0p5vUEsnE1PS9wnuqCmSu75U8g0XIAMtvtdYyGk1N+Bx01erAZpT8DLYtIXFCyaiN28PVu5T1D0T+TQ7xgIH1qenXZR2DOQdf6kpvKEfm7+7bWhCo0N/KFMpmReubyzHDQcq/1qQasxTL+YALQFOjwKqsOTBXbHwZ103AEAcQX4ftBFEOfVli4/1aKIK4dNSZYB7J9Htq707YnsEqo9RLAMh0aOTTYgTx9AoSUDeqGuh/AGkcB7NcS7EEtI6d5YUGylwZh/gF6hqE0jl8kn2m5jMKXL3CRohZvjifue8x/GIjpu5WRabUuhBEbrfTQQaC7taHnt5rvYCGzKZx09TexUzhuz2CL480DRoxSG+P+lCNm1dIg/EZrnGEzXCSr36PlOqS5t5gm8tPkzCmZf2wU15A3ZIYUPmnYLqsn4WmIV7rKmdqt2ctWELUXow3PPiZXBucP9P3xpsYEfF1SB2SGNc= u0_a139@localhost" "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKN8/SH55DBiwVoSnTU8k2Pen+wmovL9QaMyehxGEsJJv/8fzwsswGalD4C/4O51LOvdu4UKkZW5hG02uVSK+58p3UV3pOPyoqsu/aDeIsWsqmTeTzUrBIWOlNzcDKnohLz2oGC5YO+wyTJ9Iteq6aGJDjErsW7sG3h5lXCs551EmJNNGhtBQaaoytMNnWqSdlVjDNCijurH7WUpp40U/RjEp532l4rX6eIIj3jBKEFbhZkFSSjqbj4xM4SyFt+Jmigb1RMjsQjmpfY1vDtM84RcYfpTUte/T5w2dkD5H6kccmWnwKSJpm9wXfx4E7lR9APdUGnau2U1+XxiD3ytGl anish@box"
# Nix-on-droid line
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJOiXBPVvZAp1fY0a0Tupxj0Ml6MoA51lvqt/jAQq249 nix-on-droid@localhost"
# Work
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/vvh0i6+uAN0GWlK6ZfyTlc/AW54xe2CroUDsDSoGnFKeIUiSsWexobODlVakNhqwCKfsvUh6g+RdA8ZVcamATcYqxysP4X5fRksmAzRm5281O7ZBDHMB2BdcfHSTgiz7JvMRIQYWDlU8Ck6IL4wlN0b2GMUj9t/GeG37us8280rxpRNoIY7M27AJEZ7XNQhctBIVujxctVBgIMYmZiTwziU7ywJv4rNT5OAWvjRXSo1rkxdvx3VESv4y/mp8m7dEupZpIjIFsLs52+UG5LtadulUqtTWg05sCw8LEcmRhflgZSAvjw60RrKFCuWxc8+/Pmaw+zExeBMenqi0NzuTc3S3k2wCKVIZDh/0tlXzIwZ6WRqxDevUtEKfvbEFMXd8akhTfYs0dyszcFRevBxOBPbcKku+FK/HkdPLmEANvxYty3cv+Eipkz3c8JPJPvXNTXrjepXMm0LUKodO3c15hGogCOxUO38kykkyYnn+MxxHparoMfEr2+oHNpQoS5wA1G43ppqjVoRDgnhleu6ixwRkLZzphY3cnOd5jL9Ie5xIGbFWH1qSlQRdHBkHjuf85z7+QK8nFYAhmG1K3Vt3GNtF8LN1tYQkfwBJ/vsroMNzGPoq4PjVbqb80Eq+96cP89XKfU2/xw1g+p2lJDm/zC1WCjXVzf8NRwC7gqPavQ== anishlakhwara@anishs-mbp.lan"
]; ];
}; };
} }

0
install-encrypted.sh Executable file → Normal file
View file

10
install-yubikey.sh Executable file → Normal file
View file

@ -1,3 +1,5 @@
#!/usr/bin/env bash
rbtohex() { rbtohex() {
( od -An -vtx1 | tr -d ' \n' ) ( od -An -vtx1 | tr -d ' \n' )
} }
@ -17,7 +19,7 @@ cc -O3 -I$(nix-build "<nixpkgs>" --no-build-output -A openssl.dev)/include -L$(n
# Yubikey Setup # Yubikey Setup
SLOT=2 SLOT=2
ykpersonalize -"$SLOT" -ochal-resp -ochal-hmac # ykpersonalize -"$SLOT" -ochal-resp -ochal-hmac
SALT_LENGTH=16 SALT_LENGTH=16
salt="$(dd if=/dev/random bs=1 count=$SALT_LENGTH 2>/dev/null | rbtohex)" salt="$(dd if=/dev/random bs=1 count=$SALT_LENGTH 2>/dev/null | rbtohex)"
k_user=PASSWORDCHANGEMEPLAEASES k_user=PASSWORDCHANGEMEPLAEASES
@ -64,7 +66,7 @@ mkfs.btrfs -L "$FSROOT" "/dev/partitions/$FSROOT"
#touch /mnt-root/nix-store.squashfs #touch /mnt-root/nix-store.squashfs
mount "/dev/partitions/$FSROOT" /mnt mount "/dev/partitions/$FSROOT" /mnt
cd /mnt cd /mnt || exit
btrfs subvolume create root btrfs subvolume create root
btrfs subvolume create home btrfs subvolume create home
cd cd
@ -145,7 +147,7 @@ cat > /mnt/etc/nixos/configuration.nix <<'endmsg'
sound.enable = true; sound.enable = true;
hardware.pulseaudio.enable = true; hardware.pulseaudio.enable = true;
services.xserver.libinput.enable = true; services.libinput.enable = true;
# Hmmm maybe somewhere else? # Hmmm maybe somewhere else?
users.users.anish = { users.users.anish = {
@ -167,6 +169,6 @@ cat > /mnt/etc/nixos/configuration.nix <<'endmsg'
endmsg endmsg
cd /mnt cd /mnt || exit
nixos-install --root /mnt nixos-install --root /mnt
passwd passwd

View file

@ -43,7 +43,7 @@ in
mode = "repokey-blake2"; mode = "repokey-blake2";
passCommand = "cat /run/agenix/borg-password"; passCommand = "cat /run/agenix/borg-password";
}; };
environment = { BORG_RSH = "ssh -i /root/borg/borg-key"; }; # YOU NEED TO PUT THIS HERE MANUALLY environment = { BORG_RSH = "ssh -i /run/agenix/borg-key"; };
compression = "auto,lzma"; compression = "auto,lzma";
startAt = "daily"; startAt = "daily";
extraArgs = "--remote-path=borg1"; extraArgs = "--remote-path=borg1";

View file

@ -8,4 +8,7 @@
hesienbridge = import ./heisenbridge.nix; hesienbridge = import ./heisenbridge.nix;
wireguard = import ./wireguard.nix; wireguard = import ./wireguard.nix;
backup = import ./backup.nix; backup = import ./backup.nix;
ulogger-server = import ./ulogger.nix;
gpodder2go = import ./gpodder2go.nix;
# microbin = import ./microbin.nix; # includide in 23.11
} }

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