311 Commits
Author SHA1 Message Date
andreas 7c00c133ab transition to nixos stable 2026-10-17 06:50:58 +02:00
andreas 3062ef1608 update millennium 2026-10-15 15:08:12 +02:00
andreas ac7a47c26a module for recovering shitty realtek controller when it gets stuck in bugged power state 2026-10-15 10:48:08 +02:00
andreas 74d3d6870d WIP 2026-10-15 08:52:31 +02:00
andreas ac9eeb1f1c enable millennium for steam 2026-09-30 19:54:22 +02:00
andreas 666b7ab737 move comment to appropriate block 2026-09-30 19:53:54 +02:00
andreas bcfada020b enable distrobox 2026-09-30 19:53:42 +02:00
andreas d79713972e don't disable power saving 2026-09-30 17:53:28 +02:00
andreas 441d029eb6 enable ptyxis terminal on gnome 2026-09-30 17:53:08 +02:00
andreas 17933af881 fix log spam 2026-09-30 15:40:46 +02:00
andreas c4693f0ee6 fix url handlers for steam 2026-09-30 02:27:58 +02:00
andreas 813e474bc1 add wp engine gui 2026-09-28 01:04:34 +02:00
andreas 333bed459d updated config for fresh install 2026-09-19 07:04:41 +02:00
andreas cd454434d7 add gnome compatible wallpaperengine 2026-09-18 12:25:28 +02:00
andreas e89ee3c559 patch low contrast icons 2026-09-18 12:24:49 +02:00
andreas 0dad448f97 WIP 2026-09-16 08:11:52 +02:00
andreas cc0cc15ee5 WIP 2026-09-16 08:11:41 +02:00
andreas 5596fb8a9c remove verbose messaging 2026-09-05 10:14:11 +02:00
andreas dce21780ac cursor patch 2026-09-05 10:12:37 +02:00
andreas 310fc047b2 verbose debug logging 2026-09-04 01:35:39 +02:00
andreas c9725d3b78 mutter tearing patches 2026-09-03 10:10:52 +02:00
andreas 777acf7503 plan 2026-09-03 06:43:34 +02:00
andreas e6fd27f8ee bump and remove GOL 2026-09-03 06:42:53 +02:00
andreas f14680dfbf delete hello test package 2026-09-03 06:19:21 +02:00
andreas ca050d08d3 update package hash 2026-09-03 06:17:32 +02:00
andreas d0f23a0e7f update package hash 2026-09-03 06:17:05 +02:00
andreas 1cdedee438 formatting 2026-09-03 06:16:57 +02:00
andreas eac6e5ca97 fix mullvad on latest nixpkgs 2026-09-03 06:16:41 +02:00
andreas 819cbd3606 fix deprecation warning 2026-09-03 06:16:01 +02:00
andreas 65e6e7f747 enable cinnamon 2026-08-29 00:22:16 +02:00
andreas 36dbc3229d add tigervnc import 2026-08-29 00:22:10 +02:00
andreas 2f3e8c14f2 shader compiler 2026-08-29 00:21:53 +02:00
andreas 14b6e989f6 gnome extensions 2026-08-29 00:21:40 +02:00
andreas 64324ab150 add vscode-modernized 2026-08-29 00:21:23 +02:00
andreas c56a82c0b1 delete mesa-gcc overlay 2026-08-29 00:21:10 +02:00
andreas 9e686b3f8d faugus 2026-08-29 00:20:57 +02:00
andreas a512855fa9 add cinnamon 2026-08-29 00:20:49 +02:00
andreas 4dbe74854f Merge branch 'stableconfig' into trunk 2026-05-30 09:47:56 +02:00
andreas 2a543c6e93 Switch to sddm to fix gdm regression causing plasma x11 to not work properly 2026-05-30 09:47:17 +02:00
andreas 3f68e02f6a add freecad 2026-05-30 09:42:27 +02:00
andreas 89e04df44a update lock 2026-05-28 17:36:07 +02:00
andreas d0546b20ea remove trilium-next-pr 2026-05-28 17:35:20 +02:00
andreas a652234c7c update flake lock 2026-05-28 17:18:18 +02:00
andreas b867dd12c4 remove unneeded triliumnext flake input 2026-05-28 17:18:12 +02:00
andreas 2fc09a965a upgraded mesa-gcc 2026-05-28 17:17:49 +02:00
andreas e3d7538fa3 "mbedtls" now points to "mbedtls_2", and mbedtls_2 has been removed. Removing overlay. 2026-05-28 17:17:12 +02:00
andreas d64b2f8d6d upgraded mesa with upstream libdrm 2026-05-28 17:16:11 +02:00
andreas 093623dad7 fonts 2026-05-12 23:56:20 +02:00
andreas f6c2c48c7d fonts 2026-05-12 23:56:13 +02:00
andreas b7c6a2fce5 WIP stuff 2026-05-12 23:56:04 +02:00
andreas a692c1353d bump flake and fix problems 2026-05-07 16:58:02 +02:00
andreas 589eefd527 upgrade mesa 2026-05-07 16:57:48 +02:00
andreas 981d351744 add blender 2026-04-29 11:31:04 +02:00
andreas 0fae6cfc06 update lockfile 2026-04-29 11:30:34 +02:00
andreas 0b47961483 add ; 2026-04-22 03:35:28 +02:00
andreas 01a512e3fd fix broken syntax 2026-04-22 03:35:15 +02:00
andreas 631b28d399 add ; 2026-04-22 03:34:35 +02:00
andreas 96045f57c4 migrate predevicecommands to initrd systemd service 2026-04-22 03:34:10 +02:00
andreas 86d717fad1 bump flake lock 2026-04-02 05:26:42 +02:00
andreas a7392b3c30 remove gcc 14 dependency 2026-04-02 05:25:32 +02:00
andreas e72154ab65 delete libvirt python fix and downgraded qemu-full to prevent recompilation every time 2026-04-02 05:25:13 +02:00
andreas 47acfb12ff specify mesa-git-unstable to specific rev rather than main 2026-04-02 04:26:41 +02:00
andreas 8a7229cea8 update nixpkgs 2026-04-02 04:21:35 +02:00
andreas 123b55cdf1 mullvad and firewall 2026-04-02 04:19:47 +02:00
andreas e4cd967f06 update steam package 2026-04-02 04:19:31 +02:00
andreas 715c3c07b5 gnome file sharing shit 2026-04-02 04:19:05 +02:00
andreas 64a464af49 fix realtek eee disablement 2026-03-26 04:16:20 +01:00
andreas 5c710e0cb6 enable hyprland option 2026-03-26 04:13:16 +01:00
andreas 26554b8261 remove vulkan icd hardcode and enable tearing 2026-03-26 04:11:20 +01:00
andreas 75cecb0386 override DP out on motherboard too 2026-03-22 05:27:48 +01:00
andreas 3d8f717c7a new edid 2026-03-22 05:27:25 +01:00
andreas 5807e0076a update mesa-git 2026-03-22 05:26:45 +01:00
andreas f80b6295ac wip - buildable state 2026-03-22 03:13:47 +01:00
andreas eb90b797df bump kernel 2026-03-22 03:12:26 +01:00
andreas ed06b07960 wip - buildable state 2026-03-22 03:10:21 +01:00
andreas bf7f6a1218 wip - buildable state 2026-03-22 03:04:07 +01:00
andreas 6d0f92fad6 switch out neofetch for hyfetch because it has been deprecated 2026-03-16 16:12:40 +01:00
andreas 164ed80931 firewall rules 2026-03-16 16:07:32 +01:00
andreas 4a9a71bad1 commit working state 2026-02-28 16:35:41 +01:00
andreas b9da82b956 attempt making pytorch work 2026-02-28 16:34:56 +01:00
andreas bb596a794e attempt making pytorch work 2026-02-28 16:34:38 +01:00
andreas 476cab8c9d forward 9090 to vm 2026-02-28 16:34:11 +01:00
andreas d57aeb9ef3 working passthrough support 2026-02-28 16:33:52 +01:00
andreas aaba57ee2f add nv gpu passthrough vm setup 2026-02-26 02:47:09 +01:00
andreas 2332cc1e9d fix linux-wallpaperengine launch params 2026-02-18 02:59:22 +01:00
andreas df06c641c2 add rivalcfg udev rules. 2026-02-18 02:59:08 +01:00
andreas 2880272e2a add rivalcfg 2026-02-18 02:57:50 +01:00
andreas d3896b5817 enable cs-tools 2026-02-18 02:57:41 +01:00
andreas 522d87f51d add cs-demo-manager appimage package, and group with postgresql for cs-tools module. 2026-02-18 02:57:25 +01:00
andreas 578f246519 working mesa-git 2026-02-12 23:54:34 +01:00
andreas 271658bf4d further tweaks 2026-02-12 20:16:32 +01:00
andreas fbe9f8b3ec attempt tweaks 2026-02-12 20:16:19 +01:00
andreas 149641c87b fix override 2026-02-12 20:16:08 +01:00
andreas 21782c109e revert intel 2026-02-12 20:15:59 +01:00
andreas 8ee971cbf8 add mpv as home package 2026-02-12 20:14:42 +01:00
andreas 1ed2b9c130 clean up 2026-02-12 20:14:32 +01:00
andreas 31102ae362 change to i915 2026-02-12 19:29:42 +01:00
andreas 33893cafd8 Move gamescope stuff to steam module 2026-02-12 19:28:53 +01:00
andreas 61e41fca0a add lact 2026-02-12 19:28:04 +01:00
andreas b90bfdaed8 merge disable efficient energy mode for dogshit realtek chipset 2026-02-12 19:27:47 +01:00
andreas 9eff6a3a6a add i915 based intel hardware module 2026-02-12 19:26:54 +01:00
andreas fbbd74bfae commit mesa overlay 2026-02-09 23:25:56 +01:00
andreas fcf8efe577 add reaper 2026-02-04 03:33:15 +01:00
andreas ec3d963494 add discord and betterdiscordctl 2026-02-04 03:33:02 +01:00
andreas 82b9b48493 split up to multiline inputs for better diffing 2026-02-04 03:31:04 +01:00
andreas e03b3d229d update file-organization module 2026-02-04 03:30:34 +01:00
andreas 06a3b10079 delete homes belonging to deleted system configs 2026-02-04 03:29:52 +01:00
andreas 613a9c5540 add file organizaiton module 2026-02-04 00:03:30 +01:00
andreas 0c754590f1 enable JACK support 2026-02-02 23:52:49 +01:00
andreas 5474251a64 fix typo 2026-02-02 10:01:09 +01:00
andreas dd1aa0957e add samsung monitor edid kernel param config 2026-02-02 09:59:55 +01:00
andreas ddce79071d add samsung monitor edid 2026-02-02 09:50:19 +01:00
andreas fd8f18eeec undo accidental closing bracket removal 2026-01-27 07:26:10 +01:00
andreas 501e35ae45 remove non-functional controller fix 2026-01-27 07:25:42 +01:00
andreas 65fc0ace0e cachy kernel 2026-01-27 07:24:24 +01:00
andreas dc8f70b344 bump flake inputs 2026-01-27 01:49:45 +01:00
andreas 5cc90d85f7 supposedly working 360 wireless controller fix 2026-01-27 01:49:31 +01:00
andreas 75491e90e7 enable performance tuning 2026-01-27 01:24:33 +01:00
andreas 819b81d8d2 fix mistake from copypasting boilerplate 2026-01-27 01:23:30 +01:00
andreas fe4f291ef8 fix typo in dir name 2026-01-27 01:23:07 +01:00
andreas da46fc7eca allow touching efi vars 2026-01-27 01:20:49 +01:00
andreas 58206b4c80 add performance tuning stuff 2026-01-27 01:20:40 +01:00
andreas 1e02adf3cf update vesktop appimage 2026-01-27 01:20:15 +01:00
andreas 15b75b0010 override framerate 2026-01-27 01:20:05 +01:00
andreas 6d34c7dbd0 update boot partition to new drive 2026-01-26 23:04:10 +01:00
andreas 8681424692 fix renamed warning 2026-01-23 20:05:07 +01:00
andreas 0956fccdc6 fix moved to top-level warning 2026-01-23 20:03:58 +01:00
andreas 1e187a7cee removed doubled services keyword 2026-01-23 20:03:04 +01:00
andreas 9dab3f0608 fix semicolon 2026-01-23 20:02:07 +01:00
andreas 26d59c7ca6 reference local linux-wallpaperengine package 2026-01-23 20:00:47 +01:00
andreas 9bc5922e49 remove per-home gamescope declaration 2026-01-23 20:00:29 +01:00
andreas 2e3ef5fd47 add global gamemode support 2026-01-23 19:59:54 +01:00
andreas 415f3bb057 add kitty as required for default hyprland config 2026-01-23 19:59:42 +01:00
andreas bcc2ca5cf0 fixed another omitted semicolon 2026-01-23 19:58:54 +01:00
andreas c202dbcdec add htop 2026-01-23 19:58:38 +01:00
andreas f3b6a5cddd housekeeping 2026-01-23 19:58:32 +01:00
andreas 191733ec51 trying steam fixes 2026-01-23 19:57:11 +01:00
andreas 881a047c75 linux-wallpaperengine version upgrade 2026-01-23 19:56:52 +01:00
andreas 95c1b53699 fix omitted semicolon 2026-01-23 19:55:38 +01:00
andreas aecc12a945 fix korganizer 2026-01-23 19:54:57 +01:00
andreas b5afdc5817 use desktop-environment module 2026-01-23 19:54:23 +01:00
andreas ab9acedf49 working desktop environment config 2026-01-23 19:53:43 +01:00
andreas 0e31504687 use cosmic greeter 2026-01-23 19:53:22 +01:00
andreas 85147137b0 intel x11 fixes 2026-01-22 09:30:51 +01:00
andreas 914b88ac82 deprecate old hardware config files 2026-01-22 09:30:27 +01:00
andreas 646f35e5d4 add more up to date wallpaperengine 2026-01-22 09:25:26 +01:00
andreas 3ed8d601a2 desktop-environment 2026-01-22 09:18:56 +01:00
andreas 02a99d31fa change to multiline for better diffs 2026-01-20 16:45:43 +01:00
andreas 2be93bd323 try to fix akonadi 2026-01-18 18:45:29 +01:00
andreas 6a43859425 use zen kernel 2026-01-18 18:45:23 +01:00
andreas 439cb8200f enable intel gpu tools 2026-01-15 18:15:45 +01:00
andreas a812e53f06 remove nixpkgs.follows 2026-01-15 17:37:06 +01:00
andreas 8ccc4d65a9 patch problems 2026-01-15 17:36:12 +01:00
andreas 581a701151 add thunderbird and aagl 2026-01-15 16:24:35 +01:00
andreas 5fc4b9e0f3 solved I guess 2025-12-24 07:05:26 +01:00
andreas 80e89c531d resolve deprecation warning 2025-12-24 06:26:39 +01:00
andreas f607c99ec4 remove typo 2025-12-24 06:23:40 +01:00
andreas c92ea31991 update flake lock 2025-12-24 06:22:04 +01:00
andreas e60e6bc8c0 changes 2025-12-24 06:21:23 +01:00
andreas 3ca9b0533b update flake 2025-12-23 06:32:02 +01:00
andreas 55b5521518 remove wallpaper engine kde plugin 2025-12-23 06:30:42 +01:00
andreas 39f1253900 anikki 2025-12-23 06:27:54 +01:00
andreas 4ff1acc318 fix gnome-keyring 2025-12-23 02:13:27 +01:00
andreas 261b704d31 enable docker 2025-12-23 02:02:28 +01:00
andreas 48b7079b32 autolaunch wallpaperengine 2025-12-23 02:02:17 +01:00
andreas 480a1598a6 update gnome keyring config 2025-12-23 02:02:07 +01:00
andreas beb1c9eb75 update ethernet driver config 2025-12-23 02:00:32 +01:00
andreas 12fccea34f gnome-keyring configuration 2025-12-23 01:59:50 +01:00
andreas c0c37d5fca unsuccessful attempt to make droidcam-obs work despite dependency issues 2025-12-17 18:17:46 +01:00
andreas df73e98b85 updated flake lock 2025-12-16 00:16:10 +01:00
andreas e95ab8bd3e gaming packages 2025-12-15 23:30:12 +01:00
andreas c6104a7a9e keychron fixes 2025-12-15 23:30:05 +01:00
andreas f9b40222a0 add plugdev for keychron launcher 2025-12-15 23:29:43 +01:00
andreas 866efb4718 fixed redundant line 2025-12-14 19:51:26 +01:00
andreas 6463a9e869 intel only 2025-12-14 19:47:03 +01:00
andreas 105c9737f6 clean up formatting 2025-12-14 19:46:50 +01:00
andreas 089bf927e0 gamescope session related tweaks 2025-12-14 19:44:19 +01:00
andreas b4bc7490fc add ntfs3g 2025-12-14 19:43:22 +01:00
andreas 0dd087f4b8 steam related packages 2025-12-14 19:43:14 +01:00
andreas f60718619f remove vesktop 2025-12-14 19:42:37 +01:00
andreas c47509ef99 fix whitespace 2025-12-14 19:42:13 +01:00
andreas c5767b775b enable vesktop appimage 2025-12-14 19:41:06 +01:00
andreas ef4869d2cc add localsend package 2025-12-14 19:40:35 +01:00
andreas 0207f790ef add libreoffice package 2025-12-14 19:40:19 +01:00
andreas b4500a59c1 add hyfetch package 2025-12-14 19:40:07 +01:00
andreas e6f20d1d69 remove broken vesktop package 2025-12-14 19:39:31 +01:00
andreas 51e5e00ab6 add keychron keyboard config 2025-12-14 19:38:08 +01:00
andreas 31e86618c3 improved/ fixed 2025-12-14 19:37:52 +01:00
andreas e28a22ec11 moved 2025-12-14 19:36:06 +01:00
andreas 93c3ae48c5 add keychron keyboard config module 2025-12-14 19:31:40 +01:00
andreas 1abec387cd fixes 2025-12-14 17:25:47 +01:00
andreas 081ffed1e1 vesktop appimage instead of nixpkgs 2025-12-14 17:25:31 +01:00
andreas 583a1a1905 add nvidia only config 2025-12-08 18:43:36 +01:00
andreas 48e9ae18ef remove unused patch file 2025-11-30 04:22:45 +01:00
andreas 793b7e1a30 fixed wallpaper engine 2025-11-30 04:22:20 +01:00
andreas 051b48d3ba changes 2025-11-30 03:48:54 +01:00
andreas 47ff5618e9 changes 2025-11-30 03:48:43 +01:00
andreas ad7fb01791 remove remaining cosmic references 2025-11-30 00:32:38 +01:00
andreas 1e6daa09f6 updates 2025-11-30 00:32:11 +01:00
andreas 1557caba8b add intel nvidia hybrid graphics 2025-11-29 23:12:09 +01:00
andreas 47d716c2de disable edid on DP-4 2025-07-15 11:27:06 +02:00
andreas d3ebbadc27 add qtwebengine 2025-07-15 10:13:39 +02:00
andreas 02aa649bb1 fix2 2025-07-15 10:06:49 +02:00
andreas 41321a5364 fix 2025-07-15 10:04:49 +02:00
andreas 95388efbc8 fix derivation 2025-07-15 10:00:30 +02:00
andreas 5e0036e591 added mpv dependencies 2025-07-15 09:44:33 +02:00
andreas 37309cd66e bla 2025-07-15 09:19:01 +02:00
andreas 1354042094 bla 2025-07-15 03:49:00 +02:00
andreas bd75aecb14 bla 2025-07-15 03:45:46 +02:00
andreas 3a59ef19f6 changes 2025-07-15 03:19:01 +02:00
andreas 499260d83f Remove shit 2025-07-15 02:43:16 +02:00
andreas b78ba76cd3 changes 2025-07-15 02:42:32 +02:00
andreas 093feba49d changes 2025-07-15 01:30:58 +02:00
andreas afd823c23e disable powermanagement 2025-06-06 02:33:34 +02:00
andreas b1e3fa601d bla 2025-06-06 02:21:15 +02:00
andreas 2f07912f1b bla 2025-06-06 02:16:42 +02:00
andreas 8701b72258 bla 2025-06-06 01:57:13 +02:00
andreas 8c305e3703 bla 2025-06-06 01:51:26 +02:00
andreas 86f61e9547 bla 2025-06-06 01:46:48 +02:00
andreas ce387ab5db bla 2025-06-06 01:36:55 +02:00
andreas 7d07de663d add qemu 2025-05-31 23:15:36 +02:00
andreas f19a3d129c use nvidia again 2025-05-31 23:15:12 +02:00
andreas 89fde794b8 rdp and lanzaboot 2025-04-20 23:20:04 +02:00
andreas f451095a92 enable xrdp 2024-12-31 17:59:42 +01:00
andreas 3fad8fcf16 try to fix x11 on amd only 2024-12-31 17:58:35 +01:00
andreas 415ea15ea0 commit changes 2024-12-31 17:58:22 +01:00
andreas 48f1d774c9 add amd-igpu only config 2024-12-31 17:52:10 +01:00
andreas b4e3457721 clean up redundant lines 2024-12-10 09:22:22 +01:00
andreas 21f5a618fa move steam to shared module 2024-12-10 09:21:33 +01:00
andreas 99b30e124a add triliumnext 2024-12-10 09:18:29 +01:00
andreas b891969c7e add remmina 2024-12-10 09:18:17 +01:00
andreas 1cb2a609a8 add shell 2024-12-10 09:18:02 +01:00
andreas 4ff075bce4 add trilium-next 2024-12-10 09:17:50 +01:00
andreas a496d0451b add another sops master key 2024-12-10 05:16:09 +01:00
andreas c606f39f8f ignore vscode settings json 2024-12-10 03:58:50 +01:00
andreas b779b84242 try to bring back gnome remote desktop (bugged upstream, no bueno, wait for fix) 2024-12-10 03:58:32 +01:00
andreas 8c0ecd90e8 clean up formatting 2024-12-10 03:57:00 +01:00
andreas 092691c665 list all inputs 2024-12-10 03:56:20 +01:00
andreas 718ca864e3 Add shared system config module 2024-12-10 03:53:46 +01:00
andreas 4454eb84fb whatever, still sorta works 2024-12-09 23:35:27 +01:00
andreas f7823d9ad3 stable x11 config 2024-12-09 22:25:47 +01:00
andreas 72cac1e8c6 working x11 prime config 2024-12-07 21:05:09 +01:00
andreas cf95749f84 Add synergy ports to firewall config 2024-12-07 21:04:07 +01:00
andreas 9ca20b8e24 bla 2024-12-07 18:03:00 +01:00
andreas 2f5a44b112 fix error 2024-12-07 18:02:49 +01:00
andreas c29cae486e fix warning 2024-12-07 18:02:43 +01:00
andreas 769e1c166a try to fix modesetting 2024-12-07 18:02:36 +01:00
andreas 5a36dbc083 enable new config 2024-12-07 17:47:05 +01:00
andreas b8d94f015f add new graphics config for testing 2024-12-07 17:46:30 +01:00
andreas 0aa885e2e4 synergy 2024-12-07 17:46:18 +01:00
andreas 94c2c9d7d5 removed redundant pkgs. prefix 2024-12-07 16:54:09 +01:00
andreas e2086b228b buncha changes 2024-12-07 16:49:26 +01:00
andreas 3bff766ee2 add zen browser 2024-11-28 14:20:22 +01:00
andreas f59cee41b9 Move config to working module 2024-11-27 17:12:17 +01:00
andreas fc9c0c947c Working state with hibernation and good gaming performance on KDE 2024-11-27 16:04:28 +01:00
andreas 83db3ded50 hibernation works now 2024-11-26 14:37:36 +01:00
andreas 7645da455e swap 2024-11-21 19:26:36 +01:00
andreas d16b77a13a fix spelling error 2024-11-21 11:05:07 +01:00
andreas fce0f24737 add terraform to drivebystation-nix 2024-11-21 11:02:47 +01:00
andreas 8000ec4cf5 Merge branch 'trunk' of ssh://git.subsonics.nl:2222/andreas/nixos-config into trunk 2024-11-21 11:01:04 +01:00
andreas c3b39f9991 remove partial line 2024-11-21 10:59:49 +01:00
andreas a8c11752d4 changes 2024-11-21 10:59:28 +01:00
andreas 15d3daa1c8 add beeper to th0nkpad 2024-11-21 10:16:40 +01:00
andreas f66ad0b662 try readding the other packages with the system being in a working state 2024-11-13 05:55:48 +01:00
andreas 1624697a7c enable the other modules on boot 2024-11-13 05:54:57 +01:00
andreas d33e276dd3 enable fbdev 2024-11-13 05:49:01 +01:00
andreas 690851ede3 switch to xanmod kernel 2024-11-13 05:48:52 +01:00
andreas 2048c12baa this does not 2024-11-13 05:22:44 +01:00
andreas 96acd705cb this sorta worked 2024-11-13 05:22:21 +01:00
andreas ab2413d3c6 attempt to fix framebuffer corruption and random sleep issues 2024-11-13 03:12:10 +01:00
andreas c3b3bdd6c2 upgrade to beta driver 2024-11-13 03:11:08 +01:00
andreas e7c6413503 attempt to fix gamescope 2024-11-13 02:58:30 +01:00
andreas 8f228a50bc test fbdev 2024-11-13 02:58:19 +01:00
andreas cccadc89c4 fix modeset by enabling nvidia-drm as a boot init module 2024-11-13 02:58:06 +01:00
andreas 12d32846a2 attempt gamescope fix 2024-11-13 02:32:57 +01:00
andreas a5eafae831 fixed another renamed key warning 2024-11-13 02:32:43 +01:00
andreas e2fd2ba798 fix renamed key warning 2024-11-13 02:32:22 +01:00
andreas aee5e664c1 solved no signal on TTY by disabling fbdev and modeset kernel params 2024-11-13 01:58:51 +01:00
andreas 27374f058c add steelseries-udev and hello packages 2024-11-13 01:55:10 +01:00
andreas da2b430ead add missing file and callpackage as import 2024-11-13 01:54:31 +01:00
andreas 830f8d51b3 add missing parts of the dir structure 2024-11-12 22:54:37 +01:00
andreas 59032852f0 add sample hello package (copied from nixpkgs) 2024-11-12 22:54:06 +01:00
andreas 8df8a7ed39 add required packages for interfacing with ntfs and modifying partitions 2024-11-12 22:53:35 +01:00
andreas 6d3c3630a1 add obsidian to andreas@drivebystation 2024-11-12 22:53:11 +01:00
andreas f26e79c734 update hardware config 2024-11-12 22:52:54 +01:00
andreas 2adff754bd update hardware config 2024-11-12 22:52:35 +01:00
andreas 3097ba6084 add vscode task for building 2024-11-12 22:49:01 +01:00
andreas cae95f99af commit working state to prevent future breakage 2024-11-11 21:49:11 +01:00
andreas 5aded84ef9 add acer display OC EDID 2024-11-10 22:44:40 +01:00
andreas b03e28e889 add qbittorrent and discord to home 2024-11-10 22:16:12 +01:00
andreas 2137ea62c5 Move wine and bottles to system packages and fix steelseries-udev 2024-11-10 22:15:37 +01:00
andreas e2c080693c add steelseries stuff 2024-11-10 06:37:03 +01:00
andreas ff6ee6b805 move gnome customizations to separate module 2024-11-10 04:36:08 +01:00
andreas 040476fabc Enable Fractional scaling for GNOME on drivebystation-nix 2024-11-10 04:31:39 +01:00
andreas 0b74e05cde configure steam 2024-11-10 04:18:50 +01:00
andreas 65fe6030ac add beeperr to drivebystation-nix 2024-11-10 04:18:36 +01:00
andreas 5325c20286 add steam, nvidia drivers, and fix gnome titlebars 2024-11-09 20:33:21 +01:00
andreas 4244e6918a update configuration.nix 2024-11-09 18:16:41 +01:00
andreas 88a4f25fa5 Added nixos config for battlestation 2024-11-09 18:13:57 +01:00
andreas 066b45427a fix home manager config 2024-11-07 14:27:43 +01:00
andreas 01f1e82284 fix home-manager and misc changes 2024-11-07 14:17:25 +01:00
andreas dea19e0b3b Various formatting changes 2024-11-07 09:59:01 +01:00
andreas 8b68c27a1f add sops-nix to inputs 2024-11-07 09:58:14 +01:00
andreas a380d9487f cleared whitespace 2024-11-07 09:06:17 +01:00
andreas 542b74f944 updated flake 2024-11-07 09:06:04 +01:00
andreas d2dceba0e9 Add configurable stream-tools option 2024-11-05 13:51:12 +01:00
andreas 9dab2276d6 update flake to use snowfall 2024-10-08 23:12:28 +02:00
andreas 2dfd24b2a9 Disable XRDP in favor of using gnomes built in RDP 2024-10-08 21:51:33 +02:00
andreas 9713048cfd add spotify 2024-10-08 19:53:21 +02:00
andreas 4f434935f0 add default.nix to sys config dirs 2024-10-08 17:51:03 +00:00
andreas 78a9a4c493 specify hostname 2024-10-08 17:45:26 +00:00
64 changed files with 4118 additions and 285 deletions
+1
View File
@@ -0,0 +1 @@
.vscode/settings.json
+13
View File
@@ -0,0 +1,13 @@
keys:
- users:
- &andreas age19j24x89dfh4f7v58c8k64yupqas4f7qkkyper7yj9dd7vqwvvq0qkyvhxk # generated using cli
- hosts:
- &th0nkpad-nixos age1ma8x6wugvc40mkst33mejq0m6r44jk6zwjjun3znyer5nztgn9vs0nwjx4 # derived from ssh host key
- &drivebystation-nix age1s5qwsuc3e4m3c4w5hl6tyja70w273gr60j9j9dcpc6mz69lemg3qpwud3h #derived from ssh host key
creation_rules:
- path_regex: secrets.yaml$
key_groups:
- age:
- *andreas
- *th0nkpad-nixos
- *drivebystation-nix
+21
View File
@@ -0,0 +1,21 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "nixos-rebuild",
"command": "bash",
"args": [
"-c",
"sudo nixos-rebuild switch --flake ."
],
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
+102
View File
@@ -0,0 +1,102 @@
## CODE GENERATION INSTRUCTIONS
You are tasked with integrating patches into my kernel to make the tearing protocol work on Wayland with my intel B580.
## THINGS TO DO:
Plan out how you're going to do the following. I will inspect your plan and then authorize it.
- Custom build this MR: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3797
- Fix KDE tearing on Intel Graphics using kernel patches for libdrm. Use these resources to research:
- https://bugs.kde.org/show_bug.cgi?id=520549
- https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/8597#note_3567675
- https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/13834 (this one has patches that supposedly fix the problem.)
# Plan here:
- [ ] 1. Record the current package and kernel baselines.
- Evaluate the locked versions of Mutter, GNOME Shell, libdrm, and the selected CachyOS kernel.
- Confirm that the Intel Arc B580 (`8086:e20b`) is using the `xe` driver.
- Save the current working kernel and NixOS generation as the rollback baseline.
- [ ] 2. Pin all experimental upstream sources.
- Pin Mutter merge request !3797 to a specific commit instead of following its branch.
- Record the MR base commit and verify whether it is compatible with the Mutter version in the locked nixpkgs input.
- Identify the exact revisions of the Intel async-flip and `IN_FORMATS_ASYNC` kernel patches referenced by the i915 and Xe work items.
- Use fixed-output hashes for every fetched patch or source archive.
- [ ] 3. Determine which Intel DRM patches are still required.
- Inspect the selected CachyOS kernel source for patches that have already been merged or backported.
- Select only the missing patches needed to expose async-capable formats and prevent unchanged or disabled planes from incorrectly rejecting an async atomic commit.
- Confirm that the selected changes affect the Intel display code shared by `xe` and `i915`, and therefore apply to the B580 even when the original report is filed under i915.
- Document the required patch order and each patch's upstream URL and revision.
- [ ] 4. Add a dedicated, reversible Wayland-tearing overlay or module.
- Keep the experimental Mutter and kernel overrides together in a new, clearly named repository file.
- Scope the override to `drivebystation-nix` where practical.
- Provide a single enable switch or isolated import so the experiment can be disabled without editing generated hardware configuration.
- Preserve all unrelated existing worktree changes.
- [ ] 5. Override Mutter with merge request !3797.
- Prefer applying the pinned MR commits to the nixpkgs Mutter derivation so nixpkgs build flags and dependency wiring are retained.
- If the patch series is incompatible, use the pinned MR source only after confirming its Mutter ABI matches the installed GNOME Shell.
- Verify that libdrm is at least version 2.4.120.
- Ensure GNOME Shell and the display-manager session reference the overridden Mutter rather than merely installing it alongside the stock package.
- Enable the experimental feature with `MUTTER_DEBUG_EXPERIMENTAL_FEATURES=tearing` in the session environment.
- [ ] 6. Override the CachyOS kernel with the selected Intel DRM patches.
- Extend the existing `pkgs.cachyosKernels.linuxPackages-cachyos-latest` kernel derivation rather than replacing it with an unrelated kernel package set.
- Apply the pinned patches in their upstream dependency order.
- Verify that every patch applies cleanly to the exact CachyOS kernel source.
- Keep `boot.extraModulePackages` tied to the patched kernel package set so `r8125` and `v4l2loopback` are rebuilt against the correct kernel.
- Do not modify the generated `hardware-configuration.nix` beyond any unavoidable existing kernel selection; place the override in a maintained host module.
- [ ] 7. Validate the Nix expressions without activating the system.
- Run formatting and syntax checks on every changed Nix file.
- Evaluate the complete `drivebystation-nix` configuration.
- Run `nix flake check` and resolve evaluation failures attributable to these changes.
- Confirm that all sources are pinned and reproducible and that no mutable branch names remain.
- [ ] 8. Build each risky component independently.
- Build the overridden Mutter derivation.
- Build the patched kernel derivation.
- Build the matching `r8125` and `v4l2loopback` modules.
- Inspect the build logs for rejected patches, warnings related to async flips, and ABI mismatches.
- [ ] 9. Build the complete NixOS system before switching.
- Build the `drivebystation-nix` toplevel without activating it.
- Verify that the closure contains the pinned patched Mutter and patched CachyOS kernel.
- Confirm that a previous known-good boot generation remains available.
- [ ] 10. Activate the result safely.
- Use `nixos-rebuild boot` first so the new system is selected only after reboot.
- Reboot into the patched generation and verify the running kernel version and `xe` driver binding.
- If the display fails or the system is unstable, boot the previous generation and disable the experimental module.
- [ ] 11. Verify the kernel DRM capabilities.
- Run `drm_info` and confirm atomic async-page-flip capability is reported.
- Confirm `IN_FORMATS_ASYNC` is populated for supported primary planes.
- Confirm its absence on the cursor plane is handled as expected rather than causing the entire commit to fail.
- Capture a DRM debug log while submitting tearing-enabled fullscreen frames.
- [ ] 12. Test KDE Plasma tearing.
- Enable Plasma's "Allow in fullscreen windows" tearing setting.
- Run a fullscreen tearing-aware game or test client with frame rate above the monitor refresh rate.
- Confirm that KWin's async atomic commits no longer fail with `-EINVAL`.
- Confirm that the previous `cursor A: async flip not supported` and `plane 2A: async flip not supported` errors no longer occur for disabled or unchanged planes.
- Check cursor movement, fullscreen entry and exit, direct scanout, VRR enabled and disabled, and all connected monitors.
- [ ] 13. Test GNOME Mutter tearing.
- Start a GNOME Wayland session and confirm the tearing-control protocol is advertised.
- Run `weston-simple-egl -v -f -t` or an equivalent tearing-aware client.
- Confirm that requested asynchronous flips are accepted and visibly tear when the frame rate exceeds the refresh rate.
- Confirm unsupported async commits fall back to synchronized presentation without breaking the session.
- Test cursor movement, fullscreen transitions, VRR, multiple monitors, and suspend/resume.
- [ ] 14. Document results and removal criteria.
- Record the tested hardware, kernel, Mutter, GNOME Shell, Plasma, and libdrm versions.
- Record the exact patches used and the outcome of both compositor tests.
- Document how to disable the overrides and roll back to the previous generation.
- Note which upstream merge or kernel release will allow each local override to be removed.
+61
View File
@@ -0,0 +1,61 @@
# NixOS configuration
The default package set is NixOS 26.05. Home Manager and AAGL use their
matching 26.05 release branches. `drivebystation-nix` uses the standard
`pkgs.linuxPackages` kernel from stable, including matching external modules.
## Packages from unstable
`inputs.nixpkgs-unstable` is a separate package set, pinned in `flake.lock`.
Select individual applications explicitly, as with Trilium and JetBrains
Toolbox in the desktop host:
```nix
unstablePkgs.trilium-desktop
```
The host defines `unstablePkgs` by importing the separate input with
`allowUnfree = true`. Use `pkgs.<name>` for stable packages. Unstable
applications retain their own dependencies; the system package set stays on
stable.
Update the stable inputs and the application exceptions independently:
```sh
nix flake update nixpkgs home-manager aagl
nix flake update nixpkgs-unstable
```
The existing Mutter tearing override remains experimental. Its compatibility
and B580 graphics behavior require testing when changing the desktop stack.
## Validate and boot
```sh
nix build .#nixosConfigurations.drivebystation-nix.config.system.build.toplevel --no-link
sudo nixos-rebuild boot --flake .#drivebystation-nix
```
Only run the boot command after the build succeeds. Keep the previous working
generation available in the boot menu, then test networking, graphics, and
the webcam loopback after reboot. Git restores configuration sources; booting
the previous generation restores the previous system closure.
Whole-flake checks currently also evaluate an unfinished WSL host referencing
the disabled `nixos-wsl` input. Validate the desktop target directly until that
separate host configuration is repaired.
## Migration validation (2026-10-17)
The complete `drivebystation-nix` system built successfully without activation.
Its closure contains Linux 6.18.56, patched Mutter 50.5, GNOME Shell 50.5,
libdrm 2.4.133, r8125 9.016.01, and v4l2loopback 0.15.3. The explicit unstable
applications are Trilium 0.106.0 and JetBrains Toolbox 3.8.1.88030.
Nix syntax and Git whitespace checks pass. `nix flake check --no-build` stops
at the existing WSL input error described above. The edited Nix files retain
the repository's existing formatting; `nixpkgs-fmt --check` reports formatting
differences, including on the original flake before migration.
Boot, networking, B580 graphics, and tearing behavior still require runtime
testing. The migration does not add Intel tearing kernel patches.
Generated
+631 -136
View File
@@ -1,13 +1,140 @@
{
"nodes": {
"Catch2": {
"flake": false,
"locked": {
"lastModified": 1759222471,
"narHash": "sha256-7Dx7PhtRwkbo8vHF57sAns2fQZ442D3cMyCt25RvzJc=",
"owner": "catchorg",
"repo": "Catch2",
"rev": "b3fb4b9feafcd8d91c5cb510a4775143fdbef02f",
"type": "github"
},
"original": {
"owner": "catchorg",
"repo": "Catch2",
"rev": "b3fb4b9feafcd8d91c5cb510a4775143fdbef02f",
"type": "github"
}
},
"MimeTypes": {
"flake": false,
"locked": {
"lastModified": 1577040615,
"narHash": "sha256-biRcxbpRVnD3+VVo0fNrNGeAi1P7pSzkGKHZrTtGp7Q=",
"owner": "lasselukkari",
"repo": "MimeTypes",
"rev": "8990d6a796bd9904ec3d41e5c150a1ffb48fe32e",
"type": "github"
},
"original": {
"owner": "lasselukkari",
"repo": "MimeTypes",
"rev": "8990d6a796bd9904ec3d41e5c150a1ffb48fe32e",
"type": "github"
}
},
"SPIRV-Cross-WallpaperEngine": {
"flake": false,
"locked": {
"lastModified": 1745093314,
"narHash": "sha256-ou66paGlu3KXf8LL8zfTiE8wOf0nRBocDs1QvfRVs+k=",
"owner": "Almamu",
"repo": "SPIRV-Cross-WallpaperEngine",
"rev": "ad4d02220b01c1800e5a4e6671d6d8ca8ab07783",
"type": "github"
},
"original": {
"owner": "Almamu",
"repo": "SPIRV-Cross-WallpaperEngine",
"rev": "ad4d02220b01c1800e5a4e6671d6d8ca8ab07783",
"type": "github"
}
},
"aagl": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1789138195,
"narHash": "sha256-cvK9QXAzcgYYg6WsMSfzSE78QyCbNoRMF25GIZ0pz1s=",
"owner": "ezKEa",
"repo": "aagl-gtk-on-nix",
"rev": "decd5655d94eec05b6d5beacb9a652f8ca95344e",
"type": "github"
},
"original": {
"owner": "ezKEa",
"ref": "release-26.05",
"repo": "aagl-gtk-on-nix",
"type": "github"
}
},
"argparse": {
"flake": false,
"locked": {
"lastModified": 1737934041,
"narHash": "sha256-gRLn4juxwde7ugvT/p4lx9ayDTm7o32NKaE/SEbnLHI=",
"owner": "p-ranav",
"repo": "argparse",
"rev": "d924b84eba1f0f0adf38b20b7b4829f6f65b6570",
"type": "github"
},
"original": {
"owner": "p-ranav",
"repo": "argparse",
"rev": "d924b84eba1f0f0adf38b20b7b4829f6f65b6570",
"type": "github"
}
},
"codex-desktop": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1791562553,
"narHash": "sha256-uyLpIxJv9lqy1pgGUd0C/RZvqWyFqbwR0Tq7E+UX0VM=",
"owner": "ilysenko",
"repo": "codex-desktop-linux",
"rev": "443cb5d52ed781cac6cc7083780abb058cf93678",
"type": "github"
},
"original": {
"owner": "ilysenko",
"repo": "codex-desktop-linux",
"type": "github"
}
},
"crane": {
"locked": {
"lastModified": 1781825982,
"narHash": "sha256-SlXKwIRIhrOSAcTjCB3ftPLzJWZStQIPS7J1FlZPnKk=",
"owner": "ipetkov",
"repo": "crane",
"rev": "469fd08d0bcf6926321fa973c6777fbc87785dd7",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
@@ -19,37 +146,32 @@
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "edolstra",
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nix",
"nixpkgs"
]
},
"flake-compat_3": {
"flake": false,
"locked": {
"lastModified": 1719994518,
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
"lastModified": 1650374568,
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
@@ -58,11 +180,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1726560853,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@@ -71,169 +193,262 @@
"type": "github"
}
},
"git-hooks-nix": {
"flake-utils-plus": {
"inputs": {
"flake-utils": "flake-utils_2"
},
"locked": {
"lastModified": 1715533576,
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
},
"original": {
"owner": "gytis-ivaskevicius",
"repo": "flake-utils-plus",
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"flake-compat": [
"nix"
],
"gitignore": [
"nix"
],
"nixpkgs": [
"nix",
"nixpkgs"
],
"nixpkgs-stable": [
"nix",
"lanzaboote",
"pre-commit",
"nixpkgs"
]
},
"locked": {
"lastModified": 1721042469,
"narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "f451c19376071a90d8c58ab1a953c6e9840527fd",
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"libgit2": {
"glslang-WallpaperEngine": {
"flake": false,
"locked": {
"lastModified": 1715853528,
"narHash": "sha256-J2rCxTecyLbbDdsyBWn9w7r3pbKRMkI9E7RvRgAqBdY=",
"owner": "libgit2",
"repo": "libgit2",
"rev": "36f7e21ad757a3dacc58cf7944329da6bc1d6e96",
"lastModified": 1770589476,
"narHash": "sha256-auhYcTWdSERwujUqwfDbF61tncO18dwar3mMQ09VW1w=",
"owner": "Almamu",
"repo": "glslang-WallpaperEngine",
"rev": "b775500a153f5ceb0e4b6f366b79c4c57521bb62",
"type": "github"
},
"original": {
"owner": "libgit2",
"ref": "v1.8.1",
"repo": "libgit2",
"owner": "Almamu",
"repo": "glslang-WallpaperEngine",
"rev": "b775500a153f5ceb0e4b6f366b79c4c57521bb62",
"type": "github"
}
},
"nix": {
"home-manager": {
"inputs": {
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"git-hooks-nix": "git-hooks-nix",
"libgit2": "libgit2",
"nixpkgs": "nixpkgs",
"nixpkgs-23-11": "nixpkgs-23-11",
"nixpkgs-regression": "nixpkgs-regression"
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1728310575,
"narHash": "sha256-R13o8hNhzuTuEwUBViVOmT4OM0/I2d9DxnkxQOip1yg=",
"owner": "NixOS",
"repo": "nix",
"rev": "26c3fc11eada3fa7df0284190095868a947fefe2",
"type": "github"
},
"original": {
"id": "nix",
"type": "indirect"
}
},
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1728299182,
"narHash": "sha256-wzxKH5DyG+uyhnGtP8YmN3LCYtEyYR/4fhjKVY2Rtxg=",
"lastModified": 1791938526,
"narHash": "sha256-yNYK2pdk3bCtJrpblrNYA6hZKdybWUeyTtx74+OEJFo=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "830b6a752d0097c2043985ff4c1203aba07b268d",
"repo": "home-manager",
"rev": "32904dfe1cf86039f3c8c9f41f94e1cfd76dbb34",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "main",
"repo": "NixOS-WSL",
"ref": "release-26.05",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"zen-browser",
"nixpkgs"
]
},
"locked": {
"lastModified": 1788229478,
"narHash": "sha256-G0F2rFORVcFkEvVdE/qWQTnYekIc77YP5/vRF9nZlxU=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "1dc2d1f720ab17fc7981e087346bf54b26d284b1",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"json": {
"flake": false,
"locked": {
"lastModified": 1743872075,
"narHash": "sha256-eSqi4dhFrUvjYN+jD8nGqj1FbzGA6I2+eSqzdCGOLH8=",
"owner": "nlohmann",
"repo": "json",
"rev": "4424a0fcc1c7fa640b5c87d26776d99150dacd10",
"type": "github"
},
"original": {
"owner": "nlohmann",
"repo": "json",
"rev": "4424a0fcc1c7fa640b5c87d26776d99150dacd10",
"type": "github"
}
},
"kissfft": {
"flake": false,
"locked": {
"lastModified": 1739194969,
"narHash": "sha256-DywClnx67EE+CnduSuZIIfaAKbBg1ebQ+JgwIpDsnGQ=",
"owner": "mborgerding",
"repo": "kissfft",
"rev": "febd4caeed32e33ad8b2e0bb5ea77542c40f18ec",
"type": "github"
},
"original": {
"owner": "mborgerding",
"repo": "kissfft",
"rev": "febd4caeed32e33ad8b2e0bb5ea77542c40f18ec",
"type": "github"
}
},
"lanzaboote": {
"inputs": {
"crane": "crane",
"nixpkgs": [
"nixpkgs"
],
"pre-commit": "pre-commit",
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1782141370,
"narHash": "sha256-hqijVSEETttmo8Okql9/LG0Ua34hdciKW1a5zzlj8mU=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "7c9a54a7f87b4539ddbd8bda09a8a5f5f9361aa9",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "v1.1.0",
"repo": "lanzaboote",
"type": "github"
}
},
"millennium": {
"inputs": {
"millennium-src": "millennium-src",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-bun": "nixpkgs-bun"
},
"locked": {
"dir": "packages/nix",
"lastModified": 1792022604,
"narHash": "sha256-xyl3KTB+j4W3dAxQVSolNJCQZOasDnCLB3Dr14adBmU=",
"owner": "SteamClientHomebrew",
"repo": "Millennium",
"rev": "22af2f453777a925fb398a3dab60a407e66aa83f",
"type": "github"
},
"original": {
"dir": "packages/nix",
"owner": "SteamClientHomebrew",
"repo": "Millennium",
"type": "github"
}
},
"millennium-src": {
"flake": false,
"locked": {
"lastModified": 1791947497,
"narHash": "sha256-sNpoyJ+IjrTiDGfX2QiKVg4jkrJR7n9PdBeOYJSS4n8=",
"owner": "SteamClientHomebrew",
"repo": "Millennium",
"rev": "401d532543a0fbff469653ccba802bdd7e45f861",
"type": "github"
},
"original": {
"owner": "SteamClientHomebrew",
"repo": "Millennium",
"rev": "401d532543a0fbff469653ccba802bdd7e45f861",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1723688146,
"narHash": "sha256-sqLwJcHYeWLOeP/XoLwAtYjr01TISlkOfz+NG82pbdg=",
"lastModified": 1791883866,
"narHash": "sha256-yvkDdToRZ4IgPc9tSBzzCYJvTLf8n5eE3rgUkpCuD5A=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c3d4ac725177c030b1e289015989da2ad9d56af0",
"rev": "a033e66ab94a6bedf2c3d58d93a36319d3cbbbaf",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-23-11": {
"nixpkgs-bun": {
"locked": {
"lastModified": 1717159533,
"narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=",
"owner": "NixOS",
"lastModified": 1790822859,
"narHash": "sha256-69xHQhAeMAD2wDXO7T2pcOZIF9Sga2W+JkmY2a11Ops=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
"type": "github"
},
"original": {
"owner": "NixOS",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
"type": "github"
}
},
"nixpkgs-regression": {
"nixpkgs-unstable": {
"locked": {
"lastModified": 1643052045,
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
"lastModified": 1791956154,
"narHash": "sha256-jBYGPi4udQ9uo4KQp9m2J0546nJVQitG15gvZSaVVAs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1728193676,
"narHash": "sha256-PbDWAIjKJdlVg+qQRhzdSor04bAPApDqIv2DofTyynk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1728241625,
"narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1",
"rev": "55bfb4d7437bd4e09ab7cba58a43bd68eb310044",
"type": "github"
},
"original": {
@@ -243,11 +458,198 @@
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1789286504,
"narHash": "sha256-eiEK7cKZORNEvX0GeF3RtNEF/JXhgf2RqSp3230q13E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1781733627,
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"quickjs": {
"flake": false,
"locked": {
"lastModified": 1770976497,
"narHash": "sha256-odQznZ/Xc6IGh6JPM1RyyEn9HL/+/AFR99XcF+WHJDc=",
"owner": "quickjs-ng",
"repo": "quickjs",
"rev": "72ba50f63ee31202f8c18b8d07ab1e1c3486ee6f",
"type": "github"
},
"original": {
"owner": "quickjs-ng",
"repo": "quickjs",
"rev": "72ba50f63ee31202f8c18b8d07ab1e1c3486ee6f",
"type": "github"
}
},
"root": {
"inputs": {
"nix": "nix",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_3"
"aagl": "aagl",
"codex-desktop": "codex-desktop",
"home-manager": "home-manager",
"lanzaboote": "lanzaboote",
"millennium": "millennium",
"nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"simple-wallpaper-engine": "simple-wallpaper-engine",
"snowfall-lib": "snowfall-lib",
"sops-nix": "sops-nix",
"wallpaperengine": "wallpaperengine",
"zen-browser": "zen-browser"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"aagl",
"nixpkgs"
]
},
"locked": {
"lastModified": 1785907205,
"narHash": "sha256-Ds1vTi53af4wDMAveSR/K0JnywDslLwmgwhVIiwnNmY=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "c5cb13481d718fac906aa9cfd85f9b60e1a546cb",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": {
"lastModified": 1782012058,
"narHash": "sha256-9mWUnReOUXfKjZuJAL/bAFH3LUyECTRtXgSNVjRw3UY=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "8534567325bd8a8d2928e6afd81e0a87d19efd3c",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"simple-wallpaper-engine": {
"inputs": {
"nixpkgs": [
"nixpkgs"
],
"utils": "utils"
},
"locked": {
"lastModified": 1772136897,
"narHash": "sha256-2RBgZWq80zXVWyOswUlDaoRZtaeT6pBkbNCLdAzLYoY=",
"owner": "Maxnights",
"repo": "simple-linux-wallpaperengine-gui",
"rev": "43ae644754a0a5e96c8ddb9077843643b74f9acc",
"type": "github"
},
"original": {
"owner": "Maxnights",
"repo": "simple-linux-wallpaperengine-gui",
"type": "github"
}
},
"snowfall-lib": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-utils-plus": "flake-utils-plus",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1784328457,
"narHash": "sha256-4R5WV74NHhPk21ctoPmjL7nQ6txDnoBLwSWULvIw0TY=",
"owner": "snowfallorg",
"repo": "lib",
"rev": "6ee3542cb459ca4b038cfe50ceb8797f05cdabad",
"type": "github"
},
"original": {
"owner": "snowfallorg",
"repo": "lib",
"type": "github"
}
},
"sops-nix": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1788337237,
"narHash": "sha256-gkSH8VUtCo6hnysNmb9DbTuDepH2t5pv+QWjP75xKAk=",
"owner": "mic92",
"repo": "sops-nix",
"rev": "fbf759290e0cb0a98dfc813a4eb7d53ad1dacb57",
"type": "github"
},
"original": {
"owner": "mic92",
"repo": "sops-nix",
"type": "github"
}
},
"stb": {
"flake": false,
"locked": {
"lastModified": 1741976854,
"narHash": "sha256-FkTeRO/AC5itykH4uWNsE0UeQTS34VtGGoej5QJiBlg=",
"owner": "nothings",
"repo": "stb",
"rev": "f0569113c93ad095470c54bf34a17b36646bbbb5",
"type": "github"
},
"original": {
"owner": "nothings",
"repo": "stb",
"rev": "f0569113c93ad095470c54bf34a17b36646bbbb5",
"type": "github"
}
},
"systems": {
@@ -264,6 +666,99 @@
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"wallpaperengine": {
"inputs": {
"Catch2": "Catch2",
"MimeTypes": "MimeTypes",
"SPIRV-Cross-WallpaperEngine": "SPIRV-Cross-WallpaperEngine",
"argparse": "argparse",
"glslang-WallpaperEngine": "glslang-WallpaperEngine",
"json": "json",
"kissfft": "kissfft",
"nixpkgs": "nixpkgs_2",
"quickjs": "quickjs",
"stb": "stb"
},
"locked": {
"lastModified": 1790172262,
"narHash": "sha256-gTnF4besYxSEFx0GTA35+/k81nE7WwvTIyJbIs1p20k=",
"path": "/home/andreas/Projects/linwallpaap/linux-wallpaperengine",
"type": "path"
},
"original": {
"path": "/home/andreas/Projects/linwallpaap/linux-wallpaperengine",
"type": "path"
}
},
"zen-browser": {
"inputs": {
"home-manager": "home-manager_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1788405419,
"narHash": "sha256-wuGizAVEmY0u15MYrhgy7AoQdHg+4Y2QiC+v/mxA8dc=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "fdb83f8fce835213fab7eab52c375926fe1a32dc",
"type": "github"
},
"original": {
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"type": "github"
}
}
},
"root": "root",
+152 -95
View File
@@ -2,110 +2,167 @@
description = "Nixos config flake test";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-26.05";
# Application exceptions; keep the system and graphics stack on stable.
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
# nixos-wsl = {
# url = "github:nix-community/NixOS-WSL/main";
# inputs.nixpkgs.follows = "nixpkgs";
# };
# Snowfallorg's Flake utility
snowfall-lib = {
url = "github:snowfallorg/lib";
inputs.nixpkgs.follows = "nixpkgs";
};
# game-of-life = {
# url = "github:local-interloper/game-of-life";
# inputs.nixpkgs.follows = "nixpkgs";
# };
# Add sops-nix for secrets management
sops-nix = {
url = "github:mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
# anikki = {
# url = "github:Hion-V/Anikki-flake";
# inputs.nixpkgs.follows = "nixpkgs";
# };
lanzaboote = {
url = "github:nix-community/lanzaboote/v1.1.0";
inputs.nixpkgs.follows = "nixpkgs";
};
# kwin-effects-forceblur = { Archived.
# url = "github:taj-ny/kwin-effects-forceblur";
# inputs.nixpkgs.follows = "nixpkgs";
# };
aagl = {
url = "github:ezKEa/aagl-gtk-on-nix/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
wallpaperengine.url = "path:/home/andreas/Projects/linwallpaap/linux-wallpaperengine";
simple-wallpaper-engine = {
url = "github:Maxnights/simple-linux-wallpaperengine-gui";
inputs.nixpkgs.follows = "nixpkgs";
};
millennium = {
url = "github:SteamClientHomebrew/Millennium?dir=packages/nix";
inputs.nixpkgs.follows = "nixpkgs";
};
codex-desktop = {
url = "github:ilysenko/codex-desktop-linux";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, nixos-wsl, nix, ... }@inputs:
outputs = inputs:
let
system =
if builtins ? currentSystem
then builtins.currentSystem
else "x86_64-linux";
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
installedPackages = (import ./installed-packages { inherit pkgs; });
in
{
nixosConfigurations.drivebystation-nixos-wsl = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
nixos-wsl.nixosModules.default
./systems/drivebystation-nixos-wsl/configuration.nix
{
system.stateVersion = "24.05";
wsl.enable = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
environment.systemPackages = [
lib = inputs.snowfall-lib.mkLib {
inherit inputs;
src = ./.;
]
++ installedPackages.mkPackages.packages;
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld-rs;
};
}
];
specialArgs = { inherit inputs; };
channels-config = {
allowUnfree = true;
allowUnfreePredicate = _: true;
permittedInsecurePackages = [ "openssl-1.1.1w" ];
};
# Configure Snowfall Lib, all of these settings are optional.
snowfall = {
# Tell Snowfall Lib to look in the `./nix/` directory for your
# Nix files.
root = ./.;
# Choose a namespace to use for your flake's packages, library,
# and overlays.
namespace = "my-namespace";
# Add flake metadata that can be processed by tools like Snowfall Frost.
meta = {
# A slug to use in documentation when displaying things like file paths.
name = "nixos-config-hionv";
# A title to show for your flake, typically the name.
title = "Hion's Personal NixOS Config";
};
};
};
nixosConfigurations.th0nkpad-nixos = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
./systems/th0nkpad-nixos/configuration.nix
{
system.stateVersion = "24.05";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.andreas = {
isNormalUser = true;
description = "Andreas";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
flatpak
gnome-software
soundwireserver
vscode
spotify
# thunderbird
];
};
in
lib.mkFlake {
inherit inputs;
src = ./.;
overlays = with inputs; [
inputs.millennium.overlays.default
];
nixos = with inputs; [
# disko.nixosModules.disko
# impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager
{
home-manager = {
useGlobalPkgs = false; # Disabled to allow system-level overlays to work
useUserPackages = true;
};
}
# nix-ld.nixosModules.nix-ld
# sops-nix.nixosModules.sops
# stylix.nixosModules.stylix
];
systems.modules.nixos = with inputs; [
# my-input.nixosModules.my-module
lanzaboote.nixosModules.lanzaboote ({ pkgs, lib, ... }: {
environment.systemPackages = [
# For debugging and troubleshooting Secure Boot.
pkgs.sbctl
];
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [
59010 #SoundWireServer
3389 #RDP
];
networking.firewall.allowedUDPPorts = [
59010 #SoundWireServer
3389 #RDP
];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
boot.loader.systemd-boot.configurationLimit = 4;
# Lanzaboote currently replaces the systemd-boot module.
# This setting is usually set to true in configuration.nix
# generated at installation time. So we force it to false
# for now.
boot.loader.systemd-boot.enable = lib.mkForce false;
# Install firefox.
programs.firefox.enable = true;
boot.lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
})
];
# Set up system Packages
environment.systemPackages = with pkgs; [
git
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
]
++ installedPackages.mkPackages.packages;
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld-rs;
};
services.flatpak.enable = true;
systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ];
script = ''
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
};
# services.xrdp.enable = true;
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
# # services.xrdp.openFirewall = true;
# # Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
# # If no user is logged in, the machine will power down after 20 minutes.
# systemd.targets.sleep.enable = false;
# systemd.targets.suspend.enable = false;
# systemd.targets.hibernate.enable = false;
# systemd.targets.hybrid-sleep.enable = false;
}
# The attribute set specified here will be passed directly to NixPkgs when
# instantiating the package set.
channels-config = {
# Allow unfree packages.
allowUnfree = true;
permittedInsecurePackages = [
"mbedtls-2.28.10" # needed for haxe 4.3.6
];
specialArgs = { inherit inputs; };
# # Allow certain insecure packages
# permittedInsecurePackages = [
# "firefox-100.0.0"
# ];
# # Additional configuration for specific packages.
# config = {
# # For example, enable smartcard support in Firefox.
# firefox.smartcardSupport = true;
# };
};
};
}
View File
@@ -0,0 +1,63 @@
{ config
, lib
, inputs
, pkgs
, ...
}:
let
inherit (lib.my-namespace) enabled;
system = pkgs.stdenv.hostPlatform.system;
simpleWallpaperEngine =
inputs.simple-wallpaper-engine.packages.${system}.default.override {
# The upstream GUI package otherwise puts nixpkgs' unmodified
# linux-wallpaperengine in its wrapped PATH.
pkgs = pkgs // {
linux-wallpaperengine = inputs.wallpaperengine.packages.${system}.default;
};
};
in
{
imports = [
# ../modules.nix
];
my-namespace.home = {
stream-tools = enabled;
gnome-customizations = enabled;
vesktop-appimage = enabled;
# networking = enabled;
# personal-apps = enabled;
# suites.laptop = enabled;
};
home = {
packages = [
pkgs.nil
pkgs.beeper
pkgs.mpv
pkgs.my-namespace.udev-steelseries
pkgs.qbittorrent
pkgs.hyfetch
pkgs.libreoffice
pkgs.localsend
simpleWallpaperEngine
# pkgs.vesktop
pkgs.obsidian
inputs.zen-browser.packages.x86_64-linux.default
# inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default # Archived.
];
};
xdg.autostart = {
enable = true;
entries = [
"${simpleWallpaperEngine}/share/applications/simple-wallpaper-engine-autostart.desktop"
];
};
# Auto-start linux-wallpaperengine for dual monitors via XDG autostart
# xdg.configFile."autostart/linux-wallpaperengine.desktop".text = ''
# [Desktop Entry]
# Type=Application
# Name=Wallpaper Engine
# Exec=${pkgs.my-namespace.linux-wallpaperengine}/bin/linux-wallpaperengine --screen-root DP-1 --bg 2935872330 --screen-root DP-2 --bg 2935872330 -f 12
# X-KDE-autostart-after=panel
# X-KDE-StartupNotify=false
# '';
}
@@ -0,0 +1,29 @@
{ config
, lib
, pkgs
, ...
}:
let
inherit (lib.my-namespace) enabled;
in
{
imports = [
# ../modules.nix
];
my-namespace.home = {
stream-tools = enabled;
gnome-customizations = enabled;
# networking = enabled;
# personal-apps = enabled;
# suites.laptop = enabled;
};
home = {
packages = [
pkgs.nil
pkgs.beeper
pkgs.my-namespace.udev-steelseries
pkgs.qbittorrent
#pkgs.vesktop
];
};
}
-21
View File
@@ -1,21 +0,0 @@
{ pkgs }:
let
baseBackages = [
pkgs.vim
pkgs.nixpkgs-fmt
];
utilPackages = [
pkgs.wget
pkgs.curl
pkgs.git
pkgs.ffmpeg
];
haxeDevelopmentPackages = [
pkgs.haxe
];
in
{
mkPackages = {
packages = baseBackages ++ utilPackages ++ haxeDevelopmentPackages;
};
}
-21
View File
@@ -1,21 +0,0 @@
{ pkgs }:
let
baseBackages = [
pkgs.vim
pkgs.nixpkgs-fmt
];
utilPackages = [
pkgs.wget
pkgs.curl
pkgs.git
pkgs.ffmpeg
];
haxeDevelopmentPackages = [
pkgs.haxe
];
in
{
mkPackages = {
packages = baseBackages ++ utilPackages ++ haxeDevelopmentPackages;
};
}
+32
View File
@@ -0,0 +1,32 @@
{lib, ...}: let
inherit (lib) mkOption strings;
inherit (lib.attrsets) filterAttrs mapAttrsToList;
inherit (lib.types) bool;
in rec {
disabled = {enable = false;};
enabled = {enable = true;};
ifThenElse = cond: t: f:
if cond
then t
else f;
mkOpt = type: default: description:
mkOption {inherit type default description;};
mkOpt' = type: default: mkOpt type default null;
mkBoolOpt = mkOpt bool;
mkBoolOpt' = mkOpt' bool;
mkPxeMenu = args:
''
UI menu.c32
TIMEOUT 300
''
+ strings.concatStringsSep "\n" (mapAttrsToList
(
name: value: ''
LABEL ${name}
MENU LABEL ${value.content.label}
KERNEL ${value.content.kernel}
append ${value.content.append}
''
)
(filterAttrs (_: v: v.condition) args));
}
+45
View File
@@ -0,0 +1,45 @@
{
# This is the merged library containing your namespaced library as well as all libraries from
# your flake's inputs.
lib
, # Your flake inputs are also available.
inputs
, # The namespace used for your flake, defaulting to "internal" if not set.
namespace
, # Additionally, Snowfall Lib's own inputs are passed. You probably don't need to use this!
snowfall-inputs
, ...
}:
{
# This will be available as `lib.my-namespace.mkPackages`.
mkPackages = {pkgs, ...}:
let
inherit pkgs;
# pkgs = namespace.;
# pkgs = snowfall-inputs.nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; };
baseBackages = [
pkgs.vim
pkgs.nixpkgs-fmt
];
utilPackages = [
pkgs.wget
pkgs.curl
pkgs.git
pkgs.ffmpeg
];
haxeDevelopmentPackages = [
pkgs.haxe
];
in
{
packages = baseBackages ++ utilPackages ++ haxeDevelopmentPackages;
};
# my-scope = {
# # This will be available as `lib.my-namespace.my-scope.my-scoped-helper-function`.
# my-scoped-helper-function = x: x;
# };
}
@@ -0,0 +1,18 @@
{ config
, lib
, ...
}:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.my-namespace.home.gnome-customizations;
in
{
options.my-namespace.home.gnome-customizations = {
enable = mkEnableOption "Enable GNOME customizations";
};
config = mkIf cfg.enable {
# GNOME settings
dconf.settings."org/gnome/desktop/wm/preferences".button-layout = "appmenu:,minimize,maximize,close";
dconf.settings."org/gnome/mutter".experimental-features = [ "scale-monitor-framebuffer" ];
};
}
+78
View File
@@ -0,0 +1,78 @@
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib
, # An instance of `pkgs` with your overlays and packages applied is also available.
pkgs
, # You also have access to your flake's inputs.
inputs
, # Additional metadata is provided by Snowfall Lib.
namespace
, # The namespace used for your flake, defaulting to "internal" if not set.
system
, # The system architecture for this host (eg. `x86_64-linux`).
target
, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
format
, # A normalized name for the system target (eg. `iso`).
virtual
, # A boolean to determine whether this system is a virtual target using nixos-generators.
systems
, # An attribute map of your defined hosts.
# All other arguments come from the module system.
config
, ...
}:
let
inherit (lib) mkIf;
inherit (lib.my-namespace) enabled;
imp = config.my-namespace.home.impermanence.enable;
in
{
config = {
home = {
packages = with pkgs; [
inetutils
hyfetch
tmux
# nerdfonts
p7zip
rclone
ripgrep
unzip
zip
];
sessionPath = [ "$HOME/bin" "$HOME/.local/bin" ];
shellAliases = {
# "df" = "duf -only local";
# "du" = "dust -xd1 --skip-total";
# # "ducks" = "du -chs * 2>/dev/null | sort -rh | head -11 && du -chs .* 2>/dev/null | sort -rh | head -11";
# "gmount" = "rclone mount google:/ ~/Drive/";
"df" = "df -h";
"nano" = "vim";
};
stateVersion = "24.05";
};
# manual = {
# html.enable = false;
# manpages.enable = false;
# json.enable = false;
# };
programs = {
bash = {
enable = true;
enableCompletion = true;
enableVteIntegration = true;
};
dircolors = enabled;
direnv = {
enable = true;
enableBashIntegration = true;
nix-direnv = enabled;
};
home-manager = enabled;
};
services = { };
};
}
+36
View File
@@ -0,0 +1,36 @@
{
pkgs,
config,
lib,
...
}: let
inherit (lib) mkEnableOption mkIf;
cfg = config.my-namespace.home.stream-tools;
in {
options.my-namespace.home.stream-tools = {
enable = mkEnableOption "Enable the Stream Machine Tools";
};
config = mkIf cfg.enable {
programs.obs-studio = {
enable = true;
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-backgroundremoval
obs-pipewire-audio-capture
obs-vaapi #optional AMD hardware acceleration
obs-gstreamer
obs-vkcapture
pkgs.my-namespace.droidcam-obs # Custom override with FFmpeg 6
];
};
home = {
packages = with pkgs; [
config.programs.obs-studio.finalPackage
droidcam
];
};
};
}
+49
View File
@@ -0,0 +1,49 @@
{ config, pkgs, lib, ... }:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.my-namespace.home.vesktop-appimage;
vesktopVersion = "1.6.4";
vesktopAppImage = pkgs.runCommand "vesktop-appimage" { } ''
cp ${pkgs.fetchurl {
url = "https://github.com/Vencord/Vesktop/releases/download/v${vesktopVersion}/Vesktop-${vesktopVersion}.AppImage";
sha256 = "sha256-o7A8DBQyutONeLp5rstq9hQko2xxbvYZvGGM8/YOQ8s=";
}} $out
chmod +x $out
'';
vesktopWrapped = pkgs.writeShellScriptBin "vesktop" ''
exec ${pkgs.appimage-run}/bin/appimage-run ${vesktopAppImage} "$@"
'';
vesktopIcon = pkgs.fetchurl {
url = "https://raw.githubusercontent.com/Vencord/Vesktop/main/build/icon.svg";
sha256 = "sha256-fQ+dvbPIb4AFd9f7JqIt7+twJdEMQF9jTTwrk5p1vn8=";
};
in
{
options.my-namespace.home.vesktop-appimage = {
enable = mkEnableOption "Install Vesktop (AppImage) with Vencord support";
};
config = mkIf cfg.enable {
xdg.dataFile."icons/hicolor/scalable/apps/vesktop.svg".source = vesktopIcon;
home.packages = [
pkgs.appimage-run
vesktopWrapped
];
xdg.desktopEntries.vesktop = {
name = "Vesktop";
comment = "Discord client with Vencord (AppImage)";
exec = "${vesktopWrapped}/bin/vesktop";
icon = "vesktop";
terminal = false;
type = "Application";
categories = [ "Network" "Chat" ];
};
};
}
+24
View File
@@ -0,0 +1,24 @@
{ lib, pkgs, config, namespace, ... }:
let
cfg = config.${namespace}.cs-tools;
in
{
options.${namespace}.cs-tools = {
enable = lib.mkEnableOption "CS tools including CS Demo Manager and PostgreSQL";
};
config = lib.mkIf cfg.enable {
services.postgresql = {
enable = true;
ensureDatabases = [ "csdm" ];
ensureUsers = [{
name = "csdm";
}];
};
environment.systemPackages = with pkgs; [
my-namespace.cs-demo-manager
postgresql
];
};
}
@@ -0,0 +1,160 @@
{ config, lib, pkgs, namespace, ... }:
let
cfg = config.${namespace}.desktop-environment;
in {
options.${namespace}.desktop-environment = {
cinnamon = {
enable = lib.mkEnableOption "Cinnamon desktop environment";
};
xfce = {
enable = lib.mkEnableOption "XFCE desktop environment";
};
gnome = {
enable = lib.mkEnableOption "GNOME desktop environment";
};
kde = {
enable = lib.mkEnableOption "KDE Plasma desktop environment";
};
cosmic = {
enable = lib.mkEnableOption "Cosmic desktop environment";
};
hyprland = {
enable = lib.mkEnableOption "hyprland Wayland shell";
};
};
config = lib.mkMerge [
(lib.mkIf cfg.xfce.enable {
services.xserver = {
enable = true;
desktopManager = {
cinnamon.enable = true;
};
};
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR =
lib.mkForce "${pkgs.gnome.nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
})
(lib.mkIf cfg.xfce.enable {
services.xserver = {
enable = true;
desktopManager = {
xfce.enable = true;
};
};
environment.systemPackages = with pkgs; [
xfce4-pulseaudio-plugin
xfce4-clipman-plugin
xfce4-screenshooter
xfce4-whiskermenu-plugin
thunar-archive-plugin
thunar-volman
gvfs
gnome-keyring
libgnome-keyring
];
})
(lib.mkIf cfg.gnome.enable {
services.xserver = {
enable = true;
};
services.desktopManager.gnome.enable = true;
services.gnome.gnome-remote-desktop.enable = true;
systemd.services.gnome-remote-desktop = {
wantedBy = [ "graphical.target" ]; # for starting the unit automatically at boot
};
services.displayManager.autoLogin.enable = false;
networking.firewall.allowedTCPPorts = [
3389
3390
];
# users.users.andreas.extraGroups = [ "sambashare" ];
# Enable Avahi (mDNS/DNS-SD) for discovery
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
# Enable GNOME sharing services
services.gnome.gnome-user-share.enable = true;
environment.systemPackages = with pkgs; [
gnome-tweaks
ptyxis
gnome-software
gnomeExtensions.pop-shell
gnome-remote-desktop
dconf-editor
glib-networking # Required gnome-remote-desktop dependency
];
systemd.user.services.gnome-remote-desktop.environment = {
VK_ICD_FILENAMES = "/dev/null";
LIBGL_ALWAYS_SOFTWARE = "1";
};
systemd.services.gnome-remote-desktop.environment = {
VK_ICD_FILENAMES = "/dev/null";
LIBGL_ALWAYS_SOFTWARE = "1";
};
environment.sessionVariables.XDG_DATA_DIRS = lib.mkAfter [
"${pkgs.gnome-remote-desktop}/share"
];
environment.pathsToLink = [
"/share/gsettings-schemas"
"/share"
];
})
(lib.mkIf cfg.kde.enable {
services.xserver.enable = true;
services.desktopManager.plasma6.enable = true;
environment.sessionVariables = {
# Forces KWin to use the legacy DRM interface so "Allow Tearing" actually works
# KWIN_DRM_NO_AMS = "1";
# Disables the new triple buffering in Plasma 6.1+ to reduce latency
# KWIN_DRM_DISABLE_TRIPLE_BUFFERING = "1";
# KWIN_USE_HWCURSOR = "0";
# KWIN_DRM_USE_EGL_STREAMS = "0";
# MESA_VK_WSI_PRESENT_MODE = "immediate";
# vblank_mode = "0";
};
environment.systemPackages = with pkgs; [
kdePackages.qtwebsockets
kdePackages.qtwebchannel
kdePackages.korganizer
kdePackages.akonadi
kdePackages.akonadi-calendar
kdePackages.akonadi-contacts
kdePackages.kaddressbook
kdePackages.kmail
kdePackages.kdepim-runtime
kdePackages.kontact
kdePackages.kidentitymanagement
kdePackages.libkdepim
kdePackages.kwin
kdePackages.plasma-workspace
gnome-keyring
libgnome-keyring
];
})
(lib.mkIf cfg.cosmic.enable {
services.desktopManager.cosmic.enable = true;
services.desktopManager.cosmic.xwayland.enable = true;
environment.systemPackages = with pkgs; [
gnome-keyring
libgnome-keyring
];
})
(lib.mkIf cfg.hyprland.enable {
programs.hyprland.enable = true; # enable Hyprland
environment.systemPackages = with pkgs; [
pkgs.kitty # required for the default Hyprland config
];
})
];
}
+21
View File
@@ -0,0 +1,21 @@
{
config,
lib,
pkgs,
namespace,
...
}:
let
cfg = config.${namespace}.distrobox;
in
{
options.${namespace}.distrobox = {
enable = lib.mkEnableOption "Distrobox with a Podman container backend";
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.distrobox ];
virtualisation.podman.enable = true;
};
}
@@ -0,0 +1,23 @@
{
config,
lib,
pkgs,
namespace,
...
}:
let
cfg = config.${namespace}.file-organization;
in
{
options.${namespace}.file-organization = {
enable = lib.mkEnableOption "file organization software";
};
config = lib.mkIf cfg.enable {
environment.systemPackages = with pkgs; [
ranger
fsearch
qdirstat
veracrypt
];
};
}
+30
View File
@@ -0,0 +1,30 @@
{ config, lib, pkgs, namespace, options, ... }:
let
cfg = config.${namespace}.gnome-keyring;
in {
options.${namespace}.gnome-keyring = {
enable = lib.mkEnableOption "Enable GNOME Keyring integration";
};
config = lib.mkIf cfg.enable {
services.gnome.gnome-keyring.enable = true;
# PAM configuration for automatic keyring unlock
security.pam.services.sddm.enableGnomeKeyring = true;
security.pam.services.login.enableGnomeKeyring = true;
security.pam.services.gdm.enableGnomeKeyring = true;
# Make KDE apps use GNOME Keyring as the Secret Service backend
environment.variables = {
# Set GNOME Keyring as the SSH agent
SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/keyring/ssh";
};
environment.systemPackages = with pkgs; [
seahorse # GUI for managing the keyring
gcr # Keyring integration
libsecret # Secret Service API library for KDE apps
];
};
}
+120
View File
@@ -0,0 +1,120 @@
{ config, lib, pkgs, namespace, ... }:
let
cfg = config.${namespace}.keychron-keyboard;
in {
options.${namespace}.keychron-keyboard = {
enable = lib.mkEnableOption "Enable Keychron keyboard configuration";
# Add additional options here, e.g. vendor/product IDs, keymaps, etc.
};
config = lib.mkIf cfg.enable {
# Create the plugdev group and ensure users can access HID devices
users.groups.plugdev = {};
hardware.keyboard.qmk.keychronSupport = true;
services.udev.packages = with pkgs; [ qmk qmk-udev-rules ];
# Example udev rule or keychron-specific settings
services.udev.extraRules = ''
# Atmel DFU
### ATmega16U2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess"
### ATmega32U2
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess"
### ATmega16U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess"
### ATmega32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
### AT90USB64
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
### AT90USB162
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
### AT90USB128
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
# Input Club
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess"
# STM32duino
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess"
# STM32 DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
# BootloadHID
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess"
# USBAspLoader
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
# USBtinyISP
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess"
# ModemManager should ignore the following devices
# Atmel SAM-BA (Massdrop)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
# Caterina (Pro Micro)
## pid.codes shared PID
### Keyboardio Atreus 2 Bootloader
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## Spark Fun Electronics
### Pro Micro 3V3/8MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Pro Micro 5V/16MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### LilyPad 3V3/8MHz (and some Pro Micro clones)
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## Pololu Electronics
### A-Star 32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## Arduino SA
### Leonardo
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Micro
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## Adafruit Industries LLC
### Feather 32U4
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### ItsyBitsy 32U4 3V3/8MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### ItsyBitsy 32U4 5V/16MHz
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
## dog hunter AG
### Leonardo
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
### Micro
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
# hid_listen
KERNEL=="hidraw*", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
# hidraw devices for WebHID (Keychron Launcher, VIA)
SUBSYSTEM=="hidraw", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
# hid bootloaders
## QMK HID
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess"
## PJRC's HalfKay
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess"
# APM32 DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess"
# GD32V DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess"
# WB32 DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess"
# AT32 DFU
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", TAG+="uaccess"
'';
#
# home.file.".config/some-config".text = ''
# # keyboard-related configuration
# '';
};
}
+53
View File
@@ -0,0 +1,53 @@
############################################
#
# Shared System Configuration module that's always enabled by default courtesy of snowfall lib
#
############################################
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib
, # An instance of `pkgs` with your overlays and packages applied is also available.
pkgs
, # You also have access to your flake's inputs.
inputs
, # Additional metadata is provided by Snowfall Lib.
namespace
, # The namespace used for your flake, defaulting to "internal" if not set.
system
, # The system architecture for this host (eg. `x86_64-linux`).
target
, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
format
, # A normalized name for the system target (eg. `iso`).
virtual
, # A boolean to determine whether this system is a virtual target using nixos-generators.
systems
, # An attribute map of your defined hosts.
# All other arguments come from the module system.
config
, ...
}:
let
inherit (lib) mkIf;
inherit (lib.my-namespace) enabled;
in
{
config = {
boot = { };
console = { };
environment = {
systemPackages =
(with pkgs; [
age
wget
sops
bitwarden-desktop #replaced bitwarden
bitwarden-cli
cowsay
remmina
]);
};
};
}
@@ -0,0 +1,23 @@
{ config, lib, pkgs, namespace, ... }:
let
cfg = config.${namespace}.performance-tuning;
in {
options.${namespace}.performance-tuning.enable = lib.mkEnableOption "performance tuning settings for gaming and general use";
config = lib.mkIf cfg.enable {
boot.kernelParams = [
"nvme_core.default_ps_max_latency_us=0"
];
boot.kernel.sysctl = {
"vm.swappiness" = 10;
"vm.dirty_ratio" = 10;
"vm.dirty_background_ratio" = 5;
};
services.pipewire.extraConfig.pipewire."context.properties" = {
"default.clock.quantum" = 256;
"default.clock.min-quantum" = 128;
};
};
}
@@ -0,0 +1,58 @@
{ config, lib, pkgs, namespace, ... }:
let
cfg = config.${namespace}.rtl8125-recovery;
recovery = pkgs.writeShellApplication {
name = "rtl8125-recover";
runtimeInputs = with pkgs; [ coreutils gnugrep pciutils ethtool systemd ];
text = builtins.readFile ./recover.sh;
};
in {
options.${namespace}.rtl8125-recovery = {
enable = lib.mkEnableOption "RTL8125 PCI recovery after boot and resume";
pciAddress = lib.mkOption {
type = lib.types.str;
default = "0000:0a:00.0";
description = "PCI address of the onboard RTL8125 controller.";
};
bridgeAddress = lib.mkOption {
type = lib.types.str;
default = "0000:06:03.0";
description = "Immediate parent PCI bridge of the controller.";
};
};
config = lib.mkIf cfg.enable {
systemd.services.rtl8125-recovery = {
description = "Recover RTL8125 from failed PCI power restoration";
wantedBy = [ "multi-user.target" ];
after = [ "NetworkManager.service" ];
environment = {
NIC_PCI = cfg.pciAddress;
NIC_BRIDGE = cfg.bridgeAddress;
};
serviceConfig = {
Type = "oneshot";
ExecStart = lib.getExe recovery;
TimeoutStartSec = "90s";
StateDirectory = "rtl8125-recovery";
StateDirectoryMode = "0700";
UMask = "0077";
};
};
# sleep.target is stopped after resume. Queue recovery separately so its
# grace period does not hold up the sleep transaction or user sessions.
systemd.services.rtl8125-resume = {
description = "Queue RTL8125 recovery after waking";
wantedBy = [ "sleep.target" ];
before = [ "sleep.target" ];
unitConfig.StopWhenUnneeded = true;
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
ExecStop = "${pkgs.systemd}/bin/systemctl --no-block start rtl8125-recovery.service";
};
};
};
}
+89
View File
@@ -0,0 +1,89 @@
# Called once after boot or resume. No network access is required.
set -euo pipefail
nic="/sys/bus/pci/devices/$NIC_PCI"
bridge="/sys/bus/pci/devices/$NIC_BRIDGE"
log() { echo "rtl8125-recovery: $*"; }
# Let normal PCI and network resume finish before diagnosing anything.
sleep 10
if [[ ! -d "$bridge" ]]; then
log "Parent bridge $NIC_BRIDGE is absent; refusing recovery."
exit 1
fi
if [[ $(cat "$bridge/vendor") != 0x1022 || $(cat "$bridge/device") != 0x43f5 ]]; then
log "Parent bridge identity changed; refusing recovery."
exit 1
fi
if [[ -d "$nic" ]]; then
if [[ $(cat "$nic/vendor") != 0x10ec || $(cat "$nic/device") != 0x8125 ]]; then
log "Device at $NIC_PCI is not an RTL8125; refusing recovery."
exit 1
fi
if [[ $(dirname "$(readlink -f "$nic")") != "$(readlink -f "$bridge")" ]]; then
log "NIC is no longer directly below the configured bridge; refusing recovery."
exit 1
fi
power=$(cat "$nic/power_state")
command=$(timeout 5 setpci -s "$NIC_PCI" COMMAND 2>/dev/null || true)
# Both memory decoding and bus mastering should be enabled on this host.
# Disconnected cables do not disable these PCI command bits.
if [[ "$power" != D3cold && "$command" =~ ^[[:xdigit:]]{4}$ ]] &&
(( (16#$command & 6) == 6 )); then
log "PCI state healthy ($power, COMMAND=$command); no recovery needed."
exit 0
fi
# An administratively disabled NIC should not be automatically reset.
netdirs=("$nic"/net/*)
if [[ -e "${netdirs[0]}/flags" ]]; then
flags=$(cat "${netdirs[0]}/flags")
if (( (flags & 1) == 0 )); then
log "Interface is administratively down; leaving it alone."
exit 0
fi
fi
log "Failed PCI state: power=$power COMMAND=$command."
else
log "NIC missing; attempting one rescan of its known bridge."
fi
# Retain evidence from the latest failure without accumulating unlimited logs.
evidence="${STATE_DIRECTORY:-/var/lib/rtl8125-recovery}/last-failure.log"
mkdir -p "$(dirname "$evidence")"
{
date -Is
timeout 5 lspci -s "$NIC_PCI" -vv || true
timeout 5 lspci -s "$NIC_BRIDGE" -vv || true
journalctl -b -k --since '10 minutes ago' -n 250 --no-pager || true
} > "$evidence" 2>&1
# This is the remove/rescan recovery that worked on this machine. Never reset
# or remove the parent bridge, which could affect other hardware.
if [[ -d "$nic" ]]; then
echo 1 > "$nic/remove"
fi
echo 1 > "$bridge/rescan"
for ((attempt=0; attempt<20; attempt++)); do
netdirs=("$nic"/net/*)
if [[ -e "${netdirs[0]}/ifindex" ]]; then
iface=$(basename "${netdirs[0]}")
power=$(cat "$nic/power_state")
command=$(timeout 5 setpci -s "$NIC_PCI" COMMAND 2>/dev/null || true)
if [[ "$power" == D0 && "$command" =~ ^[[:xdigit:]]{4}$ ]] &&
(( (16#$command & 6) == 6 )); then
# NetworkManager also reapplies the saved profile. Explicitly
# restore WoL here so recovery does not depend on its timing.
ethtool -s "$iface" wol g
if ! ethtool "$iface" | grep -Eq '^[[:space:]]*Wake-on: g$'; then
log "PCI recovered, but magic-packet WoL could not be confirmed."
exit 1
fi
log "Recovered $iface in D0; magic-packet WoL enabled. Evidence: $evidence"
exit 0
fi
fi
sleep 1
done
log "Recovery did not restore operational PCI state; no further attempt this invocation."
exit 1
+92
View File
@@ -0,0 +1,92 @@
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
# The namespace used for your flake, defaulting to "internal" if not set.
namespace,
# The system architecture for this host (eg. `x86_64-linux`).
system,
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
target,
# A normalized name for the system target (eg. `iso`).
format,
# A boolean to determine whether this system is a virtual target using nixos-generators.
virtual,
# An attribute map of your defined hosts.
systems,
# All other arguments come from the system system.
config
, ...
}:{
config = {
# programs.gamescope = {
# enable = true;
# capSysNice = true;
# };
environment.systemPackages = with pkgs; [
protonup-ng # Tool to install and manage Proton-GE
lutris
faugus-launcher
vkd3d
dxvk
protontricks
mangohud
vkbasalt
gamescope
corefonts
];
hardware.uinput.enable = true;
users.users.andreas.extraGroups = [ "input" ];
# Explicitly register the desktop MIME scheme handler
xdg.mime = {
enable = true;
defaultApplications = {
"x-scheme-handler/steam" = [ "steam.desktop" ];
"x-scheme-handler/steamlink" = [ "steam.desktop" ];
};
};
programs.gamescope.enable = true;
programs.steam.gamescopeSession = {
enable = true;
args = [
"-w" "1920"
"-h" "1080"
"-r" "172"
"-e" # Enable steam integration
"--steam"
"--prefer-outpout DP-4"
"--prefer-vk-device 8086:e20b" # lspci -nn | grep VGA
];
env = {
# WLR_RENDERER = "vulkan";
# DXVK_HDR = "0 ";
# ENABLE_GAMESCOPE_WSI = "0";
# WINE_FULLSCREEN_FSR = "1";
# SDL_VIDEODRIVER = "wayland,x11"; # Games allegedly prefer X11
};
};
programs.steam = {
enable = true;
package = pkgs.millennium-steam.override {
extraPkgs = pkgs: with pkgs; [
gamemode
noto-fonts-color-emoji
];
extraEnv = {
# SDL_VIDEODRIVER = "wayland,x11";
# SDL_VIDEODRIVER = "x11,wayland";
};
};
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
};
};
}
@@ -0,0 +1,71 @@
{ lib, pkgs, inputs, config, namespace, ... }:
let
# Import the plugin as a package derivation from your local repo
# Pass the 'inputs' parameter explicitly to make wallpaper-engine-plugin-src available
wallpaperEnginePkg = pkgs.callPackage ../../../packages/wallpaper-engine-kde-plugin/default.nix { inherit inputs; };
in {
options.${namespace}.wallpaper-engine-kde-plugin.enable =
lib.mkEnableOption "Enable Wallpaper Engine KDE plugin";
config = lib.mkIf config.${namespace}.wallpaper-engine-kde-plugin.enable {
# Add the imported package and helper script to systemPackages
environment.systemPackages = [
wallpaperEnginePkg
(pkgs.writeShellScriptBin "wallpaper-engine-kde-setup" ''
#!/usr/bin/env bash
set -e
STEAM_DIR="$HOME/.local/share/Steam"
WORKSHOP_PATH="$STEAM_DIR/steamapps/workshop/content/431960"
echo "Wallpaper Engine KDE Plugin Setup Helper"
echo "========================================"
# Check if Steam directory exists
if [ -d "$STEAM_DIR" ]; then
echo "✅ Steam directory found at: $STEAM_DIR"
if [ -d "$WORKSHOP_PATH" ]; then
echo "✅ Workshop content directory found at: $WORKSHOP_PATH"
echo " You can use this path in the wallpaper settings."
else
echo "⚠️ Workshop content directory not found at the expected location."
echo " Please locate your Steam workshop content for Wallpaper Engine (app ID 431960)"
fi
else
echo "⚠️ Steam directory not found at: $STEAM_DIR"
echo " Please install Steam and Wallpaper Engine first."
fi
# Check symlinks
if [ -L "$HOME/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde" ]; then
echo "✅ Plugin symlink is correctly set up"
else
echo "⚠️ Plugin symlink not found, attempting to create it..."
mkdir -p "$HOME/.local/share/plasma/wallpapers"
ln -sf /run/current-system/sw/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde \
"$HOME/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde"
echo " Done! Symlink created."
fi
echo ""
echo "To use Wallpaper Engine wallpapers in KDE:"
echo "1. Right-click on desktop → Configure Desktop and Wallpaper"
echo "2. Select 'Wallpaper Engine' from the wallpaper type list"
echo "3. Set the path to your workshop content directory"
'')
];
systemd.user.services.wallpaperEngineSymlink = {
description = "Symlink Wallpaper Engine plugin for Plasma";
wantedBy = [ "graphical-session.target" ];
serviceConfig = {
Type = "oneshot";
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/.local/share/plasma/wallpapers";
ExecStart = "${pkgs.coreutils}/bin/ln -sfn /run/current-system/sw/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde %h/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde";
RemainAfterExit = true;
};
};
};
}
View File
@@ -0,0 +1,7 @@
{ ... }:
final: prev: {
openldap = prev.openldap.overrideAttrs {
doCheck = !prev.stdenv.hostPlatform.isi686;
};
}
+105
View File
@@ -0,0 +1,105 @@
# overlays/vscode-modernized/default.nix
{ ... }:
final: prev:
let
modernized = prev.fetchFromGitHub {
owner = "Sukarth";
repo = "VS-Code-Modernized";
# Pin this once working.
rev = "main";
hash = "sha256-QSmdmCoF2L42ZUxYpJXq6REOdNObK9DBI6c0GEQ32rQ=";
};
injectModernized = vscodePkg:
vscodePkg.overrideAttrs (old: {
postInstall = (old.postInstall or "") + ''
(
set -euo pipefail
candidates=(
"$out/lib/vscode/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html"
"$out/lib/vscode/resources/app/out/vs/code/electron-sandbox/workbench/workbench.esm.html"
"$out/lib/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html"
"$out/lib/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.esm.html"
)
workbench=""
for candidate in "''${candidates[@]}"; do
if [ -f "$candidate" ]; then
workbench="$candidate"
break
fi
done
if [ -z "$workbench" ]; then
echo "VS Code Modernized: could not find workbench.html" >&2
find "$out/lib/vscode/resources/app/out/vs" -name 'workbench*.html' -print >&2 || true
exit 1
fi
# Build one self-contained CSS file.
cat > /tmp/vscode-modernized-inline.css <<'EOF'
/* VS Code Modernized dynamic settings */
:root {
--vscode-modernized-spacing: 0.35rem;
--vscode-modernized-border-radius: 0.5rem;
--vscode-modernized-tab-spacing: 0.2rem;
}
EOF
cat "${modernized}/styles/styles.css" >> /tmp/vscode-modernized-inline.css
# Smoke-test styles. Remove later if you want.
cat >> /tmp/vscode-modernized-inline.css <<'EOF'
/* Modernized dims inactive icons to 20%; let the theme control contrast instead. */
.monaco-workbench .part.activitybar .monaco-action-bar .action-item.icon:not(.disabled) {
opacity: 1;
}
/* Nix smoke test: these should be very visible */
.monaco-workbench .part.sidebar,
.monaco-workbench .part.auxiliarybar,
.monaco-workbench .part.panel,
.monaco-workbench .editor-group-container,
.monaco-workbench .tabs-container,
.monaco-workbench .tab,
.monaco-workbench .monaco-list-row,
.monaco-workbench .quick-input-widget {
border-radius: var(--vscode-modernized-border-radius) !important;
overflow: hidden !important;
}
.monaco-workbench .part.sidebar,
.monaco-workbench .part.panel,
.monaco-workbench .editor-group-container {
margin: var(--vscode-modernized-spacing) !important;
}
EOF
css="$(sed \
-e 's/&/\&amp;/g' \
-e 's/</\&lt;/g' \
-e 's/>/\&gt;/g' \
/tmp/vscode-modernized-inline.css)"
inject="
<!-- VS Code Modernized - Nix injected -->
<style id=\"vscode-modernized-nix\">
$css
</style>
<!-- /VS Code Modernized - Nix injected -->
"
substituteInPlace "$workbench" \
--replace-fail '</html>' "$inject
</html>"
)
'';
});
in
{
vscode-modernized = injectModernized prev.vscode;
}
+43
View File
@@ -0,0 +1,43 @@
{ lib
, stdenv
, fetchurl
, appimageTools
, postgresql
, procps
, ...
}:
let
pname = "cs-demo-manager";
version = "3.18.2";
src = fetchurl {
url = "https://github.com/akiver/cs-demo-manager/releases/download/v${version}/CS-Demo-Manager-${version}.AppImage";
hash = "sha256-REEhqvfYSKD7EyIYJVlbkQu0h5FZcofc8X7Zhu1xZnA="; # You need to add the hash after first build attempt
};
appimageContents = appimageTools.extract {
inherit pname version src;
};
in
appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: [ postgresql procps ];
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/cs-demo-manager.desktop $out/share/applications/cs-demo-manager.desktop
install -m 444 -D ${appimageContents}/cs-demo-manager.png $out/share/icons/hicolor/512x512/apps/cs-demo-manager.png
substituteInPlace $out/share/applications/cs-demo-manager.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
'';
meta = with lib; {
description = "An application to manage Counter-Strike demos";
homepage = "https://github.com/akiver/cs-demo-manager";
license = licenses.gpl2Plus;
platforms = [ "x86_64-linux" ];
maintainers = [ ];
};
}
+46
View File
@@ -0,0 +1,46 @@
{
lib,
pkgs,
stdenv,
fetchurl,
autoPatchelfHook,
namespace,
...
}:
stdenv.mkDerivation rec {
pname = "droidcam-obs";
version = "2.4.1";
src = fetchurl {
url = "https://github.com/dev47apps/droidcam-obs-plugin/releases/download/${version}/droidcam_obs_${version}_linux_x86_64.zip";
sha256 = "sha256-18IjC3+WR5XLo464RuwAtWRNSpQcsnarXu56CrxCMhM=";
};
nativeBuildInputs = [ pkgs.unzip autoPatchelfHook ];
buildInputs = with pkgs; [
stdenv.cc.cc.lib
obs-studio
];
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out/lib/obs-plugins
mkdir -p $out/share/obs/obs-plugins/droidcam-obs
cp bin/64bit/*.so $out/lib/obs-plugins/
cp -r data/* $out/share/obs/obs-plugins/droidcam-obs/
runHook postInstall
'';
meta = with lib; {
description = "DroidCam OBS Plugin - Use your phone as a camera in OBS (FFmpeg 7 compatible)";
homepage = "https://www.dev47apps.com/obs/";
license = licenses.unfree;
platforms = platforms.linux;
};
}
+135
View File
@@ -0,0 +1,135 @@
{
lib,
stdenv,
fetchFromGitHub,
autoPatchelfHook,
cmake,
file,
pkg-config,
python3,
SDL2,
SDL2_mixer,
cef-binary,
egl-wayland,
ffmpeg,
fftw,
glew,
glfw,
glm,
gmp,
kissfftFloat,
libxau,
libxdmcp,
libxpm,
libxrandr,
libxxf86vm,
libdecor,
libffi,
libglut,
libpng,
libpulseaudio,
lz4,
mpv,
wayland,
wayland-protocols,
wayland-scanner,
zlib,
nix-update-script,
inputs,
namespace, ...
}:
let
cef = cef-binary.override {
version = "135.0.17"; # follow upstream. https://github.com/Almamu/linux-wallpaperengine/blob/b39f12757908eda9f4c1039613b914606568bb84/CMakeLists.txt#L47
gitRevision = "cbc1c5b";
chromiumVersion = "135.0.7049.52";
srcHashes = {
aarch64-linux = "sha256-LK5JvtcmuwCavK7LnWmMF2UDpM5iIZOmsuZS/t9koDs=";
x86_64-linux = "sha256-JKwZgOYr57GuosM31r1Lx3DczYs35HxtuUs5fxPsTcY=";
};
};
in
stdenv.mkDerivation (finalAttrs: {
pname = "linux-wallpaperengine";
version = "0-unstable-2025-12-19";
src = fetchFromGitHub {
owner = "Almamu";
repo = "linux-wallpaperengine";
rev = "f79c29f067b2613895419e351033582464577154";
fetchSubmodules = true;
hash = "sha256-AISdouVqMXTYErQoT7oM5H+vlrw03NtpI9FqDwZ0J9A=";
};
nativeBuildInputs = [
autoPatchelfHook
cmake
file
pkg-config
python3
];
buildInputs = [
SDL2
SDL2_mixer
egl-wayland
ffmpeg
fftw
glew
glfw
glm
gmp
kissfftFloat
libxau
libxdmcp
libxpm
libxrandr
libxxf86vm
libdecor
libffi
libglut
libpng
libpulseaudio
lz4
mpv
wayland
wayland-protocols
wayland-scanner
zlib
];
cmakeFlags = [
"-DCEF_ROOT=${cef}"
"-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/share/linux-wallpaperengine"
];
postInstall = ''
rm -rf $out/bin $out/lib $out/include
chmod 755 $out/share/linux-wallpaperengine/linux-wallpaperengine
mkdir $out/bin
ln -s $out/share/linux-wallpaperengine/linux-wallpaperengine $out/bin/linux-wallpaperengine
'';
preFixup = ''
find $out/share/linux-wallpaperengine -type f -exec file {} \; | grep 'ELF' | cut -d: -f1 | while read -r elf_file; do
patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$elf_file"
done
'';
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
meta = {
description = "Wallpaper Engine backgrounds for Linux";
homepage = "https://github.com/Almamu/linux-wallpaperengine";
license = lib.licenses.gpl3Plus;
mainProgram = "linux-wallpaperengine";
maintainers = [ ];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
hydraPlatforms = [ "x86_64-linux" ]; # Hydra "aarch64-linux" fails with "Output limit exceeded"
};
})
+89
View File
@@ -0,0 +1,89 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
gobject-introspection,
glib,
gnome,
mutter,
cairo,
gsettings-desktop-schemas,
wayland,
libglvnd,
libxfixes,
libxi,
atk,
libxkbcommon,
clutter,
cmake,
gnome-shell,
lcms2,
}:
stdenv.mkDerivation {
pname = "gnome-rounded-blur";
version = "unstable-2026-06-11";
src = fetchFromGitHub {
owner = "kancko";
repo = "gnome-rounded-blur";
# Replace this with a fixed commit.
rev = "master";
# Run once with lib.fakeHash, then replace with the real hash.
hash = "sha256-MBeb0/Drt0UQ/K8UaW93ae9OaV3L5nhFZB2tPwj47co=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
gobject-introspection
cmake
];
buildInputs = [
glib
mutter
cairo
gsettings-desktop-schemas
wayland
libglvnd
libxfixes
libxi
atk
libxkbcommon
clutter
(lib.getDev mutter)
(lib.getLib mutter)
(lib.getDev gnome-shell)
(lib.getLib gnome-shell)
lcms2 # required by mutter-clutter
];
postFixup = ''
for libfile in $out/lib/libblur-effect-1.0.so*; do
if [ -f "$libfile" ] && [ ! -L "$libfile" ]; then
patchelf --set-rpath "${
lib.makeLibraryPath [
glib
wayland
(lib.getLib mutter)
]
}:$out/lib" "$libfile"
fi
done
'';
# The upstream meson file installs:
# - libblur-effect-1.0.so*
# - Blur-1.0.gir
# - Blur-1.0.typelib
# See src/meson.build.
meta = {
description = "Rounded blur GObject library for GNOME Shell extensions";
homepage = "https://github.com/kancko/gnome-rounded-blur";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
};
}
+53
View File
@@ -0,0 +1,53 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
glib,
}:
stdenvNoCC.mkDerivation rec {
pname = "rounded-windows-bms";
version = "2.2.0-bms-fix";
src = fetchFromGitHub {
owner = "MeguMario";
repo = "rounded-windows";
rev = "bms-fix";
# Put a fake hash first; Nix will tell you the real one.
hash = "sha256-5llnqW1dK3jsMRfvxb1VrSkZ/DSXsfU3PiNmpbb5CLw=";
};
nativeBuildInputs = [
glib
];
installPhase = ''
runHook preInstall
uuid="rounded-windows@marcosgt.github.io"
extension_dir="$out/share/gnome-shell/extensions/$uuid"
mkdir -p "$extension_dir"
cp metadata.json extension.js effect.js prefs.js stylesheet.css "$extension_dir/"
mkdir -p "$extension_dir/schemas"
cp schemas/*.xml "$extension_dir/schemas/"
glib-compile-schemas "$extension_dir/schemas"
runHook postInstall
'';
passthru = {
extensionUuid = "rounded-windows@marcosgt.github.io";
};
meta = {
description = "Rounded Window Corners GNOME extension with Blur-My-Shell compatibility fix";
homepage = "https://github.com/MeguMario/rounded-windows/tree/bms-fix";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.linux;
};
}
+48
View File
@@ -0,0 +1,48 @@
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# You also have access to your flake's inputs.
inputs,
# The namespace used for your flake, defaulting to "internal" if not set.
namespace,
# All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers
# programmatically or you may add the named attributes as arguments here.
pkgs,
stdenv,
fetchFromGitHub,
...
}:
stdenv.mkDerivation {
pname = "steelseries-udev-rules";
version = "unstable-2024-11-10";
src = fetchFromGitHub {
owner = "MiddleMan5";
repo = "steelseries-linux";
rev = "d93dfdb6daeec150578e85e25b2e9df79e9539b7";
sha256 = "sha256-yPw8QFKhlqb6lxQyYjBz34pEEfTVk1Yp9jFWdX5yH2k=";
};
dontBuild = true;
dontConfigure = true;
installPhase = ''
mkdir -p $out/lib/udev/rules.d
cp resources/98-steelseries.rules $out/lib/udev/rules.d/98-steelseries.rules
mkdir -p $out/etc/udev/rules.d
cp resources/98-steelseries-init.py $out/etc/udev/rules.d/98-steelseries-init.py
chmod +x $out/etc/udev/rules.d/98-steelseries-init.py
'';
meta = with lib; {
description = "udev rules for Steelseries devices";
license = licenses.unfree;
maintainers = with maintainers; [ asymmetric ];
platforms = platforms.linux;
homepage = "https://github.com/MiddleMan5/steelseries-linux";
};
}
+51
View File
@@ -0,0 +1,51 @@
private-keys:
andreas: ENC[AES256_GCM,data:UMOMU5vd+kOvReBP+noCPopsP90uAx0UM5mLgsXX1obks3DvcW28yVpLR952CroDzUOYwpkQ+7MheBznZxVfG6+b36rzphIUyDXArix3c90mak+4fhkUFAxsAW2VeKzUTGEBIUiejtfW4sBaHoQVWpDBSLbGajB9GzBXspNR+J/nriD8xas9ZkvYvFM4BIKM5vFNQxCGUy44IyHffxtX9kHjboiSeIgK7Gj1hA4iC/byIBqTLzJOCBHQs3irs/CSbZgFR7MFuiqR2ZWVdJ1dKAr9fejd36muymsutVUDzTsq/P1Id0YlgnYVcpJxAMHKq8QEZu8yNLEzkr/QMxs5Z2Bu93CkiJDAGXJZvtipfLX0UtIkResCLBD40EKty8U2OnKwm4k3xzJoHRTZ3qVnJQGESYHTZHHumRRcDYJnQBL6iav50mG0KS0mfcoetoDTpQfxsi3OnLO7kjSP2fE8sSJRi363nfciBwH/TTf911HhD5ruOo3bQeryjtGN8Y+PAqvrILiIKPODvoRVqaka,iv:lvlaQwEzDpvdSjH6Z4NrzABifyVP5jyzERHP72CSbis=,tag:rmSINraNXFZElfFHZDqeeQ==,type:str]
andreas-password: ENC[AES256_GCM,data:XBvfrBSrlKzpO9vgmwQYJshlJH1OCMrcdfYMvp32ZOFZSf4/GrM/FRaatS7to+0ZgJlLNt+npSK0nwV8NXvwgHgN8bsuDiL7KQ==,iv:lD0ruX5AVKVfdA0/vpeUAPf5cTSExyaF8VWebFkbXV8=,tag:nAuwEkHGtlEzu8Qbe0ECdA==,type:str]
#ENC[AES256_GCM,data:aX2EVkOK7ivoDTzSMmonY64dU6mnRjE83sA3MFIPnzeJ5snZN8WY9PF1CmkDU/ZVB+j9Law=,iv:sPfVyBuGCyd/Y9Lw9cl0akA2IUE5/Yi5C07dh6Ioyu0=,tag:tOT5uHVdgYG+/E4ye0QcFg==,type:comment]
#ENC[AES256_GCM,data:djH8vAA+TvvbA/Jsuvca7E4o6pYTfKGGdK4=,iv:5Dw0niDhi7P6P9XRz2qgSL3CxpiXBtIsekOMycroLrA=,tag:OSvPPgq0kV4JskrQ86Qp5A==,type:comment]
#ENC[AES256_GCM,data:C1BstOPXnCf4Cr8UlanCegA=,iv:k9Me959xb6Weg/yArAIg5kWH36se/yyGWNQUu314uw0=,tag:x0bTh0bsYxbCX5GObsGI5g==,type:comment]
#ENC[AES256_GCM,data:Q0vsUrzlOgDICeIxXtc=,iv:gR8sYrtE/v9GGDEO2nj/v5IHr9ycXhvv1VcB/dEH/FU=,tag:FBde9vkRM/drFtpTWfLcNg==,type:comment]
#ENC[AES256_GCM,data:LoKuLBSze19z0U/45DBFt6aEJBs=,iv:Btk0sBgj8h5Qk5eYNwPHULuhPu0nXSXE2iR4UVFcBeA=,tag:S2I9HQkeo/jJboy44vrgCw==,type:comment]
#ENC[AES256_GCM,data:wDZ6Ln5teASPxXPvQGRZCdBIvfY=,iv:Qnx32skeDMB21GwhXd5fImkHS+y+HUOdNvbMT2mpy6A=,tag:BKl04542M8rH6BpFERqHZg==,type:comment]
#ENC[AES256_GCM,data:f+g7qdm8xf/wDhQqlnzIdmHhzfOG73VWfdw=,iv:/kDspwnXH7QfhzUuHATQTniLm/ZX6mo/QGxyQXdubcY=,tag:muoXeMNHb5vqm8IoC6Gl4A==,type:comment]
#ENC[AES256_GCM,data:42kR+DANphdxNVWNlxePU8U=,iv:JeZgMtb7a+/7V5hruQIHio0Aj+ThpHZwajx10e0rqOA=,tag:Ln+7DFl6+aq4YLZ8GK9qOg==,type:comment]
#ENC[AES256_GCM,data:DjK/fZDWEaa2BA==,iv:AnceR62V3OJrn5utgdffMcC+mWdxsUYMYn6454SVCsY=,tag:MRa8cDMEMGtBCxvqcKy/0Q==,type:comment]
#ENC[AES256_GCM,data:jqzidzai+6ShhzM=,iv:PDjUgLaoFVxAWBLXfWkXRzBp5BuvGU7DCorRYY6dan0=,tag:dKa2O7n/jno/M5nzCzCD/w==,type:comment]
sops:
kms: []
gcp_kms: []
azure_kv: []
hc_vault: []
age:
- recipient: age19j24x89dfh4f7v58c8k64yupqas4f7qkkyper7yj9dd7vqwvvq0qkyvhxk
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4U204eXIyaDJFMXIweXp1
NEhoYU5qa3B5Q1VpODNsSEpuT0txRWpuVDM0CmptVHNFQkpWTkJ2M3B4dWpWN0s4
ZjRuc3BhckVLSzFuOGJ3WTB0YnRRRDgKLS0tIHlaSUxITUlGU3VaRWZFbENUTVY2
SWVwUGVxcGJscG5PalphZFVIS1ZjY2MKi4VvrNW1AH+fJaI/rzOltPylSiY1z3nS
ebrYdpyM5KKQ46uezvU4J3Qau/Inv8CkZ72vHlQ6EK2kmmZZLszwJg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1ma8x6wugvc40mkst33mejq0m6r44jk6zwjjun3znyer5nztgn9vs0nwjx4
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyVHVwMEZjVk8xMTNIekF1
ZFlZbFhvOTJSbVN4ZmorSmFCbkxBUUxOOERJCjBjMkdxQ0V4OXEwdGF2Sno4VTh2
MURQMUhQV083M3lpREFRM2Qza3JLN0kKLS0tIEFoeUVsL3poajljMDEwTCtWcXRD
Y3NHNmVDZFZuNjlUUDdMa3N3ZVNTWkUKeO4sT0ZyTAyrMKj27fbFhQZ+bDMru6Bk
j4Im41l9ClpIVQt8iz61mwKrm+QmBA9r1aL34u3lGQyKBOk4vq/m9A==
-----END AGE ENCRYPTED FILE-----
- recipient: age1s5qwsuc3e4m3c4w5hl6tyja70w273gr60j9j9dcpc6mz69lemg3qpwud3h
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUT3dKNk4rSVZUck5LZ2t1
eUhPSXBURUFGbnU4NUtjMVVpeGI5eVI1SVc4CkdTY25jTy91VFhLS1F3V3ZzM1A4
OGMxWmtWd1lVU3dZcG8xWlRwYkorSU0KLS0tIE12WlFyUWZ0dHYvTEd0N0tPWUt1
bldpMnp5cnpXN2J5MEc5cC9DZktEekUKC6sei7v252fZyW8sd1xuZDjwoJFCKGot
t9f+jUDOx5wGlH53Fd2jCRArKZkQ850sFj79Lh2Rx6wbDj1Ks5XcVA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2024-12-10T04:12:19Z"
mac: ENC[AES256_GCM,data:AcuCxKGm9xLgn/gnk0XDVtLM5PWQvgGd+qXusuvwCUV4ln1//Lpwpp3TL0mEMdwEcFOdCasW4A10rGpCoBqKsckroiUSEB0G2p0vrD3b3Vmo804JYcKmSZ85InZCXUWenfOTEzx/A1ruqSBSkRYro+NdyZ/+JXQVXnTLCPesgwE=,iv:UPRNsfeUKnml9OFkkqrI0fI4f/RWN2ovTsaItwT8Y0c=,tag:75NEPjeAXUwlCPGbLPhPFg==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.9.1
+29
View File
@@ -0,0 +1,29 @@
let
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
pkgs = import nixpkgs { config = { }; overlays = [ ]; };
in
pkgs.mkShellNoCC {
packages = with pkgs; [
cowsay
lolcat
# bitwarden-desktop #replaced bitwarden
bitwarden-cli
sops
];
GREETING = "Hello, Nix!";
shellHook = ''
echo $GREETING | cowsay | lolcat
bw config server https://vault.subsonics.nl
echo "please enter bitwarden email"
read BW_USER
echo "please enter bitwarden password"
read -s BW_PASSWORD
bw login $BW_USER $BW_PASSWORD
BW_SESSION="$(bw unlock $BW_PASSWORD --raw)"
mkdir -p ~/.config/sops/age
bw get attachment keys.txt --itemid ee6a90b0-4120-46f7-a1c6-9648316e43d5 --output ~/.config/sops/age/keys.txt
'';
}
View File
View File
@@ -0,0 +1,319 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{
# config,
pkgs,
...
}:
{
imports = [
./tigervnc.nix
./hardware/hardware-configuration.nix
];
# Use the default kernel maintained by the stable nixpkgs release.
boot.kernelPackages = pkgs.linuxPackages;
# Bootloader.
# boot.loader.systemd-boot.enable = true; # managed by lanzaboote
boot.loader.efi.canTouchEfiVariables = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
networking.hostName = "drivebystation-nix"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Amsterdam";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "nl_NL.UTF-8";
LC_IDENTIFICATION = "nl_NL.UTF-8";
LC_MEASUREMENT = "nl_NL.UTF-8";
LC_MONETARY = "nl_NL.UTF-8";
LC_NAME = "nl_NL.UTF-8";
LC_NUMERIC = "nl_NL.UTF-8";
LC_PAPER = "nl_NL.UTF-8";
LC_TELEPHONE = "nl_NL.UTF-8";
LC_TIME = "nl_NL.UTF-8";
};
system.activationScripts."stremio-mpv-flatpak-patch" = {
text = ''
# 1. Provide the symlink where Stremio's player engine queries
mkdir -p /usr/bin
ln -sf /run/current-system/sw/bin/mpv /usr/bin/mpv
# 2. Locate and patch the runtime server.js file inside the active Flatpak installation
TARGET_FILE="/var/lib/flatpak/app/com.stremio.Stremio/current/active/files/opt/stremio/server.js"
if [ -f "$TARGET_FILE" ]; then
# Make sure the file is writable momentarily for the patch
chmod +w "$TARGET_FILE"
# Inject the flatpak-spawn sequence into the linux player profile
sed -i 's|linux:{path:\["\/usr\/bin\/mpv"\]|linux:{path:["/usr/bin/flatpak-spawn"],args:["--host","/usr/bin/mpv"]|g' "$TARGET_FILE"
sed -i 's|linux:{path:\["mpv"\]|linux:{path:["/usr/bin/flatpak-spawn"],args:["--host","/usr/bin/mpv"]|g' "$TARGET_FILE"
# Restore permissions
chmod -w "$TARGET_FILE"
fi
'';
};
services = {
# Enable Gnome Session
displayManager.gdm.enable = true;
displayManager.sddm.enable = false;
# displayManager.sddm.wayland.enable = true;
displayManager.autoLogin = {
enable = false;
user = "andreas";
};
displayManager.cosmic-greeter.enable = false;
displayManager.defaultSession = "gnome";
# Clear the sandbox restriction dynamically
xserver = {
enable = true; # Enable the deprecated X11 teletype terminal connection system.
# Configure Display Manager
displayManager = {
lightdm.enable = false;
};
# Configure keymap in X11
xkb = {
layout = "us";
variant = "intl";
};
# Specify first device section to use nvidia GPU
};
};
# services.xserver.displayManager.defaultSession = "gnome-x11"; # services.xserver.displayManager.autoLogin.enable = true;
# services.xserver.displayManager.autoLogin.user = "andreas";
# systemd.services."getty@tty1".enable = false;
# systemd.services."autovt@tty1".enable = false;
programs.ssh.askPassword = "${pkgs.x11_ssh_askpass}/libexec/x11-ssh-askpass";
# Configure console keymap
console.keyMap = "us-acentos";
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
# Enable gamemode for game optimization
programs.gamemode.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# Install firefox.
programs.firefox.enable = true;
# Enable XWayland for X11 application compatibility
programs.xwayland.enable = true;
# docker
virtualisation.docker = {
enable = true;
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# Enable --Akonadi--/ kde-pim for calendar backend
programs.kde-pim.enable = true;
services.dbus.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
(python3.withPackages (ps: with ps; [ websockets ]))
sqlite
javaPackages.compiler.openjdk25
javaPackages.compiler.openjdk21
qt6.qtwebengine
qemu
mpv
krita
ntfs3g
htop
rivalcfg
blender
freecad
reaper
discord
betterdiscordctl
];
environment.etc."xdg/autostart/xwaylandvideobridge.desktop".text = ''
[Desktop Entry]
Hidden=true
'';
services.udisks2.settings = { # Should fix mounting ntfs system partition - Did not work
"udisks2.conf" = {
defaults = {
allow_mount_internal = true;
allow_mount_system = true;
};
};
};
services.gvfs.enable = true; # For file manager integration
# Enable udev rules for SteelSeries devices (rivalcfg)
services.udev.packages = [ pkgs.rivalcfg ];
# Disable iBus (not needed unless using Asian input methods)
i18n.inputMethod = {
enable = false;
};
virtualisation.libvirtd = {
enable = true;
qemu = {
package = pkgs.qemu;
runAsRoot = true;
swtpm.enable = true;
vhostUserPackages = [ pkgs.virtiofsd ];
};
};
systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh.enable = true;
# Open ports in the .
networking.firewall.allowedTCPPorts = [
24800 #Synergy
53317 #localsend
3390 #rdp
9090
8000
40122
];
networking.firewall.allowedUDPPorts = [
24800 #Synergy
53317 #localsend
3390 #rdp
9090
8000
40122
];
networking.firewall.trustedInterfaces = [ "virbr0" ];
networking.nat = {
enable = true;
internalInterfaces = [ "virbr0" ];
externalInterface = "enp75s0";
extraCommands = ''
# MASQUERADE forwarded traffic to VM so it knows how to route back
iptables -t nat -A nixos-nat-post -o virbr0 -j MASQUERADE
'';
forwardPorts = [
{
sourcePort = 9090;
proto = "tcp";
destination = "192.168.122.113:9090";
}
{
sourcePort = 9090;
proto = "udp";
destination = "192.168.122.113:9090";
}
];
};
services.mullvad-vpn = {
enable = true;
package = pkgs.mullvad-vpn;
};
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-color-emoji
];
fontconfig = {
enable = true;
defaultFonts = {
sansSerif = [ "DejaVu Sans" "Noto Color Emoji" ];
serif = [ "DejaVu Serif" "Noto Color Emoji" ];
monospace = [ "DejaVu Sans Mono" "Noto Color Emoji" ];
emoji = [ "Noto Color Emoji" ];
};
};
};
# services.xrdp = {
# enable = true;
# openFirewall = true;
# defaultWindowManager = "cinnamon-session";
# };
### tigervnc
services.tigervnc = {
enable = false;
users = {
andreas = {
localhost = false; # true for SSH-only
};
};
};
### tigervnc END
# 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 = "26.05"; # Did you read the comment?
}
@@ -0,0 +1,245 @@
# nixosConfigurations.th0nkpad-nixos = nixpkgs.lib.nixosSystem {
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
# The namespace used for your flake, defaulting to "internal" if not set.
# namespace,
# The system architecture for this host (eg. `x86_64-linux`).
# system,
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
# target,
# A normalized name for the system target (eg. `iso`).
# format,
# A boolean to determine whether this system is a virtual target using nixos-generators.
# virtual,
# An attribute map of your defined hosts.
# systems,
# All other arguments come from the system system.
# config,
...
}:
let
# inherit (lib.my-namespace) systemPackages;
inherit pkgs;
installedPackages = lib.my-namespace.mkPackages pkgs;
# Explicit application exceptions; all other packages use stable pkgs.
unstablePkgs = import inputs.nixpkgs-unstable {
system = pkgs.stdenv.hostPlatform.system;
config.allowUnfree = true;
};
in
{
# inherit system;
imports = [
./configuration.nix
./mutter-tearing.nix
./video.nix
inputs.wallpaperengine.nixosModules.default
inputs.aagl.nixosModules.default
];
config = {
programs.linux-wallpaperengine.enable = true;
system.stateVersion = "26.05";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Distrobox
my-namespace.distrobox.enable = true;
# Desktops
my-namespace.desktop-environment.cinnamon.enable = true;
my-namespace.desktop-environment.xfce.enable = false;
my-namespace.desktop-environment.gnome.enable = true;
my-namespace.desktop-environment.kde.enable = false;
my-namespace.desktop-environment.hyprland.enable = false;
my-namespace.desktop-environment.cosmic.enable = false;
my-namespace.performance-tuning.enable = true;
my-namespace.rtl8125-recovery.enable = true;
my-namespace.file-organization.enable = true;
# GNOME-keyring
my-namespace.gnome-keyring.enable = true;
# CS Tools
my-namespace.cs-tools.enable = true;
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.andreas = {
isNormalUser = true;
description = "Andreas Schaafsma";
extraGroups = [
"networkmanager"
"wheel"
"libvirtd"
"plugdev"
"docker"
"gamemode"
];
packages = with pkgs; [
# Packages from inputsq
# inputs.game-of-life.packages.x86_64-linux.default
inputs.zen-browser.packages.x86_64-linux.default
# inputs.anikki.packages.x86_64-linux.default
# We want flatpak support
flatpak
# GNOME shit
thunderbird
soundwireserver
# vscode
# discord
spotify
appimage-run
prismlauncher #replaces broken minecraft package
unstablePkgs.trilium-desktop
terraform
virt-manager
nil
codex
inputs.codex-desktop.packages.${pkgs.stdenv.hostPlatform.system}.codex-desktop
# thunderbird
];
};
programs.appimage = {
enable = true;
binfmt = true;
};
programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules
programs.anime-games-launcher.enable = true;
services.gnome.gnome-remote-desktop.enable = true;
my-namespace.keychron-keyboard.enable = true;
# lib.my-namespace.home.stream-tools.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [
59010 #SoundWireServer
5901
5001
11434
3389 #RDP
22 #ssh
];
networking.firewall.allowedUDPPorts = [
59010 #SoundWireServer
5901
5001
11434
3389 #RDP
22 #ssh
];
# Or disable the firewall altogether.
networking.firewall.enable = false;
# Install firefox.
programs.firefox.enable = true;
nixpkgs.config.allowBroken = true;
powerManagement.cpuFreqGovernor = "performance";
# Set up system Packages
environment.sessionVariables.GI_TYPELIB_PATH =
lib.makeSearchPath "lib/girepository-1.0" [
pkgs.my-namespace.rounded-blur
];
environment.sessionVariables = {
# If you are using Hyprland, labwc, or Sway (wlroots-based):
WLR_DRM_NO_ATOMIC = "1";
KWIN_DRM_DISABLE_TRIPLE_BUFFERING="1";
# If you are using KDE Plasma (KWin):
KWIN_FORCE_SW_CURSOR = "1";
# For modern wlroots (and Aquamarine in Hyprland) to force software cursors:
WLR_NO_HARDWARE_CURSORS = "1";
};
environment.systemPackages = with pkgs; [
git
wine
# bottles
gparted
ntfs3g
ntfsprogs
synergy
mangohud
my-namespace.udev-steelseries
my-namespace.linux-wallpaperengine
my-namespace.rounded-blur
my-namespace.rounded-windows-bms
my-namespace.cs-demo-manager
vscode-modernized
zed-editor
unstablePkgs.jetbrains-toolbox
(pkgs.writeShellScriptBin "switch-to-desktop" ''
#!/bin/sh
# Kill Steam and return to display manager
pkill steam || true
pkill gamescope || true
# End the session cleanly
loginctl terminate-session "$XDG_SESSION_ID"
'')
(pkgs.writeShellScriptBin "steamos-session-select" ''
#!/bin/sh
exec switch-to-desktop
'')
# Vulkan packages for Steam
mesa
vulkan-loader
vulkan-validation-layers
vulkan-extension-layer
vulkan-tools
libva
libva-utils
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
]
++ installedPackages.packages;
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld; #replaces nix-ld-rs
};
services.flatpak.enable = true;
systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ];
script = ''
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
};
services.openssh = {
enable = true;
settings.PasswordAuthentication = true;
# settings = {
# # passwordAuthentication = true;
# };
};
# services.xrdp.enable = true;
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
# services.xrdp.defaultWindowManager = "startxfce4";
# services.xrdp.openFirewall = true;
# services.xrdp.audio.enable = false;
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
# If no user is logged in, the machine will power down after 20 minutes.
# systemd.targets.sleep.enable = false;
# systemd.targets.suspend.enable = false;
# systemd.targets.hibernate.enable = false;
# systemd.targets.hybrid-sleep.enable = false;
};
}
@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
{
# boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid.bin,DP-2:edid/edid.bin,DP-3:edid/edid.bin,DP-4:edid/edid.bin" ];
boot.kernelParams = [
"drm.edid_firmware=DP-2:edid/edid.bin,DP-4:edid/edid.bin"
];
hardware.firmware = [
(
pkgs.runCommand "edid.bin" { } ''
mkdir -p $out/lib/firmware/edid
cp ${./firmware/KG271-edid.bin} $out/lib/firmware/edid/edid.bin
''
)];
}
@@ -0,0 +1,141 @@
{ config, lib, pkgs, ... }:
{
############################
## Display + Mesa Settings
############################
# hardware.enableRedistributableFirmware = true;
hardware.firmware = [
pkgs.linux-firmware
# pkgs.firmwareLinuxNonfree
# pkgs.firmwareLinuxStrict
# pkgs.firmwareLinuxLatest
];
# boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelParams = [
"console=tty0"
# "efifb=off"
"xe.force_probe=e20b"
# Xe stability improvements for B580
"xe.guc_log_level=0" # Reduce GuC logging overhead
"xe.enable_display=1" # Ensure display is enabled
# Memory/performance parameters
"mitigations=off" # Disable CPU mitigations for better performance
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
];
services.switcherooControl.enable = true;
# environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
hardware.intel-gpu-tools.enable = true;
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
intel-media-driver # Intel VAAPI
vpl-gpu-rt # oneVPL runtime
intel-vaapi-driver # fallback
intel-compute-runtime # OpenCL/Level Zero
level-zero # Level Zero API for compute
intel-graphics-compiler # Shader compiler for Arc GPUs allgedly needed for XPU
];
};
# Ensure Arc driver is available (usually auto-loaded)
boot.kernelModules = [ "xe" "i915" ];
# Blacklist everything for nvidia
boot.blacklistedKernelModules = [
"nouveau"
"nvidia"
"nvidia_drm"
"nvidia_modeset"
"nvidia_uvm"
];
# Mark Arc B580 as a discrete Intel GPU for switcheroo-control and
# keep runtime PCI power management enabled for the device.
services.udev.extraRules = ''
ACTION=="add|bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0xe20b", TEST=="power/control", ATTR{power/control}="auto"
SUBSYSTEM=="drm", DRIVERS=="xe", ATTRS{vendor}=="0x8086", ATTRS{device}=="0xe20b", TAG+="switcheroo-discrete-gpu"
'';
environment.variables = {
# Force Intel GPU for all graphics operations
KWIN_DRM_DEVICES = "/dev/dri/card0";
# Vulkan/DXVK optimizations for B580
ANV_ENABLE_PIPELINE_CACHE = "1";
# Shader cache settings
MESA_SHADER_CACHE_DISABLE = "false";
MESA_SHADER_CACHE_MAX_SIZE = "10G";
# DXVK optimizations
DXVK_HUD = "compiler"; # Monitor shader compilation
# DXVK_ASYNC = "1"; # Enable if you want async shader compilation (may cause issues)
# Intel IPEX / PyTorch settings
ZE_ENABLE_ALT_DRIVERS = "libze_intel_gpu.so.1"; # Enable Intel GPU driver for Level Zero
SYCL_CACHE_PERSISTENT = "1"; # Enable persistent SYCL cache
SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS = "1"; # Performance optimization
};
############################
## LACT Settings for Overclocking
############################
services.lact.enable = true;
############################
## X / Wayland GPU Drivers
############################
# Enable modesetting driver for X11 (required for Intel Xe)
services.xserver.videoDrivers = [
"modesetting"
#"intel"
];
services.xserver.enable = true;
services.xserver.autorun = false;
services.xserver.displayManager.startx.enable = true;
# Xorg configuration for Intel Arc Battlemage (xe driver)
# Based on: https://www.reddit.com/r/crtgaming/comments/1knom2t/guide_intel_arc_b580_arch_linux_xorg/
# Intel Arc B-series at PCI 0000:03:00.0
#services.xserver.deviceSection = ''
# Option "AccelMethod" "glamor"
# BusID "PCI:3:0:0"
#'';
############################
## User Access
############################
users.users.andreas.extraGroups = [ "video" "render" ];
############################
## System Packages for AI/ML
############################
environment.systemPackages = with pkgs; [
intel-compute-runtime
level-zero
# For checking GPU compute capabilities
clinfo
vulkan-tools
];
services.xserver.config = ''
Section "Device"
Identifier "AMD"
Driver "amdgpu"
Option "TearFree" "false"
EndSection
'';
services.xserver.deviceSection = ''
Option "TearFree" "false"
'';
}
@@ -0,0 +1,90 @@
{ config, lib, pkgs, ... }:
{
############################
## Display + Mesa Settings
############################
# hardware.enableRedistributableFirmware = true;
hardware.firmware = [
pkgs.linux-firmware
# pkgs.firmwareLinuxNonfree
# pkgs.firmwareLinuxStrict
# pkgs.firmwareLinuxLatest
];
# boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelParams = [
"console=tty0"
# "efifb=off"
# "xe.force_probe=*"
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
];
# environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
hardware.intel-gpu-tools.enable = true;
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = with pkgs; [
intel-media-driver # Intel VAAPI
vpl-gpu-rt # oneVPL runtime
intel-vaapi-driver # fallback
intel-compute-runtime # OpenCL/Level Zero
];
};
# Ensure Arc driver is available (usually auto-loaded)
boot.kernelModules = [ "i915" ];
# Blacklist everything for nvidia
boot.blacklistedKernelModules = [
"nouveau"
"nvidia"
"nvidia_drm"
"nvidia_modeset"
"nvidia_uvm"
"xe"
];
environment.variables = {
KWIN_DRM_DEVICES = "/dev/dri/card0";
};
############################
## LACT Settings for Overclocking
############################
services.lact.enable = true;
############################
## X / Wayland GPU Drivers
############################
# Enable modesetting driver for X11 (required for Intel Xe)
services.xserver.videoDrivers = [
"modesetting"
#"intel"
];
services.xserver.enable = true;
services.xserver.autorun = false;
services.xserver.displayManager.startx.enable = true;
# Xorg configuration for Intel Arc Battlemage (xe driver)
# Based on: https://www.reddit.com/r/crtgaming/comments/1knom2t/guide_intel_arc_b580_arch_linux_xorg/
# Intel Arc B-series at PCI 0000:03:00.0
#services.xserver.deviceSection = ''
# Option "AccelMethod" "glamor"
# BusID "PCI:3:0:0"
#'';
############################
## User Access
############################
users.users.andreas.extraGroups = [ "video" "render" ];
}
@@ -0,0 +1,74 @@
{ config, lib, pkgs, ... }:
{
############################
## Display + Mesa Settings
############################
# hardware.enableRedistributableFirmware = true;
hardware.firmware = [
pkgs.linux-firmware
# pkgs.firmwareLinuxNonfree
# pkgs.firmwareLinuxStrict
# pkgs.firmwareLinuxLatest
];
# boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelParams = [
"console=tty0"
"efifb=off"
"xe.force_probe=*"
"nvidia-drm.modeset=1"
];
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
intel-media-driver # Intel VAAPI
vpl-gpu-rt # oneVPL runtime
intel-vaapi-driver # fallback
];
};
# Ensure Arc driver is available (usually auto-loaded)
boot.kernelModules = [ "xe" ];
boot.blacklistedKernelModules = [ "nouveau" ];
############################
## X / Wayland GPU Drivers
############################
# Only specify NVIDIA. Intel Arc uses the modesetting driver automatically.
services.xserver.videoDrivers = [ "nvidia" ];
############################
## NVIDIA Configuration
############################
hardware.nvidia = {
modesetting.enable = true; # REQUIRED if any displays are on NVIDIA
open = false; # GTX 1070 → must be the proprietary driver
nvidiaSettings = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
prime = {
offload.enable = false; # not a laptop, must be disabled
sync.enable = false;
};
# Correct way to pick the driver
package = config.boot.kernelPackages.nvidiaPackages.production;
};
# Remove → hardware.nvidia handles module packages
# boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
############################
## User Access
############################
users.users.andreas.extraGroups = [ "video" "render" ];
}
@@ -0,0 +1,51 @@
{ config, lib, system, pkgs, ... }:
{
boot.kernelModules = [
"vfio"
"vfio-pci"
"vfio_iommu_type1"
];
boot.kernelParams = [
"amd_iommu=on"
"iommu=pt"
];
# Make sure vfio is available inside initrd
boot.initrd.availableKernelModules = [
"vfio_pci"
];
# Bind by IDs (cleaner via modprobe instead of kernel param)
boot.extraModprobeConfig = ''
options vfio-pci ids=10de:1b81,10de:10f0
'';
boot.initrd.systemd = {
enable = true;
services.initrd-vfio-pci-nvidia = {
description = "vfio-pci predevice init";
wantedBy = [ "initrd.target" ];
# Match 'preDeviceCommands' by running early
before = [ "sysroot.mount" ];
unitConfig.DefaultDependencies = "no";
serviceConfig.Type = "oneshot";
# Place your original shell commands here
script = ''
modprobe vfio-pci
'';
};
};
# # EARLY and deterministic binding
# boot.initrd.preDeviceCommands = ''
# echo 0000:05:00.0 > /sys/bus/pci/drivers/vfio-pci/bind
# echo 0000:05:00.1 > /sys/bus/pci/drivers/vfio-pci/bind
# '';
environment.systemPackages = with pkgs; [
pciutils
virtiofsd
config.virtualisation.libvirtd.qemu.package
looking-glass-client
virt-manager
libguestfs-with-appliance
];
users.extraUsers.andreas.extraGroups = [ "libvirtd" ];
}
@@ -0,0 +1,102 @@
# 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, pkgs, modulesPath, ... }:
{
imports =
[
(modulesPath + "/installer/scan/not-detected.nix")
./graphics/intel.nix
./graphics/passthrough_nvidia.nix
# ./graphics/intel_i915.nix
# ./graphics/nvidia.nix
./acer-monitor-edid.nix
./samsung-monitor-edid.nix
];
hardware.enableRedistributableFirmware = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.kernelModules = [ "kvm-amd" "r8125" "4vl2loopback" ];
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback r8125 ];
boot.supportedFilesystems = [ "ntfs" ];
boot.blacklistedKernelModules = [ "r8169" ];
systemd.services.disable-realtek-eee = {
description = "Disable Realtek Energy Efficient Ethernet";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.ethtool}/bin/ethtool --set-eee enp10s0 eee off";
RemainAfterExit = true;
};
};
fileSystems."/" =
{ device = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/646A-D107";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
fileSystems."/home" =
{ device = "/dev/disk/by-uuid/6ac4f42b-09e3-43b3-8215-8ff9a3c0695e";
fsType = "ext4";
};
# Mount ntfs partition
# fileSystems."/run/media/627C3BDF7C3BAD23" = {
# device = "/dev/disk/by-uuid/627C3BDF7C3BAD23";
# fsType = "ntfs-3g";
# options = [ "rw" "uid=1000"];
# };
# # Mount ntfs oldfiles drive partition
# fileSystems."/run/media/oldfiles" = {
# device = "/dev/disk/by-uuid/E2E26FFFE26FD677";
# fsType = "ntfs-3g";
# options = [ "rw" "uid=1000"];
# };
# # Mount The Vault
# fileSystems."/run/media/vault" = {
# device = "/dev/disk/by-uuid/3470646370642DB4";
# fsType = "ntfs-3g";
# options = [ "rw" "uid=1000"];
# };
# Try to fix hibernation
# swapDevices = [ ];
swapDevices = [ {
device = "/var/lib/swapfile";
size = 32*1024;
} ]; #resume-offset = 195323904
boot.resumeDevice = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b"; # the unlocked drive mapping
boot.kernelParams = [
"resume_offset=195323904" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}'
"r8125.aspm=0" # realtek network adapter fix
];
security.protectKernelImage = false;
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still po ssible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp72s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
@@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
{
# boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid.bin,DP-2:edid/edid.bin,DP-3:edid/edid.bin,DP-4:edid/edid.bin" ];
boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid2.bin" ];
hardware.firmware = [
(
pkgs.runCommand "edid2.bin" { } ''
mkdir -p $out/lib/firmware/edid
cp ${./firmware/U32J59x-edid.bin} $out/lib/firmware/edid/edid2.bin
''
)];
}
@@ -0,0 +1,36 @@
diff --git a/src/meson.build b/src/meson.build
--- a/src/meson.build
+++ b/src/meson.build
@@ -1077,5 +1077,6 @@ wayland_protocols = [
['single-pixel-buffer', 'staging', 1, ],
['tablet', 'stable', 2, ],
+ ['tearing-control', 'staging', 1, ],
['text-input-unstable-v3', 'private', ],
['viewporter', 'stable', ],
['xdg-activation', 'staging', 1, ],
diff --git a/src/wayland/meta-wayland-dma-buf.c b/src/wayland/meta-wayland-dma-buf.c
--- a/src/wayland/meta-wayland-dma-buf.c
+++ b/src/wayland/meta-wayland-dma-buf.c
@@ -630,11 +630,22 @@ has_modifier (GArray *modifiers,
}
#ifdef HAVE_NATIVE_BACKEND
+static gboolean
+async_supports_modifier (MetaKmsPlane *plane,
+ uint32_t drm_format,
+ uint64_t drm_modifier)
+{
+ GArray *async_modifiers =
+ meta_kms_plane_get_async_modifiers_for_format (plane, drm_format);
+ return async_modifiers && has_modifier (async_modifiers, drm_modifier);
+}
+
static gboolean
crtc_supports_modifier (MetaCrtcKms *crtc_kms,
uint32_t drm_format,
- uint64_t drm_modifier)
+ uint64_t drm_modifier,
+ gboolean is_async)
{
MetaKmsPlane *plane = meta_crtc_kms_get_assigned_primary_plane (crtc_kms);
GArray *crtc_modifiers;
@@ -0,0 +1,59 @@
{ lib, pkgs, ... }:
let
# GNOME/mutter!3797, pinned because the MR is still under development.
mutterTearingRevision = "a8d56d423edde9e6d76f6b9cab663d82c65cf1a2";
mutterTearingPatch = pkgs.fetchurl {
url = "https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3797.diff";
hash = "sha256-3up5PsHX+BSQRKb9JS5bnJLPaTGmvV55M18tKkepIng=";
};
in
{
nixpkgs.overlays = [
(final: prev: {
mutter = prev.mutter.overrideAttrs (old: {
pname = "mutter-tearing";
# nixpkgs leaves Mutter's verbose topics compiled out by default.
# This is required for MUTTER_DEBUG=kms to emit the async commit flags.
mesonFlags = (old.mesonFlags or [ ]) ++ [ ];
# The MR currently targets Mutter 51. Apply it to the packaged Mutter
# 50 source, then resolve the four small context conflicts separately.
prePatch = ''
${old.prePatch or ""}
set +e
patch --batch -p1 --forward < ${mutterTearingPatch}
mr_status=$?
set -e
if [ "$mr_status" -ne 0 ]; then
reject_count="$(find . -name '*.rej' -type f | wc -l)"
if [ "$reject_count" -ne 3 ]; then
echo "Unexpected number of Mutter !3797 rejects: $reject_count" >&2
exit 1
fi
fi
patch --batch -p1 --forward < ${./mutter-50-tearing-compat.patch}
find . -name '*.rej' -type f -delete
'';
passthru = (old.passthru or { }) // {
tearingMr = 3797;
tearingRevision = mutterTearingRevision;
};
});
})
];
environment.sessionVariables = {
# Mutter keeps tearing support behind an experimental runtime switch.
MUTTER_DEBUG_EXPERIMENTAL_FEATURES = lib.mkDefault "tearing";
# Temporarily expose whether async atomic commits reach KMS or fall back
# to synchronized presentation. Remove this after collecting the log.
# MUTTER_DEBUG = lib.mkDefault "kms";
};
}
@@ -0,0 +1,83 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.tigervnc;
in
{
options.services.tigervnc = {
enable = lib.mkEnableOption "TigerVNC x0vncserver (mirrors :0)";
users = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule ({ name, config, ... }: {
options = {
enableSharing = lib.mkOption { type = lib.types.bool; default = true; };
port = lib.mkOption { type = lib.types.int; default = 5901; };
localhost = lib.mkOption { type = lib.types.bool; default = false; };
#geometry = lib.mkOption { type = lib.types.str; default = ""; };
};
}));
default = { };
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = [ pkgs.tigervnc pkgs.xhost pkgs.xauth ];
systemd.user.services = lib.mapAttrs' (user: opts:
let svcName = "tigervnc-x0vncserver-${user}";
in {
name = svcName;
value = lib.mkIf opts.enableSharing {
description = "TigerVNC x0vncserver sharing :0 for ${user}";
after = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
wantedBy = [ "graphical-session.target" ];
path = [ pkgs.tigervnc pkgs.xhost pkgs.xauth pkgs.coreutils ];
script = let
# Build args array to avoid shell escaping hell
vncArgs = [
"-display :0"
"-rfbport ${toString opts.port}"
"-rfbauth $HOME/.vnc/passwd"
"-AcceptSetDesktopSize=0"
"-AlwaysShared"
] #++ lib.optionals (opts.geometry != "") [ "-Geometry ${opts.geometry}" ]
++ lib.optionals opts.localhost [ "-localhost" ];
in ''
set -euxo pipefail
# Password check
mkdir -p "$HOME/.vnc"
if [ ! -r "$HOME/.vnc/passwd" ]; then
echo "ERROR: Run: vncpasswd ~/.vnc/passwd" >&2
### CHANGE THE &gt; in the above line TO A GREATER THAN SIGN! ###
exit 1
fi
# X authority
xhost +local:
# Clean x0vncserver args
${pkgs.tigervnc}/bin/x0vncserver ${lib.concatStringsSep " " (map (arg: "${arg}") vncArgs)}
'';
preStop = ''
xhost -local:
pkill -f "x0vncserver.*${toString opts.port}"
'';
serviceConfig = {
Type = "simple";
Restart = "always";
RestartSec = "5s";
RuntimeDirectory = "vnc-${user}";
};
};
}
) cfg.users;
networking.firewall.allowedTCPPorts =
lib.mapAttrsToList (_: opts: opts.port) cfg.users;
};
}
@@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
{
boot.kernelModules = [
"v4l2loopback" # Webcam loopback
];
boot.extraModulePackages = [
config.boot.kernelPackages.v4l2loopback # Webcam loopback
];
boot.extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
'';
environment.systemPackages = with pkgs; [
# Webcam packages
v4l-utils
android-tools
adb-sync
];
}
@@ -15,7 +15,7 @@
environment.systemPackages = with pkgs; [
];
networking.hostName = "drivebystation-nixos-wsl";
# Enable Experimental Features
nix.settings.experimental-features = [ "nix-command" "flakes" ];
@@ -0,0 +1,46 @@
# nixosConfigurations.drivebystation-nixos-wsl = nixpkgs.lib.nixosSystem {
#
# };
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
system, # The system architecture for this host (eg. `x86_64-linux`).
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
format, # A normalized name for the system target (eg. `iso`).
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
systems, # An attribute map of your defined hosts.
# All other arguments come from the system system.
config,
...
}:
{
inherit system;
modules = [
nixos-wsl.nixosModules.default
./configuration.nix
{
system.stateVersion = "24.05";
wsl.enable = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
environment.systemPackages = [
]
++ installedPackages.mkPackages.packages;
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld-rs;
};
}
];
specialArgs = { inherit inputs; };
# Your configuration.
}
@@ -44,29 +44,25 @@
LC_TELEPHONE = "nl_NL.UTF-8";
LC_TIME = "nl_NL.UTF-8";
};
# Enable the X11 windowing system.
# Enable the X11 windowing system
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
# Enable the GNOME Desktop Environment
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# Configure keymap in X11
services.xserver.xkb = {
layout = "us";
variant = "intl";
};
# Configure console keymap
console.keyMap = "us-acentos";
# Enable CUPS to print documents.
# Enable CUPS to print documents
services.printing.enable = true;
# Enable sound with pipewire.
# Enable sound with pulse (pipewire)
hardware.pulseaudio.enable = false;
# Enable realtimekit (pulse requirement)
security.rtkit.enable = true;
# Configure pipewire service
services.pipewire = {
enable = true;
alsa.enable = true;
@@ -106,5 +102,4 @@
# 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 = "24.05"; # Did you read the comment?
}
@@ -0,0 +1,113 @@
# nixosConfigurations.th0nkpad-nixos = nixpkgs.lib.nixosSystem {
{
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs.
lib,
# An instance of `pkgs` with your overlays and packages applied is also available.
pkgs,
# You also have access to your flake's inputs.
inputs,
# Additional metadata is provided by Snowfall Lib.
# The namespace used for your flake, defaulting to "internal" if not set.
namespace,
# The system architecture for this host (eg. `x86_64-linux`).
system,
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
target,
# A normalized name for the system target (eg. `iso`).
format,
# A boolean to determine whether this system is a virtual target using nixos-generators.
virtual,
# An attribute map of your defined hosts.
systems,
# All other arguments come from the system system.
config
, ...
}:
let
inherit pkgs;
installedPackages = lib.my-namespace.mkPackages pkgs;
in
{
# inherit system;
imports = [
./configuration.nix
];
config = {
system.stateVersion = "24.05";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.andreas = {
isNormalUser = true;
description = "Andreas";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [
flatpak
gnome-software
soundwireserver
vscode
spotify
appimage-run
inputs.game-of-life.packages.x86_64-linux.default
inputs.nixos-cosmic
# thunderbird
];
};
# lib.my-namespace.home.stream-tools.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [
59010 #SoundWireServer
3389 #RDP
];
networking.firewall.allowedUDPPorts = [
59010 #SoundWireServer
3389 #RDP
];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Install firefox.
programs.firefox.enable = true;
# Set up system Packages
environment.systemPackages = with pkgs; [
git
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
]
++ installedPackages.packages;
programs.nix-ld = {
enable = true;
package = pkgs.nix-ld-rs;
};
services.flatpak.enable = true;
systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ];
path = [ pkgs.flatpak ];
script = ''
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
};
services.openssh = {
enable = true;
passwordAuthentication = true;
};
# services.xrdp.enable = true;
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
# services.xrdp.openFirewall = true;
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
# If no user is logged in, the machine will power down after 20 minutes.
systemd.targets.sleep.enable = false;
systemd.targets.suspend.enable = false;
systemd.targets.hibernate.enable = false;
systemd.targets.hybrid-sleep.enable = false;
};
}