Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cb986e30b2 | ||
|
|
aa20fba049 | ||
|
|
f28cacad75 |
@@ -1,102 +0,0 @@
|
|||||||
## 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
+204
-361
@@ -1,56 +1,5 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"Catch2": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1759222471,
|
|
||||||
"narHash": "sha256-7Dx7PhtRwkbo8vHF57sAns2fQZ442D3cMyCt25RvzJc=",
|
|
||||||
"owner": "catchorg",
|
|
||||||
"repo": "Catch2",
|
|
||||||
"rev": "b3fb4b9feafcd8d91c5cb510a4775143fdbef02f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "catchorg",
|
|
||||||
"repo": "Catch2",
|
|
||||||
"rev": "b3fb4b9feafcd8d91c5cb510a4775143fdbef02f",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"MimeTypes": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1577040615,
|
|
||||||
"narHash": "sha256-biRcxbpRVnD3+VVo0fNrNGeAi1P7pSzkGKHZrTtGp7Q=",
|
|
||||||
"owner": "lasselukkari",
|
|
||||||
"repo": "MimeTypes",
|
|
||||||
"rev": "8990d6a796bd9904ec3d41e5c150a1ffb48fe32e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "lasselukkari",
|
|
||||||
"repo": "MimeTypes",
|
|
||||||
"rev": "8990d6a796bd9904ec3d41e5c150a1ffb48fe32e",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SPIRV-Cross-WallpaperEngine": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1745093314,
|
|
||||||
"narHash": "sha256-ou66paGlu3KXf8LL8zfTiE8wOf0nRBocDs1QvfRVs+k=",
|
|
||||||
"owner": "Almamu",
|
|
||||||
"repo": "SPIRV-Cross-WallpaperEngine",
|
|
||||||
"rev": "ad4d02220b01c1800e5a4e6671d6d8ca8ab07783",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Almamu",
|
|
||||||
"repo": "SPIRV-Cross-WallpaperEngine",
|
|
||||||
"rev": "ad4d02220b01c1800e5a4e6671d6d8ca8ab07783",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"aagl": {
|
"aagl": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
@@ -60,11 +9,11 @@
|
|||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1787517695,
|
"lastModified": 1772290697,
|
||||||
"narHash": "sha256-Z119G3qLJx22frNHO3/seMs7fCCvxe9NJJRfN4Jadew=",
|
"narHash": "sha256-MyLNx13P+pv1RszO1rMd3144NEeU/oU4iL+xOTpRoaU=",
|
||||||
"owner": "ezKEa",
|
"owner": "ezKEa",
|
||||||
"repo": "aagl-gtk-on-nix",
|
"repo": "aagl-gtk-on-nix",
|
||||||
"rev": "4bb57072d963aa47f14894383a5560cf290e296a",
|
"rev": "dcb53a4cb4cb09ef7f08328428ba559be5b9f01b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -73,24 +22,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"argparse": {
|
"anikki": {
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1737934041,
|
|
||||||
"narHash": "sha256-gRLn4juxwde7ugvT/p4lx9ayDTm7o32NKaE/SEbnLHI=",
|
|
||||||
"owner": "p-ranav",
|
|
||||||
"repo": "argparse",
|
|
||||||
"rev": "d924b84eba1f0f0adf38b20b7b4829f6f65b6570",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "p-ranav",
|
|
||||||
"repo": "argparse",
|
|
||||||
"rev": "d924b84eba1f0f0adf38b20b7b4829f6f65b6570",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"codex-desktop": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -98,26 +30,58 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1791562553,
|
"lastModified": 1766470910,
|
||||||
"narHash": "sha256-uyLpIxJv9lqy1pgGUd0C/RZvqWyFqbwR0Tq7E+UX0VM=",
|
"narHash": "sha256-iY0vJAAjY5ZveB6JIAQDHq7lFrkAVGnO0tC7YOYDFsg=",
|
||||||
"owner": "ilysenko",
|
"owner": "Hion-V",
|
||||||
"repo": "codex-desktop-linux",
|
"repo": "Anikki-flake",
|
||||||
"rev": "443cb5d52ed781cac6cc7083780abb058cf93678",
|
"rev": "95d15448466142126c7fc13ac1dbdaf58a36a3a5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "ilysenko",
|
"owner": "Hion-V",
|
||||||
"repo": "codex-desktop-linux",
|
"repo": "Anikki-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cachyos-kernel": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773425695,
|
||||||
|
"narHash": "sha256-O5Fr6f+iS+IVKdB59yqkCaWfkr1SSHD5BLDDlZO7RwU=",
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "linux-cachyos",
|
||||||
|
"rev": "3b9ae1ae5d4ee95e1509d350b65c0777dde97628",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "linux-cachyos",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cachyos-kernel-patches": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1773430072,
|
||||||
|
"narHash": "sha256-0X47YCF1CUnLiQ1M6Lh4hc3ax9aV5DX/wCmMfuMyM1o=",
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "kernel-patches",
|
||||||
|
"rev": "ac70453c25200f0a30ad38b3caa63020869f0f8a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "CachyOS",
|
||||||
|
"repo": "kernel-patches",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781825982,
|
"lastModified": 1754269165,
|
||||||
"narHash": "sha256-SlXKwIRIhrOSAcTjCB3ftPLzJWZStQIPS7J1FlZPnKk=",
|
"narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=",
|
||||||
"owner": "ipetkov",
|
"owner": "ipetkov",
|
||||||
"repo": "crane",
|
"repo": "crane",
|
||||||
"rev": "469fd08d0bcf6926321fa973c6777fbc87785dd7",
|
"rev": "444e81206df3f7d92780680e45858e31d2f07a08",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -145,15 +109,15 @@
|
|||||||
"flake-compat_2": {
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767039857,
|
"lastModified": 1747046372,
|
||||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||||
"owner": "NixOS",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -175,6 +139,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_4": {
|
"flake-compat_4": {
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_5": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1650374568,
|
"lastModified": 1650374568,
|
||||||
@@ -191,15 +171,36 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"lanzaboote",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1754091436,
|
||||||
|
"narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788306937,
|
"lastModified": 1772408722,
|
||||||
"narHash": "sha256-lbrI1UYVpFgKSsyrU9oeF7FHfnu8nLD9ja0ou9f2rxk=",
|
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f16b25b8c3d2809b87925d0b76652d7821a75c68",
|
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -247,7 +248,7 @@
|
|||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_3"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694529238,
|
"lastModified": 1694529238,
|
||||||
@@ -263,11 +264,31 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"game-of-life": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1771895942,
|
||||||
|
"narHash": "sha256-2G212O6uoBCjmyIBux/Kfy/FVlsAY+3mTT4JRstYRZ0=",
|
||||||
|
"owner": "local-interloper",
|
||||||
|
"repo": "game-of-life",
|
||||||
|
"rev": "dd5cba5d873ece0ca5c8a7d74243b3b0199a2194",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "local-interloper",
|
||||||
|
"repo": "game-of-life",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"lanzaboote",
|
"lanzaboote",
|
||||||
"pre-commit",
|
"pre-commit-hooks-nix",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -285,23 +306,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"glslang-WallpaperEngine": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1770589476,
|
|
||||||
"narHash": "sha256-auhYcTWdSERwujUqwfDbF61tncO18dwar3mMQ09VW1w=",
|
|
||||||
"owner": "Almamu",
|
|
||||||
"repo": "glslang-WallpaperEngine",
|
|
||||||
"rev": "b775500a153f5ceb0e4b6f366b79c4c57521bb62",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Almamu",
|
|
||||||
"repo": "glslang-WallpaperEngine",
|
|
||||||
"rev": "b775500a153f5ceb0e4b6f366b79c4c57521bb62",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -309,11 +313,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788355065,
|
"lastModified": 1773681856,
|
||||||
"narHash": "sha256-gAz5oTI7ur34CfuakQduiQd/2ZhO62Bn2XXg08nZYYQ=",
|
"narHash": "sha256-+bRqxoFCJFO9ZTFhcCkzNXbDT3b8AEk88fyjB7Is6eo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "d9d750e4fc11c10cab2da677bdd31e427f3a3a71",
|
"rev": "57d5560ee92a424fb71fde800acd6ed2c725dfce",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -330,11 +334,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788229478,
|
"lastModified": 1773422513,
|
||||||
"narHash": "sha256-G0F2rFORVcFkEvVdE/qWQTnYekIc77YP5/vRF9nZlxU=",
|
"narHash": "sha256-MPjR48roW7CUMU6lu0+qQGqj92Kuh3paIulMWFZy+NQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "1dc2d1f720ab17fc7981e087346bf54b26d284b1",
|
"rev": "ef12a9a2b0f77c8fa3dda1e7e494fca668909056",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -343,117 +347,46 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"json": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1743872075,
|
|
||||||
"narHash": "sha256-eSqi4dhFrUvjYN+jD8nGqj1FbzGA6I2+eSqzdCGOLH8=",
|
|
||||||
"owner": "nlohmann",
|
|
||||||
"repo": "json",
|
|
||||||
"rev": "4424a0fcc1c7fa640b5c87d26776d99150dacd10",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nlohmann",
|
|
||||||
"repo": "json",
|
|
||||||
"rev": "4424a0fcc1c7fa640b5c87d26776d99150dacd10",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"kissfft": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1739194969,
|
|
||||||
"narHash": "sha256-DywClnx67EE+CnduSuZIIfaAKbBg1ebQ+JgwIpDsnGQ=",
|
|
||||||
"owner": "mborgerding",
|
|
||||||
"repo": "kissfft",
|
|
||||||
"rev": "febd4caeed32e33ad8b2e0bb5ea77542c40f18ec",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "mborgerding",
|
|
||||||
"repo": "kissfft",
|
|
||||||
"rev": "febd4caeed32e33ad8b2e0bb5ea77542c40f18ec",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lanzaboote": {
|
"lanzaboote": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"crane": "crane",
|
"crane": "crane",
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"pre-commit": "pre-commit",
|
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782141370,
|
"lastModified": 1762205063,
|
||||||
"narHash": "sha256-hqijVSEETttmo8Okql9/LG0Ua34hdciKW1a5zzlj8mU=",
|
"narHash": "sha256-If6vQ+KvtKs3ARBO9G3l+4wFSCYtRBrwX1z+I+B61wQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "lanzaboote",
|
"repo": "lanzaboote",
|
||||||
"rev": "7c9a54a7f87b4539ddbd8bda09a8a5f5f9361aa9",
|
"rev": "88b8a563ff5704f4e8d8e5118fb911fa2110ca05",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "v1.1.0",
|
"ref": "v0.4.3",
|
||||||
"repo": "lanzaboote",
|
"repo": "lanzaboote",
|
||||||
"type": "github"
|
"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": {
|
"nix-cachyos-kernel": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"cachyos-kernel": "cachyos-kernel",
|
||||||
|
"cachyos-kernel-patches": "cachyos-kernel-patches",
|
||||||
"flake-compat": "flake-compat_3",
|
"flake-compat": "flake-compat_3",
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts_2",
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788379544,
|
"lastModified": 1773597464,
|
||||||
"narHash": "sha256-EMfRomvn1lAErvY/Q3bQL+PwEi+5hbBwI0ZI5SRC/WM=",
|
"narHash": "sha256-3SVrc1AMkY1UE36MD4qvmTkY/ZToK2F55Afut5Qm5F8=",
|
||||||
"owner": "xddxdd",
|
"owner": "xddxdd",
|
||||||
"repo": "nix-cachyos-kernel",
|
"repo": "nix-cachyos-kernel",
|
||||||
"rev": "d1c3cadc796061778cf7f62bdbfaf68cf3c3c654",
|
"rev": "30468236d5cdd9cb5dea6e757159e04816439146",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -463,45 +396,51 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixos-wsl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_4",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788329703,
|
"lastModified": 1773603777,
|
||||||
"narHash": "sha256-fHvRW4JUchuw6QNzQ50BfzeYe0TnjKml1V8PVRjntSI=",
|
"narHash": "sha256-oXSEbMR/IuHYk9nvrbRhaYBxVK5s63DH2UGOZT2ok48=",
|
||||||
"owner": "NixOS",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "090e478bd64824e2122328df47a7efb74fdaf0c1",
|
"rev": "0efe7af73d6e4a8d447a22936c5526d73822b0a7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nix-community",
|
||||||
"ref": "nixos-unstable-small",
|
"ref": "main",
|
||||||
"repo": "nixpkgs",
|
"repo": "NixOS-WSL",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-bun": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1790822859,
|
"lastModified": 1744536153,
|
||||||
"narHash": "sha256-69xHQhAeMAD2wDXO7T2pcOZIF9Sga2W+JkmY2a11Ops=",
|
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
|
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c59305bab2065cfecc4944690d9eedbb56f3a9fa",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788057806,
|
"lastModified": 1772328832,
|
||||||
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
|
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
|
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -512,27 +451,27 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788179007,
|
"lastModified": 1773563071,
|
||||||
"narHash": "sha256-hn1oU2rue2SYK8dAr8+WNZWtbsz1S2W5mnHlSEuh3bo=",
|
"narHash": "sha256-p4f6smYpck1hw6gYsT2omq01gnlZ1E7HTpssDQ0fP+g=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "34ab99075ac4f7e40cf037eef32cb1c360bb85e9",
|
"rev": "1c6f50e5b62030a50799682b6babc9dcc5a271ae",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable-small",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1789286504,
|
"lastModified": 1773646010,
|
||||||
"narHash": "sha256-eiEK7cKZORNEvX0GeF3RtNEF/JXhgf2RqSp3230q13E=",
|
"narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ef34387ddd751e1ab8857adf4676492d32eb24ec",
|
"rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -542,9 +481,12 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pre-commit": {
|
"pre-commit-hooks-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": [
|
||||||
|
"lanzaboote",
|
||||||
|
"flake-compat"
|
||||||
|
],
|
||||||
"gitignore": "gitignore",
|
"gitignore": "gitignore",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"lanzaboote",
|
"lanzaboote",
|
||||||
@@ -552,11 +494,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781733627,
|
"lastModified": 1750779888,
|
||||||
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
|
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "pre-commit-hooks.nix",
|
"repo": "pre-commit-hooks.nix",
|
||||||
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
|
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -565,52 +507,32 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"quickjs": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1770976497,
|
|
||||||
"narHash": "sha256-odQznZ/Xc6IGh6JPM1RyyEn9HL/+/AFR99XcF+WHJDc=",
|
|
||||||
"owner": "quickjs-ng",
|
|
||||||
"repo": "quickjs",
|
|
||||||
"rev": "72ba50f63ee31202f8c18b8d07ab1e1c3486ee6f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "quickjs-ng",
|
|
||||||
"repo": "quickjs",
|
|
||||||
"rev": "72ba50f63ee31202f8c18b8d07ab1e1c3486ee6f",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"aagl": "aagl",
|
"aagl": "aagl",
|
||||||
"codex-desktop": "codex-desktop",
|
"anikki": "anikki",
|
||||||
|
"game-of-life": "game-of-life",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
"millennium": "millennium",
|
|
||||||
"nix-cachyos-kernel": "nix-cachyos-kernel",
|
"nix-cachyos-kernel": "nix-cachyos-kernel",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"simple-wallpaper-engine": "simple-wallpaper-engine",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"snowfall-lib": "snowfall-lib",
|
"snowfall-lib": "snowfall-lib",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"wallpaperengine": "wallpaperengine",
|
"trilium-next-pr": "trilium-next-pr",
|
||||||
"zen-browser": "zen-browser"
|
"zen-browser": "zen-browser"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": "nixpkgs"
|
||||||
"aagl",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1785476452,
|
"lastModified": 1770952264,
|
||||||
"narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=",
|
"narHash": "sha256-CjymNrJZWBtpavyuTkfPVPaZkwzIzGaf0E/3WgcwM14=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c",
|
"rev": "ec6a3d5cdf14bb5a1dd03652bd3f6351004d2188",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -627,11 +549,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782012058,
|
"lastModified": 1761791894,
|
||||||
"narHash": "sha256-9mWUnReOUXfKjZuJAL/bAFH3LUyECTRtXgSNVjRw3UY=",
|
"narHash": "sha256-myRIDh+PxaREz+z9LzbqBJF+SnTFJwkthKDX9zMyddY=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "8534567325bd8a8d2928e6afd81e0a87d19efd3c",
|
"rev": "59c45eb69d9222a4362673141e00ff77842cd219",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -640,41 +562,20 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"simple-wallpaper-engine": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"utils": "utils"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1772136897,
|
|
||||||
"narHash": "sha256-2RBgZWq80zXVWyOswUlDaoRZtaeT6pBkbNCLdAzLYoY=",
|
|
||||||
"owner": "Maxnights",
|
|
||||||
"repo": "simple-linux-wallpaperengine-gui",
|
|
||||||
"rev": "43ae644754a0a5e96c8ddb9077843643b74f9acc",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Maxnights",
|
|
||||||
"repo": "simple-linux-wallpaperengine-gui",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"snowfall-lib": {
|
"snowfall-lib": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_4",
|
"flake-compat": "flake-compat_5",
|
||||||
"flake-utils-plus": "flake-utils-plus",
|
"flake-utils-plus": "flake-utils-plus",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784328457,
|
"lastModified": 1765361626,
|
||||||
"narHash": "sha256-4R5WV74NHhPk21ctoPmjL7nQ6txDnoBLwSWULvIw0TY=",
|
"narHash": "sha256-kX0Dp/kYSRbQ+yd9e3lmmUWdNbipufvKfL2IzbrSpnY=",
|
||||||
"owner": "snowfallorg",
|
"owner": "snowfallorg",
|
||||||
"repo": "lib",
|
"repo": "lib",
|
||||||
"rev": "6ee3542cb459ca4b038cfe50ceb8797f05cdabad",
|
"rev": "c566ad8b7352c30ec3763435de7c8f1c46ebb357",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -690,11 +591,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788337237,
|
"lastModified": 1773698643,
|
||||||
"narHash": "sha256-gkSH8VUtCo6hnysNmb9DbTuDepH2t5pv+QWjP75xKAk=",
|
"narHash": "sha256-VCiDjE8kNs8uCAK73Ezk1r3fFuc4JepvW07YFqaN968=",
|
||||||
"owner": "mic92",
|
"owner": "mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "fbf759290e0cb0a98dfc813a4eb7d53ad1dacb57",
|
"rev": "8237de83e8200d16fe0c4467b02a1c608ff28044",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -703,23 +604,6 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stb": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1741976854,
|
|
||||||
"narHash": "sha256-FkTeRO/AC5itykH4uWNsE0UeQTS34VtGGoej5QJiBlg=",
|
|
||||||
"owner": "nothings",
|
|
||||||
"repo": "stb",
|
|
||||||
"rev": "f0569113c93ad095470c54bf34a17b36646bbbb5",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nothings",
|
|
||||||
"repo": "stb",
|
|
||||||
"rev": "f0569113c93ad095470c54bf34a17b36646bbbb5",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
@@ -750,63 +634,22 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_3": {
|
"trilium-next-pr": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1736678965,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-2A687i3Rq0/wqJVvpgaiRPWcfnBBuBhPjKaT8cnd7o0=",
|
||||||
"owner": "nix-systems",
|
"owner": "FliegendeWurst",
|
||||||
"repo": "default",
|
"repo": "nixpkgs",
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
"rev": "4fcdf706929246476e52e960760b6643cb8395c4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "FliegendeWurst",
|
||||||
"repo": "default",
|
"ref": "trilium-next",
|
||||||
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"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": {
|
"zen-browser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
@@ -815,11 +658,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788405419,
|
"lastModified": 1773695806,
|
||||||
"narHash": "sha256-wuGizAVEmY0u15MYrhgy7AoQdHg+4Y2QiC+v/mxA8dc=",
|
"narHash": "sha256-HYmp4Ym/dlkRIPap7GFznNUNuDTTW0iIcOtHmhRzl3w=",
|
||||||
"owner": "0xc000022070",
|
"owner": "0xc000022070",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "fdb83f8fce835213fab7eab52c375926fe1a32dc",
|
"rev": "ced61240cc38dee9e659a7ced0cd9a839c6085d3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -4,19 +4,19 @@
|
|||||||
inputs = {
|
inputs = {
|
||||||
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Use nixos-unstable for latest kernel and packages
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Use nixos-unstable for latest kernel and packages
|
||||||
# nixos-wsl = {
|
nixos-wsl = {
|
||||||
# url = "github:nix-community/NixOS-WSL/main";
|
url = "github:nix-community/NixOS-WSL/main";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# };
|
};
|
||||||
# Snowfallorg's Flake utility
|
# Snowfallorg's Flake utility
|
||||||
snowfall-lib = {
|
snowfall-lib = {
|
||||||
url = "github:snowfallorg/lib";
|
url = "github:snowfallorg/lib";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
# game-of-life = {
|
game-of-life = {
|
||||||
# url = "github:local-interloper/game-of-life";
|
url = "github:local-interloper/game-of-life";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# };
|
};
|
||||||
# Add sops-nix for secrets management
|
# Add sops-nix for secrets management
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
url = "github:mic92/sops-nix";
|
url = "github:mic92/sops-nix";
|
||||||
@@ -30,12 +30,16 @@
|
|||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
# anikki = {
|
trilium-next-pr = {
|
||||||
# url = "github:Hion-V/Anikki-flake";
|
url = "github:FliegendeWurst/nixpkgs/trilium-next";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
# Don't follow nixpkgs as this repo has its own pinned nixpkgs
|
||||||
# };
|
};
|
||||||
|
anikki = {
|
||||||
|
url = "github:Hion-V/Anikki-flake";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
lanzaboote = {
|
lanzaboote = {
|
||||||
url = "github:nix-community/lanzaboote/v1.1.0";
|
url = "github:nix-community/lanzaboote/v0.4.3";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
# kwin-effects-forceblur = { Archived.
|
# kwin-effects-forceblur = { Archived.
|
||||||
@@ -47,19 +51,6 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
||||||
wallpaperengine.url = "path:/home/andreas/Projects/linwallpaap/linux-wallpaperengine";
|
|
||||||
simple-wallpaper-engine = {
|
|
||||||
url = "github:Maxnights/simple-linux-wallpaperengine-gui";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
millennium = {
|
|
||||||
url = "github:SteamClientHomebrew/Millennium?dir=packages/nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
codex-desktop = {
|
|
||||||
url = "github:ilysenko/codex-desktop-linux";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs:
|
outputs = inputs:
|
||||||
@@ -103,7 +94,6 @@
|
|||||||
# Use the exact kernel versions as defined in this repo.
|
# Use the exact kernel versions as defined in this repo.
|
||||||
# Guarantees you have binary cache.
|
# Guarantees you have binary cache.
|
||||||
nix-cachyos-kernel.overlays.pinned
|
nix-cachyos-kernel.overlays.pinned
|
||||||
inputs.millennium.overlays.default
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nixos = with inputs; [
|
nixos = with inputs; [
|
||||||
|
|||||||
@@ -6,15 +6,6 @@
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib.my-namespace) enabled;
|
inherit (lib.my-namespace) enabled;
|
||||||
system = pkgs.stdenv.hostPlatform.system;
|
|
||||||
simpleWallpaperEngine =
|
|
||||||
inputs.simple-wallpaper-engine.packages.${system}.default.override {
|
|
||||||
# The upstream GUI package otherwise puts nixpkgs' unmodified
|
|
||||||
# linux-wallpaperengine in its wrapped PATH.
|
|
||||||
pkgs = pkgs // {
|
|
||||||
linux-wallpaperengine = inputs.wallpaperengine.packages.${system}.default;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -38,26 +29,20 @@ in
|
|||||||
pkgs.hyfetch
|
pkgs.hyfetch
|
||||||
pkgs.libreoffice
|
pkgs.libreoffice
|
||||||
pkgs.localsend
|
pkgs.localsend
|
||||||
simpleWallpaperEngine
|
|
||||||
# pkgs.vesktop
|
# pkgs.vesktop
|
||||||
pkgs.obsidian
|
pkgs.obsidian
|
||||||
inputs.zen-browser.packages.x86_64-linux.default
|
inputs.zen-browser.packages.x86_64-linux.default
|
||||||
# inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default # Archived.
|
# inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default # Archived.
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
xdg.autostart = {
|
|
||||||
enable = true;
|
|
||||||
entries = [
|
|
||||||
"${simpleWallpaperEngine}/share/applications/simple-wallpaper-engine-autostart.desktop"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# Auto-start linux-wallpaperengine for dual monitors via XDG autostart
|
# Auto-start linux-wallpaperengine for dual monitors via XDG autostart
|
||||||
# xdg.configFile."autostart/linux-wallpaperengine.desktop".text = ''
|
xdg.configFile."autostart/linux-wallpaperengine.desktop".text = ''
|
||||||
# [Desktop Entry]
|
[Desktop Entry]
|
||||||
# Type=Application
|
Type=Application
|
||||||
# Name=Wallpaper Engine
|
Name=Wallpaper Engine
|
||||||
# Exec=${pkgs.my-namespace.linux-wallpaperengine}/bin/linux-wallpaperengine --screen-root DP-1 --bg 2935872330 --screen-root DP-2 --bg 2935872330 -f 12
|
Exec=${pkgs.my-namespace.linux-wallpaperengine}/bin/linux-wallpaperengine --screen-root DP-1 --bg 2935872330 --screen-root DP-2 --bg 2935872330 -f 12
|
||||||
# X-KDE-autostart-after=panel
|
X-KDE-autostart-after=panel
|
||||||
# X-KDE-StartupNotify=false
|
X-KDE-StartupNotify=false
|
||||||
# '';
|
'';
|
||||||
}
|
}
|
||||||
@@ -5,9 +5,6 @@ let
|
|||||||
in {
|
in {
|
||||||
|
|
||||||
options.${namespace}.desktop-environment = {
|
options.${namespace}.desktop-environment = {
|
||||||
cinnamon = {
|
|
||||||
enable = lib.mkEnableOption "Cinnamon desktop environment";
|
|
||||||
};
|
|
||||||
xfce = {
|
xfce = {
|
||||||
enable = lib.mkEnableOption "XFCE desktop environment";
|
enable = lib.mkEnableOption "XFCE desktop environment";
|
||||||
};
|
};
|
||||||
@@ -26,16 +23,6 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkMerge [
|
config = lib.mkMerge [
|
||||||
(lib.mkIf cfg.xfce.enable {
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
desktopManager = {
|
|
||||||
cinnamon.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR =
|
|
||||||
lib.mkForce "${pkgs.gnome.nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
|
|
||||||
})
|
|
||||||
(lib.mkIf cfg.xfce.enable {
|
(lib.mkIf cfg.xfce.enable {
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -70,24 +57,11 @@ in {
|
|||||||
3389
|
3389
|
||||||
3390
|
3390
|
||||||
];
|
];
|
||||||
|
|
||||||
# users.users.andreas.extraGroups = [ "sambashare" ];
|
|
||||||
# Enable Avahi (mDNS/DNS-SD) for discovery
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
# Enable GNOME sharing services
|
|
||||||
services.gnome.gnome-user-share.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
gnome-tweaks
|
gnome-tweaks
|
||||||
ptyxis
|
|
||||||
gnome-software
|
gnome-software
|
||||||
gnomeExtensions.pop-shell
|
gnomeExtensions.pop-shell
|
||||||
gnome-remote-desktop
|
gnome-remote-desktop
|
||||||
dconf-editor
|
|
||||||
glib-networking # Required gnome-remote-desktop dependency
|
glib-networking # Required gnome-remote-desktop dependency
|
||||||
];
|
];
|
||||||
systemd.user.services.gnome-remote-desktop.environment = {
|
systemd.user.services.gnome-remote-desktop.environment = {
|
||||||
@@ -111,16 +85,6 @@ in {
|
|||||||
(lib.mkIf cfg.kde.enable {
|
(lib.mkIf cfg.kde.enable {
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
services.desktopManager.plasma6.enable = true;
|
services.desktopManager.plasma6.enable = true;
|
||||||
environment.sessionVariables = {
|
|
||||||
# Forces KWin to use the legacy DRM interface so "Allow Tearing" actually works
|
|
||||||
# KWIN_DRM_NO_AMS = "1";
|
|
||||||
# Disables the new triple buffering in Plasma 6.1+ to reduce latency
|
|
||||||
# KWIN_DRM_DISABLE_TRIPLE_BUFFERING = "1";
|
|
||||||
# KWIN_USE_HWCURSOR = "0";
|
|
||||||
# KWIN_DRM_USE_EGL_STREAMS = "0";
|
|
||||||
# MESA_VK_WSI_PRESENT_MODE = "immediate";
|
|
||||||
# vblank_mode = "0";
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
kdePackages.qtwebsockets
|
kdePackages.qtwebsockets
|
||||||
kdePackages.qtwebchannel
|
kdePackages.qtwebchannel
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -43,7 +43,7 @@ in
|
|||||||
age
|
age
|
||||||
wget
|
wget
|
||||||
sops
|
sops
|
||||||
bitwarden-desktop #replaced bitwarden
|
# bitwarden-desktop #replaced bitwarden
|
||||||
bitwarden-cli
|
bitwarden-cli
|
||||||
cowsay
|
cowsay
|
||||||
remmina
|
remmina
|
||||||
|
|||||||
@@ -1,58 +0,0 @@
|
|||||||
{ 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";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
# 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
|
|
||||||
@@ -31,26 +31,18 @@
|
|||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
protonup-ng # Tool to install and manage Proton-GE
|
protonup-ng # Tool to install and manage Proton-GE
|
||||||
lutris
|
lutris
|
||||||
faugus-launcher
|
|
||||||
vkd3d
|
vkd3d
|
||||||
dxvk
|
dxvk
|
||||||
|
corefonts
|
||||||
protontricks
|
protontricks
|
||||||
mangohud
|
mangohud
|
||||||
vkbasalt
|
vkbasalt
|
||||||
gamescope
|
gamescope
|
||||||
corefonts
|
|
||||||
];
|
];
|
||||||
|
|
||||||
hardware.uinput.enable = true;
|
hardware.uinput.enable = true;
|
||||||
users.users.andreas.extraGroups = [ "input" ];
|
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.gamescope.enable = true;
|
||||||
programs.steam.gamescopeSession = {
|
programs.steam.gamescopeSession = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -60,28 +52,26 @@
|
|||||||
"-r" "172"
|
"-r" "172"
|
||||||
"-e" # Enable steam integration
|
"-e" # Enable steam integration
|
||||||
"--steam"
|
"--steam"
|
||||||
"--prefer-outpout DP-4"
|
|
||||||
"--prefer-vk-device 8086:e20b" # lspci -nn | grep VGA
|
"--prefer-vk-device 8086:e20b" # lspci -nn | grep VGA
|
||||||
];
|
];
|
||||||
env = {
|
env = {
|
||||||
# WLR_RENDERER = "vulkan";
|
WLR_RENDERER = "vulkan";
|
||||||
# DXVK_HDR = "0 ";
|
DXVK_HDR = "0 ";
|
||||||
# ENABLE_GAMESCOPE_WSI = "0";
|
ENABLE_GAMESCOPE_WSI = "0";
|
||||||
# WINE_FULLSCREEN_FSR = "1";
|
WINE_FULLSCREEN_FSR = "1";
|
||||||
# SDL_VIDEODRIVER = "wayland,x11"; # Games allegedly prefer X11
|
SDL_VIDEODRIVER = "wayland,x11"; # Games allegedly prefer X11
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.millennium-steam.override {
|
package = pkgs.steam.override {
|
||||||
extraPkgs = pkgs: with pkgs; [
|
extraPkgs = pkgs: with pkgs; [
|
||||||
gamemode
|
gamemode
|
||||||
noto-fonts-color-emoji
|
|
||||||
];
|
];
|
||||||
extraEnv = {
|
extraEnv = {
|
||||||
# SDL_VIDEODRIVER = "wayland,x11";
|
# SDL_VIDEODRIVER = "wayland,x11";
|
||||||
# SDL_VIDEODRIVER = "x11,wayland";
|
SDL_VIDEODRIVER = "x11";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
final: prev:
|
||||||
|
let
|
||||||
|
python313ForCeph =
|
||||||
|
let
|
||||||
|
base = final.python313;
|
||||||
|
in
|
||||||
|
base
|
||||||
|
// {
|
||||||
|
override = args:
|
||||||
|
base.override (args // {
|
||||||
|
packageOverrides = self: super:
|
||||||
|
(if args ? packageOverrides then args.packageOverrides self super else { })
|
||||||
|
// {
|
||||||
|
# Ceph still references cython_0 in nixpkgs; map it to modern cython on py3.13.
|
||||||
|
cython_0 = super.cython;
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
# Work around nixos-unstable eval failure:
|
||||||
|
# sphinx-9.1.0 not supported for interpreter python3.11
|
||||||
|
# (seen through libvirtd -> qemu_full -> ceph Python dependency chain).
|
||||||
|
ceph = prev.ceph.override {
|
||||||
|
python311 = python313ForCeph;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
final: prev: {
|
||||||
|
mbedtls_2 = prev.mbedtls_2.overrideAttrs (oldAttrs: {
|
||||||
|
doCheck = false; # Skip failing PSA crypto tests
|
||||||
|
});
|
||||||
|
|
||||||
|
haxe = prev.haxe.overrideAttrs (oldAttrs: {
|
||||||
|
buildInputs = (oldAttrs.buildInputs or []) ++ [ final.mbedtls_2 ];
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
|
|
||||||
final: prev: {
|
|
||||||
openldap = prev.openldap.overrideAttrs {
|
|
||||||
doCheck = !prev.stdenv.hostPlatform.isi686;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,105 +0,0 @@
|
|||||||
# 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;
|
|
||||||
}
|
|
||||||
@@ -16,7 +16,7 @@ let
|
|||||||
hash = "sha256-REEhqvfYSKD7EyIYJVlbkQu0h5FZcofc8X7Zhu1xZnA="; # You need to add the hash after first build attempt
|
hash = "sha256-REEhqvfYSKD7EyIYJVlbkQu0h5FZcofc8X7Zhu1xZnA="; # You need to add the hash after first build attempt
|
||||||
};
|
};
|
||||||
|
|
||||||
appimageContents = appimageTools.extract {
|
appimageContents = appimageTools.extractType2 {
|
||||||
inherit pname version src;
|
inherit pname version src;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
{
|
||||||
|
# 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;
|
||||||
|
};
|
||||||
|
})
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
{ runCommand, hello }:
|
||||||
|
|
||||||
|
runCommand "hello-test-run" {
|
||||||
|
nativeBuildInputs = [ hello ];
|
||||||
|
} ''
|
||||||
|
diff -U3 --color=auto <(hello) <(echo 'Hello, world!')
|
||||||
|
touch $out
|
||||||
|
''
|
||||||
@@ -1,89 +0,0 @@
|
|||||||
{
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
{
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -10,11 +10,9 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./tigervnc.nix
|
|
||||||
./hardware/hardware-configuration.nix
|
./hardware/hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
# boot.loader.systemd-boot.enable = true; # managed by lanzaboote
|
# boot.loader.systemd-boot.enable = true; # managed by lanzaboote
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
@@ -46,41 +44,14 @@
|
|||||||
LC_TELEPHONE = "nl_NL.UTF-8";
|
LC_TELEPHONE = "nl_NL.UTF-8";
|
||||||
LC_TIME = "nl_NL.UTF-8";
|
LC_TIME = "nl_NL.UTF-8";
|
||||||
};
|
};
|
||||||
system.activationScripts."stremio-mpv-flatpak-patch" = {
|
|
||||||
text = ''
|
|
||||||
# 1. Provide the symlink where Stremio's player engine queries
|
|
||||||
mkdir -p /usr/bin
|
|
||||||
ln -sf /run/current-system/sw/bin/mpv /usr/bin/mpv
|
|
||||||
|
|
||||||
# 2. Locate and patch the runtime server.js file inside the active Flatpak installation
|
|
||||||
TARGET_FILE="/var/lib/flatpak/app/com.stremio.Stremio/current/active/files/opt/stremio/server.js"
|
|
||||||
|
|
||||||
if [ -f "$TARGET_FILE" ]; then
|
|
||||||
# Make sure the file is writable momentarily for the patch
|
|
||||||
chmod +w "$TARGET_FILE"
|
|
||||||
|
|
||||||
# Inject the flatpak-spawn sequence into the linux player profile
|
|
||||||
sed -i 's|linux:{path:\["\/usr\/bin\/mpv"\]|linux:{path:["/usr/bin/flatpak-spawn"],args:["--host","/usr/bin/mpv"]|g' "$TARGET_FILE"
|
|
||||||
sed -i 's|linux:{path:\["mpv"\]|linux:{path:["/usr/bin/flatpak-spawn"],args:["--host","/usr/bin/mpv"]|g' "$TARGET_FILE"
|
|
||||||
|
|
||||||
# Restore permissions
|
|
||||||
chmod -w "$TARGET_FILE"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
services = {
|
services = {
|
||||||
# Enable Gnome Session
|
# Enable Gnome Session
|
||||||
displayManager.gdm.enable = true;
|
displayManager.gdm.enable = true;
|
||||||
displayManager.sddm.enable = false;
|
displayManager.sddm.enable = false;
|
||||||
# displayManager.sddm.wayland.enable = true;
|
displayManager.sddm.wayland.enable = false;
|
||||||
displayManager.autoLogin = {
|
|
||||||
enable = false;
|
|
||||||
user = "andreas";
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager.cosmic-greeter.enable = false;
|
displayManager.cosmic-greeter.enable = false;
|
||||||
displayManager.defaultSession = "gnome";
|
displayManager.defaultSession = "gnome";
|
||||||
# Clear the sandbox restriction dynamically
|
|
||||||
|
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true; # Enable the deprecated X11 teletype terminal connection system.
|
enable = true; # Enable the deprecated X11 teletype terminal connection system.
|
||||||
@@ -168,8 +139,7 @@
|
|||||||
ntfs3g
|
ntfs3g
|
||||||
htop
|
htop
|
||||||
rivalcfg
|
rivalcfg
|
||||||
blender
|
|
||||||
freecad
|
|
||||||
reaper
|
reaper
|
||||||
discord
|
discord
|
||||||
betterdiscordctl
|
betterdiscordctl
|
||||||
@@ -201,7 +171,9 @@
|
|||||||
virtualisation.libvirtd = {
|
virtualisation.libvirtd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
qemu = {
|
qemu = {
|
||||||
package = pkgs.qemu;
|
package = pkgs.qemu_full.override {
|
||||||
|
cephSupport = false;
|
||||||
|
};
|
||||||
runAsRoot = true;
|
runAsRoot = true;
|
||||||
swtpm.enable = true;
|
swtpm.enable = true;
|
||||||
vhostUserPackages = [ pkgs.virtiofsd ];
|
vhostUserPackages = [ pkgs.virtiofsd ];
|
||||||
@@ -224,14 +196,13 @@
|
|||||||
# Enable the OpenSSH daemon.
|
# Enable the OpenSSH daemon.
|
||||||
services.openssh.enable = true;
|
services.openssh.enable = true;
|
||||||
|
|
||||||
# Open ports in the .
|
# Open ports in the firewall.
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
24800 #Synergy
|
24800 #Synergy
|
||||||
53317 #localsend
|
53317 #localsend
|
||||||
3390 #rdp
|
3390 #rdp
|
||||||
9090
|
9090
|
||||||
8000
|
8000
|
||||||
40122
|
|
||||||
];
|
];
|
||||||
networking.firewall.allowedUDPPorts = [
|
networking.firewall.allowedUDPPorts = [
|
||||||
24800 #Synergy
|
24800 #Synergy
|
||||||
@@ -239,7 +210,6 @@
|
|||||||
3390 #rdp
|
3390 #rdp
|
||||||
9090
|
9090
|
||||||
8000
|
8000
|
||||||
40122
|
|
||||||
];
|
];
|
||||||
networking.firewall.trustedInterfaces = [ "virbr0" ];
|
networking.firewall.trustedInterfaces = [ "virbr0" ];
|
||||||
networking.nat = {
|
networking.nat = {
|
||||||
@@ -264,46 +234,8 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.mullvad-vpn = {
|
# Or disable the firewall altogether.
|
||||||
enable = true;
|
# networking.firewall.enable = false;
|
||||||
gui.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
|
|
||||||
packages = with pkgs; [
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-color-emoji
|
|
||||||
];
|
|
||||||
|
|
||||||
fontconfig = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
defaultFonts = {
|
|
||||||
sansSerif = [ "DejaVu Sans" "Noto Color Emoji" ];
|
|
||||||
serif = [ "DejaVu Serif" "Noto Color Emoji" ];
|
|
||||||
monospace = [ "DejaVu Sans Mono" "Noto Color Emoji" ];
|
|
||||||
emoji = [ "Noto Color Emoji" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# services.xrdp = {
|
|
||||||
# enable = true;
|
|
||||||
# openFirewall = true;
|
|
||||||
# defaultWindowManager = "cinnamon-session";
|
|
||||||
# };
|
|
||||||
|
|
||||||
### tigervnc
|
|
||||||
services.tigervnc = {
|
|
||||||
enable = false;
|
|
||||||
users = {
|
|
||||||
andreas = {
|
|
||||||
localhost = false; # true for SSH-only
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
### tigervnc END
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
@@ -311,6 +243,6 @@
|
|||||||
# this value at the release version of the first install of this system.
|
# this value at the release version of the first install of this system.
|
||||||
# Before changing this value read the documentation for this option
|
# Before changing this value read the documentation for this option
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "26.05"; # Did you read the comment?
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,33 +34,25 @@ in
|
|||||||
# inherit system;
|
# inherit system;
|
||||||
imports = [
|
imports = [
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
./mutter-tearing.nix
|
|
||||||
./video.nix
|
./video.nix
|
||||||
inputs.wallpaperengine.nixosModules.default
|
|
||||||
inputs.aagl.nixosModules.default
|
inputs.aagl.nixosModules.default
|
||||||
];
|
];
|
||||||
config = {
|
config = {
|
||||||
programs.linux-wallpaperengine.enable = true;
|
system.stateVersion = "24.05";
|
||||||
system.stateVersion = "26.05";
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
# Distrobox
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
my-namespace.distrobox.enable = true;
|
|
||||||
# Desktops
|
# Desktops
|
||||||
my-namespace.desktop-environment.cinnamon.enable = true;
|
my-namespace.desktop-environment.xfce.enable = true;
|
||||||
my-namespace.desktop-environment.xfce.enable = false;
|
|
||||||
my-namespace.desktop-environment.gnome.enable = true;
|
my-namespace.desktop-environment.gnome.enable = true;
|
||||||
my-namespace.desktop-environment.kde.enable = false;
|
my-namespace.desktop-environment.kde.enable = true;
|
||||||
my-namespace.desktop-environment.hyprland.enable = false;
|
my-namespace.desktop-environment.cosmic.enable = true;
|
||||||
my-namespace.desktop-environment.cosmic.enable = false;
|
|
||||||
my-namespace.performance-tuning.enable = true;
|
my-namespace.performance-tuning.enable = true;
|
||||||
my-namespace.rtl8125-recovery.enable = true;
|
|
||||||
my-namespace.file-organization.enable = true;
|
my-namespace.file-organization.enable = true;
|
||||||
# GNOME-keyring
|
# GNOME-keyring
|
||||||
my-namespace.gnome-keyring.enable = true;
|
my-namespace.gnome-keyring.enable = true;
|
||||||
# CS Tools
|
# CS Tools
|
||||||
my-namespace.cs-tools.enable = true;
|
my-namespace.cs-tools.enable = true;
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.andreas = {
|
users.users.andreas = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
description = "Andreas Schaafsma";
|
description = "Andreas Schaafsma";
|
||||||
@@ -74,16 +66,16 @@ in
|
|||||||
];
|
];
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# Packages from inputsq
|
# Packages from inputsq
|
||||||
# inputs.game-of-life.packages.x86_64-linux.default
|
inputs.game-of-life.packages.x86_64-linux.default
|
||||||
inputs.zen-browser.packages.x86_64-linux.default
|
inputs.zen-browser.packages.x86_64-linux.default
|
||||||
# inputs.anikki.packages.x86_64-linux.default
|
inputs.trilium-next-pr.legacyPackages.x86_64-linux.trilium-next-desktop
|
||||||
|
inputs.anikki.packages.x86_64-linux.default
|
||||||
# We want flatpak support
|
# We want flatpak support
|
||||||
flatpak
|
flatpak
|
||||||
# GNOME shit
|
# GNOME shit
|
||||||
thunderbird
|
thunderbird
|
||||||
soundwireserver
|
soundwireserver
|
||||||
# vscode
|
vscode
|
||||||
# discord
|
|
||||||
spotify
|
spotify
|
||||||
appimage-run
|
appimage-run
|
||||||
prismlauncher #replaces broken minecraft package
|
prismlauncher #replaces broken minecraft package
|
||||||
@@ -91,19 +83,11 @@ in
|
|||||||
terraform
|
terraform
|
||||||
virt-manager
|
virt-manager
|
||||||
nil
|
nil
|
||||||
codex
|
|
||||||
inputs.codex-desktop.packages.${pkgs.stdenv.hostPlatform.system}.codex-desktop
|
|
||||||
# thunderbird
|
# thunderbird
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.appimage = {
|
|
||||||
enable = true;
|
|
||||||
binfmt = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules
|
programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules
|
||||||
programs.anime-games-launcher.enable = true;
|
programs.anime-games-launcher.enable = true;
|
||||||
|
|
||||||
@@ -115,22 +99,16 @@ in
|
|||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
networking.firewall.allowedTCPPorts = [
|
networking.firewall.allowedTCPPorts = [
|
||||||
59010 #SoundWireServer
|
59010 #SoundWireServer
|
||||||
5901
|
|
||||||
5001
|
|
||||||
11434
|
|
||||||
3389 #RDP
|
3389 #RDP
|
||||||
22 #ssh
|
22 #ssh
|
||||||
];
|
];
|
||||||
networking.firewall.allowedUDPPorts = [
|
networking.firewall.allowedUDPPorts = [
|
||||||
59010 #SoundWireServer
|
59010 #SoundWireServer
|
||||||
5901
|
|
||||||
5001
|
|
||||||
11434
|
|
||||||
3389 #RDP
|
3389 #RDP
|
||||||
22 #ssh
|
22 #ssh
|
||||||
];
|
];
|
||||||
# Or disable the firewall altogether.
|
# Or disable the firewall altogether.
|
||||||
networking.firewall.enable = false;
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
|
||||||
# Install firefox.
|
# Install firefox.
|
||||||
@@ -138,22 +116,6 @@ in
|
|||||||
nixpkgs.config.allowBroken = true;
|
nixpkgs.config.allowBroken = true;
|
||||||
powerManagement.cpuFreqGovernor = "performance";
|
powerManagement.cpuFreqGovernor = "performance";
|
||||||
# Set up system Packages
|
# Set up system Packages
|
||||||
environment.sessionVariables.GI_TYPELIB_PATH =
|
|
||||||
lib.makeSearchPath "lib/girepository-1.0" [
|
|
||||||
pkgs.my-namespace.rounded-blur
|
|
||||||
];
|
|
||||||
environment.sessionVariables = {
|
|
||||||
# If you are using Hyprland, labwc, or Sway (wlroots-based):
|
|
||||||
WLR_DRM_NO_ATOMIC = "1";
|
|
||||||
|
|
||||||
KWIN_DRM_DISABLE_TRIPLE_BUFFERING="1";
|
|
||||||
|
|
||||||
# If you are using KDE Plasma (KWin):
|
|
||||||
KWIN_FORCE_SW_CURSOR = "1";
|
|
||||||
|
|
||||||
# For modern wlroots (and Aquamarine in Hyprland) to force software cursors:
|
|
||||||
WLR_NO_HARDWARE_CURSORS = "1";
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
git
|
git
|
||||||
wine
|
wine
|
||||||
@@ -164,13 +126,8 @@ in
|
|||||||
synergy
|
synergy
|
||||||
mangohud
|
mangohud
|
||||||
my-namespace.udev-steelseries
|
my-namespace.udev-steelseries
|
||||||
|
my-namespace.hello
|
||||||
my-namespace.linux-wallpaperengine
|
my-namespace.linux-wallpaperengine
|
||||||
my-namespace.rounded-blur
|
|
||||||
my-namespace.rounded-windows-bms
|
|
||||||
my-namespace.cs-demo-manager
|
|
||||||
vscode-modernized
|
|
||||||
zed-editor
|
|
||||||
jetbrains-toolbox
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "switch-to-desktop" ''
|
(pkgs.writeShellScriptBin "switch-to-desktop" ''
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
@@ -232,9 +189,9 @@ in
|
|||||||
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
|
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
|
||||||
# If no user is logged in, the machine will power down after 20 minutes.
|
# If no user is logged in, the machine will power down after 20 minutes.
|
||||||
|
|
||||||
# systemd.targets.sleep.enable = false;
|
systemd.targets.sleep.enable = false;
|
||||||
# systemd.targets.suspend.enable = false;
|
systemd.targets.suspend.enable = false;
|
||||||
# systemd.targets.hibernate.enable = false;
|
systemd.targets.hibernate.enable = false;
|
||||||
# systemd.targets.hybrid-sleep.enable = false;
|
systemd.targets.hybrid-sleep.enable = false;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
{
|
{
|
||||||
# boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid.bin,DP-2:edid/edid.bin,DP-3:edid/edid.bin,DP-4:edid/edid.bin" ];
|
# boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid.bin,DP-2:edid/edid.bin,DP-3:edid/edid.bin,DP-4:edid/edid.bin" ];
|
||||||
boot.kernelParams = [
|
boot.kernelParams = [ "drm.edid_firmware=DP-2:edid/edid.bin" ];
|
||||||
"drm.edid_firmware=DP-2:edid/edid.bin,DP-4:edid/edid.bin"
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
hardware.firmware = [
|
hardware.firmware = [
|
||||||
|
|||||||
Binary file not shown.
@@ -27,7 +27,7 @@
|
|||||||
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
|
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
|
||||||
];
|
];
|
||||||
services.switcherooControl.enable = true;
|
services.switcherooControl.enable = true;
|
||||||
# environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
|
environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
|
||||||
hardware.intel-gpu-tools.enable = true;
|
hardware.intel-gpu-tools.enable = true;
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -39,7 +39,6 @@
|
|||||||
intel-vaapi-driver # fallback
|
intel-vaapi-driver # fallback
|
||||||
intel-compute-runtime # OpenCL/Level Zero
|
intel-compute-runtime # OpenCL/Level Zero
|
||||||
level-zero # Level Zero API for compute
|
level-zero # Level Zero API for compute
|
||||||
intel-graphics-compiler # Shader compiler for Arc GPUs allgedly needed for XPU
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -54,13 +53,6 @@
|
|||||||
"nvidia_uvm"
|
"nvidia_uvm"
|
||||||
];
|
];
|
||||||
|
|
||||||
# Mark Arc B580 as a discrete Intel GPU for switcheroo-control and
|
|
||||||
# keep runtime PCI power management enabled for the device.
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
ACTION=="add|bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0xe20b", TEST=="power/control", ATTR{power/control}="auto"
|
|
||||||
SUBSYSTEM=="drm", DRIVERS=="xe", ATTRS{vendor}=="0x8086", ATTRS{device}=="0xe20b", TAG+="switcheroo-discrete-gpu"
|
|
||||||
'';
|
|
||||||
|
|
||||||
environment.variables = {
|
environment.variables = {
|
||||||
# Force Intel GPU for all graphics operations
|
# Force Intel GPU for all graphics operations
|
||||||
KWIN_DRM_DEVICES = "/dev/dri/card0";
|
KWIN_DRM_DEVICES = "/dev/dri/card0";
|
||||||
@@ -128,14 +120,4 @@
|
|||||||
clinfo
|
clinfo
|
||||||
vulkan-tools
|
vulkan-tools
|
||||||
];
|
];
|
||||||
services.xserver.config = ''
|
|
||||||
Section "Device"
|
|
||||||
Identifier "AMD"
|
|
||||||
Driver "amdgpu"
|
|
||||||
Option "TearFree" "false"
|
|
||||||
EndSection
|
|
||||||
'';
|
|
||||||
services.xserver.deviceSection = ''
|
|
||||||
Option "TearFree" "false"
|
|
||||||
'';
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,23 +17,9 @@
|
|||||||
boot.extraModprobeConfig = ''
|
boot.extraModprobeConfig = ''
|
||||||
options vfio-pci ids=10de:1b81,10de:10f0
|
options vfio-pci ids=10de:1b81,10de:10f0
|
||||||
'';
|
'';
|
||||||
boot.initrd.systemd = {
|
boot.initrd.preDeviceCommands = ''
|
||||||
enable = true;
|
modprobe vfio-pci
|
||||||
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
|
# # EARLY and deterministic binding
|
||||||
# boot.initrd.preDeviceCommands = ''
|
# boot.initrd.preDeviceCommands = ''
|
||||||
# echo 0000:05:00.0 > /sys/bus/pci/drivers/vfio-pci/bind
|
# echo 0000:05:00.0 > /sys/bus/pci/drivers/vfio-pci/bind
|
||||||
|
|||||||
@@ -33,27 +33,23 @@
|
|||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
ExecStart = "${pkgs.ethtool}/bin/ethtool --set-eee enp10s0 eee off";
|
ExecStart = "${pkgs.ethtool}/bin/ethtool --set-eee enp75s0 eee off";
|
||||||
RemainAfterExit = true;
|
RemainAfterExit = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b";
|
device = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/646A-D107";
|
#device = "/dev/disk/by-uuid/E846-D998";
|
||||||
fsType = "vfat";
|
device = "/dev/disk/by-uuid/19BE-8BAA";
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
fsType = "vfat";
|
||||||
};
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
|
};
|
||||||
fileSystems."/home" =
|
|
||||||
{ device = "/dev/disk/by-uuid/6ac4f42b-09e3-43b3-8215-8ff9a3c0695e";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Mount ntfs partition
|
# Mount ntfs partition
|
||||||
# fileSystems."/run/media/627C3BDF7C3BAD23" = {
|
# fileSystems."/run/media/627C3BDF7C3BAD23" = {
|
||||||
@@ -84,10 +80,10 @@
|
|||||||
swapDevices = [ {
|
swapDevices = [ {
|
||||||
device = "/var/lib/swapfile";
|
device = "/var/lib/swapfile";
|
||||||
size = 32*1024;
|
size = 32*1024;
|
||||||
} ]; #resume-offset = 195323904
|
} ]; #resume-offset = 78399488
|
||||||
boot.resumeDevice = "/dev/disk/by-uuid/31fe479a-f4ef-4ee5-9cd9-d43ed1a3c88b"; # the unlocked drive mapping
|
boot.resumeDevice = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; # the unlocked drive mapping
|
||||||
boot.kernelParams = [
|
boot.kernelParams = [
|
||||||
"resume_offset=195323904" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}'
|
"resume_offset=78399488" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}'
|
||||||
"r8125.aspm=0" # realtek network adapter fix
|
"r8125.aspm=0" # realtek network adapter fix
|
||||||
];
|
];
|
||||||
security.protectKernelImage = false;
|
security.protectKernelImage = false;
|
||||||
|
|||||||
@@ -1,36 +0,0 @@
|
|||||||
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;
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
{ 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,83 +0,0 @@
|
|||||||
{ 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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user