Compare commits
51
Commits
65253db075
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
93df208274 | ||
|
|
9bccabf712 | ||
|
|
129b9ae365 | ||
|
|
7ed37b3b75
|
||
|
|
ba0c0d55ce
|
||
|
|
cbf9cc29ca
|
||
|
|
f9d95837f5 | ||
|
|
cddf1860d2 | ||
|
|
8298f90315 | ||
|
|
930c7b6018 | ||
|
|
99df214e10 | ||
|
|
d90315fe68 | ||
|
|
936ef1a7e0
|
||
|
|
dcb32fe35d | ||
|
|
7e2a3d894d | ||
|
|
461323c58f | ||
|
|
814daf2bfe
|
||
|
|
bfecd4fadf | ||
|
|
4e8aea6a24
|
||
|
|
a4d8971a77 | ||
|
|
c97f728a01
|
||
|
|
cc39b11599
|
||
|
|
bfa8f5c118
|
||
|
|
fc7a88814a
|
||
|
|
d07be06293
|
||
|
|
dd446c742e
|
||
|
|
be49c9858d
|
||
|
|
26370a3d19
|
||
|
|
0e8cd39223
|
||
|
|
7b02a1d7f6
|
||
|
|
bc72ae3d99
|
||
|
|
bb6388a338
|
||
|
|
ab184e2005
|
||
|
|
42f554b371
|
||
|
|
1a75b67cc8
|
||
|
|
b7fa5d89c5
|
||
|
|
3dbd5ca53b
|
||
|
|
e572b6af0d
|
||
|
|
ca8b285c17
|
||
|
|
504ff35644
|
||
|
|
1c59901eb1
|
||
|
|
b49bbadd4f
|
||
|
|
71f061ba1b
|
||
|
|
2acb835705
|
||
|
|
9c5d806d25
|
||
|
|
c9c6ba7f56
|
||
|
|
1ade2f5b2f
|
||
|
|
647de63008
|
||
|
|
548ef68ad4
|
||
|
|
7ad79d5bb3
|
||
|
|
0194ac2c30
|
Generated
+118
-169
@@ -31,11 +31,11 @@
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778446047,
|
||||
"narHash": "sha256-oQvcadh2BCkrog+SGrG6YffKJrveYpjj3TdQJWaKhaM=",
|
||||
"lastModified": 1784665499,
|
||||
"narHash": "sha256-9BMxlTxCCDAeoNLtb1a/st7udtTIJep+wpUzquA29VU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "bun2nix",
|
||||
"rev": "f2bc12af1a6369648aac41041ceeaa0b866599c6",
|
||||
"rev": "0f2a1f0b6f42cebe3b149bf62d38754c5e0e9729",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -44,38 +44,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cachyos-kernel": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1781883168,
|
||||
"narHash": "sha256-raAojJGk0aWdscfFn/9ikZ6V5oUuAZcAz5kjAZ2QN3E=",
|
||||
"owner": "CachyOS",
|
||||
"repo": "linux-cachyos",
|
||||
"rev": "daed450e9b1a4fadfef68fb4fa5e2f3391fedb34",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "CachyOS",
|
||||
"repo": "linux-cachyos",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cachyos-kernel-patches": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1781879636,
|
||||
"narHash": "sha256-vNTtJIee7GrrUY93UwQ/x2yFkwI4IpHPiyc3kXfVflo=",
|
||||
"owner": "CachyOS",
|
||||
"repo": "kernel-patches",
|
||||
"rev": "5e818fcbf2eb8de573c9270295ce9f5215973303",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "CachyOS",
|
||||
"repo": "kernel-patches",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"cf": {
|
||||
"locked": {
|
||||
"lastModified": 1756852014,
|
||||
@@ -93,17 +61,17 @@
|
||||
},
|
||||
"claude-code": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
],
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781833989,
|
||||
"narHash": "sha256-zLuv4n6C5ceFaLwYKV2uh8zK7Z6fFXx7FD398pi2GVU=",
|
||||
"lastModified": 1788552094,
|
||||
"narHash": "sha256-fdD1tF+RjJME8DRMI/dz2lBuFQ8SvyPCF8tVVZ02OvQ=",
|
||||
"owner": "sadjow",
|
||||
"repo": "claude-code-nix",
|
||||
"rev": "a94e5e841e4992e8e173aba973cb9c41ec575bb8",
|
||||
"rev": "ac5abfc00fe9226e9d116f8e2fbb69ae26775ea3",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -115,11 +83,11 @@
|
||||
},
|
||||
"crane": {
|
||||
"locked": {
|
||||
"lastModified": 1765145449,
|
||||
"narHash": "sha256-aBVHGWWRzSpfL++LubA0CwOOQ64WNLegrYHwsVuVN7A=",
|
||||
"lastModified": 1781825982,
|
||||
"narHash": "sha256-SlXKwIRIhrOSAcTjCB3ftPLzJWZStQIPS7J1FlZPnKk=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "69f538cdce5955fcd47abfed4395dc6d5194c1c5",
|
||||
"rev": "469fd08d0bcf6926321fa973c6777fbc87785dd7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -146,15 +114,15 @@
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1761588595,
|
||||
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
||||
"owner": "edolstra",
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -199,11 +167,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1777988971,
|
||||
"narHash": "sha256-qIoWPDs+0/8JecyYgE3gpKQxW/4bLW/gp45vow9ioCQ=",
|
||||
"lastModified": 1782949081,
|
||||
"narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "0678d8986be1661af6bb555f3489f2fdfc31f6ff",
|
||||
"rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -217,11 +185,11 @@
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778716662,
|
||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||
"lastModified": 1788450739,
|
||||
"narHash": "sha256-glZLQlzIn1fXH6PazR2iUmTo7kzzyYSshrWhLS9TqCU=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||
"rev": "31729ca8cbdb4fa927b34e5f4353e6a83f39e993",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -231,24 +199,6 @@
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1634851050,
|
||||
"narHash": "sha256-N83GlSGPJJdcqhUxSCS/WwW5pksYf3VP1M13cDRTSVA=",
|
||||
@@ -292,11 +242,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781884383,
|
||||
"narHash": "sha256-i27BvWCxpdunZVCpeO1WrGLw2chG8LlMiuD6FSYezjo=",
|
||||
"lastModified": 1788644970,
|
||||
"narHash": "sha256-6BI+HCRmDPcdoudp7VvLKGBiRhiDct+4MARCxDFI3jg=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "e061b008856927dacf7adfcd44343f353413cbd8",
|
||||
"rev": "11f7a2df92b132274c49d2645cacd375d4345cf4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -306,6 +256,26 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"homebrew": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1785271058,
|
||||
"narHash": "sha256-xVisL04Gt6LsGa1cGCLHhTED7iEykgl7krPyzAm2ZQg=",
|
||||
"owner": "koalalorenzo",
|
||||
"repo": "home-manager-brew",
|
||||
"rev": "795f9aed8ddce24b3cae3b75598e6861e7d72d10",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "koalalorenzo",
|
||||
"repo": "home-manager-brew",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"lanzaboote": {
|
||||
"inputs": {
|
||||
"crane": "crane",
|
||||
@@ -316,50 +286,32 @@
|
||||
"rust-overlay": "rust-overlay"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765382359,
|
||||
"narHash": "sha256-RJmgVDzjRI18BWVogG6wpsl1UCuV6ui8qr4DJ1LfWZ8=",
|
||||
"lastModified": 1782141370,
|
||||
"narHash": "sha256-hqijVSEETttmo8Okql9/LG0Ua34hdciKW1a5zzlj8mU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "e8c096ade12ec9130ff931b0f0e25d2f1bc63607",
|
||||
"rev": "7c9a54a7f87b4539ddbd8bda09a8a5f5f9361aa9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "v1.0.0",
|
||||
"ref": "v1.1.0",
|
||||
"repo": "lanzaboote",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"linux-ntfs": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1779240458,
|
||||
"narHash": "sha256-wAK9GX2au7bCw2pQB2cYJp1U9bOuS44bKKlLgBURD5c=",
|
||||
"owner": "namjaejeon",
|
||||
"repo": "linux-ntfs",
|
||||
"rev": "5893a4b30e4a821348ab158f594f2c3c9409694e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "namjaejeon",
|
||||
"repo": "linux-ntfs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-cachyos-kernel": {
|
||||
"inputs": {
|
||||
"cachyos-kernel": "cachyos-kernel",
|
||||
"cachyos-kernel-patches": "cachyos-kernel-patches",
|
||||
"flake-compat": "flake-compat_2",
|
||||
"flake-parts": "flake-parts_2",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781896647,
|
||||
"narHash": "sha256-xlHqfEa3ZwgD477tn3wF1DEv7KgppmDaSLss44dbjmQ=",
|
||||
"lastModified": 1788636383,
|
||||
"narHash": "sha256-rb0Cq4ahQej8/d4qMyZJ9nqfjNUptNUzhoc3OXUzYWc=",
|
||||
"owner": "xddxdd",
|
||||
"repo": "nix-cachyos-kernel",
|
||||
"rev": "8bf6af7fd57d129ec00d06e399e01cb6f97a97e8",
|
||||
"rev": "aa89b450a7ba56db6f5f7331672404dae7e0805f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -368,6 +320,27 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1786845137,
|
||||
"narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=",
|
||||
"owner": "nix-darwin",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-darwin",
|
||||
"ref": "master",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-flatpak": {
|
||||
"locked": {
|
||||
"lastModified": 1767983141,
|
||||
@@ -391,11 +364,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781885060,
|
||||
"narHash": "sha256-Sx6m0ylfHIRmowEuzphgZ3McRamg5GHs8cdJcwO29Fc=",
|
||||
"lastModified": 1788635631,
|
||||
"narHash": "sha256-j1HgbzMxAi/W2ezt2We3DuDNyuZaWXS/Pwg33D/cmQk=",
|
||||
"owner": "sudosubin",
|
||||
"repo": "nix-skills",
|
||||
"rev": "d486392e9e2b9b3d537694e6dd7599f0de3c083e",
|
||||
"rev": "6779edbf5b00060920e638197d076d1eb0bdadda",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -434,11 +407,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1781622756,
|
||||
"narHash": "sha256-JrPh4M6S7aPsEE9tOENuZrxC6o2szSLlK+t4+nLke9s=",
|
||||
"lastModified": 1788335262,
|
||||
"narHash": "sha256-3jBEq8avfzlrsY4UpW4d5TOmm7ocseZfnitEJhqauyc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "08018c72174a4df5657f8d94178ac69fb9c243e5",
|
||||
"rev": "44d95795ee2d475b3d687325e26dcf4ca9104557",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -450,11 +423,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1781836206,
|
||||
"narHash": "sha256-BGjXqZOcLbkjwt8smyUskR8hNl7piTg8ccpQdSTw09s=",
|
||||
"lastModified": 1788625351,
|
||||
"narHash": "sha256-HuowOcoS6Wquoa0FPdCwRZ9NkXy3kw+gz0gV2sKhBW8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d4fea6b6bfce7b55c6df36fb973205b89d7fe761",
|
||||
"rev": "8f3889588add43913e8bfbbd42a75345c857cf59",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -464,29 +437,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-2605": {
|
||||
"locked": {
|
||||
"lastModified": 1781216227,
|
||||
"narHash": "sha256-9mUW6gNwoN2SWc/l0fW4svPNOulXLl8ijqKyeSOGgJE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a0374025a863d007d98e3297f6aa46cc3141c2f0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-26.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1777168982,
|
||||
"narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=",
|
||||
"lastModified": 1788057806,
|
||||
"narHash": "sha256-DTQSMxzDWmT0zhguthvegnVkn7CFqGCv4IHCzk5ZUpM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14",
|
||||
"rev": "596e2e3940e09b2abbeb03f75fa1828c57fcd72c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -513,11 +470,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1781577229,
|
||||
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
|
||||
"lastModified": 1788614874,
|
||||
"narHash": "sha256-7QYjT2vHLuX9Z1pdxHXDKCbh1CR3D/2rywB9Tx0MPRg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
|
||||
"rev": "c043004d1c6985732bcc1cbc5a9c9aecbbb4e0f0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -527,34 +484,26 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"ntfsplus": {
|
||||
"inputs": {
|
||||
"linux-ntfs": "linux-ntfs",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1774317576,
|
||||
"narHash": "sha256-HSDFaDLvfS/NqJlXbHh9135DEpqH6JrNuWqbu3YPcTg=",
|
||||
"owner": "cmspam",
|
||||
"repo": "ntfsplus-flake",
|
||||
"rev": "e22d1bcbac31b4e6484d32c503396e8184650215",
|
||||
"lastModified": 1771207753,
|
||||
"narHash": "sha256-b9uG8yN50DRQ6A7JdZBfzq718ryYrlmGgqkRm9OOwCE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d1c15b7d5806069da59e819999d70e1cec0760bf",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cmspam",
|
||||
"repo": "ntfsplus-flake",
|
||||
"type": "github"
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"peerix": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1773939829,
|
||||
@@ -580,11 +529,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775856943,
|
||||
"narHash": "sha256-b7Mp7P+q2Md5AGt4rjHfMcBykzMumFTen10ST++AuTU=",
|
||||
"lastModified": 1785762349,
|
||||
"narHash": "sha256-jZhZkzAwc7f3exzcTDJWP2WCAchCv0iNC3UF/QsahdQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "plasma-manager",
|
||||
"rev": "a524a6160e6df89f7673ba293cf7d78b559eb1a5",
|
||||
"rev": "a19a2a029fa180911bd89c554dca1616e10f4c1d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -603,11 +552,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765016596,
|
||||
"narHash": "sha256-rhSqPNxDVow7OQKi4qS5H8Au0P4S3AYbawBSmJNUtBQ=",
|
||||
"lastModified": 1781733627,
|
||||
"narHash": "sha256-U3yTuGBnmXvXoQI3qkpfEDsn9RovQPAjN7ndRco+3u0=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "548fc44fca28a5e81c5d6b846e555e6b9c2a5a3c",
|
||||
"rev": "3bbec39bc90eadfa031e6f3b77272f3f60803e39",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -622,16 +571,16 @@
|
||||
"bun2nix": "bun2nix",
|
||||
"claude-code": "claude-code",
|
||||
"home-manager": "home-manager",
|
||||
"homebrew": "homebrew",
|
||||
"lanzaboote": "lanzaboote",
|
||||
"nix-cachyos-kernel": "nix-cachyos-kernel",
|
||||
"nix-darwin": "nix-darwin",
|
||||
"nix-flatpak": "nix-flatpak",
|
||||
"nix-skills": "nix-skills",
|
||||
"nix-sweep": "nix-sweep",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-2605": "nixpkgs-2605",
|
||||
"nixpkgs-linuxeol": "nixpkgs-linuxeol",
|
||||
"ntfsplus": "ntfsplus",
|
||||
"peerix": "peerix",
|
||||
"plasma-manager": "plasma-manager"
|
||||
}
|
||||
@@ -644,11 +593,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765075567,
|
||||
"narHash": "sha256-KFDCdQcHJ0hE3Nt5Gm5enRIhmtEifAjpxgUQ3mzSJpA=",
|
||||
"lastModified": 1782012058,
|
||||
"narHash": "sha256-9mWUnReOUXfKjZuJAL/bAFH3LUyECTRtXgSNVjRw3UY=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "769156779b41e8787a46ca3d7d76443aaf68be6f",
|
||||
"rev": "8534567325bd8a8d2928e6afd81e0a87d19efd3c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -659,16 +608,16 @@
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"lastModified": 1776166891,
|
||||
"narHash": "sha256-bI8yrEGjrohR5hkQox7UrxDH7XqrYMwI8SL/LrJ1+S8=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"repo": "triplet",
|
||||
"rev": "6de7bc09397911ce03636afbcf6118745ab2cda0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"repo": "triplet",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -695,11 +644,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775636079,
|
||||
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
|
||||
"lastModified": 1784369104,
|
||||
"narHash": "sha256-47cxbcZODibHv3rELFQ9vZly0vUNkND/atn/U7HLeb0=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
|
||||
"rev": "df3c0640565d04a0261253cdd89fce78ec50168a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
nixpkgs-2605.url = "github:NixOS/nixpkgs/nixos-26.05";
|
||||
nixpkgs-linuxeol.url = "github:NixOS/nixpkgs/162f04bf3dd222187388bc990a8678170d594419";
|
||||
nixos-hardware = {
|
||||
url = "github:NixOS/nixos-hardware/master";
|
||||
@@ -31,7 +30,7 @@
|
||||
inputs.home-manager.follows = "home-manager";
|
||||
};
|
||||
lanzaboote = {
|
||||
url = "github:nix-community/lanzaboote/v1.0.0";
|
||||
url = "github:nix-community/lanzaboote/v1.1.0";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
claude-code = {
|
||||
@@ -44,16 +43,11 @@
|
||||
};
|
||||
peerix = {
|
||||
url = "git+ssh://git@gitea.lumpiasty.xyz/Lumpiasty/peerix.git"; # fork of github:sophronesis/peerix
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
acer-wmi-ext = {
|
||||
url = "github:Lumpiasty/acer-wmi-ext/main";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
ntfsplus = {
|
||||
url = "github:cmspam/ntfsplus-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-skills = {
|
||||
url = "github:sudosubin/nix-skills";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -63,9 +57,17 @@
|
||||
url = "github:nix-community/bun2nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-darwin = {
|
||||
url = "github:nix-darwin/nix-darwin/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
homebrew = {
|
||||
url = "github:koalalorenzo/home-manager-brew";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixos-hardware, ... }@inputs:
|
||||
outputs = { self, nixos-hardware, nix-darwin, ... }@inputs:
|
||||
{
|
||||
nixosConfigurations =
|
||||
let
|
||||
@@ -76,5 +78,29 @@
|
||||
acer = mkNixosSystem {} hosts/acer.nix;
|
||||
gaming-pc = mkNixosSystem {} hosts/gaming-pc.nix;
|
||||
};
|
||||
darwinConfigurations."MacBook-Pro-Macbook" = nix-darwin.lib.darwinSystem {
|
||||
modules = [
|
||||
((import ./hosts/macbook.nix) self)
|
||||
inputs.home-manager.darwinModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.verbose = true;
|
||||
home-manager.users.macbookpro = { ... }: {
|
||||
imports = [
|
||||
./home-modules
|
||||
./users/user/home.nix
|
||||
inputs.homebrew.homeManagerModules.default
|
||||
];
|
||||
lumpiastyHome.macos = true;
|
||||
lumpiastyHome.brew = true;
|
||||
};
|
||||
nixpkgs.overlays = [
|
||||
inputs.claude-code.overlays.default
|
||||
inputs.nix-skills.overlays.default
|
||||
] ++ (import ./overlays/pkgs.nix { bun2nix = inputs.bun2nix; });
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
brewPath = config.homebrew.brewPath;
|
||||
in {
|
||||
options.lumpiastyHome.brew = lib.mkEnableOption "Homebrew integration via home-manager-brew";
|
||||
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf config.lumpiastyHome.brew {
|
||||
homebrew = {
|
||||
enable = true;
|
||||
brewInstall = true;
|
||||
update = true;
|
||||
upgrade = true;
|
||||
cleanup = true;
|
||||
casks = [
|
||||
"steam"
|
||||
];
|
||||
};
|
||||
|
||||
home.activation.homebrewInstall = lib.mkForce (
|
||||
lib.hm.dag.entryAfter ["installPackages" "linkGeneration" "createGpgHomedir"] (
|
||||
if config.homebrew.brewInstall then ''
|
||||
if [ ! -f "${brewPath}" ]; then
|
||||
echo "Homebrew not found (${brewPath}), installing..."
|
||||
export PATH="${pkgs.curl}/bin:${pkgs.bash}/bin:${pkgs.coreutils}/bin:${pkgs.gnugrep}/bin:${pkgs.gnused}/bin:$PATH"
|
||||
${pkgs.bash}/bin/bash -c "$(${pkgs.curl}/bin/curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
fi
|
||||
'' else ""
|
||||
)
|
||||
);
|
||||
})
|
||||
(lib.mkIf (!config.lumpiastyHome.brew) {
|
||||
homebrew.enable = lib.mkForce false;
|
||||
})
|
||||
];
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
{ flake, pkgs, lib, ... }:
|
||||
{ flake, pkgs, lib, osConfig ? null, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
@@ -6,6 +6,11 @@
|
||||
./pc.nix
|
||||
./dev.nix
|
||||
./gaming.nix
|
||||
./fhsBash.nix
|
||||
./linux.nix
|
||||
./macos.nix
|
||||
./brew.nix
|
||||
] ++ lib.optionals (osConfig.lumpiasty.enablePlasma) [
|
||||
./plasma.nix
|
||||
];
|
||||
}
|
||||
+9
-12
@@ -34,10 +34,13 @@
|
||||
|
||||
programs.vscodium = {
|
||||
enable = true;
|
||||
profiles.default.extensions = with pkgs; [
|
||||
vscode-extensions.mkhl.direnv
|
||||
vscode-extensions.jnoortheen.nix-ide
|
||||
vscode-extensions.hashicorp.hcl
|
||||
profiles.default.extensions = with pkgs.vscode-extensions; [
|
||||
mkhl.direnv
|
||||
jnoortheen.nix-ide
|
||||
hashicorp.hcl
|
||||
ms-python.python
|
||||
ms-python.vscode-python-envs
|
||||
ms-python.debugpy
|
||||
];
|
||||
argvSettings = {
|
||||
# https://github.com/microsoft/vscode/issues/262065#issue-3328712020
|
||||
@@ -59,8 +62,6 @@
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
python312
|
||||
python312Packages.python-lsp-server
|
||||
nil
|
||||
kubectl
|
||||
kubectx
|
||||
@@ -72,18 +73,14 @@
|
||||
docker
|
||||
docker-buildx
|
||||
proton-vpn
|
||||
wl-clipboard
|
||||
devenv
|
||||
dig
|
||||
whois
|
||||
mtr
|
||||
traceroute
|
||||
nodejs_24
|
||||
codex
|
||||
claude-code
|
||||
oh-my-pi
|
||||
winbox4
|
||||
amdgpu_top
|
||||
dua
|
||||
];
|
||||
|
||||
@@ -120,7 +117,7 @@
|
||||
User = "root";
|
||||
ControlMaster = "auto";
|
||||
ControlPersist = "3600";
|
||||
ControlPath = "/run/user/%i/ssh-socket-%r@%h:%p";
|
||||
ControlPath = lib.mkIf config.lumpiastyHome.linux "/run/user/%i/ssh-socket-%r@%h:%p";
|
||||
ServerAliveInterval = 20;
|
||||
};
|
||||
|
||||
@@ -162,7 +159,7 @@
|
||||
''
|
||||
);
|
||||
skills = with pkgs.skills; {
|
||||
caveman = majiayu000."claude-skill-registry".caveman + "/";
|
||||
# caveman = majiayu000."claude-skill-registry".caveman + "/";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
{ config, lib, pkgs, osConfig, ... }:
|
||||
|
||||
{
|
||||
options.lumpiastyHome.fhs = lib.mkEnableOption "FHS bash wrapper";
|
||||
|
||||
config = lib.mkIf (config.lumpiastyHome.fhs) {
|
||||
home.packages = [
|
||||
(pkgs.buildFHSEnv {
|
||||
name = "fhs";
|
||||
targetPkgs = p: [];
|
||||
runScript = "bash";
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -7,7 +7,7 @@
|
||||
services.gpg-agent = {
|
||||
enable = true;
|
||||
enableSshSupport = true;
|
||||
pinentry.package = pkgs.pinentry-qt;
|
||||
pinentry.package = lib.mkIf config.lumpiastyHome.linux pkgs.pinentry-qt;
|
||||
extraConfig = ''
|
||||
listen-backlog 256
|
||||
'';
|
||||
@@ -15,11 +15,12 @@
|
||||
|
||||
programs.gpg.enable = true;
|
||||
|
||||
programs.git.signing = {
|
||||
format = "openpgp";
|
||||
key = "EA287B39E5F69945";
|
||||
signByDefault = true;
|
||||
};
|
||||
programs.git.signing =
|
||||
lib.mkIf config.lumpiastyHome.linux { # TODO: on macos too
|
||||
format = "openpgp";
|
||||
key = "EA287B39E5F69945";
|
||||
signByDefault = true;
|
||||
};
|
||||
|
||||
programs.bash.enable = lib.mkDefault true;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
{ config, lib, pkgs, osConfig, ... }:
|
||||
|
||||
{
|
||||
options.lumpiastyHome.linux = lib.mkEnableOption "Linux specific things";
|
||||
config = lib.mkIf config.lumpiastyHome.linux {
|
||||
services.easyeffects.enable = true;
|
||||
systemd.user.services.easyeffects.Service = lib.mkIf osConfig.lumpiasty.audioRt.cpuPartitioning {
|
||||
# Move easyeffects into audio.slice (defined in modules/desktop/audio-rt.nix)
|
||||
# which has AllowedCPUs=<audioCpus> — pins all DSP work to the reserved cores.
|
||||
Slice = "audio.slice";
|
||||
};
|
||||
|
||||
programs.chromium.enable = true;
|
||||
programs.chromium.package = pkgs.ungoogled-chromium;
|
||||
|
||||
home.packages = with pkgs; (lib.optionals config.lumpiastyHome.dev [
|
||||
wl-clipboard
|
||||
traceroute
|
||||
amdgpu_top
|
||||
] ++ lib.optionals config.lumpiastyHome.linux [
|
||||
pass-wayland
|
||||
libreoffice-qt-stable
|
||||
vlc
|
||||
gimp
|
||||
ventoy-full-qt
|
||||
teamspeak6-client
|
||||
]);
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{ config, lib, pkgs, osConfig, ... }:
|
||||
|
||||
{
|
||||
options.lumpiastyHome.macos = lib.mkEnableOption "Macos specific things";
|
||||
|
||||
config = lib.mkIf config.lumpiastyHome.macos {
|
||||
targets.darwin.copyApps.enable = true;
|
||||
targets.darwin.linkApps.enable = false;
|
||||
};
|
||||
}
|
||||
+7
-23
@@ -8,38 +8,22 @@
|
||||
vesktop
|
||||
# Manual update, not yet in nixpkgs as for now
|
||||
spotify
|
||||
pass-wayland
|
||||
teamspeak6-client
|
||||
easyeffects
|
||||
libreoffice-qt6-fresh
|
||||
vlc
|
||||
inkscape
|
||||
qtpass
|
||||
signal-desktop
|
||||
transmission_4-qt6
|
||||
transmission_4-qt
|
||||
thunderbird
|
||||
pwgen
|
||||
siyuan
|
||||
gimp
|
||||
ventoy-full-qt
|
||||
];
|
||||
programs.librewolf.enable = true;
|
||||
services.easyeffects.enable = true;
|
||||
systemd.user.services.easyeffects.Service = lib.mkIf osConfig.lumpiasty.audioRt.cpuPartitioning {
|
||||
# Move easyeffects into audio.slice (defined in modules/desktop/audio-rt.nix)
|
||||
# which has AllowedCPUs=<audioCpus> — pins all DSP work to the reserved cores.
|
||||
Slice = "audio.slice";
|
||||
};
|
||||
|
||||
programs.chromium.enable = true;
|
||||
programs.chromium.package = pkgs.ungoogled-chromium;
|
||||
|
||||
services.flatpak.remotes = [{
|
||||
name = "flathub"; location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||
}];
|
||||
services.flatpak.packages = [
|
||||
# "org.onlyoffice.desktopeditors"
|
||||
];
|
||||
# services.flatpak.remotes = [{
|
||||
# name = "flathub"; location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
||||
# }];
|
||||
# services.flatpak.packages = [
|
||||
# # "org.onlyoffice.desktopeditors"
|
||||
# ];
|
||||
|
||||
# Vesktop settings
|
||||
# Nope, TODO
|
||||
|
||||
@@ -75,6 +75,7 @@ rec {
|
||||
enable = true;
|
||||
cpuPartitioning = false;
|
||||
performanceGovernor = false;
|
||||
optimisedBinaries = false;
|
||||
};
|
||||
sshd = true;
|
||||
users.user = true;
|
||||
@@ -94,6 +95,7 @@ rec {
|
||||
gaming = true;
|
||||
enableTailscale = true;
|
||||
ipv6Mostly = true;
|
||||
scx = false;
|
||||
};
|
||||
|
||||
virtualisation.vmVariant = {
|
||||
|
||||
+3
-3
@@ -53,7 +53,7 @@
|
||||
|
||||
# Kernel
|
||||
# boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.kernelPackages = pkgs.linuxKernel.packages.linux_7_0;
|
||||
boot.kernelPackages = pkgs.cachyosKernels.linuxPackages-cachyos-bore-lto-x86_64-v3;
|
||||
|
||||
# Swap
|
||||
zramSwap = {
|
||||
@@ -102,8 +102,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
# Use ntfs-plus instead driver
|
||||
services.ntfsplus.enable = true;
|
||||
# Force disable ntfs-3g driver
|
||||
boot.supportedFilesystems.ntfs = lib.mkForce false;
|
||||
|
||||
@@ -119,6 +117,8 @@
|
||||
gaming = true;
|
||||
# users.drugi = true;
|
||||
enableTailscale = true;
|
||||
scx = true;
|
||||
ipv6Mostly = true;
|
||||
};
|
||||
|
||||
virtualisation.vmVariant = {
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
self: { pkgs, ... }: {
|
||||
imports = [ ../modules/options.nix ];
|
||||
|
||||
# List packages installed in system profile. To search by name, run:
|
||||
# $ nix-env -qaP | grep wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim
|
||||
curl
|
||||
git
|
||||
];
|
||||
|
||||
# Necessary for using flakes on this system.
|
||||
nix.settings.experimental-features = "nix-command flakes";
|
||||
|
||||
# Enable alternative shell support in nix-darwin.
|
||||
# programs.fish.enable = true;
|
||||
|
||||
# Set Git commit hash for darwin-version.
|
||||
system.configurationRevision = self.rev or self.dirtyRev or null;
|
||||
|
||||
# Used for backwards compatibility, please read the changelog before changing.
|
||||
# $ darwin-rebuild changelog
|
||||
system.stateVersion = 6;
|
||||
|
||||
# The platform the configuration will be used on.
|
||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||
|
||||
users.users.macbookpro = {
|
||||
home = "/Users/macbookpro";
|
||||
};
|
||||
|
||||
lumpiasty.pc = true;
|
||||
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
}
|
||||
@@ -9,5 +9,6 @@ lib.mkIf condition (
|
||||
../home-modules
|
||||
home
|
||||
];
|
||||
lumpiastyHome.linux = true;
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
self,
|
||||
nixpkgs,
|
||||
nixpkgs-2605,
|
||||
home-manager,
|
||||
nix-flatpak,
|
||||
plasma-manager,
|
||||
@@ -10,7 +9,6 @@
|
||||
nix-sweep,
|
||||
peerix,
|
||||
acer-wmi-ext,
|
||||
ntfsplus,
|
||||
nix-skills,
|
||||
nixpkgs-linuxeol,
|
||||
bun2nix,
|
||||
@@ -26,14 +24,10 @@ nixpkgs.lib.nixosSystem {
|
||||
inherit plasma-manager;
|
||||
inherit acer-wmi-ext;
|
||||
inherit nixpkgs-linuxeol;
|
||||
inherit ntfsplus;
|
||||
};
|
||||
modules = [
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
(final: prev: {
|
||||
librewolf = nixpkgs-2605.legacyPackages.${prev.system}.librewolf;
|
||||
})
|
||||
claude-code.overlays.default
|
||||
acer-wmi-ext.overlays.default
|
||||
nix-skills.overlays.default
|
||||
|
||||
+3
-2
@@ -2,13 +2,13 @@
|
||||
|
||||
{
|
||||
imports = [
|
||||
./options.nix
|
||||
|
||||
hardware/intel-cpu.nix
|
||||
hardware/amd-cpu.nix
|
||||
hardware/no-mitigations.nix
|
||||
hardware/acer-undervolt.nix
|
||||
|
||||
system/ntfsplus.nix
|
||||
system/roles.nix
|
||||
system/nixpkgs.nix
|
||||
system/location.nix
|
||||
system/shell.nix
|
||||
@@ -18,6 +18,7 @@
|
||||
system/ipv6-mostly.nix
|
||||
system/nix.nix
|
||||
system/zfs.nix
|
||||
system/ntfsplus.nix
|
||||
|
||||
desktop/plasma.nix
|
||||
desktop/touchpad.nix
|
||||
|
||||
@@ -38,72 +38,7 @@ let
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options.lumpiasty.audioRt = {
|
||||
enable = lib.mkEnableOption "Audio RT scheduling and CPU isolation";
|
||||
|
||||
audioCpus = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "12-15";
|
||||
description = "CPU list reserved for audio services (systemd cpuset syntax).";
|
||||
};
|
||||
|
||||
nonAudioCpus = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0-11";
|
||||
description = "CPU list for everything else.";
|
||||
};
|
||||
|
||||
# ------ Individual optimization toggles ------
|
||||
|
||||
cpuPartitioning = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Cgroup-based CPU partitioning via dedicated audio.slice and
|
||||
restricted app/session/background slices.
|
||||
'';
|
||||
};
|
||||
|
||||
rtLimits = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Raise rlimits (RTPRIO=95, MEMLOCK=infinity) for the audio group
|
||||
so PipeWire's module-rt can set SCHED_FIFO 88 directly instead
|
||||
of going through RTKit's priority-10 ceiling.
|
||||
'';
|
||||
};
|
||||
|
||||
performanceGovernor = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Keep cpufreq governor `performance` on the audio cores so they
|
||||
stay boosted regardless of measured utilization.
|
||||
'';
|
||||
};
|
||||
|
||||
ananicy = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Run ananicy-cpp with a rule that pins easyeffects to nice -12 so
|
||||
its non-RT DSP threads get scheduler preference under load.
|
||||
'';
|
||||
};
|
||||
|
||||
optimisedBinaries = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = cfg.enable;
|
||||
description = ''
|
||||
Rebuild easyeffects and its DSP dependencies with -march=znver4 -O3
|
||||
(and LTO for cmake builds, target-cpu for rust builds).
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkMerge [
|
||||
{ config = lib.mkMerge [
|
||||
|
||||
# --- Optimised binary builds ---------------------------------------------
|
||||
(lib.mkIf (cfg.enable && cfg.optimisedBinaries) {
|
||||
@@ -223,6 +158,7 @@ in
|
||||
services.ananicy = {
|
||||
enable = true;
|
||||
package = pkgs.ananicy-cpp;
|
||||
rulesProvider = pkgs.ananicy-cpp;
|
||||
extraRules = [
|
||||
{ name = "easyeffects"; type = "Audio"; nice = -12; }
|
||||
];
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.enableGnome = lib.mkEnableOption "Enable Gnome desktop";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.enableGnome {
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.enablePlasma = lib.mkEnableOption "Enable Plasma6 desktop";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.enablePlasma {
|
||||
# Enable the X11 windowing system.
|
||||
services.xserver.enable = true;
|
||||
@@ -33,34 +31,7 @@
|
||||
|
||||
# Use wayland in electron apps
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
environment.systemPackages =
|
||||
(lib.pipe (builtins.attrValues pkgs.kdePackages.gear) [
|
||||
(builtins.filter (pkg: !pkg.meta.broken))
|
||||
# Exclude neochat and itinerary due to known vulnerabilities
|
||||
(builtins.filter (pkg: pkg.pname != "neochat"))
|
||||
(builtins.filter (pkg: pkg.pname != "itinerary"))
|
||||
|
||||
# Exclude angelfish due to build failure
|
||||
(builtins.filter (pkg: pkg.pname != "angelfish"))
|
||||
|
||||
# Exclude step due to build failure
|
||||
(builtins.filter (pkg: pkg.pname != "step"))
|
||||
|
||||
# Exclude plasma-vault due to build failure
|
||||
(builtins.filter (pkg: pkg.pname != "plasma-vault"))
|
||||
|
||||
# Exclude kalzium due to build failure
|
||||
(builtins.filter (pkg: pkg.pname != "kalzium"))
|
||||
|
||||
# Exclude audiocd-kio due to build failure
|
||||
(builtins.filter (pkg: pkg.pname != "audiocd-kio"))
|
||||
|
||||
# Exclude audiotube due to build failure
|
||||
(builtins.filter (pkg: pkg.pname != "audiotube"))
|
||||
|
||||
# Exclude plasma-mobile
|
||||
(builtins.filter (pkg: pkg.pname != "plasma-mobile"))
|
||||
]) ++ [
|
||||
environment.systemPackages = [
|
||||
# Printing support in Plasma settings
|
||||
pkgs.system-config-printer
|
||||
];
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
{
|
||||
|
||||
options.lumpiasty.enablePulseaudio = lib.mkEnableOption "Enable Plasma6 desktop";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.enablePulseaudio {
|
||||
# Enable sound with pipewire. Dont forget after 24.05
|
||||
services.pulseaudio.enable = false;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.enableTailscale = lib.mkEnableOption "Enable Tailscale VPN";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.enableTailscale {
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
|
||||
@@ -1,177 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{ ... }:
|
||||
|
||||
# Touch pad configuration interface
|
||||
|
||||
let
|
||||
scrollMethods = {
|
||||
twoFingers = "twoFingers";
|
||||
touchPadEdges = "touchPadEdges";
|
||||
};
|
||||
rightClickMethods = {
|
||||
bottomRight = "bottomRight";
|
||||
twoFingers = "twoFingers";
|
||||
};
|
||||
accelerationProfiles = {
|
||||
none = "none";
|
||||
default = "default";
|
||||
};
|
||||
in
|
||||
# Touch pad configuration interface.
|
||||
# Options are declared in ./options.nix; config is applied by home-modules/plasma.nix.
|
||||
{
|
||||
# Copy of https://github.com/nix-community/plasma-manager/blob/trunk/modules/input.nix#L69
|
||||
options.lumpiasty.touchPad = {
|
||||
enable = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable the touchpad.
|
||||
'';
|
||||
};
|
||||
name = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
example = "PNP0C50:00 0911:5288 Touchpad";
|
||||
description = ''
|
||||
The name of the touchpad.
|
||||
|
||||
This can be found by looking at the `Name` attribute in the section in
|
||||
the `/proc/bus/input/devices` path belonging to the touchpad.
|
||||
'';
|
||||
};
|
||||
vendorId = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
example = "0911";
|
||||
description = ''
|
||||
The vendor ID of the touchpad.
|
||||
|
||||
This can be found by looking at the `Vendor` attribute in the section in
|
||||
the `/proc/bus/input/devices` path belonging to the touchpad.
|
||||
'';
|
||||
};
|
||||
productId = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
example = "5288";
|
||||
description = ''
|
||||
The product ID of the touchpad.
|
||||
|
||||
This can be found by looking at the `Product` attribute in the section in
|
||||
the `/proc/bus/input/devices` path belonging to the touchpad.
|
||||
'';
|
||||
};
|
||||
disableWhileTyping = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to disable the touchpad while typing.
|
||||
'';
|
||||
};
|
||||
leftHanded = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = false;
|
||||
description = ''
|
||||
Whether to swap the left and right buttons.
|
||||
'';
|
||||
};
|
||||
middleButtonEmulation = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = false;
|
||||
description = ''
|
||||
Whether to enable middle mouse click emulation by pressing the left and right buttons at the same time.
|
||||
Activating this increases the click latency by 50ms.
|
||||
'';
|
||||
};
|
||||
pointerSpeed = lib.mkOption {
|
||||
type = with lib.types; nullOr (numbers.between (-1) 1);
|
||||
default = null;
|
||||
example = "0";
|
||||
description = ''
|
||||
How fast the pointer moves.
|
||||
'';
|
||||
};
|
||||
accelerationProfile = lib.mkOption {
|
||||
type = with lib.types; nullOr (enum (builtins.attrNames accelerationProfiles));
|
||||
default = null;
|
||||
example = "none";
|
||||
description = "Set the touchpad acceleration profile.";
|
||||
apply = profile: if (profile == null) then null else accelerationProfiles."${profile}";
|
||||
};
|
||||
naturalScroll = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable natural scrolling for the touchpad.
|
||||
'';
|
||||
};
|
||||
tapToClick = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable tap-to-click for the touchpad.
|
||||
'';
|
||||
};
|
||||
tapAndDrag = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable tap-and-drag for the touchpad.
|
||||
'';
|
||||
};
|
||||
tapDragLock = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable the tap-and-drag lock for the touchpad.
|
||||
'';
|
||||
};
|
||||
scrollMethod = lib.mkOption {
|
||||
type = with lib.types; nullOr (enum (builtins.attrNames scrollMethods));
|
||||
default = null;
|
||||
example = "touchPadEdges";
|
||||
description = ''
|
||||
Configure how scrolling is performed on the touchpad.
|
||||
'';
|
||||
apply = method: if (method == null) then null else scrollMethods."${method}";
|
||||
};
|
||||
scrollSpeed = lib.mkOption {
|
||||
type = with lib.types; nullOr (numbers.between 0.1 20);
|
||||
default = null;
|
||||
example = 0.1;
|
||||
description = ''
|
||||
Configure the scrolling speed of the touchpad. Lower is slower.
|
||||
If unset, KDE Plasma will default to 0.3.
|
||||
'';
|
||||
};
|
||||
rightClickMethod = lib.mkOption {
|
||||
type = with lib.types; nullOr (enum (builtins.attrNames rightClickMethods));
|
||||
default = null;
|
||||
example = "twoFingers";
|
||||
description = ''
|
||||
Configure how right-clicking is performed on the touchpad.
|
||||
'';
|
||||
apply = method: if (method == null) then null else rightClickMethods."${method}";
|
||||
};
|
||||
twoFingerTap = lib.mkOption {
|
||||
type =
|
||||
with lib.types;
|
||||
nullOr (enum [
|
||||
"rightClick"
|
||||
"middleClick"
|
||||
]);
|
||||
default = null;
|
||||
example = "twoFingers";
|
||||
description = ''
|
||||
Configure what a two-finger tap maps to on the touchpad.
|
||||
'';
|
||||
apply = v: if (v == null) then null else (v == "middleClick");
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
# persist values across boot / resume.
|
||||
|
||||
{
|
||||
options.lumpiasty.acerUndervolt = lib.mkEnableOption "ryzenadj + ryzen_smu tooling for Acer 8845HS";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.acerUndervolt {
|
||||
boot.kernelModules = [ "ryzen_smu" ];
|
||||
boot.extraModulePackages = [ config.boot.kernelPackages.ryzen-smu ];
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.amdCpu = lib.mkEnableOption "Enable amd CPU";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.amdCpu {
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = true;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.intelCpu = lib.mkEnableOption "Enable intel CPU";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.intelCpu {
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
# hardware.cpu.intel.updateMicrocode = true;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.noMitigations = lib.mkEnableOption "Disable mitigations";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.noMitigations {
|
||||
boot.kernelParams = [
|
||||
"mitigations=off"
|
||||
|
||||
@@ -0,0 +1,258 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
let
|
||||
scrollMethods = {
|
||||
twoFingers = "twoFingers";
|
||||
touchPadEdges = "touchPadEdges";
|
||||
};
|
||||
rightClickMethods = {
|
||||
bottomRight = "bottomRight";
|
||||
twoFingers = "twoFingers";
|
||||
};
|
||||
accelerationProfiles = {
|
||||
none = "none";
|
||||
default = "default";
|
||||
};
|
||||
in
|
||||
{
|
||||
options.lumpiasty = {
|
||||
pc = lib.mkEnableOption "Enable options specific to personal computers";
|
||||
laptop = lib.mkEnableOption "Enable options specific to laptops";
|
||||
intelCpu = lib.mkEnableOption "Enable intel CPU";
|
||||
amdCpu = lib.mkEnableOption "Enable amd CPU";
|
||||
noMitigations = lib.mkEnableOption "Disable mitigations";
|
||||
acerUndervolt = lib.mkEnableOption "ryzenadj + ryzen_smu tooling for Acer 8845HS";
|
||||
enablePlasma = lib.mkEnableOption "Enable Plasma6 desktop";
|
||||
enableGnome = lib.mkEnableOption "Enable Gnome desktop";
|
||||
enablePulseaudio = lib.mkEnableOption "Enable Pulseaudio/Pipewire";
|
||||
enableTailscale = lib.mkEnableOption "Enable Tailscale VPN";
|
||||
sshd = lib.mkEnableOption "Enable OpenSSH server";
|
||||
gaming = lib.mkEnableOption "Enable options specific to gaming computers";
|
||||
scx = lib.mkEnableOption "Enable sched-ext";
|
||||
ipv6Mostly = lib.mkEnableOption "Enable IPv6-mostly (RFC 8925 + CLAT/464XLAT) support in NetworkManager";
|
||||
|
||||
users = {
|
||||
user = lib.mkEnableOption "Create user \"user\"";
|
||||
drugi = lib.mkEnableOption "Create user \"drugi\"";
|
||||
};
|
||||
|
||||
touchPad = {
|
||||
enable = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable the touchpad.
|
||||
'';
|
||||
};
|
||||
name = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
example = "PNP0C50:00 0911:5288 Touchpad";
|
||||
description = ''
|
||||
The name of the touchpad.
|
||||
|
||||
This can be found by looking at the `Name` attribute in the section in
|
||||
the `/proc/bus/input/devices` path belonging to the touchpad.
|
||||
'';
|
||||
};
|
||||
vendorId = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
example = "0911";
|
||||
description = ''
|
||||
The vendor ID of the touchpad.
|
||||
|
||||
This can be found by looking at the `Vendor` attribute in the section in
|
||||
the `/proc/bus/input/devices` path belonging to the touchpad.
|
||||
'';
|
||||
};
|
||||
productId = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
example = "5288";
|
||||
description = ''
|
||||
The product ID of the touchpad.
|
||||
|
||||
This can be found by looking at the `Product` attribute in the section in
|
||||
the `/proc/bus/input/devices` path belonging to the touchpad.
|
||||
'';
|
||||
};
|
||||
disableWhileTyping = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to disable the touchpad while typing.
|
||||
'';
|
||||
};
|
||||
leftHanded = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = false;
|
||||
description = ''
|
||||
Whether to swap the left and right buttons.
|
||||
'';
|
||||
};
|
||||
middleButtonEmulation = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = false;
|
||||
description = ''
|
||||
Whether to enable middle mouse click emulation by pressing the left and right buttons at the same time.
|
||||
Activating this increases the click latency by 50ms.
|
||||
'';
|
||||
};
|
||||
pointerSpeed = lib.mkOption {
|
||||
type = with lib.types; nullOr (numbers.between (-1) 1);
|
||||
default = null;
|
||||
example = "0";
|
||||
description = ''
|
||||
How fast the pointer moves.
|
||||
'';
|
||||
};
|
||||
accelerationProfile = lib.mkOption {
|
||||
type = with lib.types; nullOr (enum (builtins.attrNames accelerationProfiles));
|
||||
default = null;
|
||||
example = "none";
|
||||
description = "Set the touchpad acceleration profile.";
|
||||
apply = profile: if (profile == null) then null else accelerationProfiles."${profile}";
|
||||
};
|
||||
naturalScroll = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable natural scrolling for the touchpad.
|
||||
'';
|
||||
};
|
||||
tapToClick = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable tap-to-click for the touchpad.
|
||||
'';
|
||||
};
|
||||
tapAndDrag = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable tap-and-drag for the touchpad.
|
||||
'';
|
||||
};
|
||||
tapDragLock = lib.mkOption {
|
||||
type = with lib.types; nullOr bool;
|
||||
default = null;
|
||||
example = true;
|
||||
description = ''
|
||||
Whether to enable the tap-and-drag lock for the touchpad.
|
||||
'';
|
||||
};
|
||||
scrollMethod = lib.mkOption {
|
||||
type = with lib.types; nullOr (enum (builtins.attrNames scrollMethods));
|
||||
default = null;
|
||||
example = "touchPadEdges";
|
||||
description = ''
|
||||
Configure how scrolling is performed on the touchpad.
|
||||
'';
|
||||
apply = method: if (method == null) then null else scrollMethods."${method}";
|
||||
};
|
||||
scrollSpeed = lib.mkOption {
|
||||
type = with lib.types; nullOr (numbers.between 0.1 20);
|
||||
default = null;
|
||||
example = 0.1;
|
||||
description = ''
|
||||
Configure the scrolling speed of the touchpad. Lower is slower.
|
||||
If unset, KDE Plasma will default to 0.3.
|
||||
'';
|
||||
};
|
||||
rightClickMethod = lib.mkOption {
|
||||
type = with lib.types; nullOr (enum (builtins.attrNames rightClickMethods));
|
||||
default = null;
|
||||
example = "twoFingers";
|
||||
description = ''
|
||||
Configure how right-clicking is performed on the touchpad.
|
||||
'';
|
||||
apply = method: if (method == null) then null else rightClickMethods."${method}";
|
||||
};
|
||||
twoFingerTap = lib.mkOption {
|
||||
type =
|
||||
with lib.types;
|
||||
nullOr (enum [
|
||||
"rightClick"
|
||||
"middleClick"
|
||||
]);
|
||||
default = null;
|
||||
example = "twoFingers";
|
||||
description = ''
|
||||
Configure what a two-finger tap maps to on the touchpad.
|
||||
'';
|
||||
apply = v: if (v == null) then null else (v == "middleClick");
|
||||
};
|
||||
};
|
||||
|
||||
audioRt = {
|
||||
enable = lib.mkEnableOption "Audio RT scheduling and CPU isolation";
|
||||
|
||||
audioCpus = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "12-15";
|
||||
description = "CPU list reserved for audio services (systemd cpuset syntax).";
|
||||
};
|
||||
|
||||
nonAudioCpus = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0-11";
|
||||
description = "CPU list for everything else.";
|
||||
};
|
||||
|
||||
cpuPartitioning = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.lumpiasty.audioRt.enable;
|
||||
description = ''
|
||||
Cgroup-based CPU partitioning via dedicated audio.slice and
|
||||
restricted app/session/background slices.
|
||||
'';
|
||||
};
|
||||
|
||||
rtLimits = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.lumpiasty.audioRt.enable;
|
||||
description = ''
|
||||
Raise rlimits (RTPRIO=95, MEMLOCK=infinity) for the audio group
|
||||
so PipeWire's module-rt can set SCHED_FIFO 88 directly instead
|
||||
of going through RTKit's priority-10 ceiling.
|
||||
'';
|
||||
};
|
||||
|
||||
performanceGovernor = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.lumpiasty.audioRt.enable;
|
||||
description = ''
|
||||
Keep cpufreq governor `performance` on the audio cores so they
|
||||
stay boosted regardless of measured utilization.
|
||||
'';
|
||||
};
|
||||
|
||||
ananicy = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.lumpiasty.audioRt.enable;
|
||||
description = ''
|
||||
Run ananicy-cpp with a rule that pins easyeffects to nice -12 so
|
||||
its non-RT DSP threads get scheduler preference under load.
|
||||
'';
|
||||
};
|
||||
|
||||
optimisedBinaries = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = config.lumpiasty.audioRt.enable;
|
||||
description = ''
|
||||
Rebuild easyeffects and its DSP dependencies with -march=znver4 -O3
|
||||
(and LTO for cmake builds, target-cpu for rust builds).
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,7 +1,5 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{
|
||||
options.lumpiasty.gaming = lib.mkEnableOption "Enable options specific to gaming computers";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.gaming {
|
||||
# https://github.com/NixOS/nixpkgs/blob/10e687235226880ed5e9f33f1ffa71fe60f2638a/nixos/modules/programs/steam.nix
|
||||
hardware.graphics = {
|
||||
@@ -32,7 +30,7 @@
|
||||
};
|
||||
|
||||
services.scx = {
|
||||
enable = true;
|
||||
enable = config.lumpiasty.scx;
|
||||
scheduler = "scx_cosmos";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -6,22 +6,18 @@
|
||||
# defaults, mirroring the Fedora 45 change:
|
||||
# https://fedoraproject.org/wiki/Changes/IPv6-Mostly_Support_In_NetworkManager
|
||||
{
|
||||
options.lumpiasty.ipv6Mostly = lib.mkEnableOption "Enable IPv6-mostly (RFC 8925 + CLAT/464XLAT) support in NetworkManager";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.ipv6Mostly {
|
||||
# Use the patched NM build with CLAT support, without replacing pkgs.networkmanager
|
||||
# globally (which would cascade rebuilds across the entire system closure).
|
||||
networking.networkmanager.package = pkgs.networkmanager-clat;
|
||||
|
||||
# Drop a conf.d snippet that sets connection-level defaults.
|
||||
# NM reads /etc/NetworkManager/conf.d/*.conf in addition to NetworkManager.conf.
|
||||
environment.etc."NetworkManager/conf.d/99-ipv6-mostly.conf".text = ''
|
||||
networking.networkmanager.settings.connection = {
|
||||
# IPv6-mostly: automatically enable CLAT (464XLAT) and DHCPv4 option 108
|
||||
# when the network advertises PREF64 and/or option 108 (RFC 8925).
|
||||
# On networks without these, behaviour is unchanged (native IPv4 proceeds).
|
||||
[connection-defaults]
|
||||
ipv4.clat=auto
|
||||
ipv4.dhcp-ipv6-only-preferred=auto
|
||||
'';
|
||||
"ipv4.clat" = "auto";
|
||||
"ipv4.dhcp-ipv6-only-preferred" = "auto";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
+19
-1
@@ -27,6 +27,24 @@ in
|
||||
|
||||
services.peerix = {
|
||||
enable = true;
|
||||
trackerUrl = null; # Use LAN mode instead of Iroh
|
||||
|
||||
# Use an empty string (not null) to use the modern unified app
|
||||
# but with the internet tracker internally disabled.
|
||||
trackerUrl = "''";
|
||||
|
||||
# Explicitly enable UDP broadcast discovery for your local network
|
||||
lanDiscovery = true;
|
||||
|
||||
# Disable the upstream cache.nixos.org checks so you can share ALL packages
|
||||
noFilter = true;
|
||||
noVerify = true;
|
||||
|
||||
# Configure signing so Nix doesn't reject your custom unsigned packages
|
||||
privateKeyFile = "/etc/cache-priv-key.pem";
|
||||
|
||||
# Add the public key contents from `cache-pub-key.pem`
|
||||
# (If you used different keys on each machine, you can pass a list of strings
|
||||
# directly to nix.settings.extra-trusted-public-keys instead)
|
||||
publicKey = "my-lan-cache:SVN4NaqHJKxdAbWZ6wUtklmKkBUrACPg8oihH/mlp4Y=";
|
||||
};
|
||||
}
|
||||
@@ -6,6 +6,6 @@
|
||||
|
||||
nixpkgs.config.permittedInsecurePackages = [
|
||||
# Ventoy has some blobs making it insecure
|
||||
"ventoy-qt5-1.1.12"
|
||||
"ventoy-qt5-${pkgs.ventoy.version}"
|
||||
];
|
||||
}
|
||||
@@ -1,16 +1,6 @@
|
||||
From 8b5c5d23c1218a996a1d6780ca56853454813418 Mon Sep 17 00:00:00 2001
|
||||
From: Lumpiasty <arek.dzski@gmail.com>
|
||||
Date: Thu, 7 May 2026 01:50:05 +0200
|
||||
Subject: [PATCH 1/2] fix windows_names option
|
||||
|
||||
---
|
||||
super.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/super.c b/super.c
|
||||
index 875fb5a..49ad898 100644
|
||||
--- a/super.c
|
||||
+++ b/super.c
|
||||
diff --git a/fs/ntfs/super.c b/fs/ntfs/super.c
|
||||
--- a/fs/ntfs/super.c
|
||||
+++ b/fs/ntfs/super.c
|
||||
@@ -91,7 +91,7 @@ static const struct fs_parameter_spec ntfs_parameters[] = {
|
||||
fsparam_flag("sys_immutable", Opt_sys_immutable),
|
||||
fsparam_flag("nohidden", Opt_nohidden),
|
||||
@@ -20,6 +10,4 @@ index 875fb5a..49ad898 100644
|
||||
fsparam_flag("acl", Opt_acl),
|
||||
fsparam_flag("discard", Opt_discard),
|
||||
fsparam_flag("sparse", Opt_sparse),
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
+3
-15
@@ -1,16 +1,6 @@
|
||||
From 7fbf82056e26d99bfa4d5aab87ce287cd8c8cbef Mon Sep 17 00:00:00 2001
|
||||
From: Lumpiasty <arek.dzski@gmail.com>
|
||||
Date: Thu, 7 May 2026 01:56:33 +0200
|
||||
Subject: [PATCH 2/2] gate bad character check by windows_names
|
||||
|
||||
---
|
||||
namei.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/namei.c b/namei.c
|
||||
index 9e937d1..7369943 100644
|
||||
--- a/namei.c
|
||||
+++ b/namei.c
|
||||
diff --git a/fs/ntfs/namei.c b/fs/ntfs/namei.c
|
||||
--- a/fs/ntfs/namei.c
|
||||
+++ b/fs/ntfs/namei.c
|
||||
@@ -61,12 +61,12 @@ static int ntfs_check_bad_windows_name(struct ntfs_volume *vol,
|
||||
const __le16 *wc,
|
||||
unsigned int wc_len)
|
||||
@@ -27,6 +17,4 @@ index 9e937d1..7369943 100644
|
||||
/* Check for trailing space or dot. */
|
||||
if (wc_len > 0 &&
|
||||
(wc[wc_len - 1] == cpu_to_le16(' ') ||
|
||||
--
|
||||
2.53.0
|
||||
|
||||
|
||||
@@ -1,78 +1,13 @@
|
||||
{ config, pkgs, lib, ntfsplus, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
# Builds and loads the ntfsplus kernel driver (github:namjaejeon/linux-ntfs),
|
||||
# a maintained out-of-tree NTFS driver for Linux 6.1+.
|
||||
#
|
||||
# The upstream driver is used as-is, with two local patches applied on top
|
||||
# (see ntfsplus-patches/). This avoids maintaining a fork that would need
|
||||
# rebasing on every upstream update — patches are plain files that apply
|
||||
# cleanly regardless of upstream churn.
|
||||
#
|
||||
# The ntfsplus flake's nixosModule is NOT used directly. It builds the kernel
|
||||
# module as a `let` binding inside the module closure — not exposed as a
|
||||
# package in its flake outputs — so there is nothing in pkgs to override.
|
||||
# Replicating the module here is the only way to substitute a patched source.
|
||||
#
|
||||
# The ntfsplus flake (github:cmspam/ntfsplus-flake) is reused only for:
|
||||
# - its linux-ntfs source input (ntfsplus.inputs.linux-ntfs)
|
||||
# - its bundled Makefile (${ntfsplus}/Makefile)
|
||||
# The flake ships its own Makefile because the upstream repo's Makefile
|
||||
# has an ifneq KERNELRELEASE guard that breaks the out-of-tree nix build.
|
||||
#
|
||||
# The derivation is built inside this module (not via an overlay) so that
|
||||
# config.boot.kernelPackages.kernel resolves to whatever kernel the host
|
||||
# declares, with no extra indirection or per-host maintenance.
|
||||
#
|
||||
# ntfsplus is passed in via specialArgs in lib/mkNixosSystem.nix.
|
||||
|
||||
let
|
||||
cfg = config.services.ntfsplus;
|
||||
|
||||
patchedSrc = pkgs.applyPatches {
|
||||
name = "linux-ntfs-patched";
|
||||
src = ntfsplus.inputs.linux-ntfs;
|
||||
patches = [
|
||||
# fsparam_flag → fsparam_bool so windows_names=0/1 is accepted as a
|
||||
# mount option rather than being treated as a bare flag.
|
||||
./ntfsplus-patches/0001-fix-windows_names-option.patch
|
||||
# Gate the bad-character check behind NVolCheckWindowsNames so that
|
||||
# the check only runs when windows_names is actually enabled.
|
||||
./ntfsplus-patches/0002-gate-bad-character-check-by-windows_names.patch
|
||||
];
|
||||
};
|
||||
|
||||
ntfsplus-mod = pkgs.stdenv.mkDerivation {
|
||||
pname = "ntfsplus-module";
|
||||
version = ntfsplus.inputs.linux-ntfs.shortRev or ntfsplus.inputs.linux-ntfs.rev;
|
||||
src = patchedSrc;
|
||||
nativeBuildInputs = config.boot.kernelPackages.kernel.moduleBuildDependencies;
|
||||
preBuild = "cp ${ntfsplus}/Makefile Makefile";
|
||||
makeFlags = [
|
||||
"KDIR=${config.boot.kernelPackages.kernel.dev}/lib/modules/${config.boot.kernelPackages.kernel.modDirVersion}/build"
|
||||
"KVERSION=${config.boot.kernelPackages.kernel.modDirVersion}"
|
||||
"CONFIG_NTFS_FS_POSIX_ACL=y"
|
||||
];
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib/modules/${config.boot.kernelPackages.kernel.modDirVersion}/extra
|
||||
cp ntfs.ko $out/lib/modules/${config.boot.kernelPackages.kernel.modDirVersion}/extra/
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
options.services.ntfsplus = {
|
||||
enable = lib.mkEnableOption "ntfsplus kernel driver and utilities";
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
boot.extraModulePackages = [ ntfsplus-mod ];
|
||||
boot.kernelModules = [ "ntfs" ];
|
||||
boot.extraModprobeConfig = ''
|
||||
alias fs-ntfs ntfs
|
||||
alias ntfsplus ntfs
|
||||
'';
|
||||
services.udev.extraRules = ''
|
||||
SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="ntfs", ENV{ID_FS_TYPE}="ntfs"
|
||||
'';
|
||||
environment.systemPackages = [ pkgs.ntfsprogs-plus ];
|
||||
};
|
||||
boot.extraModulePackages = [
|
||||
((pkgs.callPackage ../../pkgs/ntfs/package.nix { kernel = config.boot.kernelPackages.kernel; }).overrideAttrs {
|
||||
patches = [
|
||||
./ntfsplus-patches/0001-fix-windows_names-option.patch
|
||||
./ntfsplus-patches/0002-gate-bad-character-check-by-windows_names.patch
|
||||
];
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
{config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.pc = lib.mkEnableOption "Enable options specific to personal computers";
|
||||
options.lumpiasty.laptop = lib.mkEnableOption "Enable options specific to laptops";
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
options.lumpiasty.sshd = lib.mkEnableOption "Enable intel CPU";
|
||||
|
||||
config = lib.mkIf config.lumpiasty.sshd {
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
|
||||
@@ -10,12 +10,6 @@ let
|
||||
mkUser = import ../../lib/mkUser.nix { inherit lib; };
|
||||
in
|
||||
{
|
||||
options.lumpiasty.users = {
|
||||
user = lib.mkEnableOption "Create user \"user\"";
|
||||
drugi = lib.mkEnableOption "Create user \"drugi\"";
|
||||
};
|
||||
|
||||
|
||||
config = {
|
||||
# Install system-wide docker because rootless causes issues with binfmt
|
||||
virtualisation.docker.enable = config.lumpiasty.pc;
|
||||
@@ -69,7 +63,7 @@ in
|
||||
users.users.user = lib.mkMerge [
|
||||
(mkUser cfg.user ../../users/user/config.nix)
|
||||
{
|
||||
extraGroups = lib.mkIf config.lumpiasty.pc [ "docker" "libvirtd" ];
|
||||
extraGroups = lib.mkIf config.lumpiasty.pc [ "docker" "libvirtd" "cdrom" ];
|
||||
}
|
||||
];
|
||||
home-manager.users.user = mkHome cfg.user ../../users/user/home.nix;
|
||||
|
||||
+2
-8
@@ -3,20 +3,14 @@
|
||||
[
|
||||
bun2nix.overlays.default
|
||||
(final: prev: {
|
||||
oh-my-pi = final.callPackage ../pkgs/oh-my-pi { inherit (final) bun2nix; };
|
||||
opencode-claude-auth = prev.callPackage ../pkgs/opencode-claude-auth { };
|
||||
opencode-antigravity-auth = final.callPackage ../pkgs/opencode-antigravity-auth { inherit (final) bun2nix; };
|
||||
# Build failure 08.05.2026
|
||||
# https://github.com/NixOS/nixpkgs/issues/513245#issuecomment-4320293674
|
||||
openldap = prev.openldap.overrideAttrs {
|
||||
doCheck = !prev.stdenv.hostPlatform.isi686;
|
||||
};
|
||||
# NetworkManager 1.57.4-dev: adds ipv4.clat (CLAT/464XLAT) needed for IPv6-mostly.
|
||||
# Used via networking.networkmanager.package — does not replace pkgs.networkmanager globally.
|
||||
# Remove once nixpkgs ships networkmanager >= 1.58 stable.
|
||||
networkmanager-clat = assert final.lib.assertMsg
|
||||
(final.lib.versionOlder prev.networkmanager.version "1.58")
|
||||
"nixpkgs now ships NetworkManager ${prev.networkmanager.version} >= 1.58 — remove the override in overlays/pkgs.nix and pkgs/networkmanager-dev/";
|
||||
(final.lib.versionOlder prev.networkmanager.version "1.59")
|
||||
"nixpkgs now ships NetworkManager ${prev.networkmanager.version} >= 1.59 — remove the override in overlays/pkgs.nix and pkgs/networkmanager-dev/ if the patches are no longer needed";
|
||||
prev.callPackage ../pkgs/networkmanager-dev/package.nix { };
|
||||
})
|
||||
]
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 61c025b9d7..d2ae60da34 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -1025,9 +1025,9 @@ meson.add_install_script(
|
||||
join_paths('tools', 'meson-post-install.sh'),
|
||||
nm_datadir,
|
||||
nm_bindir,
|
||||
- nm_pkgconfdir,
|
||||
+ nm_prefix + nm_pkgconfdir,
|
||||
nm_pkglibdir,
|
||||
- nm_pkgstatedir,
|
||||
+ nm_prefix + nm_pkgstatedir,
|
||||
nm_mandir,
|
||||
nm_sysconfdir,
|
||||
enable_docs ? '1' : '0',
|
||||
@@ -1,48 +0,0 @@
|
||||
diff --git a/data/84-nm-drivers.rules b/data/84-nm-drivers.rules
|
||||
index 148acade5c..6395fbfbe5 100644
|
||||
--- a/data/84-nm-drivers.rules
|
||||
+++ b/data/84-nm-drivers.rules
|
||||
@@ -7,6 +7,6 @@ ACTION!="add|change|move", GOTO="nm_drivers_end"
|
||||
# Determine ID_NET_DRIVER if there's no ID_NET_DRIVER or DRIVERS (old udev?)
|
||||
ENV{ID_NET_DRIVER}=="?*", GOTO="nm_drivers_end"
|
||||
DRIVERS=="?*", GOTO="nm_drivers_end"
|
||||
-PROGRAM="/bin/sh -c '/usr/sbin/ethtool -i $$1 |/usr/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
|
||||
+PROGRAM="@runtimeShell@ -c '@ethtool@/bin/ethtool -i $$1 |@gnused@/bin/sed -n s/^driver:\ //p' -- $env{INTERFACE}", ENV{ID_NET_DRIVER}="%c"
|
||||
|
||||
LABEL="nm_drivers_end"
|
||||
diff --git a/src/libnmc-base/nm-vpn-helpers.c b/src/libnmc-base/nm-vpn-helpers.c
|
||||
index cbe76f5f1c..6ec684f9fe 100644
|
||||
--- a/src/libnmc-base/nm-vpn-helpers.c
|
||||
+++ b/src/libnmc-base/nm-vpn-helpers.c
|
||||
@@ -284,15 +284,6 @@ nm_vpn_openconnect_authenticate_helper(NMSettingVpn *s_vpn, GPtrArray *secrets,
|
||||
const char *const *iter;
|
||||
const char *path;
|
||||
const char *opt;
|
||||
- const char *const DEFAULT_PATHS[] = {
|
||||
- "/sbin/",
|
||||
- "/usr/sbin/",
|
||||
- "/usr/local/sbin/",
|
||||
- "/bin/",
|
||||
- "/usr/bin/",
|
||||
- "/usr/local/bin/",
|
||||
- NULL,
|
||||
- };
|
||||
const char *oc_argv[(12 + 2 * G_N_ELEMENTS(oc_property_args))];
|
||||
const char *gw;
|
||||
int port;
|
||||
@@ -311,13 +302,8 @@ nm_vpn_openconnect_authenticate_helper(NMSettingVpn *s_vpn, GPtrArray *secrets,
|
||||
|
||||
port = extract_url_port(gw);
|
||||
|
||||
- path = nm_utils_file_search_in_paths("openconnect",
|
||||
- "/usr/sbin/openconnect",
|
||||
- DEFAULT_PATHS,
|
||||
- G_FILE_TEST_IS_EXECUTABLE,
|
||||
- NULL,
|
||||
- NULL,
|
||||
- error);
|
||||
+ path = g_find_program_in_path("openconnect");
|
||||
+
|
||||
if (!path)
|
||||
return FALSE;
|
||||
|
||||
@@ -2,240 +2,14 @@
|
||||
# Required for IPv6-mostly / RFC 8925 + RFC 6877 on NixOS until 1.58 stable lands in nixpkgs.
|
||||
# Remove this override once nixpkgs ships networkmanager >= 1.58.
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
replaceVars,
|
||||
gettext,
|
||||
pkg-config,
|
||||
dbus,
|
||||
gitUpdater,
|
||||
libuuid,
|
||||
polkit,
|
||||
gnutls,
|
||||
ppp,
|
||||
dhcpcd,
|
||||
iptables,
|
||||
nftables,
|
||||
python3,
|
||||
vala,
|
||||
libgcrypt,
|
||||
dnsmasq,
|
||||
bluez5,
|
||||
readline,
|
||||
libselinux,
|
||||
audit,
|
||||
gobject-introspection,
|
||||
perl,
|
||||
modemmanager,
|
||||
openresolv,
|
||||
libndp,
|
||||
newt,
|
||||
ethtool,
|
||||
gnused,
|
||||
iputils,
|
||||
kmod,
|
||||
jansson,
|
||||
elfutils,
|
||||
gtk-doc,
|
||||
libxslt,
|
||||
docbook_xsl,
|
||||
docbook_xml_dtd_412,
|
||||
docbook_xml_dtd_42,
|
||||
docbook_xml_dtd_43,
|
||||
curl,
|
||||
meson,
|
||||
mesonEmulatorHook,
|
||||
ninja,
|
||||
bpftools,
|
||||
llvmPackages,
|
||||
libbpf,
|
||||
libnvme,
|
||||
libpsl,
|
||||
mobile-broadband-provider-info,
|
||||
runtimeShell,
|
||||
buildPackages,
|
||||
nixosTests,
|
||||
systemd,
|
||||
udev,
|
||||
udevCheckHook,
|
||||
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
|
||||
withNbft ? false,
|
||||
networkmanager
|
||||
}:
|
||||
|
||||
let
|
||||
pythonForDocs = python3.pythonOnBuildForHost.withPackages (pkgs: with pkgs; [ pygobject3 ]);
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "networkmanager";
|
||||
version = "1.57.4-dev";
|
||||
|
||||
src = fetchurl {
|
||||
# Use the stable release tarball (not the git archive) — GitLab git archives are not content-stable.
|
||||
url = "https://gitlab.freedesktop.org/api/v4/projects/411/packages/generic/NetworkManager/${finalAttrs.version}/NetworkManager-${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-ThYPO/0YsmFSc2Qol1ZAoQb1qdtjPRg+rvxpUzKe0sA=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
"devdoc"
|
||||
"man"
|
||||
"doc"
|
||||
];
|
||||
|
||||
mesonFlags = [
|
||||
"--sysconfdir=/etc"
|
||||
"--localstatedir=/var"
|
||||
(lib.mesonOption "systemdsystemunitdir" (
|
||||
if withSystemd then "${placeholder "out"}/etc/systemd/system" else "no"
|
||||
))
|
||||
"-Dudev_dir=${placeholder "out"}/lib/udev"
|
||||
"-Ddbus_conf_dir=${placeholder "out"}/share/dbus-1/system.d"
|
||||
"-Dkernel_firmware_dir=/run/current-system/firmware"
|
||||
|
||||
"-Dmodprobe=${kmod}/bin/modprobe"
|
||||
(lib.mesonOption "session_tracking" (if withSystemd then "systemd" else "no"))
|
||||
(lib.mesonBool "systemd_journal" withSystemd)
|
||||
"-Dlibaudit=yes-disabled-by-default"
|
||||
"-Dpolkit_agent_helper_1=/run/wrappers/bin/polkit-agent-helper-1"
|
||||
|
||||
"-Diwd=true"
|
||||
"-Dpppd=${ppp}/bin/pppd"
|
||||
"-Diptables=${iptables}/bin/iptables"
|
||||
"-Dnft=${nftables}/bin/nft"
|
||||
"-Dmodem_manager=true"
|
||||
"-Dnmtui=true"
|
||||
"-Ddnsmasq=${dnsmasq}/bin/dnsmasq"
|
||||
"-Dqt=false"
|
||||
(lib.mesonBool "nbft" withNbft)
|
||||
|
||||
"-Dresolvconf=${openresolv}/bin/resolvconf"
|
||||
"-Ddhcpcd=${dhcpcd}/bin/dhcpcd"
|
||||
|
||||
"-Ddocs=${lib.boolToString (stdenv.buildPlatform == stdenv.hostPlatform)}"
|
||||
"-Dman=${lib.boolToString (stdenv.buildPlatform == stdenv.hostPlatform)}"
|
||||
"-Dtests=no"
|
||||
"-Dcrypto=gnutls"
|
||||
"-Dmobile_broadband_provider_info_database=${mobile-broadband-provider-info}/share/mobile-broadband-provider-info/serviceproviders.xml"
|
||||
];
|
||||
|
||||
patches = [
|
||||
(replaceVars ./fix-paths.patch {
|
||||
inherit
|
||||
ethtool
|
||||
gnused
|
||||
;
|
||||
inherit runtimeShell;
|
||||
})
|
||||
./fix-install-paths.patch
|
||||
networkmanager.overrideAttrs (old: {
|
||||
patches = old.patches ++ [
|
||||
# CLAT prefix selection ignores RFC 6724 rule 3 (avoid deprecated addresses):
|
||||
# a deprecated prefix (preferred lifetime 0) can win the selection and break
|
||||
# CLAT with an unroutable source address. Report upstream, then drop this.
|
||||
./clat-skip-deprecated-prefixes.patch
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
(if withSystemd then systemd else udev)
|
||||
libselinux
|
||||
audit
|
||||
libpsl
|
||||
libuuid
|
||||
polkit
|
||||
ppp
|
||||
libndp
|
||||
curl
|
||||
mobile-broadband-provider-info
|
||||
bluez5
|
||||
dnsmasq
|
||||
modemmanager
|
||||
readline
|
||||
newt
|
||||
jansson
|
||||
dbus
|
||||
libbpf
|
||||
]
|
||||
++ lib.optionals withNbft [
|
||||
libnvme
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
gnutls
|
||||
libgcrypt
|
||||
];
|
||||
|
||||
# Disable hardening flags that break clang -target bpf (CLAT BPF compilation).
|
||||
# Same workaround as nixpkgs systemd package.
|
||||
hardeningDisable = [ "zerocallusedregs" "shadowstack" "pacret" ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
gettext
|
||||
pkg-config
|
||||
# BPF compiler for CLAT/464XLAT — must use buildPackages to avoid splicing issues
|
||||
bpftools
|
||||
buildPackages.llvmPackages.clang
|
||||
buildPackages.llvmPackages.libllvm
|
||||
vala
|
||||
gobject-introspection
|
||||
perl
|
||||
elfutils
|
||||
gtk-doc
|
||||
libxslt
|
||||
docbook_xsl
|
||||
docbook_xml_dtd_412
|
||||
docbook_xml_dtd_42
|
||||
docbook_xml_dtd_43
|
||||
pythonForDocs
|
||||
udevCheckHook
|
||||
]
|
||||
++ lib.optionals (!stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
|
||||
mesonEmulatorHook
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./tools
|
||||
patchShebangs libnm/generate-setting-docs.py
|
||||
|
||||
# TODO: submit upstream
|
||||
substituteInPlace meson.build \
|
||||
--replace "'vala', req" "'vala', native: false, req"
|
||||
''
|
||||
+ lib.optionalString withSystemd ''
|
||||
substituteInPlace data/NetworkManager.service.in \
|
||||
--replace-fail /usr/bin/busctl ${systemd}/bin/busctl
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
mkdir -p ${placeholder "out"}/lib
|
||||
ln -s $PWD/src/libnm-client-impl/libnm.so.0 ${placeholder "out"}/lib/libnm.so.0
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) ''
|
||||
cp -r ${buildPackages.networkmanager.devdoc} $devdoc
|
||||
cp -r ${buildPackages.networkmanager.man} $man
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru = {
|
||||
tests = {
|
||||
inherit (nixosTests.networking) networkmanager;
|
||||
};
|
||||
};
|
||||
|
||||
meta = {
|
||||
homepage = "https://networkmanager.dev";
|
||||
description = "Network configuration and management tool (1.57.4-dev with CLAT/ipv6-mostly support)";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [ obadz ];
|
||||
teams = [ lib.teams.freedesktop ];
|
||||
platforms = lib.platforms.linux;
|
||||
badPlatforms = [
|
||||
lib.systems.inspect.platformPatterns.isStatic
|
||||
];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
{ pkgs
|
||||
, lib
|
||||
, kernel ? pkgs.linuxPackages_latest.kernel
|
||||
}:
|
||||
|
||||
pkgs.stdenv.mkDerivation {
|
||||
pname = "ntfs-kernel-module";
|
||||
inherit (kernel) src version postPatch nativeBuildInputs;
|
||||
|
||||
kernel_dev = kernel.dev;
|
||||
kernelVersion = kernel.modDirVersion;
|
||||
|
||||
modulePath = "fs/ntfs";
|
||||
|
||||
buildPhase = ''
|
||||
BUILT_KERNEL=$kernel_dev/lib/modules/$kernelVersion/build
|
||||
|
||||
cp $BUILT_KERNEL/Module.symvers .
|
||||
cp $BUILT_KERNEL/.config .
|
||||
cp $kernel_dev/vmlinux .
|
||||
|
||||
make "-j$NIX_BUILD_CORES" modules_prepare
|
||||
make "-j$NIX_BUILD_CORES" M=$modulePath modules
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
make \
|
||||
INSTALL_MOD_PATH="$out" \
|
||||
XZ="xz -T$NIX_BUILD_CORES" \
|
||||
M="$modulePath" \
|
||||
modules_install
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "NTFS kernel module";
|
||||
license = lib.licenses.gpl3;
|
||||
};
|
||||
}
|
||||
@@ -1,221 +0,0 @@
|
||||
{ bun2nix, fetchFromGitHub, fetchurl, fetchzip, runCommand, python3, pkgs, stdenv, ... }:
|
||||
|
||||
# NOTE: This derivation works around two open bun2nix bugs. Remove the
|
||||
# workarounds and simplify once they are fixed upstream.
|
||||
#
|
||||
# Bug 1 — missing .npm manifest cache files
|
||||
# https://github.com/nix-community/bun2nix/issues/77
|
||||
#
|
||||
# bun's install cache requires two kinds of entries per package:
|
||||
# - the extracted package directory (e.g. handlebars@4.7.9@@@1/)
|
||||
# - a hashed .npm manifest file (e.g. 02dd05ab1686ff3a.npm)
|
||||
# bun2nix only provides the former. bun therefore fetches the manifest from
|
||||
# the registry during the "Resolving" phase, which fails in the Nix sandbox.
|
||||
#
|
||||
# Workaround: pass --offline to bun install. This tells bun to skip manifest
|
||||
# fetches and trust the lockfile for resolution instead.
|
||||
#
|
||||
# Bug 2 — catalog: specifiers still trigger network resolution with --offline
|
||||
# https://github.com/nix-community/bun2nix/issues/77 (same thread)
|
||||
#
|
||||
# bun2nix's bunResolveCatalogRefs rewrites "catalog:" specifiers in
|
||||
# package.json to the version *range* from the catalog table (e.g. "^1.3.14")
|
||||
# rather than the exact pinned version from bun.lock's packages section.
|
||||
# Even with --offline, bun reads the catalog table from bun.lock and tries to
|
||||
# resolve those ranges, hitting the network.
|
||||
#
|
||||
# Workaround: the Python script below pre-processes the source before the
|
||||
# build. It pins every dep in every workspace package.json to the exact
|
||||
# version from bun.lock's packages section (so no ranges remain for bun to
|
||||
# resolve), and strips the catalog/catalogs keys from bun.lock entirely.
|
||||
#
|
||||
# bun.lock is JSONC (trailing-comma JSON) so we parse it with Python's stdlib
|
||||
# json after stripping trailing commas with a regex.
|
||||
#
|
||||
# Additionally, oh-my-pi's bun.lock was generated with bun >=1.3.14 which uses
|
||||
# a different Wyhash seed for cache keys than nixpkgs's bun 1.3.13. Bumping bun
|
||||
# globally breaks other packages (e.g. opencode), so instead we patch the
|
||||
# generated wrapper script in postInstall to reference bun 1.3.14 directly.
|
||||
# Hashes from https://github.com/NixOS/nixpkgs/pull/519796
|
||||
|
||||
let
|
||||
version = "15.2.1";
|
||||
|
||||
# bun 1.3.14 — needed for correct cache key hashes; scoped to this package.
|
||||
bun_1_3_14 = pkgs.bun.overrideAttrs (_: {
|
||||
version = "1.3.14";
|
||||
src =
|
||||
let
|
||||
sources = {
|
||||
"aarch64-darwin" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v1.3.14/bun-darwin-aarch64.zip";
|
||||
hash = "sha256-2LliIYKK1vl6x6wKt+lYcjQa92MAHogD6CZ2UsJlJiA=";
|
||||
};
|
||||
"aarch64-linux" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v1.3.14/bun-linux-aarch64.zip";
|
||||
hash = "sha256-on/7Y6gxA3WDbg1vZorhf6jY0YuIw3yCHGUzGXOhmjs=";
|
||||
};
|
||||
"x86_64-darwin" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v1.3.14/bun-darwin-x64-baseline.zip";
|
||||
hash = "sha256-PjWtb1OXGpg0v55nhuKt9ytfGSHMmpxf3gc9KXKUQHY=";
|
||||
};
|
||||
"x86_64-linux" = fetchurl {
|
||||
url = "https://github.com/oven-sh/bun/releases/download/bun-v1.3.14/bun-linux-x64.zip";
|
||||
hash = "sha256-lR7iruhV8IWVruxiJSJqKY0/6oOj3NZGXAnLzN9+hI8=";
|
||||
};
|
||||
};
|
||||
in
|
||||
sources.${stdenv.hostPlatform.system} or (throw "bun 1.3.14 not available for ${stdenv.hostPlatform.system}");
|
||||
});
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "can1357";
|
||||
repo = "oh-my-pi";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-fztQJrhDG5ZbTlgqoHA96eCgwYm5WIna3mAPlCDWYLM=";
|
||||
};
|
||||
|
||||
# The workspace source for @oh-my-pi/pi-natives has no pre-built .node
|
||||
# binaries — those only exist in the npm tarball. Fetch it so we can copy
|
||||
# the platform binaries into packages/natives/native/ before the build.
|
||||
piNativesTarball = fetchzip {
|
||||
url = "https://registry.npmjs.org/@oh-my-pi/pi-natives/-/pi-natives-${version}.tgz";
|
||||
hash = "sha256-mEEnvTNxWFVSs1An61K83sSjUJ5bz4yrluwZvz1+6fg=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
srcWithBunNix = runCommand "oh-my-pi-src" {
|
||||
nativeBuildInputs = [ bun2nix bun_1_3_14 python3 ];
|
||||
} ''
|
||||
cp -r ${src} $out
|
||||
chmod -R u+w $out
|
||||
|
||||
# Copy pre-built .node binaries from the npm tarball into the workspace
|
||||
# source so the runtime can load the native addon without building Rust.
|
||||
cp ${piNativesTarball}/package/native/*.node $out/packages/natives/native/
|
||||
|
||||
bun2nix --lock-file $out/bun.lock --output-file $out/bun.nix
|
||||
|
||||
python3 - "$out" << 'EOF'
|
||||
import sys, re, json, os
|
||||
|
||||
root = sys.argv[1]
|
||||
lock_path = os.path.join(root, "bun.lock")
|
||||
|
||||
raw = open(lock_path).read()
|
||||
lock = json.loads(re.sub(r',(\s*[}\]])', r'\1', raw))
|
||||
|
||||
packages = lock.get("packages", {})
|
||||
catalog = lock.get("catalog", {})
|
||||
catalogs = lock.get("catalogs", {})
|
||||
|
||||
# Build name -> exact resolved version from the packages section.
|
||||
resolved = {}
|
||||
for name, entry in packages.items():
|
||||
if isinstance(entry, list) and entry and isinstance(entry[0], str):
|
||||
spec = entry[0]
|
||||
if spec.startswith(name + "@"):
|
||||
resolved[name] = spec[len(name) + 1:]
|
||||
|
||||
def pin(name, spec):
|
||||
"""Pin a dep specifier to its exact resolved version from bun.lock."""
|
||||
if not isinstance(spec, str):
|
||||
return spec
|
||||
# catalog: specifiers — resolve via catalog table then pinned version.
|
||||
if spec.startswith("catalog:"):
|
||||
cname = spec[len("catalog:"):]
|
||||
table = catalog if cname == "" else catalogs.get(cname, {})
|
||||
rv = resolved.get(name)
|
||||
cv = table.get(name)
|
||||
if isinstance(rv, str) and rv.startswith("workspace:"):
|
||||
return "workspace:*"
|
||||
if isinstance(rv, str):
|
||||
return rv
|
||||
if isinstance(cv, str):
|
||||
return cv
|
||||
return spec
|
||||
# Any npm version range — pin to exact resolved version.
|
||||
if not spec.startswith(("workspace:", "file:", "link:", "git", "http", "/")):
|
||||
rv = resolved.get(name)
|
||||
if isinstance(rv, str) and rv.startswith("workspace:"):
|
||||
return "workspace:*"
|
||||
if isinstance(rv, str):
|
||||
return rv
|
||||
return spec
|
||||
|
||||
sections = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]
|
||||
|
||||
def rewrite(holder):
|
||||
for sec in sections:
|
||||
deps = holder.get(sec)
|
||||
if isinstance(deps, dict):
|
||||
for name in list(deps):
|
||||
deps[name] = pin(name, deps[name])
|
||||
|
||||
# Rewrite bun.lock workspaces and drop the catalog tables.
|
||||
for ws in lock.get("workspaces", {}).values():
|
||||
rewrite(ws)
|
||||
lock.pop("catalog", None)
|
||||
lock.pop("catalogs", None)
|
||||
open(lock_path, "w").write(json.dumps(lock, indent=2) + "\n")
|
||||
|
||||
# Rewrite each workspace package.json (root "" included).
|
||||
for ws_dir in lock.get("workspaces", {}):
|
||||
pkg_path = os.path.join(root, ws_dir, "package.json")
|
||||
if not os.path.exists(pkg_path):
|
||||
continue
|
||||
pkg = json.loads(open(pkg_path).read())
|
||||
rewrite(pkg)
|
||||
open(pkg_path, "w").write(json.dumps(pkg, indent=2) + "\n")
|
||||
EOF
|
||||
'';
|
||||
in
|
||||
|
||||
(bun2nix.writeBunApplication {
|
||||
pname = "omp";
|
||||
inherit version;
|
||||
|
||||
src = srcWithBunNix;
|
||||
|
||||
# oh-my-pi requires bun >=1.3.14 at runtime. writeBunApplication prepends
|
||||
# pkgs.bun (1.3.13) to PATH in the startup script, so we use an absolute
|
||||
# path to bun 1.3.14 instead of relying on PATH resolution.
|
||||
#
|
||||
# writeBunApplication's installPhase does `cd $out/share/$pname` before
|
||||
# exec, so $PWD is always the store path. OLDPWD is set by bash's cd to the
|
||||
# user's original directory. We cd back so omp's process.cwd() is correct,
|
||||
# and use an absolute path to the entry point so bun resolves modules from
|
||||
# the store regardless of cwd.
|
||||
# At this point the wrapper has already done `cd $out/share/omp`, so $PWD
|
||||
# is the store package dir and OLDPWD is the user's original directory.
|
||||
# Capture the store dir, cd back to the user's dir so omp's process.cwd()
|
||||
# is correct, then exec bun with an absolute path so module resolution
|
||||
# still works from the store.
|
||||
startScript = ''
|
||||
_omp_pkg="$PWD"
|
||||
cd "''${OLDPWD:-$PWD}"
|
||||
exec ${bun_1_3_14}/bin/bun run "$_omp_pkg/packages/coding-agent/src/cli.ts" "$@"
|
||||
'';
|
||||
|
||||
dontUseBunBuild = true;
|
||||
dontUseBunCheck = true;
|
||||
|
||||
# --offline: workaround for Bug 1 above (missing .npm manifest cache files).
|
||||
bunInstallFlags = [ "--offline" "--linker=isolated" "--ignore-scripts" ];
|
||||
|
||||
# Generate the docs index embedded into the binary at build time.
|
||||
# The prepack script reads docs/**/*.md and emits docs-index.generated.ts.
|
||||
postBunNodeModulesInstallPhase = ''
|
||||
${bun_1_3_14}/bin/bun run packages/coding-agent/scripts/generate-docs-index.ts
|
||||
'';
|
||||
|
||||
bunDeps = bun2nix.fetchBunDeps {
|
||||
bunNix = "${srcWithBunNix}/bun.nix";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "AI coding agent for the terminal — batteries included";
|
||||
homepage = "https://omp.sh";
|
||||
mainProgram = "omp";
|
||||
};
|
||||
})
|
||||
@@ -18,8 +18,6 @@
|
||||
kubernetes-helm
|
||||
xonsh
|
||||
gnumake
|
||||
python312
|
||||
python312Packages.python-lsp-server
|
||||
nil
|
||||
docker
|
||||
docker-buildx
|
||||
|
||||
+2
-1
@@ -1,13 +1,14 @@
|
||||
{ config, pkgs, osConfig, ... }:
|
||||
|
||||
{
|
||||
home.username = "user";
|
||||
# home.username = "user";
|
||||
|
||||
lumpiastyHome = {
|
||||
gpg = osConfig.lumpiasty.pc;
|
||||
enablePcApps = osConfig.lumpiasty.pc;
|
||||
dev = osConfig.lumpiasty.pc;
|
||||
gaming = osConfig.lumpiasty.gaming;
|
||||
fhs = osConfig.lumpiasty.pc && config.lumpiastyHome.linux;
|
||||
};
|
||||
|
||||
home.stateVersion = "24.05";
|
||||
|
||||
Reference in New Issue
Block a user