Compare commits
249
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3062ef1608 | ||
|
|
ac7a47c26a | ||
|
|
74d3d6870d | ||
|
|
ac9eeb1f1c | ||
|
|
666b7ab737 | ||
|
|
bcfada020b | ||
|
|
d79713972e | ||
|
|
441d029eb6 | ||
|
|
17933af881 | ||
|
|
c4693f0ee6 | ||
|
|
813e474bc1 | ||
|
|
333bed459d | ||
|
|
cd454434d7 | ||
|
|
e89ee3c559 | ||
|
|
0dad448f97 | ||
|
|
cc0cc15ee5 | ||
|
|
5596fb8a9c | ||
|
|
dce21780ac | ||
|
|
310fc047b2 | ||
|
|
c9725d3b78 | ||
|
|
777acf7503 | ||
|
|
e6fd27f8ee | ||
|
|
f14680dfbf | ||
|
|
ca050d08d3 | ||
|
|
d0f23a0e7f | ||
|
|
1cdedee438 | ||
|
|
eac6e5ca97 | ||
|
|
819cbd3606 | ||
|
|
65e6e7f747 | ||
|
|
36dbc3229d | ||
|
|
2f3e8c14f2 | ||
|
|
14b6e989f6 | ||
|
|
64324ab150 | ||
|
|
c56a82c0b1 | ||
|
|
9e686b3f8d | ||
|
|
a512855fa9 | ||
|
|
4dbe74854f | ||
|
|
2a543c6e93 | ||
|
|
3f68e02f6a | ||
|
|
89e04df44a | ||
|
|
d0546b20ea | ||
|
|
a652234c7c | ||
|
|
b867dd12c4 | ||
|
|
2fc09a965a | ||
|
|
e3d7538fa3 | ||
|
|
d64b2f8d6d | ||
|
|
093623dad7 | ||
|
|
f6c2c48c7d | ||
|
|
b7c6a2fce5 | ||
|
|
a692c1353d | ||
|
|
589eefd527 | ||
|
|
981d351744 | ||
|
|
0fae6cfc06 | ||
|
|
0b47961483 | ||
|
|
01a512e3fd | ||
|
|
631b28d399 | ||
|
|
96045f57c4 | ||
|
|
86d717fad1 | ||
|
|
a7392b3c30 | ||
|
|
e72154ab65 | ||
|
|
47acfb12ff | ||
|
|
8a7229cea8 | ||
|
|
123b55cdf1 | ||
|
|
e4cd967f06 | ||
|
|
715c3c07b5 | ||
|
|
64a464af49 | ||
|
|
5c710e0cb6 | ||
|
|
26554b8261 | ||
|
|
75cecb0386 | ||
|
|
3d8f717c7a | ||
|
|
5807e0076a | ||
|
|
f80b6295ac | ||
|
|
eb90b797df | ||
|
|
ed06b07960 | ||
|
|
bf7f6a1218 | ||
|
|
6d0f92fad6 | ||
|
|
164ed80931 | ||
|
|
4a9a71bad1 | ||
|
|
b9da82b956 | ||
|
|
bb596a794e | ||
|
|
476cab8c9d | ||
|
|
d57aeb9ef3 | ||
|
|
aaba57ee2f | ||
|
|
2332cc1e9d | ||
|
|
df06c641c2 | ||
|
|
2880272e2a | ||
|
|
d3896b5817 | ||
|
|
522d87f51d | ||
|
|
578f246519 | ||
|
|
271658bf4d | ||
|
|
fbe9f8b3ec | ||
|
|
149641c87b | ||
|
|
21782c109e | ||
|
|
8ee971cbf8 | ||
|
|
1ed2b9c130 | ||
|
|
31102ae362 | ||
|
|
33893cafd8 | ||
|
|
61e41fca0a | ||
|
|
b90bfdaed8 | ||
|
|
9eff6a3a6a | ||
|
|
fbbd74bfae | ||
|
|
fcf8efe577 | ||
|
|
ec3d963494 | ||
|
|
82b9b48493 | ||
|
|
e03b3d229d | ||
|
|
06a3b10079 | ||
|
|
613a9c5540 | ||
|
|
0c754590f1 | ||
|
|
5474251a64 | ||
|
|
dd1aa0957e | ||
|
|
ddce79071d | ||
|
|
fd8f18eeec | ||
|
|
501e35ae45 | ||
|
|
65fc0ace0e | ||
|
|
dc8f70b344 | ||
|
|
5cc90d85f7 | ||
|
|
75491e90e7 | ||
|
|
819b81d8d2 | ||
|
|
fe4f291ef8 | ||
|
|
da46fc7eca | ||
|
|
58206b4c80 | ||
|
|
1e02adf3cf | ||
|
|
15b75b0010 | ||
|
|
6d34c7dbd0 | ||
|
|
8681424692 | ||
|
|
0956fccdc6 | ||
|
|
1e187a7cee | ||
|
|
9dab3f0608 | ||
|
|
26d59c7ca6 | ||
|
|
9bc5922e49 | ||
|
|
2e3ef5fd47 | ||
|
|
415f3bb057 | ||
|
|
bcc2ca5cf0 | ||
|
|
c202dbcdec | ||
|
|
f3b6a5cddd | ||
|
|
191733ec51 | ||
|
|
881a047c75 | ||
|
|
95c1b53699 | ||
|
|
aecc12a945 | ||
|
|
b5afdc5817 | ||
|
|
ab9acedf49 | ||
|
|
0e31504687 | ||
|
|
85147137b0 | ||
|
|
914b88ac82 | ||
|
|
646f35e5d4 | ||
|
|
3ed8d601a2 | ||
|
|
02a99d31fa | ||
|
|
2be93bd323 | ||
|
|
6a43859425 | ||
|
|
439cb8200f | ||
|
|
a812e53f06 | ||
|
|
8ccc4d65a9 | ||
|
|
581a701151 | ||
|
|
5fc4b9e0f3 | ||
|
|
80e89c531d | ||
|
|
f607c99ec4 | ||
|
|
c92ea31991 | ||
|
|
e60e6bc8c0 | ||
|
|
3ca9b0533b | ||
|
|
55b5521518 | ||
|
|
39f1253900 | ||
|
|
4ff1acc318 | ||
|
|
261b704d31 | ||
|
|
48b7079b32 | ||
|
|
480a1598a6 | ||
|
|
beb1c9eb75 | ||
|
|
12fccea34f | ||
|
|
c0c37d5fca | ||
|
|
df73e98b85 | ||
|
|
e95ab8bd3e | ||
|
|
c6104a7a9e | ||
|
|
f9b40222a0 | ||
|
|
866efb4718 | ||
|
|
6463a9e869 | ||
|
|
105c9737f6 | ||
|
|
089bf927e0 | ||
|
|
b4bc7490fc | ||
|
|
0dd087f4b8 | ||
|
|
f60718619f | ||
|
|
c47509ef99 | ||
|
|
c5767b775b | ||
|
|
ef4869d2cc | ||
|
|
0207f790ef | ||
|
|
b4500a59c1 | ||
|
|
e6f20d1d69 | ||
|
|
51e5e00ab6 | ||
|
|
31e86618c3 | ||
|
|
e28a22ec11 | ||
|
|
93c3ae48c5 | ||
|
|
1abec387cd | ||
|
|
081ffed1e1 | ||
|
|
583a1a1905 | ||
|
|
48e9ae18ef | ||
|
|
793b7e1a30 | ||
|
|
051b48d3ba | ||
|
|
47ff5618e9 | ||
|
|
ad7fb01791 | ||
|
|
1e6daa09f6 | ||
|
|
1557caba8b | ||
|
|
47d716c2de | ||
|
|
d3ebbadc27 | ||
|
|
02aa649bb1 | ||
|
|
41321a5364 | ||
|
|
95388efbc8 | ||
|
|
5e0036e591 | ||
|
|
37309cd66e | ||
|
|
1354042094 | ||
|
|
bd75aecb14 | ||
|
|
3a59ef19f6 | ||
|
|
499260d83f | ||
|
|
b78ba76cd3 | ||
|
|
093feba49d | ||
|
|
afd823c23e | ||
|
|
b1e3fa601d | ||
|
|
2f07912f1b | ||
|
|
8701b72258 | ||
|
|
8c305e3703 | ||
|
|
86f61e9547 | ||
|
|
ce387ab5db | ||
|
|
7d07de663d | ||
|
|
f19a3d129c | ||
|
|
89fde794b8 | ||
|
|
f451095a92 | ||
|
|
3fad8fcf16 | ||
|
|
415ea15ea0 | ||
|
|
48f1d774c9 | ||
|
|
b4e3457721 | ||
|
|
21f5a618fa | ||
|
|
99b30e124a | ||
|
|
b891969c7e | ||
|
|
1cb2a609a8 | ||
|
|
4ff075bce4 | ||
|
|
a496d0451b | ||
|
|
c606f39f8f | ||
|
|
b779b84242 | ||
|
|
8c0ecd90e8 | ||
|
|
092691c665 | ||
|
|
718ca864e3 | ||
|
|
4454eb84fb | ||
|
|
f7823d9ad3 | ||
|
|
72cac1e8c6 | ||
|
|
cf95749f84 | ||
|
|
9ca20b8e24 | ||
|
|
2f5a44b112 | ||
|
|
c29cae486e | ||
|
|
769e1c166a | ||
|
|
5a36dbc083 | ||
|
|
b8d94f015f | ||
|
|
0aa885e2e4 |
@@ -0,0 +1 @@
|
||||
.vscode/settings.json
|
||||
@@ -3,9 +3,11 @@ keys:
|
||||
- &andreas age19j24x89dfh4f7v58c8k64yupqas4f7qkkyper7yj9dd7vqwvvq0qkyvhxk # generated using cli
|
||||
- hosts:
|
||||
- &th0nkpad-nixos age1ma8x6wugvc40mkst33mejq0m6r44jk6zwjjun3znyer5nztgn9vs0nwjx4 # derived from ssh host key
|
||||
- &drivebystation-nix age1s5qwsuc3e4m3c4w5hl6tyja70w273gr60j9j9dcpc6mz69lemg3qpwud3h #derived from ssh host key
|
||||
creation_rules:
|
||||
- path_regex: secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *andreas
|
||||
- *th0nkpad-nixos
|
||||
- *drivebystation-nix
|
||||
@@ -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
+544
-135
@@ -1,17 +1,143 @@
|
||||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"Catch2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1717312683,
|
||||
"narHash": "sha256-FrlieJH50AuvagamEvWMIE6D2OAnERuDboFDYAED/dE=",
|
||||
"owner": "nix-community",
|
||||
"repo": "flake-compat",
|
||||
"rev": "38fd3954cf65ce6faf3d0d45cd26059e059f07ea",
|
||||
"lastModified": 1759222471,
|
||||
"narHash": "sha256-7Dx7PhtRwkbo8vHF57sAns2fQZ442D3cMyCt25RvzJc=",
|
||||
"owner": "catchorg",
|
||||
"repo": "Catch2",
|
||||
"rev": "b3fb4b9feafcd8d91c5cb510a4775143fdbef02f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"owner": "catchorg",
|
||||
"repo": "Catch2",
|
||||
"rev": "b3fb4b9feafcd8d91c5cb510a4775143fdbef02f",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"MimeTypes": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1577040615,
|
||||
"narHash": "sha256-biRcxbpRVnD3+VVo0fNrNGeAi1P7pSzkGKHZrTtGp7Q=",
|
||||
"owner": "lasselukkari",
|
||||
"repo": "MimeTypes",
|
||||
"rev": "8990d6a796bd9904ec3d41e5c150a1ffb48fe32e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lasselukkari",
|
||||
"repo": "MimeTypes",
|
||||
"rev": "8990d6a796bd9904ec3d41e5c150a1ffb48fe32e",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"SPIRV-Cross-WallpaperEngine": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1745093314,
|
||||
"narHash": "sha256-ou66paGlu3KXf8LL8zfTiE8wOf0nRBocDs1QvfRVs+k=",
|
||||
"owner": "Almamu",
|
||||
"repo": "SPIRV-Cross-WallpaperEngine",
|
||||
"rev": "ad4d02220b01c1800e5a4e6671d6d8ca8ab07783",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Almamu",
|
||||
"repo": "SPIRV-Cross-WallpaperEngine",
|
||||
"rev": "ad4d02220b01c1800e5a4e6671d6d8ca8ab07783",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"aagl": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1787517695,
|
||||
"narHash": "sha256-Z119G3qLJx22frNHO3/seMs7fCCvxe9NJJRfN4Jadew=",
|
||||
"owner": "ezKEa",
|
||||
"repo": "aagl-gtk-on-nix",
|
||||
"rev": "4bb57072d963aa47f14894383a5560cf290e296a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ezKEa",
|
||||
"repo": "aagl-gtk-on-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"argparse": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1737934041,
|
||||
"narHash": "sha256-gRLn4juxwde7ugvT/p4lx9ayDTm7o32NKaE/SEbnLHI=",
|
||||
"owner": "p-ranav",
|
||||
"repo": "argparse",
|
||||
"rev": "d924b84eba1f0f0adf38b20b7b4829f6f65b6570",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "p-ranav",
|
||||
"repo": "argparse",
|
||||
"rev": "d924b84eba1f0f0adf38b20b7b4829f6f65b6570",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"codex-desktop": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1791562553,
|
||||
"narHash": "sha256-uyLpIxJv9lqy1pgGUd0C/RZvqWyFqbwR0Tq7E+UX0VM=",
|
||||
"owner": "ilysenko",
|
||||
"repo": "codex-desktop-linux",
|
||||
"rev": "443cb5d52ed781cac6cc7083780abb058cf93678",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ilysenko",
|
||||
"repo": "codex-desktop-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"crane": {
|
||||
"locked": {
|
||||
"lastModified": 1781825982,
|
||||
"narHash": "sha256-SlXKwIRIhrOSAcTjCB3ftPLzJWZStQIPS7J1FlZPnKk=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "469fd08d0bcf6926321fa973c6777fbc87785dd7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -19,11 +145,43 @@
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_4": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1650374568,
|
||||
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -32,19 +190,21 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"flake": false,
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"lastModified": 1788306937,
|
||||
"narHash": "sha256-lbrI1UYVpFgKSsyrU9oeF7FHfnu8nLD9ja0ou9f2rxk=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f16b25b8c3d2809b87925d0b76652d7821a75c68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -53,11 +213,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -87,7 +247,7 @@
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694529238,
|
||||
@@ -103,21 +263,42 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"game-of-life": {
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"pre-commit",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1728511087,
|
||||
"narHash": "sha256-CvO74jwMjUUPySy0QCt7sPImbxKlhWcSAet93Fkt6iU=",
|
||||
"owner": "local-interloper",
|
||||
"repo": "game-of-life",
|
||||
"rev": "c39d37e394f5da79a6a7d198e1d7e505aa5298a7",
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "local-interloper",
|
||||
"repo": "game-of-life",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
@@ -128,11 +309,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730837930,
|
||||
"narHash": "sha256-0kZL4m+bKBJUBQse0HanewWO0g8hDdCvBhudzxgehqc=",
|
||||
"lastModified": 1788355065,
|
||||
"narHash": "sha256-gAz5oTI7ur34CfuakQduiQd/2ZhO62Bn2XXg08nZYYQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "2f607e07f3ac7e53541120536708e824acccfaa8",
|
||||
"rev": "d9d750e4fc11c10cab2da677bdd31e427f3a3a71",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -141,103 +322,201 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-cosmic": {
|
||||
"home-manager_2": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-stable": "nixpkgs-stable",
|
||||
"rust-overlay": "rust-overlay"
|
||||
"nixpkgs": [
|
||||
"zen-browser",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730776371,
|
||||
"narHash": "sha256-qLH/qtoBoKZJ5I2Ry312jCVJTfXu6XcCdcXPPAyJhBM=",
|
||||
"owner": "lilyinstarlight",
|
||||
"repo": "nixos-cosmic",
|
||||
"rev": "c62f5e8c7a9a1ebc4013b617e0e054011c747d49",
|
||||
"lastModified": 1788229478,
|
||||
"narHash": "sha256-G0F2rFORVcFkEvVdE/qWQTnYekIc77YP5/vRF9nZlxU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "1dc2d1f720ab17fc7981e087346bf54b26d284b1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lilyinstarlight",
|
||||
"repo": "nixos-cosmic",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-wsl": {
|
||||
"json": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1743872075,
|
||||
"narHash": "sha256-eSqi4dhFrUvjYN+jD8nGqj1FbzGA6I2+eSqzdCGOLH8=",
|
||||
"owner": "nlohmann",
|
||||
"repo": "json",
|
||||
"rev": "4424a0fcc1c7fa640b5c87d26776d99150dacd10",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nlohmann",
|
||||
"repo": "json",
|
||||
"rev": "4424a0fcc1c7fa640b5c87d26776d99150dacd10",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"kissfft": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1739194969,
|
||||
"narHash": "sha256-DywClnx67EE+CnduSuZIIfaAKbBg1ebQ+JgwIpDsnGQ=",
|
||||
"owner": "mborgerding",
|
||||
"repo": "kissfft",
|
||||
"rev": "febd4caeed32e33ad8b2e0bb5ea77542c40f18ec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "mborgerding",
|
||||
"repo": "kissfft",
|
||||
"rev": "febd4caeed32e33ad8b2e0bb5ea77542c40f18ec",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"lanzaboote": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
"crane": "crane",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit": "pre-commit",
|
||||
"rust-overlay": "rust-overlay_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726981058,
|
||||
"narHash": "sha256-065MWSg1xhMdYun53S7mWKUEDviAEyxT/kl6JrjZwe4=",
|
||||
"lastModified": 1782141370,
|
||||
"narHash": "sha256-hqijVSEETttmo8Okql9/LG0Ua34hdciKW1a5zzlj8mU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "NixOS-WSL",
|
||||
"rev": "f9f28d8ff5288f821f1e64ec03185a9bb0edb0d0",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "7c9a54a7f87b4539ddbd8bda09a8a5f5f9361aa9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "main",
|
||||
"repo": "NixOS-WSL",
|
||||
"ref": "v1.1.0",
|
||||
"repo": "lanzaboote",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"millennium": {
|
||||
"inputs": {
|
||||
"millennium-src": "millennium-src",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-bun": "nixpkgs-bun"
|
||||
},
|
||||
"locked": {
|
||||
"dir": "packages/nix",
|
||||
"lastModified": 1792022604,
|
||||
"narHash": "sha256-xyl3KTB+j4W3dAxQVSolNJCQZOasDnCLB3Dr14adBmU=",
|
||||
"owner": "SteamClientHomebrew",
|
||||
"repo": "Millennium",
|
||||
"rev": "22af2f453777a925fb398a3dab60a407e66aa83f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"dir": "packages/nix",
|
||||
"owner": "SteamClientHomebrew",
|
||||
"repo": "Millennium",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"millennium-src": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1791947497,
|
||||
"narHash": "sha256-sNpoyJ+IjrTiDGfX2QiKVg4jkrJR7n9PdBeOYJSS4n8=",
|
||||
"owner": "SteamClientHomebrew",
|
||||
"repo": "Millennium",
|
||||
"rev": "401d532543a0fbff469653ccba802bdd7e45f861",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "SteamClientHomebrew",
|
||||
"repo": "Millennium",
|
||||
"rev": "401d532543a0fbff469653ccba802bdd7e45f861",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1717179513,
|
||||
"narHash": "sha256-vboIEwIQojofItm2xGCdZCzW96U85l9nDW3ifMuAIdM=",
|
||||
"lastModified": 1788329703,
|
||||
"narHash": "sha256-fHvRW4JUchuw6QNzQ50BfzeYe0TnjKml1V8PVRjntSI=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "63dacb46bf939521bdc93981b4cbb7ecb58427a0",
|
||||
"rev": "090e478bd64824e2122328df47a7efb74fdaf0c1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "24.05",
|
||||
"ref": "nixos-unstable-small",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
"nixpkgs-bun": {
|
||||
"locked": {
|
||||
"lastModified": 1730602179,
|
||||
"narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=",
|
||||
"owner": "NixOS",
|
||||
"lastModified": 1790822859,
|
||||
"narHash": "sha256-69xHQhAeMAD2wDXO7T2pcOZIF9Sga2W+JkmY2a11Ops=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c",
|
||||
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-24.05",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable_2": {
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1730602179,
|
||||
"narHash": "sha256-efgLzQAWSzJuCLiCaQUCDu4NudNlHdg2NzGLX5GYaEY=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3c2f1c4ca372622cb2f9de8016c9a0b1cbd0f37c",
|
||||
"lastModified": 1788057806,
|
||||
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "release-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1730531603,
|
||||
"narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=",
|
||||
"lastModified": 1788179007,
|
||||
"narHash": "sha256-hn1oU2rue2SYK8dAr8+WNZWtbsz1S2W5mnHlSEuh3bo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d",
|
||||
"rev": "34ab99075ac4f7e40cf037eef32cb1c360bb85e9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -249,27 +528,11 @@
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1726320982,
|
||||
"narHash": "sha256-RuVXUwcYwaUeks6h3OLrEmg14z9aFXdWppTWPMTwdQw=",
|
||||
"lastModified": 1789286504,
|
||||
"narHash": "sha256-eiEK7cKZORNEvX0GeF3RtNEF/JXhgf2RqSp3230q13E=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8f7492cce28977fbf8bd12c72af08b1f6c7c3e49",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-24.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1728241625,
|
||||
"narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1",
|
||||
"rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -279,47 +542,75 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_5": {
|
||||
"pre-commit": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_2",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1727348695,
|
||||
"narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
|
||||
"lastModified": 1781733627,
|
||||
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"quickjs": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1770976497,
|
||||
"narHash": "sha256-odQznZ/Xc6IGh6JPM1RyyEn9HL/+/AFR99XcF+WHJDc=",
|
||||
"owner": "quickjs-ng",
|
||||
"repo": "quickjs",
|
||||
"rev": "72ba50f63ee31202f8c18b8d07ab1e1c3486ee6f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "quickjs-ng",
|
||||
"repo": "quickjs",
|
||||
"rev": "72ba50f63ee31202f8c18b8d07ab1e1c3486ee6f",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"game-of-life": "game-of-life",
|
||||
"aagl": "aagl",
|
||||
"codex-desktop": "codex-desktop",
|
||||
"home-manager": "home-manager",
|
||||
"nixos-cosmic": "nixos-cosmic",
|
||||
"nixos-wsl": "nixos-wsl",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"lanzaboote": "lanzaboote",
|
||||
"millennium": "millennium",
|
||||
"nix-cachyos-kernel": "nix-cachyos-kernel",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"simple-wallpaper-engine": "simple-wallpaper-engine",
|
||||
"snowfall-lib": "snowfall-lib",
|
||||
"sops-nix": "sops-nix",
|
||||
"wallpaperengine": "wallpaperengine",
|
||||
"zen-browser": "zen-browser"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixos-cosmic",
|
||||
"aagl",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730687492,
|
||||
"narHash": "sha256-xQVadjquBA/tFxDt5A55LJ1D1AvkVWsnrKC2o+pr8F4=",
|
||||
"lastModified": 1785476452,
|
||||
"narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "41814763a2c597755b0755dbe3e721367a5e420f",
|
||||
"rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -328,20 +619,62 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"rust-overlay_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1782012058,
|
||||
"narHash": "sha256-9mWUnReOUXfKjZuJAL/bAFH3LUyECTRtXgSNVjRw3UY=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "8534567325bd8a8d2928e6afd81e0a87d19efd3c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"simple-wallpaper-engine": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772136897,
|
||||
"narHash": "sha256-2RBgZWq80zXVWyOswUlDaoRZtaeT6pBkbNCLdAzLYoY=",
|
||||
"owner": "Maxnights",
|
||||
"repo": "simple-linux-wallpaperengine-gui",
|
||||
"rev": "43ae644754a0a5e96c8ddb9077843643b74f9acc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Maxnights",
|
||||
"repo": "simple-linux-wallpaperengine-gui",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"snowfall-lib": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-compat": "flake-compat_4",
|
||||
"flake-utils-plus": "flake-utils-plus",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1719005984,
|
||||
"narHash": "sha256-mpFl3Jv4fKnn+5znYXG6SsBjfXHJdRG5FEqNSPx0GLA=",
|
||||
"lastModified": 1784328457,
|
||||
"narHash": "sha256-4R5WV74NHhPk21ctoPmjL7nQ6txDnoBLwSWULvIw0TY=",
|
||||
"owner": "snowfallorg",
|
||||
"repo": "lib",
|
||||
"rev": "c6238c83de101729c5de3a29586ba166a9a65622",
|
||||
"rev": "6ee3542cb459ca4b038cfe50ceb8797f05cdabad",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -354,15 +687,14 @@
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable_2"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1730883027,
|
||||
"narHash": "sha256-pvXMOJIqRW0trsW+FzRMl6d5PbsM4rWfD5lcKCOrrwI=",
|
||||
"lastModified": 1788337237,
|
||||
"narHash": "sha256-gkSH8VUtCo6hnysNmb9DbTuDepH2t5pv+QWjP75xKAk=",
|
||||
"owner": "mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "c5ae1e214ff935f2d3593187a131becb289ea639",
|
||||
"rev": "fbf759290e0cb0a98dfc813a4eb7d53ad1dacb57",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -371,6 +703,23 @@
|
||||
"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": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
@@ -401,20 +750,80 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"zen-browser": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_5"
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1727721329,
|
||||
"narHash": "sha256-QYlWZwUSwrM7BuO+dXclZIwoPvBIuJr6GpFKv9XKFPI=",
|
||||
"owner": "MarceColl",
|
||||
"repo": "zen-browser-flake",
|
||||
"rev": "e6ab73f405e9a2896cce5956c549a9cc359e5fcc",
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "MarceColl",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"wallpaperengine": {
|
||||
"inputs": {
|
||||
"Catch2": "Catch2",
|
||||
"MimeTypes": "MimeTypes",
|
||||
"SPIRV-Cross-WallpaperEngine": "SPIRV-Cross-WallpaperEngine",
|
||||
"argparse": "argparse",
|
||||
"glslang-WallpaperEngine": "glslang-WallpaperEngine",
|
||||
"json": "json",
|
||||
"kissfft": "kissfft",
|
||||
"nixpkgs": "nixpkgs_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": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1788405419,
|
||||
"narHash": "sha256-wuGizAVEmY0u15MYrhgy7AoQdHg+4Y2QiC+v/mxA8dc=",
|
||||
"owner": "0xc000022070",
|
||||
"repo": "zen-browser-flake",
|
||||
"rev": "fdb83f8fce835213fab7eab52c375926fe1a32dc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "0xc000022070",
|
||||
"repo": "zen-browser-flake",
|
||||
"type": "github"
|
||||
}
|
||||
|
||||
@@ -3,25 +3,63 @@
|
||||
|
||||
inputs = {
|
||||
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Use nixos-unstable for latest kernel and packages
|
||||
# nixos-wsl = {
|
||||
# url = "github:nix-community/NixOS-WSL/main";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
# Snowfallorg's Flake utility
|
||||
snowfall-lib = {
|
||||
url = "github:snowfallorg/lib";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
game-of-life.url = "github:local-interloper/game-of-life";
|
||||
nixos-cosmic.url = "github:lilyinstarlight/nixos-cosmic";
|
||||
# game-of-life = {
|
||||
# url = "github:local-interloper/game-of-life";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
# Add sops-nix for secrets management
|
||||
sops-nix = {
|
||||
url = "github:mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
zen-browser.url = "github:MarceColl/zen-browser-flake";
|
||||
zen-browser = {
|
||||
url = "github:0xc000022070/zen-browser-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# anikki = {
|
||||
# url = "github:Hion-V/Anikki-flake";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
lanzaboote = {
|
||||
url = "github:nix-community/lanzaboote/v1.1.0";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# kwin-effects-forceblur = { Archived.
|
||||
# url = "github:taj-ny/kwin-effects-forceblur";
|
||||
# inputs.nixpkgs.follows = "nixpkgs";
|
||||
# };
|
||||
aagl = {
|
||||
url = "github:ezKEa/aagl-gtk-on-nix";
|
||||
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:
|
||||
@@ -61,13 +99,21 @@
|
||||
inherit inputs;
|
||||
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; [
|
||||
|
||||
# disko.nixosModules.disko
|
||||
# impermanence.nixosModules.impermanence
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useGlobalPkgs = false; # Disabled to allow system-level overlays to work
|
||||
useUserPackages = true;
|
||||
};
|
||||
}
|
||||
@@ -78,6 +124,25 @@
|
||||
|
||||
systems.modules.nixos = with inputs; [
|
||||
# my-input.nixosModules.my-module
|
||||
lanzaboote.nixosModules.lanzaboote ({ pkgs, lib, ... }: {
|
||||
environment.systemPackages = [
|
||||
# For debugging and troubleshooting Secure Boot.
|
||||
pkgs.sbctl
|
||||
];
|
||||
|
||||
|
||||
boot.loader.systemd-boot.configurationLimit = 4;
|
||||
# Lanzaboote currently replaces the systemd-boot module.
|
||||
# This setting is usually set to true in configuration.nix
|
||||
# generated at installation time. So we force it to false
|
||||
# for now.
|
||||
boot.loader.systemd-boot.enable = lib.mkForce false;
|
||||
|
||||
boot.lanzaboote = {
|
||||
enable = true;
|
||||
pkiBundle = "/var/lib/sbctl";
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
# The attribute set specified here will be passed directly to NixPkgs when
|
||||
@@ -85,7 +150,9 @@
|
||||
channels-config = {
|
||||
# Allow unfree packages.
|
||||
allowUnfree = true;
|
||||
|
||||
permittedInsecurePackages = [
|
||||
"mbedtls-2.28.10" # needed for haxe 4.3.6
|
||||
];
|
||||
# # Allow certain insecure packages
|
||||
# permittedInsecurePackages = [
|
||||
# "firefox-100.0.0"
|
||||
|
||||
@@ -6,6 +6,15 @@
|
||||
}:
|
||||
let
|
||||
inherit (lib.my-namespace) enabled;
|
||||
system = pkgs.stdenv.hostPlatform.system;
|
||||
simpleWallpaperEngine =
|
||||
inputs.simple-wallpaper-engine.packages.${system}.default.override {
|
||||
# The upstream GUI package otherwise puts nixpkgs' unmodified
|
||||
# linux-wallpaperengine in its wrapped PATH.
|
||||
pkgs = pkgs // {
|
||||
linux-wallpaperengine = inputs.wallpaperengine.packages.${system}.default;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
@@ -14,6 +23,7 @@ in
|
||||
my-namespace.home = {
|
||||
stream-tools = enabled;
|
||||
gnome-customizations = enabled;
|
||||
vesktop-appimage = enabled;
|
||||
# networking = enabled;
|
||||
# personal-apps = enabled;
|
||||
# suites.laptop = enabled;
|
||||
@@ -21,13 +31,33 @@ in
|
||||
home = {
|
||||
packages = [
|
||||
pkgs.nil
|
||||
pkgs.steam
|
||||
pkgs.gamemode
|
||||
pkgs.beeper
|
||||
pkgs.mpv
|
||||
pkgs.my-namespace.udev-steelseries
|
||||
pkgs.qbittorrent
|
||||
pkgs.vesktop
|
||||
pkgs.hyfetch
|
||||
pkgs.libreoffice
|
||||
pkgs.localsend
|
||||
simpleWallpaperEngine
|
||||
# pkgs.vesktop
|
||||
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 # Archived.
|
||||
];
|
||||
};
|
||||
xdg.autostart = {
|
||||
enable = true;
|
||||
entries = [
|
||||
"${simpleWallpaperEngine}/share/applications/simple-wallpaper-engine-autostart.desktop"
|
||||
];
|
||||
};
|
||||
# Auto-start linux-wallpaperengine for dual monitors via XDG autostart
|
||||
# xdg.configFile."autostart/linux-wallpaperengine.desktop".text = ''
|
||||
# [Desktop Entry]
|
||||
# Type=Application
|
||||
# Name=Wallpaper Engine
|
||||
# Exec=${pkgs.my-namespace.linux-wallpaperengine}/bin/linux-wallpaperengine --screen-root DP-1 --bg 2935872330 --screen-root DP-2 --bg 2935872330 -f 12
|
||||
# X-KDE-autostart-after=panel
|
||||
# X-KDE-StartupNotify=false
|
||||
# '';
|
||||
}
|
||||
@@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -20,12 +20,10 @@ in
|
||||
home = {
|
||||
packages = [
|
||||
pkgs.nil
|
||||
pkgs.steam
|
||||
pkgs.gamemode
|
||||
pkgs.beeper
|
||||
pkgs.my-namespace.udev-steelseries
|
||||
pkgs.qbittorrent
|
||||
pkgs.vesktop
|
||||
#pkgs.vesktop
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
{ pkgs
|
||||
, config
|
||||
{ config
|
||||
, lib
|
||||
, ...
|
||||
}:
|
||||
|
||||
@@ -1,28 +1,49 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib
|
||||
, # An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs
|
||||
, # You also have access to your flake's inputs.
|
||||
inputs
|
||||
, # Additional metadata is provided by Snowfall Lib.
|
||||
namespace
|
||||
, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||
system
|
||||
, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target
|
||||
, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format
|
||||
, # A normalized name for the system target (eg. `iso`).
|
||||
virtual
|
||||
, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems
|
||||
, # An attribute map of your defined hosts.
|
||||
# All other arguments come from the module system.
|
||||
config
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
inherit (lib.my-namespace) enabled;
|
||||
|
||||
imp = config.my-namespace.home.impermanence.enable;
|
||||
in {
|
||||
in
|
||||
{
|
||||
config = {
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
inetutils
|
||||
neofetch
|
||||
hyfetch
|
||||
tmux
|
||||
nerdfonts
|
||||
# nerdfonts
|
||||
p7zip
|
||||
rclone
|
||||
ripgrep
|
||||
unzip
|
||||
zip
|
||||
];
|
||||
sessionPath = ["$HOME/bin" "$HOME/.local/bin"];
|
||||
sessionPath = [ "$HOME/bin" "$HOME/.local/bin" ];
|
||||
shellAliases = {
|
||||
# "df" = "duf -only local";
|
||||
# "du" = "dust -xd1 --skip-total";
|
||||
@@ -52,8 +73,6 @@ in {
|
||||
};
|
||||
home-manager = enabled;
|
||||
};
|
||||
services = {
|
||||
|
||||
};
|
||||
services = { };
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,11 +16,19 @@ in {
|
||||
config = mkIf cfg.enable {
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
plugins = [ pkgs.obs-studio-plugins.droidcam-obs ];
|
||||
plugins = with pkgs.obs-studio-plugins; [
|
||||
wlrobs
|
||||
obs-backgroundremoval
|
||||
obs-pipewire-audio-capture
|
||||
obs-vaapi #optional AMD hardware acceleration
|
||||
obs-gstreamer
|
||||
obs-vkcapture
|
||||
pkgs.my-namespace.droidcam-obs # Custom override with FFmpeg 6
|
||||
];
|
||||
};
|
||||
home = {
|
||||
packages = with pkgs; [
|
||||
# obs-studio
|
||||
config.programs.obs-studio.finalPackage
|
||||
droidcam
|
||||
];
|
||||
};
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
inherit (lib) mkEnableOption mkIf;
|
||||
cfg = config.my-namespace.home.vesktop-appimage;
|
||||
vesktopVersion = "1.6.4";
|
||||
|
||||
vesktopAppImage = pkgs.runCommand "vesktop-appimage" { } ''
|
||||
cp ${pkgs.fetchurl {
|
||||
url = "https://github.com/Vencord/Vesktop/releases/download/v${vesktopVersion}/Vesktop-${vesktopVersion}.AppImage";
|
||||
sha256 = "sha256-o7A8DBQyutONeLp5rstq9hQko2xxbvYZvGGM8/YOQ8s=";
|
||||
}} $out
|
||||
chmod +x $out
|
||||
'';
|
||||
|
||||
vesktopWrapped = pkgs.writeShellScriptBin "vesktop" ''
|
||||
exec ${pkgs.appimage-run}/bin/appimage-run ${vesktopAppImage} "$@"
|
||||
'';
|
||||
|
||||
vesktopIcon = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/Vencord/Vesktop/main/build/icon.svg";
|
||||
sha256 = "sha256-fQ+dvbPIb4AFd9f7JqIt7+twJdEMQF9jTTwrk5p1vn8=";
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
options.my-namespace.home.vesktop-appimage = {
|
||||
enable = mkEnableOption "Install Vesktop (AppImage) with Vencord support";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
xdg.dataFile."icons/hicolor/scalable/apps/vesktop.svg".source = vesktopIcon;
|
||||
|
||||
home.packages = [
|
||||
pkgs.appimage-run
|
||||
vesktopWrapped
|
||||
];
|
||||
|
||||
xdg.desktopEntries.vesktop = {
|
||||
name = "Vesktop";
|
||||
comment = "Discord client with Vencord (AppImage)";
|
||||
exec = "${vesktopWrapped}/bin/vesktop";
|
||||
icon = "vesktop";
|
||||
terminal = false;
|
||||
type = "Application";
|
||||
categories = [ "Network" "Chat" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,32 +0,0 @@
|
||||
{ config
|
||||
, lib
|
||||
, inputs
|
||||
, pkgs
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkEnableOption mkIf;
|
||||
inherit (lib.my-namespace) disabled enabled;
|
||||
|
||||
cfg = config.my-namespace.cosmic-desktop;
|
||||
# moduleImports = {
|
||||
# "enabled" = [inputs.nixos-cosmic.nixosModules.default];
|
||||
# "disabled" = [];
|
||||
# };
|
||||
# optionalImports = { imports = []; };
|
||||
in
|
||||
{
|
||||
options.my-namespace.cosmic-desktop = {
|
||||
enable = mkEnableOption "Enable nvidia";
|
||||
};
|
||||
imports = [ inputs.nixos-cosmic.nixosModules.default ];
|
||||
config = mkIf cfg.enable {
|
||||
nix.settings = {
|
||||
substituters = [ "https://cosmic.cachix.org/" ];
|
||||
trusted-public-keys = [ "cosmic.cachix.org-1:Dya9IyXD4xdBehWjrkPv6rtxpmMdRel02smYzA85dPE=" ];
|
||||
};
|
||||
|
||||
services.desktopManager.cosmic.enable = true;
|
||||
services.displayManager.cosmic-greeter.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{ lib, pkgs, config, namespace, ... }:
|
||||
|
||||
let
|
||||
cfg = config.${namespace}.cs-tools;
|
||||
in
|
||||
{
|
||||
options.${namespace}.cs-tools = {
|
||||
enable = lib.mkEnableOption "CS tools including CS Demo Manager and PostgreSQL";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [ "csdm" ];
|
||||
ensureUsers = [{
|
||||
name = "csdm";
|
||||
}];
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
my-namespace.cs-demo-manager
|
||||
postgresql
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,160 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
|
||||
let
|
||||
cfg = config.${namespace}.desktop-environment;
|
||||
in {
|
||||
|
||||
options.${namespace}.desktop-environment = {
|
||||
cinnamon = {
|
||||
enable = lib.mkEnableOption "Cinnamon desktop environment";
|
||||
};
|
||||
xfce = {
|
||||
enable = lib.mkEnableOption "XFCE desktop environment";
|
||||
};
|
||||
gnome = {
|
||||
enable = lib.mkEnableOption "GNOME desktop environment";
|
||||
};
|
||||
kde = {
|
||||
enable = lib.mkEnableOption "KDE Plasma desktop environment";
|
||||
};
|
||||
cosmic = {
|
||||
enable = lib.mkEnableOption "Cosmic desktop environment";
|
||||
};
|
||||
hyprland = {
|
||||
enable = lib.mkEnableOption "hyprland Wayland shell";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf cfg.xfce.enable {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager = {
|
||||
cinnamon.enable = true;
|
||||
};
|
||||
};
|
||||
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR =
|
||||
lib.mkForce "${pkgs.gnome.nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
|
||||
})
|
||||
(lib.mkIf cfg.xfce.enable {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager = {
|
||||
xfce.enable = true;
|
||||
};
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
xfce4-pulseaudio-plugin
|
||||
xfce4-clipman-plugin
|
||||
xfce4-screenshooter
|
||||
xfce4-whiskermenu-plugin
|
||||
thunar-archive-plugin
|
||||
thunar-volman
|
||||
gvfs
|
||||
gnome-keyring
|
||||
libgnome-keyring
|
||||
];
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.gnome.enable {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
};
|
||||
services.desktopManager.gnome.enable = true;
|
||||
services.gnome.gnome-remote-desktop.enable = true;
|
||||
systemd.services.gnome-remote-desktop = {
|
||||
wantedBy = [ "graphical.target" ]; # for starting the unit automatically at boot
|
||||
};
|
||||
services.displayManager.autoLogin.enable = false;
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
3389
|
||||
3390
|
||||
];
|
||||
|
||||
# users.users.andreas.extraGroups = [ "sambashare" ];
|
||||
# Enable Avahi (mDNS/DNS-SD) for discovery
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
nssmdns4 = true;
|
||||
openFirewall = true;
|
||||
};
|
||||
# Enable GNOME sharing services
|
||||
services.gnome.gnome-user-share.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
gnome-tweaks
|
||||
ptyxis
|
||||
gnome-software
|
||||
gnomeExtensions.pop-shell
|
||||
gnome-remote-desktop
|
||||
dconf-editor
|
||||
glib-networking # Required gnome-remote-desktop dependency
|
||||
];
|
||||
systemd.user.services.gnome-remote-desktop.environment = {
|
||||
VK_ICD_FILENAMES = "/dev/null";
|
||||
LIBGL_ALWAYS_SOFTWARE = "1";
|
||||
};
|
||||
|
||||
systemd.services.gnome-remote-desktop.environment = {
|
||||
VK_ICD_FILENAMES = "/dev/null";
|
||||
LIBGL_ALWAYS_SOFTWARE = "1";
|
||||
};
|
||||
environment.sessionVariables.XDG_DATA_DIRS = lib.mkAfter [
|
||||
"${pkgs.gnome-remote-desktop}/share"
|
||||
];
|
||||
environment.pathsToLink = [
|
||||
"/share/gsettings-schemas"
|
||||
"/share"
|
||||
];
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.kde.enable {
|
||||
services.xserver.enable = true;
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
environment.sessionVariables = {
|
||||
# Forces KWin to use the legacy DRM interface so "Allow Tearing" actually works
|
||||
# KWIN_DRM_NO_AMS = "1";
|
||||
# Disables the new triple buffering in Plasma 6.1+ to reduce latency
|
||||
# KWIN_DRM_DISABLE_TRIPLE_BUFFERING = "1";
|
||||
# KWIN_USE_HWCURSOR = "0";
|
||||
# KWIN_DRM_USE_EGL_STREAMS = "0";
|
||||
# MESA_VK_WSI_PRESENT_MODE = "immediate";
|
||||
# vblank_mode = "0";
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
kdePackages.qtwebsockets
|
||||
kdePackages.qtwebchannel
|
||||
kdePackages.korganizer
|
||||
kdePackages.akonadi
|
||||
kdePackages.akonadi-calendar
|
||||
kdePackages.akonadi-contacts
|
||||
kdePackages.kaddressbook
|
||||
kdePackages.kmail
|
||||
kdePackages.kdepim-runtime
|
||||
kdePackages.kontact
|
||||
kdePackages.kidentitymanagement
|
||||
kdePackages.libkdepim
|
||||
kdePackages.kwin
|
||||
kdePackages.plasma-workspace
|
||||
gnome-keyring
|
||||
libgnome-keyring
|
||||
];
|
||||
})
|
||||
(lib.mkIf cfg.cosmic.enable {
|
||||
services.desktopManager.cosmic.enable = true;
|
||||
services.desktopManager.cosmic.xwayland.enable = true;
|
||||
environment.systemPackages = with pkgs; [
|
||||
|
||||
gnome-keyring
|
||||
libgnome-keyring
|
||||
];
|
||||
})
|
||||
(lib.mkIf cfg.hyprland.enable {
|
||||
programs.hyprland.enable = true; # enable Hyprland
|
||||
environment.systemPackages = with pkgs; [
|
||||
pkgs.kitty # required for the default Hyprland config
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
}
|
||||
@@ -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,30 @@
|
||||
{ config, lib, pkgs, namespace, options, ... }:
|
||||
|
||||
let
|
||||
cfg = config.${namespace}.gnome-keyring;
|
||||
in {
|
||||
options.${namespace}.gnome-keyring = {
|
||||
enable = lib.mkEnableOption "Enable GNOME Keyring integration";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.gnome.gnome-keyring.enable = true;
|
||||
|
||||
# PAM configuration for automatic keyring unlock
|
||||
security.pam.services.sddm.enableGnomeKeyring = true;
|
||||
security.pam.services.login.enableGnomeKeyring = true;
|
||||
security.pam.services.gdm.enableGnomeKeyring = true;
|
||||
|
||||
# Make KDE apps use GNOME Keyring as the Secret Service backend
|
||||
environment.variables = {
|
||||
# Set GNOME Keyring as the SSH agent
|
||||
SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/keyring/ssh";
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
seahorse # GUI for managing the keyring
|
||||
gcr # Keyring integration
|
||||
libsecret # Secret Service API library for KDE apps
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -1,131 +0,0 @@
|
||||
{ config
|
||||
, lib
|
||||
, pkgs
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkEnableOption mkIf;
|
||||
inherit (lib.my-namespace) disabled enabled;
|
||||
|
||||
cfg = config.my-namespace.hardware.graphics-nvidia-prime-amd;
|
||||
in
|
||||
{
|
||||
options.my-namespace.hardware.graphics-nvidia-prime-amd = {
|
||||
enable = mkEnableOption "Enable nvidia";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
# Enable NVIDIA driver for X11 and Wayland
|
||||
services.xserver.videoDrivers = [ "amdgpu" "nvidia" ];
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [ nvidia-vaapi-driver ];
|
||||
};
|
||||
|
||||
# Use Beta Driver Package
|
||||
boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11_beta ];
|
||||
|
||||
|
||||
|
||||
boot.loader.systemd-boot.consoleMode = "max";
|
||||
|
||||
# Enable required Kernel Modules
|
||||
boot.initrd.kernelModules = [
|
||||
"amdgpu"
|
||||
"nvidia"
|
||||
# "nvidia-drm"
|
||||
"nvidiafb"
|
||||
# "nvidia-uvm"
|
||||
# "nvidia-modeset"
|
||||
# "i2c-nvidia_gpu"
|
||||
];
|
||||
|
||||
|
||||
boot.kernelParams = [
|
||||
"amdgpu.modeset=1"
|
||||
"nvidia-drm.fbdev=1"
|
||||
"nvidia-drm.modeset=0"
|
||||
# "nvidia.NVreg_PreserveVideoMemoryAllocations=0"
|
||||
"amd_iommu=on"
|
||||
# "vfio-pci.ids=\"10de:2489,10de:228b\""
|
||||
# "nomodeset"
|
||||
# "nvidia_drm.modeset=1"
|
||||
];
|
||||
|
||||
|
||||
# Blacklist intel and nouveau
|
||||
boot.blacklistedKernelModules = [
|
||||
"i915"
|
||||
"nouveau"
|
||||
# "nvidia"
|
||||
# "nvidia-drm"
|
||||
# "nvidia-uvm"
|
||||
# "nvidiafb"
|
||||
# "nvidia_drm"
|
||||
# "nvidia_modeset"
|
||||
];
|
||||
|
||||
# Extra blacklist nouveau
|
||||
boot.extraModprobeConfig = ''
|
||||
blacklist nouveau
|
||||
options nouveau modeset=0
|
||||
'';
|
||||
|
||||
# Configure NVIDIA driver
|
||||
hardware.nvidia = {
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = true;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.none;
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.production;
|
||||
|
||||
forceFullCompositionPipeline = false;
|
||||
|
||||
prime = {
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
reverseSync.enable = false;
|
||||
# Make sure to use the correct Bus ID values for your system!
|
||||
# intelBusId = "PCI:0:2:0";
|
||||
nvidiaBusId = "PCI:01:0:0";
|
||||
amdgpuBusId = "PCI:50:0:0"; #For AMD GPU
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
# Add user to extra groups
|
||||
users.users.andreas = {
|
||||
extraGroups = [ "video" "render" ];
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
|
||||
let
|
||||
cfg = config.${namespace}.keychron-keyboard;
|
||||
in {
|
||||
options.${namespace}.keychron-keyboard = {
|
||||
enable = lib.mkEnableOption "Enable Keychron keyboard configuration";
|
||||
# Add additional options here, e.g. vendor/product IDs, keymaps, etc.
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
# Create the plugdev group and ensure users can access HID devices
|
||||
users.groups.plugdev = {};
|
||||
|
||||
hardware.keyboard.qmk.keychronSupport = true;
|
||||
services.udev.packages = with pkgs; [ qmk qmk-udev-rules ];
|
||||
|
||||
|
||||
# Example udev rule or keychron-specific settings
|
||||
services.udev.extraRules = ''
|
||||
# Atmel DFU
|
||||
### ATmega16U2
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess"
|
||||
### ATmega32U2
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess"
|
||||
### ATmega16U4
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess"
|
||||
### ATmega32U4
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
|
||||
### AT90USB64
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
|
||||
### AT90USB162
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
|
||||
### AT90USB128
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
|
||||
|
||||
# Input Club
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess"
|
||||
|
||||
# STM32duino
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess"
|
||||
# STM32 DFU
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
|
||||
|
||||
# BootloadHID
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess"
|
||||
|
||||
# USBAspLoader
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
|
||||
|
||||
# USBtinyISP
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess"
|
||||
|
||||
# ModemManager should ignore the following devices
|
||||
# Atmel SAM-BA (Massdrop)
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
|
||||
# Caterina (Pro Micro)
|
||||
## pid.codes shared PID
|
||||
### Keyboardio Atreus 2 Bootloader
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
## Spark Fun Electronics
|
||||
### Pro Micro 3V3/8MHz
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
### Pro Micro 5V/16MHz
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
### LilyPad 3V3/8MHz (and some Pro Micro clones)
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
## Pololu Electronics
|
||||
### A-Star 32U4
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
## Arduino SA
|
||||
### Leonardo
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
### Micro
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
## Adafruit Industries LLC
|
||||
### Feather 32U4
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
### ItsyBitsy 32U4 3V3/8MHz
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
### ItsyBitsy 32U4 5V/16MHz
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
## dog hunter AG
|
||||
### Leonardo
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
### Micro
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
||||
|
||||
# hid_listen
|
||||
KERNEL=="hidraw*", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
|
||||
|
||||
# hidraw devices for WebHID (Keychron Launcher, VIA)
|
||||
SUBSYSTEM=="hidraw", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
|
||||
|
||||
# hid bootloaders
|
||||
## QMK HID
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess"
|
||||
## PJRC's HalfKay
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess"
|
||||
|
||||
# APM32 DFU
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess"
|
||||
|
||||
# GD32V DFU
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess"
|
||||
|
||||
# WB32 DFU
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess"
|
||||
|
||||
# AT32 DFU
|
||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", TAG+="uaccess"
|
||||
'';
|
||||
#
|
||||
# home.file.".config/some-config".text = ''
|
||||
# # keyboard-related configuration
|
||||
# '';
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
############################################
|
||||
#
|
||||
# Shared System Configuration module that's always enabled by default courtesy of snowfall lib
|
||||
#
|
||||
############################################
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib
|
||||
, # An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs
|
||||
, # You also have access to your flake's inputs.
|
||||
inputs
|
||||
, # Additional metadata is provided by Snowfall Lib.
|
||||
namespace
|
||||
, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||
system
|
||||
, # The system architecture for this host (eg. `x86_64-linux`).
|
||||
target
|
||||
, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
format
|
||||
, # A normalized name for the system target (eg. `iso`).
|
||||
virtual
|
||||
, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
systems
|
||||
, # An attribute map of your defined hosts.
|
||||
|
||||
# All other arguments come from the module system.
|
||||
config
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
inherit (lib.my-namespace) enabled;
|
||||
in
|
||||
{
|
||||
config = {
|
||||
boot = { };
|
||||
console = { };
|
||||
environment = {
|
||||
systemPackages =
|
||||
(with pkgs; [
|
||||
age
|
||||
wget
|
||||
sops
|
||||
bitwarden-desktop #replaced bitwarden
|
||||
bitwarden-cli
|
||||
cowsay
|
||||
remmina
|
||||
]);
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
|
||||
let
|
||||
cfg = config.${namespace}.performance-tuning;
|
||||
in {
|
||||
options.${namespace}.performance-tuning.enable = lib.mkEnableOption "performance tuning settings for gaming and general use";
|
||||
config = lib.mkIf cfg.enable {
|
||||
boot.kernelParams = [
|
||||
"nvme_core.default_ps_max_latency_us=0"
|
||||
];
|
||||
|
||||
boot.kernel.sysctl = {
|
||||
"vm.swappiness" = 10;
|
||||
"vm.dirty_ratio" = 10;
|
||||
"vm.dirty_background_ratio" = 5;
|
||||
};
|
||||
|
||||
services.pipewire.extraConfig.pipewire."context.properties" = {
|
||||
"default.clock.quantum" = 256;
|
||||
"default.clock.min-quantum" = 128;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
let
|
||||
cfg = config.${namespace}.rtl8125-recovery;
|
||||
recovery = pkgs.writeShellApplication {
|
||||
name = "rtl8125-recover";
|
||||
runtimeInputs = with pkgs; [ coreutils gnugrep pciutils ethtool systemd ];
|
||||
text = builtins.readFile ./recover.sh;
|
||||
};
|
||||
in {
|
||||
options.${namespace}.rtl8125-recovery = {
|
||||
enable = lib.mkEnableOption "RTL8125 PCI recovery after boot and resume";
|
||||
pciAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0000:0a:00.0";
|
||||
description = "PCI address of the onboard RTL8125 controller.";
|
||||
};
|
||||
bridgeAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0000:06:03.0";
|
||||
description = "Immediate parent PCI bridge of the controller.";
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.rtl8125-recovery = {
|
||||
description = "Recover RTL8125 from failed PCI power restoration";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "NetworkManager.service" ];
|
||||
environment = {
|
||||
NIC_PCI = cfg.pciAddress;
|
||||
NIC_BRIDGE = cfg.bridgeAddress;
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = lib.getExe recovery;
|
||||
TimeoutStartSec = "90s";
|
||||
StateDirectory = "rtl8125-recovery";
|
||||
StateDirectoryMode = "0700";
|
||||
UMask = "0077";
|
||||
};
|
||||
};
|
||||
|
||||
# sleep.target is stopped after resume. Queue recovery separately so its
|
||||
# grace period does not hold up the sleep transaction or user sessions.
|
||||
systemd.services.rtl8125-resume = {
|
||||
description = "Queue RTL8125 recovery after waking";
|
||||
wantedBy = [ "sleep.target" ];
|
||||
before = [ "sleep.target" ];
|
||||
unitConfig.StopWhenUnneeded = true;
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
ExecStart = "${pkgs.coreutils}/bin/true";
|
||||
ExecStop = "${pkgs.systemd}/bin/systemctl --no-block start rtl8125-recovery.service";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
@@ -0,0 +1,92 @@
|
||||
{
|
||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
||||
# as well as the libraries available from your flake's inputs.
|
||||
lib,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
# The namespace used for your flake, defaulting to "internal" if not set.
|
||||
namespace,
|
||||
# The system architecture for this host (eg. `x86_64-linux`).
|
||||
system,
|
||||
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
target,
|
||||
# A normalized name for the system target (eg. `iso`).
|
||||
format,
|
||||
# A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
virtual,
|
||||
# An attribute map of your defined hosts.
|
||||
systems,
|
||||
# All other arguments come from the system system.
|
||||
config
|
||||
, ...
|
||||
}:{
|
||||
config = {
|
||||
# programs.gamescope = {
|
||||
# enable = true;
|
||||
# capSysNice = true;
|
||||
# };
|
||||
environment.systemPackages = with pkgs; [
|
||||
protonup-ng # Tool to install and manage Proton-GE
|
||||
lutris
|
||||
faugus-launcher
|
||||
vkd3d
|
||||
dxvk
|
||||
protontricks
|
||||
mangohud
|
||||
vkbasalt
|
||||
gamescope
|
||||
corefonts
|
||||
];
|
||||
|
||||
hardware.uinput.enable = true;
|
||||
users.users.andreas.extraGroups = [ "input" ];
|
||||
# Explicitly register the desktop MIME scheme handler
|
||||
xdg.mime = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"x-scheme-handler/steam" = [ "steam.desktop" ];
|
||||
"x-scheme-handler/steamlink" = [ "steam.desktop" ];
|
||||
};
|
||||
};
|
||||
programs.gamescope.enable = true;
|
||||
programs.steam.gamescopeSession = {
|
||||
enable = true;
|
||||
args = [
|
||||
"-w" "1920"
|
||||
"-h" "1080"
|
||||
"-r" "172"
|
||||
"-e" # Enable steam integration
|
||||
"--steam"
|
||||
"--prefer-outpout DP-4"
|
||||
"--prefer-vk-device 8086:e20b" # lspci -nn | grep VGA
|
||||
];
|
||||
env = {
|
||||
# WLR_RENDERER = "vulkan";
|
||||
# DXVK_HDR = "0 ";
|
||||
# ENABLE_GAMESCOPE_WSI = "0";
|
||||
# WINE_FULLSCREEN_FSR = "1";
|
||||
# SDL_VIDEODRIVER = "wayland,x11"; # Games allegedly prefer X11
|
||||
};
|
||||
};
|
||||
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
package = pkgs.millennium-steam.override {
|
||||
extraPkgs = pkgs: with pkgs; [
|
||||
gamemode
|
||||
noto-fonts-color-emoji
|
||||
];
|
||||
extraEnv = {
|
||||
# SDL_VIDEODRIVER = "wayland,x11";
|
||||
# SDL_VIDEODRIVER = "x11,wayland";
|
||||
};
|
||||
};
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{ lib, pkgs, inputs, config, namespace, ... }:
|
||||
|
||||
let
|
||||
# Import the plugin as a package derivation from your local repo
|
||||
# Pass the 'inputs' parameter explicitly to make wallpaper-engine-plugin-src available
|
||||
wallpaperEnginePkg = pkgs.callPackage ../../../packages/wallpaper-engine-kde-plugin/default.nix { inherit inputs; };
|
||||
in {
|
||||
options.${namespace}.wallpaper-engine-kde-plugin.enable =
|
||||
lib.mkEnableOption "Enable Wallpaper Engine KDE plugin";
|
||||
|
||||
config = lib.mkIf config.${namespace}.wallpaper-engine-kde-plugin.enable {
|
||||
# Add the imported package and helper script to systemPackages
|
||||
environment.systemPackages = [
|
||||
wallpaperEnginePkg
|
||||
(pkgs.writeShellScriptBin "wallpaper-engine-kde-setup" ''
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
STEAM_DIR="$HOME/.local/share/Steam"
|
||||
WORKSHOP_PATH="$STEAM_DIR/steamapps/workshop/content/431960"
|
||||
|
||||
echo "Wallpaper Engine KDE Plugin Setup Helper"
|
||||
echo "========================================"
|
||||
|
||||
# Check if Steam directory exists
|
||||
if [ -d "$STEAM_DIR" ]; then
|
||||
echo "✅ Steam directory found at: $STEAM_DIR"
|
||||
|
||||
if [ -d "$WORKSHOP_PATH" ]; then
|
||||
echo "✅ Workshop content directory found at: $WORKSHOP_PATH"
|
||||
echo " You can use this path in the wallpaper settings."
|
||||
else
|
||||
echo "⚠️ Workshop content directory not found at the expected location."
|
||||
echo " Please locate your Steam workshop content for Wallpaper Engine (app ID 431960)"
|
||||
fi
|
||||
else
|
||||
echo "⚠️ Steam directory not found at: $STEAM_DIR"
|
||||
echo " Please install Steam and Wallpaper Engine first."
|
||||
fi
|
||||
|
||||
# Check symlinks
|
||||
if [ -L "$HOME/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde" ]; then
|
||||
echo "✅ Plugin symlink is correctly set up"
|
||||
else
|
||||
echo "⚠️ Plugin symlink not found, attempting to create it..."
|
||||
mkdir -p "$HOME/.local/share/plasma/wallpapers"
|
||||
ln -sf /run/current-system/sw/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde \
|
||||
"$HOME/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde"
|
||||
echo " Done! Symlink created."
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "To use Wallpaper Engine wallpapers in KDE:"
|
||||
echo "1. Right-click on desktop → Configure Desktop and Wallpaper"
|
||||
echo "2. Select 'Wallpaper Engine' from the wallpaper type list"
|
||||
echo "3. Set the path to your workshop content directory"
|
||||
'')
|
||||
];
|
||||
|
||||
systemd.user.services.wallpaperEngineSymlink = {
|
||||
description = "Symlink Wallpaper Engine plugin for Plasma";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/.local/share/plasma/wallpapers";
|
||||
ExecStart = "${pkgs.coreutils}/bin/ln -sfn /run/current-system/sw/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde %h/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ ... }:
|
||||
|
||||
final: prev: {
|
||||
openldap = prev.openldap.overrideAttrs {
|
||||
doCheck = !prev.stdenv.hostPlatform.isi686;
|
||||
};
|
||||
}
|
||||
@@ -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/&/\&/g' \
|
||||
-e 's/</\</g' \
|
||||
-e 's/>/\>/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;
|
||||
}
|
||||
@@ -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 = [ ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
autoPatchelfHook,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "droidcam-obs";
|
||||
version = "2.4.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/dev47apps/droidcam-obs-plugin/releases/download/${version}/droidcam_obs_${version}_linux_x86_64.zip";
|
||||
sha256 = "sha256-18IjC3+WR5XLo464RuwAtWRNSpQcsnarXu56CrxCMhM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgs.unzip autoPatchelfHook ];
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
stdenv.cc.cc.lib
|
||||
obs-studio
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/lib/obs-plugins
|
||||
mkdir -p $out/share/obs/obs-plugins/droidcam-obs
|
||||
|
||||
cp bin/64bit/*.so $out/lib/obs-plugins/
|
||||
cp -r data/* $out/share/obs/obs-plugins/droidcam-obs/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "DroidCam OBS Plugin - Use your phone as a camera in OBS (FFmpeg 7 compatible)";
|
||||
homepage = "https://www.dev47apps.com/obs/";
|
||||
license = licenses.unfree;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -1,8 +0,0 @@
|
||||
{ runCommand, hello }:
|
||||
|
||||
runCommand "hello-test-run" {
|
||||
nativeBuildInputs = [ hello ];
|
||||
} ''
|
||||
diff -U3 --color=auto <(hello) <(echo 'Hello, world!')
|
||||
touch $out
|
||||
''
|
||||
@@ -0,0 +1,135 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
autoPatchelfHook,
|
||||
cmake,
|
||||
file,
|
||||
pkg-config,
|
||||
python3,
|
||||
SDL2,
|
||||
SDL2_mixer,
|
||||
cef-binary,
|
||||
egl-wayland,
|
||||
ffmpeg,
|
||||
fftw,
|
||||
glew,
|
||||
glfw,
|
||||
glm,
|
||||
gmp,
|
||||
kissfftFloat,
|
||||
libxau,
|
||||
libxdmcp,
|
||||
libxpm,
|
||||
libxrandr,
|
||||
libxxf86vm,
|
||||
libdecor,
|
||||
libffi,
|
||||
libglut,
|
||||
libpng,
|
||||
libpulseaudio,
|
||||
lz4,
|
||||
mpv,
|
||||
wayland,
|
||||
wayland-protocols,
|
||||
wayland-scanner,
|
||||
zlib,
|
||||
nix-update-script,
|
||||
inputs,
|
||||
namespace, ...
|
||||
}:
|
||||
|
||||
let
|
||||
cef = cef-binary.override {
|
||||
version = "135.0.17"; # follow upstream. https://github.com/Almamu/linux-wallpaperengine/blob/b39f12757908eda9f4c1039613b914606568bb84/CMakeLists.txt#L47
|
||||
gitRevision = "cbc1c5b";
|
||||
chromiumVersion = "135.0.7049.52";
|
||||
|
||||
srcHashes = {
|
||||
aarch64-linux = "sha256-LK5JvtcmuwCavK7LnWmMF2UDpM5iIZOmsuZS/t9koDs=";
|
||||
x86_64-linux = "sha256-JKwZgOYr57GuosM31r1Lx3DczYs35HxtuUs5fxPsTcY=";
|
||||
};
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "linux-wallpaperengine";
|
||||
version = "0-unstable-2025-12-19";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Almamu";
|
||||
repo = "linux-wallpaperengine";
|
||||
rev = "f79c29f067b2613895419e351033582464577154";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-AISdouVqMXTYErQoT7oM5H+vlrw03NtpI9FqDwZ0J9A=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
cmake
|
||||
file
|
||||
pkg-config
|
||||
python3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
SDL2_mixer
|
||||
egl-wayland
|
||||
ffmpeg
|
||||
fftw
|
||||
glew
|
||||
glfw
|
||||
glm
|
||||
gmp
|
||||
kissfftFloat
|
||||
libxau
|
||||
libxdmcp
|
||||
libxpm
|
||||
libxrandr
|
||||
libxxf86vm
|
||||
libdecor
|
||||
libffi
|
||||
libglut
|
||||
libpng
|
||||
libpulseaudio
|
||||
lz4
|
||||
mpv
|
||||
wayland
|
||||
wayland-protocols
|
||||
wayland-scanner
|
||||
zlib
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCEF_ROOT=${cef}"
|
||||
"-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/share/linux-wallpaperengine"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
rm -rf $out/bin $out/lib $out/include
|
||||
chmod 755 $out/share/linux-wallpaperengine/linux-wallpaperengine
|
||||
mkdir $out/bin
|
||||
ln -s $out/share/linux-wallpaperengine/linux-wallpaperengine $out/bin/linux-wallpaperengine
|
||||
'';
|
||||
|
||||
preFixup = ''
|
||||
find $out/share/linux-wallpaperengine -type f -exec file {} \; | grep 'ELF' | cut -d: -f1 | while read -r elf_file; do
|
||||
patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$elf_file"
|
||||
done
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
|
||||
|
||||
meta = {
|
||||
description = "Wallpaper Engine backgrounds for Linux";
|
||||
homepage = "https://github.com/Almamu/linux-wallpaperengine";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
mainProgram = "linux-wallpaperengine";
|
||||
maintainers = [ ];
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
hydraPlatforms = [ "x86_64-linux" ]; # Hydra "aarch64-linux" fails with "Output limit exceeded"
|
||||
};
|
||||
})
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
+21
-12
@@ -20,23 +20,32 @@ sops:
|
||||
- recipient: age19j24x89dfh4f7v58c8k64yupqas4f7qkkyper7yj9dd7vqwvvq0qkyvhxk
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBBdGZlV3R4eW5FYS9HZGYr
|
||||
N3VSR0tIbzUrL0RsUEw2NkZtUWcxVG55bEIwCjQ5U0Ztd1luUEQ2SEg4RHA2RWRK
|
||||
K3dhN2liMDYyZElhbkZEUC9namhrc2MKLS0tIEhYTEYwQWduNkdKbGJQcTBRUWVG
|
||||
aDMwR1I5NG13dUhwRXg1TXI4dG9nWXMKti+hv0+7/Rz0W22bToYs1/DFzoMllHpB
|
||||
7uuVpUFDuC2D40ize0UX4rJ8Yo63lhJrRpsxIhzkP/vq+wMAFrKKLg==
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4U204eXIyaDJFMXIweXp1
|
||||
NEhoYU5qa3B5Q1VpODNsSEpuT0txRWpuVDM0CmptVHNFQkpWTkJ2M3B4dWpWN0s4
|
||||
ZjRuc3BhckVLSzFuOGJ3WTB0YnRRRDgKLS0tIHlaSUxITUlGU3VaRWZFbENUTVY2
|
||||
SWVwUGVxcGJscG5PalphZFVIS1ZjY2MKi4VvrNW1AH+fJaI/rzOltPylSiY1z3nS
|
||||
ebrYdpyM5KKQ46uezvU4J3Qau/Inv8CkZ72vHlQ6EK2kmmZZLszwJg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1ma8x6wugvc40mkst33mejq0m6r44jk6zwjjun3znyer5nztgn9vs0nwjx4
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnK0dSTTVJWmt3aS91UmFm
|
||||
Ui9zT3VpMlBybWJXOVdKdU5mTkprdU5WRm00CktHd2g4M1VldHhTQyszRTVTOUtt
|
||||
Mld4a3lYSHF2SytIc0RjQ1RoODQvaE0KLS0tIGN3SlpMeTEvNktNSm5oT0dXRVFr
|
||||
UmZrTXhyM2hYWW1kY05xa01PM1MzUDAK67AkP1XE445RXbVxcksRXL7MYHFjLPLV
|
||||
ITL404AabakBeOX9yixwymzkD1BbUYEdW6N28ntqdH5cZZfVteYdMA==
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyVHVwMEZjVk8xMTNIekF1
|
||||
ZFlZbFhvOTJSbVN4ZmorSmFCbkxBUUxOOERJCjBjMkdxQ0V4OXEwdGF2Sno4VTh2
|
||||
MURQMUhQV083M3lpREFRM2Qza3JLN0kKLS0tIEFoeUVsL3poajljMDEwTCtWcXRD
|
||||
Y3NHNmVDZFZuNjlUUDdMa3N3ZVNTWkUKeO4sT0ZyTAyrMKj27fbFhQZ+bDMru6Bk
|
||||
j4Im41l9ClpIVQt8iz61mwKrm+QmBA9r1aL34u3lGQyKBOk4vq/m9A==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-11-07T10:47:23Z"
|
||||
mac: ENC[AES256_GCM,data:zqkbmx7XIHQnOVkozPLiBzsNhACbGwvWiFcFlEHhlyEeQ7rvltLlUlgivb7aawwG1RuxCwshHwLfuKRQ/iGJcXjFO4UM5VER6CAA/88UrpgXW8VBw8iuchr+Y58lu0s+98fj7VffcuWjhJ1AYvBxFaTZA6DjxFjv3l1Gyxtw6kM=,iv:XG9Qb61INy1OJZjI3cDbY9fswLqf8+QvcUMrmtKGtuQ=,tag:+JacTF/+qU+j/cm8Wn1c8g==,type:str]
|
||||
- recipient: age1s5qwsuc3e4m3c4w5hl6tyja70w273gr60j9j9dcpc6mz69lemg3qpwud3h
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUT3dKNk4rSVZUck5LZ2t1
|
||||
eUhPSXBURUFGbnU4NUtjMVVpeGI5eVI1SVc4CkdTY25jTy91VFhLS1F3V3ZzM1A4
|
||||
OGMxWmtWd1lVU3dZcG8xWlRwYkorSU0KLS0tIE12WlFyUWZ0dHYvTEd0N0tPWUt1
|
||||
bldpMnp5cnpXN2J5MEc5cC9DZktEekUKC6sei7v252fZyW8sd1xuZDjwoJFCKGot
|
||||
t9f+jUDOx5wGlH53Fd2jCRArKZkQ850sFj79Lh2Rx6wbDj1Ks5XcVA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2024-12-10T04:12:19Z"
|
||||
mac: ENC[AES256_GCM,data:AcuCxKGm9xLgn/gnk0XDVtLM5PWQvgGd+qXusuvwCUV4ln1//Lpwpp3TL0mEMdwEcFOdCasW4A10rGpCoBqKsckroiUSEB0G2p0vrD3b3Vmo804JYcKmSZ85InZCXUWenfOTEzx/A1ruqSBSkRYro+NdyZ/+JXQVXnTLCPesgwE=,iv:UPRNsfeUKnml9OFkkqrI0fI4f/RWN2ovTsaItwT8Y0c=,tag:75NEPjeAXUwlCPGbLPhPFg==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.1
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
let
|
||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
|
||||
pkgs = import nixpkgs { config = { }; overlays = [ ]; };
|
||||
in
|
||||
|
||||
pkgs.mkShellNoCC {
|
||||
packages = with pkgs; [
|
||||
cowsay
|
||||
lolcat
|
||||
# bitwarden-desktop #replaced bitwarden
|
||||
bitwarden-cli
|
||||
sops
|
||||
];
|
||||
|
||||
GREETING = "Hello, Nix!";
|
||||
|
||||
shellHook = ''
|
||||
echo $GREETING | cowsay | lolcat
|
||||
bw config server https://vault.subsonics.nl
|
||||
echo "please enter bitwarden email"
|
||||
read BW_USER
|
||||
echo "please enter bitwarden password"
|
||||
read -s BW_PASSWORD
|
||||
bw login $BW_USER $BW_PASSWORD
|
||||
BW_SESSION="$(bw unlock $BW_PASSWORD --raw)"
|
||||
mkdir -p ~/.config/sops/age
|
||||
bw get attachment keys.txt --itemid ee6a90b0-4120-46f7-a1c6-9648316e43d5 --output ~/.config/sops/age/keys.txt
|
||||
'';
|
||||
}
|
||||
@@ -2,16 +2,21 @@
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
# config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
imports = [
|
||||
./tigervnc.nix
|
||||
./hardware/hardware-configuration.nix
|
||||
];
|
||||
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
# boot.loader.systemd-boot.enable = true; # managed by lanzaboote
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
networking.hostName = "drivebystation-nix"; # Define your hostname.
|
||||
@@ -41,30 +46,65 @@
|
||||
LC_TELEPHONE = "nl_NL.UTF-8";
|
||||
LC_TIME = "nl_NL.UTF-8";
|
||||
};
|
||||
system.activationScripts."stremio-mpv-flatpak-patch" = {
|
||||
text = ''
|
||||
# 1. Provide the symlink where Stremio's player engine queries
|
||||
mkdir -p /usr/bin
|
||||
ln -sf /run/current-system/sw/bin/mpv /usr/bin/mpv
|
||||
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
# 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"
|
||||
|
||||
# Enable the GNOME Desktop Environment.
|
||||
services.xserver.displayManager.gdm.enable = true;
|
||||
services.xserver.displayManager.defaultSession = "gnome";
|
||||
# services.xserver.displayManager.lightdm.enable = true;
|
||||
# services.xserver.displayManager.autoLogin.enable = true;
|
||||
if [ -f "$TARGET_FILE" ]; then
|
||||
# Make sure the file is writable momentarily for the patch
|
||||
chmod +w "$TARGET_FILE"
|
||||
|
||||
# Inject the flatpak-spawn sequence into the linux player profile
|
||||
sed -i 's|linux:{path:\["\/usr\/bin\/mpv"\]|linux:{path:["/usr/bin/flatpak-spawn"],args:["--host","/usr/bin/mpv"]|g' "$TARGET_FILE"
|
||||
sed -i 's|linux:{path:\["mpv"\]|linux:{path:["/usr/bin/flatpak-spawn"],args:["--host","/usr/bin/mpv"]|g' "$TARGET_FILE"
|
||||
|
||||
# Restore permissions
|
||||
chmod -w "$TARGET_FILE"
|
||||
fi
|
||||
'';
|
||||
};
|
||||
services = {
|
||||
# Enable Gnome Session
|
||||
displayManager.gdm.enable = true;
|
||||
displayManager.sddm.enable = false;
|
||||
# displayManager.sddm.wayland.enable = true;
|
||||
displayManager.autoLogin = {
|
||||
enable = false;
|
||||
user = "andreas";
|
||||
};
|
||||
|
||||
displayManager.cosmic-greeter.enable = false;
|
||||
displayManager.defaultSession = "gnome";
|
||||
# Clear the sandbox restriction dynamically
|
||||
|
||||
xserver = {
|
||||
enable = true; # Enable the deprecated X11 teletype terminal connection system.
|
||||
# Configure Display Manager
|
||||
displayManager = {
|
||||
lightdm.enable = false;
|
||||
};
|
||||
# Configure keymap in X11
|
||||
xkb = {
|
||||
layout = "us";
|
||||
variant = "intl";
|
||||
};
|
||||
|
||||
# Specify first device section to use nvidia GPU
|
||||
|
||||
};
|
||||
};
|
||||
# services.xserver.displayManager.defaultSession = "gnome-x11"; # services.xserver.displayManager.autoLogin.enable = true;
|
||||
# services.xserver.displayManager.autoLogin.user = "andreas";
|
||||
# systemd.services."getty@tty1".enable = false;
|
||||
# systemd.services."autovt@tty1".enable = false;
|
||||
|
||||
services.xserver.desktopManager.gnome.enable = true;
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
programs.ssh.askPassword = "${pkgs.x11_ssh_askpass}/libexec/x11-ssh-askpass";
|
||||
|
||||
# Configure keymap in X11
|
||||
services.xserver.xkb = {
|
||||
layout = "us";
|
||||
variant = "intl";
|
||||
};
|
||||
|
||||
# Configure console keymap
|
||||
console.keyMap = "us-acentos";
|
||||
|
||||
@@ -72,7 +112,7 @@
|
||||
services.printing.enable = true;
|
||||
|
||||
# Enable sound with pipewire.
|
||||
hardware.pulseaudio.enable = false;
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
@@ -80,30 +120,97 @@
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
# 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,
|
||||
# no need to redefine it in your config for now)
|
||||
#media-session.enable = true;
|
||||
};
|
||||
|
||||
# Enable gamemode for game optimization
|
||||
programs.gamemode.enable = true;
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# services.xserver.libinput.enable = true;
|
||||
|
||||
# Install firefox.
|
||||
programs.firefox.enable = true;
|
||||
|
||||
# Enable XWayland for X11 application compatibility
|
||||
programs.xwayland.enable = true;
|
||||
|
||||
# docker
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Enable --Akonadi--/ kde-pim for calendar backend
|
||||
programs.kde-pim.enable = true;
|
||||
services.dbus.enable = true;
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
# wget
|
||||
pkgs.gnome3.gnome-tweaks
|
||||
(python3.withPackages (ps: with ps; [ websockets ]))
|
||||
sqlite
|
||||
javaPackages.compiler.openjdk25
|
||||
javaPackages.compiler.openjdk21
|
||||
qt6.qtwebengine
|
||||
qemu
|
||||
mpv
|
||||
krita
|
||||
ntfs3g
|
||||
htop
|
||||
rivalcfg
|
||||
blender
|
||||
freecad
|
||||
reaper
|
||||
discord
|
||||
betterdiscordctl
|
||||
];
|
||||
environment.etc."xdg/autostart/xwaylandvideobridge.desktop".text = ''
|
||||
[Desktop Entry]
|
||||
Hidden=true
|
||||
'';
|
||||
|
||||
services.udisks2.settings = { # Should fix mounting ntfs system partition - Did not work
|
||||
"udisks2.conf" = {
|
||||
defaults = {
|
||||
allow_mount_internal = true;
|
||||
allow_mount_system = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.gvfs.enable = true; # For file manager integration
|
||||
|
||||
# Enable udev rules for SteelSeries devices (rivalcfg)
|
||||
services.udev.packages = [ pkgs.rivalcfg ];
|
||||
|
||||
# Disable iBus (not needed unless using Asian input methods)
|
||||
i18n.inputMethod = {
|
||||
enable = false;
|
||||
};
|
||||
|
||||
virtualisation.libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
package = pkgs.qemu;
|
||||
runAsRoot = true;
|
||||
swtpm.enable = true;
|
||||
vhostUserPackages = [ pkgs.virtiofsd ];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ];
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
@@ -115,13 +222,88 @@
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# services.openssh.enable = true;
|
||||
services.openssh.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
# Open ports in the .
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
24800 #Synergy
|
||||
53317 #localsend
|
||||
3390 #rdp
|
||||
9090
|
||||
8000
|
||||
40122
|
||||
];
|
||||
networking.firewall.allowedUDPPorts = [
|
||||
24800 #Synergy
|
||||
53317 #localsend
|
||||
3390 #rdp
|
||||
9090
|
||||
8000
|
||||
40122
|
||||
];
|
||||
networking.firewall.trustedInterfaces = [ "virbr0" ];
|
||||
networking.nat = {
|
||||
enable = true;
|
||||
internalInterfaces = [ "virbr0" ];
|
||||
externalInterface = "enp75s0";
|
||||
extraCommands = ''
|
||||
# MASQUERADE forwarded traffic to VM so it knows how to route back
|
||||
iptables -t nat -A nixos-nat-post -o virbr0 -j MASQUERADE
|
||||
'';
|
||||
forwardPorts = [
|
||||
{
|
||||
sourcePort = 9090;
|
||||
proto = "tcp";
|
||||
destination = "192.168.122.113:9090";
|
||||
}
|
||||
{
|
||||
sourcePort = 9090;
|
||||
proto = "udp";
|
||||
destination = "192.168.122.113:9090";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.mullvad-vpn = {
|
||||
enable = true;
|
||||
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
|
||||
# settings for stateful data, like file locations and database versions
|
||||
@@ -129,6 +311,6 @@
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "24.05"; # Did you read the comment?
|
||||
system.stateVersion = "26.05"; # Did you read the comment?
|
||||
|
||||
}
|
||||
|
||||
@@ -10,23 +10,23 @@
|
||||
inputs,
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
# The namespace used for your flake, defaulting to "internal" if not set.
|
||||
namespace,
|
||||
# namespace,
|
||||
# The system architecture for this host (eg. `x86_64-linux`).
|
||||
system,
|
||||
# system,
|
||||
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
target,
|
||||
# target,
|
||||
# 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.
|
||||
virtual,
|
||||
# virtual,
|
||||
# An attribute map of your defined hosts.
|
||||
systems,
|
||||
# systems,
|
||||
# All other arguments come from the system system.
|
||||
config
|
||||
, ...
|
||||
# config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib.my-namespace) enabled;
|
||||
# inherit (lib.my-namespace) systemPackages;
|
||||
inherit pkgs;
|
||||
installedPackages = lib.my-namespace.mkPackages pkgs;
|
||||
in
|
||||
@@ -34,82 +34,176 @@ in
|
||||
# inherit system;
|
||||
imports = [
|
||||
./configuration.nix
|
||||
./steam.nix
|
||||
./mutter-tearing.nix
|
||||
./video.nix
|
||||
inputs.wallpaperengine.nixosModules.default
|
||||
inputs.aagl.nixosModules.default
|
||||
];
|
||||
config = {
|
||||
system.stateVersion = "24.05";
|
||||
programs.linux-wallpaperengine.enable = true;
|
||||
system.stateVersion = "26.05";
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
# Distrobox
|
||||
my-namespace.distrobox.enable = true;
|
||||
# Desktops
|
||||
my-namespace.desktop-environment.cinnamon.enable = true;
|
||||
my-namespace.desktop-environment.xfce.enable = false;
|
||||
my-namespace.desktop-environment.gnome.enable = true;
|
||||
my-namespace.desktop-environment.kde.enable = false;
|
||||
my-namespace.desktop-environment.hyprland.enable = false;
|
||||
my-namespace.desktop-environment.cosmic.enable = false;
|
||||
my-namespace.performance-tuning.enable = true;
|
||||
my-namespace.rtl8125-recovery.enable = true;
|
||||
my-namespace.file-organization.enable = true;
|
||||
# GNOME-keyring
|
||||
my-namespace.gnome-keyring.enable = true;
|
||||
# CS Tools
|
||||
my-namespace.cs-tools.enable = true;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.users.andreas = {
|
||||
isNormalUser = true;
|
||||
description = "Andreas Schaafsma";
|
||||
extraGroups = [ "networkmanager" "wheel" ] ;
|
||||
extraGroups = [
|
||||
"networkmanager"
|
||||
"wheel"
|
||||
"libvirtd"
|
||||
"plugdev"
|
||||
"docker"
|
||||
"gamemode"
|
||||
];
|
||||
packages = with pkgs; [
|
||||
# Packages from inputs
|
||||
inputs.game-of-life.packages.x86_64-linux.default
|
||||
# Packages from inputsq
|
||||
# inputs.game-of-life.packages.x86_64-linux.default
|
||||
inputs.zen-browser.packages.x86_64-linux.default
|
||||
inputs.nixos-cosmic
|
||||
|
||||
# inputs.anikki.packages.x86_64-linux.default
|
||||
# We want flatpak support
|
||||
flatpak
|
||||
gnome-software
|
||||
gnomeExtensions.pop-shell
|
||||
# GNOME shit
|
||||
thunderbird
|
||||
soundwireserver
|
||||
vscode
|
||||
# vscode
|
||||
# discord
|
||||
spotify
|
||||
appimage-run
|
||||
minecraft
|
||||
prismlauncher #replaces broken minecraft package
|
||||
trilium-desktop
|
||||
terraform
|
||||
virt-manager
|
||||
nil
|
||||
codex
|
||||
inputs.codex-desktop.packages.${pkgs.stdenv.hostPlatform.system}.codex-desktop
|
||||
# thunderbird
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
my-namespace.cosmic-desktop.enable = false;
|
||||
programs.appimage = {
|
||||
enable = true;
|
||||
binfmt = true;
|
||||
};
|
||||
|
||||
|
||||
programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules
|
||||
programs.anime-games-launcher.enable = true;
|
||||
|
||||
services.gnome.gnome-remote-desktop.enable = true;
|
||||
my-namespace.keychron-keyboard.enable = true;
|
||||
|
||||
# lib.my-namespace.home.stream-tools.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
59010 #SoundWireServer
|
||||
5901
|
||||
5001
|
||||
11434
|
||||
3389 #RDP
|
||||
22 #ssh
|
||||
];
|
||||
networking.firewall.allowedUDPPorts = [
|
||||
59010 #SoundWireServer
|
||||
5901
|
||||
5001
|
||||
11434
|
||||
3389 #RDP
|
||||
22 #ssh
|
||||
];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
networking.firewall.enable = false;
|
||||
|
||||
|
||||
# Install firefox.
|
||||
programs.firefox.enable = true;
|
||||
nixpkgs.config.allowBroken = true;
|
||||
powerManagement.cpuFreqGovernor = "performance";
|
||||
# Set up system Packages
|
||||
environment.sessionVariables.GI_TYPELIB_PATH =
|
||||
lib.makeSearchPath "lib/girepository-1.0" [
|
||||
pkgs.my-namespace.rounded-blur
|
||||
];
|
||||
environment.sessionVariables = {
|
||||
# If you are using Hyprland, labwc, or Sway (wlroots-based):
|
||||
WLR_DRM_NO_ATOMIC = "1";
|
||||
|
||||
KWIN_DRM_DISABLE_TRIPLE_BUFFERING="1";
|
||||
|
||||
# If you are using KDE Plasma (KWin):
|
||||
KWIN_FORCE_SW_CURSOR = "1";
|
||||
|
||||
# For modern wlroots (and Aquamarine in Hyprland) to force software cursors:
|
||||
WLR_NO_HARDWARE_CURSORS = "1";
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
git
|
||||
wine
|
||||
bottles
|
||||
# bottles
|
||||
gparted
|
||||
ntfs3g
|
||||
ntfsprogs
|
||||
synergy
|
||||
mangohud
|
||||
my-namespace.udev-steelseries
|
||||
my-namespace.hello
|
||||
# stuff I installed to try to get gamescope to work to no avail Gamescope is just broken it seems.
|
||||
# pkgs.mesa
|
||||
# pkgs.vulkan-loader
|
||||
# pkgs.vulkan-validation-layers
|
||||
# pkgs.vulkan-extension-layer
|
||||
# pkgs.vulkan-tools
|
||||
# pkgs.libva
|
||||
# pkgs.libva-utils
|
||||
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" ''
|
||||
#!/bin/sh
|
||||
# Kill Steam and return to display manager
|
||||
pkill steam || true
|
||||
pkill gamescope || true
|
||||
# End the session cleanly
|
||||
loginctl terminate-session "$XDG_SESSION_ID"
|
||||
'')
|
||||
|
||||
(pkgs.writeShellScriptBin "steamos-session-select" ''
|
||||
#!/bin/sh
|
||||
exec switch-to-desktop
|
||||
'')
|
||||
|
||||
# Vulkan packages for Steam
|
||||
mesa
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
vulkan-extension-layer
|
||||
vulkan-tools
|
||||
libva
|
||||
libva-utils
|
||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||
# wget
|
||||
]
|
||||
++ installedPackages.packages;
|
||||
|
||||
programs.nix-ld = {
|
||||
enable = true;
|
||||
package = pkgs.nix-ld-rs;
|
||||
package = pkgs.nix-ld; #replaces nix-ld-rs
|
||||
};
|
||||
|
||||
services.flatpak.enable = true;
|
||||
systemd.services.flatpak-repo = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
@@ -130,14 +224,17 @@ in
|
||||
|
||||
# services.xrdp.enable = true;
|
||||
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
|
||||
# services.xrdp.defaultWindowManager = "startxfce4";
|
||||
# services.xrdp.openFirewall = true;
|
||||
# services.xrdp.audio.enable = false;
|
||||
|
||||
|
||||
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
|
||||
# If no user is logged in, the machine will power down after 20 minutes.
|
||||
systemd.targets.sleep.enable = true;
|
||||
systemd.targets.suspend.enable = true;
|
||||
systemd.targets.hibernate.enable = true;
|
||||
systemd.targets.hybrid-sleep.enable = true;
|
||||
|
||||
# systemd.targets.sleep.enable = false;
|
||||
# systemd.targets.suspend.enable = false;
|
||||
# systemd.targets.hibernate.enable = false;
|
||||
# systemd.targets.hybrid-sleep.enable = false;
|
||||
};
|
||||
}
|
||||
@@ -1,6 +1,10 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
boot.kernelParams = [ "drm.edid_firmware=DP-6: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,DP-4:edid/edid.bin"
|
||||
];
|
||||
|
||||
|
||||
hardware.firmware = [
|
||||
(
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,141 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
############################
|
||||
## Display + Mesa Settings
|
||||
############################
|
||||
|
||||
# hardware.enableRedistributableFirmware = true;
|
||||
|
||||
hardware.firmware = [
|
||||
pkgs.linux-firmware
|
||||
# pkgs.firmwareLinuxNonfree
|
||||
# pkgs.firmwareLinuxStrict
|
||||
# pkgs.firmwareLinuxLatest
|
||||
];
|
||||
|
||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
boot.kernelParams = [
|
||||
"console=tty0"
|
||||
# "efifb=off"
|
||||
"xe.force_probe=e20b"
|
||||
# Xe stability improvements for B580
|
||||
"xe.guc_log_level=0" # Reduce GuC logging overhead
|
||||
"xe.enable_display=1" # Ensure display is enabled
|
||||
# Memory/performance parameters
|
||||
"mitigations=off" # Disable CPU mitigations for better performance
|
||||
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
|
||||
];
|
||||
services.switcherooControl.enable = true;
|
||||
# environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
|
||||
hardware.intel-gpu-tools.enable = true;
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver # Intel VAAPI
|
||||
vpl-gpu-rt # oneVPL runtime
|
||||
intel-vaapi-driver # fallback
|
||||
intel-compute-runtime # OpenCL/Level Zero
|
||||
level-zero # Level Zero API for compute
|
||||
intel-graphics-compiler # Shader compiler for Arc GPUs allgedly needed for XPU
|
||||
];
|
||||
};
|
||||
|
||||
# Ensure Arc driver is available (usually auto-loaded)
|
||||
boot.kernelModules = [ "xe" "i915" ];
|
||||
# Blacklist everything for nvidia
|
||||
boot.blacklistedKernelModules = [
|
||||
"nouveau"
|
||||
"nvidia"
|
||||
"nvidia_drm"
|
||||
"nvidia_modeset"
|
||||
"nvidia_uvm"
|
||||
];
|
||||
|
||||
# Mark Arc B580 as a discrete Intel GPU for switcheroo-control and
|
||||
# keep runtime PCI power management enabled for the device.
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add|bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0xe20b", TEST=="power/control", ATTR{power/control}="auto"
|
||||
SUBSYSTEM=="drm", DRIVERS=="xe", ATTRS{vendor}=="0x8086", ATTRS{device}=="0xe20b", TAG+="switcheroo-discrete-gpu"
|
||||
'';
|
||||
|
||||
environment.variables = {
|
||||
# Force Intel GPU for all graphics operations
|
||||
KWIN_DRM_DEVICES = "/dev/dri/card0";
|
||||
|
||||
# Vulkan/DXVK optimizations for B580
|
||||
ANV_ENABLE_PIPELINE_CACHE = "1";
|
||||
|
||||
# Shader cache settings
|
||||
MESA_SHADER_CACHE_DISABLE = "false";
|
||||
MESA_SHADER_CACHE_MAX_SIZE = "10G";
|
||||
|
||||
# DXVK optimizations
|
||||
DXVK_HUD = "compiler"; # Monitor shader compilation
|
||||
# DXVK_ASYNC = "1"; # Enable if you want async shader compilation (may cause issues)
|
||||
|
||||
# Intel IPEX / PyTorch settings
|
||||
ZE_ENABLE_ALT_DRIVERS = "libze_intel_gpu.so.1"; # Enable Intel GPU driver for Level Zero
|
||||
SYCL_CACHE_PERSISTENT = "1"; # Enable persistent SYCL cache
|
||||
SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS = "1"; # Performance optimization
|
||||
};
|
||||
|
||||
|
||||
############################
|
||||
## LACT Settings for Overclocking
|
||||
############################
|
||||
|
||||
services.lact.enable = true;
|
||||
|
||||
|
||||
|
||||
############################
|
||||
## X / Wayland GPU Drivers
|
||||
############################
|
||||
|
||||
# Enable modesetting driver for X11 (required for Intel Xe)
|
||||
services.xserver.videoDrivers = [
|
||||
"modesetting"
|
||||
#"intel"
|
||||
];
|
||||
|
||||
services.xserver.enable = true;
|
||||
services.xserver.autorun = false;
|
||||
services.xserver.displayManager.startx.enable = true;
|
||||
|
||||
# Xorg configuration for Intel Arc Battlemage (xe driver)
|
||||
# Based on: https://www.reddit.com/r/crtgaming/comments/1knom2t/guide_intel_arc_b580_arch_linux_xorg/
|
||||
# Intel Arc B-series at PCI 0000:03:00.0
|
||||
#services.xserver.deviceSection = ''
|
||||
# Option "AccelMethod" "glamor"
|
||||
# BusID "PCI:3:0:0"
|
||||
#'';
|
||||
|
||||
############################
|
||||
## User Access
|
||||
############################
|
||||
users.users.andreas.extraGroups = [ "video" "render" ];
|
||||
|
||||
############################
|
||||
## System Packages for AI/ML
|
||||
############################
|
||||
environment.systemPackages = with pkgs; [
|
||||
intel-compute-runtime
|
||||
level-zero
|
||||
# For checking GPU compute capabilities
|
||||
clinfo
|
||||
vulkan-tools
|
||||
];
|
||||
services.xserver.config = ''
|
||||
Section "Device"
|
||||
Identifier "AMD"
|
||||
Driver "amdgpu"
|
||||
Option "TearFree" "false"
|
||||
EndSection
|
||||
'';
|
||||
services.xserver.deviceSection = ''
|
||||
Option "TearFree" "false"
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
############################
|
||||
## Display + Mesa Settings
|
||||
############################
|
||||
|
||||
# hardware.enableRedistributableFirmware = true;
|
||||
|
||||
hardware.firmware = [
|
||||
pkgs.linux-firmware
|
||||
# pkgs.firmwareLinuxNonfree
|
||||
# pkgs.firmwareLinuxStrict
|
||||
# pkgs.firmwareLinuxLatest
|
||||
];
|
||||
|
||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
boot.kernelParams = [
|
||||
"console=tty0"
|
||||
# "efifb=off"
|
||||
# "xe.force_probe=*"
|
||||
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
|
||||
];
|
||||
|
||||
# environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
|
||||
hardware.intel-gpu-tools.enable = true;
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver # Intel VAAPI
|
||||
vpl-gpu-rt # oneVPL runtime
|
||||
intel-vaapi-driver # fallback
|
||||
intel-compute-runtime # OpenCL/Level Zero
|
||||
];
|
||||
};
|
||||
|
||||
# Ensure Arc driver is available (usually auto-loaded)
|
||||
boot.kernelModules = [ "i915" ];
|
||||
# Blacklist everything for nvidia
|
||||
boot.blacklistedKernelModules = [
|
||||
"nouveau"
|
||||
"nvidia"
|
||||
"nvidia_drm"
|
||||
"nvidia_modeset"
|
||||
"nvidia_uvm"
|
||||
"xe"
|
||||
];
|
||||
|
||||
environment.variables = {
|
||||
KWIN_DRM_DEVICES = "/dev/dri/card0";
|
||||
};
|
||||
|
||||
|
||||
############################
|
||||
## LACT Settings for Overclocking
|
||||
############################
|
||||
|
||||
services.lact.enable = true;
|
||||
|
||||
|
||||
|
||||
############################
|
||||
## X / Wayland GPU Drivers
|
||||
############################
|
||||
|
||||
# Enable modesetting driver for X11 (required for Intel Xe)
|
||||
services.xserver.videoDrivers = [
|
||||
"modesetting"
|
||||
#"intel"
|
||||
];
|
||||
|
||||
services.xserver.enable = true;
|
||||
services.xserver.autorun = false;
|
||||
services.xserver.displayManager.startx.enable = true;
|
||||
|
||||
# Xorg configuration for Intel Arc Battlemage (xe driver)
|
||||
# Based on: https://www.reddit.com/r/crtgaming/comments/1knom2t/guide_intel_arc_b580_arch_linux_xorg/
|
||||
# Intel Arc B-series at PCI 0000:03:00.0
|
||||
#services.xserver.deviceSection = ''
|
||||
# Option "AccelMethod" "glamor"
|
||||
# BusID "PCI:3:0:0"
|
||||
#'';
|
||||
|
||||
############################
|
||||
## User Access
|
||||
############################
|
||||
users.users.andreas.extraGroups = [ "video" "render" ];
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
############################
|
||||
## Display + Mesa Settings
|
||||
############################
|
||||
|
||||
# hardware.enableRedistributableFirmware = true;
|
||||
|
||||
hardware.firmware = [
|
||||
pkgs.linux-firmware
|
||||
# pkgs.firmwareLinuxNonfree
|
||||
# pkgs.firmwareLinuxStrict
|
||||
# pkgs.firmwareLinuxLatest
|
||||
];
|
||||
|
||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
boot.kernelParams = [
|
||||
"console=tty0"
|
||||
"efifb=off"
|
||||
"xe.force_probe=*"
|
||||
"nvidia-drm.modeset=1"
|
||||
];
|
||||
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver # Intel VAAPI
|
||||
vpl-gpu-rt # oneVPL runtime
|
||||
intel-vaapi-driver # fallback
|
||||
];
|
||||
};
|
||||
|
||||
# Ensure Arc driver is available (usually auto-loaded)
|
||||
boot.kernelModules = [ "xe" ];
|
||||
boot.blacklistedKernelModules = [ "nouveau" ];
|
||||
|
||||
############################
|
||||
## X / Wayland GPU Drivers
|
||||
############################
|
||||
# Only specify NVIDIA. Intel Arc uses the modesetting driver automatically.
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
|
||||
############################
|
||||
## NVIDIA Configuration
|
||||
############################
|
||||
hardware.nvidia = {
|
||||
modesetting.enable = true; # REQUIRED if any displays are on NVIDIA
|
||||
|
||||
open = false; # GTX 1070 → must be the proprietary driver
|
||||
nvidiaSettings = true;
|
||||
|
||||
powerManagement.enable = false;
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
prime = {
|
||||
offload.enable = false; # not a laptop, must be disabled
|
||||
sync.enable = false;
|
||||
};
|
||||
|
||||
# Correct way to pick the driver
|
||||
package = config.boot.kernelPackages.nvidiaPackages.production;
|
||||
};
|
||||
|
||||
# Remove → hardware.nvidia handles module packages
|
||||
# boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
|
||||
|
||||
############################
|
||||
## User Access
|
||||
############################
|
||||
users.users.andreas.extraGroups = [ "video" "render" ];
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
inherit (lib.my-namespace) enabled;
|
||||
in
|
||||
{
|
||||
my-namespace.hardware = {
|
||||
graphics-nvidia-prime-amd = enabled;
|
||||
};
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{
|
||||
|
||||
# Enable OpenGL
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [ nvidia-vaapi-driver ];
|
||||
};
|
||||
|
||||
# Load nvidia driver for Xorg and Wayland
|
||||
# boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
|
||||
boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11_beta ];
|
||||
# boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
|
||||
|
||||
|
||||
boot.loader.systemd-boot.consoleMode = "max";
|
||||
|
||||
boot.kernelParams = [
|
||||
"amdgpu.modeset=1"
|
||||
"nvidia-drm.fbdev=1"
|
||||
"nvidia-drm.modeset=0"
|
||||
# "nvidia.NVreg_PreserveVideoMemoryAllocations=0"
|
||||
"amd_iommu=on"
|
||||
# "vfio-pci.ids=\"10de:2489,10de:228b\""
|
||||
# "nomodeset"
|
||||
# "nvidia_drm.modeset=1"
|
||||
];
|
||||
boot.blacklistedKernelModules = [
|
||||
"i915"
|
||||
"nouveau"
|
||||
# "nvidia"
|
||||
# "nvidia-drm"
|
||||
# "nvidia-uvm"
|
||||
# "nvidiafb"
|
||||
# "nvidia_drm"
|
||||
# "nvidia_modeset"
|
||||
];
|
||||
# boot.extraModprobeConfig = ''
|
||||
# blacklist nvidia
|
||||
# blacklist nvidia-drm
|
||||
# blacklist nvidia_drm
|
||||
# blacklist nvidia-uvm
|
||||
# blacklist nvidia_uvm
|
||||
# blacklist nvidia_modeset
|
||||
# blacklist nvidiafb
|
||||
# blacklist nouveau
|
||||
# options nouveau modeset=0
|
||||
# '';
|
||||
boot.extraModprobeConfig = ''
|
||||
blacklist nouveau
|
||||
options nouveau modeset=0
|
||||
'';
|
||||
# services.xserver.videoDrivers = [ "nvidia" ];
|
||||
services.xserver.videoDrivers = [ "amdgpu" "nvidia" ];
|
||||
|
||||
# services.udev.extraRules = ''
|
||||
# # Remove NVIDIA USB xHCI Host Controller devices, if present
|
||||
# ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c0330", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||
# # Remove NVIDIA USB Type-C UCSI devices, if present
|
||||
# ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x0c8000", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||
# # Remove NVIDIA Audio devices, if present
|
||||
# ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x040300", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||
# # Remove NVIDIA VGA/3D controller devices
|
||||
# ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x03[0-9]*", ATTR{power/control}="auto", ATTR{remove}="1"
|
||||
# '';
|
||||
|
||||
boot.initrd.kernelModules = [
|
||||
"amdgpu"
|
||||
"nvidia"
|
||||
# "nvidia-drm"
|
||||
"nvidiafb"
|
||||
# "nvidia-uvm"
|
||||
# "nvidia-modeset"
|
||||
# "i2c-nvidia_gpu"
|
||||
];
|
||||
hardware.nvidia = {
|
||||
# Modesetting is required.
|
||||
modesetting.enable = true;
|
||||
|
||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||
# Enable this if you have graphical corruption issues or application crashes after waking
|
||||
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
|
||||
# of just the bare essentials.
|
||||
powerManagement.enable = true;
|
||||
|
||||
# Fine-grained power management. Turns off GPU when not in use.
|
||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||
powerManagement.finegrained = false;
|
||||
|
||||
# Use the NVidia open source kernel module (not to be confused with the
|
||||
# independent third-party "nouveau" open source driver).
|
||||
# Support is limited to the Turing and later architectures. Full list of
|
||||
# supported GPUs is at:
|
||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||
# Only available from driver 515.43.04+
|
||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||
open = false;
|
||||
|
||||
# Enable the Nvidia settings menu,
|
||||
# accessible via `nvidia-settings`.
|
||||
nvidiaSettings = true;
|
||||
|
||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.none;
|
||||
# package = config.boot.kernelPackages.nvidiaPackages.production;
|
||||
|
||||
forceFullCompositionPipeline = false;
|
||||
|
||||
prime = {
|
||||
offload = {
|
||||
enable = true;
|
||||
enableOffloadCmd = true;
|
||||
};
|
||||
reverseSync.enable = false;
|
||||
# Make sure to use the correct Bus ID values for your system!
|
||||
# intelBusId = "PCI:0:2:0";
|
||||
nvidiaBusId = "PCI:01:0:0";
|
||||
amdgpuBusId = "PCI:50:0:0"; #For AMD GPU
|
||||
};
|
||||
|
||||
};
|
||||
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" ];
|
||||
}
|
||||
@@ -7,30 +7,75 @@
|
||||
imports =
|
||||
[
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
./graphics/nvidia-stable.nix
|
||||
./graphics/intel.nix
|
||||
./graphics/passthrough_nvidia.nix
|
||||
# ./graphics/intel_i915.nix
|
||||
# ./graphics/nvidia.nix
|
||||
./acer-monitor-edid.nix
|
||||
./samsung-monitor-edid.nix
|
||||
];
|
||||
#boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
# 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.kernelModules = [ "kvm-amd" "4vl2loopback" ];
|
||||
boot.extraModulePackages = [ pkgs.linuxPackages.v4l2loopback ];
|
||||
boot.kernelModules = [ "kvm-amd" "r8125" "4vl2loopback" ];
|
||||
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback r8125 ];
|
||||
boot.supportedFilesystems = [ "ntfs" ];
|
||||
boot.blacklistedKernelModules = [ "r8169" ];
|
||||
|
||||
systemd.services.disable-realtek-eee = {
|
||||
description = "Disable Realtek Energy Efficient Ethernet";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.ethtool}/bin/ethtool --set-eee enp10s0 eee off";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
boot.blacklistedKernelModules = [ ];
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76";
|
||||
{ device = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/E846-D998";
|
||||
{ device = "/dev/disk/by-uuid/646A-D107";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0077" "dmask=0077" ];
|
||||
};
|
||||
|
||||
fileSystems."/home" =
|
||||
{ device = "/dev/disk/by-uuid/6ac4f42b-09e3-43b3-8215-8ff9a3c0695e";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
# Mount ntfs partition
|
||||
# fileSystems."/run/media/627C3BDF7C3BAD23" = {
|
||||
# device = "/dev/disk/by-uuid/627C3BDF7C3BAD23";
|
||||
# fsType = "ntfs-3g";
|
||||
# options = [ "rw" "uid=1000"];
|
||||
# };
|
||||
|
||||
# # Mount ntfs oldfiles drive partition
|
||||
# fileSystems."/run/media/oldfiles" = {
|
||||
# device = "/dev/disk/by-uuid/E2E26FFFE26FD677";
|
||||
# fsType = "ntfs-3g";
|
||||
# options = [ "rw" "uid=1000"];
|
||||
# };
|
||||
|
||||
# # Mount The Vault
|
||||
# fileSystems."/run/media/vault" = {
|
||||
# device = "/dev/disk/by-uuid/3470646370642DB4";
|
||||
# fsType = "ntfs-3g";
|
||||
# options = [ "rw" "uid=1000"];
|
||||
# };
|
||||
|
||||
|
||||
|
||||
# Try to fix hibernation
|
||||
@@ -39,10 +84,11 @@
|
||||
swapDevices = [ {
|
||||
device = "/var/lib/swapfile";
|
||||
size = 32*1024;
|
||||
} ]; #resume-offset = 78399488
|
||||
boot.resumeDevice = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; # the unlocked drive mapping
|
||||
} ]; #resume-offset = 195323904
|
||||
boot.resumeDevice = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b"; # the unlocked drive mapping
|
||||
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
|
||||
];
|
||||
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";
|
||||
};
|
||||
}
|
||||
@@ -1,75 +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,
|
||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||
pkgs,
|
||||
# You also have access to your flake's inputs.
|
||||
inputs,
|
||||
# Additional metadata is provided by Snowfall Lib.
|
||||
# The namespace used for your flake, defaulting to "internal" if not set.
|
||||
namespace,
|
||||
# The system architecture for this host (eg. `x86_64-linux`).
|
||||
system,
|
||||
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||
target,
|
||||
# A normalized name for the system target (eg. `iso`).
|
||||
format,
|
||||
# A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||
virtual,
|
||||
# An attribute map of your defined hosts.
|
||||
systems,
|
||||
# All other arguments come from the system system.
|
||||
config
|
||||
, ...
|
||||
}:{
|
||||
config = {
|
||||
# programs.gamescope = {
|
||||
# enable = true;
|
||||
# capSysNice = true;
|
||||
# };
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
||||
|
||||
# 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
|
||||
# ];
|
||||
# };
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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 > 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;
|
||||
};
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
];
|
||||
|
||||
boot.extraModulePackages = [
|
||||
pkgs.linuxPackages.v4l2loopback # Webcam loopback
|
||||
config.boot.kernelPackages.v4l2loopback # Webcam loopback
|
||||
];
|
||||
|
||||
boot.extraModprobeConfig = ''
|
||||
|
||||
Reference in New Issue
Block a user