Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
273e88cb54 | ||
|
|
caa439b36b |
@@ -1 +0,0 @@
|
|||||||
.vscode/settings.json
|
|
||||||
-13
@@ -1,13 +0,0 @@
|
|||||||
keys:
|
|
||||||
- users:
|
|
||||||
- &andreas age19j24x89dfh4f7v58c8k64yupqas4f7qkkyper7yj9dd7vqwvvq0qkyvhxk # generated using cli
|
|
||||||
- hosts:
|
|
||||||
- &th0nkpad-nixos age1ma8x6wugvc40mkst33mejq0m6r44jk6zwjjun3znyer5nztgn9vs0nwjx4 # derived from ssh host key
|
|
||||||
- &drivebystation-nix age1s5qwsuc3e4m3c4w5hl6tyja70w273gr60j9j9dcpc6mz69lemg3qpwud3h #derived from ssh host key
|
|
||||||
creation_rules:
|
|
||||||
- path_regex: secrets.yaml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *andreas
|
|
||||||
- *th0nkpad-nixos
|
|
||||||
- *drivebystation-nix
|
|
||||||
Vendored
-21
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
|
||||||
// for the documentation about the tasks.json format
|
|
||||||
"version": "2.0.0",
|
|
||||||
"tasks": [
|
|
||||||
{
|
|
||||||
"type": "shell",
|
|
||||||
"label": "nixos-rebuild",
|
|
||||||
"command": "bash",
|
|
||||||
"args": [
|
|
||||||
"-c",
|
|
||||||
"sudo nixos-rebuild switch --flake ."
|
|
||||||
],
|
|
||||||
"problemMatcher": [],
|
|
||||||
"group": {
|
|
||||||
"kind": "build",
|
|
||||||
"isDefault": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@@ -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
+140
-341
@@ -1,50 +1,13 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"aagl": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
],
|
|
||||||
"rust-overlay": "rust-overlay"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1787517695,
|
|
||||||
"narHash": "sha256-Z119G3qLJx22frNHO3/seMs7fCCvxe9NJJRfN4Jadew=",
|
|
||||||
"owner": "ezKEa",
|
|
||||||
"repo": "aagl-gtk-on-nix",
|
|
||||||
"rev": "4bb57072d963aa47f14894383a5560cf290e296a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ezKEa",
|
|
||||||
"repo": "aagl-gtk-on-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"crane": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1781825982,
|
|
||||||
"narHash": "sha256-SlXKwIRIhrOSAcTjCB3ftPLzJWZStQIPS7J1FlZPnKk=",
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"rev": "469fd08d0bcf6926321fa973c6777fbc87785dd7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "ipetkov",
|
|
||||||
"repo": "crane",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767039857,
|
"lastModified": 1696426674,
|
||||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -56,43 +19,11 @@
|
|||||||
"flake-compat_2": {
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767039857,
|
"lastModified": 1696426674,
|
||||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat_3": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1767039857,
|
|
||||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat_4": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1650374568,
|
|
||||||
"narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
|
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "b4a34015c698c7793d592d66adbab377907a2be8",
|
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -103,14 +34,17 @@
|
|||||||
},
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": [
|
||||||
|
"nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788306937,
|
"lastModified": 1719994518,
|
||||||
"narHash": "sha256-lbrI1UYVpFgKSsyrU9oeF7FHfnu8nLD9ja0ou9f2rxk=",
|
"narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "f16b25b8c3d2809b87925d0b76652d7821a75c68",
|
"rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -124,11 +58,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1694529238,
|
"lastModified": 1726560853,
|
||||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -137,171 +71,169 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils-plus": {
|
"git-hooks-nix": {
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1715533576,
|
|
||||||
"narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
|
|
||||||
"owner": "gytis-ivaskevicius",
|
|
||||||
"repo": "flake-utils-plus",
|
|
||||||
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "gytis-ivaskevicius",
|
|
||||||
"repo": "flake-utils-plus",
|
|
||||||
"rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gitignore": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"nix"
|
||||||
|
],
|
||||||
|
"gitignore": [
|
||||||
|
"nix"
|
||||||
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"lanzaboote",
|
"nix",
|
||||||
"pre-commit",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1709087332,
|
|
||||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "gitignore.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1788355065,
|
|
||||||
"narHash": "sha256-gAz5oTI7ur34CfuakQduiQd/2ZhO62Bn2XXg08nZYYQ=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "d9d750e4fc11c10cab2da677bdd31e427f3a3a71",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"zen-browser",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1788229478,
|
|
||||||
"narHash": "sha256-G0F2rFORVcFkEvVdE/qWQTnYekIc77YP5/vRF9nZlxU=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "1dc2d1f720ab17fc7981e087346bf54b26d284b1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"lanzaboote": {
|
|
||||||
"inputs": {
|
|
||||||
"crane": "crane",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"pre-commit": "pre-commit",
|
"nixpkgs-stable": [
|
||||||
"rust-overlay": "rust-overlay_2"
|
"nix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782141370,
|
"lastModified": 1721042469,
|
||||||
"narHash": "sha256-hqijVSEETttmo8Okql9/LG0Ua34hdciKW1a5zzlj8mU=",
|
"narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=",
|
||||||
"owner": "nix-community",
|
"owner": "cachix",
|
||||||
"repo": "lanzaboote",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "7c9a54a7f87b4539ddbd8bda09a8a5f5f9361aa9",
|
"rev": "f451c19376071a90d8c58ab1a953c6e9840527fd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "cachix",
|
||||||
"ref": "v1.1.0",
|
"repo": "git-hooks.nix",
|
||||||
"repo": "lanzaboote",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix-cachyos-kernel": {
|
"libgit2": {
|
||||||
"inputs": {
|
"flake": false,
|
||||||
"flake-compat": "flake-compat_3",
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788379544,
|
"lastModified": 1715853528,
|
||||||
"narHash": "sha256-EMfRomvn1lAErvY/Q3bQL+PwEi+5hbBwI0ZI5SRC/WM=",
|
"narHash": "sha256-J2rCxTecyLbbDdsyBWn9w7r3pbKRMkI9E7RvRgAqBdY=",
|
||||||
"owner": "xddxdd",
|
"owner": "libgit2",
|
||||||
"repo": "nix-cachyos-kernel",
|
"repo": "libgit2",
|
||||||
"rev": "d1c3cadc796061778cf7f62bdbfaf68cf3c3c654",
|
"rev": "36f7e21ad757a3dacc58cf7944329da6bc1d6e96",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "xddxdd",
|
"owner": "libgit2",
|
||||||
"ref": "release",
|
"ref": "v1.8.1",
|
||||||
"repo": "nix-cachyos-kernel",
|
"repo": "libgit2",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"git-hooks-nix": "git-hooks-nix",
|
||||||
|
"libgit2": "libgit2",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nixpkgs-23-11": "nixpkgs-23-11",
|
||||||
|
"nixpkgs-regression": "nixpkgs-regression"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728310575,
|
||||||
|
"narHash": "sha256-R13o8hNhzuTuEwUBViVOmT4OM0/I2d9DxnkxQOip1yg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nix",
|
||||||
|
"rev": "26c3fc11eada3fa7df0284190095868a947fefe2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "nix",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixos-wsl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat_2",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728299182,
|
||||||
|
"narHash": "sha256-wzxKH5DyG+uyhnGtP8YmN3LCYtEyYR/4fhjKVY2Rtxg=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NixOS-WSL",
|
||||||
|
"rev": "830b6a752d0097c2043985ff4c1203aba07b268d",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "main",
|
||||||
|
"repo": "NixOS-WSL",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788329703,
|
"lastModified": 1723688146,
|
||||||
"narHash": "sha256-fHvRW4JUchuw6QNzQ50BfzeYe0TnjKml1V8PVRjntSI=",
|
"narHash": "sha256-sqLwJcHYeWLOeP/XoLwAtYjr01TISlkOfz+NG82pbdg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "090e478bd64824e2122328df47a7efb74fdaf0c1",
|
"rev": "c3d4ac725177c030b1e289015989da2ad9d56af0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"ref": "nixos-unstable-small",
|
"ref": "nixos-24.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-23-11": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788057806,
|
"lastModified": 1717159533,
|
||||||
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
|
"narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=",
|
||||||
"owner": "nix-community",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs",
|
||||||
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
|
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-regression": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1643052045,
|
||||||
|
"narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1788179007,
|
"lastModified": 1728193676,
|
||||||
"narHash": "sha256-hn1oU2rue2SYK8dAr8+WNZWtbsz1S2W5mnHlSEuh3bo=",
|
"narHash": "sha256-PbDWAIjKJdlVg+qQRhzdSor04bAPApDqIv2DofTyynk=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "34ab99075ac4f7e40cf037eef32cb1c360bb85e9",
|
"rev": "ecbc1ca8ffd6aea8372ad16be9ebbb39889e55b6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1728241625,
|
||||||
|
"narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -311,123 +243,11 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pre-commit": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat_2",
|
|
||||||
"gitignore": "gitignore",
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1781733627,
|
|
||||||
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "cachix",
|
|
||||||
"repo": "pre-commit-hooks.nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"aagl": "aagl",
|
"nix": "nix",
|
||||||
"home-manager": "home-manager",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"lanzaboote": "lanzaboote",
|
"nixpkgs": "nixpkgs_3"
|
||||||
"nix-cachyos-kernel": "nix-cachyos-kernel",
|
|
||||||
"nixpkgs": "nixpkgs_2",
|
|
||||||
"snowfall-lib": "snowfall-lib",
|
|
||||||
"sops-nix": "sops-nix",
|
|
||||||
"zen-browser": "zen-browser"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"aagl",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1785476452,
|
|
||||||
"narHash": "sha256-/CXwCFPS41rb/JI2VitKCgVK6V5E6/sfw5ke3B9zyVQ=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "6ef009bf4c4873cdc1a621826722bdea7c03e62c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rust-overlay_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"lanzaboote",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1782012058,
|
|
||||||
"narHash": "sha256-9mWUnReOUXfKjZuJAL/bAFH3LUyECTRtXgSNVjRw3UY=",
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"rev": "8534567325bd8a8d2928e6afd81e0a87d19efd3c",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "oxalica",
|
|
||||||
"repo": "rust-overlay",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"snowfall-lib": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-compat": "flake-compat_4",
|
|
||||||
"flake-utils-plus": "flake-utils-plus",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1784328457,
|
|
||||||
"narHash": "sha256-4R5WV74NHhPk21ctoPmjL7nQ6txDnoBLwSWULvIw0TY=",
|
|
||||||
"owner": "snowfallorg",
|
|
||||||
"repo": "lib",
|
|
||||||
"rev": "6ee3542cb459ca4b038cfe50ceb8797f05cdabad",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "snowfallorg",
|
|
||||||
"repo": "lib",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sops-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1788337237,
|
|
||||||
"narHash": "sha256-gkSH8VUtCo6hnysNmb9DbTuDepH2t5pv+QWjP75xKAk=",
|
|
||||||
"owner": "mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"rev": "fbf759290e0cb0a98dfc813a4eb7d53ad1dacb57",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
@@ -444,27 +264,6 @@
|
|||||||
"repo": "default",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"zen-browser": {
|
|
||||||
"inputs": {
|
|
||||||
"home-manager": "home-manager_2",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1788405419,
|
|
||||||
"narHash": "sha256-wuGizAVEmY0u15MYrhgy7AoQdHg+4Y2QiC+v/mxA8dc=",
|
|
||||||
"owner": "0xc000022070",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"rev": "fdb83f8fce835213fab7eab52c375926fe1a32dc",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "0xc000022070",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
@@ -2,155 +2,110 @@
|
|||||||
description = "Nixos config flake test";
|
description = "Nixos config flake test";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
# nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05";
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; # Use nixos-unstable for latest kernel and packages
|
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||||
# nixos-wsl = {
|
|
||||||
# url = "github:nix-community/NixOS-WSL/main";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
# };
|
|
||||||
# Snowfallorg's Flake utility
|
|
||||||
snowfall-lib = {
|
|
||||||
url = "github:snowfallorg/lib";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
# game-of-life = {
|
|
||||||
# url = "github:local-interloper/game-of-life";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
# };
|
|
||||||
# Add sops-nix for secrets management
|
|
||||||
sops-nix = {
|
|
||||||
url = "github:mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
zen-browser = {
|
|
||||||
url = "github:0xc000022070/zen-browser-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
# anikki = {
|
|
||||||
# url = "github:Hion-V/Anikki-flake";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
# };
|
|
||||||
lanzaboote = {
|
|
||||||
url = "github:nix-community/lanzaboote/v1.1.0";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
# kwin-effects-forceblur = { Archived.
|
|
||||||
# url = "github:taj-ny/kwin-effects-forceblur";
|
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
# };
|
|
||||||
aagl = {
|
|
||||||
url = "github:ezKEa/aagl-gtk-on-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nix-cachyos-kernel.url = "github:xddxdd/nix-cachyos-kernel/release";
|
|
||||||
};
|
};
|
||||||
|
outputs = { self, nixpkgs, nixos-wsl, nix, ... }@inputs:
|
||||||
outputs = inputs:
|
|
||||||
let
|
let
|
||||||
lib = inputs.snowfall-lib.mkLib {
|
system =
|
||||||
inherit inputs;
|
if builtins ? currentSystem
|
||||||
src = ./.;
|
then builtins.currentSystem
|
||||||
|
else "x86_64-linux";
|
||||||
channels-config = {
|
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
|
||||||
allowUnfree = true;
|
installedPackages = (import ./installed-packages { inherit pkgs; });
|
||||||
allowUnfreePredicate = _: true;
|
|
||||||
permittedInsecurePackages = [ "openssl-1.1.1w" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure Snowfall Lib, all of these settings are optional.
|
|
||||||
snowfall = {
|
|
||||||
# Tell Snowfall Lib to look in the `./nix/` directory for your
|
|
||||||
# Nix files.
|
|
||||||
root = ./.;
|
|
||||||
|
|
||||||
# Choose a namespace to use for your flake's packages, library,
|
|
||||||
# and overlays.
|
|
||||||
namespace = "my-namespace";
|
|
||||||
|
|
||||||
# Add flake metadata that can be processed by tools like Snowfall Frost.
|
|
||||||
meta = {
|
|
||||||
# A slug to use in documentation when displaying things like file paths.
|
|
||||||
name = "nixos-config-hionv";
|
|
||||||
|
|
||||||
# A title to show for your flake, typically the name.
|
|
||||||
title = "Hion's Personal NixOS Config";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
in
|
||||||
lib.mkFlake {
|
{
|
||||||
inherit inputs;
|
nixosConfigurations.drivebystation-nixos-wsl = nixpkgs.lib.nixosSystem {
|
||||||
src = ./.;
|
inherit system;
|
||||||
|
modules = [
|
||||||
|
nixos-wsl.nixosModules.default
|
||||||
|
./systems/drivebystation-nixos-wsl/configuration.nix
|
||||||
|
{
|
||||||
|
system.stateVersion = "24.05";
|
||||||
|
wsl.enable = true;
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
environment.systemPackages = [
|
||||||
|
|
||||||
overlays = with inputs; [
|
]
|
||||||
# Use the exact kernel versions as defined in this repo.
|
++ installedPackages.mkPackages.packages;
|
||||||
# Guarantees you have binary cache.
|
programs.nix-ld = {
|
||||||
nix-cachyos-kernel.overlays.pinned
|
enable = true;
|
||||||
];
|
package = pkgs.nix-ld-rs;
|
||||||
|
};
|
||||||
nixos = with inputs; [
|
}
|
||||||
|
|
||||||
# disko.nixosModules.disko
|
|
||||||
# impermanence.nixosModules.impermanence
|
|
||||||
home-manager.nixosModules.home-manager
|
|
||||||
{
|
|
||||||
home-manager = {
|
|
||||||
useGlobalPkgs = false; # Disabled to allow system-level overlays to work
|
|
||||||
useUserPackages = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
# nix-ld.nixosModules.nix-ld
|
|
||||||
# sops-nix.nixosModules.sops
|
|
||||||
# stylix.nixosModules.stylix
|
|
||||||
];
|
|
||||||
|
|
||||||
systems.modules.nixos = with inputs; [
|
|
||||||
# my-input.nixosModules.my-module
|
|
||||||
lanzaboote.nixosModules.lanzaboote ({ pkgs, lib, ... }: {
|
|
||||||
environment.systemPackages = [
|
|
||||||
# For debugging and troubleshooting Secure Boot.
|
|
||||||
pkgs.sbctl
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
boot.loader.systemd-boot.configurationLimit = 4;
|
|
||||||
# Lanzaboote currently replaces the systemd-boot module.
|
|
||||||
# This setting is usually set to true in configuration.nix
|
|
||||||
# generated at installation time. So we force it to false
|
|
||||||
# for now.
|
|
||||||
boot.loader.systemd-boot.enable = lib.mkForce false;
|
|
||||||
|
|
||||||
boot.lanzaboote = {
|
|
||||||
enable = true;
|
|
||||||
pkiBundle = "/var/lib/sbctl";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
# The attribute set specified here will be passed directly to NixPkgs when
|
|
||||||
# instantiating the package set.
|
|
||||||
channels-config = {
|
|
||||||
# Allow unfree packages.
|
|
||||||
allowUnfree = true;
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"mbedtls-2.28.10" # needed for haxe 4.3.6
|
|
||||||
];
|
];
|
||||||
# # Allow certain insecure packages
|
specialArgs = { inherit inputs; };
|
||||||
# permittedInsecurePackages = [
|
};
|
||||||
# "firefox-100.0.0"
|
nixosConfigurations.th0nkpad-nixos = nixpkgs.lib.nixosSystem {
|
||||||
# ];
|
inherit system;
|
||||||
|
modules = [
|
||||||
# # Additional configuration for specific packages.
|
./systems/th0nkpad-nixos/configuration.nix
|
||||||
# config = {
|
{
|
||||||
# # For example, enable smartcard support in Firefox.
|
system.stateVersion = "24.05";
|
||||||
# firefox.smartcardSupport = true;
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
# };
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.andreas = {
|
||||||
|
isNormalUser = true;
|
||||||
|
description = "Andreas";
|
||||||
|
extraGroups = [ "networkmanager" "wheel" ];
|
||||||
|
packages = with pkgs; [
|
||||||
|
flatpak
|
||||||
|
gnome-software
|
||||||
|
soundwireserver
|
||||||
|
vscode
|
||||||
|
spotify
|
||||||
|
# thunderbird
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
59010 #SoundWireServer
|
||||||
|
3389 #RDP
|
||||||
|
];
|
||||||
|
networking.firewall.allowedUDPPorts = [
|
||||||
|
59010 #SoundWireServer
|
||||||
|
3389 #RDP
|
||||||
|
];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Install firefox.
|
||||||
|
programs.firefox.enable = true;
|
||||||
|
|
||||||
|
# Set up system Packages
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
git
|
||||||
|
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
# wget
|
||||||
|
]
|
||||||
|
++ installedPackages.mkPackages.packages;
|
||||||
|
programs.nix-ld = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.nix-ld-rs;
|
||||||
|
};
|
||||||
|
services.flatpak.enable = true;
|
||||||
|
systemd.services.flatpak-repo = {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = [ pkgs.flatpak ];
|
||||||
|
script = ''
|
||||||
|
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
# services.xrdp.enable = true;
|
||||||
|
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
|
||||||
|
# # services.xrdp.openFirewall = true;
|
||||||
|
|
||||||
|
# # Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
|
||||||
|
# # If no user is logged in, the machine will power down after 20 minutes.
|
||||||
|
# systemd.targets.sleep.enable = false;
|
||||||
|
# systemd.targets.suspend.enable = false;
|
||||||
|
# systemd.targets.hibernate.enable = false;
|
||||||
|
# systemd.targets.hybrid-sleep.enable = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
{ config
|
|
||||||
, lib
|
|
||||||
, inputs
|
|
||||||
, pkgs
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib.my-namespace) enabled;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# ../modules.nix
|
|
||||||
];
|
|
||||||
my-namespace.home = {
|
|
||||||
stream-tools = enabled;
|
|
||||||
gnome-customizations = enabled;
|
|
||||||
vesktop-appimage = enabled;
|
|
||||||
# networking = enabled;
|
|
||||||
# personal-apps = enabled;
|
|
||||||
# suites.laptop = enabled;
|
|
||||||
};
|
|
||||||
home = {
|
|
||||||
packages = [
|
|
||||||
pkgs.nil
|
|
||||||
pkgs.beeper
|
|
||||||
pkgs.mpv
|
|
||||||
pkgs.my-namespace.udev-steelseries
|
|
||||||
pkgs.qbittorrent
|
|
||||||
pkgs.hyfetch
|
|
||||||
pkgs.libreoffice
|
|
||||||
pkgs.localsend
|
|
||||||
# pkgs.vesktop
|
|
||||||
pkgs.obsidian
|
|
||||||
inputs.zen-browser.packages.x86_64-linux.default
|
|
||||||
# inputs.kwin-effects-forceblur.packages.${pkgs.stdenv.hostPlatform.system}.default # Archived.
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Auto-start linux-wallpaperengine for dual monitors via XDG autostart
|
|
||||||
xdg.configFile."autostart/linux-wallpaperengine.desktop".text = ''
|
|
||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Name=Wallpaper Engine
|
|
||||||
Exec=${pkgs.my-namespace.linux-wallpaperengine}/bin/linux-wallpaperengine --screen-root DP-1 --bg 2935872330 --screen-root DP-2 --bg 2935872330 -f 12
|
|
||||||
X-KDE-autostart-after=panel
|
|
||||||
X-KDE-StartupNotify=false
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{ config
|
|
||||||
, lib
|
|
||||||
, pkgs
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib.my-namespace) enabled;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# ../modules.nix
|
|
||||||
];
|
|
||||||
my-namespace.home = {
|
|
||||||
stream-tools = enabled;
|
|
||||||
gnome-customizations = enabled;
|
|
||||||
# networking = enabled;
|
|
||||||
# personal-apps = enabled;
|
|
||||||
# suites.laptop = enabled;
|
|
||||||
};
|
|
||||||
home = {
|
|
||||||
packages = [
|
|
||||||
pkgs.nil
|
|
||||||
pkgs.beeper
|
|
||||||
pkgs.my-namespace.udev-steelseries
|
|
||||||
pkgs.qbittorrent
|
|
||||||
#pkgs.vesktop
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
let
|
||||||
|
baseBackages = [
|
||||||
|
pkgs.vim
|
||||||
|
pkgs.nixpkgs-fmt
|
||||||
|
];
|
||||||
|
utilPackages = [
|
||||||
|
pkgs.wget
|
||||||
|
pkgs.curl
|
||||||
|
pkgs.git
|
||||||
|
pkgs.ffmpeg
|
||||||
|
];
|
||||||
|
haxeDevelopmentPackages = [
|
||||||
|
pkgs.haxe
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
mkPackages = {
|
||||||
|
packages = baseBackages ++ utilPackages ++ haxeDevelopmentPackages;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
let
|
||||||
|
baseBackages = [
|
||||||
|
pkgs.vim
|
||||||
|
pkgs.nixpkgs-fmt
|
||||||
|
];
|
||||||
|
utilPackages = [
|
||||||
|
pkgs.wget
|
||||||
|
pkgs.curl
|
||||||
|
pkgs.git
|
||||||
|
pkgs.ffmpeg
|
||||||
|
];
|
||||||
|
haxeDevelopmentPackages = [
|
||||||
|
pkgs.haxe
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
mkPackages = {
|
||||||
|
packages = baseBackages ++ utilPackages ++ haxeDevelopmentPackages;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
{lib, ...}: let
|
|
||||||
inherit (lib) mkOption strings;
|
|
||||||
inherit (lib.attrsets) filterAttrs mapAttrsToList;
|
|
||||||
inherit (lib.types) bool;
|
|
||||||
in rec {
|
|
||||||
disabled = {enable = false;};
|
|
||||||
enabled = {enable = true;};
|
|
||||||
ifThenElse = cond: t: f:
|
|
||||||
if cond
|
|
||||||
then t
|
|
||||||
else f;
|
|
||||||
mkOpt = type: default: description:
|
|
||||||
mkOption {inherit type default description;};
|
|
||||||
mkOpt' = type: default: mkOpt type default null;
|
|
||||||
mkBoolOpt = mkOpt bool;
|
|
||||||
mkBoolOpt' = mkOpt' bool;
|
|
||||||
mkPxeMenu = args:
|
|
||||||
''
|
|
||||||
UI menu.c32
|
|
||||||
TIMEOUT 300
|
|
||||||
''
|
|
||||||
+ strings.concatStringsSep "\n" (mapAttrsToList
|
|
||||||
(
|
|
||||||
name: value: ''
|
|
||||||
LABEL ${name}
|
|
||||||
MENU LABEL ${value.content.label}
|
|
||||||
KERNEL ${value.content.kernel}
|
|
||||||
append ${value.content.append}
|
|
||||||
''
|
|
||||||
)
|
|
||||||
(filterAttrs (_: v: v.condition) args));
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
# This is the merged library containing your namespaced library as well as all libraries from
|
|
||||||
# your flake's inputs.
|
|
||||||
lib
|
|
||||||
, # Your flake inputs are also available.
|
|
||||||
inputs
|
|
||||||
, # The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
namespace
|
|
||||||
, # Additionally, Snowfall Lib's own inputs are passed. You probably don't need to use this!
|
|
||||||
snowfall-inputs
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
# This will be available as `lib.my-namespace.mkPackages`.
|
|
||||||
mkPackages = {pkgs, ...}:
|
|
||||||
let
|
|
||||||
inherit pkgs;
|
|
||||||
# pkgs = namespace.;
|
|
||||||
# pkgs = snowfall-inputs.nixpkgs { system = "x86_64-linux"; config.allowUnfree = true; };
|
|
||||||
baseBackages = [
|
|
||||||
pkgs.vim
|
|
||||||
pkgs.nixpkgs-fmt
|
|
||||||
];
|
|
||||||
utilPackages = [
|
|
||||||
pkgs.wget
|
|
||||||
pkgs.curl
|
|
||||||
pkgs.git
|
|
||||||
pkgs.ffmpeg
|
|
||||||
];
|
|
||||||
haxeDevelopmentPackages = [
|
|
||||||
pkgs.haxe
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
packages = baseBackages ++ utilPackages ++ haxeDevelopmentPackages;
|
|
||||||
};
|
|
||||||
|
|
||||||
# my-scope = {
|
|
||||||
# # This will be available as `lib.my-namespace.my-scope.my-scoped-helper-function`.
|
|
||||||
# my-scoped-helper-function = x: x;
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{ config
|
|
||||||
, lib
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) mkEnableOption mkIf;
|
|
||||||
cfg = config.my-namespace.home.gnome-customizations;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.my-namespace.home.gnome-customizations = {
|
|
||||||
enable = mkEnableOption "Enable GNOME customizations";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
# GNOME settings
|
|
||||||
dconf.settings."org/gnome/desktop/wm/preferences".button-layout = "appmenu:,minimize,maximize,close";
|
|
||||||
dconf.settings."org/gnome/mutter".experimental-features = [ "scale-monitor-framebuffer" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
{
|
|
||||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
||||||
# as well as the libraries available from your flake's inputs.
|
|
||||||
lib
|
|
||||||
, # An instance of `pkgs` with your overlays and packages applied is also available.
|
|
||||||
pkgs
|
|
||||||
, # You also have access to your flake's inputs.
|
|
||||||
inputs
|
|
||||||
, # Additional metadata is provided by Snowfall Lib.
|
|
||||||
namespace
|
|
||||||
, # The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
system
|
|
||||||
, # The system architecture for this host (eg. `x86_64-linux`).
|
|
||||||
target
|
|
||||||
, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
|
||||||
format
|
|
||||||
, # A normalized name for the system target (eg. `iso`).
|
|
||||||
virtual
|
|
||||||
, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
|
||||||
systems
|
|
||||||
, # An attribute map of your defined hosts.
|
|
||||||
# All other arguments come from the module system.
|
|
||||||
config
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (lib.my-namespace) enabled;
|
|
||||||
|
|
||||||
imp = config.my-namespace.home.impermanence.enable;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
config = {
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
inetutils
|
|
||||||
hyfetch
|
|
||||||
tmux
|
|
||||||
# nerdfonts
|
|
||||||
p7zip
|
|
||||||
rclone
|
|
||||||
ripgrep
|
|
||||||
unzip
|
|
||||||
zip
|
|
||||||
];
|
|
||||||
sessionPath = [ "$HOME/bin" "$HOME/.local/bin" ];
|
|
||||||
shellAliases = {
|
|
||||||
# "df" = "duf -only local";
|
|
||||||
# "du" = "dust -xd1 --skip-total";
|
|
||||||
# # "ducks" = "du -chs * 2>/dev/null | sort -rh | head -11 && du -chs .* 2>/dev/null | sort -rh | head -11";
|
|
||||||
# "gmount" = "rclone mount google:/ ~/Drive/";
|
|
||||||
"df" = "df -h";
|
|
||||||
"nano" = "vim";
|
|
||||||
};
|
|
||||||
stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
# manual = {
|
|
||||||
# html.enable = false;
|
|
||||||
# manpages.enable = false;
|
|
||||||
# json.enable = false;
|
|
||||||
# };
|
|
||||||
programs = {
|
|
||||||
bash = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
enableVteIntegration = true;
|
|
||||||
};
|
|
||||||
dircolors = enabled;
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
nix-direnv = enabled;
|
|
||||||
};
|
|
||||||
home-manager = enabled;
|
|
||||||
};
|
|
||||||
services = { };
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkEnableOption mkIf;
|
|
||||||
cfg = config.my-namespace.home.stream-tools;
|
|
||||||
in {
|
|
||||||
options.my-namespace.home.stream-tools = {
|
|
||||||
enable = mkEnableOption "Enable the Stream Machine Tools";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.obs-studio = {
|
|
||||||
enable = true;
|
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
|
||||||
wlrobs
|
|
||||||
obs-backgroundremoval
|
|
||||||
obs-pipewire-audio-capture
|
|
||||||
obs-vaapi #optional AMD hardware acceleration
|
|
||||||
obs-gstreamer
|
|
||||||
obs-vkcapture
|
|
||||||
pkgs.my-namespace.droidcam-obs # Custom override with FFmpeg 6
|
|
||||||
];
|
|
||||||
};
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
config.programs.obs-studio.finalPackage
|
|
||||||
droidcam
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
let
|
|
||||||
inherit (lib) mkEnableOption mkIf;
|
|
||||||
cfg = config.my-namespace.home.vesktop-appimage;
|
|
||||||
vesktopVersion = "1.6.4";
|
|
||||||
|
|
||||||
vesktopAppImage = pkgs.runCommand "vesktop-appimage" { } ''
|
|
||||||
cp ${pkgs.fetchurl {
|
|
||||||
url = "https://github.com/Vencord/Vesktop/releases/download/v${vesktopVersion}/Vesktop-${vesktopVersion}.AppImage";
|
|
||||||
sha256 = "sha256-o7A8DBQyutONeLp5rstq9hQko2xxbvYZvGGM8/YOQ8s=";
|
|
||||||
}} $out
|
|
||||||
chmod +x $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
vesktopWrapped = pkgs.writeShellScriptBin "vesktop" ''
|
|
||||||
exec ${pkgs.appimage-run}/bin/appimage-run ${vesktopAppImage} "$@"
|
|
||||||
'';
|
|
||||||
|
|
||||||
vesktopIcon = pkgs.fetchurl {
|
|
||||||
url = "https://raw.githubusercontent.com/Vencord/Vesktop/main/build/icon.svg";
|
|
||||||
sha256 = "sha256-fQ+dvbPIb4AFd9f7JqIt7+twJdEMQF9jTTwrk5p1vn8=";
|
|
||||||
};
|
|
||||||
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.my-namespace.home.vesktop-appimage = {
|
|
||||||
enable = mkEnableOption "Install Vesktop (AppImage) with Vencord support";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
|
|
||||||
xdg.dataFile."icons/hicolor/scalable/apps/vesktop.svg".source = vesktopIcon;
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
pkgs.appimage-run
|
|
||||||
vesktopWrapped
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.desktopEntries.vesktop = {
|
|
||||||
name = "Vesktop";
|
|
||||||
comment = "Discord client with Vencord (AppImage)";
|
|
||||||
exec = "${vesktopWrapped}/bin/vesktop";
|
|
||||||
icon = "vesktop";
|
|
||||||
terminal = false;
|
|
||||||
type = "Application";
|
|
||||||
categories = [ "Network" "Chat" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
{ lib, pkgs, config, namespace, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.${namespace}.cs-tools;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.${namespace}.cs-tools = {
|
|
||||||
enable = lib.mkEnableOption "CS tools including CS Demo Manager and PostgreSQL";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
services.postgresql = {
|
|
||||||
enable = true;
|
|
||||||
ensureDatabases = [ "csdm" ];
|
|
||||||
ensureUsers = [{
|
|
||||||
name = "csdm";
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
my-namespace.cs-demo-manager
|
|
||||||
postgresql
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,158 +0,0 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.${namespace}.desktop-environment;
|
|
||||||
in {
|
|
||||||
|
|
||||||
options.${namespace}.desktop-environment = {
|
|
||||||
cinnamon = {
|
|
||||||
enable = lib.mkEnableOption "Cinnamon desktop environment";
|
|
||||||
};
|
|
||||||
xfce = {
|
|
||||||
enable = lib.mkEnableOption "XFCE desktop environment";
|
|
||||||
};
|
|
||||||
gnome = {
|
|
||||||
enable = lib.mkEnableOption "GNOME desktop environment";
|
|
||||||
};
|
|
||||||
kde = {
|
|
||||||
enable = lib.mkEnableOption "KDE Plasma desktop environment";
|
|
||||||
};
|
|
||||||
cosmic = {
|
|
||||||
enable = lib.mkEnableOption "Cosmic desktop environment";
|
|
||||||
};
|
|
||||||
hyprland = {
|
|
||||||
enable = lib.mkEnableOption "hyprland Wayland shell";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkMerge [
|
|
||||||
(lib.mkIf cfg.xfce.enable {
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
desktopManager = {
|
|
||||||
cinnamon.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR =
|
|
||||||
lib.mkForce "${pkgs.gnome.nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
|
|
||||||
})
|
|
||||||
(lib.mkIf cfg.xfce.enable {
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
desktopManager = {
|
|
||||||
xfce.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
xfce4-pulseaudio-plugin
|
|
||||||
xfce4-clipman-plugin
|
|
||||||
xfce4-screenshooter
|
|
||||||
xfce4-whiskermenu-plugin
|
|
||||||
thunar-archive-plugin
|
|
||||||
thunar-volman
|
|
||||||
gvfs
|
|
||||||
gnome-keyring
|
|
||||||
libgnome-keyring
|
|
||||||
];
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf cfg.gnome.enable {
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
services.desktopManager.gnome.enable = true;
|
|
||||||
services.gnome.gnome-remote-desktop.enable = true;
|
|
||||||
systemd.services.gnome-remote-desktop = {
|
|
||||||
wantedBy = [ "graphical.target" ]; # for starting the unit automatically at boot
|
|
||||||
};
|
|
||||||
# services.displayManager.autoLogin.enable = false;
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
3389
|
|
||||||
3390
|
|
||||||
];
|
|
||||||
|
|
||||||
# users.users.andreas.extraGroups = [ "sambashare" ];
|
|
||||||
# Enable Avahi (mDNS/DNS-SD) for discovery
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
# Enable GNOME sharing services
|
|
||||||
services.gnome.gnome-user-share.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
gnome-tweaks
|
|
||||||
gnome-software
|
|
||||||
gnomeExtensions.pop-shell
|
|
||||||
gnome-remote-desktop
|
|
||||||
glib-networking # Required gnome-remote-desktop dependency
|
|
||||||
];
|
|
||||||
systemd.user.services.gnome-remote-desktop.environment = {
|
|
||||||
VK_ICD_FILENAMES = "/dev/null";
|
|
||||||
LIBGL_ALWAYS_SOFTWARE = "1";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.gnome-remote-desktop.environment = {
|
|
||||||
VK_ICD_FILENAMES = "/dev/null";
|
|
||||||
LIBGL_ALWAYS_SOFTWARE = "1";
|
|
||||||
};
|
|
||||||
environment.sessionVariables.XDG_DATA_DIRS = lib.mkAfter [
|
|
||||||
"${pkgs.gnome-remote-desktop}/share"
|
|
||||||
];
|
|
||||||
environment.pathsToLink = [
|
|
||||||
"/share/gsettings-schemas"
|
|
||||||
"/share"
|
|
||||||
];
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf cfg.kde.enable {
|
|
||||||
services.xserver.enable = true;
|
|
||||||
services.desktopManager.plasma6.enable = true;
|
|
||||||
environment.sessionVariables = {
|
|
||||||
# Forces KWin to use the legacy DRM interface so "Allow Tearing" actually works
|
|
||||||
# KWIN_DRM_NO_AMS = "1";
|
|
||||||
# Disables the new triple buffering in Plasma 6.1+ to reduce latency
|
|
||||||
# KWIN_DRM_DISABLE_TRIPLE_BUFFERING = "1";
|
|
||||||
# KWIN_USE_HWCURSOR = "0";
|
|
||||||
# KWIN_DRM_USE_EGL_STREAMS = "0";
|
|
||||||
# MESA_VK_WSI_PRESENT_MODE = "immediate";
|
|
||||||
# vblank_mode = "0";
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
kdePackages.qtwebsockets
|
|
||||||
kdePackages.qtwebchannel
|
|
||||||
kdePackages.korganizer
|
|
||||||
kdePackages.akonadi
|
|
||||||
kdePackages.akonadi-calendar
|
|
||||||
kdePackages.akonadi-contacts
|
|
||||||
kdePackages.kaddressbook
|
|
||||||
kdePackages.kmail
|
|
||||||
kdePackages.kdepim-runtime
|
|
||||||
kdePackages.kontact
|
|
||||||
kdePackages.kidentitymanagement
|
|
||||||
kdePackages.libkdepim
|
|
||||||
kdePackages.kwin
|
|
||||||
kdePackages.plasma-workspace
|
|
||||||
gnome-keyring
|
|
||||||
libgnome-keyring
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(lib.mkIf cfg.cosmic.enable {
|
|
||||||
services.desktopManager.cosmic.enable = true;
|
|
||||||
services.desktopManager.cosmic.xwayland.enable = true;
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
|
|
||||||
gnome-keyring
|
|
||||||
libgnome-keyring
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(lib.mkIf cfg.hyprland.enable {
|
|
||||||
programs.hyprland.enable = true; # enable Hyprland
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
pkgs.kitty # required for the default Hyprland config
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
namespace,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
cfg = config.${namespace}.file-organization;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.${namespace}.file-organization = {
|
|
||||||
enable = lib.mkEnableOption "file organization software";
|
|
||||||
};
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
ranger
|
|
||||||
fsearch
|
|
||||||
qdirstat
|
|
||||||
veracrypt
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
{ config, lib, pkgs, namespace, options, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.${namespace}.gnome-keyring;
|
|
||||||
in {
|
|
||||||
options.${namespace}.gnome-keyring = {
|
|
||||||
enable = lib.mkEnableOption "Enable GNOME Keyring integration";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
# PAM configuration for automatic keyring unlock
|
|
||||||
security.pam.services.sddm.enableGnomeKeyring = true;
|
|
||||||
security.pam.services.login.enableGnomeKeyring = true;
|
|
||||||
security.pam.services.gdm.enableGnomeKeyring = true;
|
|
||||||
|
|
||||||
# Make KDE apps use GNOME Keyring as the Secret Service backend
|
|
||||||
environment.variables = {
|
|
||||||
# Set GNOME Keyring as the SSH agent
|
|
||||||
SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/keyring/ssh";
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
seahorse # GUI for managing the keyring
|
|
||||||
gcr # Keyring integration
|
|
||||||
libsecret # Secret Service API library for KDE apps
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.${namespace}.keychron-keyboard;
|
|
||||||
in {
|
|
||||||
options.${namespace}.keychron-keyboard = {
|
|
||||||
enable = lib.mkEnableOption "Enable Keychron keyboard configuration";
|
|
||||||
# Add additional options here, e.g. vendor/product IDs, keymaps, etc.
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
# Create the plugdev group and ensure users can access HID devices
|
|
||||||
users.groups.plugdev = {};
|
|
||||||
|
|
||||||
hardware.keyboard.qmk.keychronSupport = true;
|
|
||||||
services.udev.packages = with pkgs; [ qmk qmk-udev-rules ];
|
|
||||||
|
|
||||||
|
|
||||||
# Example udev rule or keychron-specific settings
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
# Atmel DFU
|
|
||||||
### ATmega16U2
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2fef", TAG+="uaccess"
|
|
||||||
### ATmega32U2
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff0", TAG+="uaccess"
|
|
||||||
### ATmega16U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff3", TAG+="uaccess"
|
|
||||||
### ATmega32U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff4", TAG+="uaccess"
|
|
||||||
### AT90USB64
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ff9", TAG+="uaccess"
|
|
||||||
### AT90USB162
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffa", TAG+="uaccess"
|
|
||||||
### AT90USB128
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2ffb", TAG+="uaccess"
|
|
||||||
|
|
||||||
# Input Club
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1c11", ATTRS{idProduct}=="b007", TAG+="uaccess"
|
|
||||||
|
|
||||||
# STM32duino
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1eaf", ATTRS{idProduct}=="0003", TAG+="uaccess"
|
|
||||||
# STM32 DFU
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", TAG+="uaccess"
|
|
||||||
|
|
||||||
# BootloadHID
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", TAG+="uaccess"
|
|
||||||
|
|
||||||
# USBAspLoader
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", TAG+="uaccess"
|
|
||||||
|
|
||||||
# USBtinyISP
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1782", ATTRS{idProduct}=="0c9f", TAG+="uaccess"
|
|
||||||
|
|
||||||
# ModemManager should ignore the following devices
|
|
||||||
# Atmel SAM-BA (Massdrop)
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="6124", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
|
|
||||||
# Caterina (Pro Micro)
|
|
||||||
## pid.codes shared PID
|
|
||||||
### Keyboardio Atreus 2 Bootloader
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="2302", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## Spark Fun Electronics
|
|
||||||
### Pro Micro 3V3/8MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9203", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### Pro Micro 5V/16MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9205", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### LilyPad 3V3/8MHz (and some Pro Micro clones)
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b4f", ATTRS{idProduct}=="9207", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## Pololu Electronics
|
|
||||||
### A-Star 32U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="1ffb", ATTRS{idProduct}=="0101", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## Arduino SA
|
|
||||||
### Leonardo
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### Micro
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## Adafruit Industries LLC
|
|
||||||
### Feather 32U4
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000c", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### ItsyBitsy 32U4 3V3/8MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000d", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### ItsyBitsy 32U4 5V/16MHz
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="239a", ATTRS{idProduct}=="000e", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
## dog hunter AG
|
|
||||||
### Leonardo
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0036", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
### Micro
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2a03", ATTRS{idProduct}=="0037", TAG+="uaccess", ENV{ID_MM_DEVICE_IGNORE}="1"
|
|
||||||
|
|
||||||
# hid_listen
|
|
||||||
KERNEL=="hidraw*", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
|
|
||||||
|
|
||||||
# hidraw devices for WebHID (Keychron Launcher, VIA)
|
|
||||||
SUBSYSTEM=="hidraw", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
|
|
||||||
|
|
||||||
# hid bootloaders
|
|
||||||
## QMK HID
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="03eb", ATTRS{idProduct}=="2067", TAG+="uaccess"
|
|
||||||
## PJRC's HalfKay
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="0478", TAG+="uaccess"
|
|
||||||
|
|
||||||
# APM32 DFU
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="314b", ATTRS{idProduct}=="0106", TAG+="uaccess"
|
|
||||||
|
|
||||||
# GD32V DFU
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="28e9", ATTRS{idProduct}=="0189", TAG+="uaccess"
|
|
||||||
|
|
||||||
# WB32 DFU
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="342d", ATTRS{idProduct}=="dfa0", TAG+="uaccess"
|
|
||||||
|
|
||||||
# AT32 DFU
|
|
||||||
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e3c", ATTRS{idProduct}=="df11", TAG+="uaccess"
|
|
||||||
'';
|
|
||||||
#
|
|
||||||
# home.file.".config/some-config".text = ''
|
|
||||||
# # keyboard-related configuration
|
|
||||||
# '';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
############################################
|
|
||||||
#
|
|
||||||
# Shared System Configuration module that's always enabled by default courtesy of snowfall lib
|
|
||||||
#
|
|
||||||
############################################
|
|
||||||
{
|
|
||||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
||||||
# as well as the libraries available from your flake's inputs.
|
|
||||||
lib
|
|
||||||
, # An instance of `pkgs` with your overlays and packages applied is also available.
|
|
||||||
pkgs
|
|
||||||
, # You also have access to your flake's inputs.
|
|
||||||
inputs
|
|
||||||
, # Additional metadata is provided by Snowfall Lib.
|
|
||||||
namespace
|
|
||||||
, # The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
system
|
|
||||||
, # The system architecture for this host (eg. `x86_64-linux`).
|
|
||||||
target
|
|
||||||
, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
|
||||||
format
|
|
||||||
, # A normalized name for the system target (eg. `iso`).
|
|
||||||
virtual
|
|
||||||
, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
|
||||||
systems
|
|
||||||
, # An attribute map of your defined hosts.
|
|
||||||
|
|
||||||
# All other arguments come from the module system.
|
|
||||||
config
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) mkIf;
|
|
||||||
inherit (lib.my-namespace) enabled;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
config = {
|
|
||||||
boot = { };
|
|
||||||
console = { };
|
|
||||||
environment = {
|
|
||||||
systemPackages =
|
|
||||||
(with pkgs; [
|
|
||||||
age
|
|
||||||
wget
|
|
||||||
sops
|
|
||||||
# bitwarden-desktop #replaced bitwarden
|
|
||||||
bitwarden-cli
|
|
||||||
cowsay
|
|
||||||
remmina
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.${namespace}.performance-tuning;
|
|
||||||
in {
|
|
||||||
options.${namespace}.performance-tuning.enable = lib.mkEnableOption "performance tuning settings for gaming and general use";
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
boot.kernelParams = [
|
|
||||||
"nvme_core.default_ps_max_latency_us=0"
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.kernel.sysctl = {
|
|
||||||
"vm.swappiness" = 10;
|
|
||||||
"vm.dirty_ratio" = 10;
|
|
||||||
"vm.dirty_background_ratio" = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.pipewire.extraConfig.pipewire."context.properties" = {
|
|
||||||
"default.clock.quantum" = 256;
|
|
||||||
"default.clock.min-quantum" = 128;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
{
|
|
||||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
||||||
# as well as the libraries available from your flake's inputs.
|
|
||||||
lib,
|
|
||||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
|
||||||
pkgs,
|
|
||||||
# You also have access to your flake's inputs.
|
|
||||||
inputs,
|
|
||||||
# Additional metadata is provided by Snowfall Lib.
|
|
||||||
# The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
namespace,
|
|
||||||
# The system architecture for this host (eg. `x86_64-linux`).
|
|
||||||
system,
|
|
||||||
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
|
||||||
target,
|
|
||||||
# A normalized name for the system target (eg. `iso`).
|
|
||||||
format,
|
|
||||||
# A boolean to determine whether this system is a virtual target using nixos-generators.
|
|
||||||
virtual,
|
|
||||||
# An attribute map of your defined hosts.
|
|
||||||
systems,
|
|
||||||
# All other arguments come from the system system.
|
|
||||||
config
|
|
||||||
, ...
|
|
||||||
}:{
|
|
||||||
config = {
|
|
||||||
# programs.gamescope = {
|
|
||||||
# enable = true;
|
|
||||||
# capSysNice = true;
|
|
||||||
# };
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
protonup-ng # Tool to install and manage Proton-GE
|
|
||||||
lutris
|
|
||||||
faugus-launcher
|
|
||||||
vkd3d
|
|
||||||
dxvk
|
|
||||||
protontricks
|
|
||||||
mangohud
|
|
||||||
vkbasalt
|
|
||||||
gamescope
|
|
||||||
corefonts
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.uinput.enable = true;
|
|
||||||
users.users.andreas.extraGroups = [ "input" ];
|
|
||||||
|
|
||||||
programs.gamescope.enable = true;
|
|
||||||
programs.steam.gamescopeSession = {
|
|
||||||
enable = true;
|
|
||||||
args = [
|
|
||||||
"-w" "1920"
|
|
||||||
"-h" "1080"
|
|
||||||
"-r" "172"
|
|
||||||
"-e" # Enable steam integration
|
|
||||||
"--steam"
|
|
||||||
"--prefer-outpout DP-4"
|
|
||||||
"--prefer-vk-device 8086:e20b" # lspci -nn | grep VGA
|
|
||||||
];
|
|
||||||
env = {
|
|
||||||
# WLR_RENDERER = "vulkan";
|
|
||||||
# DXVK_HDR = "0 ";
|
|
||||||
# ENABLE_GAMESCOPE_WSI = "0";
|
|
||||||
# WINE_FULLSCREEN_FSR = "1";
|
|
||||||
# SDL_VIDEODRIVER = "wayland,x11"; # Games allegedly prefer X11
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.steam.override {
|
|
||||||
extraPkgs = pkgs: with pkgs; [
|
|
||||||
gamemode
|
|
||||||
noto-fonts-color-emoji
|
|
||||||
];
|
|
||||||
extraEnv = {
|
|
||||||
# SDL_VIDEODRIVER = "wayland,x11";
|
|
||||||
# SDL_VIDEODRIVER = "x11,wayland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
|
||||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
|
||||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
{ lib, pkgs, inputs, config, namespace, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
# Import the plugin as a package derivation from your local repo
|
|
||||||
# Pass the 'inputs' parameter explicitly to make wallpaper-engine-plugin-src available
|
|
||||||
wallpaperEnginePkg = pkgs.callPackage ../../../packages/wallpaper-engine-kde-plugin/default.nix { inherit inputs; };
|
|
||||||
in {
|
|
||||||
options.${namespace}.wallpaper-engine-kde-plugin.enable =
|
|
||||||
lib.mkEnableOption "Enable Wallpaper Engine KDE plugin";
|
|
||||||
|
|
||||||
config = lib.mkIf config.${namespace}.wallpaper-engine-kde-plugin.enable {
|
|
||||||
# Add the imported package and helper script to systemPackages
|
|
||||||
environment.systemPackages = [
|
|
||||||
wallpaperEnginePkg
|
|
||||||
(pkgs.writeShellScriptBin "wallpaper-engine-kde-setup" ''
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
STEAM_DIR="$HOME/.local/share/Steam"
|
|
||||||
WORKSHOP_PATH="$STEAM_DIR/steamapps/workshop/content/431960"
|
|
||||||
|
|
||||||
echo "Wallpaper Engine KDE Plugin Setup Helper"
|
|
||||||
echo "========================================"
|
|
||||||
|
|
||||||
# Check if Steam directory exists
|
|
||||||
if [ -d "$STEAM_DIR" ]; then
|
|
||||||
echo "✅ Steam directory found at: $STEAM_DIR"
|
|
||||||
|
|
||||||
if [ -d "$WORKSHOP_PATH" ]; then
|
|
||||||
echo "✅ Workshop content directory found at: $WORKSHOP_PATH"
|
|
||||||
echo " You can use this path in the wallpaper settings."
|
|
||||||
else
|
|
||||||
echo "⚠️ Workshop content directory not found at the expected location."
|
|
||||||
echo " Please locate your Steam workshop content for Wallpaper Engine (app ID 431960)"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "⚠️ Steam directory not found at: $STEAM_DIR"
|
|
||||||
echo " Please install Steam and Wallpaper Engine first."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check symlinks
|
|
||||||
if [ -L "$HOME/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde" ]; then
|
|
||||||
echo "✅ Plugin symlink is correctly set up"
|
|
||||||
else
|
|
||||||
echo "⚠️ Plugin symlink not found, attempting to create it..."
|
|
||||||
mkdir -p "$HOME/.local/share/plasma/wallpapers"
|
|
||||||
ln -sf /run/current-system/sw/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde \
|
|
||||||
"$HOME/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde"
|
|
||||||
echo " Done! Symlink created."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "To use Wallpaper Engine wallpapers in KDE:"
|
|
||||||
echo "1. Right-click on desktop → Configure Desktop and Wallpaper"
|
|
||||||
echo "2. Select 'Wallpaper Engine' from the wallpaper type list"
|
|
||||||
echo "3. Set the path to your workshop content directory"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
|
|
||||||
systemd.user.services.wallpaperEngineSymlink = {
|
|
||||||
description = "Symlink Wallpaper Engine plugin for Plasma";
|
|
||||||
wantedBy = [ "graphical-session.target" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p %h/.local/share/plasma/wallpapers";
|
|
||||||
ExecStart = "${pkgs.coreutils}/bin/ln -sfn /run/current-system/sw/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde %h/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{ ... }:
|
|
||||||
|
|
||||||
final: prev: {
|
|
||||||
openldap = prev.openldap.overrideAttrs {
|
|
||||||
doCheck = !prev.stdenv.hostPlatform.isi686;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,100 +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'
|
|
||||||
|
|
||||||
/* 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;
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
{ lib
|
|
||||||
, stdenv
|
|
||||||
, fetchurl
|
|
||||||
, appimageTools
|
|
||||||
, postgresql
|
|
||||||
, procps
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
pname = "cs-demo-manager";
|
|
||||||
version = "3.18.2";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://github.com/akiver/cs-demo-manager/releases/download/v${version}/CS-Demo-Manager-${version}.AppImage";
|
|
||||||
hash = "sha256-REEhqvfYSKD7EyIYJVlbkQu0h5FZcofc8X7Zhu1xZnA="; # You need to add the hash after first build attempt
|
|
||||||
};
|
|
||||||
|
|
||||||
appimageContents = appimageTools.extract {
|
|
||||||
inherit pname version src;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
appimageTools.wrapType2 {
|
|
||||||
inherit pname version src;
|
|
||||||
|
|
||||||
extraPkgs = pkgs: [ postgresql procps ];
|
|
||||||
|
|
||||||
extraInstallCommands = ''
|
|
||||||
install -m 444 -D ${appimageContents}/cs-demo-manager.desktop $out/share/applications/cs-demo-manager.desktop
|
|
||||||
install -m 444 -D ${appimageContents}/cs-demo-manager.png $out/share/icons/hicolor/512x512/apps/cs-demo-manager.png
|
|
||||||
|
|
||||||
substituteInPlace $out/share/applications/cs-demo-manager.desktop \
|
|
||||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "An application to manage Counter-Strike demos";
|
|
||||||
homepage = "https://github.com/akiver/cs-demo-manager";
|
|
||||||
license = licenses.gpl2Plus;
|
|
||||||
platforms = [ "x86_64-linux" ];
|
|
||||||
maintainers = [ ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
stdenv,
|
|
||||||
fetchurl,
|
|
||||||
autoPatchelfHook,
|
|
||||||
namespace,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "droidcam-obs";
|
|
||||||
version = "2.4.1";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://github.com/dev47apps/droidcam-obs-plugin/releases/download/${version}/droidcam_obs_${version}_linux_x86_64.zip";
|
|
||||||
sha256 = "sha256-18IjC3+WR5XLo464RuwAtWRNSpQcsnarXu56CrxCMhM=";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgs.unzip autoPatchelfHook ];
|
|
||||||
|
|
||||||
buildInputs = with pkgs; [
|
|
||||||
stdenv.cc.cc.lib
|
|
||||||
obs-studio
|
|
||||||
];
|
|
||||||
|
|
||||||
dontBuild = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
mkdir -p $out/lib/obs-plugins
|
|
||||||
mkdir -p $out/share/obs/obs-plugins/droidcam-obs
|
|
||||||
|
|
||||||
cp bin/64bit/*.so $out/lib/obs-plugins/
|
|
||||||
cp -r data/* $out/share/obs/obs-plugins/droidcam-obs/
|
|
||||||
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "DroidCam OBS Plugin - Use your phone as a camera in OBS (FFmpeg 7 compatible)";
|
|
||||||
homepage = "https://www.dev47apps.com/obs/";
|
|
||||||
license = licenses.unfree;
|
|
||||||
platforms = platforms.linux;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,135 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitHub,
|
|
||||||
autoPatchelfHook,
|
|
||||||
cmake,
|
|
||||||
file,
|
|
||||||
pkg-config,
|
|
||||||
python3,
|
|
||||||
SDL2,
|
|
||||||
SDL2_mixer,
|
|
||||||
cef-binary,
|
|
||||||
egl-wayland,
|
|
||||||
ffmpeg,
|
|
||||||
fftw,
|
|
||||||
glew,
|
|
||||||
glfw,
|
|
||||||
glm,
|
|
||||||
gmp,
|
|
||||||
kissfftFloat,
|
|
||||||
libxau,
|
|
||||||
libxdmcp,
|
|
||||||
libxpm,
|
|
||||||
libxrandr,
|
|
||||||
libxxf86vm,
|
|
||||||
libdecor,
|
|
||||||
libffi,
|
|
||||||
libglut,
|
|
||||||
libpng,
|
|
||||||
libpulseaudio,
|
|
||||||
lz4,
|
|
||||||
mpv,
|
|
||||||
wayland,
|
|
||||||
wayland-protocols,
|
|
||||||
wayland-scanner,
|
|
||||||
zlib,
|
|
||||||
nix-update-script,
|
|
||||||
inputs,
|
|
||||||
namespace, ...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cef = cef-binary.override {
|
|
||||||
version = "135.0.17"; # follow upstream. https://github.com/Almamu/linux-wallpaperengine/blob/b39f12757908eda9f4c1039613b914606568bb84/CMakeLists.txt#L47
|
|
||||||
gitRevision = "cbc1c5b";
|
|
||||||
chromiumVersion = "135.0.7049.52";
|
|
||||||
|
|
||||||
srcHashes = {
|
|
||||||
aarch64-linux = "sha256-LK5JvtcmuwCavK7LnWmMF2UDpM5iIZOmsuZS/t9koDs=";
|
|
||||||
x86_64-linux = "sha256-JKwZgOYr57GuosM31r1Lx3DczYs35HxtuUs5fxPsTcY=";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
|
||||||
pname = "linux-wallpaperengine";
|
|
||||||
version = "0-unstable-2025-12-19";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "Almamu";
|
|
||||||
repo = "linux-wallpaperengine";
|
|
||||||
rev = "f79c29f067b2613895419e351033582464577154";
|
|
||||||
fetchSubmodules = true;
|
|
||||||
hash = "sha256-AISdouVqMXTYErQoT7oM5H+vlrw03NtpI9FqDwZ0J9A=";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
autoPatchelfHook
|
|
||||||
cmake
|
|
||||||
file
|
|
||||||
pkg-config
|
|
||||||
python3
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
SDL2
|
|
||||||
SDL2_mixer
|
|
||||||
egl-wayland
|
|
||||||
ffmpeg
|
|
||||||
fftw
|
|
||||||
glew
|
|
||||||
glfw
|
|
||||||
glm
|
|
||||||
gmp
|
|
||||||
kissfftFloat
|
|
||||||
libxau
|
|
||||||
libxdmcp
|
|
||||||
libxpm
|
|
||||||
libxrandr
|
|
||||||
libxxf86vm
|
|
||||||
libdecor
|
|
||||||
libffi
|
|
||||||
libglut
|
|
||||||
libpng
|
|
||||||
libpulseaudio
|
|
||||||
lz4
|
|
||||||
mpv
|
|
||||||
wayland
|
|
||||||
wayland-protocols
|
|
||||||
wayland-scanner
|
|
||||||
zlib
|
|
||||||
];
|
|
||||||
|
|
||||||
cmakeFlags = [
|
|
||||||
"-DCEF_ROOT=${cef}"
|
|
||||||
"-DCMAKE_INSTALL_PREFIX=${placeholder "out"}/share/linux-wallpaperengine"
|
|
||||||
];
|
|
||||||
|
|
||||||
postInstall = ''
|
|
||||||
rm -rf $out/bin $out/lib $out/include
|
|
||||||
chmod 755 $out/share/linux-wallpaperengine/linux-wallpaperengine
|
|
||||||
mkdir $out/bin
|
|
||||||
ln -s $out/share/linux-wallpaperengine/linux-wallpaperengine $out/bin/linux-wallpaperengine
|
|
||||||
'';
|
|
||||||
|
|
||||||
preFixup = ''
|
|
||||||
find $out/share/linux-wallpaperengine -type f -exec file {} \; | grep 'ELF' | cut -d: -f1 | while read -r elf_file; do
|
|
||||||
patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$elf_file"
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
|
|
||||||
|
|
||||||
meta = {
|
|
||||||
description = "Wallpaper Engine backgrounds for Linux";
|
|
||||||
homepage = "https://github.com/Almamu/linux-wallpaperengine";
|
|
||||||
license = lib.licenses.gpl3Plus;
|
|
||||||
mainProgram = "linux-wallpaperengine";
|
|
||||||
maintainers = [ ];
|
|
||||||
platforms = [
|
|
||||||
"x86_64-linux"
|
|
||||||
"aarch64-linux"
|
|
||||||
];
|
|
||||||
hydraPlatforms = [ "x86_64-linux" ]; # Hydra "aarch64-linux" fails with "Output limit exceeded"
|
|
||||||
};
|
|
||||||
})
|
|
||||||
@@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
{
|
|
||||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
||||||
# as well as the libraries available from your flake's inputs.
|
|
||||||
lib,
|
|
||||||
# You also have access to your flake's inputs.
|
|
||||||
inputs,
|
|
||||||
|
|
||||||
# The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
namespace,
|
|
||||||
|
|
||||||
# All other arguments come from NixPkgs. You can use `pkgs` to pull packages or helpers
|
|
||||||
# programmatically or you may add the named attributes as arguments here.
|
|
||||||
pkgs,
|
|
||||||
stdenv,
|
|
||||||
fetchFromGitHub,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
pname = "steelseries-udev-rules";
|
|
||||||
version = "unstable-2024-11-10";
|
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "MiddleMan5";
|
|
||||||
repo = "steelseries-linux";
|
|
||||||
rev = "d93dfdb6daeec150578e85e25b2e9df79e9539b7";
|
|
||||||
sha256 = "sha256-yPw8QFKhlqb6lxQyYjBz34pEEfTVk1Yp9jFWdX5yH2k=";
|
|
||||||
};
|
|
||||||
|
|
||||||
dontBuild = true;
|
|
||||||
dontConfigure = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out/lib/udev/rules.d
|
|
||||||
cp resources/98-steelseries.rules $out/lib/udev/rules.d/98-steelseries.rules
|
|
||||||
mkdir -p $out/etc/udev/rules.d
|
|
||||||
cp resources/98-steelseries-init.py $out/etc/udev/rules.d/98-steelseries-init.py
|
|
||||||
chmod +x $out/etc/udev/rules.d/98-steelseries-init.py
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "udev rules for Steelseries devices";
|
|
||||||
license = licenses.unfree;
|
|
||||||
maintainers = with maintainers; [ asymmetric ];
|
|
||||||
platforms = platforms.linux;
|
|
||||||
homepage = "https://github.com/MiddleMan5/steelseries-linux";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
private-keys:
|
|
||||||
andreas: ENC[AES256_GCM,data:UMOMU5vd+kOvReBP+noCPopsP90uAx0UM5mLgsXX1obks3DvcW28yVpLR952CroDzUOYwpkQ+7MheBznZxVfG6+b36rzphIUyDXArix3c90mak+4fhkUFAxsAW2VeKzUTGEBIUiejtfW4sBaHoQVWpDBSLbGajB9GzBXspNR+J/nriD8xas9ZkvYvFM4BIKM5vFNQxCGUy44IyHffxtX9kHjboiSeIgK7Gj1hA4iC/byIBqTLzJOCBHQs3irs/CSbZgFR7MFuiqR2ZWVdJ1dKAr9fejd36muymsutVUDzTsq/P1Id0YlgnYVcpJxAMHKq8QEZu8yNLEzkr/QMxs5Z2Bu93CkiJDAGXJZvtipfLX0UtIkResCLBD40EKty8U2OnKwm4k3xzJoHRTZ3qVnJQGESYHTZHHumRRcDYJnQBL6iav50mG0KS0mfcoetoDTpQfxsi3OnLO7kjSP2fE8sSJRi363nfciBwH/TTf911HhD5ruOo3bQeryjtGN8Y+PAqvrILiIKPODvoRVqaka,iv:lvlaQwEzDpvdSjH6Z4NrzABifyVP5jyzERHP72CSbis=,tag:rmSINraNXFZElfFHZDqeeQ==,type:str]
|
|
||||||
andreas-password: ENC[AES256_GCM,data:XBvfrBSrlKzpO9vgmwQYJshlJH1OCMrcdfYMvp32ZOFZSf4/GrM/FRaatS7to+0ZgJlLNt+npSK0nwV8NXvwgHgN8bsuDiL7KQ==,iv:lD0ruX5AVKVfdA0/vpeUAPf5cTSExyaF8VWebFkbXV8=,tag:nAuwEkHGtlEzu8Qbe0ECdA==,type:str]
|
|
||||||
#ENC[AES256_GCM,data:aX2EVkOK7ivoDTzSMmonY64dU6mnRjE83sA3MFIPnzeJ5snZN8WY9PF1CmkDU/ZVB+j9Law=,iv:sPfVyBuGCyd/Y9Lw9cl0akA2IUE5/Yi5C07dh6Ioyu0=,tag:tOT5uHVdgYG+/E4ye0QcFg==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:djH8vAA+TvvbA/Jsuvca7E4o6pYTfKGGdK4=,iv:5Dw0niDhi7P6P9XRz2qgSL3CxpiXBtIsekOMycroLrA=,tag:OSvPPgq0kV4JskrQ86Qp5A==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:C1BstOPXnCf4Cr8UlanCegA=,iv:k9Me959xb6Weg/yArAIg5kWH36se/yyGWNQUu314uw0=,tag:x0bTh0bsYxbCX5GObsGI5g==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:Q0vsUrzlOgDICeIxXtc=,iv:gR8sYrtE/v9GGDEO2nj/v5IHr9ycXhvv1VcB/dEH/FU=,tag:FBde9vkRM/drFtpTWfLcNg==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:LoKuLBSze19z0U/45DBFt6aEJBs=,iv:Btk0sBgj8h5Qk5eYNwPHULuhPu0nXSXE2iR4UVFcBeA=,tag:S2I9HQkeo/jJboy44vrgCw==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:wDZ6Ln5teASPxXPvQGRZCdBIvfY=,iv:Qnx32skeDMB21GwhXd5fImkHS+y+HUOdNvbMT2mpy6A=,tag:BKl04542M8rH6BpFERqHZg==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:f+g7qdm8xf/wDhQqlnzIdmHhzfOG73VWfdw=,iv:/kDspwnXH7QfhzUuHATQTniLm/ZX6mo/QGxyQXdubcY=,tag:muoXeMNHb5vqm8IoC6Gl4A==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:42kR+DANphdxNVWNlxePU8U=,iv:JeZgMtb7a+/7V5hruQIHio0Aj+ThpHZwajx10e0rqOA=,tag:Ln+7DFl6+aq4YLZ8GK9qOg==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:DjK/fZDWEaa2BA==,iv:AnceR62V3OJrn5utgdffMcC+mWdxsUYMYn6454SVCsY=,tag:MRa8cDMEMGtBCxvqcKy/0Q==,type:comment]
|
|
||||||
#ENC[AES256_GCM,data:jqzidzai+6ShhzM=,iv:PDjUgLaoFVxAWBLXfWkXRzBp5BuvGU7DCorRYY6dan0=,tag:dKa2O7n/jno/M5nzCzCD/w==,type:comment]
|
|
||||||
sops:
|
|
||||||
kms: []
|
|
||||||
gcp_kms: []
|
|
||||||
azure_kv: []
|
|
||||||
hc_vault: []
|
|
||||||
age:
|
|
||||||
- recipient: age19j24x89dfh4f7v58c8k64yupqas4f7qkkyper7yj9dd7vqwvvq0qkyvhxk
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4U204eXIyaDJFMXIweXp1
|
|
||||||
NEhoYU5qa3B5Q1VpODNsSEpuT0txRWpuVDM0CmptVHNFQkpWTkJ2M3B4dWpWN0s4
|
|
||||||
ZjRuc3BhckVLSzFuOGJ3WTB0YnRRRDgKLS0tIHlaSUxITUlGU3VaRWZFbENUTVY2
|
|
||||||
SWVwUGVxcGJscG5PalphZFVIS1ZjY2MKi4VvrNW1AH+fJaI/rzOltPylSiY1z3nS
|
|
||||||
ebrYdpyM5KKQ46uezvU4J3Qau/Inv8CkZ72vHlQ6EK2kmmZZLszwJg==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1ma8x6wugvc40mkst33mejq0m6r44jk6zwjjun3znyer5nztgn9vs0nwjx4
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyVHVwMEZjVk8xMTNIekF1
|
|
||||||
ZFlZbFhvOTJSbVN4ZmorSmFCbkxBUUxOOERJCjBjMkdxQ0V4OXEwdGF2Sno4VTh2
|
|
||||||
MURQMUhQV083M3lpREFRM2Qza3JLN0kKLS0tIEFoeUVsL3poajljMDEwTCtWcXRD
|
|
||||||
Y3NHNmVDZFZuNjlUUDdMa3N3ZVNTWkUKeO4sT0ZyTAyrMKj27fbFhQZ+bDMru6Bk
|
|
||||||
j4Im41l9ClpIVQt8iz61mwKrm+QmBA9r1aL34u3lGQyKBOk4vq/m9A==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- recipient: age1s5qwsuc3e4m3c4w5hl6tyja70w273gr60j9j9dcpc6mz69lemg3qpwud3h
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUT3dKNk4rSVZUck5LZ2t1
|
|
||||||
eUhPSXBURUFGbnU4NUtjMVVpeGI5eVI1SVc4CkdTY25jTy91VFhLS1F3V3ZzM1A4
|
|
||||||
OGMxWmtWd1lVU3dZcG8xWlRwYkorSU0KLS0tIE12WlFyUWZ0dHYvTEd0N0tPWUt1
|
|
||||||
bldpMnp5cnpXN2J5MEc5cC9DZktEekUKC6sei7v252fZyW8sd1xuZDjwoJFCKGot
|
|
||||||
t9f+jUDOx5wGlH53Fd2jCRArKZkQ850sFj79Lh2Rx6wbDj1Ks5XcVA==
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
lastmodified: "2024-12-10T04:12:19Z"
|
|
||||||
mac: ENC[AES256_GCM,data:AcuCxKGm9xLgn/gnk0XDVtLM5PWQvgGd+qXusuvwCUV4ln1//Lpwpp3TL0mEMdwEcFOdCasW4A10rGpCoBqKsckroiUSEB0G2p0vrD3b3Vmo804JYcKmSZ85InZCXUWenfOTEzx/A1ruqSBSkRYro+NdyZ/+JXQVXnTLCPesgwE=,iv:UPRNsfeUKnml9OFkkqrI0fI4f/RWN2ovTsaItwT8Y0c=,tag:75NEPjeAXUwlCPGbLPhPFg==,type:str]
|
|
||||||
pgp: []
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.9.1
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
let
|
|
||||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
|
|
||||||
pkgs = import nixpkgs { config = { }; overlays = [ ]; };
|
|
||||||
in
|
|
||||||
|
|
||||||
pkgs.mkShellNoCC {
|
|
||||||
packages = with pkgs; [
|
|
||||||
cowsay
|
|
||||||
lolcat
|
|
||||||
# bitwarden-desktop #replaced bitwarden
|
|
||||||
bitwarden-cli
|
|
||||||
sops
|
|
||||||
];
|
|
||||||
|
|
||||||
GREETING = "Hello, Nix!";
|
|
||||||
|
|
||||||
shellHook = ''
|
|
||||||
echo $GREETING | cowsay | lolcat
|
|
||||||
bw config server https://vault.subsonics.nl
|
|
||||||
echo "please enter bitwarden email"
|
|
||||||
read BW_USER
|
|
||||||
echo "please enter bitwarden password"
|
|
||||||
read -s BW_PASSWORD
|
|
||||||
bw login $BW_USER $BW_PASSWORD
|
|
||||||
BW_SESSION="$(bw unlock $BW_PASSWORD --raw)"
|
|
||||||
mkdir -p ~/.config/sops/age
|
|
||||||
bw get attachment keys.txt --itemid ee6a90b0-4120-46f7-a1c6-9648316e43d5 --output ~/.config/sops/age/keys.txt
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
||||||
];
|
];
|
||||||
networking.hostName = "drivebystation-nixos-wsl";
|
|
||||||
|
|
||||||
# Enable Experimental Features
|
# Enable Experimental Features
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
+11
-6
@@ -44,25 +44,29 @@
|
|||||||
LC_TELEPHONE = "nl_NL.UTF-8";
|
LC_TELEPHONE = "nl_NL.UTF-8";
|
||||||
LC_TIME = "nl_NL.UTF-8";
|
LC_TIME = "nl_NL.UTF-8";
|
||||||
};
|
};
|
||||||
# Enable the X11 windowing system
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
# Enable the GNOME Desktop Environment
|
|
||||||
|
# Enable the GNOME Desktop Environment.
|
||||||
services.xserver.displayManager.gdm.enable = true;
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
services.xserver.desktopManager.gnome.enable = true;
|
services.xserver.desktopManager.gnome.enable = true;
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
services.xserver.xkb = {
|
services.xserver.xkb = {
|
||||||
layout = "us";
|
layout = "us";
|
||||||
variant = "intl";
|
variant = "intl";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure console keymap
|
# Configure console keymap
|
||||||
console.keyMap = "us-acentos";
|
console.keyMap = "us-acentos";
|
||||||
# Enable CUPS to print documents
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
services.printing.enable = true;
|
services.printing.enable = true;
|
||||||
# Enable sound with pulse (pipewire)
|
|
||||||
|
# Enable sound with pipewire.
|
||||||
hardware.pulseaudio.enable = false;
|
hardware.pulseaudio.enable = false;
|
||||||
# Enable realtimekit (pulse requirement)
|
|
||||||
security.rtkit.enable = true;
|
security.rtkit.enable = true;
|
||||||
# Configure pipewire service
|
|
||||||
services.pipewire = {
|
services.pipewire = {
|
||||||
enable = true;
|
enable = true;
|
||||||
alsa.enable = true;
|
alsa.enable = true;
|
||||||
@@ -102,4 +106,5 @@
|
|||||||
# Before changing this value read the documentation for this option
|
# Before changing this value read the documentation for this option
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "24.05"; # Did you read the comment?
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,293 +0,0 @@
|
|||||||
# Edit this configuration file to define what should be installed on
|
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
|
||||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
|
||||||
|
|
||||||
{
|
|
||||||
# config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./tigervnc.nix
|
|
||||||
./hardware/hardware-configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Bootloader.
|
|
||||||
# boot.loader.systemd-boot.enable = true; # managed by lanzaboote
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
networking.hostName = "drivebystation-nix"; # Define your hostname.
|
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
# Set your time zone.
|
|
||||||
time.timeZone = "Europe/Amsterdam";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "nl_NL.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "nl_NL.UTF-8";
|
|
||||||
LC_MEASUREMENT = "nl_NL.UTF-8";
|
|
||||||
LC_MONETARY = "nl_NL.UTF-8";
|
|
||||||
LC_NAME = "nl_NL.UTF-8";
|
|
||||||
LC_NUMERIC = "nl_NL.UTF-8";
|
|
||||||
LC_PAPER = "nl_NL.UTF-8";
|
|
||||||
LC_TELEPHONE = "nl_NL.UTF-8";
|
|
||||||
LC_TIME = "nl_NL.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
services = {
|
|
||||||
# Enable Gnome Session
|
|
||||||
displayManager.gdm.enable = false;
|
|
||||||
displayManager.sddm.enable = true;
|
|
||||||
displayManager.sddm.wayland.enable = true;
|
|
||||||
displayManager.autoLogin = {
|
|
||||||
enable = false;
|
|
||||||
user = "andreas";
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager.cosmic-greeter.enable = false;
|
|
||||||
displayManager.defaultSession = "cinnamon";
|
|
||||||
|
|
||||||
xserver = {
|
|
||||||
enable = true; # Enable the deprecated X11 teletype terminal connection system.
|
|
||||||
# Configure Display Manager
|
|
||||||
displayManager = {
|
|
||||||
lightdm.enable = false;
|
|
||||||
};
|
|
||||||
# Configure keymap in X11
|
|
||||||
xkb = {
|
|
||||||
layout = "us";
|
|
||||||
variant = "intl";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Specify first device section to use nvidia GPU
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# services.xserver.displayManager.defaultSession = "gnome-x11"; # services.xserver.displayManager.autoLogin.enable = true;
|
|
||||||
# services.xserver.displayManager.autoLogin.user = "andreas";
|
|
||||||
# systemd.services."getty@tty1".enable = false;
|
|
||||||
# systemd.services."autovt@tty1".enable = false;
|
|
||||||
|
|
||||||
programs.ssh.askPassword = "${pkgs.x11_ssh_askpass}/libexec/x11-ssh-askpass";
|
|
||||||
|
|
||||||
# Configure console keymap
|
|
||||||
console.keyMap = "us-acentos";
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
|
||||||
services.pulseaudio.enable = false;
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
# If you want to use JACK applications, uncomment this
|
|
||||||
jack.enable = true;
|
|
||||||
|
|
||||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
|
||||||
# no need to redefine it in your config for now)
|
|
||||||
#media-session.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable gamemode for game optimization
|
|
||||||
programs.gamemode.enable = true;
|
|
||||||
|
|
||||||
# Enable touchpad support (enabled default in most desktopManager).
|
|
||||||
# services.xserver.libinput.enable = true;
|
|
||||||
|
|
||||||
# Install firefox.
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
|
|
||||||
# Enable XWayland for X11 application compatibility
|
|
||||||
programs.xwayland.enable = true;
|
|
||||||
|
|
||||||
# docker
|
|
||||||
virtualisation.docker = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# Enable --Akonadi--/ kde-pim for calendar backend
|
|
||||||
programs.kde-pim.enable = true;
|
|
||||||
services.dbus.enable = true;
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
# wget
|
|
||||||
(python3.withPackages (ps: with ps; [ websockets ]))
|
|
||||||
sqlite
|
|
||||||
javaPackages.compiler.openjdk25
|
|
||||||
javaPackages.compiler.openjdk21
|
|
||||||
qt6.qtwebengine
|
|
||||||
qemu
|
|
||||||
mpv
|
|
||||||
krita
|
|
||||||
ntfs3g
|
|
||||||
htop
|
|
||||||
rivalcfg
|
|
||||||
blender
|
|
||||||
freecad
|
|
||||||
reaper
|
|
||||||
discord
|
|
||||||
betterdiscordctl
|
|
||||||
];
|
|
||||||
environment.etc."xdg/autostart/xwaylandvideobridge.desktop".text = ''
|
|
||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
'';
|
|
||||||
|
|
||||||
services.udisks2.settings = { # Should fix mounting ntfs system partition - Did not work
|
|
||||||
"udisks2.conf" = {
|
|
||||||
defaults = {
|
|
||||||
allow_mount_internal = true;
|
|
||||||
allow_mount_system = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.gvfs.enable = true; # For file manager integration
|
|
||||||
|
|
||||||
# Enable udev rules for SteelSeries devices (rivalcfg)
|
|
||||||
services.udev.packages = [ pkgs.rivalcfg ];
|
|
||||||
|
|
||||||
# Disable iBus (not needed unless using Asian input methods)
|
|
||||||
i18n.inputMethod = {
|
|
||||||
enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.libvirtd = {
|
|
||||||
enable = true;
|
|
||||||
qemu = {
|
|
||||||
package = pkgs.qemu;
|
|
||||||
runAsRoot = true;
|
|
||||||
swtpm.enable = true;
|
|
||||||
vhostUserPackages = [ pkgs.virtiofsd ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ];
|
|
||||||
# Some programs need SUID wrappers, can be configured further or are
|
|
||||||
# started in user sessions.
|
|
||||||
# programs.mtr.enable = true;
|
|
||||||
# programs.gnupg.agent = {
|
|
||||||
# enable = true;
|
|
||||||
# enableSSHSupport = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# List services that you want to enable:
|
|
||||||
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
# Open ports in the .
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
24800 #Synergy
|
|
||||||
53317 #localsend
|
|
||||||
3390 #rdp
|
|
||||||
9090
|
|
||||||
8000
|
|
||||||
40122
|
|
||||||
];
|
|
||||||
networking.firewall.allowedUDPPorts = [
|
|
||||||
24800 #Synergy
|
|
||||||
53317 #localsend
|
|
||||||
3390 #rdp
|
|
||||||
9090
|
|
||||||
8000
|
|
||||||
40122
|
|
||||||
];
|
|
||||||
networking.firewall.trustedInterfaces = [ "virbr0" ];
|
|
||||||
networking.nat = {
|
|
||||||
enable = true;
|
|
||||||
internalInterfaces = [ "virbr0" ];
|
|
||||||
externalInterface = "enp75s0";
|
|
||||||
extraCommands = ''
|
|
||||||
# MASQUERADE forwarded traffic to VM so it knows how to route back
|
|
||||||
iptables -t nat -A nixos-nat-post -o virbr0 -j MASQUERADE
|
|
||||||
'';
|
|
||||||
forwardPorts = [
|
|
||||||
{
|
|
||||||
sourcePort = 9090;
|
|
||||||
proto = "tcp";
|
|
||||||
destination = "192.168.122.113:9090";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
sourcePort = 9090;
|
|
||||||
proto = "udp";
|
|
||||||
destination = "192.168.122.113:9090";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.mullvad-vpn = {
|
|
||||||
enable = true;
|
|
||||||
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 = true;
|
|
||||||
users = {
|
|
||||||
andreas = {
|
|
||||||
localhost = false; # true for SSH-only
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
### tigervnc END
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
|
||||||
# settings for stateful data, like file locations and database versions
|
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
|
||||||
# this value at the release version of the first install of this system.
|
|
||||||
# Before changing this value read the documentation for this option
|
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
|
||||||
system.stateVersion = "24.05"; # Did you read the comment?
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,226 +0,0 @@
|
|||||||
# nixosConfigurations.th0nkpad-nixos = nixpkgs.lib.nixosSystem {
|
|
||||||
|
|
||||||
{
|
|
||||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
||||||
# as well as the libraries available from your flake's inputs.
|
|
||||||
lib,
|
|
||||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
|
||||||
pkgs,
|
|
||||||
# You also have access to your flake's inputs.
|
|
||||||
inputs,
|
|
||||||
# Additional metadata is provided by Snowfall Lib.
|
|
||||||
# The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
# namespace,
|
|
||||||
# The system architecture for this host (eg. `x86_64-linux`).
|
|
||||||
# system,
|
|
||||||
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
|
||||||
# target,
|
|
||||||
# A normalized name for the system target (eg. `iso`).
|
|
||||||
# format,
|
|
||||||
# A boolean to determine whether this system is a virtual target using nixos-generators.
|
|
||||||
# virtual,
|
|
||||||
# An attribute map of your defined hosts.
|
|
||||||
# systems,
|
|
||||||
# All other arguments come from the system system.
|
|
||||||
# config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
# inherit (lib.my-namespace) systemPackages;
|
|
||||||
inherit pkgs;
|
|
||||||
installedPackages = lib.my-namespace.mkPackages pkgs;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# inherit system;
|
|
||||||
imports = [
|
|
||||||
./configuration.nix
|
|
||||||
./mutter-tearing.nix
|
|
||||||
./video.nix
|
|
||||||
inputs.aagl.nixosModules.default
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
# Desktops
|
|
||||||
my-namespace.desktop-environment.cinnamon.enable = true;
|
|
||||||
my-namespace.desktop-environment.xfce.enable = true;
|
|
||||||
my-namespace.desktop-environment.gnome.enable = true;
|
|
||||||
my-namespace.desktop-environment.kde.enable = true;
|
|
||||||
my-namespace.desktop-environment.hyprland.enable = true;
|
|
||||||
my-namespace.desktop-environment.cosmic.enable = true;
|
|
||||||
my-namespace.performance-tuning.enable = true;
|
|
||||||
my-namespace.file-organization.enable = true;
|
|
||||||
# GNOME-keyring
|
|
||||||
my-namespace.gnome-keyring.enable = true;
|
|
||||||
# CS Tools
|
|
||||||
my-namespace.cs-tools.enable = true;
|
|
||||||
|
|
||||||
users.users.andreas = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Andreas Schaafsma";
|
|
||||||
extraGroups = [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
"libvirtd"
|
|
||||||
"plugdev"
|
|
||||||
"docker"
|
|
||||||
"gamemode"
|
|
||||||
];
|
|
||||||
packages = with pkgs; [
|
|
||||||
# Packages from inputsq
|
|
||||||
# inputs.game-of-life.packages.x86_64-linux.default
|
|
||||||
inputs.zen-browser.packages.x86_64-linux.default
|
|
||||||
# inputs.anikki.packages.x86_64-linux.default
|
|
||||||
# We want flatpak support
|
|
||||||
flatpak
|
|
||||||
# GNOME shit
|
|
||||||
thunderbird
|
|
||||||
soundwireserver
|
|
||||||
# vscode
|
|
||||||
# discord
|
|
||||||
spotify
|
|
||||||
appimage-run
|
|
||||||
prismlauncher #replaces broken minecraft package
|
|
||||||
trilium-desktop
|
|
||||||
terraform
|
|
||||||
virt-manager
|
|
||||||
nil
|
|
||||||
codex
|
|
||||||
# thunderbird
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.anime-game-launcher.enable = true; # Adds launcher and /etc/hosts rules
|
|
||||||
programs.anime-games-launcher.enable = true;
|
|
||||||
|
|
||||||
services.gnome.gnome-remote-desktop.enable = true;
|
|
||||||
my-namespace.keychron-keyboard.enable = true;
|
|
||||||
|
|
||||||
# lib.my-namespace.home.stream-tools.enable = true;
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
59010 #SoundWireServer
|
|
||||||
5901
|
|
||||||
5001
|
|
||||||
11434
|
|
||||||
3389 #RDP
|
|
||||||
22 #ssh
|
|
||||||
];
|
|
||||||
networking.firewall.allowedUDPPorts = [
|
|
||||||
59010 #SoundWireServer
|
|
||||||
5901
|
|
||||||
5001
|
|
||||||
11434
|
|
||||||
3389 #RDP
|
|
||||||
22 #ssh
|
|
||||||
];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
networking.firewall.enable = false;
|
|
||||||
|
|
||||||
|
|
||||||
# Install firefox.
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
nixpkgs.config.allowBroken = true;
|
|
||||||
powerManagement.cpuFreqGovernor = "performance";
|
|
||||||
# Set up system Packages
|
|
||||||
environment.sessionVariables.GI_TYPELIB_PATH =
|
|
||||||
lib.makeSearchPath "lib/girepository-1.0" [
|
|
||||||
pkgs.my-namespace.rounded-blur
|
|
||||||
];
|
|
||||||
environment.sessionVariables = {
|
|
||||||
# If you are using Hyprland, labwc, or Sway (wlroots-based):
|
|
||||||
WLR_DRM_NO_ATOMIC = "1";
|
|
||||||
|
|
||||||
KWIN_DRM_DISABLE_TRIPLE_BUFFERING="1";
|
|
||||||
|
|
||||||
# If you are using KDE Plasma (KWin):
|
|
||||||
KWIN_FORCE_SW_CURSOR = "1";
|
|
||||||
|
|
||||||
# For modern wlroots (and Aquamarine in Hyprland) to force software cursors:
|
|
||||||
WLR_NO_HARDWARE_CURSORS = "1";
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
git
|
|
||||||
wine
|
|
||||||
# bottles
|
|
||||||
gparted
|
|
||||||
ntfs3g
|
|
||||||
ntfsprogs
|
|
||||||
synergy
|
|
||||||
mangohud
|
|
||||||
my-namespace.udev-steelseries
|
|
||||||
my-namespace.linux-wallpaperengine
|
|
||||||
my-namespace.rounded-blur
|
|
||||||
my-namespace.rounded-windows-bms
|
|
||||||
my-namespace.cs-demo-manager
|
|
||||||
vscode-modernized
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "switch-to-desktop" ''
|
|
||||||
#!/bin/sh
|
|
||||||
# Kill Steam and return to display manager
|
|
||||||
pkill steam || true
|
|
||||||
pkill gamescope || true
|
|
||||||
# End the session cleanly
|
|
||||||
loginctl terminate-session "$XDG_SESSION_ID"
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "steamos-session-select" ''
|
|
||||||
#!/bin/sh
|
|
||||||
exec switch-to-desktop
|
|
||||||
'')
|
|
||||||
|
|
||||||
# Vulkan packages for Steam
|
|
||||||
mesa
|
|
||||||
vulkan-loader
|
|
||||||
vulkan-validation-layers
|
|
||||||
vulkan-extension-layer
|
|
||||||
vulkan-tools
|
|
||||||
libva
|
|
||||||
libva-utils
|
|
||||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
# wget
|
|
||||||
]
|
|
||||||
++ installedPackages.packages;
|
|
||||||
|
|
||||||
programs.nix-ld = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nix-ld; #replaces nix-ld-rs
|
|
||||||
};
|
|
||||||
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
systemd.services.flatpak-repo = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
path = [ pkgs.flatpak ];
|
|
||||||
script = ''
|
|
||||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings.PasswordAuthentication = true;
|
|
||||||
# settings = {
|
|
||||||
# # passwordAuthentication = true;
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# services.xrdp.enable = true;
|
|
||||||
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
|
|
||||||
# services.xrdp.defaultWindowManager = "startxfce4";
|
|
||||||
# services.xrdp.openFirewall = true;
|
|
||||||
# services.xrdp.audio.enable = false;
|
|
||||||
|
|
||||||
|
|
||||||
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
|
|
||||||
# If no user is logged in, the machine will power down after 20 minutes.
|
|
||||||
|
|
||||||
systemd.targets.sleep.enable = false;
|
|
||||||
systemd.targets.suspend.enable = false;
|
|
||||||
systemd.targets.hibernate.enable = false;
|
|
||||||
systemd.targets.hybrid-sleep.enable = false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
# boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid.bin,DP-2:edid/edid.bin,DP-3:edid/edid.bin,DP-4:edid/edid.bin" ];
|
|
||||||
boot.kernelParams = [
|
|
||||||
"drm.edid_firmware=DP-2:edid/edid.bin,DP-4:edid/edid.bin"
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
hardware.firmware = [
|
|
||||||
(
|
|
||||||
pkgs.runCommand "edid.bin" { } ''
|
|
||||||
mkdir -p $out/lib/firmware/edid
|
|
||||||
cp ${./firmware/KG271-edid.bin} $out/lib/firmware/edid/edid.bin
|
|
||||||
''
|
|
||||||
)];
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
@@ -1,141 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
############################
|
|
||||||
## Display + Mesa Settings
|
|
||||||
############################
|
|
||||||
|
|
||||||
# hardware.enableRedistributableFirmware = true;
|
|
||||||
|
|
||||||
hardware.firmware = [
|
|
||||||
pkgs.linux-firmware
|
|
||||||
# pkgs.firmwareLinuxNonfree
|
|
||||||
# pkgs.firmwareLinuxStrict
|
|
||||||
# pkgs.firmwareLinuxLatest
|
|
||||||
];
|
|
||||||
|
|
||||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
boot.kernelParams = [
|
|
||||||
"console=tty0"
|
|
||||||
# "efifb=off"
|
|
||||||
"xe.force_probe=e20b"
|
|
||||||
# Xe stability improvements for B580
|
|
||||||
"xe.guc_log_level=0" # Reduce GuC logging overhead
|
|
||||||
"xe.enable_display=1" # Ensure display is enabled
|
|
||||||
# Memory/performance parameters
|
|
||||||
"mitigations=off" # Disable CPU mitigations for better performance
|
|
||||||
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
|
|
||||||
];
|
|
||||||
services.switcherooControl.enable = true;
|
|
||||||
# environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
|
|
||||||
hardware.intel-gpu-tools.enable = true;
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
intel-media-driver # Intel VAAPI
|
|
||||||
vpl-gpu-rt # oneVPL runtime
|
|
||||||
intel-vaapi-driver # fallback
|
|
||||||
intel-compute-runtime # OpenCL/Level Zero
|
|
||||||
level-zero # Level Zero API for compute
|
|
||||||
intel-graphics-compiler # Shader compiler for Arc GPUs allgedly needed for XPU
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Ensure Arc driver is available (usually auto-loaded)
|
|
||||||
boot.kernelModules = [ "xe" "i915" ];
|
|
||||||
# Blacklist everything for nvidia
|
|
||||||
boot.blacklistedKernelModules = [
|
|
||||||
"nouveau"
|
|
||||||
"nvidia"
|
|
||||||
"nvidia_drm"
|
|
||||||
"nvidia_modeset"
|
|
||||||
"nvidia_uvm"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Mark Arc B580 as a discrete Intel GPU for switcheroo-control and
|
|
||||||
# keep runtime PCI power management enabled for the device.
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
ACTION=="add|bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{device}=="0xe20b", TEST=="power/control", ATTR{power/control}="auto"
|
|
||||||
SUBSYSTEM=="drm", DRIVERS=="xe", ATTRS{vendor}=="0x8086", ATTRS{device}=="0xe20b", TAG+="switcheroo-discrete-gpu"
|
|
||||||
'';
|
|
||||||
|
|
||||||
environment.variables = {
|
|
||||||
# Force Intel GPU for all graphics operations
|
|
||||||
KWIN_DRM_DEVICES = "/dev/dri/card0";
|
|
||||||
|
|
||||||
# Vulkan/DXVK optimizations for B580
|
|
||||||
ANV_ENABLE_PIPELINE_CACHE = "1";
|
|
||||||
|
|
||||||
# Shader cache settings
|
|
||||||
MESA_SHADER_CACHE_DISABLE = "false";
|
|
||||||
MESA_SHADER_CACHE_MAX_SIZE = "10G";
|
|
||||||
|
|
||||||
# DXVK optimizations
|
|
||||||
DXVK_HUD = "compiler"; # Monitor shader compilation
|
|
||||||
# DXVK_ASYNC = "1"; # Enable if you want async shader compilation (may cause issues)
|
|
||||||
|
|
||||||
# Intel IPEX / PyTorch settings
|
|
||||||
ZE_ENABLE_ALT_DRIVERS = "libze_intel_gpu.so.1"; # Enable Intel GPU driver for Level Zero
|
|
||||||
SYCL_CACHE_PERSISTENT = "1"; # Enable persistent SYCL cache
|
|
||||||
SYCL_PI_LEVEL_ZERO_USE_IMMEDIATE_COMMANDLISTS = "1"; # Performance optimization
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
|
||||||
## LACT Settings for Overclocking
|
|
||||||
############################
|
|
||||||
|
|
||||||
services.lact.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
|
||||||
## X / Wayland GPU Drivers
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Enable modesetting driver for X11 (required for Intel Xe)
|
|
||||||
services.xserver.videoDrivers = [
|
|
||||||
"modesetting"
|
|
||||||
#"intel"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.xserver.enable = true;
|
|
||||||
services.xserver.autorun = false;
|
|
||||||
services.xserver.displayManager.startx.enable = true;
|
|
||||||
|
|
||||||
# Xorg configuration for Intel Arc Battlemage (xe driver)
|
|
||||||
# Based on: https://www.reddit.com/r/crtgaming/comments/1knom2t/guide_intel_arc_b580_arch_linux_xorg/
|
|
||||||
# Intel Arc B-series at PCI 0000:03:00.0
|
|
||||||
#services.xserver.deviceSection = ''
|
|
||||||
# Option "AccelMethod" "glamor"
|
|
||||||
# BusID "PCI:3:0:0"
|
|
||||||
#'';
|
|
||||||
|
|
||||||
############################
|
|
||||||
## User Access
|
|
||||||
############################
|
|
||||||
users.users.andreas.extraGroups = [ "video" "render" ];
|
|
||||||
|
|
||||||
############################
|
|
||||||
## System Packages for AI/ML
|
|
||||||
############################
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
intel-compute-runtime
|
|
||||||
level-zero
|
|
||||||
# For checking GPU compute capabilities
|
|
||||||
clinfo
|
|
||||||
vulkan-tools
|
|
||||||
];
|
|
||||||
services.xserver.config = ''
|
|
||||||
Section "Device"
|
|
||||||
Identifier "AMD"
|
|
||||||
Driver "amdgpu"
|
|
||||||
Option "TearFree" "false"
|
|
||||||
EndSection
|
|
||||||
'';
|
|
||||||
services.xserver.deviceSection = ''
|
|
||||||
Option "TearFree" "false"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,90 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
############################
|
|
||||||
## Display + Mesa Settings
|
|
||||||
############################
|
|
||||||
|
|
||||||
# hardware.enableRedistributableFirmware = true;
|
|
||||||
|
|
||||||
hardware.firmware = [
|
|
||||||
pkgs.linux-firmware
|
|
||||||
# pkgs.firmwareLinuxNonfree
|
|
||||||
# pkgs.firmwareLinuxStrict
|
|
||||||
# pkgs.firmwareLinuxLatest
|
|
||||||
];
|
|
||||||
|
|
||||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
boot.kernelParams = [
|
|
||||||
"console=tty0"
|
|
||||||
# "efifb=off"
|
|
||||||
# "xe.force_probe=*"
|
|
||||||
"module_blacklist=nouveau,nvidia,nvidia_drm,nvidia_modeset,nvidia_uvm"
|
|
||||||
];
|
|
||||||
|
|
||||||
# environment.variables.VK_ICD_FILENAMES = "/run/opengl-driver/share/vulkan/icd.d/intel_icd.x86_64.json";
|
|
||||||
hardware.intel-gpu-tools.enable = true;
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
enable32Bit = true;
|
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
intel-media-driver # Intel VAAPI
|
|
||||||
vpl-gpu-rt # oneVPL runtime
|
|
||||||
intel-vaapi-driver # fallback
|
|
||||||
intel-compute-runtime # OpenCL/Level Zero
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Ensure Arc driver is available (usually auto-loaded)
|
|
||||||
boot.kernelModules = [ "i915" ];
|
|
||||||
# Blacklist everything for nvidia
|
|
||||||
boot.blacklistedKernelModules = [
|
|
||||||
"nouveau"
|
|
||||||
"nvidia"
|
|
||||||
"nvidia_drm"
|
|
||||||
"nvidia_modeset"
|
|
||||||
"nvidia_uvm"
|
|
||||||
"xe"
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.variables = {
|
|
||||||
KWIN_DRM_DEVICES = "/dev/dri/card0";
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
|
||||||
## LACT Settings for Overclocking
|
|
||||||
############################
|
|
||||||
|
|
||||||
services.lact.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
############################
|
|
||||||
## X / Wayland GPU Drivers
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Enable modesetting driver for X11 (required for Intel Xe)
|
|
||||||
services.xserver.videoDrivers = [
|
|
||||||
"modesetting"
|
|
||||||
#"intel"
|
|
||||||
];
|
|
||||||
|
|
||||||
services.xserver.enable = true;
|
|
||||||
services.xserver.autorun = false;
|
|
||||||
services.xserver.displayManager.startx.enable = true;
|
|
||||||
|
|
||||||
# Xorg configuration for Intel Arc Battlemage (xe driver)
|
|
||||||
# Based on: https://www.reddit.com/r/crtgaming/comments/1knom2t/guide_intel_arc_b580_arch_linux_xorg/
|
|
||||||
# Intel Arc B-series at PCI 0000:03:00.0
|
|
||||||
#services.xserver.deviceSection = ''
|
|
||||||
# Option "AccelMethod" "glamor"
|
|
||||||
# BusID "PCI:3:0:0"
|
|
||||||
#'';
|
|
||||||
|
|
||||||
############################
|
|
||||||
## User Access
|
|
||||||
############################
|
|
||||||
users.users.andreas.extraGroups = [ "video" "render" ];
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
############################
|
|
||||||
## Display + Mesa Settings
|
|
||||||
############################
|
|
||||||
|
|
||||||
# hardware.enableRedistributableFirmware = true;
|
|
||||||
|
|
||||||
hardware.firmware = [
|
|
||||||
pkgs.linux-firmware
|
|
||||||
# pkgs.firmwareLinuxNonfree
|
|
||||||
# pkgs.firmwareLinuxStrict
|
|
||||||
# pkgs.firmwareLinuxLatest
|
|
||||||
];
|
|
||||||
|
|
||||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
|
|
||||||
boot.kernelParams = [
|
|
||||||
"console=tty0"
|
|
||||||
"efifb=off"
|
|
||||||
"xe.force_probe=*"
|
|
||||||
"nvidia-drm.modeset=1"
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
intel-media-driver # Intel VAAPI
|
|
||||||
vpl-gpu-rt # oneVPL runtime
|
|
||||||
intel-vaapi-driver # fallback
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Ensure Arc driver is available (usually auto-loaded)
|
|
||||||
boot.kernelModules = [ "xe" ];
|
|
||||||
boot.blacklistedKernelModules = [ "nouveau" ];
|
|
||||||
|
|
||||||
############################
|
|
||||||
## X / Wayland GPU Drivers
|
|
||||||
############################
|
|
||||||
# Only specify NVIDIA. Intel Arc uses the modesetting driver automatically.
|
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
|
||||||
|
|
||||||
############################
|
|
||||||
## NVIDIA Configuration
|
|
||||||
############################
|
|
||||||
hardware.nvidia = {
|
|
||||||
modesetting.enable = true; # REQUIRED if any displays are on NVIDIA
|
|
||||||
|
|
||||||
open = false; # GTX 1070 → must be the proprietary driver
|
|
||||||
nvidiaSettings = true;
|
|
||||||
|
|
||||||
powerManagement.enable = false;
|
|
||||||
powerManagement.finegrained = false;
|
|
||||||
|
|
||||||
prime = {
|
|
||||||
offload.enable = false; # not a laptop, must be disabled
|
|
||||||
sync.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Correct way to pick the driver
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.production;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Remove → hardware.nvidia handles module packages
|
|
||||||
# boot.extraModulePackages = [ config.boot.kernelPackages.nvidia_x11 ];
|
|
||||||
|
|
||||||
############################
|
|
||||||
## User Access
|
|
||||||
############################
|
|
||||||
users.users.andreas.extraGroups = [ "video" "render" ];
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
{ config, lib, system, pkgs, ... }:
|
|
||||||
{
|
|
||||||
boot.kernelModules = [
|
|
||||||
"vfio"
|
|
||||||
"vfio-pci"
|
|
||||||
"vfio_iommu_type1"
|
|
||||||
];
|
|
||||||
boot.kernelParams = [
|
|
||||||
"amd_iommu=on"
|
|
||||||
"iommu=pt"
|
|
||||||
];
|
|
||||||
# Make sure vfio is available inside initrd
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"vfio_pci"
|
|
||||||
];
|
|
||||||
# Bind by IDs (cleaner via modprobe instead of kernel param)
|
|
||||||
boot.extraModprobeConfig = ''
|
|
||||||
options vfio-pci ids=10de:1b81,10de:10f0
|
|
||||||
'';
|
|
||||||
boot.initrd.systemd = {
|
|
||||||
enable = true;
|
|
||||||
services.initrd-vfio-pci-nvidia = {
|
|
||||||
description = "vfio-pci predevice init";
|
|
||||||
wantedBy = [ "initrd.target" ];
|
|
||||||
# Match 'preDeviceCommands' by running early
|
|
||||||
before = [ "sysroot.mount" ];
|
|
||||||
|
|
||||||
unitConfig.DefaultDependencies = "no";
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
|
|
||||||
# Place your original shell commands here
|
|
||||||
script = ''
|
|
||||||
modprobe vfio-pci
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# # EARLY and deterministic binding
|
|
||||||
# boot.initrd.preDeviceCommands = ''
|
|
||||||
# echo 0000:05:00.0 > /sys/bus/pci/drivers/vfio-pci/bind
|
|
||||||
# echo 0000:05:00.1 > /sys/bus/pci/drivers/vfio-pci/bind
|
|
||||||
# '';
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
pciutils
|
|
||||||
virtiofsd
|
|
||||||
config.virtualisation.libvirtd.qemu.package
|
|
||||||
looking-glass-client
|
|
||||||
virt-manager
|
|
||||||
libguestfs-with-appliance
|
|
||||||
];
|
|
||||||
users.extraUsers.andreas.extraGroups = [ "libvirtd" ];
|
|
||||||
}
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
|
||||||
# and may be overwritten by future invocations. Please make changes
|
|
||||||
# to /etc/nixos/configuration.nix instead.
|
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
|
||||||
./graphics/intel.nix
|
|
||||||
./graphics/passthrough_nvidia.nix
|
|
||||||
# ./graphics/intel_i915.nix
|
|
||||||
# ./graphics/nvidia.nix
|
|
||||||
./acer-monitor-edid.nix
|
|
||||||
./samsung-monitor-edid.nix
|
|
||||||
];
|
|
||||||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-latest;
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
# boot.kernelPackages = pkgs.linuxKernel.packages.linux_xanmod_latest;
|
|
||||||
# boot.kernelPackages = pkgs.linuxPackages;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
|
|
||||||
boot.kernelModules = [ "kvm-amd" "r8125" "4vl2loopback" ];
|
|
||||||
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback r8125 ];
|
|
||||||
boot.supportedFilesystems = [ "ntfs" ];
|
|
||||||
boot.blacklistedKernelModules = [ "r8169" ];
|
|
||||||
|
|
||||||
systemd.services.disable-realtek-eee = {
|
|
||||||
description = "Disable Realtek Energy Efficient Ethernet";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
after = [ "network.target" ];
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = "${pkgs.ethtool}/bin/ethtool --set-eee enp10s0 eee off";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
#device = "/dev/disk/by-uuid/E846-D998";
|
|
||||||
device = "/dev/disk/by-uuid/19BE-8BAA";
|
|
||||||
fsType = "vfat";
|
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Mount ntfs partition
|
|
||||||
# fileSystems."/run/media/627C3BDF7C3BAD23" = {
|
|
||||||
# device = "/dev/disk/by-uuid/627C3BDF7C3BAD23";
|
|
||||||
# fsType = "ntfs-3g";
|
|
||||||
# options = [ "rw" "uid=1000"];
|
|
||||||
# };
|
|
||||||
|
|
||||||
# # Mount ntfs oldfiles drive partition
|
|
||||||
# fileSystems."/run/media/oldfiles" = {
|
|
||||||
# device = "/dev/disk/by-uuid/E2E26FFFE26FD677";
|
|
||||||
# fsType = "ntfs-3g";
|
|
||||||
# options = [ "rw" "uid=1000"];
|
|
||||||
# };
|
|
||||||
|
|
||||||
# # Mount The Vault
|
|
||||||
# fileSystems."/run/media/vault" = {
|
|
||||||
# device = "/dev/disk/by-uuid/3470646370642DB4";
|
|
||||||
# fsType = "ntfs-3g";
|
|
||||||
# options = [ "rw" "uid=1000"];
|
|
||||||
# };
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Try to fix hibernation
|
|
||||||
|
|
||||||
# swapDevices = [ ];
|
|
||||||
swapDevices = [ {
|
|
||||||
device = "/var/lib/swapfile";
|
|
||||||
size = 32*1024;
|
|
||||||
} ]; #resume-offset = 78399488
|
|
||||||
boot.resumeDevice = "/dev/disk/by-uuid/563805a1-5277-4488-bbdd-c1a7ed37be76"; # the unlocked drive mapping
|
|
||||||
boot.kernelParams = [
|
|
||||||
"resume_offset=78399488" #sudo filefrag -v /var/lib/swapfile|awk 'NR==4{gsub(/\./,"");print $4;}'
|
|
||||||
"r8125.aspm=0" # realtek network adapter fix
|
|
||||||
];
|
|
||||||
security.protectKernelImage = false;
|
|
||||||
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still po ssible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp72s0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
# boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid.bin,DP-2:edid/edid.bin,DP-3:edid/edid.bin,DP-4:edid/edid.bin" ];
|
|
||||||
boot.kernelParams = [ "drm.edid_firmware=DP-1:edid/edid2.bin" ];
|
|
||||||
|
|
||||||
|
|
||||||
hardware.firmware = [
|
|
||||||
(
|
|
||||||
pkgs.runCommand "edid2.bin" { } ''
|
|
||||||
mkdir -p $out/lib/firmware/edid
|
|
||||||
cp ${./firmware/U32J59x-edid.bin} $out/lib/firmware/edid/edid2.bin
|
|
||||||
''
|
|
||||||
)];
|
|
||||||
}
|
|
||||||
@@ -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;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
boot.kernelModules = [
|
|
||||||
"v4l2loopback" # Webcam loopback
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.extraModulePackages = [
|
|
||||||
config.boot.kernelPackages.v4l2loopback # Webcam loopback
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.extraModprobeConfig = ''
|
|
||||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
|
||||||
'';
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# Webcam packages
|
|
||||||
v4l-utils
|
|
||||||
android-tools
|
|
||||||
adb-sync
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
|
|
||||||
# nixosConfigurations.drivebystation-nixos-wsl = nixpkgs.lib.nixosSystem {
|
|
||||||
#
|
|
||||||
# };
|
|
||||||
{
|
|
||||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
||||||
# as well as the libraries available from your flake's inputs.
|
|
||||||
lib,
|
|
||||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
|
||||||
pkgs,
|
|
||||||
# You also have access to your flake's inputs.
|
|
||||||
inputs,
|
|
||||||
# Additional metadata is provided by Snowfall Lib.
|
|
||||||
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
system, # The system architecture for this host (eg. `x86_64-linux`).
|
|
||||||
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
|
||||||
format, # A normalized name for the system target (eg. `iso`).
|
|
||||||
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
|
||||||
systems, # An attribute map of your defined hosts.
|
|
||||||
|
|
||||||
# All other arguments come from the system system.
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
inherit system;
|
|
||||||
modules = [
|
|
||||||
nixos-wsl.nixosModules.default
|
|
||||||
./configuration.nix
|
|
||||||
{
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
wsl.enable = true;
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
environment.systemPackages = [
|
|
||||||
|
|
||||||
]
|
|
||||||
++ installedPackages.mkPackages.packages;
|
|
||||||
programs.nix-ld = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nix-ld-rs;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
specialArgs = { inherit inputs; };
|
|
||||||
# Your configuration.
|
|
||||||
}
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
# nixosConfigurations.th0nkpad-nixos = nixpkgs.lib.nixosSystem {
|
|
||||||
|
|
||||||
{
|
|
||||||
# Snowfall Lib provides a customized `lib` instance with access to your flake's library
|
|
||||||
# as well as the libraries available from your flake's inputs.
|
|
||||||
lib,
|
|
||||||
# An instance of `pkgs` with your overlays and packages applied is also available.
|
|
||||||
pkgs,
|
|
||||||
# You also have access to your flake's inputs.
|
|
||||||
inputs,
|
|
||||||
# Additional metadata is provided by Snowfall Lib.
|
|
||||||
# The namespace used for your flake, defaulting to "internal" if not set.
|
|
||||||
namespace,
|
|
||||||
# The system architecture for this host (eg. `x86_64-linux`).
|
|
||||||
system,
|
|
||||||
# The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
|
||||||
target,
|
|
||||||
# A normalized name for the system target (eg. `iso`).
|
|
||||||
format,
|
|
||||||
# A boolean to determine whether this system is a virtual target using nixos-generators.
|
|
||||||
virtual,
|
|
||||||
# An attribute map of your defined hosts.
|
|
||||||
systems,
|
|
||||||
# All other arguments come from the system system.
|
|
||||||
config
|
|
||||||
, ...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit pkgs;
|
|
||||||
installedPackages = lib.my-namespace.mkPackages pkgs;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# inherit system;
|
|
||||||
imports = [
|
|
||||||
./configuration.nix
|
|
||||||
];
|
|
||||||
config = {
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
|
||||||
users.users.andreas = {
|
|
||||||
isNormalUser = true;
|
|
||||||
description = "Andreas";
|
|
||||||
extraGroups = [ "networkmanager" "wheel" ];
|
|
||||||
packages = with pkgs; [
|
|
||||||
flatpak
|
|
||||||
gnome-software
|
|
||||||
soundwireserver
|
|
||||||
vscode
|
|
||||||
spotify
|
|
||||||
appimage-run
|
|
||||||
inputs.game-of-life.packages.x86_64-linux.default
|
|
||||||
inputs.nixos-cosmic
|
|
||||||
# thunderbird
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# lib.my-namespace.home.stream-tools.enable = true;
|
|
||||||
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
59010 #SoundWireServer
|
|
||||||
3389 #RDP
|
|
||||||
];
|
|
||||||
networking.firewall.allowedUDPPorts = [
|
|
||||||
59010 #SoundWireServer
|
|
||||||
3389 #RDP
|
|
||||||
];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
|
|
||||||
# Install firefox.
|
|
||||||
programs.firefox.enable = true;
|
|
||||||
|
|
||||||
# Set up system Packages
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
git
|
|
||||||
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
# wget
|
|
||||||
]
|
|
||||||
++ installedPackages.packages;
|
|
||||||
programs.nix-ld = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.nix-ld-rs;
|
|
||||||
};
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
systemd.services.flatpak-repo = {
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
path = [ pkgs.flatpak ];
|
|
||||||
script = ''
|
|
||||||
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
passwordAuthentication = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
# services.xrdp.enable = true;
|
|
||||||
# services.xrdp.defaultWindowManager = "${pkgs.gnome-session}/bin/gnome-session";
|
|
||||||
# services.xrdp.openFirewall = true;
|
|
||||||
|
|
||||||
|
|
||||||
# Disable the GNOME3/GDM auto-suspend feature that cannot be disabled in GUI!
|
|
||||||
# If no user is logged in, the machine will power down after 20 minutes.
|
|
||||||
systemd.targets.sleep.enable = false;
|
|
||||||
systemd.targets.suspend.enable = false;
|
|
||||||
systemd.targets.hibernate.enable = false;
|
|
||||||
systemd.targets.hybrid-sleep.enable = false;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user