Author SHA1 Message Date
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
41 changed files with 1849 additions and 430 deletions
+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.
Generated
+371 -148
View File
@@ -1,5 +1,56 @@
{ {
"nodes": { "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": { "aagl": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@@ -9,11 +60,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1767520119, "lastModified": 1787517695,
"narHash": "sha256-+OmNQLA9Fv5WBaxYHlPghS9XmnYWDaLt+AatCGhG+hc=", "narHash": "sha256-Z119G3qLJx22frNHO3/seMs7fCCvxe9NJJRfN4Jadew=",
"owner": "ezKEa", "owner": "ezKEa",
"repo": "aagl-gtk-on-nix", "repo": "aagl-gtk-on-nix",
"rev": "5720d3282844b6b23b26dfac075a5f1f58ea8844", "rev": "4bb57072d963aa47f14894383a5560cf290e296a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -22,7 +73,24 @@
"type": "github" "type": "github"
} }
}, },
"anikki": { "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": { "inputs": {
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": [ "nixpkgs": [
@@ -30,26 +98,26 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1766470910, "lastModified": 1791562553,
"narHash": "sha256-iY0vJAAjY5ZveB6JIAQDHq7lFrkAVGnO0tC7YOYDFsg=", "narHash": "sha256-uyLpIxJv9lqy1pgGUd0C/RZvqWyFqbwR0Tq7E+UX0VM=",
"owner": "Hion-V", "owner": "ilysenko",
"repo": "Anikki-flake", "repo": "codex-desktop-linux",
"rev": "95d15448466142126c7fc13ac1dbdaf58a36a3a5", "rev": "443cb5d52ed781cac6cc7083780abb058cf93678",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Hion-V", "owner": "ilysenko",
"repo": "Anikki-flake", "repo": "codex-desktop-linux",
"type": "github" "type": "github"
} }
}, },
"crane": { "crane": {
"locked": { "locked": {
"lastModified": 1754269165, "lastModified": 1781825982,
"narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=", "narHash": "sha256-SlXKwIRIhrOSAcTjCB3ftPLzJWZStQIPS7J1FlZPnKk=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "444e81206df3f7d92780680e45858e31d2f07a08", "rev": "469fd08d0bcf6926321fa973c6777fbc87785dd7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -61,11 +129,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1761588595, "lastModified": 1767039857,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -77,15 +145,15 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1747046372, "lastModified": 1767039857,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"type": "github" "type": "github"
} }
@@ -93,15 +161,15 @@
"flake-compat_3": { "flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1765121682, "lastModified": 1767039857,
"narHash": "sha256-4VBOP18BFeiPkyhy9o4ssBNQEvfvv1kXkasAYd0+rrA=", "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3", "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "edolstra", "owner": "NixOS",
"repo": "flake-compat", "repo": "flake-compat",
"type": "github" "type": "github"
} }
@@ -124,17 +192,14 @@
}, },
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": "nixpkgs-lib"
"lanzaboote",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1754091436, "lastModified": 1788306937,
"narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", "narHash": "sha256-lbrI1UYVpFgKSsyrU9oeF7FHfnu8nLD9ja0ou9f2rxk=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", "rev": "f16b25b8c3d2809b87925d0b76652d7821a75c68",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -198,31 +263,11 @@
"type": "github" "type": "github"
} }
}, },
"game-of-life": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1728511087,
"narHash": "sha256-CvO74jwMjUUPySy0QCt7sPImbxKlhWcSAet93Fkt6iU=",
"owner": "local-interloper",
"repo": "game-of-life",
"rev": "c39d37e394f5da79a6a7d198e1d7e505aa5298a7",
"type": "github"
},
"original": {
"owner": "local-interloper",
"repo": "game-of-life",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"pre-commit-hooks-nix", "pre-commit",
"nixpkgs" "nixpkgs"
] ]
}, },
@@ -240,6 +285,23 @@
"type": "github" "type": "github"
} }
}, },
"glslang-WallpaperEngine": {
"flake": false,
"locked": {
"lastModified": 1770589476,
"narHash": "sha256-auhYcTWdSERwujUqwfDbF61tncO18dwar3mMQ09VW1w=",
"owner": "Almamu",
"repo": "glslang-WallpaperEngine",
"rev": "b775500a153f5ceb0e4b6f366b79c4c57521bb62",
"type": "github"
},
"original": {
"owner": "Almamu",
"repo": "glslang-WallpaperEngine",
"rev": "b775500a153f5ceb0e4b6f366b79c4c57521bb62",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -247,11 +309,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1768434960, "lastModified": 1788355065,
"narHash": "sha256-cJbFn17oyg6qAraLr+NVeNJrXsrzJdrudkzI4H2iTcg=", "narHash": "sha256-gAz5oTI7ur34CfuakQduiQd/2ZhO62Bn2XXg08nZYYQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "b4d88c9ac42ae1a745283f6547701da43b6e9f9b", "rev": "d9d750e4fc11c10cab2da677bdd31e427f3a3a71",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -268,11 +330,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767104570, "lastModified": 1788229478,
"narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", "narHash": "sha256-G0F2rFORVcFkEvVdE/qWQTnYekIc77YP5/vRF9nZlxU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", "rev": "1dc2d1f720ab17fc7981e087346bf54b26d284b1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -281,98 +343,180 @@
"type": "github" "type": "github"
} }
}, },
"kwin-effects-forceblur": { "json": {
"inputs": { "flake": false,
"nixpkgs": [
"nixpkgs"
],
"utils": "utils"
},
"locked": { "locked": {
"lastModified": 1755098995, "lastModified": 1743872075,
"narHash": "sha256-6FN7XEf27DenQHDIKjrjOW3tGIaJlyqRlXarmt1v+M0=", "narHash": "sha256-eSqi4dhFrUvjYN+jD8nGqj1FbzGA6I2+eSqzdCGOLH8=",
"owner": "taj-ny", "owner": "nlohmann",
"repo": "kwin-effects-forceblur", "repo": "json",
"rev": "51a1d49d7fd7df3ce40ccf6ba4c4410cf6f510e1", "rev": "4424a0fcc1c7fa640b5c87d26776d99150dacd10",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "taj-ny", "owner": "nlohmann",
"repo": "kwin-effects-forceblur", "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" "type": "github"
} }
}, },
"lanzaboote": { "lanzaboote": {
"inputs": { "inputs": {
"crane": "crane", "crane": "crane",
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"pre-commit-hooks-nix": "pre-commit-hooks-nix", "pre-commit": "pre-commit",
"rust-overlay": "rust-overlay_2" "rust-overlay": "rust-overlay_2"
}, },
"locked": { "locked": {
"lastModified": 1762205063, "lastModified": 1782141370,
"narHash": "sha256-If6vQ+KvtKs3ARBO9G3l+4wFSCYtRBrwX1z+I+B61wQ=", "narHash": "sha256-hqijVSEETttmo8Okql9/LG0Ua34hdciKW1a5zzlj8mU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lanzaboote", "repo": "lanzaboote",
"rev": "88b8a563ff5704f4e8d8e5118fb911fa2110ca05", "rev": "7c9a54a7f87b4539ddbd8bda09a8a5f5f9361aa9",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "v0.4.3", "ref": "v1.1.0",
"repo": "lanzaboote", "repo": "lanzaboote",
"type": "github" "type": "github"
} }
}, },
"nixos-wsl": { "millennium": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_3", "millennium-src": "millennium-src",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"nixpkgs-bun": "nixpkgs-bun"
}, },
"locked": { "locked": {
"lastModified": 1768404695, "dir": "packages/nix",
"narHash": "sha256-eT3dNE2CQYcPDHaeRZAEFrZ0BmMq2wLxMp7hCmzOZBA=", "lastModified": 1792022604,
"owner": "nix-community", "narHash": "sha256-xyl3KTB+j4W3dAxQVSolNJCQZOasDnCLB3Dr14adBmU=",
"repo": "NixOS-WSL", "owner": "SteamClientHomebrew",
"rev": "d0d3636b9d174c4558e3bbb18e194d970505fed8", "repo": "Millennium",
"rev": "22af2f453777a925fb398a3dab60a407e66aa83f",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "dir": "packages/nix",
"ref": "main", "owner": "SteamClientHomebrew",
"repo": "NixOS-WSL", "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"
}
},
"nix-cachyos-kernel": {
"inputs": {
"flake-compat": "flake-compat_3",
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1788379544,
"narHash": "sha256-EMfRomvn1lAErvY/Q3bQL+PwEi+5hbBwI0ZI5SRC/WM=",
"owner": "xddxdd",
"repo": "nix-cachyos-kernel",
"rev": "d1c3cadc796061778cf7f62bdbfaf68cf3c3c654",
"type": "github"
},
"original": {
"owner": "xddxdd",
"ref": "release",
"repo": "nix-cachyos-kernel",
"type": "github" "type": "github"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1744536153, "lastModified": 1788329703,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=", "narHash": "sha256-fHvRW4JUchuw6QNzQ50BfzeYe0TnjKml1V8PVRjntSI=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11", "rev": "090e478bd64824e2122328df47a7efb74fdaf0c1",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixpkgs-unstable", "ref": "nixos-unstable-small",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-bun": {
"locked": {
"lastModified": 1790822859,
"narHash": "sha256-69xHQhAeMAD2wDXO7T2pcOZIF9Sga2W+JkmY2a11Ops=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1788057806,
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1768305791, "lastModified": 1788179007,
"narHash": "sha256-AIdl6WAn9aymeaH/NvBj0H9qM+XuAuYbGMZaP0zcXAQ=", "narHash": "sha256-hn1oU2rue2SYK8dAr8+WNZWtbsz1S2W5mnHlSEuh3bo=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1412caf7bf9e660f2f962917c14b1ea1c3bc695e", "rev": "34ab99075ac4f7e40cf037eef32cb1c360bb85e9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -382,12 +526,25 @@
"type": "github" "type": "github"
} }
}, },
"pre-commit-hooks-nix": { "nixpkgs_3": {
"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": { "inputs": {
"flake-compat": [ "flake-compat": "flake-compat_2",
"lanzaboote",
"flake-compat"
],
"gitignore": "gitignore", "gitignore": "gitignore",
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
@@ -395,11 +552,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1750779888, "lastModified": 1781733627,
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", "narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", "rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -408,32 +565,52 @@
"type": "github" "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": { "root": {
"inputs": { "inputs": {
"aagl": "aagl", "aagl": "aagl",
"anikki": "anikki", "codex-desktop": "codex-desktop",
"game-of-life": "game-of-life",
"home-manager": "home-manager", "home-manager": "home-manager",
"kwin-effects-forceblur": "kwin-effects-forceblur",
"lanzaboote": "lanzaboote", "lanzaboote": "lanzaboote",
"nixos-wsl": "nixos-wsl", "millennium": "millennium",
"nix-cachyos-kernel": "nix-cachyos-kernel",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"simple-wallpaper-engine": "simple-wallpaper-engine",
"snowfall-lib": "snowfall-lib", "snowfall-lib": "snowfall-lib",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
"trilium-next-pr": "trilium-next-pr", "wallpaperengine": "wallpaperengine",
"zen-browser": "zen-browser" "zen-browser": "zen-browser"
} }
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs" "nixpkgs": [
"aagl",
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1764470739, "lastModified": 1785476452,
"narHash": "sha256-sa9f81B1dWO16QtgDTWHX8DQbiHKzHndpaunY5EQtwE=", "narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "3bfa664055e1a09c6aedab5533c5fc8d6ca5741a", "rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -450,11 +627,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1761791894, "lastModified": 1782012058,
"narHash": "sha256-myRIDh+PxaREz+z9LzbqBJF+SnTFJwkthKDX9zMyddY=", "narHash": "sha256-9mWUnReOUXfKjZuJAL/bAFH3LUyECTRtXgSNVjRw3UY=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "59c45eb69d9222a4362673141e00ff77842cd219", "rev": "8534567325bd8a8d2928e6afd81e0a87d19efd3c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -463,6 +640,27 @@
"type": "github" "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": { "snowfall-lib": {
"inputs": { "inputs": {
"flake-compat": "flake-compat_4", "flake-compat": "flake-compat_4",
@@ -472,11 +670,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765361626, "lastModified": 1784328457,
"narHash": "sha256-kX0Dp/kYSRbQ+yd9e3lmmUWdNbipufvKfL2IzbrSpnY=", "narHash": "sha256-4R5WV74NHhPk21ctoPmjL7nQ6txDnoBLwSWULvIw0TY=",
"owner": "snowfallorg", "owner": "snowfallorg",
"repo": "lib", "repo": "lib",
"rev": "c566ad8b7352c30ec3763435de7c8f1c46ebb357", "rev": "6ee3542cb459ca4b038cfe50ceb8797f05cdabad",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -492,11 +690,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1768481291, "lastModified": 1788337237,
"narHash": "sha256-NjKtkJraCZEnLHAJxLTI+BfdU//9coAz9p5TqveZwPU=", "narHash": "sha256-gkSH8VUtCo6hnysNmb9DbTuDepH2t5pv+QWjP75xKAk=",
"owner": "mic92", "owner": "mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "e085e303dfcce21adcb5fec535d65aacb066f101", "rev": "fbf759290e0cb0a98dfc813a4eb7d53ad1dacb57",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -505,6 +703,23 @@
"type": "github" "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": { "systems": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1681028828,
@@ -550,32 +765,16 @@
"type": "github" "type": "github"
} }
}, },
"trilium-next-pr": {
"locked": {
"lastModified": 1736678965,
"narHash": "sha256-2A687i3Rq0/wqJVvpgaiRPWcfnBBuBhPjKaT8cnd7o0=",
"owner": "FliegendeWurst",
"repo": "nixpkgs",
"rev": "4fcdf706929246476e52e960760b6643cb8395c4",
"type": "github"
},
"original": {
"owner": "FliegendeWurst",
"ref": "trilium-next",
"repo": "nixpkgs",
"type": "github"
}
},
"utils": { "utils": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1726560853, "lastModified": 1731533236,
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -584,6 +783,30 @@
"type": "github" "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_3",
"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": { "zen-browser": {
"inputs": { "inputs": {
"home-manager": "home-manager_2", "home-manager": "home-manager_2",
@@ -592,11 +815,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1768379550, "lastModified": 1788405419,
"narHash": "sha256-z94S29l5V86h11LZbPIMbHTJyksDG63aqISsZkTTuJY=", "narHash": "sha256-wuGizAVEmY0u15MYrhgy7AoQdHg+4Y2QiC+v/mxA8dc=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "06f61b4e4f4f6ba8027c96a5611c63dc0db12b90", "rev": "fdb83f8fce835213fab7eab52c375926fe1a32dc",
"type": "github" "type": "github"
}, },
"original": { "original": {
+40 -22
View File
@@ -4,19 +4,19 @@
inputs = { inputs = {
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; # nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Use nixos-unstable for latest kernel and packages nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Use nixos-unstable for latest kernel and packages
nixos-wsl = { # nixos-wsl = {
url = "github:nix-community/NixOS-WSL/main"; # url = "github:nix-community/NixOS-WSL/main";
inputs.nixpkgs.follows = "nixpkgs"; # inputs.nixpkgs.follows = "nixpkgs";
}; # };
# Snowfallorg's Flake utility # Snowfallorg's Flake utility
snowfall-lib = { snowfall-lib = {
url = "github:snowfallorg/lib"; url = "github:snowfallorg/lib";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
game-of-life = { # game-of-life = {
url = "github:local-interloper/game-of-life"; # url = "github:local-interloper/game-of-life";
inputs.nixpkgs.follows = "nixpkgs"; # inputs.nixpkgs.follows = "nixpkgs";
}; # };
# Add sops-nix for secrets management # Add sops-nix for secrets management
sops-nix = { sops-nix = {
url = "github:mic92/sops-nix"; url = "github:mic92/sops-nix";
@@ -30,26 +30,36 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
trilium-next-pr = { # anikki = {
url = "github:FliegendeWurst/nixpkgs/trilium-next"; # url = "github:Hion-V/Anikki-flake";
# Don't follow nixpkgs as this repo has its own pinned nixpkgs # inputs.nixpkgs.follows = "nixpkgs";
}; # };
anikki = {
url = "github:Hion-V/Anikki-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
lanzaboote = { lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.3"; url = "github:nix-community/lanzaboote/v1.1.0";
inputs.nixpkgs.follows = "nixpkgs";
};
kwin-effects-forceblur = {
url = "github:taj-ny/kwin-effects-forceblur";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
# kwin-effects-forceblur = { Archived.
# url = "github:taj-ny/kwin-effects-forceblur";
# inputs.nixpkgs.follows = "nixpkgs";
# };
aagl = { aagl = {
url = "github:ezKEa/aagl-gtk-on-nix"; url = "github:ezKEa/aagl-gtk-on-nix";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
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 = inputs: outputs = inputs:
@@ -89,13 +99,21 @@
inherit inputs; inherit inputs;
src = ./.; src = ./.;
overlays = with inputs; [
# Use the exact kernel versions as defined in this repo.
# Guarantees you have binary cache.
nix-cachyos-kernel.overlays.pinned
inputs.millennium.overlays.default
];
nixos = with inputs; [ nixos = with inputs; [
# disko.nixosModules.disko # disko.nixosModules.disko
# impermanence.nixosModules.impermanence # impermanence.nixosModules.impermanence
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = false; # Disabled to allow system-level overlays to work
useUserPackages = true; useUserPackages = true;
}; };
} }
@@ -6,6 +6,15 @@
}: }:
let let
inherit (lib.my-namespace) enabled; 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 in
{ {
imports = [ imports = [
@@ -23,25 +32,32 @@ in
packages = [ packages = [
pkgs.nil pkgs.nil
pkgs.beeper pkgs.beeper
pkgs.mpv
pkgs.my-namespace.udev-steelseries pkgs.my-namespace.udev-steelseries
pkgs.qbittorrent pkgs.qbittorrent
pkgs.hyfetch pkgs.hyfetch
pkgs.libreoffice pkgs.libreoffice
pkgs.localsend pkgs.localsend
simpleWallpaperEngine
# pkgs.vesktop # pkgs.vesktop
pkgs.obsidian pkgs.obsidian
inputs.zen-browser.packages.x86_64-linux.default inputs.zen-browser.packages.x86_64-linux.default
inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.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 # Auto-start linux-wallpaperengine for dual monitors via XDG autostart
xdg.configFile."autostart/linux-wallpaperengine.desktop".text = '' # xdg.configFile."autostart/linux-wallpaperengine.desktop".text = ''
[Desktop Entry] # [Desktop Entry]
Type=Application # Type=Application
Name=Wallpaper Engine # Name=Wallpaper Engine
Exec=${pkgs.my-namespace.linux-wallpaperengine}/bin/linux-wallpaperengine --screen-root DP-1 --bg 2935872330 --screen-root DP-2 --bg 2935872330 # 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-autostart-after=panel
X-KDE-StartupNotify=false # X-KDE-StartupNotify=false
''; # '';
} }
@@ -1,25 +0,0 @@
{ config
, lib
, pkgs
, ...
}:
let
inherit (lib.my-namespace) enabled;
in
{
imports = [
# ../modules.nix
];
my-namespace.home = {
stream-tools = enabled;
# networking = enabled;
# personal-apps = enabled;
# suites.laptop = enabled;
};
home = {
packages = [
pkgs.nil
pkgs.beeper
];
};
}
@@ -1,5 +1,4 @@
{ pkgs { config
, config
, lib , lib
, ... , ...
}: }:
+1 -1
View File
@@ -34,7 +34,7 @@ in
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
inetutils inetutils
neofetch hyfetch
tmux tmux
# nerdfonts # nerdfonts
p7zip p7zip
+2 -2
View File
@@ -2,12 +2,12 @@
let let
inherit (lib) mkEnableOption mkIf; inherit (lib) mkEnableOption mkIf;
cfg = config.my-namespace.home.vesktop-appimage; cfg = config.my-namespace.home.vesktop-appimage;
vesktopVersion = "1.6.1"; vesktopVersion = "1.6.4";
vesktopAppImage = pkgs.runCommand "vesktop-appimage" { } '' vesktopAppImage = pkgs.runCommand "vesktop-appimage" { } ''
cp ${pkgs.fetchurl { cp ${pkgs.fetchurl {
url = "https://github.com/Vencord/Vesktop/releases/download/v${vesktopVersion}/Vesktop-${vesktopVersion}.AppImage"; url = "https://github.com/Vencord/Vesktop/releases/download/v${vesktopVersion}/Vesktop-${vesktopVersion}.AppImage";
sha256 = "sha256-zK098H7iiOEe5y5YhgsUCPYVQQPcsnZw6/6q6Nx7h+w="; sha256 = "sha256-o7A8DBQyutONeLp5rstq9hQko2xxbvYZvGGM8/YOQ8s=";
}} $out }} $out
chmod +x $out chmod +x $out
''; '';
+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
];
};
}
@@ -5,6 +5,9 @@ let
in { in {
options.${namespace}.desktop-environment = { options.${namespace}.desktop-environment = {
cinnamon = {
enable = lib.mkEnableOption "Cinnamon desktop environment";
};
xfce = { xfce = {
enable = lib.mkEnableOption "XFCE desktop environment"; enable = lib.mkEnableOption "XFCE desktop environment";
}; };
@@ -23,6 +26,16 @@ in {
}; };
config = lib.mkMerge [ 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 { (lib.mkIf cfg.xfce.enable {
services.xserver = { services.xserver = {
enable = true; enable = true;
@@ -48,17 +61,66 @@ in {
enable = true; enable = true;
}; };
services.desktopManager.gnome.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; [ environment.systemPackages = with pkgs; [
gnome-tweaks gnome-tweaks
ptyxis
gnome-software gnome-software
gnomeExtensions.pop-shell gnomeExtensions.pop-shell
gnome-remote-desktop 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 { (lib.mkIf cfg.kde.enable {
services.xserver.enable = true; services.xserver.enable = true;
services.desktopManager.plasma6.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; [ environment.systemPackages = with pkgs; [
kdePackages.qtwebsockets kdePackages.qtwebsockets
kdePackages.qtwebchannel kdePackages.qtwebchannel
+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
];
};
}
@@ -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
+40 -39
View File
@@ -31,61 +31,62 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
protonup-ng # Tool to install and manage Proton-GE protonup-ng # Tool to install and manage Proton-GE
lutris lutris
faugus-launcher
vkd3d vkd3d
dxvk dxvk
corefonts
protontricks protontricks
mangohud mangohud
vkbasalt vkbasalt
gamescope 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 = { programs.steam = {
enable = true; enable = true;
package = pkgs.steam.override { package = pkgs.millennium-steam.override {
extraPkgs = pkgs: with pkgs; [ extraPkgs = pkgs: with pkgs; [
gamemode 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 remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server 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 localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
# gamescopeSession = {
# enable = true;
# env = {
# WLR_RENDERER = "vulkan";
# DXVK_HDR = "0 ";
# ENABLE_GAMESCOPE_WSI = "0";
# WINE_FULLSCREEN_FSR = "1";
# # Games allegedly prefer X11
# SDL_VIDEODRIVER = "x11";
# };
# args = [
# "--xwayland-count 1"
# "--expose-wayland"
# "-e" # Enable steam integration
# "--steam"
# # "--adaptive-sync"
# # "--hdr-enabled"
# # "--hdr-itm-enable"
# # External monitor
# "--prefer-output DP-3"
# "--output-width 1920"
# "--output-height 1080"
# "-r 172"
# # Laptop display
# # "--prefer-output eDP-1"
# # "--output-width 2560"
# # "--output-height 1600"
# # "-r 120"
# # "--prefer-vk-device 10de:1b81" # lspci -nn | grep VGA
# ];
# };
}; };
}; };
} }
-11
View File
@@ -1,11 +0,0 @@
{ ... }:
final: prev: {
mbedtls_2 = prev.mbedtls_2.overrideAttrs (oldAttrs: {
doCheck = false; # Skip failing PSA crypto tests
});
haxe = prev.haxe.overrideAttrs (oldAttrs: {
buildInputs = (oldAttrs.buildInputs or []) ++ [ final.mbedtls_2 ];
});
}
@@ -0,0 +1,7 @@
{ ... }:
final: prev: {
openldap = prev.openldap.overrideAttrs {
doCheck = !prev.stdenv.hostPlatform.isi686;
};
}
-17
View File
@@ -1,17 +0,0 @@
{ ... }:
final: prev: {
synergy = prev.synergy.overrideAttrs (oldAttrs: {
postPatch = (oldAttrs.postPatch or "") + ''
# Fix deprecated Qt endl usage in QTextStream contexts only
# Don't touch cerr/cout which use std::endl
find . -name "*.cpp" -type f -exec sed -i \
's/\(outStream.*<<.*\)endl/\1Qt::endl/g; s/\(QTextStream.*<<.*\)endl/\1Qt::endl/g' {} +
find . -name "*.h" -type f -exec sed -i \
's/\(outStream.*<<.*\)endl/\1Qt::endl/g; s/\(QTextStream.*<<.*\)endl/\1Qt::endl/g' {} +
# Fix missing SIZE_MAX include
sed -i '/#include <cstring>/a#include <cstdint>' src/lib/server/InputFilter.cpp
'';
});
}
+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 = [ ];
};
}
-69
View File
@@ -1,69 +0,0 @@
{
# 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.
stdenv,
fetchurl,
nixos,
callPackage,
testers,
versionCheckHook,
hello,
...
}:
stdenv.mkDerivation (finalAttrs: {
pname = "hello";
version = "2.12.1";
src = fetchurl {
url = "mirror://gnu/hello/hello-${finalAttrs.version}.tar.gz";
hash = "sha256-jZkUKv2SV28wsM18tCqNxoCZmLxdYH2Idh9RLibH2yA=";
};
# The GNU Hello `configure` script detects how to link libiconv but fails to actually make use of that.
# Unfortunately, this cannot be a patch to `Makefile.am` because `autoreconfHook` causes a gettext
# infrastructure mismatch error when trying to build `hello`.
env = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
NIX_LDFLAGS = "-liconv";
};
doCheck = true;
doInstallCheck = true;
nativeInstallCheckInputs = [
versionCheckHook
];
# Give hello some install checks for testing purpose.
postInstallCheck = ''
stat "''${!outputBin}/bin/${finalAttrs.meta.mainProgram}"
'';
passthru.tests = {
version = testers.testVersion { package = hello; };
};
passthru.tests.run = callPackage ./test.nix { hello = finalAttrs.finalPackage; };
meta = {
description = "Program that produces a familiar, friendly greeting";
longDescription = ''
GNU Hello is a program that prints "Hello, world!" when you run it.
It is fully customizable.
'';
homepage = "https://www.gnu.org/software/hello/manual/";
changelog = "https://git.savannah.gnu.org/cgit/hello.git/plain/NEWS?h=v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ stv0g ];
mainProgram = "hello";
platforms = lib.platforms.all;
};
})
-8
View File
@@ -1,8 +0,0 @@
{ runCommand, hello }:
runCommand "hello-test-run" {
nativeBuildInputs = [ hello ];
} ''
diff -U3 --color=auto <(hello) <(echo 'Hello, world!')
touch $out
''
+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;
};
}
+1 -1
View File
@@ -7,7 +7,7 @@ pkgs.mkShellNoCC {
packages = with pkgs; [ packages = with pkgs; [
cowsay cowsay
lolcat lolcat
bitwarden-desktop #replaced bitwarden # bitwarden-desktop #replaced bitwarden
bitwarden-cli bitwarden-cli
sops sops
]; ];
@@ -2,16 +2,21 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’). # and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, ... }: {
# config,
pkgs,
...
}:
{ {
imports = [ imports = [
./tigervnc.nix
./hardware/hardware-configuration.nix ./hardware/hardware-configuration.nix
]; ];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; # boot.loader.systemd-boot.enable = true; # managed by lanzaboote
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
networking.hostName = "drivebystation-nix"; # Define your hostname. networking.hostName = "drivebystation-nix"; # Define your hostname.
@@ -41,14 +46,41 @@
LC_TELEPHONE = "nl_NL.UTF-8"; LC_TELEPHONE = "nl_NL.UTF-8";
LC_TIME = "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 = { services = {
# Enable Gnome Session # Enable Gnome Session
displayManager.gdm.enable = false; displayManager.gdm.enable = true;
displayManager.sddm.enable = false; displayManager.sddm.enable = false;
# displayManager.sddm.wayland.enable = true; # displayManager.sddm.wayland.enable = true;
displayManager.cosmic-greeter.enable = true; displayManager.autoLogin = {
enable = false;
user = "andreas";
};
displayManager.cosmic-greeter.enable = false;
displayManager.defaultSession = "gnome"; displayManager.defaultSession = "gnome";
# Clear the sandbox restriction dynamically
xserver = { xserver = {
enable = true; # Enable the deprecated X11 teletype terminal connection system. enable = true; # Enable the deprecated X11 teletype terminal connection system.
@@ -88,7 +120,7 @@
alsa.support32Bit = true; alsa.support32Bit = true;
pulse.enable = true; pulse.enable = true;
# If you want to use JACK applications, uncomment this # If you want to use JACK applications, uncomment this
#jack.enable = true; jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default, # 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) # no need to redefine it in your config for now)
@@ -125,7 +157,7 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget # wget
(python312.withPackages (ps: with ps; [ websockets ])) (python3.withPackages (ps: with ps; [ websockets ]))
sqlite sqlite
javaPackages.compiler.openjdk25 javaPackages.compiler.openjdk25
javaPackages.compiler.openjdk21 javaPackages.compiler.openjdk21
@@ -135,6 +167,12 @@
krita krita
ntfs3g ntfs3g
htop htop
rivalcfg
blender
freecad
reaper
discord
betterdiscordctl
]; ];
environment.etc."xdg/autostart/xwaylandvideobridge.desktop".text = '' environment.etc."xdg/autostart/xwaylandvideobridge.desktop".text = ''
[Desktop Entry] [Desktop Entry]
@@ -152,6 +190,9 @@
services.gvfs.enable = true; # For file manager integration 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) # Disable iBus (not needed unless using Asian input methods)
i18n.inputMethod = { i18n.inputMethod = {
enable = false; enable = false;
@@ -160,13 +201,15 @@
virtualisation.libvirtd = { virtualisation.libvirtd = {
enable = true; enable = true;
qemu = { qemu = {
package = pkgs.qemu_kvm; package = pkgs.qemu;
runAsRoot = true; runAsRoot = true;
swtpm.enable = true; swtpm.enable = true;
vhostUserPackages = [ pkgs.virtiofsd ];
}; };
}; };
systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ]; systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
# started in user sessions. # started in user sessions.
@@ -181,17 +224,86 @@
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh.enable = true; services.openssh.enable = true;
# Open ports in the firewall. # Open ports in the .
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
24800 #Synergy 24800 #Synergy
53317 #localsend 53317 #localsend
3390 #rdp
9090
8000
40122
]; ];
networking.firewall.allowedUDPPorts = [ networking.firewall.allowedUDPPorts = [
24800 #Synergy 24800 #Synergy
53317 #localsend 53317 #localsend
3390 #rdp
9090
8000
40122
]; ];
# Or disable the firewall altogether. networking.firewall.trustedInterfaces = [ "virbr0" ];
# networking.firewall.enable = false; 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;
gui.enable = true;
};
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 # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions
@@ -199,6 +311,6 @@
# this value at the release version of the first install of this system. # this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option # Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.05"; # Did you read the comment? system.stateVersion = "26.05"; # Did you read the comment?
} }
@@ -10,23 +10,23 @@
inputs, inputs,
# Additional metadata is provided by Snowfall Lib. # Additional metadata is provided by Snowfall Lib.
# The namespace used for your flake, defaulting to "internal" if not set. # The namespace used for your flake, defaulting to "internal" if not set.
namespace, # namespace,
# The system architecture for this host (eg. `x86_64-linux`). # The system architecture for this host (eg. `x86_64-linux`).
system, # system,
# The Snowfall Lib target for this system (eg. `x86_64-iso`). # The Snowfall Lib target for this system (eg. `x86_64-iso`).
target, # target,
# A normalized name for the system target (eg. `iso`). # A normalized name for the system target (eg. `iso`).
format, # format,
# A boolean to determine whether this system is a virtual target using nixos-generators. # A boolean to determine whether this system is a virtual target using nixos-generators.
virtual, # virtual,
# An attribute map of your defined hosts. # An attribute map of your defined hosts.
systems, # systems,
# All other arguments come from the system system. # All other arguments come from the system system.
config # config,
, ... ...
}: }:
let let
inherit (lib.my-namespace) enabled; # inherit (lib.my-namespace) systemPackages;
inherit pkgs; inherit pkgs;
installedPackages = lib.my-namespace.mkPackages pkgs; installedPackages = lib.my-namespace.mkPackages pkgs;
in in
@@ -34,21 +34,33 @@ in
# inherit system; # inherit system;
imports = [ imports = [
./configuration.nix ./configuration.nix
./mutter-tearing.nix
./video.nix ./video.nix
inputs.wallpaperengine.nixosModules.default
inputs.aagl.nixosModules.default inputs.aagl.nixosModules.default
]; ];
config = { config = {
system.stateVersion = "24.05"; programs.linux-wallpaperengine.enable = true;
system.stateVersion = "26.05";
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Define a user account. Don't forget to set a password with ‘passwd’. # Distrobox
my-namespace.distrobox.enable = true;
# Desktops # Desktops
my-namespace.desktop-environment.xfce.enable = true; 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.gnome.enable = true;
my-namespace.desktop-environment.kde.enable = true; my-namespace.desktop-environment.kde.enable = false;
my-namespace.desktop-environment.cosmic.enable = true; 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 # GNOME-keyring
my-namespace.gnome-keyring.enable = true; 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 = { users.users.andreas = {
isNormalUser = true; isNormalUser = true;
description = "Andreas Schaafsma"; description = "Andreas Schaafsma";
@@ -61,27 +73,37 @@ in
"gamemode" "gamemode"
]; ];
packages = with pkgs; [ packages = with pkgs; [
# Packages from inputs # Packages from inputsq
inputs.game-of-life.packages.x86_64-linux.default # inputs.game-of-life.packages.x86_64-linux.default
inputs.zen-browser.packages.x86_64-linux.default inputs.zen-browser.packages.x86_64-linux.default
inputs.trilium-next-pr.legacyPackages.x86_64-linux.trilium-next-desktop # inputs.anikki.packages.x86_64-linux.default
inputs.anikki.packages.x86_64-linux.default
# We want flatpak support # We want flatpak support
flatpak flatpak
# GNOME shit # GNOME shit
thunderbird thunderbird
soundwireserver soundwireserver
vscode # vscode
# discord
spotify spotify
appimage-run appimage-run
prismlauncher #replaces broken minecraft package prismlauncher #replaces broken minecraft package
trilium-desktop trilium-desktop
terraform terraform
virt-manager virt-manager
nil
codex
inputs.codex-desktop.packages.${pkgs.stdenv.hostPlatform.system}.codex-desktop
# thunderbird # thunderbird
]; ];
}; };
programs.appimage = {
enable = true;
binfmt = true;
};
programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules
programs.anime-games-launcher.enable = true; programs.anime-games-launcher.enable = true;
@@ -93,32 +115,45 @@ in
# Open ports in the firewall. # Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
59010 #SoundWireServer 59010 #SoundWireServer
5901
5001
11434
3389 #RDP 3389 #RDP
22 #ssh 22 #ssh
]; ];
networking.firewall.allowedUDPPorts = [ networking.firewall.allowedUDPPorts = [
59010 #SoundWireServer 59010 #SoundWireServer
5901
5001
11434
3389 #RDP 3389 #RDP
22 #ssh 22 #ssh
]; ];
# Or disable the firewall altogether. # Or disable the firewall altogether.
# networking.firewall.enable = false; networking.firewall.enable = false;
programs.gamescope.enable = true;
programs.steam.gamescopeSession = {
enable = true;
args = [
"-w" "1920"
"-h" "1080"
"-r" "172"
];
};
# Install firefox. # Install firefox.
programs.firefox.enable = true; programs.firefox.enable = true;
nixpkgs.config.allowBroken = true; nixpkgs.config.allowBroken = true;
powerManagement.cpuFreqGovernor = "performance"; powerManagement.cpuFreqGovernor = "performance";
# Set up system Packages # 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; [ environment.systemPackages = with pkgs; [
git git
wine wine
@@ -129,9 +164,13 @@ in
synergy synergy
mangohud mangohud
my-namespace.udev-steelseries my-namespace.udev-steelseries
my-namespace.hello
kde-rounded-corners
my-namespace.linux-wallpaperengine my-namespace.linux-wallpaperengine
my-namespace.rounded-blur
my-namespace.rounded-windows-bms
my-namespace.cs-demo-manager
vscode-modernized
zed-editor
jetbrains-toolbox
(pkgs.writeShellScriptBin "switch-to-desktop" '' (pkgs.writeShellScriptBin "switch-to-desktop" ''
#!/bin/sh #!/bin/sh
@@ -141,26 +180,30 @@ in
# End the session cleanly # End the session cleanly
loginctl terminate-session "$XDG_SESSION_ID" loginctl terminate-session "$XDG_SESSION_ID"
'') '')
(pkgs.writeShellScriptBin "steamos-session-select" '' (pkgs.writeShellScriptBin "steamos-session-select" ''
#!/bin/sh #!/bin/sh
exec switch-to-desktop exec switch-to-desktop
'') '')
# Vulkan packages for Steam # Vulkan packages for Steam
pkgs.mesa mesa
pkgs.vulkan-loader vulkan-loader
pkgs.vulkan-validation-layers vulkan-validation-layers
pkgs.vulkan-extension-layer vulkan-extension-layer
pkgs.vulkan-tools vulkan-tools
pkgs.libva libva
pkgs.libva-utils libva-utils
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget # wget
] ]
++ installedPackages.packages; ++ installedPackages.packages;
programs.nix-ld = { programs.nix-ld = {
enable = true; enable = true;
package = pkgs.nix-ld; #replaces nix-ld-rs package = pkgs.nix-ld; #replaces nix-ld-rs
}; };
services.flatpak.enable = true; services.flatpak.enable = true;
systemd.services.flatpak-repo = { systemd.services.flatpak-repo = {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
@@ -188,9 +231,10 @@ in
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI! # 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. # 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.sleep.enable = false;
systemd.targets.hibernate.enable = false; # systemd.targets.suspend.enable = false;
systemd.targets.hybrid-sleep.enable = false; # systemd.targets.hibernate.enable = false;
# systemd.targets.hybrid-sleep.enable = false;
}; };
} }
@@ -1,7 +1,9 @@
{ config, lib, pkgs, ... }: { 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/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" ]; boot.kernelParams = [
"drm.edid_firmware=DP-2:edid/edid.bin,DP-4:edid/edid.bin"
];
hardware.firmware = [ hardware.firmware = [
@@ -18,11 +18,16 @@
boot.kernelParams = [ boot.kernelParams = [
"console=tty0" "console=tty0"
# "efifb=off" # "efifb=off"
# "xe.force_probe=*" "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" "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"; # environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
hardware.intel-gpu-tools.enable = true; hardware.intel-gpu-tools.enable = true;
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
@@ -33,6 +38,8 @@
vpl-gpu-rt # oneVPL runtime vpl-gpu-rt # oneVPL runtime
intel-vaapi-driver # fallback intel-vaapi-driver # fallback
intel-compute-runtime # OpenCL/Level Zero 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
]; ];
}; };
@@ -47,11 +54,42 @@
"nvidia_uvm" "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 = { environment.variables = {
# Force Intel GPU for all graphics operations
KWIN_DRM_DEVICES = "/dev/dri/card0"; 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 ## X / Wayland GPU Drivers
@@ -79,4 +117,25 @@
## User Access ## User Access
############################ ############################
users.users.andreas.extraGroups = [ "video" "render" ]; 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,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" ];
}
@@ -8,30 +8,73 @@
[ [
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
./graphics/intel.nix ./graphics/intel.nix
./graphics/passthrough_nvidia.nix
# ./graphics/intel_i915.nix
# ./graphics/nvidia.nix # ./graphics/nvidia.nix
./acer-monitor-edid.nix ./acer-monitor-edid.nix
./samsung-monitor-edid.nix
]; ];
# boot.kernelPackages = pkgs.linuxPackages_latest; # boot.kernelPackages = pkgs.linuxPackages_latest;
boot.kernelPackages = pkgs.linuxPackages_zen; boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
# boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest; # boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
# boot.kernelPackages = pkgs.linuxPackages; # boot.kernelPackages = pkgs.linuxPackages;
boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.kernelModules = [ "kvm-amd" "r8125" "4vl2loopback" ]; boot.kernelModules = [ "kvm-amd" "r8125" "4vl2loopback" ];
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback r8125 ]; boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback r8125 ];
boot.supportedFilesystems = [ "ntfs" ]; boot.supportedFilesystems = [ "ntfs" ];
boot.blacklistedKernelModules = [ "r8169" ]; boot.blacklistedKernelModules = [ "r8169" ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; systemd.services.disable-realtek-eee = {
fsType = "ext4"; 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."/boot" = {
device = "/dev/disk/by-uuid/E846-D998"; fileSystems."/" =
fsType = "vfat"; { device = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b";
options = [ "fmask=0077" "dmask=0077" ]; 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"];
# };
@@ -41,10 +84,10 @@
swapDevices = [ { swapDevices = [ {
device = "/var/lib/swapfile"; device = "/var/lib/swapfile";
size = 32*1024; size = 32*1024;
} ]; #resume-offset = 78399488 } ]; #resume-offset = 195323904
boot.resumeDevice = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; # the unlocked drive mapping boot.resumeDevice = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b"; # the unlocked drive mapping
boot.kernelParams = [ boot.kernelParams = [
"resume_offset=78399488" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}' "resume_offset=195323904" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}'
"r8125.aspm=0" # realtek network adapter fix "r8125.aspm=0" # realtek network adapter fix
]; ];
security.protectKernelImage = false; security.protectKernelImage = false;
@@ -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;
};
}