377 Commits

Author SHA1 Message Date
Hadi
321914861f Release v2.1.0
Former-commit-id: a134abdea3
2024-08-18 23:40:47 +02:00
Hadi
b851c527af Update
Former-commit-id: 957b148656
2024-08-18 23:29:31 +02:00
Hadi
69f1aa3072 Update
Former-commit-id: 7fab715859
2024-08-18 23:29:08 +02:00
Hadi
aeaee053c4 Update
Former-commit-id: 246b5b6c8e
2024-08-11 12:02:11 +02:00
Hadi
7632e82867 Update
Former-commit-id: a318562aa7
2024-08-10 13:28:07 +02:00
Hadi
ffbb5eb322 Update
Former-commit-id: 4ec671e6b4
2024-08-02 20:53:58 +02:00
Hadi
fe6288d42c Update
Former-commit-id: e3f4493865
2024-07-29 19:34:43 +02:00
Hadi
f54ec0a5ab Update
Former-commit-id: 5c5a2796f6
2024-07-25 23:23:11 +02:00
Hadi
768b475183 Update
Former-commit-id: a7bd5ad28b
2024-07-24 23:38:16 +02:00
Hadi
0643968e77 Update
Former-commit-id: 830dc909e2
2024-07-22 22:32:10 +02:00
Hadi
18a17abad4 Update
Former-commit-id: 351dc0ebb3
2024-07-22 21:49:19 +02:00
Hadi
c4b19710ef Update
Former-commit-id: aff363f37d
2024-07-21 22:20:55 +02:00
Hadi
1beb1be29c Update
Former-commit-id: fdd41cf848
2024-07-19 13:03:34 +02:00
Hadi
621520e9e8 Update
Former-commit-id: 308cbfcb19
2024-07-13 12:04:41 +02:00
Hadi
f030f9b6ed Update
Former-commit-id: 1dc5190c43
2024-07-11 16:07:04 +02:00
Hadi
f6c5f90a75 Update
Former-commit-id: 8412b4dd93
2024-07-09 16:20:53 +02:00
Hadi
3ad6f353b6 Update
Former-commit-id: 04d2e91dd5
2024-07-09 15:01:41 +02:00
Hadi
debc426717 Update
Former-commit-id: 70459117ed
2024-07-09 14:16:50 +02:00
Hadi
0e6f7110e4 Update
Former-commit-id: 87ee1c7738
2024-07-09 14:00:14 +02:00
Hadi
af3b9fcd6e Update
Former-commit-id: 0509eba07f
2024-07-09 13:41:42 +02:00
Hadi
8e5df9ff90 Update
Former-commit-id: 9142814f8f
2024-07-09 12:05:04 +02:00
Hadi
7e1eaf33af Update
Former-commit-id: 33a9386356
2024-07-09 11:44:32 +02:00
Hadi
6a12e7cde9 Update
Former-commit-id: fb73cce28a
2024-07-09 11:12:41 +02:00
Hadi
9a4fb9fd61 Update
Former-commit-id: e0c24bf068
2024-07-09 09:47:29 +02:00
Hadi
c77dd39a98 Update
Former-commit-id: 8e63ef0b46
2024-07-09 09:38:51 +02:00
Hadi
a0a7d5755a Merge branch 'main' of github.com:anotherhadi/nixy
Update


Former-commit-id: e107b25a2f
2024-07-09 09:33:49 +02:00
Hadi
5efa224a57 Update
Former-commit-id: 841f9625e9
2024-07-09 09:33:21 +02:00
Hadi
61e195d134 update
Former-commit-id: ddddd3b4a4
2024-07-08 07:45:56 +00:00
Hadi
5b2c6db769 Update
Former-commit-id: a73a50aa1f
2024-07-06 00:37:24 +02:00
Hadi
c6fee1ccd6 Update
Former-commit-id: cd7db37ccd
2024-07-06 00:35:41 +02:00
Hadi
60652a60df Update
Former-commit-id: 9931071846
2024-07-05 14:56:19 +02:00
Hadi
b41f3576c9 Update
Former-commit-id: de4347765c
2024-07-05 10:16:16 +02:00
Hadi
edacf85795 Update
Former-commit-id: 5bee2d6931
2024-07-05 09:20:58 +02:00
Hadi
7dd9f021f0 Update
Former-commit-id: 7dc7cfcaba
2024-07-05 09:09:43 +02:00
Hadi
ce4da71c70 Update
Former-commit-id: a8d37c3fcd
2024-07-05 08:49:18 +02:00
Hadi
0380714faa Update
Former-commit-id: fa6d5d50bd
2024-07-02 12:18:49 +02:00
Hadi
2b7d962b27 update
Former-commit-id: fdff88cc9d
2024-07-01 13:15:24 +00:00
Hadi
11f73f74ff nixvim refactor
Former-commit-id: 55caf123df
2024-07-01 13:07:12 +00:00
Hadi
8cc101b169 Update
Former-commit-id: 88ae1d29a5
2024-07-01 13:04:32 +02:00
Hadi
0bd30d921b update todos
Former-commit-id: 51739ac610
2024-07-01 08:41:07 +00:00
Hadi
fe238ca49a update
Former-commit-id: 76a6f6cd6e
2024-07-01 08:34:04 +00:00
Hadi
527a22c37b update
Former-commit-id: 7ef2c71725
2024-07-01 08:32:49 +00:00
Hadi
e1ad72405f update
Former-commit-id: 81574fd7bc
2024-07-01 08:31:12 +00:00
Hadi
985a8b063d Add wallpapers
Former-commit-id: ba9dde2c1a
2024-07-01 10:13:17 +02:00
Hadi
66677bc08e update
Former-commit-id: 93837b6bea
2024-06-30 18:01:52 +02:00
Hadi
f3434352d2 Update
Former-commit-id: 8b76bf48a6
2024-06-30 17:59:39 +02:00
Hadi
65b82b3609 update
Former-commit-id: c80ddff8eb
2024-06-30 17:46:32 +02:00
Hadi
c3e544248f update
Former-commit-id: c4d436b434
2024-06-30 17:42:09 +02:00
Hadi
6a33d7ac72 update
Former-commit-id: dae8755b59
2024-06-30 17:35:58 +02:00
Hadi
9b8c5b9b19 Update
Former-commit-id: 7c0216b1fb
2024-06-30 17:32:42 +02:00
Hadi
130415e809 Update
Former-commit-id: 40ffce6605
2024-06-29 00:18:07 +02:00
Hadi
52a029e998 Update
Former-commit-id: 56c2c41b68
2024-06-28 16:35:49 +02:00
Hadi
d1a8286a21 Update
Former-commit-id: 06f5e03e66
2024-06-28 16:32:52 +02:00
Hadi
78bccf2c7e Update
Former-commit-id: 921c359693
2024-06-28 15:02:53 +02:00
Hadi
4290cc3c35 update
Former-commit-id: 1f35859f2c
2024-06-28 14:35:35 +02:00
Hadi
8f70b0d26b Update
Former-commit-id: 71f405e633
2024-06-28 01:24:27 +02:00
Hadi
d9580c1dff update
Former-commit-id: 84b645e181
2024-06-28 01:11:49 +02:00
Hadi
763fa5e549 update
Former-commit-id: 5857299c20
2024-06-28 01:10:09 +02:00
Hadi
0c68ac35b5 update
Former-commit-id: ec24cde14f
2024-06-28 01:07:53 +02:00
Hadi
3ed7128cc4 update
Former-commit-id: 3f79044a2a
2024-06-28 01:07:24 +02:00
Hadi
d7f34d9f0e Update
Former-commit-id: cf6ea202e1
2024-06-28 00:58:12 +02:00
Hadi
826fd6aaaf Update
Former-commit-id: 84f87f9833
2024-06-27 19:42:08 +02:00
Hadi
1fba2d19b3 Update
Former-commit-id: ae6818ed65
2024-06-27 18:32:17 +02:00
Hadi
d92bbe59a6 update
Former-commit-id: cd7b35389e
2024-06-27 09:49:24 +00:00
Hadi
edc0243200 update
Former-commit-id: c8c81e20ae
2024-06-27 09:20:44 +00:00
Hadi
27ac4008f8 golang bin to $PATH
Former-commit-id: 2972b4238c
2024-06-27 08:45:21 +00:00
Hadi
9dc7b851f5 update
Former-commit-id: b35d35f3d5
2024-06-27 08:42:42 +00:00
Hadi
4a2d941991 update
Former-commit-id: bde31a4934
2024-06-27 08:32:24 +00:00
Hadi
a62c549e8f update
Former-commit-id: 170287e948
2024-06-27 08:31:28 +00:00
Hadi
7232c54382 create keybindings doc
Former-commit-id: 5d14ec00b5
2024-06-27 08:24:13 +00:00
Hadi
25067c9d06 Merge branch 'main' of https://github.com/anotherhadi/nixy
Former-commit-id: f6209d0754
2024-06-27 07:50:31 +00:00
Hadi
be8b1b696c update todo
Former-commit-id: 9e906c161a
2024-06-27 07:46:24 +00:00
Hadi
885f18806e Update
Former-commit-id: 071ce93f11
2024-06-27 00:11:54 +02:00
Hadi
b9ebf59fea Update
Former-commit-id: a9939a0f54
2024-06-27 00:10:09 +02:00
Hadi
ba007b4710 Update
Former-commit-id: 9cf68648eb
2024-06-26 22:18:39 +02:00
Hadi
1d8bc979c3 Update
Former-commit-id: 652377bd9b
2024-06-26 22:17:03 +02:00
Hadi
a7197e360e Update
Former-commit-id: dd9c61b9ff
2024-06-26 22:13:14 +02:00
Hadi
878754ad8b update
Former-commit-id: c00458c02a
2024-06-26 21:30:04 +02:00
Hadi
4a08e654e0 Update
Former-commit-id: 1df0f31dbc
2024-06-26 21:19:04 +02:00
Hadi
5d94699990 add md-table-of-contents source
Former-commit-id: 6a8382c79e
2024-06-26 14:46:22 +00:00
Hadi
d98468a34d update
Former-commit-id: 1ed7675095
2024-06-26 14:44:08 +00:00
Hadi
5f73e46e73 Update
Former-commit-id: 57cab5fa52
2024-06-26 12:31:58 +02:00
Hadi
674ef50ac9 update
Former-commit-id: 3cfb9e733a
2024-06-26 10:32:58 +02:00
Hadi
d276202288 Update
Former-commit-id: bb4617160c
2024-06-25 22:22:26 +02:00
Hadi
9b31f3be8d update
Former-commit-id: 80f8ca3e9a
2024-06-25 22:20:17 +02:00
Hadi
24d0f22f8e Update
Former-commit-id: c618feced4
2024-06-25 21:57:24 +02:00
Hadi
13cf7cd494 Update
Former-commit-id: 6f6c8bebf7
2024-06-25 18:10:20 +02:00
Hadi
65c430318f Update
Former-commit-id: 6d0855ce44
2024-06-25 18:02:38 +02:00
Hadi
b4e6f9d48c update
Former-commit-id: 32af0cf534
2024-06-25 11:57:53 +02:00
Hadi
a024023c43 init keybindings.md
Former-commit-id: 0b4f2d6970
2024-06-25 11:47:15 +02:00
Hadi
6edf2cd0b9 install script test
Former-commit-id: b4947a61c5
2024-06-25 11:39:34 +02:00
Hadi
d2b3e6b430 up
Former-commit-id: 4e5cdbbac5
2024-06-25 09:49:11 +02:00
Hadi
b5476da7ef version pull
Former-commit-id: c0a0afd077
2024-06-25 09:26:10 +02:00
Hadi
9c1afd279c Update TODO.md
Former-commit-id: e047f99306
2024-06-24 22:31:49 +02:00
Hadi
f998316b9e rearrange folders
Former-commit-id: fbb6fe70ff
2024-06-24 21:18:20 +02:00
Hadi
fea1eade7f Change notification system
Former-commit-id: 3b84f735ee
2024-06-24 21:13:22 +02:00
Hadi
2517219f4c Fix
Former-commit-id: 1cdfe8e278
2024-06-24 20:44:09 +02:00
Hadi
c5d95b14ea Update TODO.md
Former-commit-id: 1eb830a97c
2024-06-24 16:37:59 +02:00
Hadi
0a7befb23b todo update
Former-commit-id: ec924af562
2024-06-24 14:35:46 +02:00
Hadi
41116fb2b5 update
Former-commit-id: 5d47643320
2024-06-24 11:05:38 +02:00
Hadi
cf2f5f2f9b Update
Former-commit-id: 282c04af67
2024-06-24 00:40:05 +02:00
Hadi
35ba84724f Update
Former-commit-id: 7397237149
2024-06-24 00:33:36 +02:00
Hadi
2151fc6f90 Update
Former-commit-id: 1a4ff5e542
2024-06-24 00:17:07 +02:00
Hadi
45ed8258ca Update
Former-commit-id: 0cec3f04d2
2024-06-24 00:12:53 +02:00
Hadi
ffc95dcd1b Update
Former-commit-id: 87ae5dd36f
2024-06-24 00:10:35 +02:00
Hadi
2c68166067 update
Former-commit-id: 2e31e74d92
2024-06-23 23:51:07 +02:00
Hadi
ae83c7497a update
Former-commit-id: 0922357af2
2024-06-23 23:47:31 +02:00
Hadi
03c675cf62 update
Former-commit-id: 1d298c60d5
2024-06-23 23:43:47 +02:00
Hadi
a4d8670563 update
Former-commit-id: d5aa5b1a49
2024-06-23 23:32:18 +02:00
Hadi
0114b629e6 update
Former-commit-id: 469f903657
2024-06-23 20:11:35 +02:00
Hadi
7f4280af72 update
Former-commit-id: ae95a1b457
2024-06-23 20:10:15 +02:00
Hadi
e7b4080c2a update
Former-commit-id: 101712c8bb
2024-06-23 19:59:53 +02:00
Hadi
c541832066 update
Former-commit-id: 5dce9af547
2024-06-23 19:54:21 +02:00
Hadi
8b57bffcd6 update
Former-commit-id: d215570fea
2024-06-23 18:35:16 +02:00
Hadi
7a4e3ad1a3 update
Former-commit-id: aa7801b04f
2024-06-23 18:32:04 +02:00
Hadi
7a2c2c6201 update
Former-commit-id: d1789906a2
2024-06-23 18:28:15 +02:00
Hadi
a8c0fdb670 update
Former-commit-id: a4f74f5fe7
2024-06-23 18:26:25 +02:00
Hadi
5ce310fe6d update
Former-commit-id: afd56d878e
2024-06-23 18:24:30 +02:00
Hadi
89818e9ee2 update
Former-commit-id: 12ebcadd71
2024-06-23 17:53:09 +02:00
Hadi
d943b85cc9 update
Former-commit-id: c5420f8d3a
2024-06-23 17:52:19 +02:00
Hadi
8eaa78bf4b Update
Former-commit-id: f8786dd24f
2024-06-23 17:32:18 +02:00
Hadi
82d6c29f21 Update
Former-commit-id: caee38f568
2024-06-23 15:48:52 +02:00
Hadi
72a8aa16bb Update
Former-commit-id: 487d81ff86
2024-06-23 15:14:29 +02:00
Hadi
5c9b799afe Update
Former-commit-id: 4046038cf2
2024-06-23 14:53:23 +02:00
Hadi
eb584dac56 Update
Former-commit-id: e9a5a9e574
2024-06-23 14:52:35 +02:00
Hadi
2fd610a09c Update
Former-commit-id: 98f708d693
2024-06-23 14:50:06 +02:00
Hadi
8eb88f474a Update
Former-commit-id: 66cd92d740
2024-06-23 14:47:22 +02:00
Hadi
f73291c269 Update
Former-commit-id: 2b5813057c
2024-06-23 14:46:11 +02:00
Hadi
e93e5807f9 Update
Former-commit-id: bbb35737c2
2024-06-23 14:45:51 +02:00
Hadi
6d0a2e186b Update
Former-commit-id: 1efdadbdad
2024-06-23 14:23:36 +02:00
Hadi
c2a700ef3a Update
Former-commit-id: 9f98ec2a52
2024-06-23 14:22:01 +02:00
Hadi
7b0deaf9c1 Update
Former-commit-id: 6f8c9d7836
2024-06-23 14:19:45 +02:00
Hadi
98d1ccb2c0 Add remote rebuild (server)
Former-commit-id: d1f5aa6dfa
2024-06-23 13:53:01 +02:00
Hadi
e6f46e1788 Update
Former-commit-id: 54eb13bc40
2024-06-23 13:46:07 +02:00
Hadi
e6c2becccb Update
Former-commit-id: f29e68ef63
2024-06-23 13:36:37 +02:00
Hadi
cfc9f99c83 Update
Former-commit-id: 8260c9d554
2024-06-21 15:49:16 +02:00
Hadi
3c43b277b7 Update
Former-commit-id: ec5b132e17
2024-06-21 15:48:37 +02:00
Hadi
64f789e52a Update
Former-commit-id: 45c0175d72
2024-06-21 15:25:14 +02:00
Hadi
9ab4dae87b Update
Former-commit-id: 154c21859d
2024-06-21 13:58:14 +02:00
Hadi
f2b742e470 Update
Former-commit-id: d100690333
2024-06-21 13:45:59 +02:00
Hadi
a3f44fa53c Update
Former-commit-id: 9fd64e9f04
2024-06-21 13:44:56 +02:00
Hadi
91d06ef6a4 Update
Former-commit-id: 909c32fef8
2024-06-21 13:42:14 +02:00
Hadi
b9df9861fc Update
Former-commit-id: feea4f5ad9
2024-06-21 13:14:54 +02:00
Hadi
049e2a9214 Update
Former-commit-id: 1ce9d2e46f
2024-06-20 18:04:50 +02:00
Hadi
78bb7ff465 Update
Former-commit-id: ae48fb8605
2024-06-20 17:43:20 +02:00
Hadi
8e04a559b9 Update
Former-commit-id: 636d921341
2024-06-20 17:34:56 +02:00
Hadi
aa3f3e2269 Update
Former-commit-id: fa7ec583b6
2024-06-20 17:33:40 +02:00
Hadi
bcc505f5dd Update
Former-commit-id: a723bd6087
2024-06-20 17:30:14 +02:00
Hadi
f0617924b0 Update
Former-commit-id: 3950c68160
2024-06-20 17:08:25 +02:00
Hadi
14c33a8191 Update
Former-commit-id: 4653a9e86f
2024-06-20 16:39:59 +02:00
Hadi
fcd92d0155 Update
Former-commit-id: 9e191c76eb
2024-06-20 16:32:27 +02:00
Hadi
9d73c644a7 Update
Former-commit-id: 2996ca0d12
2024-06-20 15:43:04 +02:00
Hadi
c5c0fdc7cc Update
Former-commit-id: c7beef1880
2024-06-20 15:41:54 +02:00
Hadi
42d7b8b820 Update
Former-commit-id: 1a3c28f69a
2024-06-20 15:35:06 +02:00
Hadi
2983dd6270 Update
Former-commit-id: 597f88adab
2024-06-20 15:33:42 +02:00
Hadi
7d684153a9 Update
Former-commit-id: 85a4a4ad2a
2024-06-20 15:31:01 +02:00
Hadi
bc26eb05a7 Update
Former-commit-id: e078d81b51
2024-06-20 15:29:25 +02:00
Hadi
ec38767570 Update
Former-commit-id: b676e1bdbb
2024-06-20 15:27:32 +02:00
Hadi
5340cfeb84 Update
Former-commit-id: 83252b0da5
2024-06-20 15:16:28 +02:00
Hadi
734e310f28 Update
Former-commit-id: 56b09db387
2024-06-20 15:13:02 +02:00
Hadi
e388cc7556 Update
Former-commit-id: 6f998c79ab
2024-06-20 15:07:15 +02:00
Hadi
0263e08415 Update
Former-commit-id: 4bec772eb2
2024-06-20 12:10:00 +02:00
Hadi
65f8fcc926 Update
Former-commit-id: 5bdbfb3a5f
2024-06-20 12:09:20 +02:00
Hadi
59a3c1d4de Update
Former-commit-id: 0cc6e18f3d
2024-06-20 11:45:19 +02:00
Hadi
206d4d7433 Update
Former-commit-id: f9bd98bc58
2024-06-20 11:42:57 +02:00
Hadi
8c8833b26e Update
Former-commit-id: 81e72e574d
2024-06-20 11:41:28 +02:00
Hadi
392a3e4998 Update
Former-commit-id: fe393e3c2a
2024-06-20 11:38:53 +02:00
Hadi
76a423a964 Update
Former-commit-id: e0803c6bd5
2024-06-20 11:31:02 +02:00
Hadi
63c19a0c61 Update
Former-commit-id: f761b8c66a
2024-06-20 11:27:41 +02:00
Hadi
f3f4689cc8 Update
Former-commit-id: 01b056d4cb
2024-06-20 11:25:35 +02:00
Hadi
2050efbfbf Update
Former-commit-id: 73ac8d8188
2024-06-20 11:24:41 +02:00
Hadi
8d5734b739 Update TODO.md
Former-commit-id: b90999d5b6
2024-06-20 09:39:02 +02:00
Hadi
f23897d7d8 Update TODO.md
Former-commit-id: 365fab9659
2024-06-20 02:47:27 +02:00
Hadi
22b00bf301 Update
Former-commit-id: a0c5bd962b
2024-06-20 02:45:24 +02:00
Hadi
76355d3ca1 Fix
Former-commit-id: b796117725
2024-06-20 01:55:49 +02:00
Hadi
14b29a6588 Update
Former-commit-id: 1b4cd64024
2024-06-20 01:31:30 +02:00
Hadi
5eafcf5b76 Update
Former-commit-id: 8ec1744969
2024-06-20 01:23:20 +02:00
Hadi
9c43d22eb1 Update
Former-commit-id: b44a2e17f9
2024-06-20 00:25:10 +02:00
Hadi
06428958dd Update
Former-commit-id: de9b1de37c
2024-06-20 00:17:59 +02:00
Hadi
0d84783032 Update
Former-commit-id: e94276c144
2024-06-20 00:15:18 +02:00
Hadi
25af8d6213 Update
Former-commit-id: 0114f7281b
2024-06-20 00:14:15 +02:00
Hadi
e3549ce9e5 Update
Former-commit-id: 5db186ba9b
2024-06-20 00:07:23 +02:00
Hadi
1d859e5c13 Update
Former-commit-id: eec2b56fcd
2024-06-20 00:06:06 +02:00
Hadi
4ef84d1f8d Update
Former-commit-id: 265651c931
2024-06-19 23:59:20 +02:00
Hadi
ed791eb748 Update
Former-commit-id: 7e5c45d406
2024-06-19 23:53:17 +02:00
Hadi
5c6acc2028 Update
Former-commit-id: ae9ffdf2a8
2024-06-19 23:52:10 +02:00
Hadi
a9dc177a34 Update
Former-commit-id: 325f8e9d15
2024-06-19 23:51:36 +02:00
Hadi
ef32063715 Update
Former-commit-id: 29905a460b
2024-06-19 23:49:03 +02:00
Hadi
bdaa52dedc Update
Former-commit-id: 92e8eb8983
2024-06-19 23:48:36 +02:00
Hadi
c5d7ba76c7 Update
Former-commit-id: cafce8e7c9
2024-06-19 23:47:35 +02:00
Hadi
358e8c9158 Update
Former-commit-id: 21482d4a44
2024-06-19 23:45:03 +02:00
Hadi
d1dd841da8 Update
Former-commit-id: 1b3cc99197
2024-06-19 23:42:42 +02:00
Hadi
8137ebfd99 Update
Former-commit-id: adecf1bc29
2024-06-19 23:39:30 +02:00
Hadi
cc45eda3ef Update
Former-commit-id: a272a038f1
2024-06-19 23:38:04 +02:00
Hadi
8415d92264 Update
Former-commit-id: a6d3e17135
2024-06-19 23:32:31 +02:00
Hadi
17d95716b6 Update
Former-commit-id: 0e291d3388
2024-06-19 23:28:50 +02:00
Hadi
6db2fc373d Update
Former-commit-id: c852176e0d
2024-06-19 23:28:13 +02:00
Hadi
ebbf404c68 Update
Former-commit-id: ad339a19a6
2024-06-19 23:23:29 +02:00
Hadi
9fc328f675 Update
Former-commit-id: aad8b9d8e6
2024-06-19 23:21:24 +02:00
Hadi
ba489aaea3 Update
Former-commit-id: debb139aeb
2024-06-19 23:20:49 +02:00
Hadi
67ec1dd41f Update
Former-commit-id: 939597dd90
2024-06-19 23:15:52 +02:00
Hadi
ae50fc36d6 Update
Former-commit-id: 7a89711897
2024-06-19 23:11:37 +02:00
Hadi
f401067dd9 Update
Former-commit-id: e51b20e4ab
2024-06-19 23:07:47 +02:00
Hadi
a02bee95de Update
Former-commit-id: 9dbc87c010
2024-06-19 23:02:56 +02:00
Hadi
ec7b2a2fe9 Update
Former-commit-id: 137dd150fd
2024-06-19 22:59:06 +02:00
Hadi
2a40427cd6 Update
Former-commit-id: 6e66f200a3
2024-06-19 22:57:14 +02:00
Hadi
eb42d3e4d1 Update
Former-commit-id: 28dcb1f574
2024-06-19 22:50:58 +02:00
Hadi
03f4715693 Update
Former-commit-id: 536de64d5c
2024-06-19 22:48:21 +02:00
Hadi
c35dfb8017 Update
Former-commit-id: ac1c7da665
2024-06-19 22:47:37 +02:00
Hadi
7bdacd9ed5 Update
Former-commit-id: d3604fa6cf
2024-06-19 22:47:13 +02:00
Hadi
c8ca22f308 Update
Former-commit-id: 241a91487c
2024-06-19 22:46:33 +02:00
Hadi
13b147932e Update
Former-commit-id: 2f2aad2b91
2024-06-19 22:45:37 +02:00
Hadi
29b6dc17c0 Update
Former-commit-id: ce756d2f78
2024-06-19 22:44:55 +02:00
Hadi
8ff1df4333 Update
Former-commit-id: 94cb2758e6
2024-06-19 22:40:01 +02:00
Hadi
af0241f1eb Update
Former-commit-id: 50ee6b2dbf
2024-06-19 22:39:12 +02:00
Hadi
3719cc90be Update
Former-commit-id: 0949607442
2024-06-19 22:37:52 +02:00
Hadi
396297d6f7 Update
Former-commit-id: 12e8e9e870
2024-06-19 22:36:42 +02:00
Hadi
cb4b5741d7 Update
Former-commit-id: aa519ba3ee
2024-06-19 22:36:18 +02:00
Hadi
da000e60bd Update
Former-commit-id: 2cd6b6be58
2024-06-19 22:33:48 +02:00
Hadi
c4a38e7691 Update
Former-commit-id: 3939348e1b
2024-06-19 22:32:03 +02:00
Hadi
8972cd081b Update
Former-commit-id: 26767f861c
2024-06-19 21:53:34 +02:00
Hadi
b930a7e9f7 Update
Former-commit-id: adbbcec22c
2024-06-19 21:52:46 +02:00
Hadi
85a7fc8ca7 Update
Former-commit-id: f868a937d5
2024-06-19 21:50:36 +02:00
Hadi
869a442843 Update
Former-commit-id: c9ba9b30fe
2024-06-19 21:47:33 +02:00
Hadi
49b6d81216 Update
Former-commit-id: f2b659add1
2024-06-19 21:43:28 +02:00
Hadi
21d84fd39d Update
Former-commit-id: c18fffcb3d
2024-06-19 21:42:12 +02:00
Hadi
2a12db0133 test
Former-commit-id: b5fe18ab2f
2024-06-19 21:41:04 +02:00
Hadi
9c5118264c add hardware config
Former-commit-id: 115c6345c3
2024-06-19 21:31:18 +02:00
Hadi
3a8df54936 Update
Former-commit-id: 884abe9e6c
2024-06-19 21:22:41 +02:00
Hadi
a3c8ad5efb Update
Former-commit-id: d877b40d0b
2024-06-19 21:18:28 +02:00
Hadi
b38a1ccef8 test
Former-commit-id: 530e9d8bea
2024-06-19 21:17:54 +02:00
Hadi
321bb0bd16 Update
Former-commit-id: d9e4bd4cd1
2024-06-19 21:16:15 +02:00
Hadi
6c96796584 Update
Former-commit-id: 4cba1f2acf
2024-06-19 21:12:30 +02:00
Hadi
c6bc2ba192 Update
Former-commit-id: 8c0c636ec8
2024-06-19 21:05:03 +02:00
Hadi
c5f8e0f7a2 Update
Former-commit-id: 39a4b5cc00
2024-06-19 21:03:58 +02:00
Hadi
9ff0e4cbe4 Update
Former-commit-id: a5e4015cf3
2024-06-19 21:01:08 +02:00
Hadi
4c0a61ccad Update
Former-commit-id: 5414f49671
2024-06-19 21:01:01 +02:00
Hadi
8ddabcee34 Update
Former-commit-id: 10f3754b0a
2024-06-19 09:55:58 +02:00
Hadi
ccef91e0ed Update
Former-commit-id: 063534079d
2024-06-18 19:15:19 +02:00
Hadi
f9057b2983 Update
Former-commit-id: d4abd221c0
2024-06-18 19:14:18 +02:00
Hadi
5e276e88f8 Update
Former-commit-id: 77696506bc
2024-06-18 19:13:15 +02:00
Hadi
6c4428b4ef Update
Former-commit-id: 05932e597c
2024-06-18 19:05:40 +02:00
Hadi
fd32e06cd2 Update README.md
Former-commit-id: 6606762bca
2024-06-18 15:49:32 +02:00
Hadi
1a4615a781 change image
Former-commit-id: e0bae26b5d
2024-06-18 15:44:27 +02:00
Hadi
3823561a0a Update README.md
Former-commit-id: cd91c40f7d
2024-06-18 15:43:27 +02:00
Hadi
b667a65f31 Add files via upload
Former-commit-id: 07e81831fa
2024-06-18 15:42:24 +02:00
Hadi
88df4c8d42 Add files via upload
Former-commit-id: a900a2a121
2024-06-18 15:34:25 +02:00
Hadi
8082c06548 update readme colors
Former-commit-id: d2916aa984
2024-06-18 15:25:59 +02:00
Hadi
21bf90efc0 edit
Former-commit-id: f79b67c04e
2024-06-18 14:39:51 +02:00
Hadi
6d22f2d409 move nextcloud to home manager
Former-commit-id: 6c936a12f1
2024-06-18 14:32:35 +02:00
Hadi
ffa788dd4e update todo
Former-commit-id: b5ae490899
2024-06-18 14:26:49 +02:00
Hadi
79a045e3bb todo update
Former-commit-id: fd9b7ea141
2024-06-18 14:20:23 +02:00
Hadi
2fb8a97b71 update
Former-commit-id: c11a21a34a
2024-06-18 14:09:55 +02:00
Hadi
26065f3699 fix
Former-commit-id: ba09c5cfe3
2024-06-18 14:07:48 +02:00
Hadi
4f2ba52404 add tailscale
Former-commit-id: 8ec108927c
2024-06-18 14:05:14 +02:00
Hadi
be23ff67aa fix
Former-commit-id: d311675fe9
2024-06-18 13:41:33 +02:00
Hadi
ff79cbf502 update
Former-commit-id: 63fd084dcf
2024-06-18 13:41:07 +02:00
Hadi
8b8f3fa54b Update
Former-commit-id: 759f7e715a
2024-06-18 12:36:26 +02:00
Hadi
1f2bb4c33a Update
Former-commit-id: c0e0609ef4
2024-06-18 12:35:13 +02:00
Hadi
9d458b7e04 Update
Former-commit-id: fb2f1824a3
2024-06-18 12:32:45 +02:00
Hadi
dedf840131 Update
Former-commit-id: bfed924f0f
2024-06-18 12:30:56 +02:00
Hadi
7dc2c69292 Update
Former-commit-id: 1ad4233def
2024-06-18 12:21:57 +02:00
Hadi
def86d31a4 Update
Former-commit-id: b536a87854
2024-06-18 12:10:45 +02:00
Hadi
3038f62405 update
Former-commit-id: c3b54c538f
2024-06-18 11:42:22 +02:00
Hadi
fe01b971cf temp
Former-commit-id: 40648d4041
2024-06-18 11:26:35 +02:00
Hadi
918c865202 temp
Former-commit-id: cb4a8f024f
2024-06-18 11:11:08 +02:00
Hadi
6e30f6cd4e temp
Former-commit-id: f4aa262e74
2024-06-18 10:29:37 +02:00
Hadi
ff73c05ba6 temp
Former-commit-id: ac6a0f59c4
2024-06-18 10:23:07 +02:00
Hadi
dbf520b556 temp
Former-commit-id: 93b7145e70
2024-06-18 10:10:21 +02:00
Hadi
fc046db74b temp
Former-commit-id: dc4f3160cc
2024-06-18 09:54:18 +02:00
Hadi
96bae83dd1 rename shared to modules
Former-commit-id: 2ccd17867f
2024-06-18 09:21:14 +02:00
Hadi
aae802193c Update
Former-commit-id: d3e6730df0
2024-06-18 00:01:23 +02:00
Hadi
8dc316d6a4 Update
Former-commit-id: 57eb1c9459
2024-06-17 23:57:26 +02:00
Hadi
ad86356f9a update
Former-commit-id: 880ed3d0e9
2024-06-17 23:47:58 +02:00
Hadi
007ef7304b add server
Former-commit-id: 93ba190cbf
2024-06-17 23:41:41 +02:00
Hadi
019a6deaf4 Update
Former-commit-id: 251f535146
2024-06-17 23:32:56 +02:00
Hadi
7da96ad2c7 Update
Former-commit-id: 8e0691ca6a
2024-06-17 23:32:52 +02:00
Hadi
7ebc1ba322 add server
Former-commit-id: 25d4dc93f1
2024-06-17 23:29:47 +02:00
Hadi
c5e9cb9c32 add pfetch
Former-commit-id: d1b581fd58
2024-06-17 21:34:54 +02:00
Hadi
a3ec52058e update
Former-commit-id: bbaf52b496
2024-06-17 20:47:28 +02:00
Hadi
d78f213006 update
Former-commit-id: 5835d73997
2024-06-17 20:44:37 +02:00
Hadi
73b2015d02 Update
Former-commit-id: bbbf516812
2024-06-17 20:38:13 +02:00
Hadi
cedad9a7a6 Update
Former-commit-id: c0894a20ca
2024-06-17 20:37:22 +02:00
Hadi
65d6c2f28f Update
Former-commit-id: 6f8698e345
2024-06-17 20:37:09 +02:00
Hadi
18c7618ebf Update
Former-commit-id: b49b2d2c60
2024-06-17 20:08:17 +02:00
Hadi
e29a5c2517 update
Former-commit-id: a703d0816b
2024-06-17 19:50:35 +02:00
Hadi
6f3c922010 update
Former-commit-id: 4aba4116de
2024-06-17 19:45:21 +02:00
Hadi
2b902ef731 Update
Former-commit-id: 9db5b9231e
2024-06-17 19:23:43 +02:00
Hadi
7cb070b6b1 Update
Former-commit-id: dc5c227667
2024-06-17 19:20:34 +02:00
Hadi
e788f5954e update
Former-commit-id: 912c0abc51
2024-06-17 19:20:01 +02:00
Hadi
bfb370d8fe update
Former-commit-id: d8659825a2
2024-06-17 19:18:05 +02:00
Hadi
0332b6c56b Update README.md
Former-commit-id: 087dd4dfec
2024-06-17 17:10:04 +02:00
Hadi
e5bdab5a24 update
Former-commit-id: a6207c07ab
2024-06-17 17:04:39 +02:00
Hadi
a42ef3ff84 add hyprcursor
Former-commit-id: efc017e5bd
2024-06-17 16:55:42 +02:00
Hadi
da33cf1fd3 moved gtk theme
Former-commit-id: 2982684252
2024-06-17 16:54:50 +02:00
Hadi
4290a5e814 update
Former-commit-id: 5e3a372259
2024-06-17 16:53:18 +02:00
Hadi
8e425d5d87 temp
Former-commit-id: 8d16aa86e0
2024-06-17 16:35:53 +02:00
Hadi
8aeff4bb9a temp
Former-commit-id: 3f613c9910
2024-06-17 16:33:34 +02:00
Hadi
6d23ca208e update
Former-commit-id: 8b2f8c08d3
2024-06-17 16:23:03 +02:00
Hadi
41ccb74258 update
Former-commit-id: f2c80d003c
2024-06-17 14:24:18 +02:00
Hadi
5f1b047221 Add themes folder
Former-commit-id: a6cc46cf93
2024-06-17 14:18:15 +02:00
Hadi
a5b26b92de Update
Former-commit-id: 857c98e32a
2024-06-17 13:49:05 +02:00
Hadi
5e71ef48dd Update
Former-commit-id: d169306a68
2024-06-17 13:47:13 +02:00
Hadi
2fc51aa02e test hosts
Former-commit-id: b22d2f596f
2024-06-17 09:23:37 +02:00
Hadi
7dc90af1c8 test
Former-commit-id: 026be4852e
2024-06-17 09:22:31 +02:00
Hadi
7a564110a5 Update
Former-commit-id: 49cf0fc0e3
2024-06-14 21:18:42 +02:00
Hadi
bb08cd494a Add animations speed in variables
Former-commit-id: 7267fa55fb
2024-06-14 21:13:50 +02:00
Hadi
3b5885e2c9 Update
Former-commit-id: c410d04e1a
2024-06-14 21:04:33 +02:00
Hadi
d9810c3c1f Update
Former-commit-id: fad7c6e46d
2024-06-14 20:58:52 +02:00
Hadi
13f060d100 Update
Former-commit-id: 089c57802e
2024-06-14 15:28:30 +02:00
Hadi
40164e8cbd Update
Former-commit-id: 47701f3f49
2024-06-14 14:43:21 +02:00
Hadi
f9187d3252 Update
Former-commit-id: 5af6219fff
2024-06-14 14:24:09 +02:00
Hadi
b86fe8b3c7 Update
Former-commit-id: 9eb2dbf579
2024-06-14 14:21:27 +02:00
Hadi
9cdddb99c5 Refactor
Former-commit-id: ea15e4fa98
2024-06-14 14:20:06 +02:00
Hadi
35bb470eb1 Update
Former-commit-id: cf99fa5687
2024-06-14 14:03:35 +02:00
Hadi
1a1597ba49 Update
Former-commit-id: 98d8545186
2024-06-14 13:58:54 +02:00
Hadi
8c55eb48af Update
Former-commit-id: 60ee25a3fa
2024-06-14 13:56:43 +02:00
Hadi
cd3dfb985c Update
Former-commit-id: 25e4b89053
2024-06-14 13:44:30 +02:00
Hadi
19bf7838c4 Fix
Former-commit-id: 758b594e39
2024-06-14 12:54:46 +02:00
Hadi
05da8fd990 Update
Former-commit-id: eb94f6b527
2024-06-14 10:03:29 +02:00
Hadi
d28ad77974 test
Former-commit-id: aae1271cf0
2024-06-14 10:00:54 +02:00
Hadi
379424e228 Update
Former-commit-id: 70a3473916
2024-06-13 11:02:21 +02:00
Hadi
355336c9ff Update
Former-commit-id: 96b64e86e0
2024-06-13 10:52:06 +02:00
Hadi
46b213bbfa Temp
Former-commit-id: d117be2be9
2024-06-13 10:48:06 +02:00
Hadi
4fda4eda9e Update
Former-commit-id: a30df8d186
2024-06-11 23:41:38 +02:00
Hadi
3bffc0142c Stable
Former-commit-id: 3b52711351
2024-06-11 23:31:59 +02:00
Hadi
21f5d55569 Fix
Former-commit-id: 0e3989391e
2024-06-11 22:00:58 +02:00
Hadi
12d7254c83 Fix
Former-commit-id: e9310630bd
2024-06-11 21:58:04 +02:00
Hadi
35dd9bb964 Update
Former-commit-id: c2bb7f475b
2024-06-08 20:50:18 +02:00
Hadi
e104aec12d Update
Former-commit-id: 14eeb7bd3a
2024-06-08 02:32:42 +02:00
Hadi
e11dcecace Update
Former-commit-id: 08b9ef2677
2024-06-08 02:28:42 +02:00
Hadi
84d2f689ed Update
Former-commit-id: cbb276551c
2024-06-08 02:28:13 +02:00
Hadi
52c060c8be Update
Former-commit-id: 4556c5ea2f
2024-06-08 02:26:47 +02:00
Hadi
28dc3d1a94 Update
Former-commit-id: 6a017c8e70
2024-06-08 02:24:07 +02:00
Hadi
ef2ee20495 Update
Former-commit-id: e33ab5a6e1
2024-06-08 02:22:10 +02:00
Hadi
f4f253a218 Update
Former-commit-id: fbf3fe3255
2024-06-08 02:20:20 +02:00
Hadi
2f0f3c74f3 Update
Former-commit-id: 41a6de85b1
2024-06-08 02:19:25 +02:00
Hadi
2809615f7b Update
Former-commit-id: 6561d23db6
2024-06-08 02:18:53 +02:00
Hadi
a617044695 Update
Former-commit-id: 562dad765b
2024-06-08 02:17:50 +02:00
Hadi
379cd9e98d Update
Former-commit-id: 2656132158
2024-06-08 02:17:04 +02:00
Hadi
60d880aac2 Update
Former-commit-id: 430d30e4ee
2024-06-08 02:05:37 +02:00
Hadi
89d736c311 Update
Former-commit-id: 3a1896894f
2024-06-08 01:57:55 +02:00
Hadi
96faa74cf0 Update
Former-commit-id: 88fb9d078b
2024-06-08 01:56:21 +02:00
Hadi
0f6a8af649 Update
Former-commit-id: 1ccb720f3b
2024-06-08 00:36:44 +02:00
Hadi
80b3607bc1 Update
Former-commit-id: d2c8461193
2024-06-08 00:35:45 +02:00
Hadi
9c1c2a21a4 Update
Former-commit-id: 92b467525d
2024-06-08 00:01:20 +02:00
Hadi
ab13ead2a8 Update
Former-commit-id: 6c08c79a16
2024-06-07 23:54:10 +02:00
Hadi
dea3f4f4fd Update
Former-commit-id: e52f52f4da
2024-06-07 23:46:40 +02:00
Hadi
4bf7d41ff1 Update
Former-commit-id: b855318c55
2024-06-07 23:35:59 +02:00
Hadi
54bb1e2064 Update
Former-commit-id: ca8abfde1c
2024-06-07 23:34:02 +02:00
Hadi
3e818073e0 Update
Former-commit-id: 24de104139
2024-06-07 22:53:04 +02:00
Hadi
9c8d27e687 Update
Former-commit-id: 2c0246c84a
2024-06-07 22:43:37 +02:00
Hadi
ca138aa8af Update
Former-commit-id: 9177f93a96
2024-06-07 22:41:10 +02:00
Hadi
784df1e08f Update
Former-commit-id: 57867b1a22
2024-06-07 22:37:59 +02:00
Hadi
a12846fddc Update
Former-commit-id: 7b9e579a4e
2024-06-07 22:34:48 +02:00
Hadi
820268a2a1 Update
Former-commit-id: 65ec024028
2024-06-07 22:25:21 +02:00
Hadi
7e19f9ee0d Update
Former-commit-id: 19af1ccdc2
2024-06-07 22:11:42 +02:00
Hadi
6558683822 Update
Former-commit-id: 7d80970e9d
2024-06-07 22:08:09 +02:00
Hadi
8401688019 Update
Former-commit-id: 755a2e8f2b
2024-06-07 22:05:49 +02:00
Hadi
cfd999b373 Update
Former-commit-id: 160d302a74
2024-06-07 21:49:44 +02:00
Hadi
70b156b828 Add pub key
Former-commit-id: b674a8be1b
2024-06-07 21:46:15 +02:00
Hadi
6e056afe67 Fix
Former-commit-id: e2382abacc
2024-06-07 21:41:04 +02:00
Hadi
caa93f691c Add hardware config for server
Former-commit-id: bf7dd645ba
2024-06-07 21:38:39 +02:00
Hadi
34776f0af1 Update
Former-commit-id: 7bb06e521f
2024-06-07 21:37:48 +02:00
Hadi
7f30239b2a Add heaven (my server)
Former-commit-id: 17f93ea60b
2024-06-07 21:21:03 +02:00
Hadi
6d744fab45 Update
Former-commit-id: d917ac9f6a
2024-06-07 10:55:45 +02:00
Hadi
cf6ed4a265 Update
Former-commit-id: 98556f202e
2024-06-03 20:18:30 +02:00
Hadi
62e0472698 Update
Former-commit-id: 0f98d762a2
2024-05-25 10:53:38 +02:00
Hadi
d477340177 Update
Former-commit-id: c074db2779
2024-05-20 19:44:45 +02:00
Hadi
f9c910f5ac Add hyprland cachix
Former-commit-id: 98186715b1
2024-05-17 14:52:18 +02:00
Hadi
41a225ec83 Merge pull request #1 from anotherhadi/unstable
Update

Former-commit-id: 0087ca74be
2024-05-17 14:46:30 +02:00
Hadi
35c98d1b97 Update
Former-commit-id: 5fe726fd20
2024-05-17 14:44:56 +02:00
Hadi
1a477e26bc More variables
Former-commit-id: cc1efb2588
2024-05-17 10:28:02 +02:00
Hadi
8166950e74 Update
Former-commit-id: 0b32914be2
2024-05-16 17:59:50 +02:00
Hadi
ea0d1cee92 Add nvim noice
Former-commit-id: bc9101e542
2024-05-11 00:37:16 +02:00
Hadi
8df0278272 Add table of contents
Former-commit-id: 42876ccac3
2024-05-09 16:58:42 +02:00
Hadi
6c471c33f7 Add compress/extract
Former-commit-id: 728797b8c5
2024-05-09 16:55:46 +02:00
500 changed files with 19118 additions and 2525 deletions

1
.gitignore vendored
View File

@@ -1,2 +1 @@
.sops.yaml
todolist.md todolist.md

11
.sops.yaml Normal file
View File

@@ -0,0 +1,11 @@
keys:
- &primary age12yvtj49pfh3fqzqflscm0ek4yzrjhr6cqhn7x89gdxnlykq0xudq5c7334
creation_rules:
- path_regex: hosts/laptop/secrets/laptop.yaml$
key_groups:
- age:
- *primary
- path_regex: hosts/server/secrets/server.yaml$
key_groups:
- age:
- *primary

211
README.md
View File

@@ -1,157 +1,66 @@
<h1 align="center"> [//]: # (Title: Nixy)
<img src="https://image.nostr.build/70ebe2b5183879d8c0ffa682cd0089e030ad01909678b242ed86449517eac3a5.png" width="100px" /> [//]: # (Description: Nixy is a Hyprland NixOS configuration with home-manager, secrets and custom theming all in one place. It's a simple way to manage your system configuration and dotfiles.)
<br> [//]: # (Author: Hadi)
Nixy [//]: # (Date: 08/18/24)
<br> [//]: # (Version: v2.0.1)
<img src="https://image.nostr.build/aaf8cf0f3b9784c817f8cf328f19222db2e1886dfb89ae97de83ffa101d437b4.png" width="600px" /> <br>
<div align="center">
<div align="center"> <div align="center">
<p></p> <img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/docs/src/logo.png" width="100px" />
<div align="center"> </div>
<br>
# Nixy
<br>
<div align="center">
<a href="https://github.com/anotherhadi/nixy">
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message=v2.0.1&colorA=181825&colorB=89b4fa&logo=githubactions&logoColor=89b4fa"/>
</a>
<a href="https://github.com/anotherhadi/nixy/stargazers"> <a href="https://github.com/anotherhadi/nixy/stargazers">
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=a158ff&labelColor=040409&style=for-the-badge&logo=starship&logoColor=a158ff"> <img src="https://img.shields.io/github/stars/anotherhadi/nixy?color=89b4fa&labelColor=181825&style=for-the-badge&logo=starship&logoColor=89b4fa">
</a> </a>
<a href="https://github.com/anotherhadi/nixy/"> <a href="https://github.com/anotherhadi/nixy/">
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=a158ff&labelColor=040409&style=for-the-badge&logo=github&logoColor=a158ff"> <img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color=89b4fa&labelColor=181825&style=for-the-badge&logo=github&logoColor=89b4fa">
</a> </a>
<a href="https://nixos.org"> <a href="https://nixos.org">
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=040409&logo=NixOS&logoColor=a158ff&color=a158ff"> <img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor=181825&logo=NixOS&logoColor=89b4fa&color=89b4fa">
</a> </a>
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE"> <a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=040409&colorB=a158ff&logo=unlicense&logoColor=a158ff&"/> <img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA=181825&colorB=89b4fa&logo=unlicense&logoColor=89b4fa"/>
</a> </a>
</div> </div>
<br> <br>
</div>
</h1>
Hello there! This is my **NixOs (w/home-manager) dotfiles** repo. It's still a *work in progress*, and I'm still learning how to use nix. **Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place.
It's a simple way to manage your system configuration and dotfiles.
## Table of Content
- [Table of Content](#table-of-content)
- [Gallery](#gallery)
- [Architecture](#architecture)
- [Installation](#installation)
- [Documentation](#documentation)
## Gallery ## Gallery
![neofetch](https://image.nostr.build/c208c164ae04e4c58e01adb9fab584b163a565155865833851275f89c9270b7a.jpg) ![catppuccin1](docs/src/catppuccin/1.png)
![qutebrowser](https://image.nostr.build/8cc32d981e6be256bdc37a2571c31bb76d7c3335ce7c76fa6eca89a03019bfc9.jpg) ![catppuccin2](docs/src/catppuccin/2.png)
![spotify](https://image.nostr.build/76b18bcbcdf1d911a2dbdff7bfac6652044d45602a3dce9d9c53feb295d13245.jpg) ![catppuccin3](docs/src/catppuccin/3.png)
![wofi](https://image.nostr.build/90d69ffe6251c17e25b0fb44abadaeb0dfe6db8210d935fca14bf8b00be49fa6.jpg)
## Apps ## Architecture
<details> - 🏠 `home` are the dotfiles and configuration files for the users
<summary>Click to expand</summary> - 'programs' is a collection of apps configured with home-manager
- 'scripts' is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
| Category | Software | - 'system' is some desktop environment like configuration
|----------------|---------------| - 'wallpapers' are... wallpapers
| WM | Hyprland | - 💻 `hosts` are the system configuration files
| | hyprlock | - 'laptop' is my configuration for my laptop with Nvidia that you can copy
| | hyprpaper | - 'server' is for my homeserver (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
| | hypridle | - 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
| | wlogout | - 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
| Bar | waybar |
| Terminal | kitty |
| Shell | zsh |
| | tmux |
| | starship |
| | bat |
| | eza |
| | zoxide |
| | fzf |
| Editor | nixvim |
| File manager | lf |
| | thunar |
| Browser | qutebrowser |
| Music | spicetify |
| Notifications | dunst |
| Launcher | wofi |
| DM | tuigreet |
| Secrets | sops-nix |
| Misc | lazygit |
| | neofetch |
| | cava |
| | ... |
</details>
## Themes & Colors
Themes and colors are managed by the `home/themes` folder. You can copy the default `nixy.nix` theme and make your own.
To apply the theme to duckduckgo, follow the instructions in `$HOME/.config/duckduckgo-colorscheme.js`.
## Scripts
### Nix/NixOs shortcuts
<details>
<summary>Click to expand</summary>
- `nixy-edit`
- `nixy-rebuild`
- `nixy-update`
- `nixy-gc` # garbage collection
- `nixy-cb` # clean boot menu
</details>
### Brightness control
<details>
<summary>Click to expand</summary>
- `brightness-up`
- `brightness-down`
- `brightness-change <up/down> <increment>`
</details>
### Sound control
<details>
<summary>Click to expand</summary>
- `sound-up`
- `sound-down`
- `sound-toggle`
- `sound-output`
- `sound-change <up/down/mute> <increment>`
</details>
### Caffeine
<details>
<summary>Click to expand</summary>
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
- `caffeine` # Toggle caffeine
- `caffeine-status` # Return active/inactive
</details>
### Night-Shift
<details>
<summary>Click to expand</summary>
Blue light filter, using wlsunset
- `night-shift-on`
- `night-shift-off`
</details>
### Nerdfont FZF
<details>
<summary>Click to expand</summary>
Nerdfont fzf is a quick way to search for nerdfont icons locally.
It will copy the selected icon to the clipboard.
- `nerdfont-fzf`
</details>
## Installation ## Installation
@@ -159,11 +68,25 @@ It will copy the selected icon to the clipboard.
git clone https://github.com/anotherhadi/nixy ~/.config/nixos git clone https://github.com/anotherhadi/nixy ~/.config/nixos
``` ```
- Change the `variables.nix` file to match your configuration - Copy the `hosts/laptop` folder, rename it to your system name, and change the variables inside the `variables.nix` file
- Remove the hardware module in flake.nix line 30 - Add your `hardware-configuration.nix` to your new host's folder
- Change the `nixos/configuration.nix` file to match your system - Add your 'nixosConfigurations' inside `flake.nix` (You can edit your hostname one and change the lines containing '# CHANGEME')
- Copy your `hardware-configuration.nix` file to the `nixos` folder
> [!NOTE]
> When you add new files, don't forget to run `git add .` to add them to the git repository
```sh ```sh
sudo nixos-rebuild switch --flake ~/.config/nixos#nixy sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
``` ```
## Documentation
- [THEMES.md](docs/THEMES.md): How themes work and how to create your own
- [APPS.md](docs/APPS.md): Which apps are installed
- [SCRIPTS.md](docs/SCRIPTS.md): Scripts that are available
- [KEYBINDINGS.md](docs/KEYBINDINGS.md): Keybindings available in Hyprland
- [WALLPAPERS.md](docs/WALLPAPERS.md): Preview of every wallpapers available
- [TODO.md](docs/TODO.md): What's next (feel free to contribute)
- [CONTRIBUTING.md](docs/CONTRIBUTING.md): How to contribute
- [LICENSE](LICENSE): MIT License

56
docs/APPS.md Normal file
View File

@@ -0,0 +1,56 @@
# Apps and services
*non-exhaustive lists*
## Laptop
The laptop configuration is used by an Omen 16 laptop w/ nvidia and an amd gpu running NixOS.
The configurations files can be found in the `hosts/laptop` directory.
| Category | Name |
|-----------------------------------------|----------------|
| WM | Hyprland |
| | hyprlock |
| | hyprpaper |
| | hypridle |
| | wlogout |
| Bar | waybar |
| Terminal | kitty |
| Shell | zsh |
| | tmux |
| | starship |
| | bat |
| | eza |
| | zoxide |
| | fzf |
| Editor | neovim(nixvim) |
| File manager | lf |
| | thunar |
| Browser | qutebrowser |
| Music | spicetify |
| Notifications | dunst |
| Launcher | wofi |
| DM | tuigreet |
| Secrets | sops-nix |
| Misc | lazygit |
| | neofetch |
| | cava |
| See [hosts/laptop](../hosts/laptop/)... | |
## Server
The server configuration is used by a home server running NixOS.
The configurations files can be found in the `hosts/server` directory.
I mainly use it for self-hosting websites and services such as Nextcloud, Vaultwarden, ...
I exposed some services to the internet using a reverse proxy (Nginx) and cloudflare-dyndns, others are accessed through a tailscale network
### Apps
- Nextcloud
- Vaultwarden
- Adguard Home
- Unifi Controler
- Uptime Kuma
- "Jackflix"
- Jellyfin, Transmission, *arr
- See [hosts/server](../hosts/server/)...

19
docs/CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,19 @@
# Contributing to Nixy
Everybody is invited and welcome to contribute to Nixy. There is a lot to do... Check the [TODO.md](./TODO.md) file!
The process is straight-forward.
- Read [How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/guide/pull-requests.md#best-practices-for-faster-reviews) by Kubernetes (but skip step 0 and 1)
- Fork Nixy [git repository](https://github.com/anotherhadi/nixy).
- Write your changes (new theme, bug fixes, task in to-do, ...).
- Create a Pull Request against the main branch of Nixy.
> [!TIP]
> When wallpapers are added, run `./docs/scripts/compress_png.sh` and `./docs/scripts/create_preview_wallpapers.sh`
> [!TIP]
> To update the README, change the `./docs/src/README_template.md` and run `./docs/scripts/create_readme.sh`
> [!IMPORTANT]
> Don't push your host's folder

38
docs/KEYBINDINGS.md Normal file
View File

@@ -0,0 +1,38 @@
# Keybindings
The list of the keybindings working on Hyprland:
| Description | Keybinding | Command |
| --------------------------- | ---------------------- | ------------------------------------------------------------------ |
| Switch Workspace | SUPER + {Number} | workspace {Number} |
| Move app to Workspace | SUPER SHIFT + {Number} | movetoworkspace {Number} |
| Kitty | SUPER + RETURN | exec \${pkgs.kitty}/bin/kitty |
| Thunar | SUPER + E | exec \${pkgs.xfce.thunar}/bin/thunar |
| Qutebrowser | SUPER + B | exec \${pkgs.qutebrowser}/bin/qutebrowser |
| Bitwarden | SUPER + K | exec \${pkgs.bitwarden}/bin/bitwarden |
| Peaclock | SUPER + C | exec \${pkgs.kitty}/bin/kitty --class peaclock peaclock |
| Lock | SUPER + L | exec \${pkgs.hyprlock}/bin/hyprlock |
| Powermenu | SUPER + X | exec powermenu |
| Launcher | SUPER + SPACE | exec menu |
| Close window | SUPER + Q | killactive |
| Toggle Floating | SUPER + T | togglefloating |
| Toggle Fullscreen | SUPER + F | fullscreen |
| Move focus left | SUPER + left | movefocus l |
| Move focus Right | SUPER + right | movefocus r |
| Move focus Up | SUPER + up | movefocus u |
| Move focus Down | SUPER + down | movefocus d |
| Screenshot window | SUPER + PRINT | exec screenshot window |
| Screenshot monitor | PRINT | exec screenshot monitor |
| Screenshot region | SUPER SHIFT + PRINT | exec screenshot region |
| Screenshot region then edit | ALT PRINT | exec screenshot region swappy |
| Turn off night shift | SUPER + F2 | exec night-shift-off |
| Turn on night shift | SUPER + F3 | exec night-shift-on |
| Choose sound output | SUPER + F5 | exec \${pkgs.kitty}/bin/kitty --class floating zsh -c sound-output |
| Move Window (mouse) | SUPER + mouse:272 | movewindow |
| Resize Window (mouse) | SUPER + R | resizewindow |
| Toggle Mute | XF86AudioMute | exec sound-toggle |
| Lock when closing Lid | switch:Lid Switch | exec \${pkgs.hyprlock}/bin/hyprlock |
| Sound Up | XF86AudioRaiseVolume | exec sound-up |
| Sound Down | XF86AudioLowerVolume | exec sound-down |
| Brightness Up | XF86MonBrightnessUp | exec brightness-up |
| Brightness Down | XF86MonBrightnessDown | exec brightness-down |

59
docs/SCRIPTS.md Normal file
View File

@@ -0,0 +1,59 @@
# Scripts
Scripts are located in the `home/scripts` folder. Home-manager add those in the path.
## Nix/NixOs shortcuts
> [!TIP]
> The `hostname` variable in `hosts/yourhost/variables.nix` should be also the name of the `nixosConfiguration` in `flake.nix` file.
- `nixy` # UI
- `nixy rebuild`
- `nixy update`
- `nixy upgrade`
- `nixy gc` # garbage collection
- `nixy cb` # clean boot menu
## Brightness control
- `brightness-up`
- `brightness-down`
- `brightness-change <up/down> <increment>`
## Sound control
- `sound-up`
- `sound-down`
- `sound-toggle`
- `sound-output`
- `sound-change [up/down/mute] <increment>`
## Caffeine
Caffeine is a simple script that toggles hypridle (disable suspend & screenlock).
- `caffeine` # Toggle caffeine
- `caffeine-status` # Return active/inactive
## Night-Shift
Blue light filter, using wlsunset
- `night-shift` # Toggle night shift
- `night-shift-status` # Return active/inactive
- `night-shift-on`
- `night-shift-off`
## Nerdfont FZF
Nerdfont fzf is a quick way to search for nerdfont icons locally.
It will copy the selected icon to the clipboard.
- `nerdfont-fzf`
## Compress/Extract
Some shortcuts to compress and extract files.
- `compress` ...
- `extract` ...

32
docs/THEMES.md Normal file
View File

@@ -0,0 +1,32 @@
# Themes
Themes are defined in `hosts/themes`. Those themes define the colors, fonts, icons, etc, used by Hyprland and the apps/programs installed.
You can change the selected theme by changing the import statement of your host's variables.nix file.
> [!TIP]
> To apply the theme to DuckDuckGo, follow the instructions in `$HOME/.duckduckgo-colorscheme.js`
## Create your theme
Create a copy of one of the existing themes and change the variables.
Wallpapers are loaded from the `home/wallpapers` folder.
## Gallery
### Nixy
![nixy1](src/nixy/1.png)
![nixy2](src/nixy/2.png)
![nixy3](src/nixy/3.png)
### Catppuccin
![catppuccin1](src/catppuccin/1.png)
![catppuccin2](src/catppuccin/2.png)
![catppuccin3](src/catppuccin/3.png)
### Windows
![windows1](src/windows/1.png)
![windows2](src/windows/2.png)
![windows3](src/windows/3.png)

44
docs/TODO.md Normal file
View File

@@ -0,0 +1,44 @@
# Todolist
feel free to contribute <3 ([CONTRIBUTING.md](CONTRIBUTING.md))
- [ ] Jackflix V2
- Backup Radarr, Prowlarr, Sonarr config
- [ ] Nixy
- [~] Installation script ([install.sh](./scripts/install.sh) to test on a fresh install)
- [~] Variables-template with defaults
- [ ] Themes
- [ ] macOS theme
- [ ] Tofi (Wofi, but terminal based)
- [ ] Qutebrowser
- [ ] !!! Bitwarden integration (I need this.)
- [ ] Hyprland
- [-] Implement Hyprcursor (see home/system/hyprland/hyprcursor.nix: Not working, small cursor on some apps, big one on others)
- [ ] Animations based on app name
- [ ] Wofi: popin
- [ ] Wlogout: fade in
- [ ] Fix screenshots
- [ ] Fix hyprlock
- [ ] Hyprlock tty theme
- [ ] Nixvim
- [ ] Keymaps:
- Trouble
- Tagbar
- [ ] Disable background color for headlines.nvim for titles
- [ ] Backup system for some folders ($home/dev, $home/pictures, ...)
- [ ] Exclude file pattern (nodes modules, ...)
- [ ] Auto backup when a specific usb key is plugged
- [ ] Pika backup?
- [ ] Markdown to pdf tool
- [ ] Server
- [ ] Bitcoin-git
- [ ] ServerFetch: Neofetch like, but for server: CPU, RAM, Disk, Network, Uptime, status (check with uptime kuma API)
- [ ] Ntfy auth file
- [ ] Launch transmission-openvpn on boot (see hosts/server/modules/jackflix/transmission.nix)

39
docs/WALLPAPERS.md Normal file
View File

@@ -0,0 +1,39 @@
# Wallpapers
Wallpapers can be found in the `/home/wallpapers` folder.
| Name | Preview |
|---------------------|----------------------------------------------------------------|
| astronaut.png | ![astronaut.png](../home/wallpapers/astronaut.png) |
| aurore.png | ![aurore.png](../home/wallpapers/aurore.png) |
| barcode.png | ![barcode.png](../home/wallpapers/barcode.png) |
| cat-leaves.png | ![cat-leaves.png](../home/wallpapers/cat-leaves.png) |
| city.png | ![city.png](../home/wallpapers/city.png) |
| cloud.png | ![cloud.png](../home/wallpapers/cloud.png) |
| clouds2.png | ![clouds2.png](../home/wallpapers/clouds2.png) |
| clouds.png | ![clouds.png](../home/wallpapers/clouds.png) |
| coffee.png | ![coffee.png](../home/wallpapers/coffee.png) |
| dark_cloud.png | ![dark_cloud.png](../home/wallpapers/dark_cloud.png) |
| dark.png | ![dark.png](../home/wallpapers/dark.png) |
| fuji-dark.png | ![fuji-dark.png](../home/wallpapers/fuji-dark.png) |
| fuji-light.png | ![fuji-light.png](../home/wallpapers/fuji-light.png) |
| galaxy.png | ![galaxy.png](../home/wallpapers/galaxy.png) |
| house-cloud.png | ![house-cloud.png](../home/wallpapers/house-cloud.png) |
| key.png | ![key.png](../home/wallpapers/key.png) |
| lavender-cat.png | ![lavender-cat.png](../home/wallpapers/lavender-cat.png) |
| lofi-computer.png | ![lofi-computer.png](../home/wallpapers/lofi-computer.png) |
| lofi-urban.png | ![lofi-urban.png](../home/wallpapers/lofi-urban.png) |
| magma.png | ![magma.png](../home/wallpapers/magma.png) |
| mountains-black.png | ![mountains-black.png](../home/wallpapers/mountains-black.png) |
| mountains.png | ![mountains.png](../home/wallpapers/mountains.png) |
| nix.png | ![nix.png](../home/wallpapers/nix.png) |
| problems.png | ![problems.png](../home/wallpapers/problems.png) |
| sea.png | ![sea.png](../home/wallpapers/sea.png) |
| see.png | ![see.png](../home/wallpapers/see.png) |
| space2.png | ![space2.png](../home/wallpapers/space2.png) |
| space.png | ![space.png](../home/wallpapers/space.png) |
| street.png | ![street.png](../home/wallpapers/street.png) |
| sun.png | ![sun.png](../home/wallpapers/sun.png) |
| tokyo.png | ![tokyo.png](../home/wallpapers/tokyo.png) |
| train.png | ![train.png](../home/wallpapers/train.png) |
| windows.png | ![windows.png](../home/wallpapers/windows.png) |

View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
# Compress png files in ./docs/src and ./home/wallpapers
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
# Main images
for file in ./docs/src/*.png; do
optipng "$file"
done
# Theme's images
for file in ./docs/src/*/*.png; do
optipng "$file"
done
# Wallpapers
for file in ./home/wallpapers/*.png; do
optipng "$file"
done

View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
# Create WALLPAPERS.md to preview wallpapers in ./home/wallpapers
WALLPAPERS_FOLDER="./home/wallpapers"
WALLPAPERS_MD="./docs/WALLPAPERS.md"
[[ -d "$WALLPAPERS_FOLDER" ]] || (echo "Wallpapers folder not found" && exit 1)
echo "# Wallpapers" >"$WALLPAPERS_MD"
echo "" >>"$WALLPAPERS_MD"
echo "Wallpapers can be found in the \`/home/wallpapers\` folder." >>"$WALLPAPERS_MD"
echo "" >>"$WALLPAPERS_MD"
echo "| Name | Preview |" >>"$WALLPAPERS_MD"
echo "| -- | -- |" >>"$WALLPAPERS_MD"
for file in "$WALLPAPERS_FOLDER"/*.png; do
filename=$(basename "$file")
echo "| $filename | ![$filename](../home/wallpapers/$filename) |" >>"$WALLPAPERS_MD"
done
pandoc -t commonmark_x "$WALLPAPERS_MD" -o "/tmp/wallpapers.md"
mv "/tmp/wallpapers.md" "$WALLPAPERS_MD"

View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
# Create the README.md file from the docs/src/README_template.md file
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
README_FILE="./README.md"
header=$(cat "./docs/src/header.md")
table_of_content=$(md-table-of-contents ./docs/src/README_template.md) # https://github.com/anotherhadi/md-table-of-contents
version=$(git describe --tags --abbrev=0)
readme_content=$(cat "./docs/src/README_template.md")
description=$(curl -s https://api.github.com/repos/anotherhadi/nixy | jq .description)
description="${description%\"}"
description="${description#\"}"
header=${header//\{date\}/$(date '+%D')}
header=${header//\{primarycolor\}/89b4fa}
header=${header//\{backgroundcolor\}/181825}
header=${header//\{version\}/$version}
header=${header//\{description\}/$description}
readme_content=${readme_content//\{md_table_of_content\}/$table_of_content}
echo "$header" >"$README_FILE"
echo "$readme_content" >>"$README_FILE"
sed 's/\r//' "$README_FILE" >"/tmp/readme.md"
mv "/tmp/readme.md" "$README_FILE"

View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
# A script to parse the Hyprland configuration to store keybindings in a table
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
KEYBINDINGS_FILE="./docs/KEYBINDINGS.md"
function getList() {
content=$1
name=$2
list_start=$(echo "$content" | sed "/$name = \[/!d;=;Q")
list=$(echo "$content" | tail +"$list_start")
list_end=$(echo "$list" | sed '/\]/!d;=;Q')
list=$(echo "$list" | head -n"$list_end")
echo "$list"
}
[[ -f "./home/system/hyprland/default.nix" ]] || (echo "File ./home/system/hyprland/default.nix not found" && exit 1)
config=$(cat "./home/system/hyprland/default.nix")
# Bind
bind=$(getList "$config" "bind")
# Bindm (mouse)
bindm=$(getList "$config" "bindm")
# Bindl (lock)
bindl=$(getList "$config" "bindl")
# Bindle (lock, repetition)
bindle=$(getList "$config" "bindle")
# Join the lists:
keybindings=$(echo -e "$bind\n$bindm\n$bindl\n$bindle" | grep '"')
echo "# Keybindings" >"$KEYBINDINGS_FILE"
echo "" >>"$KEYBINDINGS_FILE"
echo "The list of the keybindings working on Hyprland:" >>"$KEYBINDINGS_FILE"
echo "" >>"$KEYBINDINGS_FILE"
echo "| Description | Keybinding |" >>"$KEYBINDINGS_FILE"
echo "| -- | -- |" >>"$KEYBINDINGS_FILE"
echo "| Switch Workspace | SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
echo "| Move app to Workspace | SHIFT + SUPER + {Number} |" >>"$KEYBINDINGS_FILE"
echo "$keybindings" | while read line; do
comment=$(echo "$line" | cut -d\# -f2)
line=$(echo "$line" | cut -d\# -f1)
line=${line:1:${#line}-3}
mod=$(echo "$line" | cut -d, -f1)
key=$(echo "$line" | cut -d, -f2)
dispatcher=$(echo "$line" | cut -d, -f3)
params=$(echo "$line" | cut -d, -f4)
[[ $mod == '$mod' ]] && mod="SUPER + "
[[ $mod == '$shiftMod' ]] && mod="SHIFT + SUPER + "
echo "| $comment | $mod$key |" >>"$KEYBINDINGS_FILE"
done
pandoc -t commonmark_x "$KEYBINDINGS_FILE" -o "/tmp/keybindings.md"
mv "/tmp/keybindings.md" "$KEYBINDINGS_FILE"

22
docs/scripts/new_tag.sh Normal file
View File

@@ -0,0 +1,22 @@
#!/usr/bin/env bash
[[ -d "./docs" ]] || (echo "Folder ./docs not found" && exit 1)
TAG=$(git describe --tags --abbrev=0)
echo "Current tag: $TAG"
read -rp "Enter the new tag name: " NEW_TAG
echo "Compresing png files..."
bash ./docs/scripts/compress_png.sh
echo "Creating wallpapers preview..."
bash ./docs/scripts/create_preview_wallpapers.sh
echo "Creating README.md..."
bash ./docs/scripts/create_readme.sh
echo "Creating keybindings.md..."
bash ./docs/scripts/create_keybindings.sh
git add .
git commit -m "Release $NEW_TAG"
git tag -a "$NEW_TAG" -m "Release $NEW_TAG"
git push origin "$NEW_TAG"

View File

@@ -0,0 +1,42 @@
#!/usr/bin/env bash
[ "$1" = "" ] && echo "Usage: $0 <theme_name>" && exit 1
theme_name=$1
# Switch to workspace 1
sleep 2
# Step 1
kitty --class peaclock peaclock &
sleep 1
menu &
sleep 1
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "1.png" -d
sleep 2
pkill peaclock
menu
sleep 2
# Step 2
kitty cmatrix &
sleep 1
kitty &
sleep 1
qutebrowser &
sleep 3
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "2.png" -d
sleep 2
pkill cmatrix
pkill --newest qutebrowser ""
pkill --newest kitty
sleep 2
# Step 3
kitty cava &
sleep 1
spotify &
sleep 10
brightness-down
sleep 1
hyprshot -m "output" -m "active" -o "$HOME/.config/nixos/docs/src/$theme_name" -f "3.png" -d
sleep 2

View File

@@ -0,0 +1,55 @@
**Nixy** is a **Hyprland** NixOS configuration with **home-manager**, **secrets**, and **custom theming** all in one place.
It's a simple way to manage your system configuration and dotfiles.
## Table of Content
{md_table_of_content}
## Gallery
![catppuccin1](docs/src/catppuccin/1.png)
![catppuccin2](docs/src/catppuccin/2.png)
![catppuccin3](docs/src/catppuccin/3.png)
## Architecture
- 🏠 `home` are the dotfiles and configuration files for the users
- 'programs' is a collection of apps configured with home-manager
- 'scripts' is a folder full of bash scripts (see [SCRIPTS.md](docs/SCRIPTS.md))
- 'system' is some desktop environment like configuration
- 'wallpapers' are... wallpapers
- 💻 `hosts` are the system configuration files
- 'laptop' is my configuration for my laptop with Nvidia that you can copy
- 'server' is for my homeserver (w/nextcloud, nginx, vaultwarden, ... look `hosts/server`)
- 'themes' contains all the *themes* available *(see [THEMES.md](docs/THEMES.md))*
- 'modules' are some nix modules that you can import (Nvidia, prime, fonts, ...)
## Installation
```sh
git clone https://github.com/anotherhadi/nixy ~/.config/nixos
```
- Copy the `hosts/laptop` folder, rename it to your system name, and change the variables inside the `variables.nix` file
- Add your `hardware-configuration.nix` to your new host's folder
- Add your 'nixosConfigurations' inside `flake.nix` (You can edit your hostname one and change the lines containing '# CHANGEME')
> [!NOTE]
> When you add new files, don't forget to run `git add .` to add them to the git repository
```sh
sudo nixos-rebuild switch --flake ~/.config/nixos#yourhostname
```
## Documentation
- [THEMES.md](docs/THEMES.md): How themes work and how to create your own
- [APPS.md](docs/APPS.md): Which apps are installed
- [SCRIPTS.md](docs/SCRIPTS.md): Scripts that are available
- [KEYBINDINGS.md](docs/KEYBINDINGS.md): Keybindings available in Hyprland
- [WALLPAPERS.md](docs/WALLPAPERS.md): Preview of every wallpapers available
- [TODO.md](docs/TODO.md): What's next (feel free to contribute)
- [CONTRIBUTING.md](docs/CONTRIBUTING.md): How to contribute
- [LICENSE](LICENSE): MIT License

BIN
docs/src/catppuccin/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

BIN
docs/src/catppuccin/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

BIN
docs/src/catppuccin/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 KiB

33
docs/src/header.md Normal file
View File

@@ -0,0 +1,33 @@
[//]: # (Title: Nixy)
[//]: # (Description: {description})
[//]: # (Author: Hadi)
[//]: # (Date: {date})
[//]: # (Version: {version})
<div align="center">
<img src="https://raw.githubusercontent.com/anotherhadi/nixy/main/docs/src/logo.png" width="100px" />
</div>
<br>
# Nixy
<br>
<div align="center">
<a href="https://github.com/anotherhadi/nixy">
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=Version&message={version}&colorA={backgroundcolor}&colorB={primarycolor}&logo=githubactions&logoColor={primarycolor}"/>
</a>
<a href="https://github.com/anotherhadi/nixy/stargazers">
<img src="https://img.shields.io/github/stars/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=starship&logoColor={primarycolor}">
</a>
<a href="https://github.com/anotherhadi/nixy/">
<img src="https://img.shields.io/github/repo-size/anotherhadi/nixy?color={primarycolor}&labelColor={backgroundcolor}&style=for-the-badge&logo=github&logoColor={primarycolor}">
</a>
<a href="https://nixos.org">
<img src="https://img.shields.io/badge/NixOS-unstable-blue.svg?style=for-the-badge&labelColor={backgroundcolor}&logo=NixOS&logoColor={primarycolor}&color={primarycolor}">
</a>
<a href="https://github.com/anotherhadi/nixy/blob/main/LICENSE">
<img src="https://img.shields.io/static/v1.svg?style=for-the-badge&label=License&message=MIT&colorA={backgroundcolor}&colorB={primarycolor}&logo=unlicense&logoColor={primarycolor}"/>
</a>
</div>
<br>

BIN
docs/src/large.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

BIN
docs/src/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1 @@
8c00e379ddd7f89e4bbf9f381a5721d980c8026f

BIN
docs/src/nixy/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

BIN
docs/src/nixy/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 KiB

View File

@@ -0,0 +1 @@
62b52ad02a886c19a8cfe1ea17e8aaad50f23632

BIN
docs/src/windows/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

BIN
docs/src/windows/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

520
flake.lock generated
View File

@@ -11,11 +11,11 @@
"sf-pro": "sf-pro" "sf-pro": "sf-pro"
}, },
"locked": { "locked": {
"lastModified": 1705496891, "lastModified": 1719591391,
"narHash": "sha256-lLX87aJ9oUT3u0Iaf60xKIJ2RQNt3v4Ne2cvSWyaS7U=", "narHash": "sha256-sVTFewitXIYe5vBihbCFQGdBPdnT26kES1T05umBBnE=",
"owner": "Lyndeno", "owner": "Lyndeno",
"repo": "apple-fonts.nix", "repo": "apple-fonts.nix",
"rev": "e6ffbc887752ba0fe035fbcc8b282555804dd3f6", "rev": "0e21619dad5b0d9ca2e050155e32448380547b06",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -24,20 +24,52 @@
"type": "github" "type": "github"
} }
}, },
"aquamarine": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1723920171,
"narHash": "sha256-dVCMrAe+D/5S91erhwQj2DSzHOVzAanWqoy+vPWB9DY=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "71d49670fe246cdaff4860b0effba0ab9f163b72",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "aquamarine",
"type": "github"
}
},
"devshell": { "devshell": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [ "nixpkgs": [
"nixvim", "nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1713532798, "lastModified": 1722113426,
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=", "narHash": "sha256-Yo/3loq572A8Su6aY5GP56knpuKYRvM2a1meP9oJZCw=",
"owner": "numtide", "owner": "numtide",
"repo": "devshell", "repo": "devshell",
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40", "rev": "67cce7359e4cd3c45296fb4aaf6a19e2a9c757ae",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -60,22 +92,6 @@
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
} }
}, },
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
@@ -84,11 +100,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1714641030, "lastModified": 1722555600,
"narHash": "sha256-yzcRNDoyVP7+SCNX0wmuDju1NUCt8Dz9+lyUXEI0dbI=", "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "e5d10a24b66c3ea8f150e47dfdb0416ab7c3390e", "rev": "8471fe90ad337a8074e957b69ca4d0089218391d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -97,61 +113,10 @@
"type": "github" "type": "github"
} }
}, },
"flake-root": {
"locked": {
"lastModified": 1713493429,
"narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=",
"owner": "srid",
"repo": "flake-root",
"rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd",
"type": "github"
},
"original": {
"owner": "srid",
"repo": "flake-root",
"type": "github"
}
},
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
}, },
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_4"
},
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
@@ -166,9 +131,27 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_4": { "flake-utils_2": {
"inputs": { "inputs": {
"systems": "systems_7" "systems": "systems_3"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_4"
}, },
"locked": { "locked": {
"lastModified": 1685518550, "lastModified": 1685518550,
@@ -184,11 +167,41 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks": {
"inputs": {
"flake-compat": [
"nixvim",
"flake-compat"
],
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1723202784,
"narHash": "sha256-qbhjc/NEGaDbyy0ucycubq4N3//gDFFH3DOmp1D3u1Q=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "c7012d0c18567c889b948781bc74a501e92275d1",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixvim", "nixvim",
"pre-commit-hooks", "git-hooks",
"nixpkgs" "nixpkgs"
] ]
}, },
@@ -213,11 +226,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715077503, "lastModified": 1723986931,
"narHash": "sha256-AfHQshzLQfUqk/efMtdebHaQHqVntCMjhymQzVFLes0=", "narHash": "sha256-Fy+KEvDQ+Hc8lJAV3t6leXhZJ2ncU5/esxkgt3b8DEY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "6e277d9566de9976f47228dd8c580b97488734d4", "rev": "2598861031b78aadb4da7269df7ca9ddfc3e1671",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -234,11 +247,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715077503, "lastModified": 1723399884,
"narHash": "sha256-AfHQshzLQfUqk/efMtdebHaQHqVntCMjhymQzVFLes0=", "narHash": "sha256-97wn0ihhGqfMb8WcUgzzkM/TuAxce2Gd20A8oiruju4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "6e277d9566de9976f47228dd8c580b97488734d4", "rev": "086f619dd991a4d355c07837448244029fc2d9ab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -263,11 +276,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1713612213, "lastModified": 1722623071,
"narHash": "sha256-zJboXgWNpNhKyNF8H/3UYzWkx7w00TOCGKi3cwi+tsw=", "narHash": "sha256-sLADpVgebpCBFXkA1FlCXtvEPu1tdEsTfqK1hfeHySE=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "cab4746180f210a3c1dd3d53e45c510e309e90e1", "rev": "912d56025f03d41b1ad29510c423757b4379eb1c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -278,19 +291,21 @@
}, },
"hyprland": { "hyprland": {
"inputs": { "inputs": {
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor", "hyprcursor": "hyprcursor",
"hyprlang": "hyprlang", "hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner", "hyprwayland-scanner": "hyprwayland-scanner",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"systems": "systems_2", "systems": "systems_2",
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1715203037, "lastModified": 1724014641,
"narHash": "sha256-yWsrCPhBpin7AXVI66/EAE+YPJTweS8CDCZJQliB10k=", "narHash": "sha256-ub/HCvrxuvvqmnWpNdcyi/mp0G9+rNjtKHrA7cwyuis=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "e4e84064f2d07810e0c150bce1369a0a00503e9a", "rev": "f4045ab8d032186b7c5409cd9f05eeaa813320ba",
"revCount": 4638, "revCount": 5109,
"submodules": true, "submodules": true,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
@@ -315,11 +330,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1714869498, "lastModified": 1721326555,
"narHash": "sha256-vbLVOWvQqo4n1yvkg/Q70VTlPbMmTiCQfNTgcWDCfJM=", "narHash": "sha256-zCu4R0CSHEactW9JqYki26gy8h9f6rHmSwj4XJmlHgg=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-protocols", "repo": "hyprland-protocols",
"rev": "e06482e0e611130cd1929f75e8c1cf679e57d161", "rev": "5a11232266bf1a1f5952d5b179c3f4b2facaaa84",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -329,6 +344,35 @@
} }
}, },
"hyprlang": { "hyprlang": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1721324361,
"narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprutils": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
@@ -340,38 +384,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1713121246, "lastModified": 1722869141,
"narHash": "sha256-502X0Q0fhN6tJK7iEUA8CghONKSatW/Mqj4Wappd++0=", "narHash": "sha256-0KU4qhyMp441qfwbirNg3+wbm489KnEjXOz2I/RbeFs=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprutils",
"rev": "78fcaa27ae9e1d782faa3ff06c8ea55ddce63706", "rev": "0252fd13e78e60fb0da512a212e56007515a49f7",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprutils",
"type": "github"
}
},
"hyprlang_2": {
"inputs": {
"nixpkgs": [
"rose-pine-hyprcursor",
"nixpkgs"
],
"systems": "systems_5"
},
"locked": {
"lastModified": 1709914708,
"narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github" "type": "github"
} }
}, },
@@ -387,11 +409,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1715090986, "lastModified": 1721324119,
"narHash": "sha256-FXpQvmS9R7alwZ47XK5UIcAbC9YKSxc0+GOVYqwa0jM=", "narHash": "sha256-SOOqIT27/X792+vsLSeFdrNTF+OSRp5qXv6Te+fb2Qg=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprwayland-scanner", "repo": "hyprwayland-scanner",
"rev": "94e32ec37e7215b16d5c1b41b1773ff6742e704b", "rev": "a048a6cb015340bd82f97c1f40a4b595ca85cc30",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -408,11 +430,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1713946171, "lastModified": 1722924007,
"narHash": "sha256-lc75rgRQLdp4Dzogv5cfqOg6qYc5Rp83oedF2t0kDp8=", "narHash": "sha256-+CQDamNwqO33REJLft8c26NbUi2Td083hq6SvAm2xkU=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "230a197063de9287128e2c68a7a4b0cd7d0b50a7", "rev": "91010a5613ffd7ee23ee9263213157a1c422b705",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -423,11 +445,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1715148395, "lastModified": 1723310128,
"narHash": "sha256-lRxjTxY3103LGMjWdVqntKZHhlmMX12QUjeFrQMmGaE=", "narHash": "sha256-IiH8jG6PpR4h9TxSGMYh+2/gQiJW9MwehFvheSb5rPc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "a4e2b7909fc1bdf30c30ef21d388fde0b5cdde4a", "rev": "c54cf53e022b0b3c1d3b8207aa0f9b194c24f0cf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -439,11 +461,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1696375444, "lastModified": 1717786204,
"narHash": "sha256-Sv0ICt/pXfpnFhTGYTsX6lUr1SljnuXWejYTI2ZqHa4=", "narHash": "sha256-4q0s6m0GUcN7q+Y2DqD27iLvbcd1G50T2lv08kKxkSI=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "81e8f48ebdecf07aab321182011b067aafc78896", "rev": "051f920625ab5aabe37c920346e3e69d7d34400e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -455,27 +477,27 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1714858427, "lastModified": 1721524707,
"narHash": "sha256-tCxeDP4C1pWe2rYY3IIhdA40Ujz32Ufd4tcrHPSKx2M=", "narHash": "sha256-5NctRsoE54N86nWd0psae70YSLfrOek3Kv1e8KoXe/0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b980b91038fc4b09067ef97bbe5ad07eecca1e76", "rev": "556533a23879fc7e5f98dd2e0b31a6911a213171",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "release-23.11", "ref": "release-24.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1714253743, "lastModified": 1723637854,
"narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -487,11 +509,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1715087517, "lastModified": 1723637854,
"narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=", "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b211b392b8486ee79df6cdfb1157ad2133427a29", "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -502,22 +524,6 @@
} }
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": {
"lastModified": 1710272261,
"narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1686020360, "lastModified": 1686020360,
"narHash": "sha256-Wee7lIlZ6DIZHHLiNxU5KdYZQl0iprENXa/czzI6Cj4=", "narHash": "sha256-Wee7lIlZ6DIZHHLiNxU5KdYZQl0iprENXa/czzI6Cj4=",
@@ -538,21 +544,21 @@
"devshell": "devshell", "devshell": "devshell",
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"flake-root": "flake-root", "git-hooks": "git-hooks",
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
"nix-darwin": "nix-darwin", "nix-darwin": "nix-darwin",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"pre-commit-hooks": "pre-commit-hooks", "nuschtosSearch": "nuschtosSearch",
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1715115147, "lastModified": 1724010176,
"narHash": "sha256-oREqXPEtuYbOdBKbsDQzr2V01EzK4kD8MTdwO9ljTnU=", "narHash": "sha256-26fas5WqF8w1PMrMuJNde4bH6WSXFfRbh+L4krgPOzY=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "f7f255afe22fcca0c07177c3707fd61fa0c85835", "rev": "c52ba6785661f095221aa1e1eb24f57e89d7b2de",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -561,10 +567,47 @@
"type": "github" "type": "github"
} }
}, },
"nurpkgs": {
"locked": {
"lastModified": 1724012881,
"narHash": "sha256-lqn4UX+tvtwOmBZ2Dxh6euXKNcXGEYqPolEdjtONDVY=",
"owner": "nix-community",
"repo": "NUR",
"rev": "8c7136cb22fd96cde881225863b450df75876ebc",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "NUR",
"type": "github"
}
},
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1723367906,
"narHash": "sha256-v1qA4WBGDI2uH/TVqRwuXSBP341W681psbzYJ8zrjog=",
"owner": "NuschtOS",
"repo": "search",
"rev": "6ca2c3ae05a915c160512bd41f6810f456c9b30d",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"ny": { "ny": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-phACDdjI8RX6yD77PSmFcsriagt+2UuySD7+WEzdzGo=", "narHash": "sha256-FkV8Z2fdUTwvcKeltFJVCisvAarcdnmlj/33exdyxnQ=",
"type": "file", "type": "file",
"url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg"
}, },
@@ -573,34 +616,6 @@
"url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg" "url": "https://devimages-cdn.apple.com/design/resources/download/NY.dmg"
} }
}, },
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_3",
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1714478972,
"narHash": "sha256-q//cgb52vv81uOuwz1LaXElp3XAe1TqrABXODAEF6Sk=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "2849da033884f54822af194400f8dff435ada242",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"apple-fonts": "apple-fonts", "apple-fonts": "apple-fonts",
@@ -609,35 +624,15 @@
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_3",
"nixvim": "nixvim", "nixvim": "nixvim",
"rose-pine-hyprcursor": "rose-pine-hyprcursor", "nurpkgs": "nurpkgs",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"spicetify-nix": "spicetify-nix" "spicetify-nix": "spicetify-nix"
} }
}, },
"rose-pine-hyprcursor": {
"inputs": {
"hyprlang": "hyprlang_2",
"nixpkgs": "nixpkgs_4",
"utils": "utils"
},
"locked": {
"lastModified": 1711302328,
"narHash": "sha256-wLuFLI6S5DOretqJN05+kvrs8cbnZKfVLXrJ4hvI/Tg=",
"owner": "ndom91",
"repo": "rose-pine-hyprcursor",
"rev": "7e0473876f0e6d2308813a78fe84a6c6430b112b",
"type": "github"
},
"original": {
"owner": "ndom91",
"repo": "rose-pine-hyprcursor",
"type": "github"
}
},
"sf-arabic": { "sf-arabic": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-CPewXMGI78xHsjdRU8ZJIBSYjh5UY6UW21ihE4B+Bkk=", "narHash": "sha256-u+Q2Hd+JCiKhIQtbQqawg1lIEgGhjmdGye2cNdWlBG0=",
"type": "file", "type": "file",
"url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg" "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Arabic.dmg"
}, },
@@ -649,7 +644,7 @@
"sf-compact": { "sf-compact": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-nJkPlddKF2dIwj+6jiVvS60hDcGAMasEOWemUwBS2mQ=", "narHash": "sha256-9kXXWmu2zg0LSE7SihItXmBltLvNwyG1Ba6QehvMh04=",
"type": "file", "type": "file",
"url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg" "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg"
}, },
@@ -661,7 +656,7 @@
"sf-mono": { "sf-mono": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-KT1RXz3NcWPetyxVlgMfh/dsoznpI3lMnplz6V7PCUU=", "narHash": "sha256-BVmYmgqq79ezgyqNClyHkj2L4N3/PRisPm8YFBQZQ98=",
"type": "file", "type": "file",
"url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg" "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg"
}, },
@@ -673,7 +668,7 @@
"sf-pro": { "sf-pro": {
"flake": false, "flake": false,
"locked": { "locked": {
"narHash": "sha256-cn8ae2UddF8Pru6i3fSG2Wki5sf1DmWKD2FmKMsoeAA=", "narHash": "sha256-yQhtaEPTuYOIOaC6eSPdka/Jv5Ydw3Mnd8Prlcgjs90=",
"type": "file", "type": "file",
"url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg" "url": "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg"
}, },
@@ -690,11 +685,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1715244550, "lastModified": 1723501126,
"narHash": "sha256-ffOZL3eaZz5Y1nQ9muC36wBCWwS1hSRLhUzlA9hV2oI=", "narHash": "sha256-N9IcHgj/p1+2Pvk8P4Zc1bfrMwld5PcosVA0nL6IGdE=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "0dc50257c00ee3c65fef3a255f6564cfbfe6eb7f", "rev": "be0eec2d27563590194a9206f551a6f73d52fa34",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -705,8 +700,8 @@
}, },
"spicetify-nix": { "spicetify-nix": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_4", "flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_4"
}, },
"locked": { "locked": {
"lastModified": 1704167711, "lastModified": 1704167711,
@@ -782,51 +777,6 @@
"type": "github" "type": "github"
} }
}, },
"systems_5": {
"locked": {
"lastModified": 1689347949,
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems",
"repo": "default-linux",
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default-linux",
"type": "github"
}
},
"systems_6": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_7": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": { "treefmt-nix": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -835,11 +785,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1714058656, "lastModified": 1723454642,
"narHash": "sha256-Qv4RBm4LKuO4fNOfx9wl40W2rBbv5u5m+whxRYUMiaA=", "narHash": "sha256-S0Gvsenh0II7EAaoc9158ZB4vYyuycvMGKGxIbERNAM=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "c6aaf729f34a36c445618580a9f95a48f5e4e03f", "rev": "349de7bc435bdff37785c2466f054ed1766173be",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -848,24 +798,6 @@
"type": "github" "type": "github"
} }
}, },
"utils": {
"inputs": {
"systems": "systems_6"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"xdph": { "xdph": {
"inputs": { "inputs": {
"hyprland-protocols": "hyprland-protocols", "hyprland-protocols": "hyprland-protocols",
@@ -883,11 +815,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1714060055, "lastModified": 1722365976,
"narHash": "sha256-j43TS9wv9luaAlpxcxw0sjxkbcc2mGANVR2RYgo3RCw=", "narHash": "sha256-Khdm+mDzYA//XaU0M+hftod+rKr5q9SSHSEuiQ0/9ow=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"rev": "0fe840441e43da12cd7865ed9aa8cdc35a8da85a", "rev": "7f2a77ddf60390248e2a3de2261d7102a13e5341",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -1,5 +1,9 @@
{ {
description = "Nixy - Hadi's NixOS configuration"; # https://github.com/anotherhadi/nixy
description = ''
Nixy is a NixOS configuration with home-manager, secrets and custom theming all in one place.
It's a simple way to manage your system configuration and dotfiles.
'';
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
@@ -17,38 +21,52 @@
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
rose-pine-hyprcursor.url = "github:ndom91/rose-pine-hyprcursor"; nurpkgs.url = "github:nix-community/NUR";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
}; };
outputs = inputs@{ nixpkgs, home-manager, sops-nix, hyprland, spicetify-nix outputs = inputs@{ nixpkgs, ... }: {
, nixos-hardware, ... }: {
nixosConfigurations = { nixosConfigurations = {
nixy = nixpkgs.lib.nixosSystem {
nixy = nixpkgs.lib.nixosSystem { # CHANGE ME
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
nixos-hardware.nixosModules.omen-16-n0005ne # REMOVE ./hosts/laptop/configuration.nix # CHANGE ME
./nixos/configuration.nix inputs.nixos-hardware.nixosModules.omen-16-n0005ne # CHANGE ME
./nixos/fonts.nix inputs.home-manager.nixosModules.home-manager
./nixos/tuigreet.nix
{ _module.args = { inherit inputs; }; }
home-manager.nixosModules.home-manager
{ {
nixpkgs.overlays = [ inputs.nurpkgs.overlay ];
_module.args = { inherit inputs; };
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
users."hadi" = import ./home/home.nix; users."hadi" = import ./hosts/laptop/home.nix; # CHANGE ME
extraSpecialArgs = { extraSpecialArgs = { inherit inputs; };
inherit inputs;
inherit spicetify-nix;
inherit sops-nix;
inherit hyprland;
};
}; };
} }
]; ];
}; };
jack = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
inputs.sops-nix.nixosModules.sops
./hosts/server/configuration.nix
inputs.home-manager.nixosModules.home-manager
{
nixpkgs.overlays = [ inputs.nurpkgs.overlay ];
_module.args = { inherit inputs; };
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users."hadi" = import ./hosts/server/home.nix;
extraSpecialArgs = { inherit inputs; };
};
}
];
};
}; };
}; };
} }

View File

@@ -1,14 +0,0 @@
{
imports = [
./kitty
./lf
./neofetch
./nvim
./qutebrowser
./spicetify
./wofi
./cava
./tmux
./lazygit
];
}

View File

@@ -1,50 +0,0 @@
{ config, pkgs, ... }: {
programs.kitty = {
enable = true;
settings = {
scrollback_lines = 10000;
enable_audio_bell = false;
update_check_interval = 0;
font_family = config.theme.font-mono;
font_size = 13;
cursor_shape = "Underline";
cursor_underline_thickness = 1;
window_padding_width = 10;
url_style = "curly";
confirm_os_window_close = "0";
remember_window_size = "no";
disable_ligatures = "never";
shell = "${pkgs.tmux}/bin/tmux";
initial_window_width = 1200;
initial_window_height = 600;
background = "#" + config.theme.colors.bg;
url_color = "#" + config.theme.colors.primary-fg;
color0 = "#" + config.theme.colors.color0;
color8 = "#" + config.theme.colors.color8;
color1 = "#" + config.theme.colors.color1;
color9 = "#" + config.theme.colors.color9;
color2 = "#" + config.theme.colors.color2;
color10 = "#" + config.theme.colors.color10;
color3 = "#" + config.theme.colors.color3;
color11 = "#" + config.theme.colors.color11;
color4 = "#" + config.theme.colors.color4;
color12 = "#" + config.theme.colors.color12;
color5 = "#" + config.theme.colors.color5;
color13 = "#" + config.theme.colors.color13;
color6 = "#" + config.theme.colors.color6;
color14 = "#" + config.theme.colors.color14;
color7 = "#" + config.theme.colors.color7;
color15 = "#" + config.theme.colors.color15;
cursor = "#" + config.theme.colors.fg;
cursor_text_color = "#" + config.theme.colors.bg;
selection_foreground = "#" + config.theme.colors.primary-fg;
selection_background = "#" + config.theme.colors.primary-bg;
};
};
}

View File

@@ -1 +0,0 @@
{ programs.nixvim.plugins.nvim-autopairs = { enable = true; }; }

View File

@@ -1 +0,0 @@
{ programs.nixvim.plugins.bufferline = { enable = true; }; }

View File

@@ -1 +0,0 @@
{ programs.nixvim.plugins.comment = { enable = true; }; }

View File

@@ -1,5 +0,0 @@
{
programs.nixvim.plugins.copilot-vim = {
enable = true;
};
}

View File

@@ -1,37 +0,0 @@
{ inputs, ... }: {
imports = [
inputs.nixvim.homeManagerModules.nixvim
./auto-pairs.nix
./options.nix
./bufferline.nix
./lazygit.nix
./telescope.nix
./nvim-tree.nix
./lightline.nix
./git.nix
./cmp.nix
./none-ls.nix
./wilder.nix
./lsp.nix
./treesitter.nix
./toggleterm.nix
./copilot.nix
./obsidian.nix
./whichkey.nix
./alpha.nix
./keymaps.nix
./comment.nix
./oil.nix
./trouble.nix
./tmux-navigator.nix
];
programs.nixvim = {
enable = true;
colorschemes.catppuccin = {
enable = true;
settings = { transparent_background = true; };
};
};
}

View File

@@ -1,6 +0,0 @@
{
programs.nixvim.plugins.gitsigns = {
enable = true;
settings = { current_line_blame = false; };
};
}

View File

@@ -1,71 +0,0 @@
{
programs.nixvim.keymaps = [
{
key = "<leader>e";
action = "<CMD>Neotree toggle<CR>";
}
{
key = "<space>fm";
action = "<CMD>lua vim.lsp.buf.format()<CR>";
}
{
key = "<leader>ot";
action = "<cmd>lua require('obsidian').util.toggle_checkbox()<cr>";
}
{
key = "<leader>oo";
action = "<cmd>ObsidianQuickSwitch<cr>";
}
{
key = "<leader>on";
action = "<cmd>ObsidianNew<cr>";
}
{
key = "<leader>of";
action = "<cmd>ObsidianSearch<cr>";
}
{
key = "<leader>oi";
action = "<cmd>ObsidianPasteImg<cr>";
}
{
key = "<leader>E";
action = "<cmd>Oil<cr>";
}
{
key = "<leader>t";
action = "<cmd>TroubleToggle<cr>";
}
{
key = "<C-h>";
action = "<cmd>TmuxNavigateLeft<cr>";
}
{
key = "<C-j>";
action = "<cmd>TmuxNavigateDown<cr>";
}
{
key = "<C-k>";
action = "<cmd>TmuxNavigateUp<cr>";
}
{
key = "<C-l>";
action = "<cmd>TmuxNavigateRight<cr>";
}
# Terminal Mappings
{
mode = "t";
key = "<esc>";
action = "<C-\\><C-n>";
}
];
}

View File

@@ -1 +0,0 @@
{ programs.nixvim.plugins.lazygit = { enable = true; }; }

View File

@@ -1 +0,0 @@
{ programs.nixvim.plugins.lualine = { enable = true; }; }

View File

@@ -1,24 +0,0 @@
{
programs.nixvim.plugins = {
lsp-format.enable = true;
lsp = {
enable = true;
servers = {
bashls.enable = true;
clangd.enable = true;
gopls.enable = true;
nixd.enable = true;
tailwindcss.enable = true;
html.enable = true;
svelte.enable = true;
};
keymaps.lspBuf = {
"gd" = "definition";
"gD" = "references";
"gt" = "type_definition";
"gi" = "implementation";
"K" = "hover";
};
};
};
}

View File

@@ -1,18 +0,0 @@
{
programs.nixvim.plugins.none-ls = {
enable = true;
sources = {
diagnostics = {
golangci_lint.enable = true;
statix.enable = true;
};
formatting = {
gofmt.enable = true;
goimports.enable = true;
nixfmt.enable = true;
markdownlint.enable = true;
tidy.enable = true;
};
};
};
}

View File

@@ -1,5 +0,0 @@
{
programs.nixvim.plugins.neo-tree = {
enable = true;
};
}

View File

@@ -1,9 +0,0 @@
{
programs.nixvim.plugins.obsidian = {
enable = true;
settings = {
dir = "~/Nextcloud/obsidian";
disable_frontmatter = true;
};
};
}

View File

@@ -1,6 +0,0 @@
{
programs.nixvim.plugins.oil = {
enable = true;
settings = { default_file_explorer = false; };
};
}

View File

@@ -1,13 +0,0 @@
{
programs.nixvim.plugins.telescope = {
enable = true;
keymaps = {
"<leader>fg" = "live_grep";
#"<C-p>" = {
# action = "git_files";
# desc = "Telescope Git Files";
#};
};
extensions.fzf-native = { enable = true; };
};
}

View File

@@ -1 +0,0 @@
{ programs.nixvim.plugins.tmux-navigator = { enable = true; }; }

View File

@@ -1,9 +0,0 @@
{
programs.nixvim.plugins.toggleterm = {
enable = true;
settings = {
open_mapping = "[[<c-t>]]";
direction = "horizontal";
};
};
}

View File

@@ -1,10 +0,0 @@
{
programs.nixvim.plugins = {
treesitter = {
enable = true;
nixGrammars = true;
indent = true;
};
treesitter-context.enable = true;
};
}

View File

@@ -1 +0,0 @@
{ programs.nixvim.plugins.trouble = { enable = true; }; }

View File

@@ -1,3 +0,0 @@
{
programs.nixvim.plugins.which-key.enable=true;
}

View File

@@ -1,6 +0,0 @@
{
programs.nixvim.plugins.wilder = {
enable = true;
modes = [ ":" "/" "?" ];
};
}

View File

@@ -1,261 +0,0 @@
{ config, ... }: {
imports = [ ./duckduckgo-colorscheme.nix ./homepage/default.nix ];
programs.qutebrowser = {
enable = true;
searchEngines = {
"DEFAULT" = "https://duckduckgo.com/?q={}&ia=web";
"d" = "https://duckduckgo.com/?q={}&ia=web";
"g" = "https://google.com/search?q={}";
"y" = "https://youtube.com/results?search_query={}";
"ya" = "https://yandex.com/search/?text={}";
"n" = "https://mynixos.com/search?q={}";
"nixo" = "https://search.nixos.org/options?channel=unstable&query={}";
"nixp" = "https://search.nixos.org/packages?channel=unstable&query={}";
"gt" = "https://github.com/search?q={}&type=repositories";
};
quickmarks = {
home = "${config.home.homeDirectory}/.config/startpage/index.html";
mynixos = "https://mynixos.com";
github = "https://github.com";
outlook = "https://outlook.office.com/mail/";
office = "https://www.office.com/?auth=2";
teams = "https://teams.microsoft.com/_";
casa = "http://192.168.2.16:8081/#/";
proton = "https://mail.proton.me/u/0/inbox";
cloudflare-one = "https://one.dash.cloudflare.com/";
chatgpt = "https://chat.openai.com/";
nixvim = "https://nix-community.github.io/nixvim/";
hyprland = "https://wiki.hyprland.org/";
nerdfont = "https://www.nerdfonts.com/cheat-sheet";
youtube = "https://youtube.com/";
cloudflare = "https://dash.cloudflare.com/";
};
settings = {
url = {
default_page =
"${config.home.homeDirectory}/.config/startpage/index.html";
start_pages =
[ "${config.home.homeDirectory}/.config/startpage/index.html" ];
};
colors = {
tabs = {
odd.bg = "#${config.theme.colors.bg}";
odd.fg = "#${config.theme.colors.fg}";
even.bg = "#${config.theme.colors.bg}";
even.fg = "#${config.theme.colors.fg}";
selected = {
odd = {
bg = "#${config.theme.colors.primary-bg}";
fg = "#${config.theme.colors.primary-fg}";
};
even = {
bg = "#${config.theme.colors.primary-bg}";
fg = "#${config.theme.colors.primary-fg}";
};
};
indicator = {
error = "#${config.theme.colors.color1}";
start = "#${config.theme.colors.alt-bg}";
stop = "#${config.theme.colors.alt-bg}";
};
};
hints = {
bg = "#${config.theme.colors.alt-bg}";
fg = "#${config.theme.colors.alt-fg}";
match.fg = "#${config.theme.colors.bg}";
};
completion = {
category = {
bg = "#${config.theme.colors.bg}";
fg = "#${config.theme.colors.fg}";
border = {
top = "#${config.theme.colors.bg}";
bottom = "#${config.theme.colors.bg}";
};
};
odd.bg = "#${config.theme.colors.bg}";
even.bg = "#${config.theme.colors.bg}";
fg = [ "#FFFFFF" "#FFFFFF" "#FFFFFF" ];
match.fg = "#${config.theme.colors.primary-bg}";
item.selected = {
bg = "#${config.theme.colors.primary-bg}";
border.top = "#${config.theme.colors.primary-bg}";
border.bottom = "#${config.theme.colors.primary-bg}";
fg = "#${config.theme.colors.primary-fg}";
match.fg = "#${config.theme.colors.primary-fg}";
};
};
statusbar = {
normal.bg = "#${config.theme.colors.bg}";
normal.fg = "#${config.theme.colors.fg}";
private.bg = "#${config.theme.colors.bg}";
private.fg = "#${config.theme.colors.fg}";
insert.bg = "#${config.theme.colors.primary-bg}";
insert.fg = "#${config.theme.colors.primary-fg}";
command = {
bg = "#${config.theme.colors.alt-bg}";
fg = "#${config.theme.colors.alt-fg}";
private.bg = "#${config.theme.colors.alt-bg}";
private.fg = "#${config.theme.colors.alt-fg}";
};
};
messages = {
info = {
bg = "#${config.theme.colors.alt-bg}";
fg = "#${config.theme.colors.alt-fg}";
border = "#${config.theme.colors.alt-bg}";
};
error = {
bg = "#${config.theme.colors.color1}";
fg = "#${config.theme.colors.alt-fg}";
border = "#${config.theme.colors.color1}";
};
};
#webpage.darkmode.enabled = true; # Enable dark mode for all websites (Weird on images)
webpage.preferred_color_scheme =
"dark"; # Enable dark mode for websites that support it
};
fonts = { default_family = "${config.theme.font}"; };
completion = {
height = "30%";
open_categories = [ "history" ];
scrollbar = {
padding = 0;
width = 0;
};
show = "always";
shrink = true;
timestamp_format = "";
web_history.max_items = 7;
};
content = {
autoplay = false;
javascript.clipboard = "access";
javascript.enabled = true;
pdfjs = true;
};
downloads = {
position = "bottom";
remove_finished = 0;
};
hints = {
border = "none";
radius = 1;
};
scrolling = {
bar = "never";
smooth = true;
};
tabs = {
show = "multiple";
last_close = "close";
mode_on_change = "restore";
close_mouse_button = "right";
};
zoom.default = "100%";
qt.force_software_rendering = "chromium";
};
keyBindings = {
normal = {
"gh" = "open ${config.home.homeDirectory}/.config/startpage/index.html";
" p" = "tab-move -";
" n" = "tab-move +";
" w" = "tab-close";
" 1" = "tab-focus 1";
" 2" = "tab-focus 2";
" 3" = "tab-focus 3";
" 4" = "tab-focus 4";
" 5" = "tab-focus 5";
" 6" = "tab-focus 6";
" 7" = "tab-focus 7";
" 8" = "tab-focus 8";
" 9" = "tab-focus 9";
" 0" = "tab-focus 10";
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
command = {
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
insert = {
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
};
extraConfig = ''
config.unbind("gm")
config.unbind("gd")
config.unbind("gb")
config.unbind("tl")
config.unbind("gt")
c.tabs.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
config.load_autoconfig(True)
'';
};
}

View File

@@ -1,297 +0,0 @@
{ config, ... }:
let
bookmarks = ''
Bookmarks: [
{text: "MyNixOs", url: "https://mynixos.com", icon: "󱄅"},
{text: "Github", url: "https://github.com", icon: ""},
{text: "Proton", url: "https://mail.proton.me/u/0/inbox", icon: ""},
{text: "Cloudflare One", url: "https://one.dash.cloudflare.com/", icon: ""},
{text: "Chat GPT", url: "https://chat.openai.com/", icon: "󰭹"},
{text: "Nixvim", url: "https://nix-community.github.io/nixvim/", icon: ""},
{text: "Hyprland Wiki", url: "https://wiki.hyprland.org/", icon: "󰖬"},
{text: "Nerdfont", url: "https://www.nerdfonts.com/cheat-sheet", icon: ""},
{text: "Youtube", url: "https://youtube.com", icon: "󰗃"},
],
Home: [
{text: "Casa", url: "http://192.168.2.16:8081/#/", icon: "󰋜"},
{text: "Plex", url: "http://192.168.2.16:32400", icon: "󰚺"},
{text: "Nextcloud", url: "http://192.168.2.16:10081", icon: ""},
],
Work: [
{text: "Outlook", url: "https://outlook.office.com/mail/", icon: "󰴢"},
{text: "Office", url: "https://www.office.com/?auth=2", icon: "󰏆"},
{text: "Teams", url: "https://teams.microsoft.com/_", icon: "󰊻"},
],
'';
in {
xdg.configFile."startpage/index.html".text = ''
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Homepage</title>
<style>
h1,
h2,
h3,
p {
margin: 0;
padding: 0;
font-family: '${config.theme.font}', sans-serif;
}
.w-screen {
width: 100vw;
}
.overflow-hidden {
overflow: hidden;
}
.max-w-7xl {
max-width: 80rem;
}
.mx-auto {
margin-left: auto;
margin-right: auto;
}
.justify-between {
justify-content: space-between;
}
.items-center {
align-items: center;
}
.py-12 {
padding-top: 3rem;
padding-bottom: 3rem;
}
.px-2 {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.text-5xl {
font-size: 3rem;
line-height: 1;
}
.font-bold {
font-weight: 700;
}
.mb-4 {
margin-bottom: 1rem;
}
.flex {
display: flex;
}
.flex-wrap {
flex-wrap: wrap;
}
.flex-col {
flex-direction: column;
}
.flex-grow {
flex-grow: 1;
}
.gap-5 {
gap: 1.25rem;
}
.gap-05 {
gap: 0.125rem;
}
.justify-start {
justify-content: flex-start;
}
.items-start {
align-items: flex-start;
}
.hover\:opacity-60:hover {
opacity: 0.6;
}
.pb-10 {
padding-bottom: 2.5rem;
}
.p-10 {
padding: 2.5rem;
}
.text-xl {
font-size: 1.25rem;
line-height: 1.75rem;
}
.text-lg {
font-size: 1.125rem;
line-height: 1.75rem;
}
.text-sm {
font-size: 0.875rem;
line-height: 1.25rem;
}
.text-4xl {
font-size: 2.25rem;
line-height: 2.5rem;
}
.px-5 {
padding-left: 1.25rem;
padding-right: 1.25rem;
}
.py-2 {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
a {
text-decoration: none;
}
a, a:visited, a:hover, a:active {
color: inherit;
}
</style>
</head>
<body class="w-screen" style="background-color: #${config.theme.colors.bg}; color: #${config.theme.colors.fg};">
<div class="max-w-7xl mx-auto p-10">
<div class="w-full flex justify-between" id="date-time">
<p class="text-xl"></p>
<p class="text-xl"></p>
</div>
<div class="w-full py-12 px-2" id="greeting">
<h1 class="text-5xl font-bold mb-4" style="color: #${config.theme.colors.primary-bg};"></h1>
</div>
<div id="link-list" class="flex gap-5 flex-col justify-start items-start"></div>
</div>
<script defer>
const linkLists = {
${bookmarks}
};
function getDomainFromUrl(url) {
let domain = url.replace(/(^\w+:|^)\/\//, "");
domain = domain.split('/')[0];
return domain;
}
const linkListContainer = document.getElementById('link-list');
for (const key in linkLists) {
if (Object.hasOwnProperty.call(linkLists, key)) {
const linkList = linkLists[key];
const title = document.createElement('h2');
title.textContent = key.charAt(0).toUpperCase() + key.slice(1);
title.className = "text-3xl font-bold"
linkListContainer.appendChild(title);
const list = document.createElement('div');
list.className = 'flex flex-wrap gap-5 justify-start';
linkList.forEach(link => {
const anchor = document.createElement('a');
anchor.href = link.url;
anchor.className = "px-5 py-2 hover:opacity-60 flex-grow"
const div = document.createElement('div');
div.className = 'flex flex-row gap-5 items-center';
let icon = document.createElement('p');
icon.textContent = link.icon || "";
icon.className = "text-4xl";
div.appendChild(icon);
const divNameUrl = document.createElement('div');
divNameUrl.className = 'flex flex-col gap-05';
const name = document.createElement('p');
name.textContent = link.text;
name.className = 'text-lg font-medium';
const url = document.createElement('p');
url.textContent = link.url;
url.className = 'text-sm';
url.style = "color: #${config.theme.colors.alt-fg};"
divNameUrl.appendChild(name);
divNameUrl.appendChild(url);
div.appendChild(divNameUrl);
anchor.appendChild(div);
list.appendChild(anchor);
});
linkListContainer.appendChild(list);
const spacer = document.createElement('div');
spacer.className = "pb-10"
linkListContainer.appendChild(spacer);
}
}
function updateDateTime() {
const dateTimeContainer = document.getElementById('date-time');
const currentDate = new Date();
const dateOptions = {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'};
const timeOptions = {hour: '2-digit', minute: '2-digit'};
const formattedDate = currentDate.toLocaleDateString('en-US', dateOptions);
const formattedTime = currentDate.toLocaleTimeString('en-US', timeOptions);
const dateParagraph = dateTimeContainer.querySelector('p:nth-child(1)');
const timeParagraph = dateTimeContainer.querySelector('p:nth-child(2)');
dateParagraph.textContent = formattedDate;
timeParagraph.textContent = formattedTime;
}
updateDateTime();
setInterval(updateDateTime, 60000);
function updateGreeting() {
const greetingContainer = document.getElementById('greeting');
const currentDate = new Date();
const currentHour = currentDate.getHours();
let greetingText;
if (currentHour < 2) {
greetingText = "Good night! ";
} else if (currentHour < 5) {
greetingText = "Hello, night owl! 󰏒";
} else if (currentHour < 12) {
greetingText = "Good morning! ";
} else if (currentHour < 17) {
greetingText = "Good afternoon! ";
} else if (currentHour < 20) {
greetingText = "Good evening! ";
} else {
greetingText = "Good night! ";
}
const greetingHeader = greetingContainer.querySelector('h1');
greetingHeader.textContent = greetingText;
}
updateGreeting();
</script>
</body>
</html>
'';
}

View File

@@ -1,40 +0,0 @@
{ pkgs, config, lib, spicetify-nix, ... }:
let spicePkgs = spicetify-nix.packages.${pkgs.system}.default;
in {
imports = [ spicetify-nix.homeManagerModules.default ];
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [ "spotify" ];
programs.spicetify = {
enable = true;
theme = spicePkgs.themes.text;
colorScheme = "custom";
customColorScheme = {
text = "${config.theme.colors.fg}";
subtext = "${config.theme.colors.alt-fg}";
sidebar-text = "${config.theme.colors.alt-fg}";
main = "${config.theme.colors.bg}";
sidebar = "${config.theme.colors.bg}";
background = "${config.theme.colors.bg}";
player = "${config.theme.colors.bg}";
card = "${config.theme.colors.bg}";
shadow = "000000";
selected-row = "${config.theme.colors.alt-bg}";
button = "${config.theme.colors.primary-bg}";
button-active = "${config.theme.colors.primary-bg}";
button-disabled = "${config.theme.colors.alt-bg}";
tab-active = "${config.theme.colors.primary-bg}";
misc = "${config.theme.colors.alt-fg}";
};
enabledExtensions = with spicePkgs.extensions; [
playlistIcons
lastfm
historyShortcut
hidePodcasts
fullAppDisplay
shuffle
];
};
}

View File

@@ -1,61 +0,0 @@
{ pkgs, ... }:
let variable = import ../variables.nix;
in {
imports = [ ./themes ./system ./scripts ./apps ];
home = {
username = variable.username;
homeDirectory = variable.homeDirectory;
packages = with pkgs; [
swappy
imv
discord
obsidian
btop
xfce.thunar
bitwarden
vlc
# Dev
go
cargo
nodejs
python3
jq
# Utils
sops # Secrets
age # Secrets
fd
bc
gcc
blueman
zip
unzip
xdg_utils
tldr
wget
curl
ripgrep
neovide
wf-recorder
tree # temp
# Just cool
peaclock
cbonsai
pipes
cmatrix
# Backup
vscode
firefox
tor-browser
];
stateVersion = variable.stateVersion;
};
programs.home-manager.enable = true;
}

View File

@@ -0,0 +1,9 @@
{
programs.btop = {
enable = true;
settings = {
color_theme = "Default";
theme_background = false;
};
};
}

View File

@@ -5,8 +5,8 @@
general.framerate = 60; general.framerate = 60;
smoothing.noise_reduction = 88; smoothing.noise_reduction = 88;
color = { color = {
background = "'#${config.theme.colors.bg}'"; background = "'#${config.var.theme.colors.bg}'";
foreground = "'#${config.theme.colors.primary-bg}'"; foreground = "'#${config.var.theme.colors.accent}'";
}; };
}; };
}; };

View File

@@ -0,0 +1 @@
{ imports = [ ./neofetch ./nerdfetch ]; }

View File

@@ -109,9 +109,9 @@
song_format="%artist% - %album% - %title%" song_format="%artist% - %album% - %title%"
song_shorthand="off" song_shorthand="off"
mpc_args=() mpc_args=()
colors=(${toString config.theme.colors.primary-ansi-16-number} 1 ${ colors=(${toString config.var.theme.colors.accentNumber} 1 ${
toString config.theme.colors.primary-ansi-16-number toString config.var.theme.colors.accentNumber
} ${toString config.theme.colors.primary-ansi-16-number} 7) } ${toString config.var.theme.colors.accentNumber} 7)
bold="on" bold="on"
underline_enabled="on" underline_enabled="on"
underline_char="-" underline_char="-"

View File

@@ -1,4 +1,3 @@
# Nerdfetch: https://github.com/ThatOneCalculator/NerdFetch
{ pkgs, config, ... }: { pkgs, config, ... }:
let let
nerdfetch = pkgs.writeShellScriptBin "nerdfetch" '' nerdfetch = pkgs.writeShellScriptBin "nerdfetch" ''
@@ -346,9 +345,9 @@ let
## USER VARIABLES -- YOU CAN CHANGE THESE ## USER VARIABLES -- YOU CAN CHANGE THESE
lc="$reset$bold''$${config.theme.colors.primary-ansi-16}" # labels lc="$reset$bold''$${config.var.theme.colors.accentName}" # labels
nc="$reset$bold''$${config.theme.colors.primary-ansi-16}" # labels nc="$reset$bold''$${config.var.theme.colors.accentName}" # labels
hn="$reset$bold''$${config.theme.colors.primary-ansi-16}" # labels hn="$reset$bold''$${config.var.theme.colors.accentName}" # labels
ic="$reset$white" # info ic="$reset$white" # info
c0="$reset$grey" # first color c0="$reset$grey" # first color
c1="$reset$white" # second color c1="$reset$white" # second color
@@ -367,4 +366,4 @@ let
""" """
''; '';
in { home.packages = with pkgs; [ nerdfetch ]; } in { home.packages = [ nerdfetch ]; }

View File

@@ -0,0 +1,50 @@
{ config, ... }: {
programs.git = {
enable = true;
userName = config.var.git.username;
userEmail = config.var.git.email;
ignores = [
".cache/"
".DS_Store"
".idea/"
"*.swp"
"*.elc"
"auto-save-list"
".direnv/"
"node_modules"
"result"
"result-*"
];
extraConfig = {
init.defaultBranch = "main";
push.autoSetupRemote = true;
};
aliases = {
essa = "push --force";
co = "checkout";
fuck = "commit --amend -m";
c = "commit -m";
ca = "commit -am";
forgor = "commit --amend --no-edit";
graph = "log --all --decorate --graph --oneline";
oops = "checkout --";
l = "log";
r = "rebase";
s = "status --short";
ss = "status";
d = "diff";
ps = "!git push origin $(git rev-parse --abbrev-ref HEAD)";
pl = "!git pull origin $(git rev-parse --abbrev-ref HEAD)";
af = "!git add $(git ls-files -m -o --exclude-standard | sk -m)";
st = "status";
br = "branch";
df = "!git hist | peco | awk '{print $2}' | xargs -I {} git diff {}^ {}";
hist = ''
log --pretty=format:"%Cgreen%h %Creset%cd %Cblue[%cn] %Creset%s%C(yellow)%d%C(reset)" --graph --date=relative --decorate --all'';
llog = ''
log --graph --name-status --pretty=format:"%C(red)%h %C(reset)(%cd) %C(green)%an %Creset%s %C(yellow)%d%Creset" --date=relative'';
edit-unmerged =
"!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; hx `f`";
};
};
}

View File

@@ -0,0 +1,48 @@
{ config, pkgs, ... }: {
programs.kitty = {
enable = true;
settings = {
scrollback_lines = 10000;
initial_window_width = 1200;
initial_window_height = 600;
update_check_interval = 0;
enable_audio_bell = false;
confirm_os_window_close = "0";
remember_window_size = "no";
disable_ligatures = "never";
shell = "${pkgs.tmux}/bin/tmux";
url_style = "curly";
cursor_shape = "Underline";
cursor_underline_thickness = config.var.theme.border-size;
window_padding_width = config.var.theme.gaps-in;
# Font
font_family = config.var.theme.font-mono;
font_size = config.var.theme.font-size;
# Colors
background = "#" + config.var.theme.colors.bg;
url_color = "#" + config.var.theme.colors.accent;
color0 = "#" + config.var.theme.colors.c0;
color8 = "#" + config.var.theme.colors.c8;
color1 = "#" + config.var.theme.colors.c1;
color9 = "#" + config.var.theme.colors.c9;
color2 = "#" + config.var.theme.colors.c2;
color10 = "#" + config.var.theme.colors.c10;
color3 = "#" + config.var.theme.colors.c3;
color11 = "#" + config.var.theme.colors.c11;
color4 = "#" + config.var.theme.colors.c4;
color12 = "#" + config.var.theme.colors.c12;
color5 = "#" + config.var.theme.colors.c5;
color13 = "#" + config.var.theme.colors.c13;
color6 = "#" + config.var.theme.colors.c6;
color14 = "#" + config.var.theme.colors.c14;
color7 = "#" + config.var.theme.colors.c7;
color15 = "#" + config.var.theme.colors.c15;
cursor = "#" + config.var.theme.colors.fg;
cursor_text_color = "#" + config.var.theme.colors.bg;
selection_foreground = "#" + config.var.theme.colors.accentFg;
selection_background = "#" + config.var.theme.colors.accent;
};
};
}

View File

@@ -0,0 +1,6 @@
{
services.nextcloud-client = {
enable = true;
startInBackground = true;
};
}

View File

@@ -0,0 +1,12 @@
{
programs.nixvim = {
enable = true;
colorschemes.catppuccin = {
enable = true;
settings = {
transparent_background = true;
flavour = "mocha";
};
};
};
}

View File

@@ -0,0 +1,17 @@
{ inputs, ... }: {
imports = [
inputs.nixvim.homeManagerModules.nixvim
./plugins/cmp.nix
./plugins/dashboard.nix
./plugins/lsp.nix
./plugins/markdown.nix
./plugins/tree.nix
./plugins/ui.nix
./plugins/utils.nix
./plugins/zen-mode.nix
./options.nix
./colorscheme.nix
./keymaps.nix
];
}

View File

@@ -0,0 +1,24 @@
{
programs.nixvim.keymaps = [
{
key = "<leader>fm";
action = "<cmd>lua vim.lsp.buf.format()<cr>";
options.desc = "LSP Format";
}
{
key = "<leader>w";
action = "<cmd>set wrap!<cr>";
options.desc = "Toggle word wrapping";
}
{
key = "<leader>W";
action = "<cmd>set linebreak!<cr>";
options.desc = "Toggle linebreak";
}
{
key = "<leader>z";
action = "<cmd>ZenMode<cr>";
options.desc = "ZenMode";
}
];
}

View File

@@ -24,7 +24,7 @@
wildmode = "list:longest"; wildmode = "list:longest";
completeopt = [ "menuone" "noselect" ]; completeopt = [ "menuone" "noselect" ];
signcolumn = "yes"; signcolumn = "yes";
cursorline = true; cursorline = false;
scrolloff = 8; scrolloff = 8;
mouse = "a"; mouse = "a";
@@ -32,6 +32,6 @@
swapfile = false; swapfile = false;
undofile = true; undofile = true;
conceallevel = 2; conceallevel = 3;
}; };
} }

View File

@@ -1,9 +1,9 @@
{ config, ... }: { { config, ... }: {
programs.nixvim.highlight = { programs.nixvim.highlight = {
AlphaHeaderColor.fg = "#${config.theme.colors.primary-bg}"; AlphaHeaderColor.fg = "#${config.var.theme.colors.accent}";
AlphaTextColor.fg = "#${config.theme.colors.fg}"; AlphaTextColor.fg = "#${config.var.theme.colors.fg}";
AlphaShortcutColor.fg = "#${config.theme.colors.alt-fg}"; AlphaShortcutColor.fg = "#${config.var.theme.colors.fgalt}";
}; };
programs.nixvim.plugins.alpha = { programs.nixvim.plugins.alpha = {
@@ -70,7 +70,23 @@
{ {
type = "button"; type = "button";
val = " NixOs Config"; val = " NixOs Config";
on_press.__raw = "function() vim.cmd[[e ~/.config/nixos]] end"; on_press.__raw =
"function() vim.cmd[[Neotree ${config.var.configDirectory}]] end";
opts = {
shortcut = "nc";
position = "center";
cursor = 3;
width = 50;
align_shortcut = "right";
hl_shortcut = "AlphaShortcutColor";
hl = "AlphaTextColor";
};
}
{
type = "button";
val = " Keybindings";
on_press.__raw =
"function() vim.cmd[[e ${config.var.configDirectory}/docs/KEYBINDINGS.md]] end";
opts = { opts = {
shortcut = "nc"; shortcut = "nc";
position = "center"; position = "center";

View File

@@ -0,0 +1,50 @@
{
programs.nixvim.plugins = {
lsp-format.enable = true;
lsp = {
enable = true;
servers = {
bashls.enable = true;
clangd.enable = true;
gopls.enable = true;
nixd.enable = true;
tailwindcss.enable = true;
html.enable = true;
svelte.enable = true;
marksman.enable = true;
ltex = {
enable = false;
settings = {
enabled = false;
language = "en";
};
};
};
keymaps.lspBuf = {
"gd" = "definition";
"gD" = "references";
"gt" = "type_definition";
"gi" = "implementation";
"K" = "hover";
};
};
none-ls = {
enable = true;
sources = {
diagnostics = {
golangci_lint.enable = true;
statix.enable = true;
};
formatting = {
gofmt.enable = true;
goimports.enable = true;
nixfmt.enable = true;
markdownlint.enable = true;
tidy.enable = true;
shellharden.enable = true;
shfmt.enable = true;
};
};
};
};
}

View File

@@ -0,0 +1,133 @@
{
programs.nixvim.plugins = {
mkdnflow = {
enable = true;
mappings = {
# Main
MkdnEnter = {
key = "<CR>";
modes = [ "n" "v" "i" ];
};
# Links
MkdnCreateLink = false;
MkdnCreateLinkFromClipboard = {
key = "<leader>lc";
modes = [ "n" "v" ];
};
MkdnDestroyLink = {
key = "<leader>dl";
modes = "n";
};
MkdnFollowLink = false;
MkdnNextLink = {
key = "<Tab>";
modes = "n";
};
MkdnYankAnchorLink = {
key = "ya";
modes = "n";
};
MkdnYankFileAnchorLink = {
key = "yfa";
modes = "n";
};
MkdnPrevLink = {
key = "<S-Tab>";
modes = "n";
};
MkdnDecreaseHeading = {
key = "-";
modes = "n";
};
MkdnExtendList = false;
MkdnFoldSection = {
key = "<leader>ff";
modes = "n";
};
MkdnUnfoldSection = {
key = "<leader>fu";
modes = "n";
};
MkdnGoBack = {
key = "<BS>";
modes = "n";
};
MkdnGoForward = {
key = "<Del>";
modes = "n";
};
MkdnIncreaseHeading = {
key = "+";
modes = "n";
};
MkdnMoveSource = {
key = "<F2>";
modes = "n";
};
MkdnNewListItem = false;
MkdnNewListItemAboveInsert = {
key = "O";
modes = "n";
};
MkdnNewListItemBelowInsert = {
key = "o";
modes = "n";
};
MkdnNextHeading = {
key = "]]";
modes = "n";
};
MkdnPrevHeading = {
key = "[[";
modes = "n";
};
MkdnSTab = false;
MkdnTab = false;
MkdnTableFormat = {
key = "<leader>ft";
modes = "n";
};
MkdnTableNewColAfter = {
key = "<leader>ic";
modes = "n";
};
MkdnTableNewColBefore = {
key = "<leader>iC";
modes = "n";
};
MkdnTableNewRowAbove = {
key = "<leader>iR";
modes = "n";
};
MkdnTableNewRowBelow = {
key = "<leader>ir";
modes = "n";
};
MkdnTableNextCell = {
key = "<S-Tab>";
modes = "i";
};
MkdnTableNextRow = false;
MkdnTablePrevCell = {
key = "<M-Tab>";
modes = "i";
};
MkdnTablePrevRow = {
key = "<M-CR>";
modes = "i";
};
MkdnToggleToDo = {
key = "<C-Space>";
modes = [ "n" "v" ];
};
MkdnUpdateNumbering = {
key = "<leader>nn";
modes = "n";
};
};
};
};
}

View File

@@ -0,0 +1,61 @@
{
programs.nixvim = {
plugins = {
neo-tree.enable = true;
oil = {
enable = true;
settings = {
default_file_explorer = false;
skip_confirm_for_simple_edits = true;
win_options = {
concealcursor = "ncv";
conceallevel = 3;
cursorcolumn = false;
foldcolumn = "0";
list = false;
signcolumn = "no";
spell = false;
wrap = false;
};
float = { padding = 5; };
keymaps = {
"-" = "actions.parent";
"b" = "actions.parent";
"<C-c>" = "actions.close";
"<C-h>" = "actions.select_split";
"<C-l>" = "actions.refresh";
"<C-p>" = "actions.preview";
"<C-s>" = "actions.select_vsplit";
"<C-t>" = "actions.select_tab";
"<CR>" = "actions.select";
_ = "actions.open_cwd";
"`" = "actions.cd";
"g." = "actions.toggle_hidden";
"g?" = "actions.show_help";
"g\\" = "actions.toggle_trash";
gs = "actions.change_sort";
gx = "actions.open_external";
"~" = "actions.tcd";
};
};
};
};
keymaps = [
{
key = "-";
action = "<cmd>Oil<cr>";
options.desc = "Oil";
}
{
key = "<leader>e";
action = "<cmd>Oil --float<cr>";
options.desc = "Oil";
}
{
key = "<leader>E";
action = "<cmd>Neotree toggle<cr>";
options.desc = "Neotree";
}
];
};
}

View File

@@ -0,0 +1,31 @@
{ pkgs, ... }: {
home.packages = with pkgs; [ ctags ];
programs.nixvim = {
plugins = {
lualine.enable = true;
noice.enable = true;
gitsigns = {
enable = true;
settings.current_line_blame = false;
};
bufferline.enable = true;
trouble.enable = true;
which-key.enable = true;
headlines = {
enable = true;
settings = {
markdown = {
codeblock_highlight = false;
};
};
};
nvim-colorizer.enable = true;
# tagbar.enable = true;
};
keymaps = [{
key = "<leader>t";
action = "<cmd>TroubleToggle<cr>";
options.desc = "Trouble";
}];
};
}

View File

@@ -0,0 +1,51 @@
{ config, ... }: {
programs.nixvim = {
highlightOverride = {
FloatBorder.fg = "#${config.var.theme.colors.accent}";
};
plugins = {
copilot-vim.enable = true;
flash.enable = true;
# image.enable = true;
tmux-navigator.enable = true;
comment.enable = true;
nvim-autopairs.enable = true;
friendly-snippets.enable = true;
telescope = {
enable = true;
keymaps = {
"<leader>fg" = "live_grep";
"<leader> " = "find_files";
};
extensions.fzf-native = { enable = true; };
};
treesitter = {
enable = true;
nixGrammars = true;
settings = {
indent.enable = true;
highlight.enable = true;
};
};
treesitter-context.enable = true;
};
keymaps = [
{
key = "<C-h>";
action = "<cmd>TmuxNavigateLeft<cr>";
}
{
key = "<C-j>";
action = "<cmd>TmuxNavigateDown<cr>";
}
{
key = "<C-k>";
action = "<cmd>TmuxNavigateUp<cr>";
}
{
key = "<C-l>";
action = "<cmd>TmuxNavigateRight<cr>";
}
];
};
}

View File

@@ -0,0 +1,31 @@
{
programs.nixvim.plugins.zen-mode = {
enable = true;
settings = {
on_open = ''
function()
require("gitsigns.actions").toggle_current_line_blame()
vim.opt.relativenumber = false
vim.opt.signcolumn = "no"
vim.opt.wrap = true
vim.opt.linebreak = true
end
'';
plugins = {
gitsigns = { enabled = true; };
options = {
enabled = true;
ruler = false;
showcmd = false;
};
tmux = { enabled = true; };
};
window = {
backdrop = 0.95;
height = 1;
options = { signcolumn = "no"; };
width = 0.9;
};
};
};
}

View File

@@ -0,0 +1,342 @@
{ pkgs, config, ... }:
let
settings = ''
{
"config": {
"title" : "Welcome Home",
"openLinksInNewTab": false,
"locale": "fr-FR",
"colors": {
"primary": "#${config.var.theme.colors.accent}",
"background": "#${config.var.theme.colors.bg}",
"foreground": "#${config.var.theme.colors.fg}",
"muted": "#${config.var.theme.colors.c8}"
},
"folders": [
{
"name": "Bookmarks",
"links": [
{"title": "MyNixOs", "url": "https://mynixos.com", "icon": "󱄅"},
{"title": "Github", "url": "https://github.com", "icon": ""},
{"title": "Proton", "url": "https://mail.proton.me/u/0/inbox", "icon": ""},
{"title": "Cloudflare One", "url": "https://one.dash.cloudflare.com/", "icon": ""},
{"title": "Chat GPT", "url": "https://chat.openai.com/", "icon": "󰭹"},
{"title": "Nixvim", "url": "https://nix-community.github.io/nixvim/", "icon": ""},
{"title": "Hyprland Wiki", "url": "https://wiki.hyprland.org/", "icon": "󰖬"},
{"title": "Youtube", "url": "https://youtube.com", "icon": "󰗃"},
{"title": "Figma", "url": "https://figma.com", "icon": ""},
{"title": "Server", "url": "https://home.anotherhadi.com", "icon": ""}
]
},
{
"name": "Work",
"links": [
{"title": "Outlook", "url": "https://outlook.office.com/mail/", "icon": "󰴢"},
{"title": "Office", "url": "https://www.office.com/?auth=2", "icon": "󰏆"},
{"title": "Teams", "url": "https://teams.microsoft.com/_", "icon": "󰊻"}
]
}
]
}
}
'';
homepage = pkgs.buildNpmPackage {
pname = "homepage";
version = "0.0.0";
src = pkgs.fetchFromGitHub {
owner = "anotherhadi";
repo = "homepage";
rev = "b77d35ed3596eb451bd2ec78063d7cc6e73c773d";
hash = "sha256-j/40922kfAh6zqJ4IRYpr66YXNNYsxuXwZ0aiJFJea0=";
};
# npmDepsHash = lib.fakeHash;
npmDepsHash = "sha256-bG+CHTq2Rst3JMxsjAC81KhK+G7WwsTVD1eyP87g0z4=";
buildPhase = ''
npm install
cp ${
pkgs.writeText "src/routes/config.json" settings
} src/routes/config.json
npm run build
mkdir $out
mv build $out
'';
meta = {
description = "homepage";
homepage = "https://github.com/anotherhadi/homepage";
};
};
in {
imports = [
./duckduckgo-colorscheme.nix
# ./userscripts.nix
];
programs.qutebrowser = {
enable = true;
searchEngines = {
"DEFAULT" = "https://duckduckgo.com/?q={}&ia=web";
"d" = "https://duckduckgo.com/?q={}&ia=web";
"g" = "https://google.com/search?q={}";
"y" = "https://youtube.com/results?search_query={}";
"ya" = "https://yandex.com/search/?text={}";
"n" = "https://mynixos.com/search?q={}";
"nixo" = "https://search.nixos.org/options?channel=unstable&query={}";
"nixp" = "https://search.nixos.org/packages?channel=unstable&query={}";
"gt" = "https://github.com/search?q={}&type=repositories";
};
quickmarks = {
home = "${homepage}/build/index.html";
server = "https://home.anotherhadi.com";
jack = "https://home.anotherhadi.com";
mynixos = "https://mynixos.com";
github = "https://github.com";
outlook = "https://outlook.office.com/mail/";
office = "https://www.office.com/?auth=2";
teams = "https://teams.microsoft.com/_";
casa = "http://192.168.2.16:8081/#/";
proton = "https://mail.proton.me/u/0/inbox";
cloudflare-one = "https://one.dash.cloudflare.com/";
chatgpt = "https://chat.openai.com/";
nixvim = "https://nix-community.github.io/nixvim/";
hyprland = "https://wiki.hyprland.org/";
nerdfont = "https://www.nerdfonts.com/cheat-sheet";
youtube = "https://youtube.com/";
cloudflare = "https://dash.cloudflare.com/";
};
settings = {
url = {
default_page = "${homepage}/build/index.html";
start_pages = [ "${homepage}/build/index.html" ];
};
colors = {
tabs = {
odd.bg = "#${config.var.theme.colors.bg}";
odd.fg = "#${config.var.theme.colors.fg}";
even.bg = "#${config.var.theme.colors.bg}";
even.fg = "#${config.var.theme.colors.fg}";
selected = {
odd = {
bg = "#${config.var.theme.colors.accent}";
fg = "#${config.var.theme.colors.accentFg}";
};
even = {
bg = "#${config.var.theme.colors.accent}";
fg = "#${config.var.theme.colors.accentFg}";
};
};
indicator = {
error = "#${config.var.theme.colors.c1}";
start = "#${config.var.theme.colors.bgalt}";
stop = "#${config.var.theme.colors.bgalt}";
};
};
hints = {
bg = "#${config.var.theme.colors.bgalt}";
fg = "#${config.var.theme.colors.fgalt}";
match.fg = "#${config.var.theme.colors.bg}";
};
completion = {
category = {
bg = "#${config.var.theme.colors.bg}";
fg = "#${config.var.theme.colors.fg}";
border = {
top = "#${config.var.theme.colors.bg}";
bottom = "#${config.var.theme.colors.bg}";
};
};
odd.bg = "#${config.var.theme.colors.bg}";
even.bg = "#${config.var.theme.colors.bg}";
fg = [ "#FFFFFF" "#FFFFFF" "#FFFFFF" ];
match.fg = "#${config.var.theme.colors.accent}";
item.selected = {
bg = "#${config.var.theme.colors.accent}";
border.top = "#${config.var.theme.colors.accent}";
border.bottom = "#${config.var.theme.colors.accent}";
fg = "#${config.var.theme.colors.accentFg}";
match.fg = "#${config.var.theme.colors.accentFg}";
};
};
statusbar = {
normal.bg = "#${config.var.theme.colors.bg}";
normal.fg = "#${config.var.theme.colors.fg}";
private.bg = "#${config.var.theme.colors.bg}";
private.fg = "#${config.var.theme.colors.fg}";
insert.bg = "#${config.var.theme.colors.accent}";
insert.fg = "#${config.var.theme.colors.accentFg}";
command = {
bg = "#${config.var.theme.colors.bgalt}";
fg = "#${config.var.theme.colors.fgalt}";
private.bg = "#${config.var.theme.colors.bgalt}";
private.fg = "#${config.var.theme.colors.fgalt}";
};
};
messages = {
info = {
bg = "#${config.var.theme.colors.bgalt}";
fg = "#${config.var.theme.colors.fgalt}";
border = "#${config.var.theme.colors.bgalt}";
};
error = {
bg = "#${config.var.theme.colors.c1}";
fg = "#${config.var.theme.colors.fgalt}";
border = "#${config.var.theme.colors.c1}";
};
};
#webpage.darkmode.enabled = true; # Enable dark mode for all websites (Weird on images)
webpage.preferred_color_scheme =
"dark"; # Enable dark mode for websites that support it
};
statusbar.show = "in-mode";
fonts = { default_family = "${config.var.theme.font}"; };
completion = {
height = "30%";
open_categories = [ "history" ];
scrollbar = {
padding = 0;
width = 0;
};
show = "always";
shrink = true;
timestamp_format = "";
web_history.max_items = 7;
};
content = {
autoplay = false;
javascript.clipboard = "access";
javascript.enabled = true;
webgl = true;
pdfjs = true;
};
downloads = {
position = "bottom";
remove_finished = 0;
};
hints = {
border = "none";
radius = 1;
};
scrolling = {
bar = "never";
smooth = true;
};
tabs = {
show = "multiple";
last_close = "close";
mode_on_change = "restore";
close_mouse_button = "right";
};
zoom.default = "100%";
qt.force_software_rendering = "chromium";
};
keyBindings = {
normal = {
"gh" = "open ${homepage}/build/index.html";
"gs" = "open https://home.anotherhadi.com";
" p" = "tab-move -";
" n" = "tab-move +";
" w" = "tab-close";
" 1" = "tab-focus 1";
" 2" = "tab-focus 2";
" 3" = "tab-focus 3";
" 4" = "tab-focus 4";
" 5" = "tab-focus 5";
" 6" = "tab-focus 6";
" 7" = "tab-focus 7";
" 8" = "tab-focus 8";
" 9" = "tab-focus 9";
" 0" = "tab-focus 10";
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
command = {
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
insert = {
"<Ctrl-w>" = "tab-close";
"<Ctrl-n>" = "open -w";
"<Ctrl-1>" = "tab-focus 1";
"<Ctrl-2>" = "tab-focus 2";
"<Ctrl-3>" = "tab-focus 3";
"<Ctrl-4>" = "tab-focus 4";
"<Ctrl-5>" = "tab-focus 5";
"<Ctrl-6>" = "tab-focus 6";
"<Ctrl-7>" = "tab-focus 7";
"<Ctrl-8>" = "tab-focus 8";
"<Ctrl-9>" = "tab-focus 9";
"<Ctrl-0>" = "tab-focus 10";
};
};
extraConfig = ''
config.unbind("gm")
config.unbind("gd")
config.unbind("gb")
config.unbind("tl")
config.unbind("gt")
c.tabs.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
c.statusbar.padding = {"bottom": 6, "left": 7, "right": 7, "top": 6}
config.load_autoconfig(True)
'';
};
}

View File

@@ -1,10 +1,9 @@
{ config, ... }: { { config, ... }: {
home.file.".duckduckgo-colorscheme.js".text = ''
xdg.configFile."duckduckgo-colorscheme.js".text = ''
// Go to DuckDuckGo settings page, open the console, paste the code and hit enter. // Go to DuckDuckGo settings page, open the console, paste the code and hit enter.
// based on https://ddg.codingcodax.dev/ // based on https://ddg.codingcodax.dev/
// Cookies string for your theme // Cookies string for your theme
const cookie = '7=${config.theme.colors.bg}; j=${config.theme.colors.bg}; 9=${config.theme.colors.fg}; aa=${config.theme.colors.alt-fg}; 8=${config.theme.colors.color7}; x=${config.theme.colors.primary-bg}; 21=${config.theme.colors.alt-bg};'; const cookie = '7=${config.var.theme.colors.bg}; j=${config.var.theme.colors.bg}; 9=${config.var.theme.colors.fg}; aa=${config.var.theme.colors.fgalt}; 8=${config.var.theme.colors.c7}; x=${config.var.theme.colors.accent}; 21=${config.var.theme.colors.bgalt};';
// Converts cookie string into formatted JSON // Converts cookie string into formatted JSON
const cookieToJSON = (cookieRaw) => { const cookieToJSON = (cookieRaw) => {

View File

@@ -0,0 +1,14 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
keyutils
python3
python311Packages.pyperclip
python312Packages.tldextract
];
xdg.configFile."qutebrowser/userscripts/bitwarden" = {
source = ./userscripts/qute-bitwarden.py;
executable = true;
};
}

View File

@@ -0,0 +1,291 @@
#!/usr/bin/env python3
# SPDX-FileCopyrightText: Chris Braun (cryzed) <cryzed@googlemail.com>
#
# SPDX-License-Identifier: GPL-3.0-or-later
"""
Insert login information using Bitwarden CLI and a dmenu-compatible application
(e.g. dmenu, rofi -dmenu, ...).
"""
USAGE = """The domain of the site has to be in the name of the Bitwarden entry, for example: "github.com/cryzed" or
"websites/github.com". The login information is inserted by emulating key events using qutebrowser's fake-key command in this manner:
[USERNAME]<Tab>[PASSWORD], which is compatible with almost all login forms.
If enabled, with the `--totp` flag, it will also move the TOTP code to the
clipboard, much like the Firefox add-on.
You must log into Bitwarden CLI using `bw login` prior to use of this script.
The session key will be stored using keyctl for the number of seconds passed to
the --auto-lock option.
To use in qutebrowser, run: `spawn --userscript qute-bitwarden`
"""
EPILOG = """Dependencies: tldextract (Python 3 module), pyperclip (optional
Python module, used for TOTP codes), Bitwarden CLI (1.7.4 is known to work
but older versions may well also work)
WARNING: The login details are viewable as plaintext in qutebrowser's debug log
(qute://log) and might be shared if you decide to submit a crash report!"""
import argparse
import enum
import functools
import os
import shlex
import subprocess
import sys
import json
import tldextract
argument_parser = argparse.ArgumentParser(
description=__doc__,
usage=USAGE,
epilog=EPILOG,
)
argument_parser.add_argument('url', nargs='?', default=os.getenv('QUTE_URL'))
argument_parser.add_argument('--dmenu-invocation', '-d', default='wofi --dmenu -i',
help='Invocation used to execute a dmenu-provider')
argument_parser.add_argument('--password-prompt-invocation', '-p', default='rofi -dmenu -p "Master Password" -password -lines 0',
help='Invocation used to prompt the user for their Bitwarden password')
argument_parser.add_argument('--no-insert-mode', '-n', dest='insert_mode', action='store_false',
help="Don't automatically enter insert mode")
argument_parser.add_argument('--totp', '-t', action='store_true',
help="Copy TOTP key to clipboard")
argument_parser.add_argument('--io-encoding', '-i', default='UTF-8',
help='Encoding used to communicate with subprocesses')
argument_parser.add_argument('--merge-candidates', '-m', action='store_true',
help='Merge pass candidates for fully-qualified and registered domain name')
argument_parser.add_argument('--auto-lock', type=int, default=900,
help='Automatically lock the vault after this many seconds')
group = argument_parser.add_mutually_exclusive_group()
group.add_argument('--username-only', '-e',
action='store_true', help='Only insert username')
group.add_argument('--password-only', '-w',
action='store_true', help='Only insert password')
group.add_argument('--totp-only', '-T',
action='store_true', help='Only insert totp code')
stderr = functools.partial(print, file=sys.stderr)
class ExitCodes(enum.IntEnum):
SUCCESS = 0
FAILURE = 1
# 1 is automatically used if Python throws an exception
NO_PASS_CANDIDATES = 2
COULD_NOT_MATCH_USERNAME = 3
COULD_NOT_MATCH_PASSWORD = 4
def qute_command(command):
with open(os.environ['QUTE_FIFO'], 'w') as fifo:
fifo.write(command + '\n')
fifo.flush()
def ask_password(password_prompt_invocation):
process = subprocess.run(
shlex.split(password_prompt_invocation),
text=True,
stdout=subprocess.PIPE,
)
if process.returncode > 0:
raise Exception('Could not unlock vault')
master_pass = process.stdout.strip()
return subprocess.check_output(
['bw', 'unlock', '--raw', master_pass],
text=True,
).strip()
def get_session_key(auto_lock, password_prompt_invocation):
if auto_lock == 0:
subprocess.call(['keyctl', 'purge', 'user', 'bw_session'])
return ask_password(password_prompt_invocation)
else:
process = subprocess.run(
['keyctl', 'request', 'user', 'bw_session'],
text=True,
stdout=subprocess.PIPE,
)
key_id = process.stdout.strip()
if process.returncode > 0:
session = ask_password(password_prompt_invocation)
if not session:
raise Exception('Could not unlock vault')
key_id = subprocess.check_output(
['keyctl', 'add', 'user', 'bw_session', session, '@u'],
text=True,
).strip()
if auto_lock > 0:
subprocess.call(['keyctl', 'timeout', str(key_id), str(auto_lock)])
return subprocess.check_output(
['keyctl', 'pipe', str(key_id)],
text=True,
).strip()
def pass_(domain, encoding, auto_lock, password_prompt_invocation):
session_key = get_session_key(auto_lock, password_prompt_invocation)
process = subprocess.run(
['bw', 'list', 'items', '--session', session_key, '--url', domain],
capture_output=True,
)
err = process.stderr.decode(encoding).strip()
if err:
msg = 'Bitwarden CLI returned for {:s} - {:s}'.format(domain, err)
stderr(msg)
if process.returncode:
return '[]'
out = process.stdout.decode(encoding).strip()
return out
def get_totp_code(selection_id, domain_name, encoding, auto_lock, password_prompt_invocation):
session_key = get_session_key(auto_lock, password_prompt_invocation)
process = subprocess.run(
['bw', 'get', 'totp', '--session', session_key, selection_id],
capture_output=True,
)
err = process.stderr.decode(encoding).strip()
if err:
# domain_name instead of selection_id to make it more user-friendly
msg = 'Bitwarden CLI returned for {:s} - {:s}'.format(domain_name, err)
stderr(msg)
if process.returncode:
return '[]'
out = process.stdout.decode(encoding).strip()
return out
def dmenu(items, invocation, encoding):
command = shlex.split(invocation)
process = subprocess.run(command, input='\n'.join(
items).encode(encoding), stdout=subprocess.PIPE)
return process.stdout.decode(encoding).strip()
def fake_key_raw(text):
for character in text:
# Escape all characters by default, space requires special handling
sequence = '" "' if character == ' ' else r'\{}'.format(character)
qute_command('fake-key {}'.format(sequence))
def main(arguments):
if not arguments.url:
argument_parser.print_help()
return ExitCodes.FAILURE
extract_result = tldextract.extract(arguments.url)
# Try to find candidates using targets in the following order: fully-qualified domain name (includes subdomains),
# the registered domain name and finally: the IPv4 address if that's what
# the URL represents
candidates = []
for target in filter(None, [
extract_result.fqdn,
extract_result.registered_domain,
extract_result.subdomain + '.' + extract_result.domain,
extract_result.domain,
extract_result.ipv4]):
target_candidates = json.loads(
pass_(
target,
arguments.io_encoding,
arguments.auto_lock,
arguments.password_prompt_invocation,
)
)
if not target_candidates:
continue
candidates = candidates + target_candidates
if not arguments.merge_candidates:
break
else:
if not candidates:
stderr('No pass candidates for URL {!r} found!'.format(
arguments.url))
return ExitCodes.NO_PASS_CANDIDATES
if len(candidates) == 1:
selection = candidates.pop()
else:
choices = ['{:s} | {:s}'.format(c['name'], c['login']['username']) for c in candidates]
choice = dmenu(choices, arguments.dmenu_invocation, arguments.io_encoding)
choice_tokens = choice.split('|')
choice_name = choice_tokens[0].strip()
choice_username = choice_tokens[1].strip()
selection = next((c for (i, c) in enumerate(candidates)
if c['name'] == choice_name
and c['login']['username'] == choice_username),
None)
# Nothing was selected, simply return
if not selection:
return ExitCodes.SUCCESS
username = selection['login']['username']
password = selection['login']['password']
totp = selection['login']['totp']
if arguments.username_only:
fake_key_raw(username)
elif arguments.password_only:
fake_key_raw(password)
elif arguments.totp_only:
# No point in moving it to the clipboard in this case
fake_key_raw(
get_totp_code(
selection['id'],
selection['name'],
arguments.io_encoding,
arguments.auto_lock,
arguments.password_prompt_invocation,
)
)
else:
# Enter username and password using fake-key and <Tab> (which seems to work almost universally), then switch
# back into insert-mode, so the form can be directly submitted by
# hitting enter afterwards
fake_key_raw(username)
qute_command('fake-key <Tab>')
fake_key_raw(password)
if arguments.insert_mode:
qute_command('mode-enter insert')
# If it finds a TOTP code, it copies it to the clipboard,
# which is the same behavior as the Firefox add-on.
if not arguments.totp_only and totp and arguments.totp:
# The import is done here, to make pyperclip an optional dependency
import pyperclip
pyperclip.copy(
get_totp_code(
selection['id'],
selection['name'],
arguments.io_encoding,
arguments.auto_lock,
arguments.password_prompt_invocation,
)
)
return ExitCodes.SUCCESS
if __name__ == '__main__':
arguments = argument_parser.parse_args()
sys.exit(main(arguments))

View File

@@ -4,5 +4,8 @@
./zsh.nix ./zsh.nix
./starship.nix ./starship.nix
./zoxide.nix ./zoxide.nix
./tmux.nix
./lazygit.nix
./eza.nix
]; ];
} }

View File

@@ -0,0 +1,13 @@
{
programs.eza = {
enable = true;
icons = true;
extraOptions = [
"--group-directories-first"
"--no-quotes"
"--git-ignore"
"--icons=always"
];
};
}

View File

@@ -3,12 +3,12 @@
enable = true; enable = true;
enableZshIntegration = true; enableZshIntegration = true;
colors = { colors = {
"fg+" = config.theme.colors.primary-ansi-16; "fg+" = config.var.theme.colors.accentName;
"bg+" = "-1"; "bg+" = "-1";
"fg" = "white"; "fg" = "white";
"bg" = "-1"; "bg" = "-1";
"prompt" = "grey"; "prompt" = "grey";
"pointer" = config.theme.colors.primary-ansi-16; "pointer" = config.var.theme.colors.accentName;
}; };
defaultOptions = [ defaultOptions = [
"--margin=1" "--margin=1"

View File

@@ -4,7 +4,7 @@
settings = { settings = {
gui.theme = { gui.theme = {
ligthTheme = false; ligthTheme = false;
activeBorderColor = [ "${config.theme.colors.primary-ansi-16}" "bold" ]; activeBorderColor = [ "${config.var.theme.colors.accentName}" "bold" ];
inactiveBorderColor = [ "black" ]; inactiveBorderColor = [ "black" ];
selectedLineBgColor = [ "default" ]; selectedLineBgColor = [ "default" ];
}; };

View File

@@ -10,10 +10,10 @@
"$git_status" "$git_status"
"$character" "$character"
]; ];
directory = { style = "#${config.theme.colors.primary-bg}"; }; directory = { style = "#${config.var.theme.colors.accent}"; };
character = { character = {
success_symbol = "[](#${config.theme.colors.primary-bg})"; success_symbol = "[](#${config.var.theme.colors.accent})";
error_symbol = "[](red)"; error_symbol = "[](red)";
vimcmd_symbol = "[](cyan)"; vimcmd_symbol = "[](cyan)";
}; };

View File

@@ -12,6 +12,7 @@
bind-key j select-pane -D bind-key j select-pane -D
bind-key k select-pane -U bind-key k select-pane -U
bind-key l select-pane -R bind-key l select-pane -R
set -gq allow-passthrough on
''; '';
plugins = with pkgs; [ plugins = with pkgs; [
@@ -31,7 +32,7 @@
set -g @catppuccin_window_current_fill "number" set -g @catppuccin_window_current_fill "number"
set -g @catppuccin_window_current_text "#W" set -g @catppuccin_window_current_text "#W"
set -g @catppuccin_status_modules_right "directory session" set -g @catppuccin_status_modules_right ""
set -g @catppuccin_status_left_separator " " set -g @catppuccin_status_left_separator " "
set -g @catppuccin_status_right_separator "" set -g @catppuccin_status_right_separator ""
set -g @catppuccin_status_fill "icon" set -g @catppuccin_status_fill "icon"
@@ -39,6 +40,7 @@
set -g @catppuccin_directory_text "#{pane_current_path}" set -g @catppuccin_directory_text "#{pane_current_path}"
set -g @catppuccin_status_background "default" set -g @catppuccin_status_background "default"
set-option -g default-terminal "screen-256color"
''; '';
} }
]; ];

View File

@@ -0,0 +1,73 @@
{ pkgs, lib, config, ... }: {
home.packages = with pkgs; [ bat ripgrep tldr ];
home.sessionPath = [ "$HOME/go/bin" ];
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
historySubstringSearch.enable = true;
initExtraFirst = ''
bindkey -e
${if config.var.theme.fetch == "neofetch" then
pkgs.neofetch + "/bin/neofetch"
else if config.var.theme.fetch == "nerdfetch" then
"nerdfetch"
else if config.var.theme.fetch == "pfetch" then
"echo; ${pkgs.pfetch}/bin/pfetch"
else
""}
'';
history = {
ignoreDups = true;
save = 1000000;
size = 1000000;
};
profileExtra = lib.optionalString (config.home.sessionPath != [ ]) ''
export PATH="$PATH''${PATH:+:}${
lib.concatStringsSep ":" config.home.sessionPath
}"
'';
shellAliases = {
vim = "nvim";
vi = "nvim";
v = "nvim";
c = "clear";
clera = "clear";
celar = "clear";
e = "exit";
cd = "z";
ls = "eza --icons=always --no-quotes";
tree = "eza --icons=always --tree --no-quotes";
sl = "ls";
open = "${pkgs.xdg_utils}/bin/xdg-open";
icat = "${pkgs.kitty}/bin/kitty +kitten icat";
wireguard-import = "nmcli connection import type wireguard file";
neorg =
"cd ~/nextcloud/neorg && vim -c ':ZenMode' -c ':Telescope find_files' index.norg";
notes =
"cd ~/nextcloud/Notes && vim -c ':ZenMode' -c ':Telescope find_files' index.md";
note = "notes";
# git
ga = "git add";
gc = "git commit";
gcm = "git commit -m";
gcu = "git commit -am 'Update'";
gp = "git push";
gpl = "git pull";
gs = "git status";
gd = "git diff";
gco = "git checkout";
gcb = "git checkout -b";
gbr = "git branch";
};
};
}

View File

@@ -0,0 +1,40 @@
{ pkgs, config, lib, inputs, ... }:
let spicePkgs = inputs.spicetify-nix.packages.${pkgs.system}.default;
in {
imports = [ inputs.spicetify-nix.homeManagerModules.default ];
nixpkgs.config.allowUnfreePredicate = pkg:
builtins.elem (lib.getName pkg) [ "spotify" ];
programs.spicetify = {
enable = true;
theme = spicePkgs.themes.text;
colorScheme = "custom";
customColorScheme = {
text = "${config.var.theme.colors.fg}";
subtext = "${config.var.theme.colors.fgalt}";
sidebar-text = "${config.var.theme.colors.fgalt}";
main = "${config.var.theme.colors.bg}";
sidebar = "${config.var.theme.colors.bg}";
background = "${config.var.theme.colors.bg}";
player = "${config.var.theme.colors.bg}";
card = "${config.var.theme.colors.bg}";
shadow = "000000";
selected-row = "${config.var.theme.colors.bgalt}";
button = "${config.var.theme.colors.accent}";
button-active = "${config.var.theme.colors.accent}";
button-disabled = "${config.var.theme.colors.bgalt}";
tab-active = "${config.var.theme.colors.accent}";
misc = "${config.var.theme.colors.fgalt}";
};
enabledExtensions = with spicePkgs.extensions; [
playlistIcons
lastfm
historyShortcut
hidePodcasts
fullAppDisplay
shuffle
];
};
}

View File

@@ -0,0 +1,39 @@
{
programs.yazi = {
enable = true;
enableZshIntegration = true;
settings = {
log = { enabled = false; };
manager = {
show_hidden = false;
sort_by = "modified";
sort_dir_first = true;
sort_reverse = true;
};
};
theme = {
filetype = {
rules = [
{
fg = "#7AD9E5";
mime = "image/*";
}
{
fg = "#F3D398";
mime = "video/*";
}
{
fg = "#F3D398";
mime = "audio/*";
}
{
fg = "#CD9EFC";
mime = "application/x-bzip";
}
];
};
};
};
}

View File

@@ -0,0 +1,17 @@
# PDF viewer
{
programs.zathura = {
enable = true;
options = {
guioptions = "v";
adjust-open = "width";
statusbar-basename = true;
render-loading = false;
scroll-step = 120;
# highlight-color = ");
# highlight-active-color = mkForce (rgba "base0D");
};
};
}

View File

@@ -0,0 +1,36 @@
{ pkgs, ... }:
let
battery-watch = pkgs.writeShellScriptBin "battery-watch" ''
while true;do
battery-plugged &
battery-level &
sleep 60
done
'';
battery-plugged = pkgs.writeShellScriptBin "battery-plugged" ''
BATTERY_STATUS=$(cat /sys/class/power_supply/BAT*/status | head -n1)
OLD_BATTERY_STATUS=$(cat /tmp/old_battery_status 2>/dev/null || echo "Unknown")
if [[ $BATTERY_STATUS != $OLD_BATTERY_STATUS && $OLD_BATTERY_STATUS != "Unknown" ]]; then
if [[ $BATTERY_STATUS == "Discharging" ]]; then
notif "battery" "󰚦 Battery is unplugged"
else
notif "battery" "󰚥 Battery is plugged in"
fi
fi
echo $BATTERY_STATUS > /tmp/old_battery_status
'';
battery-level = pkgs.writeShellScriptBin "battery-level" ''
BATTERY_LEVEL=$(cat /sys/class/power_supply/BAT*/capacity | head -n1)
BATTERY_STATUS=$(cat /sys/class/power_supply/BAT*/status | head -n1)
if [[ $BATTERY_LEVEL -le 20 ]] && [[ $BATTERY_STATUS == "Discharging" ]]; then
notif "battery" "󰁻 Low battery" "Battery level is $BATTERY_LEVEL%"
elif [[ $BATTERY_LEVEL -le 10 ]] && [[ $BATTERY_STATUS == "Discharging" ]]; then
notif "battery" "󰁺 Very low battery" "Battery level is $BATTERY_LEVEL%"
# elif [[ $BATTERY_LEVEL -eq 100 ]] && [[ $BATTERY_STATUS -ne "Discharging" ]]; then
# notif "battery" "󰁹 Fully charged"
fi
'';
in { home.packages = [ battery-watch battery-plugged battery-level ]; }

View File

@@ -1,4 +1,4 @@
{ pkgs, config, ... }: { pkgs, ... }:
let let
increments = "5"; increments = "5";
@@ -13,9 +13,7 @@ let
message="󰃠 Brightness: $brightness_level%" message="󰃠 Brightness: $brightness_level%"
${pkgs.libnotify}/bin/notify-send "$message" \ notif "brightness" "$message" "extraargs=-h int:value:$brightness_level"
-h int:value:"$brightness_level" \
--replace-id="$(cat "/tmp/nixy-notification" 2>/dev/null || echo 0)" --print-id > "/tmp/nixy-notification"
''; '';
brightness-up = pkgs.writeShellScriptBin "brightness-up" '' brightness-up = pkgs.writeShellScriptBin "brightness-up" ''
@@ -26,10 +24,4 @@ let
brightness-change down ${increments} brightness-change down ${increments}
''; '';
in { in { home.packages = [ brightness-change brightness-up brightness-down ]; }
home.packages = with pkgs; [
brightness-change
brightness-up
brightness-down
];
}

View File

@@ -1,9 +1,7 @@
{ pkgs, config, ... }: { pkgs, ... }:
let let
homedir = config.home.homeDirectory;
caffeine-status = pkgs.writeShellScriptBin "caffeine-status" '' caffeine-status = pkgs.writeShellScriptBin "caffeine-status" ''
[[ -f /tmp/caffeine ]] && echo "active" || echo "inactive" [[ -f /tmp/caffeine ]] && echo "1" || echo "0"
''; '';
caffeine = pkgs.writeShellScriptBin "caffeine" '' caffeine = pkgs.writeShellScriptBin "caffeine" ''
@@ -16,8 +14,16 @@ let
pkill hypridle pkill hypridle
message="󰅶 Caffeine Activated" message="󰅶 Caffeine Activated"
fi fi
${pkgs.libnotify}/bin/notify-send "$message" \ notif "caffeine" "$message"
--replace-id="$(cat "/tmp/nixy-notification" 2>/dev/null || echo 0)" --print-id > "/tmp/nixy-notification"
''; '';
in { home.packages = with pkgs; [ caffeine-status caffeine ]; } caffeine-status-icon = pkgs.writeShellScriptBin "caffeine-status-icon" ''
status=$(caffeine-status)
if [[ $status == "1" ]]; then
echo "󰅶"
else
echo "󰾪"
fi
'';
in { home.packages = [ caffeine-status caffeine caffeine-status-icon ]; }

View File

@@ -11,6 +11,7 @@ let
echo "Wrong number of arguments..." echo "Wrong number of arguments..."
fi fi
''; '';
extract = pkgs.writeShellScriptBin "extract" '' extract = pkgs.writeShellScriptBin "extract" ''
for i in "$@" ; do for i in "$@" ; do
tar -xvzf $i tar -xvzf $i
@@ -18,4 +19,4 @@ let
done done
''; '';
in { home.packages = with pkgs; [ compress extract ]; } in { home.packages = [ compress extract ]; }

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