Author SHA1 Message Date
github-actions[bot] 98bc46e67f Merge pull request #38 from tomasriveral/desktop
Weekly sync: desktop → main
2026-08-12 14:55:44 +00:00
tomasr d0b7183849 add dolphin plugin 2026-08-12 15:32:53 +02:00
tomasr cea0d0e3f8 add ark for dolphin 2026-08-12 15:24:56 +02:00
tomasr a4c66b4aff fix archivebox extesnion 2026-08-11 17:08:51 +02:00
tomasr 56a9bba86b remove temp mullvad 2026-08-11 17:08:51 +02:00
tomasr 1dab571e12 add archivebox extension 2026-08-11 17:08:51 +02:00
tomasr 93f7328a3b add browser bookmark noogle.dev 2026-08-11 17:08:51 +02:00
github-actions[bot] 07c2293f77 Merge pull request #37 from tomasriveral/desktop
Weekly sync: desktop → main
2026-08-05 16:00:39 +00:00
tomasr 0e222a9c50 rss reader 2026-08-04 19:50:42 +02:00
tomasr d1125d1571 fix calendar? 2026-08-04 11:30:00 +02:00
tomasr 550413c6b1 add kontact 2026-08-04 11:25:59 +02:00
tomasr b4537796a2 add KOrganizer 2026-08-04 11:21:26 +02:00
tomasr 4c0fbc5f0e librewolf: remove old bookmark 2026-07-30 21:28:41 +02:00
tomasr d0a9511ff7 first tmux config 2026-07-30 21:18:44 +02:00
tomasr 262476404e tmux: init config 2026-07-30 14:07:36 +02:00
tomasr 9f9906d423 replace rss reader 2026-07-30 14:07:36 +02:00
tomasr 0d616266ff fix pagers 2026-07-30 14:07:36 +02:00
github-actions[bot] 7f74878433 Merge pull request #36 from tomasriveral/desktop
Weekly sync: desktop → main
2026-07-29 15:48:25 +00:00
tomasr 6b282b5344 somehow this file disappeared 2026-07-26 16:08:36 +02:00
tomasr 19fd3ec35d Auto: cleanup-2026-07-26T14-02-17Z 2026-07-26 16:06:33 +02:00
tomasr 324d54683c snapshot pre-cleanup-2026-07-26T14-02-17Z 2026-07-26 16:05:00 +02:00
tomasr 0030034418 snapshot pre-cleanup-2026-07-26T13-59-06Z 2026-07-26 16:05:00 +02:00
tomasr fb7be79e86 snapshot pre-cleanup-2026-07-26T13-57-11Z 2026-07-26 16:05:00 +02:00
tomasr 5db8135dd5 setup agenix and migrate from matrix-commander-rs to ntfy for phone notifications 2026-07-26 15:53:57 +02:00
tomasr 2107d23209 notewrapper: use kdrive directly 2026-07-24 17:40:39 +02:00
tomasr c235a0a724 Merge pull request #34 from tomasriveral/desktop 2026-07-22 19:55:56 +00:00
tomasr 77f4b0fc5f neovim: add hledger integration 2026-07-21 16:54:36 +02:00
tomasr 1642dc97ca neovim: add lean lsp and config 2026-07-21 16:54:36 +02:00
tomasr 2b59031896 hledger: init 2026-07-21 16:54:36 +02:00
tomasr 3fc66623f2 Merge pull request #32 from tomasriveral/desktop
Weekly sync: desktop → main
2026-06-24 16:40:14 -05:00
tomasr d323e9f702 Merge branch 'main' into desktop 2026-06-24 16:39:59 -05:00
github-actions[bot] 25813d8ab5 Merge pull request #33 from tomasriveral/laptop
Weekly sync: laptop → main
2026-06-22 18:12:48 +00:00
tomasr 0ca30a4110 snapshot pre-cleanup-2026-06-20T19-40-35Z 2026-06-20 21:40:35 +02:00
tomasr 05ef065d75 snapshot pre-cleanup-2026-06-20T19-29-55Z 2026-06-20 21:29:55 +02:00
tomasr fece2b565f add zoom-us 2026-06-20 19:37:56 +02:00
tomasr 2722840919 ollama: add desktop 2026-06-20 14:01:36 +02:00
tomasr 9e862337ca snapshot pre-autoupdate-2026-06-20T10-53-01Z 2026-06-20 12:53:01 +02:00
tomasr 3c7d3584fc snapshot pre-autoupdate-2026-06-19T18-41-17Z 2026-06-19 20:41:17 +02:00
tomasr a619a10851 icloud backup with kdrive 2026-06-18 19:47:41 +02:00
tomasr 876ec4ce21 icloud backup with kdrive 2026-06-18 19:47:29 +02:00
tomasr 97beca4f88 kdrive: setup sync with desktop 2026-06-18 17:00:33 +02:00
tomasr e2b7fd8a64 kdrive: setup sync with desktop 2026-06-18 17:00:20 +02:00
tomasr 752957818b gitBackup: add ngcp and ReSSPublica 2026-06-16 22:49:01 +02:00
tomasr 2e322fbb79 gitBackup: add ngcp and ReSSPublica 2026-06-16 22:48:23 +02:00
tomasr 1c600dbf3c gitBackup: add ngcp and ReSSPublica 2026-06-16 22:45:12 +02:00
tomasr 4a648b7f7c Merge pull request #31 from tomasriveral/laptop 2026-06-15 18:45:41 +00:00
tomasr 67d21671c5 treesitter: add sparql 2026-06-14 17:29:16 +02:00
tomasr b8d8ef1aa8 treesitter: add sparql 2026-06-14 17:28:07 +02:00
tomasr 2d16f3893b Auto: cleanup-2026-06-14T15-26-03Z 2026-06-14 17:26:24 +02:00
tomasr 2a0c85275f snapshot pre-cleanup-2026-06-14T15-26-03Z 2026-06-14 17:26:03 +02:00
tomasr 23a9fdd4e8 snapshot pre-cleanup-2026-06-14T15-11-35Z 2026-06-14 17:11:35 +02:00
tomasr 246412ae4b custom-performance: entire rewrite
Now kills caelestia, change monitor hz and launches lightweight
alternative to calestia (waybar and swaync)
2026-06-14 11:19:36 +02:00
tomasr 58ec4221ef desktop: ported custom-performance 2026-06-14 11:15:01 +02:00
tomasr 88eb91c780 desktop: ported custom-performance 2026-06-14 11:14:48 +02:00
tomasr 3b73438d4f custom-performance: reset on startup 2026-06-14 11:11:05 +02:00
tomasr e758819398 custom-performance: reset on startup 2026-06-14 11:10:56 +02:00
tomasr 8088f78f05 tlp:replace by powerprofilesdaemon 2026-06-14 11:08:03 +02:00
tomasr 930e265420 tlp:replace by powerprofilesdaemon 2026-06-14 11:05:39 +02:00
tomasr 3b89cf7b35 flake.lock: autoupdate-2026-06-14T09-01-11Z 2026-06-14 11:04:07 +02:00
tomasr 89eb25ca7d snapshot pre-autoupdate-2026-06-14T09-01-11Z 2026-06-14 11:01:11 +02:00
tomasr 3ea36fa6bb Merge pull request #30 from tomasriveral/main
desktop
2026-06-14 08:13:03 +00:00
tomasr 523b104c43 treesitter: add sparql 2026-06-13 22:11:53 +02:00
tomasr 4f3a74b741 Auto: cleanup-2026-06-13T20-10-24Z 2026-06-13 22:10:43 +02:00
tomasr 2585a88780 snapshot pre-cleanup-2026-06-13T20-10-24Z 2026-06-13 22:10:24 +02:00
tomasr 52e5e4a4d4 custom-performance: fixes 2026-06-13 22:10:05 +02:00
tomasr 2d8c797042 snapshot pre-cleanup-2026-06-13T19-33-47Z 2026-06-13 21:33:47 +02:00
tomasr dd4fb62a2f custom-performance: fixes 2026-06-13 19:02:12 +02:00
tomasr 09d92bc8e2 custom-performance: entire rewrite
Now kills caelestia, change monitor hz and launches lightweight
alternative to calestia (waybar and swaync)
2026-06-13 11:56:27 +02:00
tomasr 158a5c2b29 tlp: reenable 2026-06-13 10:19:36 +02:00
tomasr 3d468572d5 Merge pull request #28 from tomasriveral/laptop
Weekly sync: laptop → main
2026-06-13 07:47:36 +00:00
github-actions[bot] d23c6979f9 Merge pull request #29 from tomasriveral/desktop
Weekly sync: desktop → main
2026-06-13 07:47:29 +00:00
tomasr 01bde96826 snapshot pre-autoupdate-2026-06-13T07-45-43Z 2026-06-13 09:45:43 +02:00
tomasr 552d898680 librewolf: add rryan-tm logs bookmark 2026-06-13 09:45:16 +02:00
tomasr 5b7c43c8f9 librewolf: add r/Piracy megathread bookmark 2026-06-13 09:45:16 +02:00
tomasr f1e9c76d02 librewolf: add temp-mail.org bookmark 2026-06-13 09:45:16 +02:00
tomasr a140ce9560 librewolf: add rryan-tm logs bookmark 2026-06-13 09:45:00 +02:00
tomasr ba4727f453 librewolf: add r/Piracy megathread bookmark 2026-06-13 09:43:10 +02:00
tomasr 6525d6d599 librewolf: add temp-mail.org bookmark 2026-06-13 09:41:05 +02:00
tomasr 37f76a4439 nixpkgs-master: follow unstable when unused 2026-06-13 09:37:43 +02:00
tomasr c32e8112c6 flake.lock: update 2026-06-13 09:37:38 +02:00
tomasr ff1469dea2 nixpkgs-master: follow unstable when unused 2026-06-13 09:37:01 +02:00
tomasr 89c87b8242 flake.lock: autoupdate-2026-06-13T07-30-14Z 2026-06-13 09:34:56 +02:00
tomasr 4bf8fe10c9 snapshot pre-autoupdate-2026-06-13T07-30-14Z 2026-06-13 09:30:14 +02:00
tomasr 3b30916261 flake.lock: update 2026-06-13 09:29:37 +02:00
tomasr 065012ed84 flake-utils: use flakehub cache 2026-06-13 09:29:37 +02:00
tomasr 66ff0dc406 flake-parts: use flakehub cache 2026-06-13 09:29:37 +02:00
tomasr e4eb23f10f merge conflict handled 2026-06-13 09:29:37 +02:00
tomasr 143f699365 flake-utils: use flakehub cache 2026-06-13 09:29:18 +02:00
tomasr d20f0d87d5 flake-parts: use flakehub cache 2026-06-13 09:29:18 +02:00
tomasr 406baf2a5d merge conflict handled 2026-06-13 09:21:11 +02:00
tomasr 2471741462 snapshot pre-autoupdate-2026-06-13T07-19-09Z 2026-06-13 09:19:09 +02:00
tomasr 5039b2a37c snapshot pre-autoupdate-2026-06-12T14-18-16Z 2026-06-13 09:18:35 +02:00
github-actions[bot] 45639e2531 Merge pull request #27 from tomasriveral/desktop
Weekly sync: desktop → main
2026-06-12 14:38:11 +00:00
tomasr 2d2d4fd4a8 Merge pull request #26 from tomasriveral/laptop
Weekly sync: laptop → main
2026-06-12 14:32:48 +00:00
tomasr 22bc2f218f Merge branch 'main' into laptop 2026-06-12 14:32:38 +00:00
tomasr d49c7ba99e limine: rice 2026-06-12 15:58:28 +02:00
tomasr c1354a3b98 limine: rice 2026-06-12 15:58:17 +02:00
tomasr 29554e41ca nixUtils: add custom-trimmer 2026-06-12 15:49:23 +02:00
tomasr f8255c42ed nixUtils: add custom-trimmer 2026-06-12 15:46:20 +02:00
tomasr 2a318bdced hosts: forgot to use nixUtils module 2026-06-12 15:38:01 +02:00
tomasr bd86051c13 hosts: forgot to use nixUtils module 2026-06-12 15:37:43 +02:00
tomasr 34cde6f6f4 flake.lock: update 2026-06-12 15:21:26 +02:00
tomasr 763bbbacd4 bootloader: limine 2026-06-12 15:10:49 +02:00
tomasr 59f5d84de0 bootloader: limine 2026-06-12 15:10:42 +02:00
tomasr 99f1dd3ec8 bootloader: reunited desktop and laptop config 2026-06-12 15:07:17 +02:00
tomasr f56e535ff6 bootloader: reunited desktop and laptop config 2026-06-12 15:07:06 +02:00
tomasr 3836a6eb7c Merge pull request #25 from tomasriveral/desktop
Weekly sync: desktop → main
2026-06-10 18:25:15 +00:00
tomasr d9a650a964 Merge branch 'main' into desktop 2026-06-10 18:25:04 +00:00
tomasr d0ac13cec6 CI: rewrite with checkout 2026-06-10 20:19:26 +02:00
tomasr c92a868718 CI: fix git repo 2026-06-10 20:17:57 +02:00
tomasr 2c95860f5b CI: fix auto merge action 2026-06-10 20:14:49 +02:00
tomasr 4b6d0250df Merge pull request #24 from tomasriveral/laptop
Laptop
2026-06-10 08:28:43 +00:00
tomasr a063b505c6 CI: weekly PR merge to main from desktop and laptop 2026-06-10 10:26:26 +02:00
tomasr 433bb52cde CI: weekly PR merge to main from desktop and laptop 2026-06-10 10:26:16 +02:00
tomasr d9969cbd71 mathematics: init module with lean4 2026-06-10 10:20:35 +02:00
tomasr 68d81d5c4b mathematics: init module with lean4 2026-06-10 10:19:51 +02:00
tomasr 259ee7e554 mathematics: init module with lean4 2026-06-09 20:11:19 +02:00
tomasr b1edbc9378 Auto: cleanup-2026-06-09T14-39-17Z 2026-06-09 16:39:36 +02:00
tomasr 7e0ba6278c snapshot pre-cleanup-2026-06-09T14-39-17Z 2026-06-09 16:39:17 +02:00
tomasr 89d5ac8a17 micro-vivify: comment out from flake.nix 2026-06-09 16:26:47 +02:00
tomasr d340b9c08b micro-vivify: comment out from flake.nix 2026-06-09 16:26:34 +02:00
tomasr d4d24e6f61 Merge pull request #23 from tomasriveral/laptop
Laptop
2026-06-09 14:25:26 +00:00
tomasr 45666fa728 Merge pull request #22 from tomasriveral/desktop
Desktop
2026-06-09 14:24:39 +00:00
tomasr 2e0996938a Merge branch 'main' into desktop 2026-06-09 14:24:28 +00:00
tomasr 8b2a086a4d patent flake.lock 2026-06-09 16:22:59 +02:00
tomasr 4b6a5ffa59 patent in flake.nix 2026-06-09 16:18:15 +02:00
tomasr 19adc625f1 patent: use flake.nix 2026-06-09 11:58:44 +02:00
tomasr 18d73c71c3 update flake.lock 2026-06-09 11:58:39 +02:00
tomasr dc09f6dcce snapshot pre-autoupdate-2026-06-09T09-55-08Z 2026-06-09 11:55:08 +02:00
tomasr 682bc4e5ab patent: flake.lock 2026-06-09 11:54:49 +02:00
tomasr 0beb6f374a patent: use flake.nix 2026-06-09 11:51:52 +02:00
tomasr 6d15ae6a22 fix nixGitCherryPicker 2026-06-09 11:48:31 +02:00
tomasr 32c9d85f99 fix: custom-browserprofiles 2026-06-08 22:20:32 +02:00
tomasr e3089e1d59 fix: custom-browserprofiles 2026-06-08 22:20:24 +02:00
tomasr fa54be1c2b fix: cherry-picker-desktop 2026-06-08 22:14:55 +02:00
tomasr abf652e21b fix: cherry-picker-desktop 2026-06-08 22:14:47 +02:00
tomasr 75002217f3 fix: home.file 2026-06-08 22:13:44 +02:00
tomasr e42b1f9725 librewolf profiles selector: added tor-browser 2026-06-08 22:13:00 +02:00
tomasr 99ab54cc8b fix: home.file 2026-06-08 22:12:43 +02:00
tomasr 5afc0acf77 librewolf profiles selector: added tor-browser 2026-06-08 22:11:54 +02:00
tomasr ccd9b3e97e Merge pull request #21 from tomasriveral/laptop
Laptop
2026-06-08 15:51:26 +00:00
tomasr cd3aa9b0dd Merge branch 'main' into laptop 2026-06-08 15:51:01 +00:00
tomasr 07220185ee Merge pull request #20 from tomasriveral/desktop 2026-06-08 15:32:55 +00:00
tomasr eaa0698bc0 matrix: changed all notif message to new unencrypted room 2026-06-08 16:53:01 +02:00
tomasr 9125dfddef matrix: changed all notif message to new unencrypted room 2026-06-08 16:52:50 +02:00
tomasr fdbc3e1a79 caelestia: separate idle settings per device 2026-06-08 16:38:06 +02:00
tomasr 73637ebc1d caelestia: separate idle settings per device 2026-06-08 16:36:25 +02:00
tomasr 9a4b912e58 flake.lock: autoupdate-2026-06-08T14-27-33Z 2026-06-08 16:31:40 +02:00
tomasr c128995bea flake.lock: autoupdate-2026-06-08T14-27-05Z 2026-06-08 16:27:34 +02:00
tomasr d8982fab43 snapshot pre-autoupdate-2026-06-08T14-27-33Z 2026-06-08 16:27:33 +02:00
tomasr 4bd062032f snapshot pre-autoupdate-2026-06-08T14-27-05Z 2026-06-08 16:27:05 +02:00
tomasr 2419bc4f82 removed unused file 2026-06-08 16:17:36 +02:00
tomasr 6a937f3863 removed unused file 2026-06-08 16:17:23 +02:00
tomasr 4ee868fbc6 test commit from desktop 2026-06-08 16:16:51 +02:00
tomasr 2ad6d8c165 flake.lock change 2026-06-08 16:07:39 +02:00
tomasr 8a7908a5c9 flake.lock: autoupdate-2026-06-08T14-06-55Z 2026-06-08 16:07:33 +02:00
tomasr 8207e1502c snapshot pre-autoupdate-2026-06-08T14-06-55Z 2026-06-08 16:06:55 +02:00
tomasr 6d5ab8d831 readd nix-git-cherry-picker to flake.nix 2026-06-08 16:06:38 +02:00
tomasr 95d14041cc nix-git-cherry-picker: init 2026-06-08 15:59:14 +02:00
tomasr ac11171bbf remove lock 2026-06-08 15:55:16 +02:00
tomasr c2305331bb ngcp: forgot home-module 2026-06-08 14:02:36 +02:00
tomasr 9e5cac3a2d hyprland: exec on launch ngcp 2026-06-08 14:00:24 +02:00
tomasr f28ba6b799 hyprland: exec on launch ngcp 2026-06-08 14:00:10 +02:00
tomasr 933478d820 hypr-dynamic-cursor: use nixpkgs unstable 2026-06-08 13:43:25 +02:00
tomasr 72cee5b891 flake.lock: autoupdate-2026-06-08T11-42-02Z 2026-06-08 13:42:51 +02:00
tomasr a5e7dea053 snapshot pre-autoupdate-2026-06-08T11-42-02Z 2026-06-08 13:42:02 +02:00
tomasr d0c547d2e0 hypr-dynamic-cursor: use nixpkgs unstable 2026-06-08 13:36:17 +02:00
tomasr 579f832afe hypr-dynamic-cursor: use nixpkgs master 2026-06-08 13:31:48 +02:00
tomasr d32a0e5948 nixpkgs: add master branch in flake.nix 2026-06-08 13:31:04 +02:00
tomasr c48d721d64 flake.lock: autoupdate-2026-06-08T11-19-03Z 2026-06-08 13:28:59 +02:00
tomasr ad9f94fec2 snapshot pre-autoupdate-2026-06-08T11-19-03Z 2026-06-08 13:19:03 +02:00
tomasr efe30f4c1d nix-git-cherry-picker: init 2026-06-08 13:08:35 +02:00
tomasr 774b7c0a77 hypr-dynamic-cursor: use nixpkgs master 2026-06-07 20:23:45 +02:00
tomasr 68bef6e250 librewolf: add protondb search engine 2026-06-07 20:17:41 +02:00
tomasr 55ce1b6569 nixpkgs: add master branch in flake.nix 2026-06-07 20:12:38 +02:00
tomasr f28a6af581 desktop: fix lock 2026-06-07 16:48:51 +02:00
tomasr 3f5291cbaf desktop: add games 2026-06-07 16:42:52 +02:00
tomasr e6d888e58f Merge pull request #19 from tomasriveral/desktop
Desktop
2026-06-07 12:21:42 +00:00
tomasr 15afff222e hyprland desktop: change scaling to 0.75 2026-06-07 14:20:49 +02:00
tomasr 5a8f8f5c08 librewolf: add protondb search engine 2026-06-07 14:16:34 +02:00
tomasr 7072f2a39e desktop: steam 2026-06-07 14:16:34 +02:00
tomasr 02b5924d31 desktop: init kdrive 2026-06-07 12:43:48 +02:00
tomasr a5d93f6ce1 desktop: auto mount hdd 2026-06-07 12:11:24 +02:00
tomasr 8efd8a30bf desktop: add nvidia drivers 2026-06-07 12:01:14 +02:00
tomasr 5be623fd12 first commit from desktop 2026-06-07 11:53:55 +02:00
tomasr f491282dad Merge pull request #18 from tomasriveral/laptop
Laptop
2026-06-06 19:06:22 +02:00
tomasr a63984816d desktop: fixing commit 2026-06-06 19:04:35 +02:00
tomasr 23606fecb6 removed pkgs-local from desktop and neovim 2026-06-06 10:32:35 +02:00
tomasr a0dd94cb3c Merge pull request #17 from tomasriveral/laptop
Laptop
2026-06-06 09:51:50 +02:00
tomasr aca4458e4c fugit2: overrode local to nixpkgs 2026-06-06 09:51:33 +02:00
tomasr 3b99da9148 flake.lock: autoupdate-2026-06-06T07-47-20Z 2026-06-06 09:48:42 +02:00
tomasr eee5117a22 snapshot pre-autoupdate-2026-06-06T07-47-20Z 2026-06-06 09:47:20 +02:00
tomasr 6830973233 multiple things + tried gpg signing 2026-06-06 09:30:35 +02:00
tomasr f7861f7ca1 snapshot pre-autoupdate-2026-06-05T18-57-56Z 2026-06-05 20:57:56 +02:00
tomasr 2207b5ef03 Merge pull request #16 from tomasriveral/laptop
desktop: add kdrive sync
2026-06-04 18:46:49 +02:00
tomasr 9d4eb9b0a2 desktop: add kdrive sync 2026-06-04 18:46:14 +02:00
tomasr 0713810716 Merge pull request #15 from tomasriveral/laptop
Setup for desktop
2026-06-04 18:13:44 +02:00
tomasr 8ee9c3f639 Auto: cleanup-2026-06-04T16-10-09Z 2026-06-04 18:10:27 +02:00
tomasr d673efcc8c snapshot pre-cleanup-2026-06-04T16-10-09Z 2026-06-04 18:10:09 +02:00
tomasr 3ecc4a55bf snapshot pre-cleanup-2026-06-04T16-01-15Z 2026-06-04 18:01:15 +02:00
tomasr 501965a0dc snapshot pre-cleanup-2026-06-04T16-00-46Z 2026-06-04 18:00:46 +02:00
tomasr 897795869f Merge pull request #14 from tomasriveral/laptop 2026-06-04 10:09:24 +02:00
tomasr 9e0f4e9aca nixpkgs-notifier: added in hyprland exec-once 2026-06-03 14:25:30 +02:00
tomasr 44b77af9e9 flake.lock: autoupdate-2026-06-03T12-23-08Z 2026-06-03 14:23:55 +02:00
tomasr dad71ed4a7 snapshot pre-autoupdate-2026-06-03T12-23-08Z 2026-06-03 14:23:08 +02:00
tomasr 5b4b92ca06 nixpkgs-notifier: init 2026-06-03 14:16:53 +02:00
tomasr f66b4ae739 nixpkgs-notifier: added as a flake input 2026-06-03 13:29:19 +02:00
tomasr fd8221d3ab gitBackup: add nixpkgs-tracker-notifier 2026-06-03 13:20:28 +02:00
tomasr 42023bc87a neovim: fix python-lsp-server 2026-06-03 13:04:28 +02:00
tomasr 8254cb871e Auto: cleanup-2026-06-03T08-27-47Z 2026-06-03 10:28:00 +02:00
tomasr a3c2dbe568 snapshot pre-cleanup-2026-06-03T08-27-47Z 2026-06-03 10:27:47 +02:00
tomasr b53a392b37 flake.lock: autoupdate-2026-06-03T08-26-04Z 2026-06-03 10:27:09 +02:00
tomasr 6f6e197c12 snapshot pre-autoupdate-2026-06-03T08-26-04Z 2026-06-03 10:26:04 +02:00
tomasr 90a2c60863 backup: created script for backuping git repos 2026-06-03 10:25:05 +02:00
tomasr 8ec20cee5b i don't rember what changed electri boogallooo 2026-06-02 23:47:56 +02:00
tomasr cb99ae907f i don't rember what changed 2026-06-02 23:39:31 +02:00
tomasr 256f7f802b sudo: fix typo 2026-06-01 11:21:02 +02:00
tomasr d79e9ae0b1 bitwarden: temp remove desktop as Electron 39 is EOL 2026-06-01 11:19:09 +02:00
tomasr dd6ad70e7c sudo: set default pwfeedback 2026-06-01 11:18:48 +02:00
tomasr d017065992 flake.lock: update 2026-06-01 11:18:22 +02:00
tomasr 5d5dd21c8e snapshot pre-autoupdate-2026-05-31T13-42-40Z 2026-05-31 15:42:40 +02:00
tomasr 9e6e278c72 nix: add store optimisation and tweak garbage collection 2026-05-31 15:37:51 +02:00
tomasr 4fcbc31629 snapshot pre-cleanup-2026-05-30T21-34-13Z 2026-05-30 23:34:13 +02:00
tomasr dc3eaf04c0 Librewolf: add bookmark nixpkgs PRs 2026-05-30 15:16:32 +02:00
tomasr cfe758599d Librewolf: add consumer rights wiki extension 2026-05-30 15:00:26 +02:00
tomasr 226ada8abd Merge pull request #13 from tomasriveral/laptop
nixos: 25.11 -> 26.06
2026-05-30 14:41:31 +02:00
tomasr 23e4261fef PR won't open without this empty commit 2026-05-30 14:39:44 +02:00
tomasr 33174e7bc2 nixos: 25.11 -> 26.05 2026-05-30 14:38:00 +02:00
tomasr 80118164bf Merge pull request #12 from tomasriveral/laptop
Pre-26.05 PR
2026-05-30 12:58:29 +02:00
tomasr 11e6661af0 Librewolf: add nix, nixos and nixpkgs manual as bookmark 2026-05-30 12:03:10 +02:00
tomasr dbdc72dc64 snapshot pre-autoupdate-2026-05-30T10-01-01Z 2026-05-30 12:01:01 +02:00
tomasr cc5118c021 tlp: desactivate for debuging battery capped at 65% issue 2026-05-30 11:57:28 +02:00
tomasr 1f226bfcea Librewolf: add bookmark ZH failure unmaintained 2026-05-30 11:55:48 +02:00
tomasr 3690b2896c flake.lock: autoupdate-2026-05-28T16-07-42Z 2026-05-28 18:09:49 +02:00
tomasr e4e61b3d35 snapshot pre-autoupdate-2026-05-28T16-07-42Z 2026-05-28 18:07:42 +02:00
tomasr 4d5e1ace42 tlp: tweak config 2026-05-28 10:59:24 +02:00
tomasr 7efb71d225 Librewolf: add bookmark outlook mail 2026-05-28 10:18:40 +02:00
tomasr 020f06def8 dev: add nixpkgs-review 2026-05-26 21:21:19 +02:00
tomasr d7e2e22799 nom: add rss feed 2026-05-26 21:20:29 +02:00
tomasr 1d71a4dfcd librewolf: remove ublock go back to adnauseam
AdNauseam didn't block (with my settings) youtube ads. Just use a VPN to
Albania.
2026-05-26 12:11:26 +02:00
tomasr 1b33855fb1 flake.lock: autoupdate-2026-05-26T09-24-05Z 2026-05-26 11:26:22 +02:00
tomasr 43df516fa2 snapshot pre-autoupdate-2026-05-26T09-24-05Z 2026-05-26 11:24:05 +02:00
tomasr c6488c7d47 mullvad: turned off lockdown mode 2026-05-25 17:53:42 +02:00
tomasr 80dd4c217f notewrapper: init flake 2026-05-25 17:52:54 +02:00
tomasr 982daa028a zsh: updated PATH 2026-05-25 16:04:38 +02:00
tomasr 9a5c8c0c53 Merge pull request #11 from tomasriveral/laptop
Laptop
2026-05-24 12:27:55 +02:00
tomasr 33d24f0cf6 docs: add warning in readme 2026-05-24 12:26:46 +02:00
tomasr f8985b786c Merge pull request #10 from tomasriveral/dendritic-pattern
Dendritic pattern
2026-05-24 12:25:05 +02:00
tomasr 9a709f8ae9 Merge pull request #9 from tomasriveral/laptop
Laptop
2026-05-18 19:39:28 +02:00
tomasr 515247573f Merge pull request #8 from tomasriveral/laptop
Refactor configuration + changed how unfree packages are handled + fixed bugs and added warning
2026-05-17 13:15:33 +02:00
54 changed files with 2107 additions and 383 deletions

No files matched your search

+105
View File
@@ -0,0 +1,105 @@
name: Sync branches into main
on:
schedule:
- cron: "0 14 * * 1" # Monday
- cron: "0 14 * * 3" # Wednesday
workflow_dispatch:
inputs:
source:
description: Branch to sync into main
required: true
type: choice
options:
- laptop
- desktop
permissions:
contents: write
pull-requests: write
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Determine source branch
id: branch
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "source=${{ inputs.source }}" >> "$GITHUB_OUTPUT"
exit 0
fi
DOW=$(date -u +%u)
case "$DOW" in
1)
echo "source=laptop" >> "$GITHUB_OUTPUT"
;;
3)
echo "source=desktop" >> "$GITHUB_OUTPUT"
;;
*)
echo "No sync scheduled today."
exit 1
;;
esac
- name: Check for existing PR
id: existing
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=$(gh pr list \
--base main \
--head "${{ steps.branch.outputs.source }}" \
--state open \
--json number \
--jq '.[0].number // empty')
echo "number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
- name: Create PR
id: create
if: steps.existing.outputs.number == ''
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr create \
--base main \
--head "${{ steps.branch.outputs.source }}" \
--title "Weekly sync: ${{ steps.branch.outputs.source }} → main" \
--body "This pull request was created automatically by GitHub Actions."
PR_NUMBER=$(gh pr list \
--base main \
--head "${{ steps.branch.outputs.source }}" \
--state open \
--json number \
--jq '.[0].number')
echo "number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
- name: Determine PR number
id: pr
run: |
if [ -n "${{ steps.existing.outputs.number }}" ]; then
echo "number=${{ steps.existing.outputs.number }}" >> "$GITHUB_OUTPUT"
else
echo "number=${{ steps.create.outputs.number }}" >> "$GITHUB_OUTPUT"
fi
- name: Enable auto-merge
if: steps.pr.outputs.number != ''
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr merge \
"${{ steps.pr.outputs.number }}" \
--auto \
--merge
+9
View File
@@ -0,0 +1,9 @@
# Ignore build outputs from performing a nix-build or `nix build` command
result
result-*
# Ignore automatically generated direnv output
.direnv
# Ignore NixOS interactive test driver history
**/.nixos-test-history
+1 -1
View File
@@ -1,4 +1,4 @@
⚠️ Documentation outdated.
⚠️ Documentation outdated. I recently rewrote the entire config using the [dendritic pattern](https://github.com/mightyiam/dendritic/). One of these days, I will update the README.
# NixOS Configuration
![NixOS configuration](/assets/example.png)
Generated Executable → Regular
+206 -66
View File
@@ -11,11 +11,11 @@
]
},
"locked": {
"lastModified": 1779508871,
"narHash": "sha256-SFl2je8b423f/tIy0RTgCrWQUJiyFsAZp1Y0cccXqio=",
"lastModified": 1781239472,
"narHash": "sha256-WFL8jZMWNH1tx3UwaJ9aa9NN25uOEJ9mbKPRNQJY/xM=",
"owner": "caelestia-dots",
"repo": "cli",
"rev": "7f300626704b7a86fe838ab58df654fa99779613",
"rev": "3f3229aed4f36752a02fd870fd6cad94bd76555f",
"type": "github"
},
"original": {
@@ -27,17 +27,18 @@
"caelestia-shell": {
"inputs": {
"caelestia-cli": "caelestia-cli",
"m3shapes": "m3shapes",
"nixpkgs": [
"nixpkgs-unstable"
],
"quickshell": "quickshell"
},
"locked": {
"lastModified": 1779591587,
"narHash": "sha256-Ud83/zsmDSHcqQ64MRiQ7SnGkUVIpRzqwqBBU65DGXY=",
"lastModified": 1781408632,
"narHash": "sha256-kYVf3Jye4UhyBrtubYcSrmVyFv9uqOY2JvjmElFiZHE=",
"owner": "caelestia-dots",
"repo": "shell",
"rev": "2f7ab5e4140d9188185f6c3164e428c1eeda1fe6",
"rev": "f86c359cd90530bacc800e94e35ffbebecd3f58f",
"type": "github"
},
"original": {
@@ -46,6 +47,26 @@
"type": "github"
}
},
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1781152676,
"narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=",
"owner": "nix-community",
"repo": "disko",
"rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
@@ -53,15 +74,31 @@
"locked": {
"lastModified": 1778716662,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github"
"revCount": 475,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/hercules-ci/flake-parts/0.1.475%2Brev-f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb/019e2533-0324-7e90-93eb-29b02e1a61cd/source.tar.gz"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
"type": "tarball",
"url": "https://flakehub.com/f/hercules-ci/flake-parts/%2A"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"revCount": 102,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/numtide/flake-utils/0.1.102%2Brev-11707dc2f618dd54ca8739b309ec4fc024de578b/0193276d-5b8f-7dbc-acf1-41cb7b54ad2e/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/numtide/flake-utils/%2A"
}
},
"home-manager": {
@@ -71,16 +108,16 @@
]
},
"locked": {
"lastModified": 1779506708,
"narHash": "sha256-QOD/CNm196nCJRheux/URi4/HE66fthdOMqCJoPP1Y0=",
"lastModified": 1781319724,
"narHash": "sha256-ZGuxexEMo4Xv28KJ0dX/m/PHN4oZIOnxHZpNTyrvx4M=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3ee51fbdac8c8bdfe1e7e1fcaba6520a563f394f",
"rev": "8355f0a16b2dbb06a97959a918af5b239bbe05ae",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.11",
"ref": "release-26.05",
"repo": "home-manager",
"type": "github"
}
@@ -100,52 +137,58 @@
"type": "github"
}
},
"microPlugins-vivify": {
"m3shapes": {
"flake": false,
"locked": {
"lastModified": 1770382657,
"narHash": "sha256-yWmIgT90mC9PhzyH/itDbRMmRTiZiwW+Yo0dsHW7ni8=",
"ref": "refs/heads/main",
"rev": "3c5cb25facf3fc4143bfea9323a60eda65ef8485",
"revCount": 8,
"type": "git",
"url": "https://codeberg.org/gibbert/micro-vivify"
},
"original": {
"type": "git",
"url": "https://codeberg.org/gibbert/micro-vivify"
}
},
"nixos-grub-themes": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1769794759,
"narHash": "sha256-1doG74WkbtUpawduk9f8szyzWsw3Liblrh2z+2jQnw4=",
"owner": "jeslie0",
"repo": "nixos-grub-themes",
"rev": "5e75f9b3ea9061dca6c53d34e166e08bf9ebc7c7",
"lastModified": 1781017666,
"narHash": "sha256-kfHyzZaPHgqZML48OA+5JwBOsLdQJ2ci/aGPShvUB4Y=",
"owner": "soramanew",
"repo": "m3shapes",
"rev": "bdc327b29f95394a732baf3c9b19658ba23755b6",
"type": "github"
},
"original": {
"owner": "jeslie0",
"repo": "nixos-grub-themes",
"owner": "soramanew",
"repo": "m3shapes",
"rev": "bdc327b29f95394a732baf3c9b19658ba23755b6",
"type": "github"
}
},
"nix-git-cherry-picker": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1781373243,
"narHash": "sha256-CpZ5FEU1BtW6K4FywtCCE2wJs6R/Ifps3etRDh8NJ9w=",
"owner": "tomasriveral",
"repo": "nix-git-cherry-picker",
"rev": "9865dba535620831ae7cab395bf404f8f464df0e",
"type": "github"
},
"original": {
"owner": "tomasriveral",
"repo": "nix-git-cherry-picker",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1702151865,
"narHash": "sha256-9VAt19t6yQa7pHZLDbil/QctAgVsA66DLnzdRGqDisg=",
"lastModified": 1781216227,
"narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "666fc80e7b2afb570462423cb0e1cf1a3a34fedd",
"rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
@@ -165,13 +208,36 @@
"type": "github"
}
},
"nixpkgs-notifier": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1781273662,
"narHash": "sha256-50dd7Cs1mUHq1srw7UojdzCYOB4TfrIXMv7XHHPU9zw=",
"owner": "tomasriveral",
"repo": "nixpkgs-notifier",
"rev": "12183f26e8b196d9906f82dc05f9672793c61038",
"type": "github"
},
"original": {
"owner": "tomasriveral",
"repo": "nixpkgs-notifier",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1779536132,
"narHash": "sha256-q+fF42iv/geEbHfgSzy3tS0FF/EyD6XTZ98E6yxiBO8=",
"lastModified": 1781328464,
"narHash": "sha256-j9uBlHI0eJ9zWU9IlF6SlBBPdeJu30hcvar31IRKHpw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "3d8f0f3f72a6cd4d93d0ad13203f2ea1cb7e1456",
"rev": "5a722a7155bfc9fbe657f28d26b71860d95324bc",
"type": "github"
},
"original": {
@@ -181,19 +247,50 @@
"type": "github"
}
},
"nixpkgs_2": {
"notewrapper": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1779102034,
"narHash": "sha256-vZJZjLo513IeI8hjzHFc6TDezUd4uCE2Eq4SNO3DNNg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "687f05a9184cad4eaf905c48b63649e3a86f5433",
"lastModified": 1780908812,
"narHash": "sha256-syxEJP0NNgVZYHp/zRVuz32VYf+ULD9itZk7V06SCos=",
"owner": "tomasriveral",
"repo": "notewrapper",
"rev": "e670ef935f0dd87dc8a8c6982147a9b8dce7565e",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"owner": "tomasriveral",
"repo": "notewrapper",
"type": "github"
}
},
"patent": {
"inputs": {
"flake-utils": [
"flake-utils"
],
"nixpkgs": [
"nixpkgs-unstable"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1781158593,
"narHash": "sha256-zxlheX4o1MK00dkYzoXm7Srj5SD9iOCSp4N7f1iShr0=",
"owner": "r14dd",
"repo": "patent",
"rev": "68772d068088d62a030619090959165af5e71ed1",
"type": "github"
},
"original": {
"owner": "r14dd",
"repo": "patent",
"type": "github"
}
},
@@ -205,11 +302,11 @@
]
},
"locked": {
"lastModified": 1779430452,
"narHash": "sha256-zTslhsxLqUlRTML506iougTGzyR38Fzhzn7t4KDEuuE=",
"lastModified": 1781053488,
"narHash": "sha256-P4WEBaKgl8flRckHxXGHzT0potPvB3x8ZFIp9gLEAMY=",
"ref": "refs/heads/master",
"rev": "4b4fca3224ab977dc515ac0bb78d00b3dfa71e00",
"revCount": 819,
"rev": "d99d87d5e5ec4e696815348692fdaaf0b6be1b2c",
"revCount": 822,
"type": "git",
"url": "https://git.outfoxxed.me/outfoxxed/quickshell"
},
@@ -221,13 +318,56 @@
"root": {
"inputs": {
"caelestia-shell": "caelestia-shell",
"disko": "disko",
"flake-parts": "flake-parts",
"flake-utils": "flake-utils",
"home-manager": "home-manager",
"import-tree": "import-tree",
"microPlugins-vivify": "microPlugins-vivify",
"nixos-grub-themes": "nixos-grub-themes",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable"
"nix-git-cherry-picker": "nix-git-cherry-picker",
"nixpkgs": "nixpkgs",
"nixpkgs-master": [
"nixpkgs-unstable"
],
"nixpkgs-notifier": "nixpkgs-notifier",
"nixpkgs-unstable": "nixpkgs-unstable",
"notewrapper": "notewrapper",
"patent": "patent"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"patent",
"nixpkgs"
]
},
"locked": {
"lastModified": 1780888890,
"narHash": "sha256-MUQPFiskEENaJ2N82TRIqpKlHXGXJJkPfKH6W788oQo=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "7d5f8d75fc195a236b46633d7679139698aeb35f",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
+50 -7
View File
@@ -2,24 +2,59 @@
description = "Nixos config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable"; # used for some packages
nixos-grub-themes.url = "github:jeslie0/nixos-grub-themes";
# Only uncomment when needed. This uses a lot of space and compute ressources for sometimes not that much. If not used, make it follow unstable
nixpkgs-master.follows = "nixpkgs-unstable";
#nixpkgs-master.url = "github:nixos/nixpkgs/master"; # used with precaution as they are untested and not cached
# This one is only used when testing some packaging. You must change the path to the correct nixpkgs clone
#nixpkgs-local.url = "path:/home/tomasr/devel/fugit2-gpgme";
home-manager = {
url = "github:nix-community/home-manager/release-25.11";
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
flake-utils = {
url = "https://flakehub.com/f/numtide/flake-utils/*"; # flakehub caches results
};
notewrapper = {
url = "github:tomasriveral/notewrapper";
inputs.nixpkgs.follows = "nixpkgs-unstable";
inputs.flake-utils.follows = "flake-utils";
};
nixpkgs-notifier = {
url = "github:tomasriveral/nixpkgs-notifier";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
nix-git-cherry-picker = {
url = "github:tomasriveral/nix-git-cherry-picker";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
patent = {
url = "github:r14dd/patent";
inputs.flake-utils.follows = "flake-utils";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
caelestia-shell = {
# based on quickshell. See https://github.com/caelestia-dots/shell
url = "github:caelestia-dots/shell";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
microPlugins-vivify = {
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
/*
microPlugins-vivify = {
url = "git+https://codeberg.org/gibbert/micro-vivify";
flake = false;
};
*/
flake-parts = {
url = "github:hercules-ci/flake-parts";
url = "https://flakehub.com/f/hercules-ci/flake-parts/*"; # flakehub caches results
};
import-tree.url = "github:vic/import-tree"; # imports ./modules recursively
};
@@ -30,8 +65,13 @@
system = "x86_64-linux";
unfreePkgs = [
"hplip"
"vivify.vim"
"nvidia-x11"
"nvidia-settings"
"steam"
"steam-unwrapped"
"cheatsheet.nvim"
"zoom-us"
"zoom"
];
mkUnfreePredicate = pkg:
builtins.elem (inputs.nixpkgs.lib.getName pkg) unfreePkgs;
@@ -42,8 +82,11 @@
};
pkgs = mkPkgs inputs.nixpkgs;
pkgs-unstable = mkPkgs inputs.nixpkgs-unstable;
pkgs-local = mkPkgs inputs.nixpkgs-unstable;
#pkgs-local = mkPkgs inputs.nixpkgs-local;
pkgs-master = mkPkgs inputs.nixpkgs-master;
in {
inherit pkgs pkgs-unstable;
inherit pkgs pkgs-unstable pkgs-local pkgs-master;
};
}
// (inputs.import-tree ./modules));
+1 -1
View File
@@ -57,7 +57,7 @@ _: {
# we enable system wide with nixpkgs because it offers some addon configuration. We just use this for some config
#enable = true;
theme = "dark";
sync = {
profiles."User 1".sync = {
autoSync = true;
autoSyncMediaMinutes = 10;
syncMedia = true;
+89 -8
View File
@@ -7,7 +7,7 @@
environment.systemPackages = with pkgs; [
chromium # used only to flash the firmware on my framework laptop 16 (keyboard.frame.work) as only chromium based browser support webHID.
pkgs-unstable.tor-browser
self.packages.${pkgs.system}.custom-librewolfprofiles
self.packages.${pkgs.system}.custom-browserprofiles
];
};
flake.homeModules.librewolf = _: {
@@ -146,7 +146,7 @@
};
"uBlock0@raymondhill.net" = {
install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi";
installation_mode = "force_installed";
installation_mode = "blocked";
};
"{08d5243b-4236-4a27-984b-1ded22ce01c3}" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/3729287/gruvboxgruvboxgruvboxgruvboxgr-1.0.xpi";
@@ -160,6 +160,14 @@
install_url = "https://addons.mozilla.org/firefox/downloads/file/4749958/bitwarden_password_manager-latest.xpi";
installation_mode = "force_installed";
};
"@crw-extension-firefox" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4790089/consumer_rights_wiki-latest.xpi";
installation_mode = "force_installed";
};
"archivebox@tjhorner.dev" = {
install_url = "https://addons.mozilla.org/firefox/downloads/file/4820668/archivebox_exporter-latest.xpi";
installation_mode = "force_installed";
};
};
DisableTelemetry = true;
DisableFirefoxStudies = true;
@@ -304,6 +312,12 @@
bookmarks = {
force = true;
settings = [
{
name = "Nixpkgs PRs";
tags = ["nixpkgs" "PR" "github"];
keyword = "nixpkgs prs";
url = "https://github.com/NixOS/nixpkgs/pulls";
}
{
name = "Nixos Config";
tags = ["github"];
@@ -334,18 +348,60 @@
keyword = "nixpkgs tracker";
url = "https://nixpk.gs/pr-tracker.html";
}
{
name = "fahrlehrer";
tags = ["theorie" "fahrlehrer" "conduite"];
keyword = "fahrlehrer24";
url = "https://app.fahrlehrer24.ch/";
}
{
name = "cogito";
tags = ["cogito" "esprit" "critique"];
keyword = "Cogito l'Esprit critique";
url = "https://app.cogito.fr";
}
{
name = "EPFL email";
tags = ["mail" "outlook" "epfl"];
keyword = "EPFL email";
url = "https://outlook.office.com/mail";
}
{
name = "nixpkgs' failing and orphan packages";
tags = ["nixpkgs" "fail" "orphan" "ZH" "zero hydra failure"];
keyword = "Zero hydra failure orphan packages";
url = "https://zh.fail/failed/by-maintainer/_.html";
}
{
name = "NixOS Manual - Unstable";
tags = ["nixos" "manual" "unstable"];
keyword = "NixOS manual";
url = "https://nixos.org/manual/nixos/unstable/";
}
{
name = "Nixpgks Reference Manual - Unstable";
tags = ["nixpkgs" "manual" "reference" "unstable"];
keyword = "nixpkgs reference manual";
url = "https://nixos.org/manual/nixpkgs/unstable/";
}
{
name = "Nix Reference Manual - 2.34.";
tags = ["nix" "manual" "reference" "2.34"];
keyword = "nix reference manual";
url = "https://nix.dev/manual/nix/2.34/nix-2.34.html";
}
{
name = "Disposable temporary email";
tags = ["privacy" "email" "temporary"];
keyword = "disposable temporary email";
url = "https://temp-mail.org";
}
{
name = "nix-update-script Rryan-tm logs";
tags = ["nixpkgs" "nix" "log" "rryan-tm"];
keyword = "rryan-tm logs";
url = "https://nixpkgs-update-logs.nix-community.org";
}
{
name = "Nix function search";
tags = ["nixpkgs" "nix" "search"];
keyword = "nix function search";
url = "https://noogle.dev";
}
];
};
search = {
@@ -582,6 +638,23 @@
# };
#};
};
bookmarks = {
force = true;
settings = [
{
name = "Disposable temporary email";
tags = ["privacy" "email" "temporary"];
keyword = "disposable temporary email";
url = "https://temp-mail.org";
}
{
name = "r/Piracy megathread";
tags = ["piracy" "megathread" "reddit"];
keyword = "piracy megathread";
url = "https://old.reddit.com/r/Piracy/wiki/megathread";
}
];
};
search = {
force = true;
default = "quant";
@@ -643,6 +716,14 @@
];
definedAliases = ["on"];
};
"ProtonDB" = {
urls = [
{
template = "https://www.protondb.com/search?q={searchTerms}";
}
];
definedAliases = ["pr"];
};
};
};
};
+29 -19
View File
@@ -10,6 +10,35 @@
quickshell # we have it but adding it there solves "WARN qt.qpa.services: Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.quickshell'")"
];
};
flake.homeModules.caelestia-desktop = _: {
# for some reason nvidia drivers or I don't know what break the lock. (activate even when use, crash, etc.)
programs.caelestia.settings.general.idle = {
lockBeforeSleep = false;
inhibitWhenAudio = true;
timeouts = [];
};
};
flake.homeModules.caelestia-laptop = _: {
programs.caelestia.settings.general.idle = {
lockBeforeSleep = true;
inhibitWhenAudio = true;
timeouts = [
{
timeout = 180;
idleAction = "lock";
}
{
timeout = 300;
idleAction = "dpms off"; # what's that?
returnAction = "dpms on";
}
{
timeout = 600;
idleAction = ["systemctl" "suspend-then-hibernate"];
}
];
};
};
flake.homeModules.caelestia = _: let
sisyphe = ../../assets/sisyphe.gif;
pepe-music = ../../assets/pepe-music.gif;
@@ -101,25 +130,6 @@
];
criticalLevel = 3;
};
idle = {
lockBeforeSleep = true;
inhibitWhenAudio = true;
timeouts = [
{
timeout = 180;
idleAction = "lock";
}
{
timeout = 300;
idleAction = "dpms off"; # what's that?
returnAction = "dpms on";
}
{
timeout = 600;
idleAction = ["systemctl" "suspend-then-hibernate"];
}
];
};
};
background = {
desktopClock = {
+4
View File
@@ -5,5 +5,9 @@ _: {
supertuxkart # fuck mariokart
# my favorite italian plumber is free software
];
programs.steam = {
enable = true;
protontricks.enable = true;
};
};
}
+3 -1
View File
@@ -2,9 +2,11 @@ _: {
flake.homeModules.git = _: {
programs.git = {
enable = true;
settings = {
/*
settings = {
init.defaultBranch = "main";
};
*/
};
programs.gh = {
enable = true;
+34 -10
View File
@@ -5,7 +5,7 @@
...
}: {
environment.systemPackages = with pkgs; [
swww #wallpaper daemon
awww #wallpaper daemon
gruvbox-gtk-theme
hyprcursor
capitaine-cursors-themed # cursor theme
@@ -15,7 +15,6 @@
self.packages.${pkgs.system}.custom-dontkillsteam # kill app (if not steam or tomato-c
self.packages.${pkgs.system}.custom-killall # kill all windows except focused window
xdg-utils
home-manager
];
# enable hyprland WM
programs.hyprland = {
@@ -42,12 +41,32 @@
wayland.windowManager.hyprland.settings = {
exec-once = [
"qtbatticon" # custom battery tray
"nixpkgs-notifier listen" # tracks PR merge in nixos-unstable
];
monitor = [
"eDP-1, highres@highrr, 0x0, 1"
];
};
};
flake.homeModules.hyprland-desktop = _: {
wayland.windowManager.hyprland.settings = {
monitor = [
", highres@highrr, auto, 0.75"
];
exec-once = [
"if [ -e \"/home/tomasr/icloudSync.sh\" ]; then /home/tomasr/icloudSync.sh; else notify-send \"icloudSync.sh doesn't exist\" \"See ~/nixos/modules/applications/hyprland.nix for more information\"; fi"
# my icloud account uses an email that I don't want to make public. So the script isnt pushed to github. The script looks like:
/*
#!/etc/profiles/per-user/tomasr/bin/zsh
if ! icloudpd --auth-only --username tomas.rivera_2009@icloud.com --dry-run; then
notify-send "icloudpd is not logged in" "Please run icloudpd icloudpd --username my@email.address --password my_password --auth-only"
exit 1
fi
icloudpd --directory ~/hdd/kdrive/Photo/IPhone/icloudpd-backup --username tomas.rivera_2009@icloud.com --watch-with-interval 3600 --no-progress-bar
*/
];
};
};
flake.homeModules.hyprland = {pkgs-unstable, ...}: let
wallpaper = ../../assets/wallpaper1.jpg;
in {
@@ -58,15 +77,16 @@
home.sessionVariables.NIXOS_OZONE_WL = "1";
wayland.windowManager.hyprland.plugins = [
#pkgs-unstable.hyprlandPlugins.hyprspace # currently broken
#pkgs-unstable.hyprlandPlugins.hypr-dynamic-cursors # currently broken
pkgs-unstable.hyprlandPlugins.hypr-dynamic-cursors
];
wayland.windowManager.hyprland.configType = "hyprlang";
wayland.windowManager.hyprland.settings = {
"$mod" = "SUPER";
"$term" = "kitty";
"$editor" = "nvim";
"$notes" = "kitty --class \"custom-obsidianvaults\" --name \"Select Obsidian vault\" --hold custom-obsidianvaults";
"$file" = "dolphin";
"$browser" = "kitty --class \"custom-librewolfprofiles\" --name \"Select LibreWolf profile\" --hold custom-librewolfprofiles";
"$browser" = "kitty --class \"custom-browserprofiles\" --name \"Select browser profile\" --hold custom-browserprofiles";
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
animations = {
@@ -190,8 +210,8 @@
"$mod_SHIFT, S, exec, caelestia shell picker open"
# framework 16 rgb macropad
"Ctrl+$mod, 6, exec, custom-killall" # pos 1 1 killall apps except focused one
#"Ctrl+Alt, 7, exec, custom-performance" # pos 2 1 start performance mode
"Ctrl+Alt, 7, exec, caelestia shell gameMode toggle"
"Ctrl+Alt, 7, exec, custom-performance" # pos 2 1 start performance mode
#"Ctrl+Alt, 7, exec, caelestia shell gameMode toggle"
# reloads the autostart programs # pos 3 1
# we passed to caelestia-shell and stoped using that
/*
@@ -203,7 +223,9 @@
#"Ctrl+Alt, 1, exec, swaync-client -t" # pos 4 1 notification center
"Ctrl+Alt, 1, exec, qs ipc call notifications toggle"
*/
# pos 4 1 notification center.
"Ctrl+Alt, 1, exec, caelestia shell drawers toggle sidebar"
"Ctrl+Alt, 1, exec, [[ -f ~/.cache/hypr-battery-saver ]] || swaync-client -t"
"Ctrl+$mod, 4, exec, caelestia shell notifs toggleDnd"
"Ctrl+$mod, 3, exec, pavucontrol" # pos 1 2 audiocontrol
"Ctrl+Shift+Alt, 0, exec, kitty --hold --class \"custom-changeAudioOutput\" --name \"Select audio output\" zsh -c \"custom-changeAudioOutput\"" # pos 2 2 change audio output fzf
@@ -260,16 +282,18 @@
"custom-batterywarning"
#"birdtray" # thunderbird tray app # curently broken
#wallpapers/b
"swww img ${wallpaper}"
"swww-daemon"
"awww img ${wallpaper}"
"awww-daemon"
"sleep 1 && custom-wallpaper"
"custom-checkKdrive && custom-mountkdrive" # checks if the remote works and mount it
#"waybar"
"custom-gitnotify"
"custom-checkMatrix" # checks if matrix-commander-rs is connected which is important for other stuff
#"custom-obsidianbackup" # backups the obsidian notes to kdrive and to a timed hidden dir (~/.Notes.backup/)
#"QS-notifycache" # builds the cache that will be used for the notification history
"sleep 4 & caelestia-shell" #works better if it sleeps a bit before
"sleep 20 && ngcp pull --automatic" # see github.com/tomasriveral/nix-git-cherry-picker
"rm ~/.cache/hypr-battery-saver"
"rm ~/.cache/hypr-battery-saver.brightness"
/*
We stopped using that ######################### maybe we should desactivate those scripts
# login autostart
@@ -478,7 +502,7 @@
"float on, match:class ^(kitty)$, match:title ^(htop)$"
"float on, match:class ^(vlc)$"
"float on, match:class ^(eog)$"
"float on, size 400 225, match:class ^(custom-librewolfprofiles)$"
"float on, size 400 225, match:class ^(custom-browserprofiles)$"
"float on, size 1050 200, match:class ^(custom-changeAudioOutput)$"
"float on, size 400 175, match:class ^(custom-obsidianvaults)$"
"float on, size 600 600, match:initial_class ^(custom-pomodoro)$"
+6 -6
View File
@@ -49,7 +49,7 @@ _: {
name = "custom-wallpaper";
runtimeInputs = with pkgs; [
socat
swww
awww
];
text = ''
handle() {
@@ -60,19 +60,19 @@ _: {
workspace="''${str:$i:1}"
case $workspace in
1 | 6)
swww img -t none ${wallpaper1}
awww img -t none ${wallpaper1}
;;
2 | 7)
swww img -t none ${wallpaper2}
awww img -t none ${wallpaper2}
;;
3 | 8)
swww img -t none ${wallpaper3}
awww img -t none ${wallpaper3}
;;
4 | 9)
swww img -t none ${wallpaper4}
awww img -t none ${wallpaper4}
;;
5 | 10 | 0)
swww img -t none ${wallpaper5}
awww img -t none ${wallpaper5}
;;
esac
;;
+81 -8
View File
@@ -1,9 +1,9 @@
{self, ...}: {
flake.nixosModules.kdrive = {pkgs-unstable, ...}: {
flake.nixosModules.kdrive-laptop = {pkgs-unstable, ...}: {
environment.systemPackages = with pkgs-unstable; [
rclone
self.packages.${pkgs.system}.custom-checkKdrive
self.packages.${pkgs.system}.custom-mountkdrive
self.packages.${pkgs.system}.custom-mountkdrive-laptop
];
# removes rclone error
programs.fuse = {
@@ -11,16 +11,49 @@
enable = true;
};
};
flake.nixosModules.kdrive-desktop = {pkgs-unstable, ...}: {
environment.systemPackages = with pkgs-unstable; [
rclone
icloudpd
self.packages.${pkgs-unstable.system}.custom-checkKdrive
self.packages.${pkgs-unstable.system}.custom-synckdrive-desktop
];
# removes rclone error
programs.fuse = {
userAllowOther = true;
enable = true;
};
systemd.user.services.kdrive-sync = {
serviceConfig = {
ExecStart = "${self.packages.${pkgs-unstable.system}.custom-synckdrive-desktop}/bin/custom-synckdrive";
Nice = 19; # lowest CPU scheduling priority
IOSchedulingClass = "idle";
IOSchedulingPriority = 7;
# Optional:
CPUWeight = 1; # minimum relative CPU share
};
};
systemd.user.timers.kdrive-sync = {
wantedBy = ["timers.target"];
timerConfig = {
OnBootSec = "10m";
OnUnitActiveSec = "1h";
};
};
};
perSystem = {pkgs, ...}: {
packages.custom-checkKdrive = pkgs.writeShellApplication {
name = "custom-checkKdrive";
runtimeInputs = with pkgs; [
rclone
matrix-commander-rs
curl
libnotify
];
text = ''
# shellcheck disable=SC1091
source /run/agenix/ntfy
# waits for an internet connection. It pings both Google DNS and Cloudfare dns in case one of them is down
until ping -c1 -W1 1.1.1.1 >/dev/null 2>&1 || \
ping -c1 -W1 8.8.8.8 >/dev/null 2>&1
@@ -40,13 +73,15 @@
else
echo "kdrive rclone failed with error: $output"
notify-send "rclone kdrive failed" "$output"
matrix-commander-rs --verbose -m "rclone kdrive failed.<br>Error: <pre>$output</pre><br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
--html \
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
curl \
-u ":$NTFY_TOKEN" \
-d "Rclone couldnt access kdrive (rclone lsd kdrive). Error: $output" \
-H "Title: Rclone kdrive" \
"$NTFY_SERVER/Alerts"
fi
'';
};
packages.custom-mountkdrive = pkgs.writeShellApplication {
packages.custom-mountkdrive-laptop = pkgs.writeShellApplication {
name = "custom-mountkdrive";
runtimeInputs = with pkgs; [
rclone
@@ -66,5 +101,43 @@
fi
'';
};
/*
Before setting up we must:
* setup the rclone remote
`rclone config` choose Webdaw and see login information in bitwarden.
* give the good permissions for the hdd
`sudo chown -R tomasr:users /home/tomasr/hdd`
* Run the bisync once completly
`rclone bisync ~/hdd/kdrive/ kdrive: --resync`
Note : only use the --resync flag once
*/
packages.custom-synckdrive-desktop = pkgs.writeShellApplication {
name = "custom-synckdrive";
runtimeInputs = with pkgs; [
rclone
libnotify
ripgrep
];
text = ''
REMOTE_NAME="kdrive"
MOUNT_POINT="/home/tomasr/hdd/kdrive"
LOGFILE="/tmp/rclone-bisync.log"
rm LOGFILE && touch LOGFILE
if rclone --config "$HOME/.config/rclone/rclone.conf" listremotes | rg "^''${REMOTE_NAME}:"; then
echo "Syncing ''${REMOTE_NAME}..."
if ! rclone --config "$HOME/.config/rclone/rclone.conf" bisync "$MOUNT_POINT" "$REMOTE_NAME:" --recover > "$LOGFILE" 2>&1; then
notify-send "rclone bisync failed" "$(cat $LOGFILE)"
echo "rclone bisync failed"
cat $LOGFILE
cp $LOGFILE "$HOME/hdd/kdrive/logs/$(date +%Y-%m-%d-%H-%M-%S).log"
fi
else
notify-send "rclone sync failed" \
"Remote ''${REMOTE_NAME} not found.\nConfigure rclone and create the dir ~/kdrive/ or comment out the exec line in hyprland.nix."
echo "Remote ''${REMOTE_NAME} not found. Configure rclone or fix in ~/nixos/modules/applications/kdrive.nix"
fi
'';
};
};
}
+7
View File
@@ -0,0 +1,7 @@
_: {
flake.nixosModules.mathematics = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
elan
];
};
}
+14 -4
View File
@@ -1,6 +1,8 @@
_: {
flake.homeModules.neovim = {pkgs-unstable, ...}: {
programs.neovim = {
withRuby = false;
withPython3 = false;
enable = true;
vimAlias = false;
viAlias = false;
@@ -50,6 +52,9 @@ _: {
pkgs-unstable.vimPlugins.nvim-treesitter-parsers.nix
pkgs-unstable.vimPlugins.nvim-treesitter-parsers.printf
pkgs-unstable.vimPlugins.nvim-treesitter-parsers.python
pkgs-unstable.vimPlugins.nvim-treesitter-parsers.sparql
pkgs-unstable.vimPlugins.lean-nvim
pkgs-unstable.vimPlugins.vim-ledger
pkgs-unstable.vimPlugins.telescope-nvim
pkgs-unstable.vimPlugins.nvim-scrollbar
pkgs-unstable.vimPlugins.promise-async
@@ -63,7 +68,7 @@ _: {
pkgs-unstable.vimPlugins.better-diagnostic-virtual-text
pkgs-unstable.vimPlugins.garbage-day-nvim
];
extraLuaConfig = ''
initLua = ''
local vim = vim
@@ -316,7 +321,7 @@ _: {
})
vim.lsp.config("pylsp", {
cmd = { "pylsp" },
filetypes = { "python" },
filetypes = { "python", "py" },
on_attach = on_attach,
settings = {
pylsp = {
@@ -368,7 +373,7 @@ _: {
},
})
vim.lsp.enable({ "lua_ls", "clangd", "pylsp", "texlab", "nixd", "ltex"})
vim.lsp.enable({ "lua_ls", "clangd", "pylsp", "texlab", "nixd", "ltex", "leanls"})
-- =========================
-- DASHBOARD
-- =========================
@@ -471,7 +476,12 @@ _: {
-- =========================
require('lualine').setup { options = { theme = "gruvbox_dark" } }
-- ==================
-- lean
-- ==================
require('lean').setup({
mappings = true,
})
--==================0
-- Some utils
--==================
+60
View File
@@ -0,0 +1,60 @@
{inputs, ...}: {
flake.homeModules.laptop-notewrapper = {pkgs, ...}: {
home.packages = [
inputs.notewrapper.packages.${pkgs.system}.default
];
home.file.".config/notewrapper/config.json" = {
enable = true;
force = true;
text = ''
{
"directory": ["~/kdrive/Notes/"],
"render": true,
"jumpToEndOfFileOnLaunch": true,
"editor": "neovim",
"journalRegex": ".*journal.*",
"dateEntry": "# %Y %m %d %a",
"newLineOnOpening": true,
"backup": {
"enable": false,
"directory": {
"~/Documents/Notes/": "~/kdrive/Notes/",
"~/test/": "~/backupTest/"
},
"interval": "daily",
"rsyncArgs": ["-Lqah", "--update"]
}
}
'';
};
};
flake.homeModules.desktop-notewrapper = {pkgs, ...}: {
home.packages = [
inputs.notewrapper.packages.${pkgs.system}.default
];
home.file.".config/notewrapper/config.json" = {
enable = true;
force = true;
text = ''
{
"directory": ["~/hdd/kdrive/Notes/"],
"render": true,
"jumpToEndOfFileOnLaunch": true,
"editor": "neovim",
"journalRegex": ".*journal.*",
"dateEntry": "# %Y %m %d %a",
"newLineOnOpening": true,
"backup": {
"enable": false,
"directory": {
"~/Documents/Notes/": "~/kdrive/Notes/",
"~/test/": "~/backupTest/"
},
"interval": "daily",
"rsyncArgs": ["-Lqah", "--update"]
}
}
'';
};
};
}
+10 -7
View File
@@ -3,19 +3,22 @@ _: {
programs.ssh = {
enable = true;
enableDefaultConfig = false; # will be removed in the futur. Removes evaluation warning
matchBlocks."*" = {
/*
settings = {
# equivalent to the default config
forwardAgent = false;
addKeysToAgent = "no";
compression = false;
#forwardAgent = false;
# give errors in home-manager 26.05
#addKeysToAgent = "no";
#compression = false;
serverAliveInterval = 0;
serverAliveCountMax = 3;
hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no";
#controlMaster = "no";
#controlPath = "~/.ssh/master-%r@%n:%p";
#controlPersist = "no";
};
*/
};
services.ssh-agent.enable = true;
home.file.".ssh/config".text = ''
+9
View File
@@ -0,0 +1,9 @@
_: {
flake.homeModules.tmux = _: {
programs.tmux = {
enable = true;
clock24 = true;
};
};
}
+28
View File
@@ -1,4 +1,32 @@
_: {
flake.homeModules.waybar-minimal = _: {
programs.waybar = {
enable = true;
settings = [
{
layer = "top";
modules-left = [];
modules-center = [];
modules-right = [
"battery"
"clock"
];
battery = {
format = "{capacity}% {icon}";
states = {
warning = 30;
critical = 15;
};
};
clock = {
format = "{:%H:%M}";
};
}
];
};
};
flake.homeModules.waybar = _: {
# replaced by caelestia
programs.waybar = {
+32 -8
View File
@@ -1,16 +1,41 @@
{self, ...}: {
_: {
flake.homeModules.zsh-laptop = _: {
programs.zsh = {
shellAliases = {
snrt = "git -C ~/nixos add -A && time sudo nixos-rebuild test --flake ~/nixos/#laptop && pkill shell || true && pkill caelestia-shell || true && caelestia-shell -n > /dev/null 2>&1 & disown";
snrs = "git -C ~/nixos add -A && time sudo nixos-rebuild switch --flake ~/nixos/#laptop && pkill shell || true && pkill caelestia-shell || true && caelestia-shell -n > /dev/null 2>&1 & disown";
snrt = ''
git -C ~/nixos add -A &&
time sudo nixos-rebuild test --flake ~/nixos/#laptop &&
pkill shell || true &&
if [ ! -f ~/.cache/hypr-battery-saver ]; then
pkill caelestia-shell || true &&
caelestia-shell -n > /dev/null 2>&1 & disown
fi
'';
snrs = ''
git -C ~/nixos add -A &&
time sudo nixos-rebuild switch --flake ~/nixos/#laptop &&
pkill shell || true &&
if [ ! -f ~/.cache/hypr-battery-saver ]; then
pkill caelestia-shell || true &&
caelestia-shell -n > /dev/null 2>&1 & disown
fi
'';
};
};
};
flake.homeModules.zsh = {pkgs, ...}: {
flake.homeModules.zsh-desktop = _: {
programs.zsh = {
shellAliases = {
snrt = "git -C ~/nixos add -A && time sudo nixos-rebuild test --flake ~/nixos/#desktop && pkill shell || true && pkill caelestia-shell || true && caelestia-shell -n > /dev/null 2>&1 & disown";
snrs = "git -C ~/nixos add -A && time sudo nixos-rebuild switch --flake ~/nixos/#desktop && pkill shell || true && pkill caelestia-shell || true && caelestia-shell -n > /dev/null 2>&1 & disown";
};
};
};
flake.homeModules.zsh = {pkgs-unstable, ...}: {
home.packages = [
self.packages.${pkgs.system}.dejaManuallyDerived
#pkgs-unstable.deja
#self.packages.${pkgs.system}.dejaManuallyDerived
pkgs-unstable.deja
];
programs.zsh = {
@@ -25,7 +50,7 @@
command cat "$@"
fi
}
custom-eza() { # behaves differently if we just call it or if we pipe initContent
if [[ -t 1 ]]; then
eza -hlF -aa --color=always --hyperlink --group-directories-first --show-symlinks --icons=always --git --no-permissions "$@"
@@ -35,7 +60,6 @@
}
eval "$(direnv hook zsh)"
eval "$(deja init zsh)"
export PATH="$PATH:$HOME/NoteWrapper" # some project im coding
fastfetch''\n'';
shellAliases = {
".." = "z ..";
+103 -29
View File
@@ -1,9 +1,9 @@
_: {
flake.nixosModules.battery-laptop = {
lib,
config,
...
}:
{
self,
inputs,
...
}: {
flake.nixosModules.battery-laptop = {pkgs, ...}:
# https://discourse.nixos.org/t/what-is-the-best-option-for-power-management/63406/2
# we just activate tlp unconditonally
#let
@@ -22,7 +22,8 @@ _: {
# };
# config = lib.mkIf cfg.battery.enable {
powerManagement.powertop.enable = true; # enable powertop auto tuning on startup.
/*
powerManagement.powertop.enable = true; # enable powertop auto tuning on startup.
# Acording to https://community.frame.work/t/solved-keys-stick-and-repeat-after-being-released/51153/12
# Some powertop bug is responsable for the problem of the random keypress being stuck
# fix: from https://git.gabbie.blue/blue/nixconf/src/commit/2d1bc6dad4684c019b6b3e894408e76e2734806c/hosts/gabbielaptop/configuration.nix#L68
@@ -31,27 +32,31 @@ _: {
# Retrigger macropad udev rules
${lib.getExe' config.systemd.package "udevadm"} trigger -c bind -s usb -a idVendor=32ac -a idProduct=0013
'';
*/
services.system76-scheduler.settings.cfsProfiles.enable = true; # Better scheduling for CPU cycles - thanks System76!!!
services.thermald.enable = true; # Enable thermald, the temperature management daemon. (only necessary if on Intel CPUs)
services.power-profiles-daemon.enable = false; # Disable GNOMEs power management
services.tlp = {
services.thermald.enable = false; # Enable thermald, the temperature management daemon. (only necessary if on Intel CPUs)
services.power-profiles-daemon.enable = true; # ppd is recommended over tlp for framework 16
/*
services.tlp = {
enable = true; # Enable TLP (better than gnomes internal power manager)
settings = {
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 1;
CPU_HWP_DYN_BOOST_ON_AC = 1;
CPU_HWP_DYN_BOOST_ON_BAT = 1;
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_AC = "balanced";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "balanced";
START_CHARGE_THRESH_BAT1 = 75;
STOP_CHARGE_THRESH_BAT1 = 85;
CPU_ENERGY_PERF_POLICY_ON_AC = "balanced";
CPU_ENERGY_PERF_POLICY_ON_BAT = "powersave";
PLATFORM_PROFILE_ON_AC = "balanced";
PLATFORM_PROFILE_ON_BAT = "powersave";
STOP_CHARGE_THRESH_BAT1 = 80;
};
};
# };
*/
environment.systemPackages = [
self.packages.${pkgs.system}.custom-performance
];
};
perSystem = {pkgs, ...}: let
NotifySound = ../../assets/battery_notify.mp3;
@@ -336,28 +341,97 @@ _: {
name = "custom-performance";
runtimeInputs = with pkgs; [
hyprland
gawk
brightnessctl
swaynotificationcenter
self.packages.${pkgs.system}.custom-wallpaper
libnotify
inputs.caelestia-shell.packages.${pkgs.system}.default
];
text = ''
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
if [ "$HYPRGAMEMODE" = 1 ] ; then
STATE="$HOME/.cache/hypr-battery-saver"
enable() {
mkdir -p "$(dirname "$STATE")"
echo "Enabling battery saver mode..."
# Save brightness
brightnessctl get > "''${STATE}.brightness" 2>/dev/null || true
# Kill heavy UI components
pkill -f caelestia-shell || true
pkill -f caelestia || true
pkill shell || true
pkill -f custom-wallpaper || true
# Start lightweight notifications
pkill swaync || true
swaync & disown
# Start lightweight waybar
pkill waybar || true
waybar & disown
# Lower refresh rate (BIGGEST win)
hyprctl keyword monitor "eDP-1,2560x1600@60,0x0,1"
# Core performance toggles
hyprctl --batch "\
keyword animations:enabled 0;\
keyword animation borderangle,0; \
keyword animation borderangle,0;\
keyword decoration:shadow:enabled 0;\
keyword decoration:blur:enabled 0;\
keyword decoration:fullscreen_opacity 1;\
keyword decoration:rounding 0;\
keyword decoration:fullscreen_opacity 1;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0"
notify-send -u critical -t 5000 "Performance mode [ON]"
exit
else
notify-send -u critical -t 5000 "Performance mode [OFF]"
keyword decoration:active_opacity 1;\
keyword decoration:inactive_opacity 1;\
keyword misc:vfr true"
# Lower brightness
brightnessctl set 5% 2>/dev/null || true
touch "$STATE"
notify-send "Battery Saver" "Enabled"
}
disable() {
echo "Disabling battery saver mode..."
# Restore refresh rate
hyprctl keyword monitor "eDP-1,2560x1600@165,0x0,1"
# Restore Caelestia
pkill swaync || true
pkill waybar || true
caelestia shell -d >/dev/null 2>&1 &
disown
# Restart wallpaper
custom-wallpaper >/dev/null 2>&1 &
disown
# Restore full UI via reload (safe here on exit)
hyprctl reload
exit 0
# Restore brightness
if [[ -f "''${STATE}.brightness" ]]; then
brightnessctl set "$(cat "''${STATE}.brightness")" 2>/dev/null || true
fi
rm -f "$STATE" "''${STATE}.brightness"
notify-send "Battery Saver" "Disabled"
}
if [[ -f "$STATE" ]]; then
disable
else
enable
fi
'';
};
+26 -11
View File
@@ -1,16 +1,31 @@
_: {
flake.nixosModules.bootloader-laptop = {
inputs,
pkgs,
...
}: {
# grub theme
boot.loader.grub = {
theme = inputs.nixos-grub-themes.packages.${pkgs.system}.nixos; # if you want to use nixos grub theme
_: let
wallpaper1 = ../../assets/wallpaper1.jpg;
wallpaper2 = ../../assets/wallpaper2.jpg;
wallpaper3 = ../../assets/wallpaper3.jpg;
wallpaper4 = ../../assets/wallpaper4.jpg;
wallpaper5 = ../../assets/wallpaper5.jpg;
in {
flake.nixosModules.bootloader = _: {
# disable other bootloaders
boot.loader.systemd-boot.enable = false;
boot.loader.grub.enable = false;
boot.loader.limine = {
enable = true;
efiSupport = true;
maxGenerations = 128;
style = {
wallpaperStyle = "centered";
wallpapers = [
wallpaper1
wallpaper2
wallpaper3
wallpaper4
wallpaper5
];
};
};
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
};
}
+241
View File
@@ -0,0 +1,241 @@
Note : ChatGPT helped me with the disko setup
This is the layout I'd start with. It's not fully copy-paste ready because you'll need to fill in the actual disk IDs after booting the installer, but it captures the architecture you described:
* SSD: LUKS → Btrfs
* HDD: LUKS → ext4
* One password entered at boot
* HDD unlocked using a keyfile stored on the SSD
* Suitable for a desktop host
# disko/desktop.nix
```
{
disko.devices = {
disk = {
ssd = {
# Replace with actual disk id from:
# ls -l /dev/disk/by-id
device = "/dev/disk/by-id/REPLACE_SSD_ID";
type = "disk";
content = {
type = "gpt";
partitions = {
ESP = {
size = "1G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "cryptroot";
# You will type this password at boot.
settings.allowDiscards = true;
content = {
type = "btrfs";
extraArgs = [ "-f" ];
subvolumes = {
"@root" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@home" = {
mountpoint = "/home";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@nix" = {
mountpoint = "/nix";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@snapshots" = {
mountpoint = "/.snapshots";
};
# Keyfile storage.
# This subvolume will contain the key used
# to unlock the HDD automatically.
"@keys" = {
mountpoint = "/keys";
};
};
};
};
};
};
};
};
hdd = {
# Replace with actual disk id
device = "/dev/disk/by-id/REPLACE_HDD_ID";
type = "disk";
content = {
type = "gpt";
partitions = {
luks = {
size = "100%";
content = {
type = "luks";
name = "cryptdata";
# IMPORTANT:
# This keyfile will be created after installation.
# The SSD unlocks first.
# Then this keyfile unlocks the HDD automatically.
settings = {
keyFile = "/keys/hdd.key";
};
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/data";
};
};
};
};
};
};
};
```
};
}
A few notes:
### 1. You'll need the disk IDs
On the installer:
```bash
ls -l /dev/disk/by-id
```
Then replace:
```text
REPLACE_SSD_ID
REPLACE_HDD_ID
```
with the actual values.
---
### 2. The HDD keyfile is a second step
After installation:
```bash
sudo mkdir -p /keys
sudo chmod 700 /keys
sudo dd if=/dev/urandom of=/keys/hdd.key bs=4096 count=1
sudo chmod 000 /keys/hdd.key
```
Then add the key to the HDD LUKS container:
```bash
sudo cryptsetup luksAddKey /dev/disk/by-id/ACTUAL_HDD_PARTITION /keys/hdd.key
```
Now:
```text
boot
↓
enter SSD password
↓
SSD unlocks
↓
keyfile becomes available
↓
HDD unlocks automatically
```
One password.
---
### 3. Btrfs subvolumes
I intentionally kept it simple:
```text
/
/home
/nix
/.snapshots
```
This is a very common NixOS layout.
---
### 4. Swap
I haven't included swap because there are a few valid choices:
* swapfile on Btrfs
* swap partition inside the SSD LUKS container
* zram only
I'd probably use **zram + a small swapfile** unless you have a very specific workload.
---
### 5. Dendritic adaptation
The actual Disko definition above won't change much.
The dendritic part is mostly wrapping it in your top-level module structure, something like:
```nix
{
flake.diskoConfigurations.desktop = {
imports = [
./desktop-disko.nix
];
};
}
```
or whatever convention your repository uses.
The storage design itself remains the same.
+95
View File
@@ -0,0 +1,95 @@
_: {
flake.diskoConfigurations.desktop = _: {
disko.devices = {
disk = {
ssd = {
# Replace with actual disk id from:
# ls -l /dev/disk/by-id
device = "/dev/disk/by-id/REPLACE_SSD_ID";
type = "disk";
content = {
type = "gpt";
partitions = {
ESP = {
size = "1G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
};
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = ["-f"];
subvolumes = {
"@root" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@home" = {
mountpoint = "/home";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@nix" = {
mountpoint = "/nix";
mountOptions = [
"compress=zstd"
"noatime"
];
};
"@snapshots" = {
mountpoint = "/.snapshots";
};
};
};
};
};
};
};
hdd = {
# Replace with actual disk id
device = "/dev/disk/by-id/REPLACE_HDD_ID";
type = "disk";
content = {
type = "gpt";
partitions = {
data = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/data";
};
};
};
};
};
};
};
};
}
@@ -33,4 +33,53 @@ _: {
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
flake.nixosModules.hardware-configuration-desktop =
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = ["vmd" "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/14bcd132-b4a3-46f2-ac35-3497340de4b2";
fsType = "btrfs";
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/14bcd132-b4a3-46f2-ac35-3497340de4b2";
fsType = "btrfs";
options = ["subvol=home"];
};
fileSystems."/nix" = {
device = "/dev/disk/by-uuid/14bcd132-b4a3-46f2-ac35-3497340de4b2";
fsType = "btrfs";
options = ["subvol=nix"];
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/BAB4-34F6";
fsType = "vfat";
options = ["fmask=0077" "dmask=0077"];
};
swapDevices = [
{device = "/dev/disk/by-uuid/ce6f9a68-0517-4f8a-b375-66f2173efe59";}
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
}
+8
View File
@@ -0,0 +1,8 @@
_: {
flake.nixosModules.hdd = {
fileSystems."/home/tomasr/hdd" = {
device = "/dev/disk/by-uuid/cbe24588-e04f-4ffc-ba44-6fe6ec6d6850";
fsType = "ext4";
};
};
}
+7
View File
@@ -0,0 +1,7 @@
_: {
flake.nixosModules.nvidia = _: {
hardware.graphics.enable = true;
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia.open = true;
};
}
+7
View File
@@ -0,0 +1,7 @@
{self, ...}: {
flake.nixosModules.performance-desktop = {pkgs, ...}: {
environment.systemPackages = [
self.packages.${pkgs.system}.custom-performance
];
};
}
+154
View File
@@ -0,0 +1,154 @@
# Note : i should add a way to communicate, annote which commits i should cherry-pick between computers
{
inputs,
self,
...
}: {
flake.nixosConfigurations.desktop = inputs.nixpkgs.lib.nixosSystem {
#system = "x86_64-linux";
specialArgs = {
inherit (self) pkgs-unstable pkgs-master;
};
modules = with self.nixosModules; [
# important do not remove
home-manager-desktop
desktop
{nixpkgs.pkgs = self.pkgs;}
# keep this alphabetically organised
anki
audioAndMedia
autoCleanup-desktop
autoUpdate-desktop
bluetooth
bootloader
browsers
caelestia
development
documentation
disk # this only installs some disk utilities. disko will format the drives
fonts
games
hardware-configuration-desktop
hdd
hledger
hledger-desktop
hyprland
IO
kdrive-desktop # we will setup this later
latex
ly
mathematics
#mullvad #temporarly broken
networking
nixUtils
notifications
nvidia
office
ollama
otherUtils
performance-desktop
printer
rss
udev
user
];
};
flake.homeModules.desktop = {...}: {
imports = with self.homeModules; [
inputs.caelestia-shell.homeManagerModules.default
anki
caelestia
caelestia-desktop
cursor
development
eza
fastfetch
gtk
hyprland
hyprland-desktop
kitty
librewolf
#mullvad #temporarly broken
neovim
nix-git-cherry-picker-desktop
desktop-notewrapper
oh-my-zsh
ripgrep
rofi
sbb-tui
ssh
swaync # used in performance mode
thunderbird
tomasr
tmux
vivify
waybar-minimal # used in performance mode
zoxide
zsh
zsh-desktop
];
};
flake.nixosModules.desktop = {pkgs, ...}: {
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "25.11"; # Did you read the comment?
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
environment.systemPackages = [
self.packages.${pkgs.system}.custom-performance
];
};
flake.nixosModules.home-manager-desktop = {pkgs, ...}: {
imports = [
inputs.home-manager.nixosModules.default # import official home-manager NixOS module
];
# Warning. Git is used in case I break everything up. It already saved me once
environment.systemPackages = [pkgs.git];
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
extraSpecialArgs = {
inherit (self) pkgs-unstable pkgs-master;
inherit self;
};
};
users.users.tomasr = {
isNormalUser = true;
};
home-manager.users.tomasr = self.homeModules.desktop;
};
# this is a copy of what is in laptop.nix
/*
flake.homeModules.tomasr = _: {
home.username = "tomasr";
home.homeDirectory = "/home/tomasr";
home.sessionVariables = {
EDITOR = "neovim";
TERMINAL = "kitty";
};
# Required for Home Manager
home.stateVersion = "25.11"; # match your Home Manager release
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
# introduces backwards incompatible changes.
#
# You should not change this value, even if you update Home Manager. If you do
# want to update the value, then make sure to first check the Home Manager
# release notes.
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
};
*/
}
+22 -7
View File
@@ -6,7 +6,7 @@
flake.nixosConfigurations.laptop = inputs.nixpkgs.lib.nixosSystem {
#system = "x86_64-linux";
specialArgs = {
inherit (self) pkgs-unstable;
inherit (self) pkgs-unstable pkgs-local pkgs-master;
};
modules = with self.nixosModules; [
# important do not remove
@@ -20,7 +20,7 @@
autoUpdate-laptop
battery-laptop
bluetooth
bootloader-laptop
bootloader
browsers
caelestia
development
@@ -28,21 +28,27 @@
disk
disk-laptop
fonts
games
gitBackup
hardware-configuration-laptop
hardwareUtils-laptop
hledger
hledger-laptop
hyprland
IO
kdrive
kdrive-laptop
latex
ly
mullvad
mathematics
#mullvad #temporarly broken
networking
nixUtils-laptop
nixUtils
notifications
office
#ollama
otherUtils
printer
rss
udev
user
];
@@ -52,7 +58,9 @@
inputs.caelestia-shell.homeManagerModules.default
anki
caelestia
caelestia-laptop
cursor
development
eza
fastfetch
git
@@ -61,16 +69,21 @@
hyprland-laptop
kitty
librewolf
mullvad
#mullvad #temporarly broken
neovim
nix-git-cherry-picker-laptop
laptop-notewrapper
oh-my-zsh
ripgrep
rofi
sbb-tui
ssh
swaync # used in performance mode
thunderbird
tmux
tomasr
vivify
waybar-minimal # used in performance mode
zoxide
zsh
zsh-laptop
@@ -101,7 +114,7 @@
useUserPackages = true;
extraSpecialArgs = {
inherit (self) pkgs-unstable;
inherit (self) pkgs-unstable pkgs-local pkgs-master;
inherit self;
};
};
@@ -118,6 +131,8 @@
home.sessionVariables = {
EDITOR = "neovim";
TERMINAL = "kitty";
SYSTEMD_PAGER = "cat";
PAGER = "cat";
};
# Required for Home Manager
+24 -19
View File
@@ -27,24 +27,29 @@ _: {
services.upower.enable = true;
# removes need for password for nixos-rebuild
security.sudo.extraRules = [
{
users = ["tomasr"];
commands = [
{
command = "/run/current-system/sw/bin/nixos-rebuild";
options = ["NOPASSWD"];
}
{
command = "${pkgs.nixos-rebuild}/bin/nixos-rebuild";
options = ["NOPASSWD"];
}
{
command = "${pkgs-unstable.nixos-rebuild}/bin/nixos-rebuild";
options = ["NOPASSWD"];
}
];
}
];
security.sudo = {
extraRules = [
{
users = ["tomasr"];
commands = [
{
command = "/run/current-system/sw/bin/nixos-rebuild";
options = ["NOPASSWD"];
}
{
command = "${pkgs.nixos-rebuild}/bin/nixos-rebuild";
options = ["NOPASSWD"];
}
{
command = "${pkgs-unstable.nixos-rebuild}/bin/nixos-rebuild";
options = ["NOPASSWD"];
}
];
}
];
extraConfig = ''
Defaults pwfeedback
'';
};
};
}
@@ -1,18 +1,19 @@
_: {
perSystem = {pkgs, ...}: {
# fzf librewolf profile selector
packages.custom-librewolfprofiles = pkgs.writeShellApplication {
name = "custom-librewolfprofiles";
packages.custom-browserprofiles = pkgs.writeShellApplication {
name = "custom-browserprofiles";
runtimeInputs = with pkgs; [
zsh
fzf
tor-browser
];
text = ''
# List of profiles
profiles=("work" "other" "private window")
profiles=("work" "other" "private window" "tor-browser")
# Use fzf to select
selected=$(printf "%s\n" "''${profiles[@]}" | fzf --height 6 --reverse --prompt="Select LibreWolf profile:")
selected=$(printf "%s\n" "''${profiles[@]}" | fzf --height 6 --reverse --prompt="Select browser profile:")
# If user cancels, exit
[[ -z "$selected" ]] && exit 0
@@ -20,10 +21,12 @@ _: {
# Launch LibreWolf detached, keeping environment
if [[ "$selected" == "private window" ]]; then
setsid librewolf --private-window --no-remote >/dev/null 2>&1 &
pkill -f "kitty.*Select LibreWolf profile"
pkill -f "kitty.*Select browser profile"
elif [[ "$selected" == "tor-browser" ]]; then
setsid tor-browser >/dev/null 2>&1 & pkill -f "kitty.*Select browser profile"
else
setsid librewolf -P "$selected" --no-remote >/dev/null 2>&1 &
pkill -f "kitty.*Select LibreWolf profile"
pkill -f "kitty.*Select browser profile"
fi
# Exit the kitty terminal after selection
@@ -1,44 +0,0 @@
_: {
perSystem = {
pkgs,
pkgs-unstable,
...
}: {
packages.sbb-tuiManuallyDerived = pkgs-unstable.buildGoModule (finalAttrs: {
pname = "sbb-tui";
version = "1.14.2";
__structuredAttrs = true;
src = pkgs.fetchFromGitHub {
owner = "Necrom4";
repo = "sbb-tui";
tag = "v${finalAttrs.version}";
hash = pkgs.lib.fakeHash;
};
vendorHash = "sha256-K4DOu3rfSlKAa5JNKCzWWpnWZlXXxtN5Po7p1Spqe1w=";
ldflags = [
"-s"
"-w"
"-X main.version=${finalAttrs.version}"
];
allowGoReference = true;
doCheck = true;
nativeCheckInputs = [pkgs.versionCheckHook];
passthru.updateScript = pkgs.nix-update-script {};
meta = {
description = "TUI client for Switzerland's public transport timetables, inspired by SBB/CFF/FFS app";
homepage = "https://github.com/Necrom4/sbb-tui";
license = pkgs.lib.licenses.mit;
platforms = pkgs.lib.platforms.unix;
maintainers = with pkgs.lib.maintainers; [tomasrivera];
mainProgram = "sbb-tui";
};
});
};
}
+1
View File
@@ -3,6 +3,7 @@
imports = [
# adds home-manager options to flake-parts
inputs.home-manager.flakeModules.home-manager
inputs.disko.flakeModules.default
];
config.systems = [
-8
View File
@@ -1,8 +0,0 @@
{
systems = [
"x86_64-linux"
#"aarch64-linux"
#"x86_64-darwin"
#"aarch64-darwin"
];
}
+17
View File
@@ -0,0 +1,17 @@
{inputs, ...}: {
flake.nixosModules.agenix = {pkgs, ...}: {
environment.systemPackages = [
inputs.agenix.packages.${pkgs.system}.default
pkgs.age
];
age.identityPaths = [
"/etc/ssh/ssh_host_ed25519_key"
];
age.secrets.ntfy = {
file = ../../secrets/ntfy.age;
owner = "tomasr";
group = "users";
mode = "0400";
};
};
}
+2
View File
@@ -19,6 +19,8 @@
self.packages.${pkgs.system}.custom-changeAudioOutput
kdePackages.okular
kdePackages.dolphin
kdePackages.dolphin-plugins
kdePackages.ark
pulseaudio # sound server
playerctl # controls media player
pavucontrol # PulseAudio Volume Control
+161 -9
View File
@@ -2,8 +2,12 @@
flake.nixosModules.autoCleanup-laptop = {
pkgs,
pkgs-unstable,
config,
...
}: {
age.secrets.ntfy = {
file = ../../secrets/ntfy.age;
};
# Ensure your script is available system-wide
environment.systemPackages = [
self.packages.${pkgs.system}.custom-cleanNix-laptop
@@ -17,6 +21,68 @@
description = "NixOS configuration auto cleanup";
serviceConfig = {
Environment = [
"NTFY_SECRET=${config.age.secrets.ntfy.path}"
];
Type = "oneshot";
ExecStart = "/run/current-system/sw/bin/custom-cleanNix";
# safety for long rebuilds
TimeoutStartSec = "45min";
TimeoutStopSec = "10min";
# avoid overlap
RemainAfterExit = true;
# tweaks that should make the system run normally during the rebuilds
Nice = 10;
IOSchedulingClass = "best-effort";
IOSchedulingPriority = 7;
};
};
# Systemd USER timer
systemd.user.timers.custom-cleanNix = {
wantedBy = ["timers.target"];
timerConfig = {
OnCalendar = "Sat *-*-* 20:00:00"; # runs saturday night. If for whatever reason something breaks. I have whole sunday to fix it.
Persistent = true; # if it happens during shutted down
# avoids thundering herd on boot
RandomizedDelaySec = "2h";
};
};
};
## Desktop
flake.nixosModules.autoCleanup-desktop = {
pkgs,
pkgs-unstable,
config,
...
}: {
age.secrets.ntfy = {
file = ../../secrets/ntfy.age;
};
# Ensure your script is available system-wide
environment.systemPackages = [
self.packages.${pkgs.system}.custom-cleanNix-desktop
pkgs-unstable.statix
];
users.users.tomasr = {
linger = true; # lingering is required
};
systemd.user.services.custom-cleanNix = {
description = "NixOS configuration auto cleanup";
serviceConfig = {
Environment = [
"NTFY_SECRET=${config.age.secrets.ntfy.path}"
];
Type = "oneshot";
ExecStart = "/run/current-system/sw/bin/custom-cleanNix";
@@ -56,14 +122,18 @@
runtimeInputs = with pkgs; [
git
nixos-rebuild
matrix-commander-rs
curl
libnotify
alejandra
deadnix
statix
];
text = ''
set -e
set -ex
# shellcheck disable=SC1090
source "$NTFY_SECRET"
FLAKE_DIR="/home/tomasr/nixos"
FLAKE="$FLAKE_DIR#laptop"
@@ -87,7 +157,7 @@
alejandra "$FLAKE_DIR" # formats the config
echo "--------------------------------------------------------------"
if sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule
if /run/wrappers/bin/sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule
if ! git -C "$FLAKE_DIR" diff --quiet HEAD; then
git -C "$FLAKE_DIR" add -A
@@ -96,9 +166,11 @@
notify-send "Nix auto cleanup" "Everything OK"
matrix-commander-rs --verbose -m "Nix auto cleanup. Everything OK.<br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
--html \
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
curl \
-u ":$NTFY_TOKEN" \
-d "Everything OK" \
-H "Title: Laptop Nix auto cleanup" \
"$NTFY_SERVER/Alerts"
else
notify-send "Nix auto cleanup" "No changes"
git -C "$FLAKE_DIR" push
@@ -109,9 +181,89 @@
notify-send -u critical "Nix auto cleanup" "FAILED"
matrix-commander-rs --verbose -m "Nix auto cleanup failed.<br>Error: <pre>$ERROR_MSG</pre><br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
--html \
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
curl \
-u ":$NTFY_TOKEN" \
-d "Nix auto cleanup failed. Error: $ERROR_MSG" \
-H "Title: Laptop Nix auto cleanup" \
"$NTFY_SERVER/Alerts"
git -C "$FLAKE_DIR" reset --hard "pre-cleanup-$TIME"
fi
git -C "$FLAKE_DIR" tag -d "pre-cleanup-$TIME" # removes the tag
rm -f "$ERROR_FILE"
'';
};
packages.custom-cleanNix-desktop = pkgs.writeShellApplication {
name = "custom-cleanNix";
runtimeInputs = with pkgs; [
git
nixos-rebuild
curl
libnotify
alejandra
deadnix
statix
];
text = ''
set -ex
# shellcheck disable=SC1090
source "$NTFY_SECRET"
FLAKE_DIR="/home/tomasr/nixos"
FLAKE="$FLAKE_DIR#desktop"
TIME=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
ERROR_FILE=$(mktemp)
# snapshot current state
git -C "$FLAKE_DIR" add -A
git -C "$FLAKE_DIR" commit --allow-empty -m "snapshot pre-cleanup-$TIME"
git -C "$FLAKE_DIR" tag "pre-cleanup-$TIME" HEAD
# the echos are to separate what each one is doing. Just for curiosity
echo "deadnix scans your Nix code and removes or reports unused (dead) variables and bindings"
deadnix --edit "$FLAKE_DIR" # removes unused code
echo "--------------------------------------------------------------"
echo "statix lints your Nix code to find stylistic issues, bad patterns, and potential mistakes."
statix fix "$FLAKE_DIR" # check other linting issues
echo "--------------------------------------------------------------"
echo "alejandra formats your Nix code consistently according to a strict, opinionated style."
alejandra "$FLAKE_DIR" # formats the config
echo "--------------------------------------------------------------"
if /run/wrappers/bin/sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule
if ! git -C "$FLAKE_DIR" diff --quiet HEAD; then
git -C "$FLAKE_DIR" add -A
git -C "$FLAKE_DIR" commit -m "Auto: cleanup-$TIME"
git -C "$FLAKE_DIR" push
notify-send "Nix auto cleanup" "Everything OK"
curl \
-u ":$NTFY_TOKEN" \
-d "Everything OK" \
-H "Title: Desktop Nix auto cleanup" \
"$NTFY_SERVER/Alerts"
else
notify-send "Nix auto cleanup" "No changes"
git -C "$FLAKE_DIR" push
fi
else
ERROR_MSG=$(cat "$ERROR_FILE")
notify-send -u critical "Nix auto cleanup" "FAILED"
curl \
-u ":$NTFY_TOKEN" \
-d "Nix auto cleanup failed. Error: $ERROR_MSG" \
-H "Title: Desktop Nix auto cleanup" \
"$NTFY_SERVER/Alerts"
git -C "$FLAKE_DIR" reset --hard "pre-cleanup-$TIME"
fi
+142 -7
View File
@@ -1,5 +1,12 @@
{self, ...}: {
flake.nixosModules.autoUpdate-laptop = {pkgs, ...}: {
flake.nixosModules.autoUpdate-laptop = {
pkgs,
config,
...
}: {
age.secrets.ntfy = {
file = ../../secrets/ntfy.age;
};
# Ensure your script is available system-wide
environment.systemPackages = [
self.packages.${pkgs.system}.custom-autoupdate-laptop
@@ -44,6 +51,60 @@
};
};
};
## desktop
flake.nixosModules.autoUpdate-desktop = {
pkgs,
config,
...
}: {
age.secrets.ntfy = {
file = ../../secrets/ntfy.age;
};
# Ensure your script is available system-wide
environment.systemPackages = [
self.packages.${pkgs.system}.custom-autoupdate-desktop
];
users.users.tomasr = {
linger = true; # lingering is required
};
systemd.user.services.custom-autoupdate = {
description = "NixOS flake auto update";
serviceConfig = {
Type = "oneshot";
ExecStart = "/run/current-system/sw/bin/custom-autoupdate";
# safety for long rebuilds
TimeoutStartSec = "45min";
TimeoutStopSec = "10min";
# avoid overlap
RemainAfterExit = true;
# tweaks that should make the system run normally during the rebuilds
Nice = 10;
IOSchedulingClass = "best-effort";
IOSchedulingPriority = 7;
};
};
# Systemd USER timer
systemd.user.timers.custom-autoupdate = {
wantedBy = ["timers.target"];
timerConfig = {
OnCalendar = "Fri *-*-* 20:00:00"; # runs friday night. If for whatever reason something breaks. I have whole week-end to fix it.
Persistent = true; # if it happens during shutted down
# avoids thundering herd on boot
RandomizedDelaySec = "2h";
};
};
};
perSystem = {pkgs, ...}: {
packages.custom-autoupdate-laptop = pkgs.writeShellApplication {
name = "custom-autoupdate";
@@ -56,6 +117,8 @@
];
text = ''
# shellcheck disable=SC1090
source "$NTFY_SECRET"
set -e
FLAKE_DIR="/home/tomasr/nixos"
@@ -81,9 +144,11 @@
notify-send "Flake autoupdate" "Rebuild OK"
matrix-commander-rs --verbose -m "Flake rebuild succesfull.<br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
--html \
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
curl \
-u ":$NTFY_TOKEN" \
-d "Laptop Flake rebuild successful" \
-H "Title: Flake autoupdate" \
"$NTFY_SERVER/Alerts"
else
notify-send "Flake autoupdate" "No changes"
git -C "$FLAKE_DIR" push
@@ -94,9 +159,79 @@
notify-send -u critical "Flake autoupdate" "FAILED"
matrix-commander-rs --verbose -m "Flake rebuild failed.<br>Error: <pre>$ERROR_MSG</pre><br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
--html \
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
curl \
-u ":$NTFY_TOKEN" \
-d "Laptop Flake rebuild failed. Error: $ERROR_MSG" \
-H "Title: Flake autoupdate FAILED" \
-H "Priority: urgent" \
"$NTFY_SERVER/Alerts"
git -C "$FLAKE_DIR" reset --hard "pre-autoupdate-$TIME"
fi
git -C "$FLAKE_DIR" tag -d "pre-autoupdate-$TIME" # removes the tag
rm -f "$ERROR_FILE"
'';
};
packages.custom-autoupdate-desktop = pkgs.writeShellApplication {
name = "custom-autoupdate";
runtimeInputs = with pkgs; [
git
nixos-rebuild
matrix-commander-rs
libnotify
];
text = ''
set -e
FLAKE_DIR="/home/tomasr/nixos"
FLAKE="$FLAKE_DIR#desktop"
TIME=$(date -u +"%Y-%m-%dT%H-%M-%SZ")
ERROR_FILE=$(mktemp)
# snapshot current state
git -C "$FLAKE_DIR" add -A
git -C "$FLAKE_DIR" commit --allow-empty -m "snapshot pre-autoupdate-$TIME"
git -C "$FLAKE_DIR" tag "pre-autoupdate-$TIME" HEAD
# update lock only
nix flake update --flake "$FLAKE_DIR"
if sudo /run/current-system/sw/bin/nixos-rebuild switch --flake "$FLAKE" 2> "$ERROR_FILE"; then # use /run/.../bin/ uses the sudoless rule
if ! git -C "$FLAKE_DIR" diff --quiet -- flake.lock; then
git -C "$FLAKE_DIR" add flake.lock
git -C "$FLAKE_DIR" commit -m "flake.lock: autoupdate-$TIME"
git -C "$FLAKE_DIR" push
notify-send "Flake autoupdate" "Rebuild OK"
curl \
-u ":$NTFY_TOKEN" \
-d "Flake rebuild successful" \
-H "Title: Desktop Flake autoupdate" \
"$NTFY_SERVER/Alerts"
else
notify-send "Flake autoupdate" "No changes"
git -C "$FLAKE_DIR" push
fi
else
ERROR_MSG=$(cat "$ERROR_FILE")
notify-send -u critical "Flake autoupdate" "FAILED"
curl \
-u ":$NTFY_TOKEN" \
-d "Flake rebuild failed. Error: $ERROR_MSG" \
-H "Title: Desktop Flake autoupdate FAILED" \
-H "Priority: urgent" \
"$NTFY_SERVER/Alerts"
git -C "$FLAKE_DIR" reset --hard "pre-autoupdate-$TIME"
fi
+20
View File
@@ -0,0 +1,20 @@
_: {
flake.nixosModules.hledger = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
hledger
hledger-ui
hledger-web
asciinema # used for some hledger demos
];
};
flake.nixosModules.hledger-laptop = _: {
environment.variables = {
LEDGER_FILE = "/home/tomasr/kdrive/Budget/hledger.journal";
};
};
flake.nixosModules.hledger-desktop = _: {
environment.variables = {
LEDGER_FILE = "/home/tomasr/hdd/kdrive/Budget/hledger.journal";
};
};
}
@@ -2,44 +2,27 @@
flake.nixosModules.notifications = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
libnotify # Library that sends desktop notifications to a notification daemon
socat # Utility for bidirectional data transfer between two independent data channels (used to communicate between hyprland and swww to change wallpapers dinamically)
matrix-commander-rs # matrix client used to send notifications from scripts to my phone
socat # Utility for bidirectional data transfer between two independent data channels (used to communicate between hyprland and awww to change wallpapers dinamically)
# battery notifications
self.packages.${pkgs.system}.custom-batterynotify
self.packages.${pkgs.system}.custom-batterywarning
# checks if matrix-commander-rs is installed and logged in
self.packages.${pkgs.system}.custom-checkMatrix
self.packages.${pkgs.system}.custom-gitnotify # checks if git is set up
self.packages.${pkgs.system}.custom-checkKdrive # check if kdrive is set up with rclone
zoom-us
];
};
perSystem = {pkgs, ...}: {
packages.custom-checkMatrix = pkgs.writeShellApplication {
name = "custom-checkMatrix";
runtimeInputs = with pkgs; [
matrix-commander-rs
libnotify
];
text = ''
expected="@totorile1:unredacted.org"
current="$(matrix-commander-rs --whoami | tr -d '\n')"
if [ "$current" != "$expected" ]; then
notify-send "matrix-commander-rs" \
"You are not logged in as @totorile1:unredacted.org\nLog:\n$current"
fi
'';
};
packages.custom-gitnotify = pkgs.writeShellApplication {
name = "custom-gitnotify";
runtimeInputs = with pkgs; [
git
libnotify
curl
];
text = ''
# shellcheck disable=SC1091
source /run/agenix/ntfy
# Check if git is installed
if ! command -v git >/dev/null 2>&1; then
exit 0
@@ -52,9 +35,10 @@
notify-send \
"Git not configured" \
"Set your identity\n or remove this warning by removing the custom-gitnotify line in\n ~/nixos/modules/applications/hyprland.nix"
matrix-commander-rs --verbose -m "Git not configured.<br>Set your identify or remove this warning by removing the custom-gitnotify in ~/nixos/modules/applications/hyprland.nix<br><a href=\"https://matrix.to/#/@notificationbot_0000:matrix.org\">@notificationbot_0000</a>" \
--html \
-r "\!7j-78_02dHROeLj4Ns8F12eo4IiZGv4zNsQ_1-WlyIU"
curl \
-u ":$NTFY_TOKEN" \
-d "Git not configured" \
"$NTFY_SERVER/Alerts"
fi
'';
};
+28 -2
View File
@@ -1,4 +1,4 @@
_: {
{inputs, ...}: {
flake.nixosModules.development = {
pkgs,
pkgs-unstable,
@@ -17,19 +17,45 @@ _: {
]))
python313Packages.pygments # used for ccat (comment of colorize plugin from oh-my-zsh)
pkg-config
nixpkgs-review
gdb
raylib
glfw # raylib and some dependecies
gnumake
go
direnv
git
gh
cling # c interpreter used for coding
# lsp
clang-tools
python311Packages.python-lsp-server
python314Packages.python-lsp-server
ltex-ls-plus
pylint
black
gnupg
pinentry-curses
inputs.nixpkgs-notifier.packages.${pkgs.system}.default
inputs.patent.packages.${pkgs.system}.default
];
};
flake.homeModules.development = _: {
home.file.".config/nixpkgs-notifier/config.json" = {
enable = true;
text = ''
{
"configTime": 3600,
"configFetchTime": 1,
"localNotify": true,
"matrix": {
"enable": true,
"room": "!BXRRokBmEdNOyYdfOF:matrix.org",
"ping": true,
"userPing": "@notificationbot_0000",
"userPingServer": "matrix.org"
}
}
'';
};
};
}
+1 -1
View File
@@ -3,7 +3,7 @@
in {
flake.nixosModules.documentation = {pkgs, ...}: {
# unfortunatly this adds a lot of computation when nix rebuilds
documentation.man.generateCaches = true; # used for the man script
documentation.man.cache.enable = true; # used for the man script
environment.pathsToLink = [
# see https://wiki.nixos.org/wiki/Documentation_Gaps#How_do_manpages_work?_Or:_environment.pathsToLink_and_buildEnv
+119
View File
@@ -0,0 +1,119 @@
{self, ...}: {
flake.nixosModules.gitBackup = {
pkgs,
config,
...
}: {
age.secrets.ntfy = {
file = ../../secrets/ntfy.age;
};
environment.systemPackages = [
self.packages.${pkgs.system}.custom-gitBackup
];
systemd.user.services.custom-gitBackup = {
description = "Backup selected git repos";
serviceConfig = {
Type = "oneshot";
Environment = [
"NTFY_SECRET=${config.age.secrets.ntfy.path}"
];
ExecStart = "/run/current-system/sw/bin/custom-gitBackup";
TimeoutStartSec = "45min";
TimeoutStopSec = "10min";
RemainAfterExit = true;
Nice = 10;
IOSchedulingClass = "best-effort";
IOSchedulingPriority = 7;
};
};
# Systemd USER timer
systemd.user.timers.custom-gitBackup = {
wantedBy = ["timers.target"];
timerConfig = {
OnCalendar = "Thu *-*-* 12:00:00";
Persistent = true; # if it happens during shutted down
RandomizedDelaySec = "20min";
};
};
};
perSystem = {pkgs, ...}: {
packages.custom-gitBackup = pkgs.writeShellApplication {
name = "custom-gitBackup";
runtimeInputs = with pkgs; [
rsync
curl
libnotify
self.packages.${pkgs.system}.custom-checkKdrive
];
text = ''
# shellcheck disable=SC1090
source "$NTFY_SECRET"
# checks if kdrive is available
custom-checkKdrive
REPOS=(
"https://github.com/tomasriveral/nixos.git"
"https://github.com/tomasriveral/notewrapper.git"
"https://github.com/tomasriveral/fractal-cli.git"
"https://github.com/tomasriveral/boids.git"
"https://github.com/tomasriveral/nixpkgs-notifier.git"
"https://github.com/tomasriveral/Nix-Git-Cherry-Picker.git"
"https://github.com/tomasriveral/ReSSPublica.git"
)
LOCAL_BACKUP_DIR="$HOME/.gitBackups"
CLOUD_DIR="$HOME/kdrive/Code/gitBackups"
# Create backup directories if they don't exist
mkdir -p "$LOCAL_BACKUP_DIR"
mkdir -p "$CLOUD_DIR"
notify_error() {
local message="$1"
notify-send "Git Backup Failed" "$message"
curl \
-u ":$NTFY_TOKEN" \
-d "Git backup failed. Error: $message" \
-H "Title: Git Backup" \
"$NTFY_SERVER/Alerts"
}
for REPO in "''${REPOS[@]}"; do
# Extract repo name (without .git)
REPO_NAME=$(basename "$REPO" .git)
LOCAL_REPO_PATH="$LOCAL_BACKUP_DIR/$REPO_NAME.git"
if [ ! -d "$LOCAL_REPO_PATH" ]; then
# Clone mirror if it doesn't exist
echo "Cloning $REPO..."
git clone --mirror "$REPO" "$LOCAL_REPO_PATH" || { notify_error "Failed to clone $REPO"; continue; }
else
# Update existing mirror
echo "Updating $REPO..."
cd "$LOCAL_REPO_PATH" || { notify_error "Cannot enter $LOCAL_REPO_PATH"; continue; }
git remote update || { notify_error "Failed to update $REPO"; continue; }
fi
# Rsync to cloud directory (only changes, preserve permissions)
echo "Syncing $REPO_NAME to cloud..."
rsync -a --delete "$LOCAL_REPO_PATH/" "$CLOUD_DIR/$REPO_NAME/" || { notify_error "Failed to rsync $REPO_NAME"; continue; }
done
echo "All backups completed."
'';
};
};
}
+34
View File
@@ -0,0 +1,34 @@
{inputs, ...}: {
flake.homeModules.nix-git-cherry-picker-laptop = {pkgs, ...}: {
home.packages = [
inputs.nix-git-cherry-picker.packages.${pkgs.system}.default
];
home.file.".config/nix-git-cherry-picker/config.json" = {
enable = true;
text = ''
{
"localBranch": "laptop",
"remoteBranch": "desktop",
"nixConfigPath": "/home/tomasr/nixos/"
}
'';
force = true;
};
};
flake.homeModules.nix-git-cherry-picker-desktop = {pkgs, ...}: {
home.packages = [
inputs.nix-git-cherry-picker.packages.${pkgs.system}.default
];
home.file.".config/nix-git-cherry-picker/config.json" = {
enable = true;
text = ''
{
"localBranch": "desktop",
"remoteBranch": "laptop",
"nixConfigPath": "/home/tomasr/nixos/"
}
'';
force = true;
};
};
}
+15 -2
View File
@@ -1,4 +1,8 @@
{inputs, ...}: {
{
inputs,
self,
...
}: {
flake.nixosModules.nixUtils-laptop = _: {
# nixpkgs-review crashed my laptop multiple times. We must reduce how much ressources it can take.
# for reference, my laptop is a 12 core ryzen 7
@@ -6,10 +10,18 @@
nix.settings.cores = 6;
};
flake.nixosModules.nixUtils = {pkgs-unstable, ...}: {
# Optimise the nix store
nix.optimise = {
automatic = true;
persistent = true;
randomizedDelaySec = "30min";
dates = "Thu *-*-* 16:00:00";
};
# Garbage collector of generations
nix.gc = {
automatic = true;
dates = "weekly";
dates = "Wed *-*-* 16:00:00";
persistent = true;
options = "--delete-older-than 7d"; # every week delete generations older than a month
};
@@ -32,6 +44,7 @@
vimPluginsUpdater # used for building plugins
nix-index
statix
self.packages.${pkgs-unstable.system}.custom-trimmer
];
};
perSystem = {pkgs, ...}: {
+6
View File
@@ -3,6 +3,12 @@ _: {
environment.systemPackages = with pkgs; [
libreoffice
birdtray
kdePackages.korganizer
#needed for korganizer
kdePackages.akonadi
kdePackages.akonadi-calendar
kdePackages.akonadi-calendar-tools
];
programs.kde-pim.kontact = true; # needed for korganizer
};
}
+3 -6
View File
@@ -1,11 +1,7 @@
{self, ...}: {
flake.nixosModules.otherUtils =
# try to keep packages here at a minium. Preferably use a dedicated file
{
pkgs,
pkgs-unstable,
...
}: {
{pkgs, ...}: {
environment.systemPackages = with pkgs; [
gnome-calculator
snapshot
@@ -22,7 +18,8 @@
usbutils # used for lsusb
self.packages.${pkgs.system}.custom-tomato
self.packages.${pkgs.system}.custom-syllabes
pkgs-unstable.bitwarden-desktop
# Electron 39 EOL. https://github.com/bitwarden/clients/pull/20448 should move it to 41. For the moment use the browser extension
#pkgs-unstable.bitwarden-desktop
fluffychat # matrix client
];
};
+7
View File
@@ -0,0 +1,7 @@
_: {
flake.nixosModules.rss = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
newsflash
];
};
}
+1 -1
View File
@@ -125,4 +125,4 @@
}
],
"rollout_threshold_seed": null
}
}
BIN
View File
Binary file not shown.
+9
View File
@@ -0,0 +1,9 @@
let
backupAgeKey = "age1y4lhpk7awhjyu42p46ulg5q2c49r2lnwu8tyyk4ejj6jztd64uksfhd670";
laptopHostKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJCsewl8ZXXMjRyO20cBIiuW2gA4mGoMkxQ0dcMyNidR root@nixos";
in {
"ntfy.age".publicKeys = [
backupAgeKey
laptopHostKey
];
}
+8
View File
@@ -0,0 +1,8 @@
I am testing the tool ngcp i created. If this file disapears. It means I coded it wrong.
The problem before was that it did:
1. cherry pick
2. push
I didn't pulled changed before cherry picking
-59
View File
@@ -1,59 +0,0 @@
audacity.x86_64
dolphin.x86_64 may be customized or nautilus cust
ollama.x86_64
plymouth.x86_64
quickshell.x86_64
raylib-devel.x86_64
some notification daemon 0.12-32.fc43
tor.x86_64
torbrowser-launcher.noarch
maybe configure a bit ripgrep? majuscules
organize packages in pkgs list
why frameworktooltui settings dont apply?
things to do?
(maybe something periodic) deadnix and aljandra to clean up the repo
Review windowrules when only one window
setup lsp in neovim
Setup obsidian (plugsins, etc.)
setup kdrive as a git remote
setup tampermonkey
with quickshell:
fix player control icons
give battery percentage
maybe modify some of the images (like the notification body)
do a full bar (no ugly empty space at top)
add brightness slider
maybe change sound icon by volume level
maybe incorpore the fast fourier transform code
maybe write some notification center -- done. needs some style
battery dashboard https://www.reddit.com/r/hyprland/comments/1rkiajd/a_beautiful_battery_system_dashboard_on_hyprland/
have a small terminal popup for some usages (like custom-launch)
some meteo center with dates, etc
show name of the app
make the connection tray prettier? Maybe with a full rewrite
maybe some kind of overview?
show battery percentage
see what people did with quickshell and take inspiration
work on quickshell color palette to match gruvbox