From 94d904fb3c2e92624e96bd49eccf702f62ac9180 Mon Sep 17 00:00:00 2001 From: GitHub automation Date: Sat, 30 May 2026 05:47:12 +0000 Subject: [PATCH 01/26] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/63b4e7e6cf75307c1d26ac3762b886b5b0247267?narHash=sha256-8GzXDOXckDWwST8TY5DbwYFjdvQLlP7K9CLSVx6iTTo%3D' (2026-05-02) → 'github:nix-community/disko/caa775cf67bfdc47f940edd96c975b5016df9059?narHash=sha256-Md/eOK5OjmvvHc2H52pLZe4zpP4XyfiS5vHqfRCz2HU%3D' (2026-05-29) • Updated input 'emacs-overlay': 'github:nix-community/emacs-overlay/f14d0074de9f9737b234ce8b00d9787f60ff833f?narHash=sha256-yDHHZghIaAa9F%2B3FgH/l9h/KhtU8QRspDf4WmpHso2M%3D' (2026-05-09) → 'github:nix-community/emacs-overlay/5a6425a7a1144748a49b25ab5d2d91ccd0ec09d1?narHash=sha256-vHBRy/IXXoYSVJFwgpn23kSYRIis2xsBXEGR5QV8hDo%3D' (2026-05-30) • Updated input 'famedly-nixos': 'github:famedly/famedly-nixos/9f5b5e982f61e548f3d8ea0ad1a6bfbda7a93905?narHash=sha256-xSWeVQGvu53u9bRhv97HgsEkrfY/OafxSpBkLdauFMk%3D' (2026-01-20) → 'github:famedly/famedly-nixos/6f60bd5d767cc80c3b435f99b6e55f8dba0a6fe7?narHash=sha256-wncoPHLYEx0yNaJyixsOX5QfdI5wmZKzgUysGexfhnw%3D' (2026-05-11) • Added input 'famedly-nixos/fleet-nixos': 'github:adamcik/fleet-nixos/427c05f9ea6728ce9415730a8fbf917da35df84c?narHash=sha256-PMtQio4dN9ERcfcbzI0bcvchaTnl1wAXB0QQRm9m47M%3D' (2026-05-07) • Added input 'famedly-nixos/fleet-nixos/nixpkgs': follows 'famedly-nixos/nixpkgs-unstable' • Added input 'famedly-nixos/nixpkgs-unstable': 'https://releases.nixos.org/nixos/unstable/nixos-26.05pre1004030.64c08a7ca051/nixexprs.tar.xz?narHash=sha256-NpH8iEQ5JHv/BtUuzTEXUMDxPLetCDzIv4OxL8H7Kps%3D' (2026-05-23) • Updated input 'home-manager': 'github:nix-community/home-manager/cc09c0f9b7eaa95c2d9827338a5eb03d32505ca5?narHash=sha256-Gp8qwTEYNoy2yvmErVGlvLOQvrtEECCAKbonW7VJef8%3D' (2026-05-03) → 'github:nix-community/home-manager/3ee51fbdac8c8bdfe1e7e1fcaba6520a563f394f?narHash=sha256-QOD/CNm196nCJRheux/URi4/HE66fthdOMqCJoPP1Y0%3D' (2026-05-23) • Updated input 'nix-gaming': 'github:fufexan/nix-gaming/2c1b0276febd6b6cac789a9f3cafe5d6ef4e8f58?narHash=sha256-EqS67I6LgEpnu/rUO6x%2BSaMWMN89TTsY1AnThsl84uI%3D' (2026-05-09) → 'github:fufexan/nix-gaming/6e7a8414c0f547a86646eb0b56ebf89e7cc217a2?narHash=sha256-/dRavNAx/Mp67xcQQ3JBIMyf0cLoXqKedafB1%2BwksAE%3D' (2026-05-26) • Updated input 'nix-gaming/flake-parts': 'github:hercules-ci/flake-parts/5250617bffd85403b14dbf43c3870e7f255d2c16?narHash=sha256-EPIFsulyon7Z1vLQq5Fk64GR8L7cQsT%2BIPhcsukVbgk%3D' (2026-05-01) → 'github:hercules-ci/flake-parts/f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb?narHash=sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4%3D' (2026-05-13) • Updated input 'nix-gaming/git-hooks': 'github:cachix/git-hooks.nix/3cfd774b0a530725a077e17354fbdb87ea1c4aad?narHash=sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8%3D' (2026-04-21) → 'github:cachix/git-hooks.nix/61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a?narHash=sha256-kTwur1wV%2B01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs%3D' (2026-05-11) • Updated input 'nixos-hardware': 'github:NixOS/nixos-hardware/3bcaa367d4c550d687a17ac792fd5cda214ee871?narHash=sha256-lkesY6x2X2qxlqLM7CT2iM/0rP2JB7fruPN3h8POXmI%3D' (2026-05-07) → 'github:NixOS/nixos-hardware/b76b5639c0593e0aeb0b5879ad62d4b30596c144?narHash=sha256-SCSLUKBmwlSLGQ8Xbr8PjRFtiHNk0l9ktqkcmqdBkfE%3D' (2026-05-29) • Added input 'nixos-hardware/nixpkgs': 'https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz?narHash=sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U%3D' (2026-01-08) • Updated input 'nixpkgs': 'https://releases.nixos.org/nixos/25.11/nixos-25.11.10470.0c88e1f2bdb9/nixexprs.tar.xz?narHash=sha256-amc4Y3GF3%2BanUi7IJeLVzf7hVqLb3ZqCGzYtkVyp7Qw%3D' (2026-05-05) → 'https://releases.nixos.org/nixos/25.11/nixos-25.11.11422.25f538306313/nixexprs.tar.xz?narHash=sha256-Cy89LFmgiCxIPBxJLWTmFJHwdeLkxUUYspm5yy8wJps%3D' (2026-05-26) • Updated input 'nixpkgs-unstable': 'https://releases.nixos.org/nixos/unstable/nixos-26.05pre992384.549bd84d6279/nixexprs.tar.xz?narHash=sha256-qeRNZKcA0igTdRVnBe6hyo49CqxME92s4G8Sr78ARJw%3D' (2026-05-05) → 'https://releases.nixos.org/nixos/unstable/nixos-26.05pre1004030.64c08a7ca051/nixexprs.tar.xz?narHash=sha256-NpH8iEQ5JHv/BtUuzTEXUMDxPLetCDzIv4OxL8H7Kps%3D' (2026-05-23) --- flake.lock | 124 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 88 insertions(+), 36 deletions(-) diff --git a/flake.lock b/flake.lock index e236243e..c447ceea 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1777713215, - "narHash": "sha256-8GzXDOXckDWwST8TY5DbwYFjdvQLlP7K9CLSVx6iTTo=", + "lastModified": 1780048612, + "narHash": "sha256-Md/eOK5OjmvvHc2H52pLZe4zpP4XyfiS5vHqfRCz2HU=", "owner": "nix-community", "repo": "disko", - "rev": "63b4e7e6cf75307c1d26ac3762b886b5b0247267", + "rev": "caa775cf67bfdc47f940edd96c975b5016df9059", "type": "github" }, "original": { @@ -30,11 +30,11 @@ ] }, "locked": { - "lastModified": 1778294769, - "narHash": "sha256-yDHHZghIaAa9F+3FgH/l9h/KhtU8QRspDf4WmpHso2M=", + "lastModified": 1780112698, + "narHash": "sha256-vHBRy/IXXoYSVJFwgpn23kSYRIis2xsBXEGR5QV8hDo=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "f14d0074de9f9737b234ce8b00d9787f60ff833f", + "rev": "5a6425a7a1144748a49b25ab5d2d91ccd0ec09d1", "type": "github" }, "original": { @@ -51,16 +51,18 @@ "git-hooks", "flake-compat" ], + "fleet-nixos": "fleet-nixos", "nixpkgs": [ "nixpkgs" - ] + ], + "nixpkgs-unstable": "nixpkgs-unstable" }, "locked": { - "lastModified": 1768918826, - "narHash": "sha256-xSWeVQGvu53u9bRhv97HgsEkrfY/OafxSpBkLdauFMk=", + "lastModified": 1778496033, + "narHash": "sha256-wncoPHLYEx0yNaJyixsOX5QfdI5wmZKzgUysGexfhnw=", "owner": "famedly", "repo": "famedly-nixos", - "rev": "9f5b5e982f61e548f3d8ea0ad1a6bfbda7a93905", + "rev": "6f60bd5d767cc80c3b435f99b6e55f8dba0a6fe7", "type": "github" }, "original": { @@ -112,11 +114,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1777678872, - "narHash": "sha256-EPIFsulyon7Z1vLQq5Fk64GR8L7cQsT+IPhcsukVbgk=", + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "5250617bffd85403b14dbf43c3870e7f255d2c16", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "type": "github" }, "original": { @@ -125,6 +127,27 @@ "type": "github" } }, + "fleet-nixos": { + "inputs": { + "nixpkgs": [ + "famedly-nixos", + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1778185331, + "narHash": "sha256-PMtQio4dN9ERcfcbzI0bcvchaTnl1wAXB0QQRm9m47M=", + "owner": "adamcik", + "repo": "fleet-nixos", + "rev": "427c05f9ea6728ce9415730a8fbf917da35df84c", + "type": "github" + }, + "original": { + "owner": "adamcik", + "repo": "fleet-nixos", + "type": "github" + } + }, "flint": { "inputs": { "nixpkgs": [ @@ -155,11 +178,11 @@ ] }, "locked": { - "lastModified": 1776796298, - "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=", + "lastModified": 1778507602, + "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad", + "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", "type": "github" }, "original": { @@ -197,11 +220,11 @@ ] }, "locked": { - "lastModified": 1777851538, - "narHash": "sha256-Gp8qwTEYNoy2yvmErVGlvLOQvrtEECCAKbonW7VJef8=", + "lastModified": 1779506708, + "narHash": "sha256-QOD/CNm196nCJRheux/URi4/HE66fthdOMqCJoPP1Y0=", "owner": "nix-community", "repo": "home-manager", - "rev": "cc09c0f9b7eaa95c2d9827338a5eb03d32505ca5", + "rev": "3ee51fbdac8c8bdfe1e7e1fcaba6520a563f394f", "type": "github" }, "original": { @@ -254,11 +277,11 @@ ] }, "locked": { - "lastModified": 1778297703, - "narHash": "sha256-EqS67I6LgEpnu/rUO6x+SaMWMN89TTsY1AnThsl84uI=", + "lastModified": 1779768228, + "narHash": "sha256-/dRavNAx/Mp67xcQQ3JBIMyf0cLoXqKedafB1+wksAE=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "2c1b0276febd6b6cac789a9f3cafe5d6ef4e8f58", + "rev": "6e7a8414c0f547a86646eb0b56ebf89e7cc217a2", "type": "github" }, "original": { @@ -284,12 +307,15 @@ } }, "nixos-hardware": { + "inputs": { + "nixpkgs": "nixpkgs" + }, "locked": { - "lastModified": 1778143761, - "narHash": "sha256-lkesY6x2X2qxlqLM7CT2iM/0rP2JB7fruPN3h8POXmI=", + "lastModified": 1780065812, + "narHash": "sha256-SCSLUKBmwlSLGQ8Xbr8PjRFtiHNk0l9ktqkcmqdBkfE=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "3bcaa367d4c550d687a17ac792fd5cda214ee871", + "rev": "b76b5639c0593e0aeb0b5879ad62d4b30596c144", "type": "github" }, "original": { @@ -301,15 +327,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1778003029, - "narHash": "sha256-amc4Y3GF3+anUi7IJeLVzf7hVqLb3ZqCGzYtkVyp7Qw=", - "rev": "0c88e1f2bdb93d5999019e99cb0e61e1fe2af4c5", + "lastModified": 1767892417, + "narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=", + "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba", "type": "tarball", - "url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.10470.0c88e1f2bdb9/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz" }, "original": { "type": "tarball", - "url": "https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz" + "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" } }, "nixpkgs-lib": { @@ -329,17 +355,43 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1777954456, - "narHash": "sha256-qeRNZKcA0igTdRVnBe6hyo49CqxME92s4G8Sr78ARJw=", - "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", + "lastModified": 1779560665, + "narHash": "sha256-NpH8iEQ5JHv/BtUuzTEXUMDxPLetCDzIv4OxL8H7Kps=", + "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", + "type": "tarball", + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre1004030.64c08a7ca051/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" + } + }, + "nixpkgs-unstable_2": { + "locked": { + "lastModified": 1779560665, + "narHash": "sha256-NpH8iEQ5JHv/BtUuzTEXUMDxPLetCDzIv4OxL8H7Kps=", + "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre992384.549bd84d6279/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre1004030.64c08a7ca051/nixexprs.tar.xz" }, "original": { "type": "tarball", "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1779796641, + "narHash": "sha256-Cy89LFmgiCxIPBxJLWTmFJHwdeLkxUUYspm5yy8wJps=", + "rev": "25f538306313eae3927264466c70d7001dcea1df", + "type": "tarball", + "url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.11422.25f538306313/nixexprs.tar.xz" + }, + "original": { + "type": "tarball", + "url": "https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz" + } + }, "root": { "inputs": { "disko": "disko", @@ -352,8 +404,8 @@ "nix-gaming": "nix-gaming", "nix-webapps": "nix-webapps", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", - "nixpkgs-unstable": "nixpkgs-unstable", + "nixpkgs": "nixpkgs_2", + "nixpkgs-unstable": "nixpkgs-unstable_2", "sops-nix": "sops-nix", "tree-sitter-sieve": "tree-sitter-sieve" } From 917bd81e8ed800ece11ec05d38653744780bdfe6 Mon Sep 17 00:00:00 2001 From: GitHub automation Date: Sat, 30 May 2026 05:49:00 +0000 Subject: [PATCH 02/26] update(pkgs): Update sources of all downstream packages --- .../dotfiles/eww/desktop-logic/Cargo.lock | 80 +++++++++---------- pkgs/packages/nvidia/package.nix | 6 +- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/home-config/dotfiles/eww/desktop-logic/Cargo.lock b/home-config/dotfiles/eww/desktop-logic/Cargo.lock index d3c82c37..36d58a33 100644 --- a/home-config/dotfiles/eww/desktop-logic/Cargo.lock +++ b/home-config/dotfiles/eww/desktop-logic/Cargo.lock @@ -206,9 +206,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bitflags" @@ -231,9 +231,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.20.2" +version = "3.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "cfg-if" @@ -492,9 +492,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "jiff" -version = "0.2.24" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d" +checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102" dependencies = [ "jiff-static", "log", @@ -505,9 +505,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.24" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7" +checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" dependencies = [ "proc-macro2", "quote", @@ -516,9 +516,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.98" +version = "0.3.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" +checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" dependencies = [ "cfg-if", "futures-util", @@ -546,15 +546,15 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "log" -version = "0.4.29" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5" [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" [[package]] name = "memoffset" @@ -768,9 +768,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.149" +version = "1.0.150" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" dependencies = [ "itoa", "memchr", @@ -862,9 +862,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.11+spec-1.1.0" +version = "0.25.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7" dependencies = [ "indexmap", "toml_datetime", @@ -943,9 +943,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.1" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" dependencies = [ "js-sys", "serde_core", @@ -972,9 +972,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" +checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" dependencies = [ "cfg-if", "once_cell", @@ -985,9 +985,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" +checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -995,9 +995,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" +checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" dependencies = [ "bumpalo", "proc-macro2", @@ -1008,9 +1008,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.121" +version = "0.2.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" dependencies = [ "unicode-ident", ] @@ -1066,9 +1066,9 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" dependencies = [ "memchr", ] @@ -1169,9 +1169,9 @@ dependencies = [ [[package]] name = "zbus" -version = "5.15.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3bcbf15c8708d7fc1be0c993622e0a5cbd5e8b52bfa40afa4c3e0cd8d724ac1" +checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" dependencies = [ "async-broadcast", "async-executor", @@ -1204,9 +1204,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.15.0" +version = "5.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51fa5406ad9175a8c825a931f8cf347116b531b3634fcb0b627c290f1f2516ff" +checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1236,9 +1236,9 @@ checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" [[package]] name = "zvariant" -version = "5.11.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1567a6ec68df868cbbfde844cfc6d81649fe5109a62b116b19fabd53e618ee" +checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" dependencies = [ "endi", "enumflags2", @@ -1250,9 +1250,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.11.0" +version = "5.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d5b780599bbde114e39d9a0799577fad1ced5105d38515745f7b3099d8ceda" +checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1263,9 +1263,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d464f5733ffa07a3164d656f18533caace9d0638596721355d73256a410d691" +checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" dependencies = [ "proc-macro2", "quote", diff --git a/pkgs/packages/nvidia/package.nix b/pkgs/packages/nvidia/package.nix index 6bec6f79..4fa70f75 100644 --- a/pkgs/packages/nvidia/package.nix +++ b/pkgs/packages/nvidia/package.nix @@ -10,9 +10,9 @@ let inherit (flake-inputs.self.nixosConfigurations.yui.config.boot) kernelPackages; in (kernelPackages.nvidiaPackages.mkDriver { - version = "595.71.05"; - sha256_64bit = "sha256-NiA7iWC35JyKQva6H1hjzeNKBek9KyS3mK8G3YRva4I="; - openSha256 = "sha256-Lfz71QWKM6x/jD2B22SWpUi7/og30HRlXg1kL3EWzEw="; + version = "595.80"; + sha256_64bit = "sha256-PVTIP+B/01c/8M66hXTAYTLg9T2Hy9u1gq43K7TF1Hg="; + openSha256 = "sha256-nonwYYPItHeMC/5Ox/TlWhjiddMPu4PLqNhgIg+bfW8="; useSettings = false; usePersistenced = false; From ef5179ed4192583bf787e2ff144e7580add4094c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 13 Mar 2026 17:46:15 +0800 Subject: [PATCH 03/26] chore(work/networking): Remove mikan-guest --- nixos-config/networking/work.nix | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/nixos-config/networking/work.nix b/nixos-config/networking/work.nix index 173fe033..4af6fe82 100644 --- a/nixos-config/networking/work.nix +++ b/nixos-config/networking/work.nix @@ -23,34 +23,6 @@ psk = "$PSK_LALA_GUEST"; }; }; - - mikan-guest = { - connection = { - id = "mikan-guest"; - type = "wifi"; - - autoconnect = true; - autoconnect-priority = 100; - # Attempt to connect indefinitely - autoconnect-retries = 0; - }; - - wifi = { - mode = "infrastructure"; - ssid = "mikan-guest"; - }; - - wifi-security = { - key-mgmt = "sae"; - psk = "$PSK_MIKAN_GUEST"; - }; - - ipv4.method = "auto"; - ipv6 = { - addr-gen-mode = "default"; - method = "auto"; - }; - }; }; }; From fe280476a75f5e3e39b7b269593692eb720afb9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 13 Mar 2026 17:46:48 +0800 Subject: [PATCH 04/26] chore(work): Remove superfluous graphics driver addition --- nixos-config/hosts/rin/hardware.nix | 2 -- 1 file changed, 2 deletions(-) diff --git a/nixos-config/hosts/rin/hardware.nix b/nixos-config/hosts/rin/hardware.nix index b3a74b0b..ccdf922b 100644 --- a/nixos-config/hosts/rin/hardware.nix +++ b/nixos-config/hosts/rin/hardware.nix @@ -37,6 +37,4 @@ # Apparently, xorg requires bus IDs to be *decimal* amdgpuBusId = "PCI:197:0:0"; }; - - services.xserver.videoDrivers = [ "amdgpu" ]; } From 16cfb6b924ec763d43be40359b4cc861fd9a0e4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Thu, 4 Sep 2025 13:55:21 +0800 Subject: [PATCH 05/26] feat(networking/work): Add TGR wifi definition --- nixos-config/networking/work.nix | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/nixos-config/networking/work.nix b/nixos-config/networking/work.nix index 4af6fe82..f4283d81 100644 --- a/nixos-config/networking/work.nix +++ b/nixos-config/networking/work.nix @@ -23,6 +23,34 @@ psk = "$PSK_LALA_GUEST"; }; }; + + tgr = { + connection = { + id = "tgr"; + type = "wifi"; + + autoconnect = true; + autoconnect-priority = 100; + }; + + wifi = { + mode = "infrastructure"; + ssid = "The Great Room"; + # Disable if we get issues after the transition on 21 September + # scan-rand-mac-address = false; + }; + + wifi-security = { + key-mgmt = "wpa-psk"; + psk = "$PSK_TGR"; + }; + + ipv4.method = "auto"; + ipv6 = { + addr-gen-mode = "default"; + method = "auto"; + }; + }; }; }; From c63f9ec0864eb47cde1fbb4275c761aeefed6157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Wed, 13 May 2026 16:54:54 +0800 Subject: [PATCH 06/26] feat(rin): Switch to new osquery --- flake.lock | 86 ++++++++++++------------------ nixos-config/hosts/rin/default.nix | 1 - 2 files changed, 35 insertions(+), 52 deletions(-) diff --git a/flake.lock b/flake.lock index c447ceea..86f42baf 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1780048612, - "narHash": "sha256-Md/eOK5OjmvvHc2H52pLZe4zpP4XyfiS5vHqfRCz2HU=", + "lastModified": 1777713215, + "narHash": "sha256-8GzXDOXckDWwST8TY5DbwYFjdvQLlP7K9CLSVx6iTTo=", "owner": "nix-community", "repo": "disko", - "rev": "caa775cf67bfdc47f940edd96c975b5016df9059", + "rev": "63b4e7e6cf75307c1d26ac3762b886b5b0247267", "type": "github" }, "original": { @@ -30,11 +30,11 @@ ] }, "locked": { - "lastModified": 1780112698, - "narHash": "sha256-vHBRy/IXXoYSVJFwgpn23kSYRIis2xsBXEGR5QV8hDo=", + "lastModified": 1778294769, + "narHash": "sha256-yDHHZghIaAa9F+3FgH/l9h/KhtU8QRspDf4WmpHso2M=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "5a6425a7a1144748a49b25ab5d2d91ccd0ec09d1", + "rev": "f14d0074de9f9737b234ce8b00d9787f60ff833f", "type": "github" }, "original": { @@ -114,11 +114,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1778716662, - "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "lastModified": 1777678872, + "narHash": "sha256-EPIFsulyon7Z1vLQq5Fk64GR8L7cQsT+IPhcsukVbgk=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "rev": "5250617bffd85403b14dbf43c3870e7f255d2c16", "type": "github" }, "original": { @@ -178,11 +178,11 @@ ] }, "locked": { - "lastModified": 1778507602, - "narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=", + "lastModified": 1776796298, + "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a", + "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad", "type": "github" }, "original": { @@ -220,11 +220,11 @@ ] }, "locked": { - "lastModified": 1779506708, - "narHash": "sha256-QOD/CNm196nCJRheux/URi4/HE66fthdOMqCJoPP1Y0=", + "lastModified": 1777851538, + "narHash": "sha256-Gp8qwTEYNoy2yvmErVGlvLOQvrtEECCAKbonW7VJef8=", "owner": "nix-community", "repo": "home-manager", - "rev": "3ee51fbdac8c8bdfe1e7e1fcaba6520a563f394f", + "rev": "cc09c0f9b7eaa95c2d9827338a5eb03d32505ca5", "type": "github" }, "original": { @@ -277,11 +277,11 @@ ] }, "locked": { - "lastModified": 1779768228, - "narHash": "sha256-/dRavNAx/Mp67xcQQ3JBIMyf0cLoXqKedafB1+wksAE=", + "lastModified": 1778297703, + "narHash": "sha256-EqS67I6LgEpnu/rUO6x+SaMWMN89TTsY1AnThsl84uI=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "6e7a8414c0f547a86646eb0b56ebf89e7cc217a2", + "rev": "2c1b0276febd6b6cac789a9f3cafe5d6ef4e8f58", "type": "github" }, "original": { @@ -307,15 +307,12 @@ } }, "nixos-hardware": { - "inputs": { - "nixpkgs": "nixpkgs" - }, "locked": { - "lastModified": 1780065812, - "narHash": "sha256-SCSLUKBmwlSLGQ8Xbr8PjRFtiHNk0l9ktqkcmqdBkfE=", + "lastModified": 1778143761, + "narHash": "sha256-lkesY6x2X2qxlqLM7CT2iM/0rP2JB7fruPN3h8POXmI=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "b76b5639c0593e0aeb0b5879ad62d4b30596c144", + "rev": "3bcaa367d4c550d687a17ac792fd5cda214ee871", "type": "github" }, "original": { @@ -327,15 +324,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1767892417, - "narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=", - "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba", + "lastModified": 1778003029, + "narHash": "sha256-amc4Y3GF3+anUi7IJeLVzf7hVqLb3ZqCGzYtkVyp7Qw=", + "rev": "0c88e1f2bdb93d5999019e99cb0e61e1fe2af4c5", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.10470.0c88e1f2bdb9/nixexprs.tar.xz" }, "original": { "type": "tarball", - "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" + "url": "https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz" } }, "nixpkgs-lib": { @@ -355,11 +352,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1779560665, - "narHash": "sha256-NpH8iEQ5JHv/BtUuzTEXUMDxPLetCDzIv4OxL8H7Kps=", - "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", + "lastModified": 1780243769, + "narHash": "sha256-2fYATYjjbsF2ri3reTWXgBkrmwK5Hpj23CsTEdLA2fo=", + "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre1004030.64c08a7ca051/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1008282.331800de5053/nixexprs.tar.xz?lastModified=1780243769&rev=331800de5053fcebacf6813adb5db9c9dca22a0c" }, "original": { "type": "tarball", @@ -368,30 +365,17 @@ }, "nixpkgs-unstable_2": { "locked": { - "lastModified": 1779560665, - "narHash": "sha256-NpH8iEQ5JHv/BtUuzTEXUMDxPLetCDzIv4OxL8H7Kps=", - "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", + "lastModified": 1777954456, + "narHash": "sha256-qeRNZKcA0igTdRVnBe6hyo49CqxME92s4G8Sr78ARJw=", + "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre1004030.64c08a7ca051/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre992384.549bd84d6279/nixexprs.tar.xz" }, "original": { "type": "tarball", "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1779796641, - "narHash": "sha256-Cy89LFmgiCxIPBxJLWTmFJHwdeLkxUUYspm5yy8wJps=", - "rev": "25f538306313eae3927264466c70d7001dcea1df", - "type": "tarball", - "url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.11422.25f538306313/nixexprs.tar.xz" - }, - "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz" - } - }, "root": { "inputs": { "disko": "disko", @@ -404,7 +388,7 @@ "nix-gaming": "nix-gaming", "nix-webapps": "nix-webapps", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "nixpkgs-unstable": "nixpkgs-unstable_2", "sops-nix": "sops-nix", "tree-sitter-sieve": "tree-sitter-sieve" diff --git a/nixos-config/hosts/rin/default.nix b/nixos-config/hosts/rin/default.nix index 82da9266..461e15c0 100644 --- a/nixos-config/hosts/rin/default.nix +++ b/nixos-config/hosts/rin/default.nix @@ -23,7 +23,6 @@ secrets."osquery/enroll" = { }; }; - famedly-hwp.osquery_secret_path = config.sops.secrets."osquery/enroll".path; programs.gnupg.agent.enable = lib.mkForce false; # Used extensively for testing at work From b9b1d5dbb73313b7c75483f90f69f34d808a2e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 5 Jun 2026 22:40:20 +0100 Subject: [PATCH 07/26] update(nixos): Update to NixOS 26.05 --- checks/default.nix | 2 +- flake.lock | 80 ++++++++++++++------------ flake.nix | 65 +++++++++++---------- home-config/applications/tty/emacs.nix | 13 +++++ home-config/desktop/eww.nix | 7 +-- home-config/desktop/gtk.nix | 8 ++- home-config/desktop/sway.nix | 9 +-- home-config/dotfiles/nushell/config.nu | 4 +- home-config/services/pipewire.nix | 80 ++++++++++++++------------ home-config/shell/default.nix | 24 ++++---- home-config/work/famedly.nix | 7 +-- home-config/xdg-settings.nix | 4 +- lib/pkgs.nix | 21 +++++-- nixos-config/default.nix | 11 +--- pkgs/lib.nix | 2 +- pkgs/packages/emacs/package.nix | 2 +- 16 files changed, 184 insertions(+), 155 deletions(-) diff --git a/checks/default.nix b/checks/default.nix index 41129fa9..8ca8632e 100644 --- a/checks/default.nix +++ b/checks/default.nix @@ -10,7 +10,7 @@ in fileset = lib.fileset.fileFilter (file: file.hasExt "nix") ../.; checkInputs = lib.attrValues { - inherit (pkgs) deadnix nixfmt-rfc-style; + inherit (pkgs) deadnix nixfmt; inherit (flake-inputs.nix-ast-lint.packages.x86_64-linux) nix-ast-lint; }; diff --git a/flake.lock b/flake.lock index 86f42baf..d3cbbc22 100644 --- a/flake.lock +++ b/flake.lock @@ -80,11 +80,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1756795219, - "narHash": "sha256-tKBQtz1JLKWrCJUxVkHKR+YKmVpm0KZdJdPWmR2slQ8=", + "lastModified": 1780654233, + "narHash": "sha256-F5rHBSjkUyobwPC2IclWO6t91hiKBnuJa0yDfKuUchE=", "owner": "nix-community", "repo": "fenix", - "rev": "80dbdab137f2809e3c823ed027e1665ce2502d74", + "rev": "b9e0e5df8f7b4456eb1cad97c435ad0b3e44c669", "type": "github" }, "original": { @@ -135,11 +135,11 @@ ] }, "locked": { - "lastModified": 1778185331, - "narHash": "sha256-PMtQio4dN9ERcfcbzI0bcvchaTnl1wAXB0QQRm9m47M=", + "lastModified": 1780683281, + "narHash": "sha256-kM1hupNGf2GfcU671Di9r2Ss1BiPhjx6TvyF4xHLRsg=", "owner": "adamcik", "repo": "fleet-nixos", - "rev": "427c05f9ea6728ce9415730a8fbf917da35df84c", + "rev": "e4fce0eaf7c0c898dfbc4c38e9a8358df4133144", "type": "github" }, "original": { @@ -220,20 +220,41 @@ ] }, "locked": { - "lastModified": 1777851538, - "narHash": "sha256-Gp8qwTEYNoy2yvmErVGlvLOQvrtEECCAKbonW7VJef8=", + "lastModified": 1780883961, + "narHash": "sha256-WU6SUrESuPiEXEUvX4D51AgWrXRJty+sLJBwBaDBGqE=", "owner": "nix-community", "repo": "home-manager", - "rev": "cc09c0f9b7eaa95c2d9827338a5eb03d32505ca5", + "rev": "4eb4fec41674d5b059aa2eedf0f98453890546fa", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.11", + "ref": "release-26.05", "repo": "home-manager", "type": "github" } }, + "home-manager-fix-ssh-socket": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1780565855, + "narHash": "sha256-ySbnO0LaGukcsU8XLg0PRI86os2TEjkFF83AeSvqcOA=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "55b927d6ebeeee9aadd70135125a35d80573ad6a", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "rev": "55b927d6ebeeee9aadd70135125a35d80573ad6a", + "type": "github" + } + }, "nix-ast-lint": { "inputs": { "nixpkgs": [ @@ -324,15 +345,15 @@ }, "nixpkgs": { "locked": { - "lastModified": 1778003029, - "narHash": "sha256-amc4Y3GF3+anUi7IJeLVzf7hVqLb3ZqCGzYtkVyp7Qw=", - "rev": "0c88e1f2bdb93d5999019e99cb0e61e1fe2af4c5", + "lastModified": 1780453794, + "narHash": "sha256-hhAl/iKiurXPn7rdzDgiSuRB8tqOB6f0buWkh8Y9mkY=", + "rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338", "type": "tarball", - "url": "https://releases.nixos.org/nixos/25.11/nixos-25.11.10470.0c88e1f2bdb9/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.1183.6b316287bae2/nixexprs.tar.xz?lastModified=1780453794&rev=6b316287bae2ee04c9b93c8c858d930fd07d7338" }, "original": { "type": "tarball", - "url": "https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz" + "url": "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz" } }, "nixpkgs-lib": { @@ -352,24 +373,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1780243769, - "narHash": "sha256-2fYATYjjbsF2ri3reTWXgBkrmwK5Hpj23CsTEdLA2fo=", - "rev": "331800de5053fcebacf6813adb5db9c9dca22a0c", - "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1008282.331800de5053/nixexprs.tar.xz?lastModified=1780243769&rev=331800de5053fcebacf6813adb5db9c9dca22a0c" - }, - "original": { - "type": "tarball", - "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" - } - }, - "nixpkgs-unstable_2": { - "locked": { - "lastModified": 1777954456, - "narHash": "sha256-qeRNZKcA0igTdRVnBe6hyo49CqxME92s4G8Sr78ARJw=", - "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1", + "lastModified": 1780749050, + "narHash": "sha256-G5B1h4sOH4DN/RZ85xYi6zPm2MHdOrNMeUmMslZ28Qs=", + "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre992384.549bd84d6279/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1011622.a799d3e3886d/nixexprs.tar.xz?lastModified=1780749050&rev=a799d3e3886da994fa307f817a6bc705ae538eeb" }, "original": { "type": "tarball", @@ -383,13 +391,13 @@ "famedly-nixos": "famedly-nixos", "flint": "flint", "home-manager": "home-manager", + "home-manager-fix-ssh-socket": "home-manager-fix-ssh-socket", "nix-ast-lint": "nix-ast-lint", "nix-flatpak": "nix-flatpak", "nix-gaming": "nix-gaming", "nix-webapps": "nix-webapps", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", - "nixpkgs-unstable": "nixpkgs-unstable_2", "sops-nix": "sops-nix", "tree-sitter-sieve": "tree-sitter-sieve" } @@ -397,11 +405,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1756597274, - "narHash": "sha256-wfaKRKsEVQDB7pQtAt04vRgFphkVscGRpSx3wG1l50E=", + "lastModified": 1780573409, + "narHash": "sha256-Dlru75JzUwjI9d5uiDrN9Rt/wTFVTuqt6QBT+nf2g8U=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "21614ed2d3279a9aa1f15c88d293e65a98991b30", + "rev": "aadee11251e6074c9245ac96bc4bfe6eca05a64c", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index f6627d72..a4c1cc2f 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,7 @@ description = "tlater's dotfiles"; inputs = { - nixpkgs.url = "https://channels.nixos.org/nixos-25.11/nixexprs.tar.xz"; - nixpkgs-unstable.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"; + nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; sops-nix = { @@ -24,7 +23,14 @@ nix-webapps.url = "github:TLATER/nix-webapps?ref=tlater/idiomatic-flake"; home-manager = { - url = "github:nix-community/home-manager/release-25.11"; + url = "github:nix-community/home-manager/release-26.05"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # TODO: Remove when this hits the current home-manager release + # branch (or remove it along with home-manager). + home-manager-fix-ssh-socket = { + url = "github:nix-community/home-manager?rev=55b927d6ebeeee9aadd70135125a35d80573ad6a"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -97,37 +103,34 @@ checks.x86_64-linux = import ./checks { flake-inputs = inputs; }; devShells.x86_64-linux = - ( - { nixpkgs, sops-nix, ... }: - { - default = nixpkgs.legacyPackages.mkShell { - packages = nixpkgs.lib.attrValues { - inherit (nixpkgs.legacyPackages) nh; - inherit (sops-nix.packages) sops-init-gpg-key sops-import-keys-hook; - }; - - sopsPGPKeyDirs = [ - "./keys/hosts/" - "./keys/users/" - ]; - - NH_NO_CHECKS = true; - NH_FLAKE = "/home/tlater/.local/src/dotfiles"; + ({ nixpkgs, sops-nix, ... }: { + default = nixpkgs.legacyPackages.mkShell { + packages = nixpkgs.lib.attrValues { + inherit (nixpkgs.legacyPackages) nh; + inherit (sops-nix.packages) sops-init-gpg-key sops-import-keys-hook; }; - rust = nixpkgs.legacyPackages.mkShell { - packages = nixpkgs.lib.attrValues { - inherit (nixpkgs.legacyPackages) - rust-analyzer - rustc - rustfmt - cargo - clippy - ; - }; + sopsPGPKeyDirs = [ + "./keys/hosts/" + "./keys/users/" + ]; + + NH_NO_CHECKS = true; + NH_FLAKE = "/home/tlater/.local/src/dotfiles"; + }; + + rust = nixpkgs.legacyPackages.mkShell { + packages = nixpkgs.lib.attrValues { + inherit (nixpkgs.legacyPackages) + rust-analyzer + rustc + rustfmt + cargo + clippy + ; }; - } - ) + }; + }) (self.lib.flattenFlakeInputs inputs "x86_64-linux"); }; } diff --git a/home-config/applications/tty/emacs.nix b/home-config/applications/tty/emacs.nix index c7bc5316..650b1171 100644 --- a/home-config/applications/tty/emacs.nix +++ b/home-config/applications/tty/emacs.nix @@ -4,6 +4,14 @@ let inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) emacs; in { + disabledModules = [ "misc/ssh-auth-sock.nix" ]; + imports = [ "${flake-inputs.home-manager-fix-ssh-socket}/modules/misc/ssh-auth-sock.nix" ]; + + sshAuthSock = { + enable = true; + systemd.socketProviderUnit = "gpg-agent-ssh.socket"; + }; + xdg.configFile."emacs".source = "${self}/home-config/dotfiles/emacs.d/"; programs.emacs = { @@ -22,4 +30,9 @@ in }; socketActivation.enable = true; }; + + systemd.user.services.emacs.Unit = { + After = [ "gpg-agent-ssh.socket" ]; + Requires = [ "gpg-agent-ssh.socket" ]; + }; } diff --git a/home-config/desktop/eww.nix b/home-config/desktop/eww.nix index 801b4848..6292cd6d 100644 --- a/home-config/desktop/eww.nix +++ b/home-config/desktop/eww.nix @@ -9,10 +9,9 @@ let ewwBin = lib.getExe config.programs.eww.package; in { - programs.eww = { - enable = true; - configDir = ../dotfiles/eww; - }; + + programs.eww.enable = true; + xdg.configFile."eww".source = ../dotfiles/eww; systemd.user.services = { eww = { diff --git a/home-config/desktop/gtk.nix b/home-config/desktop/gtk.nix index e559a152..282e2cd8 100644 --- a/home-config/desktop/gtk.nix +++ b/home-config/desktop/gtk.nix @@ -1,4 +1,9 @@ -{ flake-inputs, pkgs, ... }: +{ + config, + flake-inputs, + pkgs, + ... +}: { dconf.settings."org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; @@ -12,6 +17,7 @@ name = "NotoSans"; }; + gtk4.theme = config.gtk.theme; theme = { package = pkgs.magnetic-catppuccin-gtk; name = "Catppuccin-GTK-Dark"; diff --git a/home-config/desktop/sway.nix b/home-config/desktop/sway.nix index 31fba693..800dc16f 100644 --- a/home-config/desktop/sway.nix +++ b/home-config/desktop/sway.nix @@ -74,14 +74,9 @@ in services.swayidle = { enable = true; - systemdTarget = "graphical-session.target"; + systemdTargets = [ "graphical-session.target" ]; - events = [ - { - event = "lock"; - command = "${systemctl} --user start swaylock"; - } - ]; + events.lock = "${systemctl} --user start swaylock"; timeouts = [ { diff --git a/home-config/dotfiles/nushell/config.nu b/home-config/dotfiles/nushell/config.nu index f5303853..0f96556a 100644 --- a/home-config/dotfiles/nushell/config.nu +++ b/home-config/dotfiles/nushell/config.nu @@ -90,13 +90,13 @@ $env.PROMPT_COMMAND = {|| let project_root = get-project-root let relative_root = ( $project_root - | default (do -i { $env.PWD | path relative-to $nu.home-path; echo $nu.home-path }) + | default (do -i { $env.PWD | path relative-to $nu.home-dir; echo $nu.home-dir }) | default '/' ) let home_char = match $relative_root { '/' => '/' - $root if $root == $nu.home-path => '~' + $root if $root == $nu.home-dir => '~' _ => $'$(basename $project_root)' } diff --git a/home-config/services/pipewire.nix b/home-config/services/pipewire.nix index 6b0b56da..e1d9aa25 100644 --- a/home-config/services/pipewire.nix +++ b/home-config/services/pipewire.nix @@ -1,45 +1,49 @@ -{ pkgs, ... }: -{ - xdg.configFile."pipewire/pipewire.conf.d/99-deepfilternet.conf" = { - text = builtins.toJSON { - "context.properties" = { - "link.max-buffers" = 16; - "core.daemon" = true; - "core.name" = "pipewire-0"; - "module.x11.bell" = false; - "module.access" = true; - "module.jackdbus-detect" = false; - }; +{ pkgs, ... }: { + xdg.configFile = { + "systemd/user/pipewire.service.d/overrides.conf".text = '' + [Service] + Environment=LADSPA_PATH=${pkgs.deepfilternet}/lib/ladspa/ + ''; - "context.modules" = [ - { - name = "libpipewire-module-filter-chain"; - args = { - "node.description" = "DeepFilter Noise Canceling source"; - "media.name" = "DeepFilter Noise Canceling source"; + "pipewire/pipewire.conf.d/99-deepfilternet.conf" = { + text = builtins.toJSON { + "context.properties" = { + "link.max-buffers" = 16; + "core.daemon" = true; + "core.name" = "pipewire-0"; + "module.x11.bell" = false; + "module.access" = true; + "module.jackdbus-detect" = false; + }; - "filter.graph" = { - nodes = [ - { - type = "ladspa"; - name = "DeepFilter Mono"; - plugin = "${pkgs.deepfilternet}/lib/ladspa/libdeep_filter_ladspa.so"; - label = "deep_filter_mono"; - control = { - "Attenuation Limit (dB)" = 100; - }; - } - ]; - }; + "context.modules" = [ + { + name = "libpipewire-module-filter-chain"; + args = { + "node.description" = "DeepFilter Noise Canceling source"; + "media.name" = "DeepFilter Noise Canceling source"; + + "filter.graph" = { + nodes = [ + { + type = "ladspa"; + name = "DeepFilter Mono"; + plugin = "libdeep_filter_ladspa"; + label = "deep_filter_mono"; + control."Attenuation Limit (dB)" = 100; + } + ]; + }; - "audio.rate" = 48000; - "audio.position" = "[MONO]"; + "audio.rate" = 48000; + "audio.position" = "[MONO]"; - "capture.props"."node.passive" = true; - "playback.props"."media.class" = "Audio/Source"; - }; - } - ]; + "capture.props"."node.passive" = true; + "playback.props"."media.class" = "Audio/Source"; + }; + } + ]; + }; }; }; } diff --git a/home-config/shell/default.nix b/home-config/shell/default.nix index 8bea532c..02418353 100644 --- a/home-config/shell/default.nix +++ b/home-config/shell/default.nix @@ -42,18 +42,18 @@ ssh = { enable = true; - matchBlocks."*" = { - identitiesOnly = true; - forwardAgent = false; - addKeysToAgent = "no"; - compression = false; - serverAliveInterval = 0; - serverAliveCountMax = 3; - hashKnownHosts = false; - userKnownHostsFile = "~/.ssh/known_hosts"; - controlMaster = "no"; - controlPath = "~/.ssh/master-%r@%n:%p"; - controlPersist = "no"; + settings."*" = { + IdentitiesOnly = true; + ForwardAgent = false; + AddKeysToAgent = "no"; + Compression = false; + ServerAliveInterval = 0; + ServerAliveCountMax = 3; + HashKnownHosts = false; + UserKnownHostsFile = "~/.ssh/known_hosts"; + ControlMaster = "no"; + ControlPath = "~/.ssh/master-%r@%n:%p"; + ControlPersist = "no"; }; }; diff --git a/home-config/work/famedly.nix b/home-config/work/famedly.nix index d268d54a..3a5f5007 100644 --- a/home-config/work/famedly.nix +++ b/home-config/work/famedly.nix @@ -38,17 +38,14 @@ ssh = { enableDefaultConfig = false; - matchBlocks."*".identityFile = "~/.ssh/famedly-tlater.pub"; + settings."*".IdentityFile = "~/.ssh/famedly-tlater.pub"; }; }; services.mpd.enable = lib.mkForce false; home = { - packages = with pkgs; [ - bitwarden-desktop - pre-commit - ]; + packages = with pkgs; [ pre-commit ]; file.".ssh/famedly-tlater.pub".source = "${flake-inputs.self}/keys/famedly-tlater.pub"; }; diff --git a/home-config/xdg-settings.nix b/home-config/xdg-settings.nix index ef510864..d1c0c1b6 100644 --- a/home-config/xdg-settings.nix +++ b/home-config/xdg-settings.nix @@ -12,6 +12,8 @@ in { xdg.userDirs = { enable = true; + setSessionVariables = true; + # Work around firefox creating a "Desktop" directory desktop = "${config.home.homeDirectory}"; download = "${config.home.homeDirectory}/Downloads"; @@ -22,7 +24,7 @@ in publicShare = "${config.xdg.userDirs.documents}/Public"; templates = "${config.xdg.userDirs.documents}/Templates"; extraConfig = { - XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots"; + SCREENSHOTS = "${config.xdg.userDirs.pictures}/Screenshots"; }; }; diff --git a/lib/pkgs.nix b/lib/pkgs.nix index f87b9777..c01fa6b2 100644 --- a/lib/pkgs.nix +++ b/lib/pkgs.nix @@ -2,6 +2,9 @@ lib, writers, nushell, + + runCommand, + makeBinaryWrapper, ... }: rec { @@ -12,11 +15,19 @@ rec { extraMakeWrapperArgs ? [ ], }: writers.makeScriptWriter { - interpreter = lib.concatStringsSep " " [ - (lib.getExe nushell) - "--no-config-file" - "--plugins [${lib.concatStringsSep " " (map lib.getExe plugins)}]" - ]; + interpreter = lib.getExe ( + runCommand "wrapped-nu" + { + nativeBuildInputs = [ makeBinaryWrapper ]; + meta.mainProgram = "nu"; + } + '' + makeBinaryWrapper ${lib.getExe nushell} $out/bin/nu \ + --add-flag --plugins \ + --add-flag '[${lib.concatStringsSep " " (map lib.getExe plugins)}]' \ + --add-flag --no-config-file + '' + ); makeWrapperArgs = (lib.optionals (packages != [ ]) [ diff --git a/nixos-config/default.nix b/nixos-config/default.nix index 1100072b..a85a6497 100644 --- a/nixos-config/default.nix +++ b/nixos-config/default.nix @@ -6,11 +6,6 @@ ... }: { - disabledModules = [ - "services/misc/angrr.nix" - "services/system/automatic-timezoned.nix" - ]; - imports = [ flake-inputs.self.nixosModules.nvidia @@ -18,9 +13,6 @@ flake-inputs.sops-nix.nixosModules.sops flake-inputs.nix-flatpak.nixosModules.nix-flatpak - "${flake-inputs.nixpkgs-unstable}/nixos/modules/services/misc/angrr.nix" - "${flake-inputs.nixpkgs-unstable}/nixos/modules/services/system/automatic-timezoned.nix" - ./desktop ./dev.nix ./networking @@ -90,7 +82,7 @@ # Ensure that we can find stuff with `man -k` (used with emacs a # lot) - documentation.man.generateCaches = true; + documentation.man.cache.enable = true; environment = { systemPackages = with pkgs; [ pavucontrol ]; @@ -143,7 +135,6 @@ services = { angrr = { enable = true; - package = flake-inputs.nixpkgs-unstable.legacyPackages."${pkgs.stdenv.hostPlatform.system}".angrr; settings = { temporary-root-policies = { diff --git a/pkgs/lib.nix b/pkgs/lib.nix index e73eb3b4..af60f246 100644 --- a/pkgs/lib.nix +++ b/pkgs/lib.nix @@ -13,7 +13,7 @@ in { packages = [ pkgs.nix-update - pkgs.nixfmt-rfc-style + pkgs.nixfmt ]; } diff --git a/pkgs/packages/emacs/package.nix b/pkgs/packages/emacs/package.nix index d5c52f6e..0cf5e525 100644 --- a/pkgs/packages/emacs/package.nix +++ b/pkgs/packages/emacs/package.nix @@ -53,7 +53,7 @@ let biome # json/web stuff marksman # markdown nil # nix - nixfmt-rfc-style + nixfmt ruff # python # *sh bash-language-server From e2956c7fec797e5bd036d0dea83a7adaf61fe882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Wed, 10 Jun 2026 01:13:05 +0200 Subject: [PATCH 08/26] chore(treewide): Get rid of sops-nix --- .sops.yaml | 18 ------- flake.lock | 21 --------- flake.nix | 17 +------ keys/hosts/yui.asc | 18 ------- keys/users/tlater.asc | 44 ----------------- nixos-config/default.nix | 1 - nixos-config/hosts/rin/default.nix | 7 --- nixos-config/networking/default.nix | 47 +++++++++++++++---- .../networkmanager-ensure-profiles.nix | 47 +++++++++++++++++++ nixos-config/networking/work.nix | 15 +++--- nixos-config/yubikey.nix | 11 ----- 11 files changed, 97 insertions(+), 149 deletions(-) delete mode 100644 .sops.yaml delete mode 100644 keys/hosts/yui.asc delete mode 100644 keys/users/tlater.asc create mode 100644 nixos-config/networking/networkmanager-ensure-profiles.nix diff --git a/.sops.yaml b/.sops.yaml deleted file mode 100644 index 4fdb5c7a..00000000 --- a/.sops.yaml +++ /dev/null @@ -1,18 +0,0 @@ -keys: - - &tlater 8322CC1D351D8EFE63F3 D27A8CF496E6E265C6A3! - - &yui age1fk5u7h30pwmnzs6hnrzjxfuzzvkpplas43mq8vtem95hnydrfu9q4f9s5a - - &tlater-famedly E3A01E05CDB7D42E9909 B9394D863FBF16FE6D51 - - &rin age1qne0ry5pxn4pfqzney9hxy9dedst02qtvfrmnf2p7dhr560mgcusg3tpz6 - -creation_rules: - - key_groups: - - pgp: - - *tlater - age: - - *yui - - path_regex: secrets/work/[^/]+\.(yaml|json|env|ini)$ - key_groups: - - pgp: - - *tlater-famedly - age: - - *rin diff --git a/flake.lock b/flake.lock index d3cbbc22..c7cea9a8 100644 --- a/flake.lock +++ b/flake.lock @@ -398,7 +398,6 @@ "nix-webapps": "nix-webapps", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", - "sops-nix": "sops-nix", "tree-sitter-sieve": "tree-sitter-sieve" } }, @@ -419,26 +418,6 @@ "type": "github" } }, - "sops-nix": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1777944972, - "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=", - "owner": "Mic92", - "repo": "sops-nix", - "rev": "c591bf665727040c6cc5cb409079acb22dcce33c", - "type": "github" - }, - "original": { - "owner": "Mic92", - "repo": "sops-nix", - "type": "github" - } - }, "tree-sitter-sieve": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index a4c1cc2f..e085b0a6 100644 --- a/flake.nix +++ b/flake.nix @@ -5,11 +5,6 @@ nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; - sops-nix = { - url = "github:Mic92/sops-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - disko = { url = "github:nix-community/disko"; inputs.nixpkgs.follows = "nixpkgs"; @@ -103,17 +98,9 @@ checks.x86_64-linux = import ./checks { flake-inputs = inputs; }; devShells.x86_64-linux = - ({ nixpkgs, sops-nix, ... }: { + ({ nixpkgs, ... }: { default = nixpkgs.legacyPackages.mkShell { - packages = nixpkgs.lib.attrValues { - inherit (nixpkgs.legacyPackages) nh; - inherit (sops-nix.packages) sops-init-gpg-key sops-import-keys-hook; - }; - - sopsPGPKeyDirs = [ - "./keys/hosts/" - "./keys/users/" - ]; + packages = [ nixpkgs.legacyPackages.nh ]; NH_NO_CHECKS = true; NH_FLAKE = "/home/tlater/.local/src/dotfiles"; diff --git a/keys/hosts/yui.asc b/keys/hosts/yui.asc deleted file mode 100644 index 5b795ca4..00000000 --- a/keys/hosts/yui.asc +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBGAXLb8BCAC4ULmmGpcAlZnrzRzfAax01KXt71UJkVIPkKZXrFzPAS4DeblL -0ZgkIYaQ6kQnPn/Nrey/6flp0QMctkSVYVOJODI8/3DSDD5uzkTOqQulHNR9KT7Q -EN+ZwntizzgKHVVDqM8bLDPTwJu6pksn7ngbcHKiO16gTdtWOKwJiZtMwBcDthA5 -DY+7SmubsNMPq9ElhYkejpw5fffE/tPlyfmijpZxqSDQHevT6chcsuuVEwxXceI4 -rbQf85zskF7C+2JrYPq4Vt2e979TUtipGT+rOyMef+KcazoqQ1ocvntYnhIZxTDR -shjs6S3gFBidfpalpldGOBKsyrkXuZnZita1ABEBAAG0Dnl1aSA8cm9vdEB5dWk+ -iQFOBBMBCAA4FiEEcRMqLRceeeaiDoHmwzvJyMZ8WUgFAmAXLb8CGy8FCwkIBwIG -FQoJCAsCBBYCAwECHgECF4AACgkQwzvJyMZ8WUhYiwf9FRoFhXsYeOLdhvbJg+6g -ErrKjl5wXeQ6s0mdo7sfLPJeRny8pLefImWLKHhUJ80i3Bqicj1ry1ot02OJkBLx -YiPKwz5d6bT/QP6N8e3WPFSbLeqH6F3YGHL47iBLgp8iKg0NY0R5wXFS9q6snrrQ -LlQ8A5+Ku3IrzL/T3W/bSEfXWFzQq9Y8d7HdIeKpzJgaAEvXgaAbhIpC1qdeez9T -Z5us/THrd4gH6HCYVA6ZAyMfjznld2hNCRAZRwdNrNn1+2yxlMLBAKVjDrrCVk1t -0pqtR613nSpREtUOigMLhdOxiBvAzGEma/NglsaeuTZCeVINg/o9k/SUcvSYk2rZ -OQ== -=h+pE ------END PGP PUBLIC KEY BLOCK----- diff --git a/keys/users/tlater.asc b/keys/users/tlater.asc deleted file mode 100644 index 46e8415b..00000000 --- a/keys/users/tlater.asc +++ /dev/null @@ -1,44 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEaN+Y2hYJKwYBBAHaRw8BAQdAxpAAfVB+wwIcxEqLhZXGOLQcGzN8tIvnL4RM -ovzDyOmI0QQfFgoAgwWCaN+Y2gWJBaSPvQMLCQcJEJFYJf4CDDsERxQAAAAAAB4A -IHNhbHRAbm90YXRpb25zLnNlcXVvaWEtcGdwLm9yZ8pYda8oUsLzLqj1avZv2DOc -sT3a3jJNKz4NsRpp2/xUAxUKCAKbAQIeCRYhBBypFiLIAlMIN83xvZFYJf4CDDsE -AADVSwD+P3Jy6qBwbgPwgZzf5+cikSnMLwMuEUdI+jY6ICFrB1UA/1uwLVdjveRY -OwqhrPbuc00DFlAUDTXVhudNAwrIo1UFtA88dG1AdGxhdGVyLm5ldD6I0QQTFgoA -gwWCaN+Y2gWJBaSPvQMLCQcJEJFYJf4CDDsERxQAAAAAAB4AIHNhbHRAbm90YXRp -b25zLnNlcXVvaWEtcGdwLm9yZ7YE8O8QdVSn74dRU3+tbzkaA5vOxcG8hPiHxC92 -pwUQAxUKCAKbAQIeCRYhBBypFiLIAlMIN83xvZFYJf4CDDsEAAB6fAD+J8JUTiGP -8YsMdL/EQpnrYT6rnn15ubnEFYgq8uoLXREA/0xanMgtFfjlLBl1KJKATcWW1N3Y -UIwVc5fSMQlMMhcCtBRUcmlzdGFuIERhbmnDq2wgTWFhdIjUBBMWCgCGBYJo35ja -BYkFpI+9AwsJBwkQkVgl/gIMOwRHFAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2Vx -dW9pYS1wZ3Aub3Jn0BVq6ZTyEVzQbva4FzWzthlLI0RLKFehK5KrzYxHtUADFQoI -ApkBApsBAh4JFiEEHKkWIsgCUwg3zfG9kVgl/gIMOwQAADBZAPsFyfzAPbvpTHIM -Iy3NCjnTIEkKyUB0/Bv05XpSTJEIXAD+K6Xt7rXexehL9cU/uHbv79kkalY4dfxo -HIIMDBiFQg+4MwRo35jaFgkrBgEEAdpHDwEBB0BMgkmV8/WIQUCDNFyZ8vy6NRlf -bLUkRoeXs1goAMl1mIkBhQQYFgoBNwWCaN+Y2gWJBaSPvQkQkVgl/gIMOwRHFAAA -AAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JnYPaWFUQUEGfbaDyY -ySYmH15HQu+/s1WIYTghFMsDfIICmwK+oAQZFgoAbwWCaN+Y2gkQAuk1AGzy6OdH -FAAAAAAAHgAgc2FsdEBub3RhdGlvbnMuc2VxdW9pYS1wZ3Aub3JnC4a3260kzH8Q -IQldNaxtdHhLScfZJNVvS2oA4ekTGasWIQSCgqelFkdq3xOTIn4C6TUAbPLo5wAA -dvMA/1MQKUrQDmqCTrZY7UB0teiInkZKZRmP3JC3yhVVKCuqAP9ESMmGyJZ6CMxZ -jmJJCfBkXVuTD0On6qFJA8q5TN46CBYhBBypFiLIAlMIN83xvZFYJf4CDDsEAAD1 -UAEAmNy3+9KMYoiZee8q3HPjggDLxUxgPqGilGTux2UuIsIBAMtpBoN0RRAw2wau -bG0KsuS7uByzgSvVI3fIBPXW60QAuDMEaN+Y2hYJKwYBBAHaRw8BAQdAwyy3auz1 -a69adFM65ASUMzHT9x/if3H2ULX7xyVPQtmJAYUEGBYKATcFgmjfmNoFiQWkj70J -EJFYJf4CDDsERxQAAAAAAB4AIHNhbHRAbm90YXRpb25zLnNlcXVvaWEtcGdwLm9y -Z+z6/cvmpd8w4gdbRaiLwucfwxEXr6gHp3BSXh+nKmHtApsgvqAEGRYKAG8Fgmjf -mNoJEARvgyjdRr1eRxQAAAAAAB4AIHNhbHRAbm90YXRpb25zLnNlcXVvaWEtcGdw -Lm9yZ0OtJQh/BjruiyemJkYA8G/Y4dpegcQxcsLerz1YoE1nFiEE3HwYRWAJ0IIM -K3u3BG+DKN1GvV4AABCTAP9wfTED3ymUQUi5ZuRqN7ZOvSjY1rNg/hAP3XFrf1dG -BAD/ZGdj6daBbenCNO2J3kXHdRSX0rFsZd63cGD4KksGfwwWIQQcqRYiyAJTCDfN -8b2RWCX+Agw7BAAARfIBALiWY/wyxxdQe1DQ8seufBPmIWQO06pKknMP4WRPxmlj -AQDm/MS7m+XqALr0M2LL6AxSaSW5hXROgq85ppTMhtQCBrg4BGjfmNoSCisGAQQB -l1UBBQEBB0CLw491EDOnLPf2eKA5nwSp/ZMxjrUgkA/i4IFtcDNxbQMBCAeIxgQY -FgoAeAWCaN+Y2gWJBaSPvQkQkVgl/gIMOwRHFAAAAAAAHgAgc2FsdEBub3RhdGlv -bnMuc2VxdW9pYS1wZ3Aub3Jn3mOPxHpLk/tMD65hWa3xbhfZR1Oq4GFM28/HWoKL -t9wCmwwWIQQcqRYiyAJTCDfN8b2RWCX+Agw7BAAAKBIBAJ61F1bGwQyLlTmYK6Ga -THrdlscsaDkPy4EcFa4czg88AQD+FcRvkydZj6ClgTbFvV2iAI5yjOBccBrp2OK1 -M4MECg== -=gDMv ------END PGP PUBLIC KEY BLOCK----- diff --git a/nixos-config/default.nix b/nixos-config/default.nix index a85a6497..41c7ff41 100644 --- a/nixos-config/default.nix +++ b/nixos-config/default.nix @@ -10,7 +10,6 @@ flake-inputs.self.nixosModules.nvidia flake-inputs.home-manager.nixosModules.home-manager - flake-inputs.sops-nix.nixosModules.sops flake-inputs.nix-flatpak.nixosModules.nix-flatpak ./desktop diff --git a/nixos-config/hosts/rin/default.nix b/nixos-config/hosts/rin/default.nix index 461e15c0..86c47705 100644 --- a/nixos-config/hosts/rin/default.nix +++ b/nixos-config/hosts/rin/default.nix @@ -16,13 +16,6 @@ home-manager.users.tlater = import "${flake-inputs.self}/home-config/hosts/rin.nix"; - sops = { - defaultSopsFile = "/etc/sops/secrets.yaml"; - validateSopsFiles = false; - age.keyFile = "/var/lib/sops/host.age"; - secrets."osquery/enroll" = { }; - }; - programs.gnupg.agent.enable = lib.mkForce false; # Used extensively for testing at work diff --git a/nixos-config/networking/default.nix b/nixos-config/networking/default.nix index bc5fd100..6fe5f1b6 100644 --- a/nixos-config/networking/default.nix +++ b/nixos-config/networking/default.nix @@ -1,13 +1,40 @@ -{ lib, pkgs, ... }: -{ +{ lib, pkgs, ... }: { + imports = [ ./networkmanager-ensure-profiles.nix ]; + users.users.tlater.extraGroups = [ "networking" ]; environment.systemPackages = [ pkgs.dig ]; networking = { useDHCP = false; - networkmanager.enable = true; nftables.enable = true; + networkmanager = { + enable = true; + + ensureProfiles = { + environmentFiles = [ "/run/credentials/NetworkManager-ensure-profiles.service/wifi-passwords" ]; + + profiles.maatjies = { + connection = { + id = "maatjies"; + type = "wifi"; + + autoconnect = true; + autoconnect-priority = 100; + }; + + wifi = { + mode = "infrastructure"; + ssid = "maatjies"; + }; + + wifi-security = { + key-mgmt = "wpa-psk"; + psk = "$PSK_MAATJIES"; + }; + }; + }; + }; }; services.unbound = { @@ -62,10 +89,14 @@ localControlSocketPath = "/run/unbound/unbound.ctl"; }; - # Ensure unbound is available for DNS settings by the time - # connections might set such - systemd.services.unbound = { - after = lib.mkForce [ ]; - before = [ "NetworkManager.service" ]; + systemd.services = { + # Ensure unbound is available for DNS settings by the time + # connections might set such + unbound = { + after = lib.mkForce [ ]; + before = [ "NetworkManager.service" ]; + }; + + NetworkManager-ensure-profiles.serviceConfig.LoadCredentialEncrypted = [ "wifi-passwords" ]; }; } diff --git a/nixos-config/networking/networkmanager-ensure-profiles.nix b/nixos-config/networking/networkmanager-ensure-profiles.nix new file mode 100644 index 00000000..68f556cd --- /dev/null +++ b/nixos-config/networking/networkmanager-ensure-profiles.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.networking.networkmanager; + ini = pkgs.formats.ini { }; + + profiles = lib.mapAttrs' (id: profile: { + name = "/run/NetworkManager/system-connections/${id}.nmconnection"; + value = ini.generate (lib.escapeShellArg id) profile; + }) cfg.ensureProfiles.profiles; +in +{ + systemd.services.NetworkManager-ensure-profiles = lib.mkIf (cfg.ensureProfiles.profiles != [ ]) { + script = lib.mkForce ""; + + serviceConfig.EnvironmentFile = lib.mkForce [ ]; + serviceConfig.ExecStart = pkgs.writers.writeNu "NetworkManager-ensure-profiles" { } '' + let environment = ( + '${builtins.toJSON cfg.ensureProfiles.environmentFiles}' + | from json + | each { open --raw $in | from json } + | reduce {|it acc| $acc | merge $it } + ) + + let profiles = open --raw '${pkgs.writers.writeJSON "networkmanager-profiles.json" profiles}' | from json + + mkdir /run/NetworkManager/system-connections + + for profile in ($profiles | items {|target source| [$target $source] }) { + # Substitute all variables from the merged environment files + let substituted_profile = ( + $environment + | items {|name value| [$name $value] } + | reduce --fold (open --raw $profile.1) {|variable profile| $profile | str replace --all $'$($variable.0)' $variable.1 } + ) + + $substituted_profile | save -f $profile.0 + } + + ${lib.getExe' pkgs.networkmanager "nmcli"} connection reload + ''; + }; +} diff --git a/nixos-config/networking/work.nix b/nixos-config/networking/work.nix index f4283d81..d86cf5d6 100644 --- a/nixos-config/networking/work.nix +++ b/nixos-config/networking/work.nix @@ -1,7 +1,12 @@ -{ config, lib, ... }: -{ - networking.networkmanager.ensureProfiles = lib.mkForce { - environmentFiles = [ config.sops.secrets.wireless-env.path ]; +{ lib, ... }: { + systemd.services.NetworkManager-ensure-profiles.serviceConfig.LoadCredentialEncrypted = [ + "work-wifi-passwords" + ]; + + networking.networkmanager.ensureProfiles = { + environmentFiles = [ + "/run/credentials/NetworkManager-ensure-profiles.service/work-wifi-passwords" + ]; profiles = { lala-guest = { @@ -53,6 +58,4 @@ }; }; }; - - sops.secrets.wireless-env = { }; } diff --git a/nixos-config/yubikey.nix b/nixos-config/yubikey.nix index aea2362a..c422b39d 100644 --- a/nixos-config/yubikey.nix +++ b/nixos-config/yubikey.nix @@ -6,15 +6,4 @@ }; hardware.gpgSmartcards.enable = true; - - # sops-nix will launch an scdaemon instance on boot, which will stay - # alive and prevent the yubikey from working with any users that log - # in later. - systemd.services.shutdownSopsGpg = { - path = [ pkgs.gnupg ]; - script = '' - gpgconf --homedir /var/lib/sops --kill gpg-agent - ''; - wantedBy = [ "multi-user.target" ]; - }; } From dcf5ba6526983fc384b94bb1092cdd15cd4b098f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 12 Jun 2026 16:49:14 +0200 Subject: [PATCH 09/26] WIP: refactor(treewide): Move to flake-parts --- .github/workflows/check.yml | 11 - .github/workflows/update.yml | 33 - README.md | 85 +- checks/default.nix | 47 - checks/lib.nix | 38 - dev/devshells.nix | 50 + {pkgs => dev}/update.nu | 0 flake.lock | 98 +- flake.nix | 104 +- .../applications/graphical/default.nix | 5 +- .../graphical/librewolf/lepton.nix | 4 +- home-config/applications/tty/default.nix | 4 +- home-config/applications/tty/emacs.nix | 8 +- home-config/desktop/eww.nix | 4 +- home-config/desktop/gtk.nix | 4 +- home-config/desktop/sway.nix | 10 +- home-config/non-nixos.nix | 7 +- home-config/personal/syncthing/default.nix | 4 +- home-config/personal/syncthing/syncthing.nix | 4 +- home-config/personal/webapps.nix | 4 +- home-config/work/famedly.nix | 11 +- lib/builders.nix | 184 + lib/pkgs.nix | 43 - lib/pure.nix | 39 +- nixos-config/default.nix | 283 - nixos-config/desktop/default.nix | 15 - nixos-config/desktop/greeter/default.nix | 74 - .../hosts/rin/hardware-configuration.nix | 25 - nixos-config/hosts/rin/hardware.nix | 40 - nixos-config/hosts/yui/default.nix | 77 - .../hosts/yui/hardware-configuration.nix | 26 - nixos-config/hosts/yui/networking.nix | 29 - .../hosts/yui/wireguard-dispatchers.nu | 48 - nixos-config/networking/personal.nix | 33 - nixos-config/nix.nix | 86 - nixos-config/yubikey.nix | 9 - nixos-modules/nvidia/de-compat.nix | 42 - nixos-modules/nvidia/default.nix | 110 - nixos-modules/nvidia/prime.nix | 69 - nixos/boot.nix | 29 + nixos/default.nix | 30 + nixos/desktop.nix | 72 + nixos/desktop/flatpaks.nix | 12 + nixos/desktop/greeter/default.nix | 87 + .../desktop/greeter/eww-config/eww.scss | 0 .../desktop/greeter/eww-config/eww.yuck | 0 {nixos-config => nixos}/desktop/sway.nix | 6 +- {nixos-config/hosts/yui => nixos}/games.nix | 33 +- nixos/hardware/bluetooth.nix | 61 + nixos/hardware/graphics-tablet.nix | 4 + nixos/hardware/nvidia.nix | 116 + .../hardware/powermanagement.nix | 6 +- nixos/hardware/sound.nix | 13 + nixos/hardware/yubikey.nix | 17 + nixos/home-manager.nix | 12 + nixos/hosts/rin.nix | 36 + {nixos-config => nixos}/hosts/rin/disko.nix | 7 +- .../default.nix => nixos/hosts/rin/docker.nix | 30 +- nixos/hosts/rin/facter.json | 5410 +++++++++++++++++ nixos/hosts/rin/hardware.nix | 12 + .../work.nix => nixos/hosts/rin/wifi.nix | 5 +- nixos/hosts/yui.nix | 54 + {nixos-config => nixos}/hosts/yui/disko.nix | 7 +- nixos/hosts/yui/facter.json | 1 + nixos/hosts/yui/hardware.nix | 23 + nixos/hosts/yui/programs.nix | 30 + nixos/maintenance.nix | 12 + .../networkmanager-ensure-profiles.nix | 6 +- .../udev.nix => nixos/modules/udev-rules.nix | 4 + nixos/networking.nix | 27 + .../default.nix => nixos/networking/dns.nix | 50 +- nixos/networking/tailscale.nix | 18 + .../dev.nix => nixos/networking/vm-bridge.nix | 40 +- nixos/networking/wifi.nix | 54 + nixos/programs.nix | 15 + nixos/programs/nix.nix | 111 + nixos/security.nix | 33 + .../catppuccin-themes/package.nix | 4 +- .../catppuccin-themes/update.nu | 0 {pkgs/packages => packages}/delta-icons.nix | 4 +- {pkgs/packages => packages}/desktop-logic.nix | 6 +- .../edopro/edopro-unwrapped.nix | 0 .../edopro/edopro-wrapper.nix | 0 .../edopro/edopro-wrapper.nu | 0 .../packages => packages}/edopro/irrlicht.nix | 0 .../packages => packages}/edopro/ocgcore.nix | 0 .../packages => packages}/edopro/package.nix | 4 +- {pkgs/packages => packages}/edopro/update.nu | 0 {pkgs/packages => packages}/emacs/eglot-x.nix | 0 {pkgs/packages => packages}/emacs/package.nix | 12 +- .../emacs/update-emacs-packages.nu | 0 .../packages => packages}/firefox-ui-fix.nix | 4 +- .../jazz-jackrabbit-2/package.nix | 0 {pkgs/packages => packages}/nextcloudcmd.nix | 0 .../packages => packages}/nvidia/package.nix | 8 +- {pkgs/packages => packages}/nvidia/update.nu | 0 .../packages => packages}/phosphor-icons.nix | 4 +- .../packages => packages}/topiary/package.nix | 12 +- .../topiary/topiary-nushell.nix | 0 .../topiary/tree-sitter-nu.nix | 0 {pkgs/packages => packages}/topiary/update.nu | 0 pkgs/default.nix | 8 - pkgs/lib.nix | 40 - 103 files changed, 6777 insertions(+), 1579 deletions(-) delete mode 100644 .github/workflows/check.yml delete mode 100644 .github/workflows/update.yml delete mode 100644 checks/default.nix delete mode 100644 checks/lib.nix create mode 100644 dev/devshells.nix rename {pkgs => dev}/update.nu (100%) create mode 100644 lib/builders.nix delete mode 100644 lib/pkgs.nix delete mode 100644 nixos-config/default.nix delete mode 100644 nixos-config/desktop/default.nix delete mode 100644 nixos-config/desktop/greeter/default.nix delete mode 100644 nixos-config/hosts/rin/hardware-configuration.nix delete mode 100644 nixos-config/hosts/rin/hardware.nix delete mode 100644 nixos-config/hosts/yui/default.nix delete mode 100644 nixos-config/hosts/yui/hardware-configuration.nix delete mode 100644 nixos-config/hosts/yui/networking.nix delete mode 100644 nixos-config/hosts/yui/wireguard-dispatchers.nu delete mode 100644 nixos-config/networking/personal.nix delete mode 100644 nixos-config/nix.nix delete mode 100644 nixos-config/yubikey.nix delete mode 100644 nixos-modules/nvidia/de-compat.nix delete mode 100644 nixos-modules/nvidia/default.nix delete mode 100644 nixos-modules/nvidia/prime.nix create mode 100644 nixos/boot.nix create mode 100644 nixos/default.nix create mode 100644 nixos/desktop.nix create mode 100644 nixos/desktop/flatpaks.nix create mode 100644 nixos/desktop/greeter/default.nix rename {nixos-config => nixos}/desktop/greeter/eww-config/eww.scss (100%) rename {nixos-config => nixos}/desktop/greeter/eww-config/eww.yuck (100%) rename {nixos-config => nixos}/desktop/sway.nix (86%) rename {nixos-config/hosts/yui => nixos}/games.nix (66%) create mode 100644 nixos/hardware/bluetooth.nix create mode 100644 nixos/hardware/graphics-tablet.nix create mode 100644 nixos/hardware/nvidia.nix rename nixos-config/laptops.nix => nixos/hardware/powermanagement.nix (73%) create mode 100644 nixos/hardware/sound.nix create mode 100644 nixos/hardware/yubikey.nix create mode 100644 nixos/home-manager.nix create mode 100644 nixos/hosts/rin.nix rename {nixos-config => nixos}/hosts/rin/disko.nix (93%) rename nixos-config/hosts/rin/default.nix => nixos/hosts/rin/docker.nix (69%) create mode 100644 nixos/hosts/rin/facter.json create mode 100644 nixos/hosts/rin/hardware.nix rename nixos-config/networking/work.nix => nixos/hosts/rin/wifi.nix (96%) create mode 100644 nixos/hosts/yui.nix rename {nixos-config => nixos}/hosts/yui/disko.nix (95%) create mode 100644 nixos/hosts/yui/facter.json create mode 100644 nixos/hosts/yui/hardware.nix create mode 100644 nixos/hosts/yui/programs.nix create mode 100644 nixos/maintenance.nix rename {nixos-config/networking => nixos/modules}/networkmanager-ensure-profiles.nix (91%) rename nixos-config/udev.nix => nixos/modules/udev-rules.nix (84%) create mode 100644 nixos/networking.nix rename nixos-config/networking/default.nix => nixos/networking/dns.nix (61%) create mode 100644 nixos/networking/tailscale.nix rename nixos-config/dev.nix => nixos/networking/vm-bridge.nix (73%) create mode 100644 nixos/networking/wifi.nix create mode 100644 nixos/programs.nix create mode 100644 nixos/programs/nix.nix create mode 100644 nixos/security.nix rename {pkgs/packages => packages}/catppuccin-themes/package.nix (95%) rename {pkgs/packages => packages}/catppuccin-themes/update.nu (100%) rename {pkgs/packages => packages}/delta-icons.nix (80%) rename {pkgs/packages => packages}/desktop-logic.nix (79%) rename {pkgs/packages => packages}/edopro/edopro-unwrapped.nix (100%) rename {pkgs/packages => packages}/edopro/edopro-wrapper.nix (100%) rename {pkgs/packages => packages}/edopro/edopro-wrapper.nu (100%) rename {pkgs/packages => packages}/edopro/irrlicht.nix (100%) rename {pkgs/packages => packages}/edopro/ocgcore.nix (100%) rename {pkgs/packages => packages}/edopro/package.nix (96%) rename {pkgs/packages => packages}/edopro/update.nu (100%) rename {pkgs/packages => packages}/emacs/eglot-x.nix (100%) rename {pkgs/packages => packages}/emacs/package.nix (91%) rename {pkgs/packages => packages}/emacs/update-emacs-packages.nu (100%) rename {pkgs/packages => packages}/firefox-ui-fix.nix (78%) rename {pkgs/packages => packages}/jazz-jackrabbit-2/package.nix (100%) rename {pkgs/packages => packages}/nextcloudcmd.nix (100%) rename {pkgs/packages => packages}/nvidia/package.nix (78%) rename {pkgs/packages => packages}/nvidia/update.nu (100%) rename {pkgs/packages => packages}/phosphor-icons.nix (82%) rename {pkgs/packages => packages}/topiary/package.nix (87%) rename {pkgs/packages => packages}/topiary/topiary-nushell.nix (100%) rename {pkgs/packages => packages}/topiary/tree-sitter-nu.nix (100%) rename {pkgs/packages => packages}/topiary/update.nu (100%) delete mode 100644 pkgs/default.nix delete mode 100644 pkgs/lib.nix diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index d513f059..00000000 --- a/.github/workflows/check.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: check -on: push -jobs: - check: - name: Run flake checks - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - uses: nixbuild/nix-quick-install-action@v33 - - run: | - nix flake check -L diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml deleted file mode 100644 index d6f71fe9..00000000 --- a/.github/workflows/update.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: update -on: - schedule: - - cron: '0 2 * * 6' - workflow_dispatch: -jobs: - update: - name: Update flake inputs - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - with: - ssh-key: ${{ secrets.PR_CREATE_KEY }} - - uses: nixbuild/nix-quick-install-action@v33 - with: - # Used only for things like nix-prefetch-*, which do not yet - # seem to universally support flakes - nix_conf: | - nix-path = nixpkgs=flake:nixpkgs - - uses: crazy-max/ghaction-import-gpg@v6 - with: - gpg_private_key: ${{ secrets.GIT_SIGNING_KEY }} - git_user_signingkey: true - git_commit_gpgsign: true - git_committer_name: GitHub automation - git_committer_email: tm@tlater.net - - run: nix flake update --commit-lock-file - - run: nix run --inputs-from . nixpkgs#nushell -L -- pkgs/update.nu - - uses: peter-evans/create-pull-request@v7 - with: - branch: bot/update - delete-branch: true - title: Update flake inputs diff --git a/README.md b/README.md index 7b8224ff..57093b8a 100644 --- a/README.md +++ b/README.md @@ -2,84 +2,9 @@ My NixOS-managed dotfiles repository. -## Installation +## Required systemd credentials -### NixOS configurations - -#### Reinstalling an existing configuration - -These can be installed using -[nixos-anywhere](https://github.com/numtide/nixos-anywhere/), however -the installation steps are subtly different from the upstream ones: - -> **Warning** -> yui has not yet been set up for this process - -1. Get the gpg secret directory from a backup. If no backup is - available, set up a new gpg directory as in the new machine - instructions. -2. Boot the NixOS install disk on the machine in question, set up - networking and a user password. -3. ssh into the machine, copy the ssh public key into - `/root/.ssh/authorized_keys` -4. Place the desired disk encryption password in a file - (`secret.key`), ensuring it does *not* end in a newline (`echo -e`). -5. Run `nix run --inputs-from . nixos-anywhere -- -f .# root@ --no-reboot --disk-encryption-keys /tmp/secret.key secret.key` - - If some permission error around `secret.key` pops up, rerun the - command without the `--disk-encryption-keys`. They will already - have been copied over, some kind of upstream bug. -6. Before rebooting: - 1. Copy the gpg dir acquired in step 1 to `/mnt/var/lib/sops` - 2. Place a copy of `/etc/sops/secrets.yaml` in `/mnt/etc/sops/secrets.yaml`. - 3. Set a password for tlater with `nixos-enter` and `passwd` - -#### Setting up a new machine - -Before the configuration can be installed, we need to set up a few -basic things. - -It's easiest to do this when the system in question is already -running, and we're ssh'd into it, so we can read out some device -data. So boot into the NixOS installer first (will be useful later -anyway). - -Create a new subdirectory of `nixos-config` named after the new host, -and create a new `nixosConfigurations` entry for it. - -Then set up: - -1. Basic networking. Typically a bond config, see yui for examples. -2. Make sure to include one of the network modules so that wireless - networking is set up on first boot. -3. Generate and include a new `hardware-configuration.nix`: - ```console - nixos-generate-config --no-filesystems --show-hardware-config - ``` -4. Set up a new sops target. - 1. Firstly, create a new gpg dir according to [these - instructions](https://github.com/Mic92/sops-nix#use-with-gpg-instead-of-ssh-keys). - 2. Then, add the generated fingerprint to `.sops.yaml`, and - re-encrypt `/etc/sops/secrets.yaml`. - -##### GPG/sops setup - -### Non-NixOS - -For non-NixOS hosts, this requires nix >=2.4 with flakes enabled. To -install this on an arbitrary Linux distro, follow the [upstream nix -installation instructions](https://nixos.org/download.html) and then -run: - -```bash -nix-env -iA nixpkgs.nixFlakes -mkdir -p ~/.config/nix -echo 'experimental-features = nix-command flakes' > ~/.config/nix/nix.conf -``` - -After that, enter a devshell for this flake and install it with -home-manager: - -```bash -nix develop github:tlater/dotfiles -home-manager switch --flake github:tlater/dotfiles#gnome-vm -``` +| ID | Purpose | +|----------------|---------------------------------------------------------------------| +| wifi-passwords | Passwords for wifi networks all computers should be able to access. | +| | | diff --git a/checks/default.nix b/checks/default.nix deleted file mode 100644 index 8ca8632e..00000000 --- a/checks/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ flake-inputs }: -let - inherit (flake-inputs.nixpkgs) lib; - pkgs = flake-inputs.nixpkgs.legacyPackages.x86_64-linux; - checkLib = pkgs.callPackage ./lib.nix { }; -in -{ - nix = checkLib.mkLint { - name = "nix-lints"; - fileset = lib.fileset.fileFilter (file: file.hasExt "nix") ../.; - - checkInputs = lib.attrValues { - inherit (pkgs) deadnix nixfmt; - inherit (flake-inputs.nix-ast-lint.packages.x86_64-linux) nix-ast-lint; - }; - - script = '' - nix-ast-lint --error - deadnix --fail **/*.nix - nixfmt --check --strict **/*.nix - ''; - }; - - lockfile = checkLib.mkLint { - name = "nix-lockfile"; - fileset = ../flake.lock; - checkInputs = lib.attrValues { inherit (flake-inputs.flint.packages.x86_64-linux) flint; }; - - script = '' - flint --fail-if-multiple-versions - ''; - }; - - shell = checkLib.mkLint { - name = "shell-lints"; - fileset = lib.fileset.unions [ - ../home-config/dotfiles/dashrc - (lib.fileset.fileFilter (file: file.hasExt "sh") ../.) - ]; - - checkInputs = lib.attrValues { inherit (pkgs) shellcheck; }; - - script = '' - shellcheck ...(glob --no-dir **/*) - ''; - }; -} diff --git a/checks/lib.nix b/checks/lib.nix deleted file mode 100644 index ff2e1ab1..00000000 --- a/checks/lib.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ pkgs, lib, ... }: -{ - mkLint = - { - name, - fileset, - checkInputs ? [ ], - script, - }: - pkgs.stdenvNoCC.mkDerivation { - inherit name; - - src = lib.fileset.toSource { - root = ../.; - fileset = lib.fileset.difference fileset ( - lib.fileset.unions [ - ../home-config/dotfiles/emacs.d/share/templates - (lib.fileset.fileFilter ( - file: file.type != "regular" || file.name == "hardware-configuration.nix" - ) ../.) - ] - ); - }; - - checkInputs = [ pkgs.nushell ] ++ checkInputs; - - checkPhase = '' - nu -c '${script}' | tee $out - ''; - - dontPatch = true; - dontConfigure = true; - dontBuild = true; - dontInstall = true; - dontFixup = true; - doCheck = true; - }; -} diff --git a/dev/devshells.nix b/dev/devshells.nix new file mode 100644 index 00000000..5a045165 --- /dev/null +++ b/dev/devshells.nix @@ -0,0 +1,50 @@ +/** + Dev utilities. +*/ +{ inputs, ... }: { + imports = [ inputs.devshell.flakeModule ]; + + perSystem = { pkgs, self', ... }: { + devshells = { + /** + Default devshell containing all utilities for using this + repository. + */ + default = { + name = "tlater’s dotfiles"; + + packages = [ pkgs.nh ]; + + commands = [ + { + name = "update-packages"; + category = "[[maintenance commands]]"; + help = "update this flakes' packages"; + package = self'.builders.writeNuBinWith { packages = [ pkgs.git ]; } "update-packages" ./update.nu; + } + ]; + + env = [ + { + name = "NH_NO_CHECKS"; + value = true; + } + + { + name = "NH_FLAKE"; + value = "/home/tlater/.local/src/dotfiles"; + } + ]; + }; + + /** + Rust devshell with the Rust toolchain required to develop on + Rust projects in the repository. + */ + rust = { extraModulesPath, ... }: { + imports = [ "${extraModulesPath}/language/rust.nix" ]; + name = "tlater's dotfiles - rust edition"; + }; + }; + }; +} diff --git a/pkgs/update.nu b/dev/update.nu similarity index 100% rename from pkgs/update.nu rename to dev/update.nu diff --git a/flake.lock b/flake.lock index c7cea9a8..b455cf61 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,25 @@ { "nodes": { + "devshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768818222, + "narHash": "sha256-460jc0+CZfyaO8+w8JNtlClB2n4ui1RbHfPTLkpwhU8=", + "owner": "numtide", + "repo": "devshell", + "rev": "255a2b1725a20d060f566e4755dbf571bbbb5f76", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "disko": { "inputs": { "nixpkgs": [ @@ -80,11 +100,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1780654233, - "narHash": "sha256-F5rHBSjkUyobwPC2IclWO6t91hiKBnuJa0yDfKuUchE=", + "lastModified": 1756795219, + "narHash": "sha256-tKBQtz1JLKWrCJUxVkHKR+YKmVpm0KZdJdPWmR2slQ8=", "owner": "nix-community", "repo": "fenix", - "rev": "b9e0e5df8f7b4456eb1cad97c435ad0b3e44c669", + "rev": "80dbdab137f2809e3c823ed027e1665ce2502d74", "type": "github" }, "original": { @@ -114,11 +134,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1777678872, - "narHash": "sha256-EPIFsulyon7Z1vLQq5Fk64GR8L7cQsT+IPhcsukVbgk=", + "lastModified": 1778716662, + "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "5250617bffd85403b14dbf43c3870e7f255d2c16", + "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", "type": "github" }, "original": { @@ -135,11 +155,11 @@ ] }, "locked": { - "lastModified": 1780683281, - "narHash": "sha256-kM1hupNGf2GfcU671Di9r2Ss1BiPhjx6TvyF4xHLRsg=", + "lastModified": 1778185331, + "narHash": "sha256-PMtQio4dN9ERcfcbzI0bcvchaTnl1wAXB0QQRm9m47M=", "owner": "adamcik", "repo": "fleet-nixos", - "rev": "e4fce0eaf7c0c898dfbc4c38e9a8358df4133144", + "rev": "427c05f9ea6728ce9415730a8fbf917da35df84c", "type": "github" }, "original": { @@ -291,7 +311,9 @@ }, "nix-gaming": { "inputs": { - "flake-parts": "flake-parts", + "flake-parts": [ + "flake-parts" + ], "git-hooks": "git-hooks", "nixpkgs": [ "nixpkgs" @@ -327,22 +349,6 @@ "type": "github" } }, - "nixos-hardware": { - "locked": { - "lastModified": 1778143761, - "narHash": "sha256-lkesY6x2X2qxlqLM7CT2iM/0rP2JB7fruPN3h8POXmI=", - "owner": "NixOS", - "repo": "nixos-hardware", - "rev": "3bcaa367d4c550d687a17ac792fd5cda214ee871", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "master", - "repo": "nixos-hardware", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1780453794, @@ -373,11 +379,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1780749050, - "narHash": "sha256-G5B1h4sOH4DN/RZ85xYi6zPm2MHdOrNMeUmMslZ28Qs=", - "rev": "a799d3e3886da994fa307f817a6bc705ae538eeb", + "lastModified": 1781074563, + "narHash": "sha256-d34lhgOet4IqYMnCxbIvwFBMOyTV6PT4TyNEOP0/ZhU=", + "rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1011622.a799d3e3886d/nixexprs.tar.xz?lastModified=1780749050&rev=a799d3e3886da994fa307f817a6bc705ae538eeb" + "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1014179.9ae611a455b9/nixexprs.tar.xz?lastModified=1781074563&rev=9ae611a455b90cf061d8f332b977e387bda8e1ca" }, "original": { "type": "tarball", @@ -386,9 +392,11 @@ }, "root": { "inputs": { + "devshell": "devshell", "disko": "disko", "emacs-overlay": "emacs-overlay", "famedly-nixos": "famedly-nixos", + "flake-parts": "flake-parts", "flint": "flint", "home-manager": "home-manager", "home-manager-fix-ssh-socket": "home-manager-fix-ssh-socket", @@ -396,19 +404,19 @@ "nix-flatpak": "nix-flatpak", "nix-gaming": "nix-gaming", "nix-webapps": "nix-webapps", - "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", - "tree-sitter-sieve": "tree-sitter-sieve" + "tree-sitter-sieve": "tree-sitter-sieve", + "wrappers": "wrappers" } }, "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1780573409, - "narHash": "sha256-Dlru75JzUwjI9d5uiDrN9Rt/wTFVTuqt6QBT+nf2g8U=", + "lastModified": 1756597274, + "narHash": "sha256-wfaKRKsEVQDB7pQtAt04vRgFphkVscGRpSx3wG1l50E=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "aadee11251e6074c9245ac96bc4bfe6eca05a64c", + "rev": "21614ed2d3279a9aa1f15c88d293e65a98991b30", "type": "github" }, "original": { @@ -437,6 +445,26 @@ "repo": "tree-sitter-sieve", "type": "github" } + }, + "wrappers": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1780661205, + "narHash": "sha256-3F5DixT3Gk91lBI9E+TGMm0ko5HrRbDiL23di16TJGA=", + "owner": "BirdeeHub", + "repo": "nix-wrapper-modules", + "rev": "8dd304c3582ddd339217e1cc5fb53f50acb63c2d", + "type": "github" + }, + "original": { + "owner": "BirdeeHub", + "repo": "nix-wrapper-modules", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index e085b0a6..a33a3a81 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,17 @@ inputs = { nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz"; - nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + flake-parts.url = "github:hercules-ci/flake-parts"; + + wrappers = { + url = "github:BirdeeHub/nix-wrapper-modules"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + devshell = { + url = "github:numtide/devshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; disko = { url = "github:nix-community/disko"; @@ -12,7 +22,10 @@ nix-gaming = { url = "github:fufexan/nix-gaming"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-parts.follows = "flake-parts"; + }; }; nix-webapps.url = "github:TLATER/nix-webapps?ref=tlater/idiomatic-flake"; @@ -63,61 +76,48 @@ }; outputs = - { self, nixpkgs, ... }@inputs: { - nixosConfigurations = { - yui = nixpkgs.lib.nixosSystem { - modules = [ - ./nixos-config - ./nixos-config/hosts/yui - ]; - - specialArgs.flake-inputs = inputs; - }; - - rin = nixpkgs.lib.nixosSystem { - modules = [ - ./nixos-config - ./nixos-config/hosts/rin - ]; - - specialArgs.flake-inputs = inputs; + devshell, + flake-parts, + nixpkgs, + ... + }@inputs: + flake-parts.lib.mkFlake { inherit inputs; } { + imports = [ + ./dev/devshells.nix + ./lib/builders.nix + ]; + + systems = [ "x86_64-linux" ]; + + flake = { + nixosConfigurations = { + rin = nixpkgs.lib.nixosSystem { + modules = [ + ./nixos/hosts/rin.nix + # TODO: Replace with hjem + ./nixos/home-manager.nix + ]; + + specialArgs.inputs = inputs; + }; }; - }; - - nixosModules.nvidia = ./nixos-modules/nvidia; - packages.x86_64-linux = import ./pkgs { - pkgs = nixpkgs.legacyPackages.x86_64-linux; - flake-inputs = inputs; + lib = import ./lib/pure.nix { inherit (inputs.nixpkgs) lib; }; }; - lib = import ./lib/pure.nix { inherit (nixpkgs) lib; }; - pkgs-lib.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.callPackage ./lib/pkgs.nix { }; - - checks.x86_64-linux = import ./checks { flake-inputs = inputs; }; - - devShells.x86_64-linux = - ({ nixpkgs, ... }: { - default = nixpkgs.legacyPackages.mkShell { - packages = [ nixpkgs.legacyPackages.nh ]; - - NH_NO_CHECKS = true; - NH_FLAKE = "/home/tlater/.local/src/dotfiles"; + perSystem = + { + pkgs, + inputs', + self', + ... + }: + { + packages = pkgs.lib.packagesFromDirectoryRecursive { + callPackage = pkgs.lib.callPackageWith (pkgs // { inherit inputs inputs' self'; }); + directory = ./packages; }; - - rust = nixpkgs.legacyPackages.mkShell { - packages = nixpkgs.lib.attrValues { - inherit (nixpkgs.legacyPackages) - rust-analyzer - rustc - rustfmt - cargo - clippy - ; - }; - }; - }) - (self.lib.flattenFlakeInputs inputs "x86_64-linux"); + }; }; } diff --git a/home-config/applications/graphical/default.nix b/home-config/applications/graphical/default.nix index 515a4182..29f8e63a 100644 --- a/home-config/applications/graphical/default.nix +++ b/home-config/applications/graphical/default.nix @@ -1,5 +1,4 @@ -{ flake-inputs, pkgs, ... }: -{ +{ inputs, pkgs, ... }: { imports = [ ./librewolf ]; home.packages = with pkgs; [ @@ -12,7 +11,7 @@ enable = true; settings.general.import = let - inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) catppuccin-themes; + inherit (inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) catppuccin-themes; in [ "${catppuccin-themes}/share/alacritty/themes/catppuccin-macchiato.toml" ]; }; diff --git a/home-config/applications/graphical/librewolf/lepton.nix b/home-config/applications/graphical/librewolf/lepton.nix index 41b9e18d..a3a12d64 100644 --- a/home-config/applications/graphical/librewolf/lepton.nix +++ b/home-config/applications/graphical/librewolf/lepton.nix @@ -1,12 +1,12 @@ { - flake-inputs, + inputs, pkgs, lib, config, ... }: let - inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) firefox-ui-fix; + inherit (inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) firefox-ui-fix; cfg = config.programs.librewolf; in { diff --git a/home-config/applications/tty/default.nix b/home-config/applications/tty/default.nix index e103c837..b469b3ef 100644 --- a/home-config/applications/tty/default.nix +++ b/home-config/applications/tty/default.nix @@ -1,5 +1,5 @@ { - flake-inputs, + inputs, pkgs, lib, ... @@ -7,7 +7,7 @@ { imports = [ ./emacs.nix ]; - home.packages = [ flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.topiary ]; + home.packages = [ inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.topiary ]; programs = { bottom = { diff --git a/home-config/applications/tty/emacs.nix b/home-config/applications/tty/emacs.nix index 650b1171..ce1cb723 100644 --- a/home-config/applications/tty/emacs.nix +++ b/home-config/applications/tty/emacs.nix @@ -1,11 +1,11 @@ -{ pkgs, flake-inputs, ... }: +{ pkgs, inputs, ... }: let - inherit (flake-inputs) self; - inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) emacs; + inherit (inputs) self; + inherit (inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) emacs; in { disabledModules = [ "misc/ssh-auth-sock.nix" ]; - imports = [ "${flake-inputs.home-manager-fix-ssh-socket}/modules/misc/ssh-auth-sock.nix" ]; + imports = [ "${inputs.home-manager-fix-ssh-socket}/modules/misc/ssh-auth-sock.nix" ]; sshAuthSock = { enable = true; diff --git a/home-config/desktop/eww.nix b/home-config/desktop/eww.nix index 6292cd6d..b055acf4 100644 --- a/home-config/desktop/eww.nix +++ b/home-config/desktop/eww.nix @@ -1,5 +1,5 @@ { - flake-inputs, + inputs, pkgs, config, lib, @@ -50,7 +50,7 @@ in }; Service = { - ExecStart = lib.getExe flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.desktop-logic; + ExecStart = lib.getExe inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.desktop-logic; Restart = "on-failure"; Type = "dbus"; BusName = "net.tlater.DesktopLogic"; diff --git a/home-config/desktop/gtk.nix b/home-config/desktop/gtk.nix index 282e2cd8..300d3456 100644 --- a/home-config/desktop/gtk.nix +++ b/home-config/desktop/gtk.nix @@ -1,6 +1,6 @@ { config, - flake-inputs, + inputs, pkgs, ... }: @@ -36,7 +36,7 @@ postBuild = let edopro = "${ - flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.delta-icons + inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.delta-icons }/share/icons/delta-icons/scalable/apps/EDOPro.svg"; in '' diff --git a/home-config/desktop/sway.nix b/home-config/desktop/sway.nix index 800dc16f..41cf60d6 100644 --- a/home-config/desktop/sway.nix +++ b/home-config/desktop/sway.nix @@ -1,13 +1,13 @@ { config, - flake-inputs, + inputs, nixos-config ? { }, pkgs, lib, ... }: let - inherit (flake-inputs.self.pkgs-lib.${pkgs.stdenv.hostPlatform.system}) writeNuBinWith; + inherit (inputs.self.builders.${pkgs.stdenv.hostPlatform.system}) writeNuBinWith; loginctl = "${pkgs.stdenv.hostPlatform.system}/bin/loginctl"; swaypkg = nixos-config.programs.sway.package or pkgs.sway; @@ -62,7 +62,7 @@ in extraConfigEarly = let theme = "${ - flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.catppuccin-themes + inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.catppuccin-themes }/share/i3/themes/catppuccin-macchiato"; in '' @@ -97,7 +97,7 @@ in settings = { main = let - inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) catppuccin-themes; + inherit (inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) catppuccin-themes; in { # The launch prefix *is* set correctly for terminals @@ -143,7 +143,7 @@ in Service = { Slice = "background-graphical.slice"; ExecStart = - (flake-inputs.self.pkgs-lib.${pkgs.stdenv.hostPlatform.system}.writeNuWith + ((inputs.self.builders.${pkgs.stdenv.hostPlatform.system}).writeNuWith { packages = [ pkgs.swaybg ]; } "swaybg" '' diff --git a/home-config/non-nixos.nix b/home-config/non-nixos.nix index d969aef0..82b0d1d5 100644 --- a/home-config/non-nixos.nix +++ b/home-config/non-nixos.nix @@ -1,5 +1,4 @@ -{ flake-inputs, pkgs, ... }: -{ +{ inputs, pkgs, ... }: { targets.genericLinux.enable = true; nix = { @@ -14,11 +13,11 @@ id = "nixpkgs"; type = "indirect"; }; - flake = flake-inputs.nixpkgs; + flake = inputs.nixpkgs; }; }; home.sessionVariables = { - NIX_PATH = "nixpkgs=${flake-inputs.nixpkgs}"; + NIX_PATH = "nixpkgs=${inputs.nixpkgs}"; }; } diff --git a/home-config/personal/syncthing/default.nix b/home-config/personal/syncthing/default.nix index aa25518a..69641ec2 100644 --- a/home-config/personal/syncthing/default.nix +++ b/home-config/personal/syncthing/default.nix @@ -2,11 +2,11 @@ config, pkgs, lib, - flake-inputs, + inputs, ... }: let - inherit ((flake-inputs.nix-webapps.overlays.default pkgs pkgs).nix-webapp-lib) mkFirefoxApp; + inherit ((inputs.nix-webapps.overlays.default pkgs pkgs).nix-webapp-lib) mkFirefoxApp; in { imports = [ ./syncthing.nix ]; diff --git a/home-config/personal/syncthing/syncthing.nix b/home-config/personal/syncthing/syncthing.nix index 856ae1c3..e17fa0ab 100644 --- a/home-config/personal/syncthing/syncthing.nix +++ b/home-config/personal/syncthing/syncthing.nix @@ -1,6 +1,6 @@ { config, - flake-inputs, + inputs, pkgs, lib, ... @@ -61,7 +61,7 @@ in let configFile = settingsFormat.generate "config.json" cfg.settings.options; in - flake-inputs.self.pkgs-lib.${pkgs.stdenv.hostPlatform.system}.writeNuWith { + inputs.self.builders.${pkgs.stdenv.hostPlatform.system}.writeNuWith { plugins = [ pkgs.nushellPlugins.query ]; extraMakeWrapperArgs = [ "--add-flag" diff --git a/home-config/personal/webapps.nix b/home-config/personal/webapps.nix index 5858d2aa..d9d0ef61 100644 --- a/home-config/personal/webapps.nix +++ b/home-config/personal/webapps.nix @@ -2,11 +2,11 @@ config, pkgs, lib, - flake-inputs, + inputs, ... }: let - inherit ((flake-inputs.nix-webapps.overlays.default pkgs pkgs).nix-webapp-lib) mkFirefoxApp; + inherit ((inputs.nix-webapps.overlays.default pkgs pkgs).nix-webapp-lib) mkFirefoxApp; in { home.packages = [ diff --git a/home-config/work/famedly.nix b/home-config/work/famedly.nix index 3a5f5007..22057012 100644 --- a/home-config/work/famedly.nix +++ b/home-config/work/famedly.nix @@ -1,10 +1,4 @@ -{ - pkgs, - lib, - flake-inputs, - ... -}: -{ +{ pkgs, lib, ... }: { programs = { aria2.enable = lib.mkForce false; ncmpcpp.enable = lib.mkForce false; @@ -46,7 +40,6 @@ home = { packages = with pkgs; [ pre-commit ]; - - file.".ssh/famedly-tlater.pub".source = "${flake-inputs.self}/keys/famedly-tlater.pub"; + file.".ssh/famedly-tlater.pub".source = ../../keys/famedly-tlater.pub; }; } diff --git a/lib/builders.nix b/lib/builders.nix new file mode 100644 index 00000000..25e76886 --- /dev/null +++ b/lib/builders.nix @@ -0,0 +1,184 @@ +/** + Custom utility builders. +*/ +{ + flake-parts-lib, + inputs, + lib, + ... +}: +{ + imports = [ + (flake-parts-lib.mkTransposedPerSystemModule { + name = "builders"; + option = lib.mkOption { + type = lib.types.lazyAttrsOf lib.types.raw; + default = { }; + + description = '' + Custom utility builders. + ''; + }; + + file = ./builders.nix; + }) + ]; + + perSystem = + { self', pkgs, ... }: + let + inherit (pkgs) writers; + in + { + builders = { + + /** + An alternative to `pkgs.writers.writeNu` that allows adding + packages and plugins more conveniently. + + # Type + + ``` + writeNuWith :: { packages :: [Derivation]; plugins :: [Derivation]; extraMakeWrapperArgs :: [String]; } -> String -> String | Path -> Derivation + ``` + + # Inputs + + `packages` + : Packages to add to `$PATH` of the resulting script. + + `plugins` + : Nushell plugins to add to the interpreter. + + `extraMakeWrapperArgs` + : Additional arguments to pass to `makeWrapper`. + */ + writeNuWith = + { + packages ? [ ], + plugins ? [ ], + extraMakeWrapperArgs ? [ ], + }: + writers.makeScriptWriter { + interpreter = + (inputs.wrappers.lib.evalModule { + inherit pkgs; + imports = [ inputs.wrappers.lib.modules.default ]; + + package = pkgs.nushell; + + flags = { + "--plugins" = "[" + (lib.concatStringsSep " " (map lib.getExe plugins)) + "]"; + "--no-config-file" = true; + }; + }).config.wrapper; + + makeWrapperArgs = + (lib.optionals (packages != [ ]) [ + "--prefix" + "PATH" + ":" + (lib.makeBinPath packages) + ]) + ++ extraMakeWrapperArgs; + }; + + /** + An alternative to `pkgs.writers.writeNuBinWith` that allows + adding packages and plugins more conveniently. + + # Type + + ``` + writeNuBinWith :: { packages :: [Derivation]; plugins :: [Derivation]; extraMakeWrapperArgs :: [String]; } -> String -> String | Path -> Derivation + ``` + + # Inputs + + `packages` + : Packages to add to `$PATH` of the resulting script. + + `plugins` + : Nushell plugins to add to the interpreter. + + `extraMakeWrapperArgs` + : Additional arguments to pass to `makeWrapper`. + */ + writeNuBinWith = args: name: self'.builders.writeNuWith args "/bin/${name}"; + + /** + Helper to create a script that updates a derivation using `nix-update`. + + # Type + + ``` + nixUpdateScript :: { packageToUpdate :: String; version :: String } -> Derivation + ``` + + # Inputs + + `packageToUpdate` + : The name of the package to update. + + `version` + : The version to update to. + */ + nixUpdateScript = + { + packageToUpdate, + version ? null, + }: + self'.builders.writeNuBinWith + { + packages = [ + pkgs.nix-update + pkgs.nixfmt + + ]; + } + "update-${packageToUpdate}" + '' + (nix-update + --flake + --format + ${lib.concatStringsSep " " (lib.optional (version != null) "--version=${version}")} + ${packageToUpdate}) + ''; + + /** + Helper to create a nushell script that updates a package. + + # Type + + ``` + writeUpdateScript :: { script :: String | Path; packageToUpdate :: String; utils :: [Derivation]; nushellPlugins :: [Derivation] } -> Derivation + ``` + + # Inputs + + `script` + : The script text. + + `packageToUpdate` + : The name of the package to update. + + `utils` + : Utility packages to make available to the script. + + `nushellPlugins` + : Plugins to add to nushell. + */ + writeUpdateScript = + { + script, + packageToUpdate, + utils ? [ ], + nushellPlugins ? [ ], + }: + self'.builders.writeNuBinWith { + packages = utils; + plugins = nushellPlugins; + } "update-${packageToUpdate}" script; + }; + }; +} diff --git a/lib/pkgs.nix b/lib/pkgs.nix deleted file mode 100644 index c01fa6b2..00000000 --- a/lib/pkgs.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ - lib, - writers, - nushell, - - runCommand, - makeBinaryWrapper, - ... -}: -rec { - writeNuWith = - { - packages ? [ ], - plugins ? [ ], - extraMakeWrapperArgs ? [ ], - }: - writers.makeScriptWriter { - interpreter = lib.getExe ( - runCommand "wrapped-nu" - { - nativeBuildInputs = [ makeBinaryWrapper ]; - meta.mainProgram = "nu"; - } - '' - makeBinaryWrapper ${lib.getExe nushell} $out/bin/nu \ - --add-flag --plugins \ - --add-flag '[${lib.concatStringsSep " " (map lib.getExe plugins)}]' \ - --add-flag --no-config-file - '' - ); - - makeWrapperArgs = - (lib.optionals (packages != [ ]) [ - "--prefix" - "PATH" - ":" - (lib.makeBinPath packages) - ]) - ++ extraMakeWrapperArgs; - }; - - writeNuBinWith = args: name: writeNuWith args "/bin/${name}"; -} diff --git a/lib/pure.nix b/lib/pure.nix index b4ea5de1..d13242b4 100644 --- a/lib/pure.nix +++ b/lib/pure.nix @@ -1,5 +1,7 @@ -{ lib, ... }: -{ +/** + Utility library functions. +*/ +{ lib, ... }: { /** A helper for creating btrfs subvolumes with disko. @@ -30,37 +32,4 @@ ]; } ); - - /** - Specifies the system for all (legacy)?[Pp]ackages in a flake input attrset. - - # Inputs - - `inputs` (Attrset) - : A flake input attrset. - - `system` (String) - : The system that should be used for all inputs. - */ - flattenFlakeInputs = - inputs: system: - lib.mapAttrs ( - _: - - lib.mapAttrs ( - name: output: - if - (lib.elem name [ - "checks" - "devShells" - "packages" - "pkgs-lib" - "legacyPackages" - ]) - then - output.${system} - else - output - ) - ) inputs; } diff --git a/nixos-config/default.nix b/nixos-config/default.nix deleted file mode 100644 index 41c7ff41..00000000 --- a/nixos-config/default.nix +++ /dev/null @@ -1,283 +0,0 @@ -{ - config, - pkgs, - lib, - flake-inputs, - ... -}: -{ - imports = [ - flake-inputs.self.nixosModules.nvidia - - flake-inputs.home-manager.nixosModules.home-manager - flake-inputs.nix-flatpak.nixosModules.nix-flatpak - - ./desktop - ./dev.nix - ./networking - ./nix.nix - ./udev.nix - ./yubikey.nix - ]; - - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = { - inherit flake-inputs; - nixos-config = config; - }; - }; - - easyNvidia.desktopEnvironment = "wlroots"; - - boot = { - initrd.systemd.enable = true; - - tmp.cleanOnBoot = true; - plymouth.enable = true; - kernelPackages = pkgs.linuxKernel.packages.linux_xanmod; - - loader = { - timeout = 0; - efi.canTouchEfiVariables = true; - - systemd-boot = { - enable = true; - configurationLimit = 5; - editor = false; - }; - }; - }; - - time.timeZone = lib.mkDefault "Asia/Hong_Kong"; - - i18n = { - supportedLocales = [ - "en_US.UTF-8/UTF-8" - "en_DK.UTF-8/UTF-8" - ]; - - extraLocaleSettings = { - LC_MESSAGES = "en_US.UTF-8"; - LC_TIME = "en_DK.UTF-8"; - }; - }; - - users = { - defaultUserShell = pkgs.dash; - - users = { - tlater = { - isNormalUser = true; - extraGroups = [ - "wheel" - "video" - "unbound" - ]; - }; - }; - }; - - # Ensure that we can find stuff with `man -k` (used with emacs a - # lot) - documentation.man.cache.enable = true; - - environment = { - systemPackages = with pkgs; [ pavucontrol ]; - - extraInit = '' - # Do not want this in the environment. NixOS always sets it and does not - # provide any option not to, so I must unset it myself via the - # environment.extraInit option. - unset -v SSH_ASKPASS - ''; - }; - - programs = { - dconf.enable = true; - git.enable = true; - nano.enable = false; - }; - - security = { - sudo-rs.enable = true; - rtkit.enable = true; - pam.enableUMask = true; - }; - - fileSystems."/boot".options = [ "umask=0077" ]; - - fonts = { - enableDefaultPackages = true; - - packages = with pkgs; [ - hack-font - noto-fonts - noto-fonts-cjk-sans - noto-fonts-color-emoji - ]; - - fontconfig = { - defaultFonts = { - serif = [ "NotoSerif" ]; - sansSerif = [ "NotoSans" ]; - monospace = [ "Hack" ]; - }; - }; - }; - - # My systems never have usable root accounts anyway, so emergency - # mode just drops into a shell telling me it can't log into root - systemd.enableEmergencyMode = false; - - services = { - angrr = { - enable = true; - - settings = { - temporary-root-policies = { - direnv = { - path-regex = "/\\.direnv/"; - period = "14d"; - }; - - result = { - path-regex = "/result[^/]*$"; - period = "3d"; - }; - }; - - profile-policies = { - system = { - profile-paths = [ "/nix/var/nix/profiles/system" ]; - keep-since = "14d"; - keep-latest-n = 5; - keep-booted-system = true; - keep-current-system = true; - }; - - user = { - profile-paths = [ - "~/.local/state/nix/profiles/profile" - "/nix/var/nix/profiles/per-user/root/profile" - ]; - keep-since = "1d"; - keep-latest-n = 1; - }; - }; - }; - }; - - xserver = { - enable = true; - xkb.layout = "us"; - }; - - dbus.packages = [ - # Required for gnome3 pinentry to work - pkgs.gcr - ]; - - libinput = { - enable = true; - mouse.middleEmulation = false; - }; - - pipewire = { - enable = true; - alsa.enable = true; - pulse.enable = true; - - # Disable the HFP bluetooth profile, because I always use external - # microphones anyway. It sucks and sometimes devices end up caught - # in it even if I have another microphone. - wireplumber.extraConfig = { - "50-bluez" = { - "monitor.bluez.rules" = [ - { - matches = [ { "device.name" = "~bluez_card.*"; } ]; - actions = { - update-props = { - "bluez5.auto-connect" = [ - "a2dp_sink" - "a2dp_source" - ]; - "bluez5.hw-volume" = [ - "a2dp_sink" - "a2dp_source" - ]; - }; - }; - } - ]; - "monitor.bluez.properties" = { - "bluez5.roles" = [ - "a2dp_sink" - "a2dp_source" - "bap_sink" - "bap_source" - ]; - - "bluez5.codecs" = [ - "ldac" - "aptx" - "aptx_ll_duplex" - "aptx_ll" - "aptx_hd" - "opus_05_pro" - "opus_05_71" - "opus_05_51" - "opus_05" - "opus_05_duplex" - "aac" - "sbc_xq" - "sbc" - ]; - - "bluez5.hfphsp-backend" = "none"; - }; - }; - }; - }; - - udisks2.enable = true; - nscd.enableNsncd = true; - blueman.enable = true; - chrony.enable = true; - flatpak.enable = true; - fstrim.enable = true; - fwupd.enable = true; - automatic-timezoned.enable = true; - - # Necessary for opening links in gnome under certain conditions - gvfs.enable = true; - }; - - hardware = { - bluetooth.enable = true; - enableRedistributableFirmware = true; - opentabletdriver.enable = true; - - nvidia = - let - inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) nvidia; - in - { - package = config.boot.kernelPackages.nvidiaPackages.mkDriver { - inherit (nvidia) version; - sha256_64bit = nvidia.src.outputHash; - openSha256 = nvidia.open.src.outputHash; - useSettings = false; - usePersistenced = false; - }; - - # Disabled because I don't use it and I can't be bothered to - # figure out how to get a hash for something nvidia don't seem to - # publish consistently. - nvidiaSettings = false; - }; - }; - - system.stateVersion = "20.09"; -} diff --git a/nixos-config/desktop/default.nix b/nixos-config/desktop/default.nix deleted file mode 100644 index 2ef9c693..00000000 --- a/nixos-config/desktop/default.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - imports = [ - ./greeter - ./sway.nix - ]; - - programs.uwsm = { - enable = true; - waylandCompositors.dummy = { - prettyName = "dummy"; - comment = "Dummy service since the uwsm module won't work unless this is defined"; - binPath = "/"; - }; - }; -} diff --git a/nixos-config/desktop/greeter/default.nix b/nixos-config/desktop/greeter/default.nix deleted file mode 100644 index e0897d41..00000000 --- a/nixos-config/desktop/greeter/default.nix +++ /dev/null @@ -1,74 +0,0 @@ -{ - config, - pkgs, - lib, - flake-inputs, - ... -}: -let - sway = config.programs.sway.package; - unsupported-gpu = lib.elem "nvidia" config.services.xserver.videoDrivers; - - sway-gtkgreet = pkgs.writeText "sway-gtkgreet" '' - output '*' background #fafafa solid_color - seat seat0 xcursor_theme Bibata-Original-Ice 24 - - exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK - exec eww -c ${./eww-config} open powermenu - exec "gtkgreet -l; swaymsg exit" - ''; - - launch-gtkgreet = pkgs.writeShellApplication { - name = "launch-gtkgreet"; - runtimeInputs = [ - pkgs.eww - pkgs.gtkgreet - sway - ]; - text = '' - export XDG_SESSION_TYPE=wayland - export HOME=/var/run/gtkgreet - mkdir -p "$HOME/.cache" - sway ${lib.optionalString unsupported-gpu "--unsupported-gpu"} -c ${sway-gtkgreet} - ''; - }; - - sway-run = pkgs.writeShellScriptBin "sway-run" '' - uwsm start -F -- ${lib.getExe config.programs.sway.package} ${lib.optionalString unsupported-gpu "--unsupported-gpu"} - ''; -in -{ - services = { - xserver.displayManager.lightdm.enable = false; - - greetd = { - enable = true; - settings.default_session = { - command = lib.getExe launch-gtkgreet; - }; - }; - }; - - environment = { - etc."greetd/environments".text = '' - sway-run - ''; - - systemPackages = with pkgs; [ - sway-run - pciutils - ]; - }; - - fonts.packages = [ flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.phosphor-icons ]; - - systemd.tmpfiles.rules = - let - inherit (config.services.greetd.settings.default_session) user; - in - [ - "d /run/gtkgreet 0755 greeter ${user} - -" - "d /var/log/gtkgreet 0755 greeter ${user} - -" - "d /var/cache/gtkgreet 0755 greeter ${user} - -" - ]; -} diff --git a/nixos-config/hosts/rin/hardware-configuration.nix b/nixos-config/hosts/rin/hardware-configuration.nix deleted file mode 100644 index 6dbb9818..00000000 --- a/nixos-config/hosts/rin/hardware-configuration.nix +++ /dev/null @@ -1,25 +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") - ]; - - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - - # 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 possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/nixos-config/hosts/rin/hardware.nix b/nixos-config/hosts/rin/hardware.nix deleted file mode 100644 index ccdf922b..00000000 --- a/nixos-config/hosts/rin/hardware.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ flake-inputs, pkgs, ... }: -{ - imports = [ - flake-inputs.disko.nixosModules.disko - - ./hardware-configuration.nix - ./disko.nix - - flake-inputs.nixos-hardware.nixosModules.common-pc-laptop - flake-inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd - flake-inputs.nixos-hardware.nixosModules.common-cpu-amd - flake-inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate - flake-inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower - ]; - - networking = { - hostName = "rin"; - hostId = "e6aaf496"; - }; - - boot.extraModprobeConfig = "options snd-hda-intel model=thinkpad,dmic-thinkpad\n"; - - nixpkgs.config.allowUnfreePredicate = - pkg: - builtins.elem (pkgs.lib.getName pkg) [ - "nvidia-x11" - "nvidia-settings" - ]; - - easyNvidia = { - enable = true; - withIntegratedGPU = true; - }; - - hardware.nvidia.prime = { - nvidiaBusId = "PCI:1:0:0"; - # Apparently, xorg requires bus IDs to be *decimal* - amdgpuBusId = "PCI:197:0:0"; - }; -} diff --git a/nixos-config/hosts/yui/default.nix b/nixos-config/hosts/yui/default.nix deleted file mode 100644 index ee0f0f13..00000000 --- a/nixos-config/hosts/yui/default.nix +++ /dev/null @@ -1,77 +0,0 @@ -{ pkgs, flake-inputs, ... }: -{ - imports = [ - flake-inputs.disko.nixosModules.disko - - flake-inputs.nixos-hardware.nixosModules.common-pc - flake-inputs.nixos-hardware.nixosModules.common-pc-ssd - flake-inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate - - ../../networking/personal.nix - - ./hardware-configuration.nix - ./disko.nix - - ./games.nix - ./networking.nix - ]; - - nixpkgs.config.allowUnfreePredicate = - pkg: - builtins.elem (pkgs.lib.getName pkg) [ - "steam" - "steam-run" - # Required to get the steam controller to work (i.e., for hardware.steam-hardware) - "steam-original" - "steam-unwrapped" - "nvidia-x11" - ]; - - home-manager.users.tlater = import "${flake-inputs.self}/home-config/hosts/yui.nix"; - - easyNvidia = { - enable = true; - withIntegratedGPU = false; - vaapi = { - enable = true; - firefox.av1Support = true; - }; - }; - - boot = { - blacklistedKernelModules = [ - # Used for IPMI (remote maintenance thing), but is unsupported - # by motherboard. - "sp5100_tco" - ]; - }; - services = { - btrfs.autoScrub.enable = true; - - flatpak = { - packages = [ - "de.schmidhuberj.tubefeeder" - "com.github.rafostar.Clapper" - ]; - update.auto.enable = false; - uninstallUnmanaged = false; - }; - - udev.rules."98-b550i-suspend.rules" = '' - # Fix broken suspend on b550i motherboard - # - # The rule is a bit overzealous, as it disables wake from *either* - # NVME drive, but I don't see why anyone would want to wake from - # NVME drives anyway. - # - # At least I *think* that's what the GPP bridge maps to. In - # either case, this fixes the immediate resume from suspend on - # my board. - ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1022", ATTR{device}=="0x1483", ATTR{power/wakeup}="disabled" - ''; - }; - - # For random android-related things - programs.adb.enable = true; - users.users.tlater.extraGroups = [ "adbusers" ]; -} diff --git a/nixos-config/hosts/yui/hardware-configuration.nix b/nixos-config/hosts/yui/hardware-configuration.nix deleted file mode 100644 index 8f56a3b3..00000000 --- a/nixos-config/hosts/yui/hardware-configuration.nix +++ /dev/null @@ -1,26 +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") - ]; - - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" ]; - boot.initrd.kernelModules = [ "dm-snapshot" ]; - boot.kernelModules = [ "kvm-amd" ]; - boot.extraModulePackages = [ ]; - - # 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 possible to use this option, but it's recommended to use it in conjunction - # with explicit per-interface declarations with `networking.interfaces..useDHCP`. - networking.useDHCP = lib.mkDefault true; - # networking.interfaces.eno1.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp6s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} diff --git a/nixos-config/hosts/yui/networking.nix b/nixos-config/hosts/yui/networking.nix deleted file mode 100644 index 813a4ac8..00000000 --- a/nixos-config/hosts/yui/networking.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - networking = { - hostName = "yui"; - - # Allow minecraft for when I'm running a minecraft server - # locally - firewall = { - enable = true; - trustedInterfaces = [ "tailscale0" ]; - - allowedTCPPorts = [ 25565 ]; - allowedUDPPorts = [ 25565 ]; - }; - - networkmanager.ensureProfiles.profiles.bond.bond.primary = "eno1"; - }; - - services.tailscale = { - enable = true; - openFirewall = true; - useRoutingFeatures = "client"; - - extraUpFlags = [ "--login-server=https://tailscale.tlater.net" ]; - extraSetFlags = [ - "--operator=tlater" - "--webclient" - ]; - }; -} diff --git a/nixos-config/hosts/yui/wireguard-dispatchers.nu b/nixos-config/hosts/yui/wireguard-dispatchers.nu deleted file mode 100644 index e37f94fc..00000000 --- a/nixos-config/hosts/yui/wireguard-dispatchers.nu +++ /dev/null @@ -1,48 +0,0 @@ -use std/log - -def main [interface_arg: string, action_arg?: string] { - let action = $action_arg | default $interface_arg - let interface = match $interface_arg { - none => null - _ if $action_arg == null => null - $other => $other - } - - log debug $"($interface) ($action)" - - match $interface { - "wgt-pvpn" => { - match $action { - "up" => { - log info 'Enabling Proton DNS server' - - unbound-control -q forward_remove . - unbound-control -q forward_add . 10.2.0.1 - } - "down" => { - log info 'Disabling Proton DNS server' - - unbound-control -q forward_remove . - unbound-control -q forward_add +t . ...($env.NIXOS_DNS_SERVERS | split row _ | reverse) - } - } - } - - "wgt-tlaternet" => { - match $action { - "up" => { - log info 'Setting up DNS redirect to tlater.net via the VPN' - - unbound-control -q local_zone tlater.net. redirect - unbound-control -q local_data tlater.net. A 10.45.249.1 - } - - "down" => { - log info 'Removing DNS redirect to tlater.net' - - unbound-control -q local_zone_remove tlater.net. - } - } - } - } -} diff --git a/nixos-config/networking/personal.nix b/nixos-config/networking/personal.nix deleted file mode 100644 index a23a2e71..00000000 --- a/nixos-config/networking/personal.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - networking.networkmanager.ensureProfiles.profiles = { - bond = { - connection = { - id = "bond"; - type = "bond"; - interface-name = "bond0"; - }; - - bond = { - miimon = 100; - mode = "active-backup"; - primary_reselect = "always"; - fail_over_mac = "active"; - updelay = 200; - }; - - ipv4.method = "auto"; - ipv6 = { - addr-gen-mode = "default"; - method = "auto"; - }; - }; - - ethernet.connection = { - id = "ethernet"; - type = "ethernet"; - - controller = "bond0"; - port-type = "bond"; - }; - }; -} diff --git a/nixos-config/nix.nix b/nixos-config/nix.nix deleted file mode 100644 index 4aa1846b..00000000 --- a/nixos-config/nix.nix +++ /dev/null @@ -1,86 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -{ - nix = { - package = pkgs.lixPackageSets.stable.lix; - - settings = { - auto-optimise-store = true; - experimental-features = [ - "nix-command" - "flakes" - ]; - - secret-key-files = [ "/run/credentials/nix-daemon.service/nix-signing-key" ]; - }; - - gc = { - automatic = true; - dates = "Thu"; - }; - }; - - systemd = { - tmpfiles.settings."10-credstore" = { - "/etc/credstore".d = { - user = "root"; - group = "root"; - mode = "0700"; - }; - - "/etc/credstore.encrypted".d = { - user = "root"; - group = "root"; - mode = "0700"; - }; - }; - - services = { - nix-daemon = { - after = [ "generate-nix-signing-key.service" ]; - requires = [ "generate-nix-signing-key.service" ]; - serviceConfig.LoadCredentialEncrypted = [ "nix-signing-key" ]; - }; - - generate-nix-signing-key = { - after = [ "systemd-random-seed.service" ]; - - serviceConfig = { - Type = "oneshot"; - RuntimeDirectory = "generate-nix-signing-key"; - - ExecStart = - pkgs.writers.writeNu "generate-nix-signing-key" - { - makeWrapperArgs = [ - "--prefix" - "PATH" - ":" - (lib.makeBinPath [ - config.nix.package - config.systemd.package - ]) - ]; - } - '' - cd $env.RUNTIME_DIRECTORY - - if not ('/etc/credstore.encrypted/nix-signing-key' | path exists) { - nix-store --generate-binary-cache-key (uname).nodename key.private key.public - systemd-creds encrypt key.private /etc/credstore.encrypted/nix-signing-key - mv key.public /etc/credstore/nix-signing-cert - - print 'done' - } else { - print 'nothing to be done' - } - ''; - }; - }; - }; - }; -} diff --git a/nixos-config/yubikey.nix b/nixos-config/yubikey.nix deleted file mode 100644 index c422b39d..00000000 --- a/nixos-config/yubikey.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ pkgs, ... }: -{ - services = { - udev.packages = [ pkgs.yubikey-personalization ]; - pcscd.enable = true; - }; - - hardware.gpgSmartcards.enable = true; -} diff --git a/nixos-modules/nvidia/de-compat.nix b/nixos-modules/nvidia/de-compat.nix deleted file mode 100644 index 8eff448d..00000000 --- a/nixos-modules/nvidia/de-compat.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: -let - cfg = config.easyNvidia; -in -lib.mkMerge [ - - (lib.mkIf (cfg.desktopEnvironment == "wlroots") { - environment.variables = lib.mkMerge [ - (lib.mkIf (!cfg.offload.enable) { - GBM_BACKEND = "nvidia-drm"; - # Apparently, without this nouveau may attempt to be used instead - # (despite it being blacklisted) - __GLX_VENDOR_LIBRARY_NAME = "nvidia"; - # Hardware cursors are currently broken on wlroots - WLR_NO_HARDWARE_CURSORS = "1"; - }) - (lib.mkIf cfg.offload.enable { WLR_DRM_DEVICES = "/dev/dri/igpu1:/dev/dri/dgpu1"; }) - ]; - }) - - # Both GNOME and Plasma guess which GPU should be used, so this - # *may* not be necessary. However, given NixOS configuration, we - # already should have an explicit setting from the user, and clearly - # the guess isn't always correct, so we explicitly set the GPU to - # use anyway. - (lib.mkIf (cfg.desktopEnvironment == "gnome") { - services.udev.packages = lib.mkIf cfg.offload.enable ( - pkgs.writeTextDir "lib/udev/rules.d/62-gnome-gpu-priority.rules" '' - SYMLINK=="dri/igpu1", TAG+="mutter-device-preferred-primary" - '' - ); - }) - - (lib.mkIf (cfg.desktopEnvironment == "plasma") { - environment.variables.KWIN_DRM_DEVICES = lib.mkIf cfg.offload.enable "/dev/dri/igpu1:/dev/dri/dgpu1"; - }) -] diff --git a/nixos-modules/nvidia/default.nix b/nixos-modules/nvidia/default.nix deleted file mode 100644 index 8bc61bbe..00000000 --- a/nixos-modules/nvidia/default.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.easyNvidia; -in -{ - imports = [ - ./vaapi.nix - ./prime.nix - ./de-compat.nix - ]; - - options.easyNvidia = with lib.types; { - enable = lib.mkEnableOption "easyNvidia"; - - withIntegratedGPU = lib.mkOption { - type = bool; - description = '' - Whether the computer has a separate integrated GPU. - - This also configures the machine to use the integrated GPU for - other things like software decoding, so keep this enabled even - if you separately disable offload rendering. - ''; - }; - - # TODO(tlater): Think of a better way to integrate - # this. Realistically, this should be added to the startup script - # of each of these, but that requires upstream coordination. - desktopEnvironment = lib.mkOption { - type = lib.types.enum [ - "x11" - "wlroots" - "plasma" - "gnome" - ]; - description = '' - The desktop environment that will be used. Each has subtly - different semantics for setting GPU priority, so needs to be - handled separately. - - If using a traditional X11-based DE or WM, always choose - `x11`, even when using GNOME or KDE. - - Using multiple session types is not yet supported. - ''; - }; - - advanced = { - usePageAttributeTable = lib.mkOption { - default = true; - type = bool; - description = '' - Whether to use the page attribute table. Nvidia is overly - conservative with enabling this; practically all modern CPUs - have support for this, and it can meaningfully impact - performance. - ''; - }; - - monitorControlSupport = lib.mkOption { - default = true; - type = bool; - description = '' - Whether to add i2c support for communication with monitors. - - This isn't universally necessary, or even useful, but it - enables configuring some monitor settings on some monitors - with some GPUs, and shouldn't otherwise be harmful. - - See https://www.ddcutil.com/nvidia/ for details. - ''; - }; - - forceKernel = lib.mkOption { - default = false; - type = bool; - description = '' - Override the kernel version assertion. You're on your own. - ''; - }; - }; - }; - - config = lib.mkIf cfg.enable { - assertions = lib.singleton { - assertion = config.boot.kernelPackages.kernel.isLTS; - message = "The nvidia driver can only support the LTS kernel. You can ignore this with `easyNvidia.advanced.forceKernel`."; - }; - - services.xserver.videoDrivers = [ "nvidia" ]; - - hardware.nvidia = { - # The open driver is recommended by nvidia now, see - # https://download.nvidia.com/XFree86/Linux-x86_64/565.57.01/README/kernel_open.html - open = true; - - dynamicBoost.enable = cfg.enable && cfg.withIntegratedGPU; - }; - - boot.extraModprobeConfig = - let - options = [ - "NVreg_UseKernelSuspendNotifiers=1" - ] - ++ lib.optional cfg.advanced.usePageAttributeTable "NVreg_UsePageAttributeTable=1" - ++ lib.optional cfg.advanced.monitorControlSupport "NVreg_RegistryDwords=RMUseSwI2c=0x01;RMI2cSpeed=100"; - in - lib.mkIf (options != [ ]) "options nvidia ${lib.concatStringsSep " " options}"; - }; -} diff --git a/nixos-modules/nvidia/prime.nix b/nixos-modules/nvidia/prime.nix deleted file mode 100644 index eac2f1f2..00000000 --- a/nixos-modules/nvidia/prime.nix +++ /dev/null @@ -1,69 +0,0 @@ -{ - pkgs, - config, - lib, - ... -}: -let - cfg = config.easyNvidia.offload; -in -{ - options.easyNvidia.offload = with lib.types; { - enable = lib.mkOption { - type = bool; - default = config.easyNvidia.enable && config.easyNvidia.withIntegratedGPU; - description = '' - Whether to configure prime offload. - - This will allow on-demand offloading of rendering tasks to the - NVIDIA GPU, all other rendering will happen on the GPU - integrated in the CPU. - - The GPU *should* be turned off whenever it is not in use, so - this shouldn't cause increased battery drain, but there are - some reports floating around that this isn't always the case - - likely especially for older devices. Feel free to turn it off - if you find this doesn't work properly for you. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - hardware.nvidia = { - prime.offload.enable = true; - powerManagement.finegrained = true; - }; - - # Set up a udev rule to create named symlinks for the pci paths. - # - # This is necessary because wlroots splits the DRM_DEVICES on - # `:`, which is part of the pci path. - services.udev.packages = - let - pciPath = - xorgBusId: - let - components = lib.drop 1 (lib.splitString ":" xorgBusId); - toHex = i: lib.toLower (lib.toHexString (lib.toInt i)); - - domain = "0000"; # Apparently the domain is practically always set to 0000 - bus = lib.fixedWidthString 2 "0" (toHex (builtins.elemAt components 0)); - device = lib.fixedWidthString 2 "0" (toHex (builtins.elemAt components 1)); - function = builtins.elemAt components 2; # The function is supposedly a decimal number - in - "dri/by-path/pci-${domain}:${bus}:${device}.${function}-card"; - - pCfg = config.hardware.nvidia.prime; - igpuPath = pciPath (if pCfg.intelBusId != "" then pCfg.intelBusId else pCfg.amdgpuBusId); - dgpuPath = pciPath pCfg.nvidiaBusId; - in - lib.mkIf (config.easyNvidia.desktopEnvironment != "x11") ( - lib.singleton ( - pkgs.writeTextDir "lib/udev/rules.d/61-gpu-offload.rules" '' - SYMLINK=="${igpuPath}", SYMLINK+="dri/igpu1" - SYMLINK=="${dgpuPath}", SYMLINK+="dri/dgpu1" - '' - ) - ); - }; -} diff --git a/nixos/boot.nix b/nixos/boot.nix new file mode 100644 index 00000000..244ba0dd --- /dev/null +++ b/nixos/boot.nix @@ -0,0 +1,29 @@ +/** + Configuration related to the bootloader and initrd. +*/ +{ pkgs, ... }: { + boot = { + kernelPackages = pkgs.linuxKernel.packages.linux_xanmod; + initrd.systemd.enable = true; + plymouth.enable = true; + + loader = { + timeout = 0; + efi.canTouchEfiVariables = true; + + systemd-boot = { + enable = true; + configurationLimit = 5; + editor = false; + }; + }; + }; + + fileSystems."/boot".options = [ "umask=0077" ]; + + # My systems never have usable root accounts anyway, so emergency + # mode just drops into a shell telling me it can't log into root + systemd.enableEmergencyMode = false; + + # hardware.enableRedistributableFirmware = true; +} diff --git a/nixos/default.nix b/nixos/default.nix new file mode 100644 index 00000000..1264b68a --- /dev/null +++ b/nixos/default.nix @@ -0,0 +1,30 @@ +/** + Entrypoint into general-purpose configuration. +*/ +{ inputs, lib, ... }: { + imports = [ + inputs.disko.nixosModules.disko + inputs.nix-flatpak.nixosModules.nix-flatpak + + ./modules/networkmanager-ensure-profiles.nix + ./modules/udev-rules.nix + + ./boot.nix + ./desktop.nix + ./maintenance.nix + ./networking.nix + ./programs.nix + ./security.nix + ]; + + nixpkgs.config.allowUnfreePredicate = + pkg: + builtins.elem (lib.getName pkg) [ + "nvidia-x11" + "nvidia-settings" + ]; + + # Remove some silly defaults. + programs.nano.enable = false; + environment.defaultPackages = lib.mkForce [ ]; +} diff --git a/nixos/desktop.nix b/nixos/desktop.nix new file mode 100644 index 00000000..e6075553 --- /dev/null +++ b/nixos/desktop.nix @@ -0,0 +1,72 @@ +/** + Configuration related to desktop use. +*/ +{ lib, pkgs, ... }: { + imports = [ + ./desktop/flatpaks.nix + ./desktop/greeter + ./desktop/sway.nix + ]; + + i18n = { + supportedLocales = [ + "en_US.UTF-8/UTF-8" + "en_DK.UTF-8/UTF-8" + ]; + + extraLocaleSettings = { + LC_MESSAGES = "en_US.UTF-8"; + LC_TIME = "en_DK.UTF-8"; + }; + }; + + fonts = { + enableDefaultPackages = true; + + packages = lib.attrValues { + inherit (pkgs) + hack-font + noto-fonts + noto-fonts-cjk-sans + noto-fonts-color-emoji + ; + }; + + fontconfig = { + defaultFonts = { + serif = [ "NotoSerif" ]; + sansSerif = [ "NotoSans" ]; + monospace = [ "Hack" ]; + }; + }; + }; + + services = { + # Required for gnome3 pinentry to work + dbus.packages = [ pkgs.gcr ]; + + libinput = { + enable = true; + mouse.middleEmulation = false; + }; + + # TODO: Is this still required? + xserver = { + enable = true; + xkb.layout = "us"; + }; + }; + + programs = { + dconf.enable = true; + + uwsm = { + enable = true; + waylandCompositors.dummy = { + prettyName = "dummy"; + comment = "Dummy service since the uwsm module won't work unless this is defined"; + binPath = "/"; + }; + }; + }; +} diff --git a/nixos/desktop/flatpaks.nix b/nixos/desktop/flatpaks.nix new file mode 100644 index 00000000..618e0f19 --- /dev/null +++ b/nixos/desktop/flatpaks.nix @@ -0,0 +1,12 @@ +/** + Flatpak-related configuration. +*/ +{ + services = { + flatpak.enable = true; + # Necessary for opening links in gtk under certain conditions + gvfs.enable = true; + }; + + xdg.portal.enable = true; +} diff --git a/nixos/desktop/greeter/default.nix b/nixos/desktop/greeter/default.nix new file mode 100644 index 00000000..7a1bf8de --- /dev/null +++ b/nixos/desktop/greeter/default.nix @@ -0,0 +1,87 @@ +/** + Configures a gtkgreet-based greetd greeter. +*/ +{ + config, + inputs, + lib, + pkgs, + ... +}: +let + /** + A binary that launches gtkgreet inside sway. + */ + sway-gtkgreet = + (inputs.wrappers.lib.evalModule { + imports = [ inputs.wrappers.lib.modules.default ]; + + inherit pkgs; + + package = pkgs.sway; + + runtimePkgs = [ + pkgs.eww + pkgs.gtkgreet + config.programs.sway.package + ]; + + flags = { + "--unsupported-gpu" = config.hardware.nvidia.enabled; + "--config" = pkgs.writeText "sway-gtkgreet.conf" '' + output '*' background #fafafa solid_color + seat seat0 xcursor_theme Bibata-Original-Ice 24 + + exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK + exec eww -c ${./eww-config} open powermenu + exec "gtkgreet -l; swaymsg exit" + ''; + }; + + env = { + HOME = "/var/run/gtkgreet"; + XDG_SESSION_TYPE = "wayland"; + }; + + runShell = [ "mkdir -p $HOME/.cache" ]; + }).config.wrapper; + + /** + A binary that starts sway inside the uwsm session. + */ + sway-run = pkgs.writeShellScriptBin "sway-run" '' + uwsm start -F -- ${lib.getExe config.programs.sway.package} ${lib.optionalString config.hardware.nvidia.enabled "--unsupported-gpu"} + ''; +in +{ + # TODO: Is this really necessary? + services.xserver.displayManager.lightdm.enable = true; + + services.greetd = { + enable = true; + settings.default_session.command = lib.getExe sway-gtkgreet; + }; + + environment = { + etc."greetd/environments".text = '' + sway-run + ''; + + systemPackages = [ + sway-run + pkgs.pciutils + ]; + }; + + fonts.packages = [ inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.phosphor-icons ]; + + systemd.tmpfiles.rules = + let + inherit (config.services.greetd.settings.default_session) user; + in + [ + "d /run/gtkgreet 0755 greeter ${user} - -" + "d /var/log/gtkgreet 0755 greeter ${user} - -" + "d /var/cache/gtkgreet 0755 greeter ${user} - -" + ]; +} diff --git a/nixos-config/desktop/greeter/eww-config/eww.scss b/nixos/desktop/greeter/eww-config/eww.scss similarity index 100% rename from nixos-config/desktop/greeter/eww-config/eww.scss rename to nixos/desktop/greeter/eww-config/eww.scss diff --git a/nixos-config/desktop/greeter/eww-config/eww.yuck b/nixos/desktop/greeter/eww-config/eww.yuck similarity index 100% rename from nixos-config/desktop/greeter/eww-config/eww.yuck rename to nixos/desktop/greeter/eww-config/eww.yuck diff --git a/nixos-config/desktop/sway.nix b/nixos/desktop/sway.nix similarity index 86% rename from nixos-config/desktop/sway.nix rename to nixos/desktop/sway.nix index 3a900dc5..959683cd 100644 --- a/nixos-config/desktop/sway.nix +++ b/nixos/desktop/sway.nix @@ -1,5 +1,7 @@ -{ pkgs, ... }: -{ +/** + Sway-related configuration. +*/ +{ pkgs, ... }: { environment.systemPackages = with pkgs; [ bibata-cursors ]; programs.sway = { diff --git a/nixos-config/hosts/yui/games.nix b/nixos/games.nix similarity index 66% rename from nixos-config/hosts/yui/games.nix rename to nixos/games.nix index d077ec8a..d20070ec 100644 --- a/nixos-config/hosts/yui/games.nix +++ b/nixos/games.nix @@ -1,30 +1,13 @@ -{ flake-inputs, pkgs, ... }: -let - inherit (flake-inputs) nix-gaming self; - pkgsGames = nix-gaming.packages.${pkgs.stdenv.hostPlatform.system}; - pkgsSelf = self.packages.${pkgs.stdenv.hostPlatform.system}; -in -{ +/** + Configuration for hosts that run video games. +*/ +{ inputs, pkgs, ... }: { imports = [ - nix-gaming.nixosModules.pipewireLowLatency - nix-gaming.nixosModules.platformOptimizations - nix-gaming.nixosModules.wine + inputs.nix-gaming.nixosModules.pipewireLowLatency + inputs.nix-gaming.nixosModules.platformOptimizations + inputs.nix-gaming.nixosModules.wine ]; - environment.systemPackages = - let - osuLazer = pkgsGames.osu-lazer-bin.override { gmrun_enable = false; }; - in - [ - osuLazer - - pkgs.prismlauncher - - pkgsSelf.edopro - pkgsSelf.jazz-jackrabbit-2 - ]; - - # Make steam controller work hardware.steam-hardware.enable = true; services = { @@ -36,8 +19,6 @@ in steam = { enable = true; extraCompatPackages = [ pkgs.proton-ge-bin ]; - # This sets some sensible game performance settings, along with - # some required for Star Citizen platformOptimizations.enable = true; protontricks.enable = true; }; diff --git a/nixos/hardware/bluetooth.nix b/nixos/hardware/bluetooth.nix new file mode 100644 index 00000000..2a93f72b --- /dev/null +++ b/nixos/hardware/bluetooth.nix @@ -0,0 +1,61 @@ +/** + Bluetooth-related configuration. +*/ +{ + hardware.bluetooth.enable = true; + + services = { + blueman.enable = true; + + # TODO: Configure this in the user service via hjem + # + # Disable the HFP bluetooth profile, because I always use external + # microphones anyway. It sucks and sometimes devices end up caught + # in it even if I have another microphone. + pipewire.wireplumber.extraConfig."50-bluez" = { + "monitor.bluez.rules" = [ + { + matches = [ { "device.name" = "~bluez_card.*"; } ]; + actions = { + update-props = { + "bluez5.auto-connect" = [ + "a2dp_sink" + "a2dp_source" + ]; + "bluez5.hw-volume" = [ + "a2dp_sink" + "a2dp_source" + ]; + }; + }; + } + ]; + "monitor.bluez.properties" = { + "bluez5.roles" = [ + "a2dp_sink" + "a2dp_source" + "bap_sink" + "bap_source" + ]; + + "bluez5.codecs" = [ + "ldac" + "aptx" + "aptx_ll_duplex" + "aptx_ll" + "aptx_hd" + "opus_05_pro" + "opus_05_71" + "opus_05_51" + "opus_05" + "opus_05_duplex" + "aac" + "sbc_xq" + "sbc" + ]; + + "bluez5.hfphsp-backend" = "none"; + }; + }; + }; +} diff --git a/nixos/hardware/graphics-tablet.nix b/nixos/hardware/graphics-tablet.nix new file mode 100644 index 00000000..e6cc592b --- /dev/null +++ b/nixos/hardware/graphics-tablet.nix @@ -0,0 +1,4 @@ +/** + Graphics tablet configuration. +*/ +{ hardware.opentabletdriver.enable = true; } diff --git a/nixos/hardware/nvidia.nix b/nixos/hardware/nvidia.nix new file mode 100644 index 00000000..30c01567 --- /dev/null +++ b/nixos/hardware/nvidia.nix @@ -0,0 +1,116 @@ +/** + Module to correctly configure an NVIDIA GPU. +*/ +{ + config, + lib, + pkgs, + ... +}: +let + cpuSupportsPat = lib.elem "pat" (lib.head config.hardware.facter.report.hardware.cpu).features; + + amdGpus = lib.filter ( + gpu: gpu.driver == "amdgpu" + ) config.hardware.facter.report.hardware.graphics_card; + + # TODO: Figure out what the output looks like for intel + intelGpus = [ ]; + + iGpus = amdGpus ++ intelGpus; + + nvidiaGpus = lib.filter ( + gpu: gpu.driver == "nvidia" + ) config.hardware.facter.report.hardware.graphics_card; + + hasIGPU = iGpus != [ ]; +in +lib.mkMerge [ + { + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + open = true; + powerManagement.enable = true; + moduleParams.nvidia.NVreg_UsePageAttributeTable = lib.mkIf cpuSupportsPat 1; + }; + } + + (lib.mkIf (!hasIGPU) { + environment.variables = { + GBM_BACKEND = "nvidia-drm"; + # Apparently, without this nouveau may attempt to be used instead + # (despite it being blacklisted) + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + # Hardware cursors are currently broken on wlroots + WLR_NO_HARDWARE_CURSORS = "1"; + }; + }) + + (lib.mkIf hasIGPU ( + let + dGpu = lib.head nvidiaGpus; + iGpu = lib.head iGpus; + + toBusId = + gpu: "PCI:${toString gpu.slot.bus}:${toString gpu.slot.number}:${toString gpu.detail.function}"; + in + { + hardware.nvidia = { + dynamicBoost.enable = true; + powerManagement.finegrained = true; + + prime = { + offload.enable = true; + + nvidiaBusId = toBusId dGpu; + amdgpuBusId = lib.mkIf (iGpu.driver == "amdgpu") (toBusId iGpu); + intelBusId = lib.mkIf false (toBusId iGpu); + }; + }; + + # Set up a udev rule to create named symlinks for the pci paths. + # + # This is necessary because wlroots splits the DRM_DEVICES on + # `:`, which is part of the pci path. + # + # TODO: Thanks to facter it's possible to enumerate all GPUs. + services.udev.packages = [ + (pkgs.writeTextDir "lib/udev/rules.d/61-gpu-offload.rules" '' + SYMLINK=="dri/by-path/pci-${iGpu.sysfs_bus_id}-card", SYMLINK+="dri/igpu1" + SYMLINK=="dri/by-path/pci-${dGpu.sysfs_bus_id}-card", SYMLINK+="dri/dgpu1" + '') + + (pkgs.writeTextDir "lib/udev/rules.d/62-gnome-gpu-priority.rules" '' + SYMLINK=="dri/igpu1", TAG+="mutter-device-preferred-primary" + '') + ]; + + environment.variables = { + KWIN_DRM_DEVICES = "/dev/dri/igpu1:/dev/dri/dgpu1"; + WLR_DRM_DEVICES = "/dev/dri/igpu1:/dev/dri/dgpu1"; + }; + } + )) +] + +# hardware = { +# nvidia = +# let +# inherit (inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) nvidia; +# in +# { +# package = config.boot.kernelPackages.nvidiaPackages.mkDriver { +# inherit (nvidia) version; +# sha256_64bit = nvidia.src.outputHash; +# openSha256 = nvidia.open.src.outputHash; +# useSettings = false; +# usePersistenced = false; +# }; + +# # Disabled because I don't use it and I can't be bothered to +# # figure out how to get a hash for something nvidia don't seem to +# # publish consistently. +# nvidiaSettings = false; +# }; +# }; diff --git a/nixos-config/laptops.nix b/nixos/hardware/powermanagement.nix similarity index 73% rename from nixos-config/laptops.nix rename to nixos/hardware/powermanagement.nix index 8b09788b..a295ec78 100644 --- a/nixos-config/laptops.nix +++ b/nixos/hardware/powermanagement.nix @@ -1,5 +1,7 @@ -{ pkgs, ... }: -{ +/** + Configuration for powermanagement, mostly laptops. +*/ +{ pkgs, ... }: { services = { upower = { enable = true; diff --git a/nixos/hardware/sound.nix b/nixos/hardware/sound.nix new file mode 100644 index 00000000..135a00db --- /dev/null +++ b/nixos/hardware/sound.nix @@ -0,0 +1,13 @@ +/** + Configuration for sound. +*/ +{ pkgs, ... }: { + environment.systemPackages = [ pkgs.pwvucontrol ]; + + services.pipewire = { + enable = true; + + alsa.enable = true; + pulse.enable = true; + }; +} diff --git a/nixos/hardware/yubikey.nix b/nixos/hardware/yubikey.nix new file mode 100644 index 00000000..99342a0a --- /dev/null +++ b/nixos/hardware/yubikey.nix @@ -0,0 +1,17 @@ +/** + Module to enable everything required to interact with yubikeys. +*/ + +{ pkgs, ... }: { + services = { + udev.packages = [ + # TODO: This is EOL; all we use this for is a single udev rule + # we could just port over, but it'd be nice if upstream did + # this. + pkgs.yubikey-personalization + ]; + pcscd.enable = true; + }; + + hardware.gpgSmartcards.enable = true; +} diff --git a/nixos/home-manager.nix b/nixos/home-manager.nix new file mode 100644 index 00000000..cd6ac75e --- /dev/null +++ b/nixos/home-manager.nix @@ -0,0 +1,12 @@ +{ inputs, config, ... }: { + imports = [ inputs.home-manager.nixosModules.home-manager ]; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + extraSpecialArgs = { + inherit inputs; + nixos-config = config; + }; + }; +} diff --git a/nixos/hosts/rin.nix b/nixos/hosts/rin.nix new file mode 100644 index 00000000..fa53d940 --- /dev/null +++ b/nixos/hosts/rin.nix @@ -0,0 +1,36 @@ +/** + Entrypoint for rin. +*/ +{ inputs, lib, ... }: { + imports = [ + inputs.famedly-nixos.nixosModules.default + + ../. + ../hardware/bluetooth.nix + ../hardware/nvidia.nix + ../hardware/powermanagement.nix + ../hardware/sound.nix + ../hardware/yubikey.nix + + ./rin/disko.nix + ./rin/docker.nix + # ./rin/hardware.nix + ./rin/wifi.nix + ]; + + networking = { + hostName = "rin"; + hostId = "e6aaf496"; + }; + + home-manager.users.tlater = import "${inputs.self}/home-config/hosts/rin.nix"; + hardware.facter.reportPath = ./rin/facter.json; + + # TODO: Upstream this hardware quirk to the facter modules + boot.extraModprobeConfig = "options snd-hda-intel model=thinkpad,dmic-thinkpad\n"; + + # TODO: Figure out why we disable this + programs.gnupg.agent.enable = lib.mkForce false; + + system.stateVersion = "20.09"; +} diff --git a/nixos-config/hosts/rin/disko.nix b/nixos/hosts/rin/disko.nix similarity index 93% rename from nixos-config/hosts/rin/disko.nix rename to nixos/hosts/rin/disko.nix index 7a5d676a..e8d1e096 100644 --- a/nixos-config/hosts/rin/disko.nix +++ b/nixos/hosts/rin/disko.nix @@ -1,6 +1,9 @@ -{ flake-inputs, ... }: +/** + Disko configuraiton for rin. +*/ +{ inputs, ... }: let - inherit (flake-inputs.self.lib) mapSubvolumes; + inherit (inputs.self.lib) mapSubvolumes; in { disko.devices.disk = { diff --git a/nixos-config/hosts/rin/default.nix b/nixos/hosts/rin/docker.nix similarity index 69% rename from nixos-config/hosts/rin/default.nix rename to nixos/hosts/rin/docker.nix index 86c47705..6b1a9793 100644 --- a/nixos-config/hosts/rin/default.nix +++ b/nixos/hosts/rin/docker.nix @@ -1,24 +1,7 @@ -{ - config, - flake-inputs, - lib, - ... -}: -{ - imports = [ - flake-inputs.famedly-nixos.nixosModules.default - - ../../laptops.nix - ../../networking/work.nix - - ./hardware.nix - ]; - - home-manager.users.tlater = import "${flake-inputs.self}/home-config/hosts/rin.nix"; - - programs.gnupg.agent.enable = lib.mkForce false; - - # Used extensively for testing at work +/** + Configuration for docker. +*/ +{ config, lib, ... }: { virtualisation.docker = { enable = true; enableOnBoot = false; @@ -30,10 +13,7 @@ }; }; - users.users.tlater.extraGroups = [ "docker" ]; - networking = { - # Incompatible with docker nftables.enable = lib.mkForce false; # Allow docker containers to communicate @@ -57,4 +37,6 @@ iptables -A INPUT -s ${addresses} -d ${addresses},172.17.0.1 -j ACCEPT ''; }; + + users.users.tlater.extraGroups = [ "docker" ]; } diff --git a/nixos/hosts/rin/facter.json b/nixos/hosts/rin/facter.json new file mode 100644 index 00000000..0faa5f42 --- /dev/null +++ b/nixos/hosts/rin/facter.json @@ -0,0 +1,5410 @@ +{ + "version": 1, + "system": "x86_64-linux", + "virtualisation": "none", + "uefi": { + "supported": true, + "platform_size": 64 + }, + "hardware": { + "bios": { + "apm_info": { + "supported": false, + "enabled": false, + "version": 0, + "sub_version": 0, + "bios_flags": 0 + }, + "vbe_info": { + "version": 0, + "video_memory": 0 + }, + "pnp": false, + "pnp_id": 0, + "lba_support": false, + "low_memory_size": 0, + "smbios_version": 771 + }, + "bluetooth": [ + { + "index": 71, + "attached_to": 77, + "class_list": [ + "usb", + "bluetooth" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0115", + "name": "Bluetooth Device", + "value": 277 + }, + "vendor": { + "hex": "10ab", + "value": 4267 + }, + "device": { + "hex": "9309", + "value": 37641 + }, + "revision": { + "hex": "0000", + "name": "0.01", + "value": 0 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.3/usb1/1-3/1-3:1.0", + "sysfs_bus_id": "1-3:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "device_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v10ABp9309d0001dcE0dsc01dp01icE0isc01ip01in00" + }, + { + "index": 79, + "attached_to": 77, + "class_list": [ + "usb", + "bluetooth" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0115", + "name": "Bluetooth Device", + "value": 277 + }, + "vendor": { + "hex": "10ab", + "value": 4267 + }, + "device": { + "hex": "9309", + "value": 37641 + }, + "revision": { + "hex": "0000", + "name": "0.01", + "value": 0 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.3/usb1/1-3/1-3:1.1", + "sysfs_bus_id": "1-3:1.1", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "device_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v10ABp9309d0001dcE0dsc01dp01icE0isc01ip01in01" + } + ], + "bridge": [ + { + "index": 22, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 3 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14ef", + "value": 5359 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:03.1", + "sysfs_bus_id": "0000:00:03.1", + "sysfs_iommu_group_id": 6, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 5, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EFsv00001022sd00001453bc06sc04i00" + }, + { + "index": 23, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14ea", + "value": 5354 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.0", + "sysfs_bus_id": "0000:00:08.0", + "sysfs_iommu_group_id": 8, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014EAsv00000000sd00000000bc06sc00i00" + }, + { + "index": 25, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f3", + "value": 5363 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.3", + "sysfs_bus_id": "0000:00:18.3", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 3, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F3sv00000000sd00000000bc06sc00i00" + }, + { + "index": 28, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f1", + "value": 5361 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.1", + "sysfs_bus_id": "0000:00:18.1", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 1, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F1sv00000000sd00000000bc06sc00i00" + }, + { + "index": 30, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14ea", + "value": 5354 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.0", + "sysfs_bus_id": "0000:00:01.0", + "sysfs_iommu_group_id": 0, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014EAsv00000000sd00000000bc06sc00i00" + }, + { + "index": 32, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14ee", + "value": 5358 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.3", + "sysfs_bus_id": "0000:00:02.3", + "sysfs_iommu_group_id": 4, + "detail": { + "function": 3, + "command": 1031, + "header_type": 1, + "secondary_bus": 3, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EEsv000017AAsd0000231Cbc06sc04i00" + }, + { + "index": 33, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 4 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14ea", + "value": 5354 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:04.0", + "sysfs_bus_id": "0000:00:04.0", + "sysfs_iommu_group_id": 7, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014EAsv00000000sd00000000bc06sc00i00" + }, + { + "index": 34, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0001", + "name": "ISA bridge", + "value": 1 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "790e", + "value": 30990 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "revision": { + "hex": "0051", + "value": 81 + }, + "model": "AMD ISA bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:14.3", + "sysfs_bus_id": "0000:00:14.3", + "sysfs_iommu_group_id": 12, + "detail": { + "function": 3, + "command": 15, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000790Esv000017AAsd0000231Cbc06sc01i00" + }, + { + "index": 38, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14eb", + "value": 5355 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3", + "sysfs_bus_id": "0000:00:08.3", + "sysfs_iommu_group_id": 11, + "detail": { + "function": 3, + "command": 1031, + "header_type": 1, + "secondary_bus": 199, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EBsv000017AAsd0000231Cbc06sc04i00" + }, + { + "index": 40, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f6", + "value": 5366 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.6", + "sysfs_bus_id": "0000:00:18.6", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 6, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F6sv00000000sd00000000bc06sc00i00" + }, + { + "index": 41, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14e8", + "value": 5352 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:00.0", + "sysfs_bus_id": "0000:00:00.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E8sv000017AAsd0000231Cbc06sc00i00" + }, + { + "index": 42, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14eb", + "value": 5355 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1", + "sysfs_bus_id": "0000:00:08.1", + "sysfs_iommu_group_id": 9, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 197, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EBsv000017AAsd0000231Cbc06sc04i00" + }, + { + "index": 44, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f4", + "value": 5364 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.4", + "sysfs_bus_id": "0000:00:18.4", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 4, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F4sv00000000sd00000000bc06sc00i00" + }, + { + "index": 46, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 3 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14ea", + "value": 5354 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:03.0", + "sysfs_bus_id": "0000:00:03.0", + "sysfs_iommu_group_id": 6, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014EAsv00000000sd00000000bc06sc00i00" + }, + { + "index": 48, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f2", + "value": 5362 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.2", + "sysfs_bus_id": "0000:00:18.2", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 2, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F2sv00000000sd00000000bc06sc00i00" + }, + { + "index": 49, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14ed", + "value": 5357 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.1", + "sysfs_bus_id": "0000:00:01.1", + "sysfs_iommu_group_id": 1, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 1, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EDsv000017AAsd0000231Cbc06sc04i00" + }, + { + "index": 51, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14ee", + "value": 5358 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.4", + "sysfs_bus_id": "0000:00:02.4", + "sysfs_iommu_group_id": 5, + "detail": { + "function": 4, + "command": 1031, + "header_type": 1, + "secondary_bus": 4, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EEsv000017AAsd0000231Cbc06sc04i00" + }, + { + "index": 53, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f0", + "value": 5360 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.0", + "sysfs_bus_id": "0000:00:18.0", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F0sv00000000sd00000000bc06sc00i00" + }, + { + "index": 54, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 4 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14ef", + "value": 5359 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:04.1", + "sysfs_bus_id": "0000:00:04.1", + "sysfs_iommu_group_id": 7, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 101, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EFsv00001022sd00001453bc06sc04i00" + }, + { + "index": 56, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14ee", + "value": 5358 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.2", + "sysfs_bus_id": "0000:00:02.2", + "sysfs_iommu_group_id": 3, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 2, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EEsv000017AAsd0000231Cbc06sc04i00" + }, + { + "index": 58, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14ea", + "value": 5354 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.0", + "sysfs_bus_id": "0000:00:02.0", + "sysfs_iommu_group_id": 2, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014EAsv00000000sd00000000bc06sc00i00" + }, + { + "index": 59, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f7", + "value": 5367 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.7", + "sysfs_bus_id": "0000:00:18.7", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 7, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F7sv00000000sd00000000bc06sc00i00" + }, + { + "index": 61, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14eb", + "value": 5355 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.2", + "sysfs_bus_id": "0000:00:08.2", + "sysfs_iommu_group_id": 10, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 198, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014EBsv000017AAsd0000231Cbc06sc04i00" + }, + { + "index": 63, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14f5", + "value": 5365 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.5", + "sysfs_bus_id": "0000:00:18.5", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 5, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014F5sv00000000sd00000000bc06sc00i00" + } + ], + "camera": [ + { + "index": 72, + "attached_to": 68, + "class_list": [ + "camera", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010f", + "name": "Camera", + "value": 271 + }, + "vendor": { + "hex": "174f", + "value": 5967 + }, + "device": { + "hex": "181f", + "name": "Integrated Camera", + "value": 6175 + }, + "revision": { + "hex": "0000", + "name": "10.17", + "value": 0 + }, + "serial": "200901010001", + "model": "Integrated Camera", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.4/usb3/3-1/3-1:1.0", + "sysfs_bus_id": "3-1:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "000e", + "name": "video", + "value": 14 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0, + "interface_association": { + "function_class": { + "hex": "000e", + "name": "video", + "value": 14 + }, + "function_subclass": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "function_protocol": 0, + "interface_count": 2, + "first_interface": 0 + } + }, + "hotplug": "usb", + "driver": "uvcvideo", + "driver_module": "uvcvideo", + "drivers": [ + "uvcvideo" + ], + "driver_modules": [ + "uvcvideo" + ], + "module_alias": "usb:v174Fp181Fd1017dcEFdsc02dp01ic0Eisc01ip01in00" + }, + { + "index": 80, + "attached_to": 68, + "class_list": [ + "camera", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010f", + "name": "Camera", + "value": 271 + }, + "vendor": { + "hex": "174f", + "value": 5967 + }, + "device": { + "hex": "181f", + "name": "Integrated Camera", + "value": 6175 + }, + "revision": { + "hex": "0000", + "name": "10.17", + "value": 0 + }, + "serial": "200901010001", + "model": "Integrated Camera", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.4/usb3/3-1/3-1:1.1", + "sysfs_bus_id": "3-1:1.1", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "000e", + "name": "video", + "value": 14 + }, + "interface_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "interface_protocol": 1, + "interface_number": 1, + "interface_alternate_setting": 0, + "interface_association": { + "function_class": { + "hex": "000e", + "name": "video", + "value": 14 + }, + "function_subclass": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "function_protocol": 0, + "interface_count": 2, + "first_interface": 0 + } + }, + "hotplug": "usb", + "driver": "uvcvideo", + "driver_module": "uvcvideo", + "drivers": [ + "uvcvideo" + ], + "driver_modules": [ + "uvcvideo" + ], + "module_alias": "usb:v174Fp181Fd1017dcEFdsc02dp01ic0Eisc02ip01in01" + } + ], + "chip_card": [ + { + "index": 73, + "attached_to": 69, + "class_list": [ + "chip_card", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010e", + "name": "Chipcard Reader", + "value": 270 + }, + "vendor": { + "hex": "1050", + "name": "Yubico", + "value": 4176 + }, + "device": { + "hex": "0407", + "name": "YubiKey OTP+FIDO+CCID", + "value": 1031 + }, + "revision": { + "hex": "0000", + "name": "5.43", + "value": 0 + }, + "model": "Yubico YubiKey OTP+FIDO+CCID", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.4/usb7/7-1/7-1:1.2", + "sysfs_bus_id": "7-1:1.2", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "000b", + "name": "smart_card", + "value": 11 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 2, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbfs", + "driver_module": "usbcore", + "drivers": [ + "usbfs" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1050p0407d0543dc00dsc00dp00ic0Bisc00ip00in02" + } + ], + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "AuthenticAMD", + "model_name": "AMD Ryzen 7 PRO 7840HS w/ Radeon 780M Graphics", + "family": 25, + "model": 116, + "stepping": 1, + "features": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "mmx", + "fxsr", + "sse", + "sse2", + "ht", + "syscall", + "nx", + "mmxext", + "fxsr_opt", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "rep_good", + "amd_lbr_v2", + "nopl", + "xtopology", + "nonstop_tsc", + "cpuid", + "extd_apicid", + "aperfmperf", + "rapl", + "pni", + "pclmulqdq", + "monitor", + "ssse3", + "fma", + "cx16", + "sse4_1", + "sse4_2", + "x2apic", + "movbe", + "popcnt", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "lahf_lm", + "cmp_legacy", + "svm", + "extapic", + "cr8_legacy", + "abm", + "sse4a", + "misalignsse", + "3dnowprefetch", + "osvw", + "ibs", + "skinit", + "wdt", + "tce", + "topoext", + "perfctr_core", + "perfctr_nb", + "bpext", + "perfctr_llc", + "mwaitx", + "cpuid_fault", + "cpb", + "cat_l3", + "cdp_l3", + "hw_pstate", + "ssbd", + "mba", + "perfmon_v2", + "ibrs", + "ibpb", + "stibp", + "ibrs_enhanced", + "vmmcall", + "fsgsbase", + "bmi1", + "avx2", + "smep", + "bmi2", + "erms", + "invpcid", + "cqm", + "rdt_a", + "avx512f", + "avx512dq", + "rdseed", + "adx", + "smap", + "avx512ifma", + "clflushopt", + "clwb", + "avx512cd", + "sha_ni", + "avx512bw", + "avx512vl", + "xsaveopt", + "xsavec", + "xgetbv1", + "xsaves", + "cqm_llc", + "cqm_occup_llc", + "cqm_mbm_total", + "cqm_mbm_local", + "user_shstk", + "avx512_bf16", + "clzero", + "irperf", + "xsaveerptr", + "rdpru", + "wbnoinvd", + "cppc", + "arat", + "npt", + "lbrv", + "svm_lock", + "nrip_save", + "tsc_scale", + "vmcb_clean", + "flushbyasid", + "decodeassists", + "pausefilter", + "pfthreshold", + "vgif", + "x2avic", + "v_spec_ctrl", + "vnmi", + "a" + ], + "bugs": [ + "sysret_ss_attrs", + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "srso", + "spectre_v2_user", + "tsa", + "vmscape" + ], + "power_management": [ + "ts", + "ttp", + "tm", + "hwpstate", + "cpb", + "eff_freq_ro", + "[13]", + "[14]", + "[15]" + ], + "bogo": 7586, + "cache": 1024, + "units": 16, + "page_size": 4096, + "physical_id": 0, + "siblings": 16, + "cores": 8, + "fpu": false, + "fpu_exception": false, + "cpuid_level": 16, + "write_protect": false, + "tlb_size": 3584, + "clflush_size": 64, + "cache_alignment": 64, + "address_sizes": { + "physical": "0x30", + "virtual": "0x30" + } + } + ], + "disk": [ + { + "index": 65, + "attached_to": 57, + "class_list": [ + "disk", + "block_device", + "nvme" + ], + "bus_type": { + "hex": "0096", + "name": "NVME", + "value": 150 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "vendor": { + "hex": "1c5c", + "value": 7260 + }, + "sub_vendor": { + "hex": "1c5c", + "value": 7260 + }, + "device": { + "hex": "1d59", + "name": "SKHynix_HFS001TEJ9X164N", + "value": 7513 + }, + "sub_device": { + "hex": "1d59", + "value": 7513 + }, + "serial": "4JC7N458010407D3E", + "model": "SKHynix_HFS001TEJ9X164N", + "sysfs_id": "/class/block/nvme0n1", + "sysfs_bus_id": "nvme0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.4/0000:04:00.0/nvme/nvme0", + "unix_device_names": [ + "/dev/disk/by-id/nvme-SKHynix_HFS001TEJ9X164N_4JC7N458010407D3E", + "/dev/disk/by-id/nvme-SKHynix_HFS001TEJ9X164N_4JC7N458010407D3E_1", + "/dev/disk/by-id/nvme-eui.0000000000000000ace42e0035acb7dc", + "/dev/disk/by-path/pci-0000:04:00.0-nvme-1", + "/dev/nvme0n1" + ], + "rom_id": "0x80", + "resources": [ + { + "type": "disk_geo", + "cylinders": 976762, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 2000409264, + "value_2": 512 + } + ], + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ] + } + ], + "graphics_card": [ + { + "index": 35, + "attached_to": 49, + "class_list": [ + "graphics_card", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 1, + "number": 0 + }, + "base_class": { + "hex": "0003", + "name": "Display controller", + "value": 3 + }, + "sub_class": { + "hex": "0002", + "name": "3D controller", + "value": 2 + }, + "vendor": { + "hex": "10de", + "name": "nVidia Corporation", + "value": 4318 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "25bd", + "value": 9661 + }, + "sub_device": { + "hex": "231d", + "value": 8989 + }, + "revision": { + "hex": "00a1", + "value": 161 + }, + "model": "nVidia 3D controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.1/0000:01:00.0", + "sysfs_bus_id": "0000:01:00.0", + "sysfs_iommu_group_id": 14, + "resources": [ + { + "type": "io", + "base": 40960, + "range": 128, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "nvidia", + "driver_module": "nvidia", + "drivers": [ + "nvidia" + ], + "driver_modules": [ + "nvidia" + ], + "module_alias": "pci:v000010DEd000025BDsv000017AAsd0000231Dbc03sc02i00" + }, + { + "index": 52, + "attached_to": 42, + "class_list": [ + "graphics_card", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 197, + "number": 0 + }, + "base_class": { + "hex": "0003", + "name": "Display controller", + "value": 3 + }, + "sub_class": { + "hex": "0000", + "name": "VGA compatible controller", + "value": 0 + }, + "pci_interface": { + "hex": "0000", + "name": "VGA", + "value": 0 + }, + "vendor": { + "hex": "1002", + "name": "ATI Technologies Inc", + "value": 4098 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15bf", + "value": 5567 + }, + "sub_device": { + "hex": "231d", + "value": 8989 + }, + "revision": { + "hex": "00d4", + "value": 212 + }, + "model": "ATI VGA compatible controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.0", + "sysfs_bus_id": "0000:c5:00.0", + "sysfs_iommu_group_id": 18, + "resources": [ + { + "type": "io", + "base": 4096, + "range": 256, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "amdgpu", + "driver_module": "amdgpu", + "drivers": [ + "amdgpu" + ], + "driver_modules": [ + "amdgpu" + ], + "module_alias": "pci:v00001002d000015BFsv000017AAsd0000231Dbc03sc00i00" + } + ], + "hub": [ + { + "index": 67, + "attached_to": 55, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c7:00.3", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.3/usb6/6-0:1.0", + "sysfs_bus_id": "6-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 68, + "attached_to": 43, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c5:00.4", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.4/usb3/3-0:1.0", + "sysfs_bus_id": "3-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 69, + "attached_to": 31, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c7:00.4", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.4/usb7/7-0:1.0", + "sysfs_bus_id": "7-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 74, + "attached_to": 43, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c5:00.4", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.4/usb4/4-0:1.0", + "sysfs_bus_id": "4-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 76, + "attached_to": 31, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c7:00.4", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.4/usb8/8-0:1.0", + "sysfs_bus_id": "8-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 77, + "attached_to": 24, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c5:00.3", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.3/usb1/1-0:1.0", + "sysfs_bus_id": "1-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 78, + "attached_to": 55, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c7:00.3", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.3/usb5/5-0:1.0", + "sysfs_bus_id": "5-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 81, + "attached_to": 24, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.34-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:c5:00.3", + "model": "Linux 6.18.34-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.3/usb2/2-0:1.0", + "sysfs_bus_id": "2-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + } + ], + "keyboard": [ + { + "index": 75, + "attached_to": 69, + "class_list": [ + "keyboard", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0108", + "name": "Keyboard", + "value": 264 + }, + "sub_class": { + "hex": "0000", + "name": "Keyboard", + "value": 0 + }, + "vendor": { + "hex": "1050", + "name": "Yubico", + "value": 4176 + }, + "device": { + "hex": "0407", + "name": "YubiKey OTP+FIDO+CCID", + "value": 1031 + }, + "revision": { + "hex": "0000", + "name": "5.43", + "value": 0 + }, + "model": "Yubico YubiKey OTP+FIDO+CCID", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.4/usb7/7-1/7-1:1.0", + "sysfs_bus_id": "7-1:1.0", + "unix_device_names": [ + "/dev/input/by-id/usb-Yubico_YubiKey_OTP+FIDO+CCID-event-kbd", + "/dev/input/by-path/pci-0000:c7:00.4-usb-0:1:1.0-event-kbd", + "/dev/input/by-path/pci-0000:c7:00.4-usbv2-0:1:1.0-event-kbd", + "/dev/input/event1" + ], + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "keyboard", + "xkb_rules": "xfree86", + "xkb_model": "pc104" + }, + "module_alias": "usb:v1050p0407d0543dc00dsc00dp00ic03isc01ip01in00" + } + ], + "memory": [ + { + "index": 19, + "attached_to": 0, + "class_list": [ + "memory" + ], + "base_class": { + "hex": "0101", + "name": "Internally Used Class", + "value": 257 + }, + "sub_class": { + "hex": "0002", + "name": "Main Memory", + "value": 2 + }, + "model": "Main Memory", + "resources": [ + { + "type": "phys_mem", + "range": 32212254720 + } + ] + } + ], + "monitor": [ + { + "index": 64, + "attached_to": 52, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "30ae", + "name": "Lenovo", + "value": 12462 + }, + "device": { + "hex": "41b5", + "value": 16821 + }, + "serial": "0", + "model": "Lenovo LCD Monitor", + "resources": [ + { + "type": "monitor", + "width": 1920, + "height": 1200, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "size", + "unit": "mm", + "value_1": 344, + "value_2": 215 + } + ], + "detail": { + "manufacture_year": 2022, + "manufacture_week": 0, + "vertical_sync": { + "min": 40, + "max": 60 + }, + "horizontal_sync": { + "min": 75, + "max": 75 + }, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 1968, + "sync_end": 2000, + "total": 2080 + }, + "vertical_sync_timings": { + "disp": 1200, + "sync_start": 1210, + "sync_end": 1216, + "total": 1236 + }, + "clock": 154260, + "width": 1920, + "height": 1200, + "width_millimetres": 344, + "height_millimetres": 215, + "horizontal_flag": 45, + "vertical_flag": 43, + "vendor": "N160JCA-EEL", + "name": "" + }, + "driver_info": { + "type": "display", + "width": 1920, + "height": 1200, + "vertical_sync": { + "min": 40, + "max": 60 + }, + "horizontal_sync": { + "min": 75, + "max": 75 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 1968, + "sync_end": 2000, + "total": 2080 + }, + "vertical_sync_timings": { + "disp": 1200, + "sync_start": 1210, + "sync_end": 1216, + "total": 1236 + }, + "horizontal_flag": 45, + "vertical_flag": 43 + } + } + ], + "mouse": [ + { + "index": 87, + "attached_to": 0, + "bus_type": { + "hex": "0081", + "name": "serial", + "value": 129 + }, + "base_class": { + "hex": "0118", + "name": "touchpad", + "value": 280 + }, + "sub_class": { + "hex": "0001", + "name": "bus", + "value": 1 + }, + "vendor": { + "hex": "06cb", + "value": 1739 + }, + "device": { + "hex": "cec6", + "value": 52934 + }, + "sysfs_id": "/devices/platform/AMDI0010:01/i2c-1/i2c-SYNA801A:00/0018:06CB:CEC6.0003/input/input18", + "unix_device_names": [ + "/dev/input/event12", + "/dev/input/ + handler" + ] + } + ], + "network_controller": [ + { + "index": 29, + "attached_to": 56, + "class_list": [ + "network_controller", + "pci", + "wlan_card" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0082", + "name": "WLAN controller", + "value": 130 + }, + "vendor": { + "hex": "17cb", + "value": 6091 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "1103", + "value": 4355 + }, + "sub_device": { + "hex": "9309", + "value": 37641 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "WLAN controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.2/0000:02:00.0", + "sysfs_bus_id": "0000:02:00.0", + "sysfs_iommu_group_id": 15, + "unix_device_names": [ + "wlp2s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 48 + }, + { + "type": "phwaddr", + "address": 48 + }, + { + "type": "wlan", + "channels": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "36", + "40", + "44", + "48", + "52", + "56", + "60", + "64", + "100", + "104", + "108", + "112", + "116", + "120", + "124", + "128", + "132", + "136", + "140" + ], + "frequencies": [ + "2.412", + "2.417", + "2.422", + "2.427", + "2.432", + "2.437", + "2.442", + "2.447", + "2.452", + "2.457", + "2.462", + "2.467", + "2.472", + "5.18", + "5.2", + "5.22", + "5.24", + "5.26", + "5.28", + "5.3", + "5.32", + "5.5", + "5.52", + "5.54", + "5.56", + "5.58", + "5.6", + "5.62", + "5.64", + "5.66", + "5.68", + "5.7" + ], + "auth_modes": [ + "open", + "wpa-psk", + "wpa-eap" + ], + "enc_modes": [ + "TKIP", + "CCMP" + ] + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "ath11k_pci", + "driver_module": "ath11k_pci", + "drivers": [ + "ath11k_pci" + ], + "driver_modules": [ + "ath11k_pci" + ], + "module_alias": "pci:v000017CBd00001103sv000017AAsd00009309bc02sc80i00" + } + ], + "network_interface": [ + { + "index": 85, + "attached_to": 29, + "class_list": [ + "network_interface" + ], + "base_class": { + "hex": "0107", + "name": "Network Interface", + "value": 263 + }, + "sub_class": { + "hex": "0001", + "name": "Ethernet", + "value": 1 + }, + "model": "Ethernet network interface", + "sysfs_id": "/class/net/wlp2s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.2/0000:02:00.0", + "unix_device_names": [ + "wlp2s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 48 + }, + { + "type": "phwaddr", + "address": 48 + } + ], + "driver": "ath11k_pci", + "driver_module": "ath11k_pci", + "drivers": [ + "ath11k_pci" + ], + "driver_modules": [ + "ath11k_pci" + ] + }, + { + "index": 86, + "attached_to": 0, + "class_list": [ + "network_interface" + ], + "base_class": { + "hex": "0107", + "name": "Network Interface", + "value": 263 + }, + "sub_class": { + "hex": "0000", + "name": "Loopback", + "value": 0 + }, + "model": "Loopback network interface", + "sysfs_id": "/class/net/lo", + "unix_device_names": [ + "lo" + ] + } + ], + "pci": [ + { + "index": 20, + "attached_to": 61, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 198, + "number": 0 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "1502", + "value": 5378 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.2/0000:c6:00.1", + "sysfs_bus_id": "0000:c6:00.1", + "sysfs_iommu_group_id": 26, + "detail": { + "function": 1, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "amdxdna", + "driver_module": "amdxdna", + "drivers": [ + "amdxdna" + ], + "driver_modules": [ + "amdxdna" + ], + "module_alias": "pci:v00001022d00001502sv000017AAsd0000231Cbc11sc80i00" + }, + { + "index": 21, + "attached_to": 32, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 3, + "number": 0 + }, + "base_class": { + "hex": "00ff", + "name": "Unclassified device", + "value": 255 + }, + "vendor": { + "hex": "10ec", + "value": 4332 + }, + "sub_vendor": { + "hex": "10ec", + "value": 4332 + }, + "device": { + "hex": "5261", + "value": 21089 + }, + "sub_device": { + "hex": "5261", + "value": 21089 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Unclassified device", + "sysfs_id": "/devices/pci0000:00/0000:00:02.3/0000:03:00.0", + "sysfs_bus_id": "0000:03:00.0", + "sysfs_iommu_group_id": 16, + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "rtsx_pci", + "driver_module": "rtsx_pci", + "drivers": [ + "rtsx_pci" + ], + "driver_modules": [ + "rtsx_pci" + ], + "module_alias": "pci:v000010ECd00005261sv000010ECsd00005261bcFFsc00i00" + }, + { + "index": 36, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0008", + "name": "Generic system peripheral", + "value": 8 + }, + "sub_class": { + "hex": "0006", + "value": 6 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14e9", + "value": 5353 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD Generic system peripheral", + "sysfs_id": "/devices/pci0000:00/0000:00:00.2", + "sysfs_bus_id": "0000:00:00.2", + "detail": { + "function": 2, + "command": 1024, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E9sv000017AAsd0000231Cbc08sc06i00" + }, + { + "index": 37, + "attached_to": 38, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 199, + "number": 0 + }, + "base_class": { + "hex": "0013", + "value": 19 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14ec", + "value": 5356 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "unknown unknown", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.0", + "sysfs_bus_id": "0000:c7:00.0", + "sysfs_iommu_group_id": 27, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014ECsv000017AAsd0000231Cbc13sc00i00" + }, + { + "index": 45, + "attached_to": 61, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 198, + "number": 0 + }, + "base_class": { + "hex": "0013", + "value": 19 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "14ec", + "value": 5356 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "unknown unknown", + "sysfs_id": "/devices/pci0000:00/0000:00:08.2/0000:c6:00.0", + "sysfs_bus_id": "0000:c6:00.0", + "sysfs_iommu_group_id": 25, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014ECsv000017AAsd0000231Cbc13sc00i00" + }, + { + "index": 47, + "attached_to": 42, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 197, + "number": 0 + }, + "base_class": { + "hex": "0010", + "name": "Encryption controller", + "value": 16 + }, + "sub_class": { + "hex": "0080", + "name": "Encryption controller", + "value": 128 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15c7", + "value": 5575 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD Encryption controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.2", + "sysfs_bus_id": "0000:c5:00.2", + "sysfs_iommu_group_id": 20, + "detail": { + "function": 2, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "ccp", + "driver_module": "ccp", + "drivers": [ + "ccp" + ], + "driver_modules": [ + "ccp" + ], + "module_alias": "pci:v00001022d000015C7sv000017AAsd0000231Cbc10sc80i00" + }, + { + "index": 60, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0005", + "name": "SMBus", + "value": 5 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "790b", + "value": 30987 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "revision": { + "hex": "0071", + "value": 113 + }, + "model": "AMD SMBus", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0", + "sysfs_bus_id": "0000:00:14.0", + "sysfs_iommu_group_id": 12, + "detail": { + "function": 0, + "command": 1024, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "piix4_smbus", + "driver_module": "i2c_piix4", + "drivers": [ + "piix4_smbus" + ], + "driver_modules": [ + "i2c_piix4" + ], + "module_alias": "pci:v00001022d0000790Bsv000017AAsd0000231Cbc0Csc05i00" + }, + { + "index": 62, + "attached_to": 42, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 197, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0080", + "name": "Multimedia controller", + "value": 128 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15e2", + "value": 5602 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "revision": { + "hex": "0063", + "value": 99 + }, + "model": "AMD Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.5", + "sysfs_bus_id": "0000:c5:00.5", + "sysfs_iommu_group_id": 23, + "detail": { + "function": 5, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "snd_pci_ps", + "driver_module": "snd_pci_ps", + "drivers": [ + "snd_pci_ps" + ], + "driver_modules": [ + "snd_pci_ps" + ], + "module_alias": "pci:v00001022d000015E2sv000017AAsd0000231Cbc04sc80i00" + } + ], + "sound": [ + { + "index": 27, + "attached_to": 42, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 197, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0003", + "value": 3 + }, + "vendor": { + "hex": "1002", + "name": "ATI Technologies Inc", + "value": 4098 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "1640", + "value": 5696 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "ATI Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.1", + "sysfs_bus_id": "0000:c5:00.1", + "sysfs_iommu_group_id": 19, + "detail": { + "function": 1, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "snd_hda_intel", + "driver_module": "snd_hda_intel", + "drivers": [ + "snd_hda_intel" + ], + "driver_modules": [ + "snd_hda_intel" + ], + "module_alias": "pci:v00001002d00001640sv000017AAsd0000231Cbc04sc03i00" + }, + { + "index": 39, + "attached_to": 42, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 197, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0003", + "value": 3 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15e3", + "value": 5603 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.6", + "sysfs_bus_id": "0000:c5:00.6", + "sysfs_iommu_group_id": 24, + "detail": { + "function": 6, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "snd_hda_intel", + "driver_module": "snd_hda_intel", + "drivers": [ + "snd_hda_intel" + ], + "driver_modules": [ + "snd_hda_intel" + ], + "module_alias": "pci:v00001022d000015E3sv000017AAsd0000231Cbc04sc03i00" + } + ], + "storage_controller": [ + { + "index": 57, + "attached_to": 51, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 0 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0008", + "value": 8 + }, + "pci_interface": { + "hex": "0002", + "value": 2 + }, + "vendor": { + "hex": "1c5c", + "value": 7260 + }, + "sub_vendor": { + "hex": "1c5c", + "value": 7260 + }, + "device": { + "hex": "1d59", + "value": 7513 + }, + "sub_device": { + "hex": "1d59", + "value": 7513 + }, + "revision": { + "hex": "0003", + "value": 3 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.4/0000:04:00.0", + "sysfs_bus_id": "0000:04:00.0", + "sysfs_iommu_group_id": 17, + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 2 + }, + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ], + "module_alias": "pci:v00001C5Cd00001D59sv00001C5Csd00001D59bc01sc08i02" + } + ], + "system": { + "form_factor": "laptop" + }, + "usb": [ + { + "index": 66, + "attached_to": 69, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "1050", + "name": "Yubico", + "value": 4176 + }, + "device": { + "hex": "0407", + "name": "YubiKey OTP+FIDO+CCID", + "value": 1031 + }, + "revision": { + "hex": "0000", + "name": "5.43", + "value": 0 + }, + "model": "Yubico YubiKey OTP+FIDO+CCID", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.4/usb7/7-1/7-1:1.1", + "sysfs_bus_id": "7-1:1.1", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v1050p0407d0543dc00dsc00dp00ic03isc00ip00in01" + }, + { + "index": 70, + "attached_to": 68, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "174f", + "value": 5967 + }, + "device": { + "hex": "181f", + "name": "Integrated Camera", + "value": 6175 + }, + "revision": { + "hex": "0000", + "name": "10.17", + "value": 0 + }, + "serial": "200901010001", + "model": "Integrated Camera", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.4/usb3/3-1/3-1:1.2", + "sysfs_bus_id": "3-1:1.2", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00fe", + "name": "application", + "value": 254 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 2, + "interface_alternate_setting": 0, + "interface_association": { + "function_class": { + "hex": "00fe", + "name": "application", + "value": 254 + }, + "function_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "function_protocol": 0, + "interface_count": 1, + "first_interface": 2 + } + }, + "hotplug": "usb", + "module_alias": "usb:v174Fp181Fd1017dcEFdsc02dp01icFEisc01ip01in02" + }, + { + "index": 82, + "attached_to": 77, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "06cb", + "value": 1739 + }, + "device": { + "hex": "0126", + "value": 294 + }, + "serial": "632498427560", + "model": "Unclassified device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.3/usb1/1-5/1-5:1.0", + "sysfs_bus_id": "1-5:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ff", + "name": "vendor_spec", + "value": 255 + }, + "device_subclass": { + "hex": "0010", + "name": "audio_video", + "value": 16 + }, + "device_protocol": 255, + "interface_class": { + "hex": "00ff", + "name": "vendor_spec", + "value": 255 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "module_alias": "usb:v06CBp0126d0000dcFFdsc10dpFFicFFisc00ip00in00" + } + ], + "usb_controller": [ + { + "index": 24, + "attached_to": 42, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 197, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15b9", + "value": 5561 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.3", + "sysfs_bus_id": "0000:c5:00.3", + "sysfs_iommu_group_id": 21, + "detail": { + "function": 3, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00001022d000015B9sv000017AAsd0000231Cbc0Csc03i30" + }, + { + "index": 26, + "attached_to": 38, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 199, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0040", + "value": 64 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "1669", + "value": 5737 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.6", + "sysfs_bus_id": "0000:c7:00.6", + "sysfs_iommu_group_id": 31, + "detail": { + "function": 6, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 64 + }, + "driver": "thunderbolt", + "driver_module": "thunderbolt", + "drivers": [ + "thunderbolt" + ], + "driver_modules": [ + "thunderbolt" + ], + "module_alias": "pci:v00001022d00001669sv000017AAsd0000231Cbc0Csc03i40" + }, + { + "index": 31, + "attached_to": 38, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 199, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15c1", + "value": 5569 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.4", + "sysfs_bus_id": "0000:c7:00.4", + "sysfs_iommu_group_id": 29, + "detail": { + "function": 4, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00001022d000015C1sv000017AAsd0000231Cbc0Csc03i30" + }, + { + "index": 43, + "attached_to": 42, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 197, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15ba", + "value": 5562 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:c5:00.4", + "sysfs_bus_id": "0000:c5:00.4", + "sysfs_iommu_group_id": 22, + "detail": { + "function": 4, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00001022d000015BAsv000017AAsd0000231Cbc0Csc03i30" + }, + { + "index": 50, + "attached_to": 38, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 199, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0040", + "value": 64 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "1668", + "value": 5736 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.5", + "sysfs_bus_id": "0000:c7:00.5", + "sysfs_iommu_group_id": 30, + "detail": { + "function": 5, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 64 + }, + "driver": "thunderbolt", + "driver_module": "thunderbolt", + "drivers": [ + "thunderbolt" + ], + "driver_modules": [ + "thunderbolt" + ], + "module_alias": "pci:v00001022d00001668sv000017AAsd0000231Cbc0Csc03i40" + }, + { + "index": 55, + "attached_to": 38, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 199, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "15c0", + "value": 5568 + }, + "sub_device": { + "hex": "231c", + "value": 8988 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:c7:00.3", + "sysfs_bus_id": "0000:c7:00.3", + "sysfs_iommu_group_id": 28, + "detail": { + "function": 3, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00001022d000015C0sv000017AAsd0000231Cbc0Csc03i30" + } + ] + }, + "smbios": { + "bios": { + "handle": 15, + "vendor": "LENOVO", + "version": "N3VET62W (1.62 )", + "date": "11/13/2025", + "features": [ + "PCI supported", + "PnP supported", + "BIOS flashable", + "BIOS shadowing allowed", + "CD boot supported", + "Selectable boot supported", + "EDD spec supported", + "720kB Floppy supported", + "Print Screen supported", + "8042 Keyboard Services supported", + "Serial Services supported", + "Printer Services supported", + "CGA/Mono Video supported", + "ACPI supported", + "USB Legacy supported", + "BIOS Boot Spec supported" + ], + "start_address": "0xe0000", + "rom_size": 16777216 + }, + "board": { + "handle": 17, + "manufacturer": "LENOVO", + "product": "21FECTO1WW", + "version": "Not Defined", + "board_type": { + "hex": "000a", + "name": "Motherboard", + "value": 10 + }, + "features": [ + "Hosting Board", + "Replaceable" + ], + "location": "Not Available", + "chassis": 18 + }, + "cache": [ + { + "handle": 0, + "socket": "L1 - Cache", + "size_max": 512, + "size_current": 512, + "speed": 1, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0006", + "name": "Multi-bit", + "value": 6 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + }, + { + "handle": 1, + "socket": "L2 - Cache", + "size_max": 8192, + "size_current": 8192, + "speed": 1, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 1, + "ecc": { + "hex": "0006", + "name": "Multi-bit", + "value": 6 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + }, + { + "handle": 2, + "socket": "L3 - Cache", + "size_max": 16384, + "size_current": 16384, + "speed": 1, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 2, + "ecc": { + "hex": "0006", + "name": "Multi-bit", + "value": 6 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0008", + "name": "16-way Set-Associative", + "value": 8 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + } + ], + "chassis": [ + { + "handle": 18, + "manufacturer": "LENOVO", + "version": "None", + "chassis_type": { + "hex": "000a", + "name": "Notebook", + "value": 10 + }, + "lock_present": false, + "bootup_state": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "power_state": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "thermal_state": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "security_state": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "oem": "0x0" + } + ], + "config": { + "handle": 23, + "options": [ + "Unknown" + ] + }, + "group_associations": [ + { + "handle": 32, + "power": { + "hex": "0000", + "name": "Disabled", + "value": 0 + }, + "keyboard": { + "hex": "0002", + "name": "Not Implemented", + "value": 2 + }, + "admin": { + "hex": "0000", + "name": "Disabled", + "value": 0 + }, + "reset": { + "hex": "0002", + "name": "Not Implemented", + "value": 2 + } + } + ], + "language": [ + { + "handle": 24, + "languages": [ + "en-US", + "fr-FR", + "ja-JP", + "ko-KR", + "zh-CHT", + "zh-CHS" + ] + } + ], + "memory_array": [ + { + "handle": 5, + "location": { + "hex": "0003", + "name": "Motherboard", + "value": 3 + }, + "usage": { + "hex": "0003", + "name": "System memory", + "value": 3 + }, + "ecc": { + "hex": "0003", + "name": "None", + "value": 3 + }, + "max_size": "0x4000000", + "error_handle": 4, + "slots": 2 + } + ], + "memory_array_mapped_address": [ + { + "handle": 6, + "array_handle": 5, + "start_address": "0x0", + "end_address": "0x800000000", + "part_width": 2 + } + ], + "memory_device": [ + { + "handle": 8, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL A", + "manufacturer": "Hynix", + "part_number": "HMCG78AGBSA092N", + "array_handle": 5, + "error_handle": 7, + "width": 64, + "ecc_bits": 0, + "size": 16777216, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 5600 + }, + { + "handle": 11, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL B", + "manufacturer": "Hynix", + "part_number": "HMCG78AGBSA092N", + "array_handle": 5, + "error_handle": 10, + "width": 64, + "ecc_bits": 0, + "size": 16777216, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 5600 + } + ], + "memory_device_mapped_address": [ + { + "handle": 9, + "memory_device_handle": 8, + "array_map_handle": 6, + "start_address": "0x0", + "end_address": "0x400000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + }, + { + "handle": 12, + "memory_device_handle": 11, + "array_map_handle": 6, + "start_address": "0x400000000", + "end_address": "0x800000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + } + ], + "memory_error": [ + { + "handle": 4, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 7, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 10, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 34, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + } + ], + "pointing_device": [ + { + "handle": 35, + "mouse_type": { + "hex": "0005", + "name": "Track Point", + "value": 5 + }, + "interface": { + "hex": "0004", + "name": "PS/2", + "value": 4 + }, + "buttons": 3 + }, + { + "handle": 36, + "mouse_type": { + "hex": "0007", + "name": "Touch Pad", + "value": 7 + }, + "interface": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "buttons": 2 + } + ], + "port_connector": [ + { + "handle": 19, + "port_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "Not Available", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 1" + }, + { + "handle": 20, + "port_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "Not Available", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 2" + }, + { + "handle": 21, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "Not Available", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Headphone/Microphone Combo Jack1" + } + ], + "processor": [ + { + "handle": 3, + "socket": "FP8", + "socket_type": { + "hex": "0006", + "name": "None", + "value": 6 + }, + "socket_populated": true, + "manufacturer": "Advanced Micro Devices, Inc.", + "version": "AMD Ryzen 7 PRO 7840HS w/ Radeon 780M Graphics", + "part": "None", + "processor_type": { + "hex": "0003", + "name": "CPU", + "value": 3 + }, + "processor_family": { + "hex": "006b", + "name": "Other", + "value": 107 + }, + "processor_status": { + "hex": "0001", + "name": "Enabled", + "value": 1 + }, + "clock_ext": 100, + "clock_max": 5125, + "cache_handle_l1": 0, + "cache_handle_l2": 1, + "cache_handle_l3": 2 + } + ], + "slot": [ + { + "handle": 22, + "designation": "SimCard Slot", + "slot_type": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "bus_width": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "usage": { + "hex": "0003", + "name": "Available", + "value": 3 + }, + "length": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "id": 0 + } + ], + "system": { + "handle": 16, + "manufacturer": "LENOVO", + "product": "21FECTO1WW", + "version": "ThinkPad P16v Gen 1", + "wake_up": { + "hex": "0006", + "name": "Power Switch", + "value": 6 + } + } + } +} \ No newline at end of file diff --git a/nixos/hosts/rin/hardware.nix b/nixos/hosts/rin/hardware.nix new file mode 100644 index 00000000..bb308c49 --- /dev/null +++ b/nixos/hosts/rin/hardware.nix @@ -0,0 +1,12 @@ +/** + Configuration for rin-specific hardware. +*/ +{ inputs, ... }: { + imports = [ + inputs.nixos-hardware.nixosModules.common-pc-laptop + inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd + inputs.nixos-hardware.nixosModules.common-cpu-amd + inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate + inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower + ]; +} diff --git a/nixos-config/networking/work.nix b/nixos/hosts/rin/wifi.nix similarity index 96% rename from nixos-config/networking/work.nix rename to nixos/hosts/rin/wifi.nix index d86cf5d6..74581c89 100644 --- a/nixos-config/networking/work.nix +++ b/nixos/hosts/rin/wifi.nix @@ -1,4 +1,7 @@ -{ lib, ... }: { +/** + Wifi networks only used on rin. +*/ +{ systemd.services.NetworkManager-ensure-profiles.serviceConfig.LoadCredentialEncrypted = [ "work-wifi-passwords" ]; diff --git a/nixos/hosts/yui.nix b/nixos/hosts/yui.nix new file mode 100644 index 00000000..f4fb881c --- /dev/null +++ b/nixos/hosts/yui.nix @@ -0,0 +1,54 @@ +/** + Entrypoint for yui. +*/ +{ inputs, ... }: { + imports = [ + # flake-inputs.nixos-hardware.nixosModules.common-pc + # flake-inputs.nixos-hardware.nixosModules.common-pc-ssd + # flake-inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate + + ../. + ../games.nix + ../hardware/bluetooth.nix + ../hardware/graphics-tablet.nix + ../hardware/nvidia.nix + ../hardware/sound.nix + ../hardware/yubikey.nix + + ../networking/tailscale.nix + + ./yui/disko.nix + ./yui/hardware.nix + ./yui/programs.nix + ./yui/tailscale.nix + ]; + + # nixpkgs.config.allowUnfreePredicate = + # pkg: + # builtins.elem (pkgs.lib.getName pkg) [ + # "steam" + # "steam-run" + # # Required to get the steam controller to work (i.e., for hardware.steam-hardware) + # "steam-original" + # "steam-unwrapped" + # "nvidia-x11" + # ]; + + # easyNvidia = { + # vaapi = { + # enable = true; + # firefox.av1Support = true; + # }; + # }; + + networking.hostName = "yui"; + + home-manager.users.tlater = import "${inputs.self}/home-config/hosts/yui.nix"; + hardware.facter.reportPaht = ./yui/facter.json; + + # For random android-related things + programs.adb.enable = true; + users.users.tlater.extraGroups = [ "adbusers" ]; + + system.stateVersion = "20.09"; +} diff --git a/nixos-config/hosts/yui/disko.nix b/nixos/hosts/yui/disko.nix similarity index 95% rename from nixos-config/hosts/yui/disko.nix rename to nixos/hosts/yui/disko.nix index 9888391b..a0efdd5b 100644 --- a/nixos-config/hosts/yui/disko.nix +++ b/nixos/hosts/yui/disko.nix @@ -1,6 +1,9 @@ -{ flake-inputs, ... }: +/** + Disko configuration for yui. +*/ +{ inputs, ... }: let - inherit (flake-inputs.self.lib) mapSubvolumes; + inherit (inputs.self.lib) mapSubvolumes; in { disko.devices.disk = { diff --git a/nixos/hosts/yui/facter.json b/nixos/hosts/yui/facter.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/nixos/hosts/yui/facter.json @@ -0,0 +1 @@ +{} diff --git a/nixos/hosts/yui/hardware.nix b/nixos/hosts/yui/hardware.nix new file mode 100644 index 00000000..ed21ad60 --- /dev/null +++ b/nixos/hosts/yui/hardware.nix @@ -0,0 +1,23 @@ +/** + Additional hardware configuraiton for yui. + + TODO: Upstream this. +*/ +{ + # Used for IPMI (remote maintenance thing), but is unsupported + # by motherboard. + boot.blacklistedKernelModules = [ "sp5100_tco" ]; + + services.udev.rules."98-b550i-suspend.rules" = '' + # Fix broken suspend on b550i motherboard + # + # The rule is a bit overzealous, as it disables wake from *either* + # NVME drive, but I don't see why anyone would want to wake from + # NVME drives anyway. + # + # At least I *think* that's what the GPP bridge maps to. In + # either case, this fixes the immediate resume from suspend on + # my board. + ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1022", ATTR{device}=="0x1483", ATTR{power/wakeup}="disabled" + ''; +} diff --git a/nixos/hosts/yui/programs.nix b/nixos/hosts/yui/programs.nix new file mode 100644 index 00000000..24f4618e --- /dev/null +++ b/nixos/hosts/yui/programs.nix @@ -0,0 +1,30 @@ +/** + Yui-specific application configuration. +*/ +{ inputs, pkgs, ... }: +let + pkgsGames = inputs.nix-gaming.packages.${pkgs.stdenv.hostPlatform.system}; + pkgsSelf = inputs.self.packages.${pkgs.stdenv.hostPlatform.system}; + + osuLazer = pkgsGames.osu-lazer-bin.override { gmrun_enable = false; }; +in +{ + services.flatpak = { + update.auto.enable = false; + uninstallUnmanaged = false; + + packages = [ + "de.schmidhuberj.tubefeeder" + "com.github.rafostar.Clapper" + ]; + }; + + environment.systemPackages = [ + osuLazer + + pkgs.prismlauncher + + pkgsSelf.edopro + pkgsSelf.jazz-jackrabbit-2 + ]; +} diff --git a/nixos/maintenance.nix b/nixos/maintenance.nix new file mode 100644 index 00000000..4b4e406d --- /dev/null +++ b/nixos/maintenance.nix @@ -0,0 +1,12 @@ +/** + Maintenance related services. +*/ +{ + boot.tmp.cleanOnBoot = true; + + services = { + btrfs.autoScrub.enable = true; + fstrim.enable = true; + fwupd.enable = true; + }; +} diff --git a/nixos-config/networking/networkmanager-ensure-profiles.nix b/nixos/modules/networkmanager-ensure-profiles.nix similarity index 91% rename from nixos-config/networking/networkmanager-ensure-profiles.nix rename to nixos/modules/networkmanager-ensure-profiles.nix index 68f556cd..85400648 100644 --- a/nixos-config/networking/networkmanager-ensure-profiles.nix +++ b/nixos/modules/networkmanager-ensure-profiles.nix @@ -1,3 +1,7 @@ +/** + A systemd-creds compatible replacement for the upstream + NetworkManager-ensure-profiles service. +*/ { config, lib, @@ -14,7 +18,7 @@ let }) cfg.ensureProfiles.profiles; in { - systemd.services.NetworkManager-ensure-profiles = lib.mkIf (cfg.ensureProfiles.profiles != [ ]) { + systemd.services.NetworkManager-ensure-profiles = lib.mkIf (cfg.ensureProfiles.profiles != { }) { script = lib.mkForce ""; serviceConfig.EnvironmentFile = lib.mkForce [ ]; diff --git a/nixos-config/udev.nix b/nixos/modules/udev-rules.nix similarity index 84% rename from nixos-config/udev.nix rename to nixos/modules/udev-rules.nix index f4076a30..7978b71e 100644 --- a/nixos-config/udev.nix +++ b/nixos/modules/udev-rules.nix @@ -1,3 +1,7 @@ +/** + A module to allow defining udev rules in files instead of a big + dumping 99-local-rules.udev. +*/ { config, pkgs, diff --git a/nixos/networking.nix b/nixos/networking.nix new file mode 100644 index 00000000..c3390e1b --- /dev/null +++ b/nixos/networking.nix @@ -0,0 +1,27 @@ +/** + Configuration related to networking. +*/ +{ lib, ... }: { + imports = [ + ./networking/dns.nix + ./networking/vm-bridge.nix + ./networking/wifi.nix + ]; + + # TODO: Assert this is actually necessary + users.users.tlater.extraGroups = [ "networking" ]; + + services.unbound.enable = true; + + networking = { + networkmanager.enable = true; + nftables.enable = true; + }; + + # NTP + services.chrony.enable = true; + + # Timezone + time.timeZone = lib.mkOverride 99 "Asia/Hong_Kong"; + services.automatic-timezoned.enable = true; +} diff --git a/nixos-config/networking/default.nix b/nixos/networking/dns.nix similarity index 61% rename from nixos-config/networking/default.nix rename to nixos/networking/dns.nix index 6fe5f1b6..27df9475 100644 --- a/nixos-config/networking/default.nix +++ b/nixos/networking/dns.nix @@ -1,45 +1,15 @@ -{ lib, pkgs, ... }: { - imports = [ ./networkmanager-ensure-profiles.nix ]; +/** + DNS configuration. - users.users.tlater.extraGroups = [ "networking" ]; - - environment.systemPackages = [ pkgs.dig ]; - - networking = { - useDHCP = false; - nftables.enable = true; - networkmanager = { - enable = true; - - ensureProfiles = { - environmentFiles = [ "/run/credentials/NetworkManager-ensure-profiles.service/wifi-passwords" ]; - - profiles.maatjies = { - connection = { - id = "maatjies"; - type = "wifi"; - - autoconnect = true; - autoconnect-priority = 100; - }; - - wifi = { - mode = "infrastructure"; - ssid = "maatjies"; - }; - - wifi-security = { - key-mgmt = "wpa-psk"; - psk = "$PSK_MAATJIES"; - }; - }; - }; - }; - }; + This disables DNS configuration acquired through NetworkManager, and + replaces it with static DoT-compatible DNS servers, cached via + unbound. + TODO: Figure out how to work with captive portals and services on + intranets. +*/ +{ lib, ... }: { services.unbound = { - enable = true; - settings = { server = { # Sends less identifying data for queries @@ -96,7 +66,5 @@ after = lib.mkForce [ ]; before = [ "NetworkManager.service" ]; }; - - NetworkManager-ensure-profiles.serviceConfig.LoadCredentialEncrypted = [ "wifi-passwords" ]; }; } diff --git a/nixos/networking/tailscale.nix b/nixos/networking/tailscale.nix new file mode 100644 index 00000000..f6ff52eb --- /dev/null +++ b/nixos/networking/tailscale.nix @@ -0,0 +1,18 @@ +/** + Set up tailscale. +*/ +{ + networking.firewall.trustedInterfaces = [ "tailscale0" ]; + + services.tailscale = { + enable = true; + openFirewall = true; + useRoutingFeatures = "client"; + + extraUpFlags = [ "--login-server=https://tailscale.tlater.net" ]; + extraSetFlags = [ + "--operator=tlater" + "--webclient" + ]; + }; +} diff --git a/nixos-config/dev.nix b/nixos/networking/vm-bridge.nix similarity index 73% rename from nixos-config/dev.nix rename to nixos/networking/vm-bridge.nix index 495301f5..c2661c7a 100644 --- a/nixos-config/dev.nix +++ b/nixos/networking/vm-bridge.nix @@ -1,18 +1,24 @@ +/** + Module to help with developing in VMs. Sets up a bridge network and + domain name for a qemu VM. + + qemu networking configuration for this setup: + + - -device virtio-net,netdev=n1 + - -netdev bridge,id=n1,br=br0,helper=$(which qemu-bridge-helper) + + Also set up a static IP address of 192.168.9.2/24, with a gateway of + 192.168.9.1. +*/ { pkgs, ... }: let bridgeName = "br0"; in { - # Module to help with developing in VMs. - # Sets up a bridge network and domain name for a qemu VM. - # - # qemu networking configuration for this set up: - # - # - -device virtio-net,netdev=n1 - # - -netdev bridge,id=n1,br=br0,helper=$(which qemu-bridge-helper) - # - # Also set up a static IP address of 192.168.9.2/24, with a gateway - # of 192.168.9.1. + users = { + users.tlater.extraGroups = [ "qemu" ]; + groups.qemu = { }; + }; # Enable qemu-bridge-helper for setting up bridged networking in VMs security.wrappers.qemu-bridge-helper = { @@ -32,15 +38,6 @@ in ''; }; - users = { - users.tlater.extraGroups = [ "qemu" ]; - groups.qemu = { }; - }; - - # Set up firewall to forward requests to the internet from the - # bridge network - boot.kernel.sysctl."net.ipv4.ip_forward" = 1; - networking = { # Add bridge network to connect VMs to networkmanager.ensureProfiles.profiles.bridge = { @@ -56,6 +53,8 @@ in }; }; + # Set up firewall to forward requests to the internet from the + # bridge network nftables.tables.dev-nat = { family = "inet"; content = '' @@ -67,6 +66,9 @@ in }; }; + # More configuration to enable request forwarding from the VM + boot.kernel.sysctl."net.ipv4.ip_forward" = 1; + # Add local DNS zone for VMs services.unbound.settings.server = { local-zone = ''"dev.local." redirect''; diff --git a/nixos/networking/wifi.nix b/nixos/networking/wifi.nix new file mode 100644 index 00000000..f10feb43 --- /dev/null +++ b/nixos/networking/wifi.nix @@ -0,0 +1,54 @@ +/** + Configuration for wifi networks. +*/ +{ + networking.networkmanager.ensureProfiles = { + environmentFiles = [ "/run/credentials/NetworkManager-ensure-profiles.service/wifi-passwords" ]; + + profiles = { + maatjies = { + connection = { + id = "maatjies"; + type = "wifi"; + + autoconnect = true; + autoconnect-priority = 100; + }; + + wifi = { + mode = "infrastructure"; + ssid = "maatjies"; + }; + + wifi-security = { + key-mgmt = "wpa-psk"; + psk = "$PSK_MAATJIES"; + }; + }; + + lala = { + connection = { + id = "lala"; + type = "wifi"; + + autoconnect = true; + autoconnect-priority = 100; + }; + + wifi = { + mode = "infrastructure"; + ssid = "lala"; + }; + + wifi-security = { + key-mgmt = "sae"; + psk = "$PSK_LALA"; + }; + }; + }; + }; + + systemd.services.NetworkManager-ensure-profiles.serviceConfig.LoadCredentialEncrypted = [ + "wifi-passwords" + ]; +} diff --git a/nixos/programs.nix b/nixos/programs.nix new file mode 100644 index 00000000..c01673b1 --- /dev/null +++ b/nixos/programs.nix @@ -0,0 +1,15 @@ +/** + Configuration for system-level software that is called directly, + rather than just used as a service. +*/ +{ pkgs, ... }: { + imports = [ ./programs/nix.nix ]; + + documentation.man.cache.enable = true; + + users.defaultUserShell = pkgs.dash; + + services.udisks2.enable = true; + + programs.ssh.enableAskPassword = false; +} diff --git a/nixos/programs/nix.nix b/nixos/programs/nix.nix new file mode 100644 index 00000000..3ac46aeb --- /dev/null +++ b/nixos/programs/nix.nix @@ -0,0 +1,111 @@ +/** + Configuration related to nix. +*/ +{ + config, + lib, + pkgs, + ... +}: +{ + nix = { + package = pkgs.lixPackageSets.stable.lix; + + settings = { + auto-optimise-store = true; + experimental-features = [ + "nix-command" + "flakes" + ]; + + secret-key-files = [ "/run/credentials/nix-daemon.service/nix-signing-key" ]; + }; + + gc = { + automatic = true; + dates = "Thu"; + }; + }; + + # Regularly clean up gcroots + services.angrr = { + enable = true; + + settings = { + temporary-root-policies = { + direnv = { + path-regex = "/\\.direnv/"; + period = "14d"; + }; + + result = { + path-regex = "/result[^/]*$"; + period = "3d"; + }; + }; + + profile-policies = { + system = { + profile-paths = [ "/nix/var/nix/profiles/system" ]; + keep-since = "14d"; + keep-latest-n = 5; + keep-booted-system = true; + keep-current-system = true; + }; + + user = { + profile-paths = [ + "~/.local/state/nix/profiles/profile" + "/nix/var/nix/profiles/per-user/root/profile" + ]; + keep-since = "1d"; + keep-latest-n = 1; + }; + }; + }; + }; + + systemd.services = { + nix-daemon = { + after = [ "generate-nix-signing-key.service" ]; + requires = [ "generate-nix-signing-key.service" ]; + serviceConfig.LoadCredentialEncrypted = [ "nix-signing-key" ]; + }; + + generate-nix-signing-key = { + after = [ "systemd-random-seed.service" ]; + + serviceConfig = { + Type = "oneshot"; + RuntimeDirectory = "generate-nix-signing-key"; + + ExecStart = + pkgs.writers.writeNu "generate-nix-signing-key" + { + makeWrapperArgs = [ + "--prefix" + "PATH" + ":" + (lib.makeBinPath [ + config.nix.package + config.systemd.package + ]) + ]; + } + '' + cd $env.RUNTIME_DIRECTORY + + if not ('/etc/credstore.encrypted/nix-signing-key' | path exists) { + nix-store --generate-binary-cache-key (uname).nodename key.private key.public + systemd-creds encrypt key.private /etc/credstore.encrypted/nix-signing-key + mv key.public /etc/credstore/nix-signing-cert + + print 'done' + } else { + print 'nothing to be done' + } + ''; + }; + }; + }; +} diff --git a/nixos/security.nix b/nixos/security.nix new file mode 100644 index 00000000..8a502d52 --- /dev/null +++ b/nixos/security.nix @@ -0,0 +1,33 @@ +/** + Configuration for security-related services. +*/ +{ + users.users.tlater = { + isNormalUser = true; + extraGroups = [ + "wheel" + "video" + "unbound" + ]; + }; + + security = { + sudo-rs.enable = true; + rtkit.enable = true; + pam.enableUMask = true; + }; + + systemd.tmpfiles.settings."10-credstore" = { + "/etc/credstore".d = { + user = "root"; + group = "root"; + mode = "0700"; + }; + + "/etc/credstore.encrypted".d = { + user = "root"; + group = "root"; + mode = "0700"; + }; + }; +} diff --git a/pkgs/packages/catppuccin-themes/package.nix b/packages/catppuccin-themes/package.nix similarity index 95% rename from pkgs/packages/catppuccin-themes/package.nix rename to packages/catppuccin-themes/package.nix index e4e62c4d..d1d3d188 100644 --- a/pkgs/packages/catppuccin-themes/package.nix +++ b/packages/catppuccin-themes/package.nix @@ -2,7 +2,7 @@ stdenv, fetchFromGitHub, - localLib, + self', ast-grep, nix-prefetch-github, }: @@ -61,7 +61,7 @@ stdenv.mkDerivation { cp -r catppuccin-i3/themes $out/share/i3 ''; - passthru.updateScript = localLib.writeUpdateScript { + passthru.updateScript = self'.builders.writeUpdateScript { packageToUpdate = "catppuccin-themes"; utils = [ diff --git a/pkgs/packages/catppuccin-themes/update.nu b/packages/catppuccin-themes/update.nu similarity index 100% rename from pkgs/packages/catppuccin-themes/update.nu rename to packages/catppuccin-themes/update.nu diff --git a/pkgs/packages/delta-icons.nix b/packages/delta-icons.nix similarity index 80% rename from pkgs/packages/delta-icons.nix rename to packages/delta-icons.nix index cce4af33..414c426d 100644 --- a/pkgs/packages/delta-icons.nix +++ b/packages/delta-icons.nix @@ -1,7 +1,7 @@ { stdenvNoCC, fetchFromGitHub, - localLib, + self', }: stdenvNoCC.mkDerivation (drv: { pname = "delta-icons"; @@ -18,5 +18,5 @@ stdenvNoCC.mkDerivation (drv: { install -D resources/vectors/figma/yu_gi_oh.svg $out/share/icons/delta-icons/scalable/apps/EDOPro.svg ''; - passthru.updateScript = localLib.nixUpdateScript { packageToUpdate = "delta-icons"; }; + passthru.updateScript = self'.builders.nixUpdateScript { packageToUpdate = "delta-icons"; }; }) diff --git a/pkgs/packages/desktop-logic.nix b/packages/desktop-logic.nix similarity index 79% rename from pkgs/packages/desktop-logic.nix rename to packages/desktop-logic.nix index 09a2fe68..f5909984 100644 --- a/pkgs/packages/desktop-logic.nix +++ b/packages/desktop-logic.nix @@ -2,11 +2,11 @@ lib, rustPlatform, - localLib, + self', cargo, }: let - src = ../../home-config/dotfiles/eww/desktop-logic; + src = ../home-config/dotfiles/eww/desktop-logic; cargoToml = lib.importTOML (src + /Cargo.toml); in rustPlatform.buildRustPackage { @@ -16,7 +16,7 @@ rustPlatform.buildRustPackage { cargoLock.lockFile = src + /Cargo.lock; meta.mainProgram = "desktop-logic"; - passthru.updateScript = localLib.writeUpdateScript { + passthru.updateScript = self'.builders.writeUpdateScript { packageToUpdate = "desktop-logic"; utils = [ cargo ]; diff --git a/pkgs/packages/edopro/edopro-unwrapped.nix b/packages/edopro/edopro-unwrapped.nix similarity index 100% rename from pkgs/packages/edopro/edopro-unwrapped.nix rename to packages/edopro/edopro-unwrapped.nix diff --git a/pkgs/packages/edopro/edopro-wrapper.nix b/packages/edopro/edopro-wrapper.nix similarity index 100% rename from pkgs/packages/edopro/edopro-wrapper.nix rename to packages/edopro/edopro-wrapper.nix diff --git a/pkgs/packages/edopro/edopro-wrapper.nu b/packages/edopro/edopro-wrapper.nu similarity index 100% rename from pkgs/packages/edopro/edopro-wrapper.nu rename to packages/edopro/edopro-wrapper.nu diff --git a/pkgs/packages/edopro/irrlicht.nix b/packages/edopro/irrlicht.nix similarity index 100% rename from pkgs/packages/edopro/irrlicht.nix rename to packages/edopro/irrlicht.nix diff --git a/pkgs/packages/edopro/ocgcore.nix b/packages/edopro/ocgcore.nix similarity index 100% rename from pkgs/packages/edopro/ocgcore.nix rename to packages/edopro/ocgcore.nix diff --git a/pkgs/packages/edopro/package.nix b/packages/edopro/package.nix similarity index 96% rename from pkgs/packages/edopro/package.nix rename to packages/edopro/package.nix index a781ff80..0d8d6643 100644 --- a/pkgs/packages/edopro/package.nix +++ b/packages/edopro/package.nix @@ -10,7 +10,7 @@ lua5_4, # Update script - localLib, + self', ast-grep, nix-update, }: @@ -55,7 +55,7 @@ symlinkJoin { passthru = { inherit scope; - updateScript = localLib.writeUpdateScript { + updateScript = self'.builders.writeUpdateScript { packageToUpdate = "edopro"; utils = [ ast-grep diff --git a/pkgs/packages/edopro/update.nu b/packages/edopro/update.nu similarity index 100% rename from pkgs/packages/edopro/update.nu rename to packages/edopro/update.nu diff --git a/pkgs/packages/emacs/eglot-x.nix b/packages/emacs/eglot-x.nix similarity index 100% rename from pkgs/packages/emacs/eglot-x.nix rename to packages/emacs/eglot-x.nix diff --git a/pkgs/packages/emacs/package.nix b/packages/emacs/package.nix similarity index 91% rename from pkgs/packages/emacs/package.nix rename to packages/emacs/package.nix index 0cf5e525..6f44b518 100644 --- a/pkgs/packages/emacs/package.nix +++ b/packages/emacs/package.nix @@ -1,23 +1,21 @@ { stdenv, pkgs, - flake-inputs, + inputs, lib, emacsMacport, emacs30-pgtk, symlinkJoin, - localLib, + self', ast-grep, nix-prefetch-github, }: let package = if stdenv.hostPlatform.isDarwin then emacsMacport else emacs30-pgtk; - emacsDotfiles = "${flake-inputs.self}/home-config/dotfiles/emacs.d"; + emacsDotfiles = ../../home-config/dotfiles/emacs.d; - emacsWithPackagesFromUsePackage = import "${flake-inputs.emacs-overlay}/elisp.nix" { - inherit pkgs; - }; + emacsWithPackagesFromUsePackage = import "${inputs.emacs-overlay}/elisp.nix" { inherit pkgs; }; # Compute the list of leaf-d packages. emacsConfigs = [ @@ -100,7 +98,7 @@ symlinkJoin { passthru = { inherit emacs; - updateScript = localLib.writeUpdateScript { + updateScript = self'.builders.writeUpdateScript { packageToUpdate = "emacs-packages"; utils = [ diff --git a/pkgs/packages/emacs/update-emacs-packages.nu b/packages/emacs/update-emacs-packages.nu similarity index 100% rename from pkgs/packages/emacs/update-emacs-packages.nu rename to packages/emacs/update-emacs-packages.nu diff --git a/pkgs/packages/firefox-ui-fix.nix b/packages/firefox-ui-fix.nix similarity index 78% rename from pkgs/packages/firefox-ui-fix.nix rename to packages/firefox-ui-fix.nix index ac6b78fc..68579957 100644 --- a/pkgs/packages/firefox-ui-fix.nix +++ b/packages/firefox-ui-fix.nix @@ -2,7 +2,7 @@ stdenvNoCC, fetchFromGitHub, - localLib, + self', }: stdenvNoCC.mkDerivation (drv: { pname = "firefox-ui-fix"; @@ -20,5 +20,5 @@ stdenvNoCC.mkDerivation (drv: { cp -r user.js icons/ css/ $out/ ''; - passthru.updateScript = localLib.nixUpdateScript { packageToUpdate = "firefox-ui-fix"; }; + passthru.updateScript = self'.builders.nixUpdateScript { packageToUpdate = "firefox-ui-fix"; }; }) diff --git a/pkgs/packages/jazz-jackrabbit-2/package.nix b/packages/jazz-jackrabbit-2/package.nix similarity index 100% rename from pkgs/packages/jazz-jackrabbit-2/package.nix rename to packages/jazz-jackrabbit-2/package.nix diff --git a/pkgs/packages/nextcloudcmd.nix b/packages/nextcloudcmd.nix similarity index 100% rename from pkgs/packages/nextcloudcmd.nix rename to packages/nextcloudcmd.nix diff --git a/pkgs/packages/nvidia/package.nix b/packages/nvidia/package.nix similarity index 78% rename from pkgs/packages/nvidia/package.nix rename to packages/nvidia/package.nix index 4fa70f75..e7a6b634 100644 --- a/pkgs/packages/nvidia/package.nix +++ b/packages/nvidia/package.nix @@ -1,13 +1,13 @@ { - flake-inputs, + inputs, - localLib, + self', ast-grep, nushellPlugins, nix-prefetch-github, }: let - inherit (flake-inputs.self.nixosConfigurations.yui.config.boot) kernelPackages; + inherit (inputs.self.nixosConfigurations.yui.config.boot) kernelPackages; in (kernelPackages.nvidiaPackages.mkDriver { version = "595.80"; @@ -19,7 +19,7 @@ in }).overrideAttrs (pkg: { passthru = pkg.passthru // { - updateScript = localLib.writeUpdateScript { + updateScript = self'.builders.writeUpdateScript { packageToUpdate = "nvidia"; utils = [ diff --git a/pkgs/packages/nvidia/update.nu b/packages/nvidia/update.nu similarity index 100% rename from pkgs/packages/nvidia/update.nu rename to packages/nvidia/update.nu diff --git a/pkgs/packages/phosphor-icons.nix b/packages/phosphor-icons.nix similarity index 82% rename from pkgs/packages/phosphor-icons.nix rename to packages/phosphor-icons.nix index ac8c428c..18ea70d5 100644 --- a/pkgs/packages/phosphor-icons.nix +++ b/packages/phosphor-icons.nix @@ -1,7 +1,7 @@ { stdenvNoCC, fetchFromGitHub, - localLib, + self', }: stdenvNoCC.mkDerivation (drv: { pname = "phosphor-icons"; @@ -24,5 +24,5 @@ stdenvNoCC.mkDerivation (drv: { done ''; - passthru.updateScript = localLib.nixUpdateScript { packageToUpdate = "phosphor-icons"; }; + passthru.updateScript = self'.builders.nixUpdateScript { packageToUpdate = "phosphor-icons"; }; }) diff --git a/pkgs/packages/topiary/package.nix b/packages/topiary/package.nix similarity index 87% rename from pkgs/packages/topiary/package.nix rename to packages/topiary/package.nix index 781755f8..48e569d4 100644 --- a/pkgs/packages/topiary/package.nix +++ b/packages/topiary/package.nix @@ -1,6 +1,4 @@ { - stdenv, - flake-inputs, lib, callPackage, writeTextFile, @@ -9,16 +7,14 @@ topiary, - localLib, + self', + inputs', nix-update, ast-grep, nix-prefetch-github, }: let - inherit (flake-inputs.tree-sitter-sieve.packages.${stdenv.hostPlatform.system}) - tree-sitter-sieve - topiary-sieve - ; + inherit (inputs'.tree-sitter-sieve.packages) tree-sitter-sieve topiary-sieve; grammars = { inherit tree-sitter-sieve; @@ -71,7 +67,7 @@ symlinkJoin { passthru = { inherit grammars languages; - updateScript = localLib.writeUpdateScript { + updateScript = self'.builders.writeUpdateScript { packageToUpdate = "topiary"; utils = [ ast-grep diff --git a/pkgs/packages/topiary/topiary-nushell.nix b/packages/topiary/topiary-nushell.nix similarity index 100% rename from pkgs/packages/topiary/topiary-nushell.nix rename to packages/topiary/topiary-nushell.nix diff --git a/pkgs/packages/topiary/tree-sitter-nu.nix b/packages/topiary/tree-sitter-nu.nix similarity index 100% rename from pkgs/packages/topiary/tree-sitter-nu.nix rename to packages/topiary/tree-sitter-nu.nix diff --git a/pkgs/packages/topiary/update.nu b/packages/topiary/update.nu similarity index 100% rename from pkgs/packages/topiary/update.nu rename to packages/topiary/update.nu diff --git a/pkgs/default.nix b/pkgs/default.nix deleted file mode 100644 index 4c8d67d9..00000000 --- a/pkgs/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, flake-inputs }: -let - localLib = import ./lib.nix { inherit pkgs flake-inputs; }; -in -pkgs.lib.packagesFromDirectoryRecursive { - callPackage = pkgs.lib.callPackageWith (pkgs // { inherit flake-inputs localLib; }); - directory = ./packages; -} diff --git a/pkgs/lib.nix b/pkgs/lib.nix deleted file mode 100644 index af60f246..00000000 --- a/pkgs/lib.nix +++ /dev/null @@ -1,40 +0,0 @@ -{ pkgs, flake-inputs }: -let - inherit (pkgs) lib; - inherit (flake-inputs.self.pkgs-lib.${pkgs.stdenv.hostPlatform.system}) writeNuBinWith; -in -{ - nixUpdateScript = - { - packageToUpdate, - version ? null, - }: - writeNuBinWith - { - packages = [ - pkgs.nix-update - pkgs.nixfmt - - ]; - } - "update-${packageToUpdate}" - '' - (nix-update - --flake - --format - ${lib.concatStringsSep " " (lib.optional (version != null) "--version=${version}")} - ${packageToUpdate}) - ''; - - writeUpdateScript = - { - script, - packageToUpdate, - utils ? [ ], - nushellPlugins ? [ ], - }: - writeNuBinWith { - packages = utils; - plugins = nushellPlugins; - } "update-${packageToUpdate}" script; -} From 33fb2214052e06ff4fe13822da0ea6e8c0eb72bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Tue, 30 Jun 2026 17:11:26 +0800 Subject: [PATCH 10/26] WIP: No idea, lots of stuff --- README.md | 2 +- dev/devshells.nix | 89 ++- dev/formatting.nix | 24 + dev/pre-commit-hooks.nix | 80 ++ flake.lock | 21 + flake.nix | 7 + .../graphical/librewolf/default.nix | 3 +- .../extension-settings/canvasblocker.json | 144 ++-- .../extension-settings/libredirect.json | 293 ++----- home-config/dotfiles/eww/eww.scss | 6 +- home-config/personal/keepassxc.nix | 5 +- home-config/personal/ssh-servers.nix | 3 +- home-config/services/ncmpcpp.nix | 3 +- home-config/shell/default.nix | 3 +- home-config/shell/nushell.nix | 3 +- nixos-modules/nvidia/vaapi.nix | 11 +- nixos/desktop/greeter/eww-config/eww.scss | 12 +- nixos/hosts/rin/facter.json | 752 ++++-------------- 18 files changed, 523 insertions(+), 938 deletions(-) create mode 100644 dev/formatting.nix create mode 100644 dev/pre-commit-hooks.nix diff --git a/README.md b/README.md index 57093b8a..2847109b 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,6 @@ My NixOS-managed dotfiles repository. ## Required systemd credentials | ID | Purpose | -|----------------|---------------------------------------------------------------------| +| -------------- | ------------------------------------------------------------------- | | wifi-passwords | Passwords for wifi networks all computers should be able to access. | | | | diff --git a/dev/devshells.nix b/dev/devshells.nix index 5a045165..d7be95f1 100644 --- a/dev/devshells.nix +++ b/dev/devshells.nix @@ -4,47 +4,64 @@ { inputs, ... }: { imports = [ inputs.devshell.flakeModule ]; - perSystem = { pkgs, self', ... }: { - devshells = { - /** - Default devshell containing all utilities for using this - repository. - */ - default = { - name = "tlater’s dotfiles"; + perSystem = + { + config, + pkgs, + self', + ... + }: + { + devshells = { + /** + Default devshell containing all utilities for using this + repository. + */ + default = { + name = "tlater’s dotfiles"; - packages = [ pkgs.nh ]; + packages = [ + config.treefmt.build.wrapper + pkgs.nh + ]; - commands = [ - { - name = "update-packages"; - category = "[[maintenance commands]]"; - help = "update this flakes' packages"; - package = self'.builders.writeNuBinWith { packages = [ pkgs.git ]; } "update-packages" ./update.nu; - } - ]; + commands = [ + { + name = "update-packages"; + category = "[[maintenance commands]]"; + help = "update this flakes' packages"; + package = self'.builders.writeNuBinWith { packages = [ pkgs.git ]; } "update-packages" ./update.nu; + } - env = [ - { - name = "NH_NO_CHECKS"; - value = true; - } + { + name = "prek"; + category = "[[check commands]]"; + help = "Run and manage pre-commit hooks"; + package = config.prek.package.wrapper; + } + ]; - { - name = "NH_FLAKE"; - value = "/home/tlater/.local/src/dotfiles"; - } - ]; - }; + env = [ + { + name = "NH_NO_CHECKS"; + value = true; + } + + { + name = "NH_FLAKE"; + value = "/home/tlater/.local/src/dotfiles"; + } + ]; + }; - /** - Rust devshell with the Rust toolchain required to develop on - Rust projects in the repository. - */ - rust = { extraModulesPath, ... }: { - imports = [ "${extraModulesPath}/language/rust.nix" ]; - name = "tlater's dotfiles - rust edition"; + /** + Rust devshell with the Rust toolchain required to develop on + Rust projects in the repository. + */ + rust = { extraModulesPath, ... }: { + imports = [ "${extraModulesPath}/language/rust.nix" ]; + name = "tlater's dotfiles - rust edition"; + }; }; }; - }; } diff --git a/dev/formatting.nix b/dev/formatting.nix new file mode 100644 index 00000000..93712c0a --- /dev/null +++ b/dev/formatting.nix @@ -0,0 +1,24 @@ +{ inputs, ... }: { + imports = [ inputs.treefmt.flakeModule ]; + + perSystem.treefmt = { + # `prek` is in charge of running these kinds of checks, we don't + # want to run formatters with `nix flake check`. + flakeCheck = false; + + settings = { + allowMissingFormatter = false; + walk = "git"; + + formatter.nixfmt.options = [ "--strict" ]; + }; + + programs = { + nixfmt.enable = true; + prettier.enable = true; + shfmt.enable = true; + }; + + # settings.formatter.prettier.excludes = [ "*.md" ]; + }; +} diff --git a/dev/pre-commit-hooks.nix b/dev/pre-commit-hooks.nix new file mode 100644 index 00000000..c27a0709 --- /dev/null +++ b/dev/pre-commit-hooks.nix @@ -0,0 +1,80 @@ +{ + flake-parts-lib, + inputs, + lib, + ... +}: +{ + options.perSystem = flake-parts-lib.mkPerSystemOption ( + { config, pkgs, ... }: + let + settingsFormat = pkgs.formats.toml { }; + in + { + options.prek = { + package = lib.mkOption { + type = inputs.wrappers.lib.types.subWrapperModule { + imports = [ inputs.wrappers.lib.modules.default ]; + + pkgs = lib.mkDefault pkgs; + package = lib.mkDefault pkgs.prek; + + flags."--config" = settingsFormat.generate "prek.toml" config.prek.settings; + }; + }; + + settings = lib.mkOption { inherit (settingsFormat) type; }; + }; + } + ); + + config.perSystem = { config, pkgs, ... }: { + prek = { + package.runtimePkgs = [ config.treefmt.build.wrapper ]; + + settings.repos = [ + { + repo = "builtin"; + + hooks = [ + { id = "check-added-large-files"; } + { id = "check-case-conflict"; } + { id = "check-executables-have-shebangs"; } + { id = "check-json"; } + { id = "check-json5"; } + { id = "check-merge-conflict"; } + { id = "check-shebang-scripts-are-executable"; } + { id = "check-symlinks"; } + { id = "check-toml"; } + { id = "check-vcs-permalinks"; } + { id = "check-xml"; } + { id = "check-yaml"; } + { id = "destroyed-symlinks"; } + { id = "detect-private-key"; } + { id = "end-of-file-fixer"; } + { + id = "mixed-line-ending"; + args = [ "--fix=lf" ]; + } + { id = "trailing-whitespace"; } + ]; + } + + { + repo = "local"; + + hooks = [ + { + id = "treefmt"; + name = "treefmt"; + description = "Format *all* files"; + + entry = "treefmt"; + language = "system"; + } + ]; + } + ]; + }; + }; +} diff --git a/flake.lock b/flake.lock index b455cf61..355ec12f 100644 --- a/flake.lock +++ b/flake.lock @@ -406,6 +406,7 @@ "nix-webapps": "nix-webapps", "nixpkgs": "nixpkgs", "tree-sitter-sieve": "tree-sitter-sieve", + "treefmt": "treefmt", "wrappers": "wrappers" } }, @@ -446,6 +447,26 @@ "type": "github" } }, + "treefmt": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1780220602, + "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "db947814a175b7ca6ded66e21383d938df01c227", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "wrappers": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index a33a3a81..fb6e7b3a 100644 --- a/flake.nix +++ b/flake.nix @@ -55,6 +55,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + treefmt = { + url = "github:numtide/treefmt-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-ast-lint = { url = "https://codeberg.org/tlater/nix-ast-lint/archive/main.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; @@ -85,6 +90,8 @@ flake-parts.lib.mkFlake { inherit inputs; } { imports = [ ./dev/devshells.nix + ./dev/formatting.nix + ./dev/pre-commit-hooks.nix ./lib/builders.nix ]; diff --git a/home-config/applications/graphical/librewolf/default.nix b/home-config/applications/graphical/librewolf/default.nix index c8a1ac50..0762906b 100644 --- a/home-config/applications/graphical/librewolf/default.nix +++ b/home-config/applications/graphical/librewolf/default.nix @@ -1,5 +1,4 @@ -{ config, lib, ... }: -{ +{ config, lib, ... }: { imports = [ ./extensions.nix ./lepton.nix diff --git a/home-config/applications/graphical/librewolf/extension-settings/canvasblocker.json b/home-config/applications/graphical/librewolf/extension-settings/canvasblocker.json index d92a35c2..4f3e8d6a 100644 --- a/home-config/applications/graphical/librewolf/extension-settings/canvasblocker.json +++ b/home-config/applications/graphical/librewolf/extension-settings/canvasblocker.json @@ -1,74 +1,74 @@ { - "logLevel": 1, - "urlSettings": [], - "hiddenSettings": {}, - "expandStatus": {}, - "displayHiddenSettings": false, - "whiteList": "", - "sessionWhiteList": "", - "blackList": "", - "blockMode": "fake", - "protectedCanvasPart": "readout", - "minFakeSize": 1, - "maxFakeSize": 0, - "rng": "nonPersistent", - "protectedAPIFeatures": {}, - "useCanvasCache": true, - "ignoreFrequentColors": 0, - "minColors": 0, - "fakeAlphaChannel": false, - "webGLVendor": "", - "webGLRenderer": "", - "webGLUnmaskedVendor": "", - "webGLUnmaskedRenderer": "", - "persistentRndStorage": "", - "persistentIncognitoRndStorage": "", - "storePersistentRnd": false, - "persistentRndClearIntervalValue": 0, - "persistentRndClearIntervalUnit": "days", - "lastPersistentRndClearing": 1755097795463, - "sharePersistentRndBetweenDomains": false, - "askOnlyOnce": "individual", - "askDenyMode": "block", - "showCanvasWhileAsking": true, - "showNotifications": true, - "highlightPageAction": "none", - "highlightBrowserAction": "color", - "displayBadge": true, - "storeNotificationData": false, - "storeImageForInspection": false, - "ignoreList": "", - "ignoredAPIs": {}, - "showCallingFile": false, - "showCompleteCallingStack": false, - "enableStackList": false, - "stackList": "", - "protectAudio": true, - "audioFakeRate": "100", - "audioNoiseLevel": "minimal", - "useAudioCache": true, - "audioUseFixedIndices": true, - "audioFixedIndices": "28", - "historyLengthThreshold": 2, - "protectWindow": false, - "allowWindowNameInFrames": true, - "protectDOMRect": true, - "domRectIntegerFactor": 4, - "protectSVG": true, - "protectTextMetrics": true, - "blockDataURLs": true, - "protectNavigator": false, - "navigatorDetails": {}, - "protectScreen": true, - "screenSize": "", - "fakeMinimalScreenSize": true, - "displayAdvancedSettings": false, - "displayDescriptions": false, - "theme": "auto", - "showPresetsOnInstallation": true, - "dontShowOptionsOnUpdate": false, - "disruptSessionOnUpdate": false, - "updatePending": true, - "isStillDefault": false, - "storageVersion": 1 + "logLevel": 1, + "urlSettings": [], + "hiddenSettings": {}, + "expandStatus": {}, + "displayHiddenSettings": false, + "whiteList": "", + "sessionWhiteList": "", + "blackList": "", + "blockMode": "fake", + "protectedCanvasPart": "readout", + "minFakeSize": 1, + "maxFakeSize": 0, + "rng": "nonPersistent", + "protectedAPIFeatures": {}, + "useCanvasCache": true, + "ignoreFrequentColors": 0, + "minColors": 0, + "fakeAlphaChannel": false, + "webGLVendor": "", + "webGLRenderer": "", + "webGLUnmaskedVendor": "", + "webGLUnmaskedRenderer": "", + "persistentRndStorage": "", + "persistentIncognitoRndStorage": "", + "storePersistentRnd": false, + "persistentRndClearIntervalValue": 0, + "persistentRndClearIntervalUnit": "days", + "lastPersistentRndClearing": 1755097795463, + "sharePersistentRndBetweenDomains": false, + "askOnlyOnce": "individual", + "askDenyMode": "block", + "showCanvasWhileAsking": true, + "showNotifications": true, + "highlightPageAction": "none", + "highlightBrowserAction": "color", + "displayBadge": true, + "storeNotificationData": false, + "storeImageForInspection": false, + "ignoreList": "", + "ignoredAPIs": {}, + "showCallingFile": false, + "showCompleteCallingStack": false, + "enableStackList": false, + "stackList": "", + "protectAudio": true, + "audioFakeRate": "100", + "audioNoiseLevel": "minimal", + "useAudioCache": true, + "audioUseFixedIndices": true, + "audioFixedIndices": "28", + "historyLengthThreshold": 2, + "protectWindow": false, + "allowWindowNameInFrames": true, + "protectDOMRect": true, + "domRectIntegerFactor": 4, + "protectSVG": true, + "protectTextMetrics": true, + "blockDataURLs": true, + "protectNavigator": false, + "navigatorDetails": {}, + "protectScreen": true, + "screenSize": "", + "fakeMinimalScreenSize": true, + "displayAdvancedSettings": false, + "displayDescriptions": false, + "theme": "auto", + "showPresetsOnInstallation": true, + "dontShowOptionsOnUpdate": false, + "disruptSessionOnUpdate": false, + "updatePending": true, + "isStillDefault": false, + "storageVersion": 1 } diff --git a/home-config/applications/graphical/librewolf/extension-settings/libredirect.json b/home-config/applications/graphical/librewolf/extension-settings/libredirect.json index 20083b86..6aa554f8 100644 --- a/home-config/applications/graphical/librewolf/extension-settings/libredirect.json +++ b/home-config/applications/graphical/librewolf/extension-settings/libredirect.json @@ -8,33 +8,15 @@ "redirectOnlyInIncognito": false }, "invidious": [], - "materialious": [ - "https://app.materialio.us" - ], - "piped": [ - "https://pipedapi-libre.kavin.rocks" - ], - "pipedMaterial": [ - "https://piped-material.xn--17b.net" - ], - "poketube": [ - "https://poketube.fun" - ], - "cloudtube": [ - "https://tube.cadence.moe" - ], - "lightTube": [ - "https://tube.kuylar.dev" - ], - "tuboYoutube": [ - "https://tubo.media" - ], - "viewtube": [ - "https://viewtube.io" - ], - "ytify": [ - "https://ytify.pp.ua" - ], + "materialious": ["https://app.materialio.us"], + "piped": ["https://pipedapi-libre.kavin.rocks"], + "pipedMaterial": ["https://piped-material.xn--17b.net"], + "poketube": ["https://poketube.fun"], + "cloudtube": ["https://tube.cadence.moe"], + "lightTube": ["https://tube.kuylar.dev"], + "tuboYoutube": ["https://tubo.media"], + "viewtube": ["https://viewtube.io"], + "ytify": ["https://ytify.pp.ua"], "youtubeMusic": { "enabled": false, "frontend": "hyperpipe", @@ -42,9 +24,7 @@ "redirectOnlyInIncognito": false, "redirectType": "main_frame" }, - "hyperpipe": [ - "https://hyperpipe.surge.sh" - ], + "hyperpipe": ["https://hyperpipe.surge.sh"], "invidiousMusic": [], "twitter": { "enabled": true, @@ -54,10 +34,7 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "nitter": [ - "https://xcancel.com", - "https://nitter.tiekoetter.com" - ], + "nitter": ["https://xcancel.com", "https://nitter.tiekoetter.com"], "chatGpt": { "enabled": false, "unsupportedUrls": "bypass", @@ -70,9 +47,7 @@ "frontend": "skyview", "redirectOnlyInIncognito": false }, - "skyview": [ - "https://skyview.social" - ], + "skyview": ["https://skyview.social"], "reddit": { "enabled": true, "frontend": "redlib", @@ -91,9 +66,7 @@ "https://redlib.privacyredirect.com" ], "teddit": [], - "eddrit": [ - "https://eddrit.com" - ], + "eddrit": ["https://eddrit.com"], "tumblr": { "enabled": false, "redirectType": "main_frame", @@ -102,9 +75,7 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "priviblur": [ - "https://pb.bloat.cat" - ], + "priviblur": ["https://pb.bloat.cat"], "twitch": { "enabled": false, "redirectType": "main_frame", @@ -113,12 +84,8 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "safetwitch": [ - "https://safetwitch.drgns.space" - ], - "twineo": [ - "https://twineo.exozy.me" - ], + "safetwitch": ["https://safetwitch.drgns.space"], + "twineo": ["https://twineo.exozy.me"], "tiktok": { "enabled": false, "unsupportedUrls": "bypass", @@ -126,12 +93,8 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "proxiTok": [ - "https://proxitok.pabloferreiro.es" - ], - "offtiktok": [ - "https://www.offtiktok.com" - ], + "proxiTok": ["https://proxitok.pabloferreiro.es"], + "offtiktok": ["https://www.offtiktok.com"], "instagram": { "enabled": false, "frontend": "proxigram", @@ -140,9 +103,7 @@ "redirectOnlyInIncognito": false, "redirectType": "main_frame" }, - "proxigram": [ - "https://ig.opnxng.com" - ], + "proxigram": ["https://ig.opnxng.com"], "imdb": { "enabled": false, "unsupportedUrls": "bypass", @@ -151,9 +112,7 @@ "redirectOnlyInIncognito": false, "redirectType": "main_frame" }, - "libremdb": [ - "https://libremdb.iket.me" - ], + "libremdb": ["https://libremdb.iket.me"], "bilibili": { "enabled": false, "unsupportedUrls": "bypass", @@ -167,19 +126,10 @@ "frontend": "pixivFe", "redirectOnlyInIncognito": false }, - "pixivFe": [ - "https://pixiv.perennialte.ch" - ], - "liteXiv": [ - "https://litexiv.465321.best", - "https://litexiv.bloat.cat" - ], - "vixipy": [ - "https://vx.maid.zone" - ], - "pixivViewer": [ - "https://pixiv.pictures" - ], + "pixivFe": ["https://pixiv.perennialte.ch"], + "liteXiv": ["https://litexiv.465321.best", "https://litexiv.bloat.cat"], + "vixipy": ["https://vx.maid.zone"], + "pixivViewer": ["https://pixiv.pictures"], "fandom": { "enabled": true, "unsupportedUrls": "bypass", @@ -188,10 +138,7 @@ "redirectOnlyInIncognito": false, "redirectType": "main_frame" }, - "breezeWiki": [ - "https://breezewiki.com", - "https://antifandom.com" - ], + "breezeWiki": ["https://breezewiki.com", "https://antifandom.com"], "imgur": { "enabled": false, "redirectType": "main_frame", @@ -200,9 +147,7 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "rimgo": [ - "https://rimgo.vern.cc" - ], + "rimgo": ["https://rimgo.vern.cc"], "pinterest": { "enabled": false, "unsupportedUrls": "bypass", @@ -210,12 +155,8 @@ "frontend": "binternet", "redirectOnlyInIncognito": false }, - "binternet": [ - "https://bn.bloat.cat" - ], - "painterest": [ - "https://pt.bloat.cat" - ], + "binternet": ["https://bn.bloat.cat"], + "painterest": ["https://pt.bloat.cat"], "soundcloud": { "enabled": false, "redirectType": "main_frame", @@ -223,30 +164,22 @@ "unsupportedUrls": "bypass", "redirectOnlyInIncognito": false }, - "tuboSoundcloud": [ - "https://tubo.media" - ], - "soundcloak": [ - "https://soundcloak.fly.dev" - ], + "tuboSoundcloud": ["https://tubo.media"], + "soundcloak": ["https://soundcloak.fly.dev"], "bandcamp": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "tent", "redirectOnlyInIncognito": false }, - "tent": [ - "https://tent.sny.sh" - ], + "tent": ["https://tent.sny.sh"], "tekstowo": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "tekstoLibre", "redirectOnlyInIncognito": false }, - "tekstoLibre": [ - "https://davilarek.github.io/TekstoLibre" - ], + "tekstoLibre": ["https://davilarek.github.io/TekstoLibre"], "genius": { "enabled": false, "unsupportedUrls": "bypass", @@ -254,30 +187,18 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "dumb": [ - "https://dm.vern.cc" - ], - "intellectual": [ - "https://intellectual.insprill.net" - ], + "dumb": ["https://dm.vern.cc"], + "intellectual": ["https://intellectual.insprill.net"], "medium": { "frontend": "scribe", "enabled": false, "unsupportedUrls": "bypass", "redirectOnlyInIncognito": false }, - "scribe": [ - "https://scribe.rip" - ], - "libMedium": [ - "https://md.vern.cc" - ], - "small": [ - "https://small.bloat.cat" - ], - "freedium": [ - "https://freedium.cfd" - ], + "scribe": ["https://scribe.rip"], + "libMedium": ["https://md.vern.cc"], + "small": ["https://small.bloat.cat"], + "freedium": ["https://freedium.cfd"], "quora": { "enabled": false, "unsupportedUrls": "bypass", @@ -285,9 +206,7 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "quetre": [ - "https://quetre.iket.me" - ], + "quetre": ["https://quetre.iket.me"], "github": { "enabled": false, "unsupportedUrls": "bypass", @@ -301,9 +220,7 @@ "frontend": "laboratory", "redirectOnlyInIncognito": false }, - "laboratory": [ - "https://lab.vern.cc" - ], + "laboratory": ["https://lab.vern.cc"], "stackOverflow": { "enabled": true, "unsupportedUrls": "bypass", @@ -323,54 +240,42 @@ "frontend": "neuters", "redirectOnlyInIncognito": false }, - "neuters": [ - "https://neuters.de" - ], + "neuters": ["https://neuters.de"], "snopes": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "suds", "redirectOnlyInIncognito": false }, - "suds": [ - "https://sd.vern.cc" - ], + "suds": ["https://sd.vern.cc"], "ifunny": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "unfunny", "redirectOnlyInIncognito": false }, - "unfunny": [ - "https://uf.vern.cc" - ], + "unfunny": ["https://uf.vern.cc"], "tenor": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "soprano", "redirectOnlyInIncognito": false }, - "soprano": [ - "https://sp.vern.cc" - ], + "soprano": ["https://sp.vern.cc"], "knowyourmeme": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "meme", "redirectOnlyInIncognito": false }, - "meme": [ - "https://mm.vern.cc" - ], + "meme": ["https://mm.vern.cc"], "urbanDictionary": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "ruralDictionary", "redirectOnlyInIncognito": false }, - "ruralDictionary": [ - "https://rd.vern.cc" - ], + "ruralDictionary": ["https://rd.vern.cc"], "goodreads": { "enabled": false, "unsupportedUrls": "bypass", @@ -392,15 +297,9 @@ "frontend": "structables", "redirectOnlyInIncognito": false }, - "structables": [ - "https://structables.private.coffee" - ], - "destructables": [ - "https://ds.vern.cc" - ], - "indestructables": [ - "https://indestructables.private.coffee" - ], + "structables": ["https://structables.private.coffee"], + "destructables": ["https://ds.vern.cc"], + "indestructables": ["https://indestructables.private.coffee"], "wikipedia": { "enabled": false, "unsupportedUrls": "bypass", @@ -408,18 +307,14 @@ "redirectOnlyInIncognito": false }, "wikiless": [], - "wikimore": [ - "https://wikimore.private.coffee" - ], + "wikimore": ["https://wikimore.private.coffee"], "waybackMachine": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "waybackClassic", "redirectOnlyInIncognito": false }, - "waybackClassic": [ - "https://wayback-classic.net" - ], + "waybackClassic": ["https://wayback-classic.net"], "pastebin": { "enabled": false, "unsupportedUrls": "bypass", @@ -427,9 +322,7 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "pasted": [ - "https://pasted.drakeerv.com" - ], + "pasted": ["https://pasted.drakeerv.com"], "search": { "enabled": false, "frontend": "searxng", @@ -438,18 +331,12 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "searxng": [ - "https://nyc1.sx.ggtyler.dev" - ], + "searxng": ["https://nyc1.sx.ggtyler.dev"], "searx": [], "whoogle": [], "librey": [], - "4get": [ - "https://4get.ca" - ], - "websurfx": [ - "https://alamin655-spacex.hf.space" - ], + "4get": ["https://4get.ca"], + "websurfx": ["https://alamin655-spacex.hf.space"], "translate": { "enabled": false, "frontend": "simplyTranslate", @@ -457,18 +344,10 @@ "instance": "public", "redirectOnlyInIncognito": false }, - "simplyTranslate": [ - "https://simplytranslate.org" - ], - "mozhi": [ - "https://mozhi.aryak.me" - ], - "libreTranslate": [ - "https://libretranslate.com" - ], - "translite": [ - "https://tl.bloat.cat" - ], + "simplyTranslate": ["https://simplytranslate.org"], + "mozhi": ["https://mozhi.aryak.me"], + "libreTranslate": ["https://libretranslate.com"], + "translite": ["https://tl.bloat.cat"], "maps": { "redirectType": "main_frame", "enabled": false, @@ -476,9 +355,7 @@ "unsupportedUrls": "bypass", "redirectOnlyInIncognito": false }, - "osm": [ - "https://www.openstreetmap.org" - ], + "osm": ["https://www.openstreetmap.org"], "meet": { "enabled": false, "unsupportedUrls": "bypass", @@ -500,84 +377,64 @@ "redirectOnlyInIncognito": false }, "privateBin": [], - "pasty": [ - "https://pasty.lus.pm" - ], + "pasty": ["https://pasty.lus.pm"], "office": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "cryptPad", "redirectOnlyInIncognito": false }, - "cryptPad": [ - "https://cryptpad.org" - ], + "cryptPad": ["https://cryptpad.org"], "ultimateGuitar": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "freetar", "redirectOnlyInIncognito": false }, - "freetar": [ - "https://freetar.de" - ], + "freetar": ["https://freetar.de"], "baiduTieba": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "ratAintTieba", "redirectOnlyInIncognito": false }, - "ratAintTieba": [ - "https://rat.fis.land" - ], + "ratAintTieba": ["https://rat.fis.land"], "threads": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "shoelace", "redirectOnlyInIncognito": false }, - "shoelace": [ - "https://shoelace.mint.lgbt" - ], + "shoelace": ["https://shoelace.mint.lgbt"], "deviantArt": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "skunkyArt", "redirectOnlyInIncognito": false }, - "skunkyArt": [ - "https://skunky.bloat.cat" - ], + "skunkyArt": ["https://skunky.bloat.cat"], "geeksForGeeks": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "nerdsForNerds", "redirectOnlyInIncognito": false }, - "nerdsForNerds": [ - "https://nn.vern.cc" - ], - "ducksForDucks": [ - "https://ducksforducks.private.coffee" - ], + "nerdsForNerds": ["https://nn.vern.cc"], + "ducksForDucks": ["https://ducksforducks.private.coffee"], "coub": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "koub", "redirectOnlyInIncognito": false }, - "koub": [ - "https://koub.clovius.club" - ], + "koub": ["https://koub.clovius.club"], "chefkoch": { "enabled": false, "unsupportedUrls": "bypass", "frontend": "gocook", "redirectOnlyInIncognito": false }, - "gocook": [ - "https://cook.adminforge.de" - ], + "gocook": ["https://cook.adminforge.de"], "exceptions": { "url": [], "regex": [] @@ -594,11 +451,7 @@ ], "fetchInstances": "github", "redirectOnlyInIncognito": false, - "troddit": [ - "https://www.troddit.com" - ], - "ultimateTab": [ - "https://ultimate-tab.com" - ], + "troddit": ["https://www.troddit.com"], + "ultimateTab": ["https://ultimate-tab.com"], "version": "3.2.0" -} \ No newline at end of file +} diff --git a/home-config/dotfiles/eww/eww.scss b/home-config/dotfiles/eww/eww.scss index 716c571f..299f3c30 100644 --- a/home-config/dotfiles/eww/eww.scss +++ b/home-config/dotfiles/eww/eww.scss @@ -1,5 +1,7 @@ -* { all: unset; } +* { + all: unset; +} .tray-items { - font-size: 1.35em; + font-size: 1.35em; } diff --git a/home-config/personal/keepassxc.nix b/home-config/personal/keepassxc.nix index 9c773302..7bdb3b05 100644 --- a/home-config/personal/keepassxc.nix +++ b/home-config/personal/keepassxc.nix @@ -1,4 +1 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ keepassxc ]; -} +{ pkgs, ... }: { home.packages = with pkgs; [ keepassxc ]; } diff --git a/home-config/personal/ssh-servers.nix b/home-config/personal/ssh-servers.nix index dde9adc6..9e526053 100644 --- a/home-config/personal/ssh-servers.nix +++ b/home-config/personal/ssh-servers.nix @@ -1,5 +1,4 @@ -{ lib, ... }: -{ +{ lib, ... }: { home.file.".ssh/tlater.pub".text = '' ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMMst2rs9WuvWnRTOuQElDMx0/cf4n9x9lC1+8clT0LZ openpgp:0xDD46BD5E ''; diff --git a/home-config/services/ncmpcpp.nix b/home-config/services/ncmpcpp.nix index ac286439..d35000f6 100644 --- a/home-config/services/ncmpcpp.nix +++ b/home-config/services/ncmpcpp.nix @@ -1,5 +1,4 @@ -{ config, ... }: -{ +{ config, ... }: { programs.ncmpcpp = { enable = true; settings = { diff --git a/home-config/shell/default.nix b/home-config/shell/default.nix index 02418353..38f7e308 100644 --- a/home-config/shell/default.nix +++ b/home-config/shell/default.nix @@ -1,5 +1,4 @@ -{ config, pkgs, ... }: -{ +{ config, pkgs, ... }: { imports = [ ./nushell.nix ]; xdg.configFile = { diff --git a/home-config/shell/nushell.nix b/home-config/shell/nushell.nix index 54ea4e66..f913660c 100644 --- a/home-config/shell/nushell.nix +++ b/home-config/shell/nushell.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{ pkgs, ... }: { home.shell.enableNushellIntegration = true; programs = { diff --git a/nixos-modules/nvidia/vaapi.nix b/nixos-modules/nvidia/vaapi.nix index b3f23dc9..ef275ade 100644 --- a/nixos-modules/nvidia/vaapi.nix +++ b/nixos-modules/nvidia/vaapi.nix @@ -113,13 +113,10 @@ in { programs.firefox.preferences = firefoxSettings config.programs.firefox.package; } (lib.optionalAttrs (options ? home-manager) { home-manager.sharedModules = [ - ( - { config, ... }: - { - programs.librewolf.settings = firefoxSettings config.programs.librewolf.package; - # TODO(tlater): Add settings for Firefox and floorp - } - ) + ({ config, ... }: { + programs.librewolf.settings = firefoxSettings config.programs.librewolf.package; + # TODO(tlater): Add settings for Firefox and floorp + }) ]; }) ] diff --git a/nixos/desktop/greeter/eww-config/eww.scss b/nixos/desktop/greeter/eww-config/eww.scss index 4aba3346..880c5a38 100644 --- a/nixos/desktop/greeter/eww-config/eww.scss +++ b/nixos/desktop/greeter/eww-config/eww.scss @@ -1,17 +1,21 @@ -* { all: unset; } +* { + all: unset; +} .btns-box { - font-family: Phosphor; + font-family: Phosphor; font-size: 2.5em; button { padding: 0.4em; border-radius: 0.1em; - background-color: rgba(black, 0.0); + background-color: rgba(black, 0); color: black; &:hover { - transition: 200ms linear background-color, border-radius; + transition: + 200ms linear background-color, + border-radius; background-color: rgba(black, 0.2); } diff --git a/nixos/hosts/rin/facter.json b/nixos/hosts/rin/facter.json index 0faa5f42..ce4d0c86 100644 --- a/nixos/hosts/rin/facter.json +++ b/nixos/hosts/rin/facter.json @@ -29,10 +29,7 @@ { "index": 71, "attached_to": 77, - "class_list": [ - "usb", - "bluetooth" - ], + "class_list": ["usb", "bluetooth"], "bus_type": { "hex": "0086", "name": "USB", @@ -102,21 +99,14 @@ "hotplug": "usb", "driver": "btusb", "driver_module": "btusb", - "drivers": [ - "btusb" - ], - "driver_modules": [ - "btusb" - ], + "drivers": ["btusb"], + "driver_modules": ["btusb"], "module_alias": "usb:v10ABp9309d0001dcE0dsc01dp01icE0isc01ip01in00" }, { "index": 79, "attached_to": 77, - "class_list": [ - "usb", - "bluetooth" - ], + "class_list": ["usb", "bluetooth"], "bus_type": { "hex": "0086", "name": "USB", @@ -186,12 +176,8 @@ "hotplug": "usb", "driver": "btusb", "driver_module": "btusb", - "drivers": [ - "btusb" - ], - "driver_modules": [ - "btusb" - ], + "drivers": ["btusb"], + "driver_modules": ["btusb"], "module_alias": "usb:v10ABp9309d0001dcE0dsc01dp01icE0isc01ip01in01" } ], @@ -199,10 +185,7 @@ { "index": 22, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -258,21 +241,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EFsv00001022sd00001453bc06sc04i00" }, { "index": 23, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -317,10 +293,7 @@ { "index": 25, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -365,10 +338,7 @@ { "index": 28, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -413,10 +383,7 @@ { "index": 30, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -461,10 +428,7 @@ { "index": 32, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -519,21 +483,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EEsv000017AAsd0000231Cbc06sc04i00" }, { "index": 33, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -578,10 +535,7 @@ { "index": 34, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -638,10 +592,7 @@ { "index": 38, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -696,21 +647,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EBsv000017AAsd0000231Cbc06sc04i00" }, { "index": 40, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -755,10 +699,7 @@ { "index": 41, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -810,10 +751,7 @@ { "index": 42, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -868,21 +806,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EBsv000017AAsd0000231Cbc06sc04i00" }, { "index": 44, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -927,10 +858,7 @@ { "index": 46, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -975,10 +903,7 @@ { "index": 48, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1023,10 +948,7 @@ { "index": 49, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1081,21 +1003,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EDsv000017AAsd0000231Cbc06sc04i00" }, { "index": 51, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1150,21 +1065,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EEsv000017AAsd0000231Cbc06sc04i00" }, { "index": 53, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1209,10 +1117,7 @@ { "index": 54, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1268,21 +1173,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EFsv00001022sd00001453bc06sc04i00" }, { "index": 56, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1337,21 +1235,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EEsv000017AAsd0000231Cbc06sc04i00" }, { "index": 58, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1396,10 +1287,7 @@ { "index": 59, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1444,10 +1332,7 @@ { "index": 61, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1502,21 +1387,14 @@ }, "driver": "pcieport", "driver_module": "pcieportdrv", - "drivers": [ - "pcieport" - ], - "driver_modules": [ - "pcieportdrv" - ], + "drivers": ["pcieport"], + "driver_modules": ["pcieportdrv"], "module_alias": "pci:v00001022d000014EBsv000017AAsd0000231Cbc06sc04i00" }, { "index": 63, "attached_to": 0, - "class_list": [ - "pci", - "bridge" - ], + "class_list": ["pci", "bridge"], "bus_type": { "hex": "0004", "name": "PCI", @@ -1563,10 +1441,7 @@ { "index": 72, "attached_to": 68, - "class_list": [ - "camera", - "usb" - ], + "class_list": ["camera", "usb"], "bus_type": { "hex": "0086", "name": "USB", @@ -1653,21 +1528,14 @@ "hotplug": "usb", "driver": "uvcvideo", "driver_module": "uvcvideo", - "drivers": [ - "uvcvideo" - ], - "driver_modules": [ - "uvcvideo" - ], + "drivers": ["uvcvideo"], + "driver_modules": ["uvcvideo"], "module_alias": "usb:v174Fp181Fd1017dcEFdsc02dp01ic0Eisc01ip01in00" }, { "index": 80, "attached_to": 68, - "class_list": [ - "camera", - "usb" - ], + "class_list": ["camera", "usb"], "bus_type": { "hex": "0086", "name": "USB", @@ -1754,12 +1622,8 @@ "hotplug": "usb", "driver": "uvcvideo", "driver_module": "uvcvideo", - "drivers": [ - "uvcvideo" - ], - "driver_modules": [ - "uvcvideo" - ], + "drivers": ["uvcvideo"], + "driver_modules": ["uvcvideo"], "module_alias": "usb:v174Fp181Fd1017dcEFdsc02dp01ic0Eisc02ip01in01" } ], @@ -1767,10 +1631,7 @@ { "index": 73, "attached_to": 69, - "class_list": [ - "chip_card", - "usb" - ], + "class_list": ["chip_card", "usb"], "bus_type": { "hex": "0086", "name": "USB", @@ -1842,12 +1703,8 @@ "hotplug": "usb", "driver": "usbfs", "driver_module": "usbcore", - "drivers": [ - "usbfs" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["usbfs"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1050p0407d0543dc00dsc00dp00ic0Bisc00ip00in02" } ], @@ -2048,11 +1905,7 @@ { "index": 65, "attached_to": 57, - "class_list": [ - "disk", - "block_device", - "nvme" - ], + "class_list": ["disk", "block_device", "nvme"], "bus_type": { "hex": "0096", "name": "NVME", @@ -2120,22 +1973,15 @@ ], "driver": "nvme", "driver_module": "nvme", - "drivers": [ - "nvme" - ], - "driver_modules": [ - "nvme" - ] + "drivers": ["nvme"], + "driver_modules": ["nvme"] } ], "graphics_card": [ { "index": 35, "attached_to": 49, - "class_list": [ - "graphics_card", - "pci" - ], + "class_list": ["graphics_card", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -2198,21 +2044,14 @@ }, "driver": "nvidia", "driver_module": "nvidia", - "drivers": [ - "nvidia" - ], - "driver_modules": [ - "nvidia" - ], + "drivers": ["nvidia"], + "driver_modules": ["nvidia"], "module_alias": "pci:v000010DEd000025BDsv000017AAsd0000231Dbc03sc02i00" }, { "index": 52, "attached_to": 42, - "class_list": [ - "graphics_card", - "pci" - ], + "class_list": ["graphics_card", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -2280,12 +2119,8 @@ }, "driver": "amdgpu", "driver_module": "amdgpu", - "drivers": [ - "amdgpu" - ], - "driver_modules": [ - "amdgpu" - ], + "drivers": ["amdgpu"], + "driver_modules": ["amdgpu"], "module_alias": "pci:v00001002d000015BFsv000017AAsd0000231Dbc03sc00i00" } ], @@ -2293,10 +2128,7 @@ { "index": 67, "attached_to": 55, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2359,21 +2191,14 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" }, { "index": 68, "attached_to": 43, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2446,21 +2271,14 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" }, { "index": 69, "attached_to": 31, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2533,21 +2351,14 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" }, { "index": 74, "attached_to": 43, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2610,21 +2421,14 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" }, { "index": 76, "attached_to": 31, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2687,21 +2491,14 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" }, { "index": 77, "attached_to": 24, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2774,21 +2571,14 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" }, { "index": 78, "attached_to": 55, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2861,21 +2651,14 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" }, { "index": 81, "attached_to": 24, - "class_list": [ - "usb", - "hub" - ], + "class_list": ["usb", "hub"], "bus_type": { "hex": "0086", "name": "USB", @@ -2938,12 +2721,8 @@ "hotplug": "usb", "driver": "hub", "driver_module": "usbcore", - "drivers": [ - "hub" - ], - "driver_modules": [ - "usbcore" - ], + "drivers": ["hub"], + "driver_modules": ["usbcore"], "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" } ], @@ -2951,10 +2730,7 @@ { "index": 75, "attached_to": 69, - "class_list": [ - "keyboard", - "usb" - ], + "class_list": ["keyboard", "usb"], "bus_type": { "hex": "0086", "name": "USB", @@ -3037,12 +2813,8 @@ "hotplug": "usb", "driver": "usbhid", "driver_module": "usbhid", - "drivers": [ - "usbhid" - ], - "driver_modules": [ - "usbhid" - ], + "drivers": ["usbhid"], + "driver_modules": ["usbhid"], "driver_info": { "type": "keyboard", "xkb_rules": "xfree86", @@ -3055,9 +2827,7 @@ { "index": 19, "attached_to": 0, - "class_list": [ - "memory" - ], + "class_list": ["memory"], "base_class": { "hex": "0101", "name": "Internally Used Class", @@ -3081,9 +2851,7 @@ { "index": 64, "attached_to": 52, - "class_list": [ - "monitor" - ], + "class_list": ["monitor"], "base_class": { "hex": "0100", "name": "Monitor", @@ -3211,21 +2979,14 @@ "value": 52934 }, "sysfs_id": "/devices/platform/AMDI0010:01/i2c-1/i2c-SYNA801A:00/0018:06CB:CEC6.0003/input/input18", - "unix_device_names": [ - "/dev/input/event12", - "/dev/input/ + handler" - ] + "unix_device_names": ["/dev/input/event12", "/dev/input/ + handler"] } ], "network_controller": [ { "index": 29, "attached_to": 56, - "class_list": [ - "network_controller", - "pci", - "wlan_card" - ], + "class_list": ["network_controller", "pci", "wlan_card"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3269,9 +3030,7 @@ "sysfs_id": "/devices/pci0000:00/0000:00:02.2/0000:02:00.0", "sysfs_bus_id": "0000:02:00.0", "sysfs_iommu_group_id": 15, - "unix_device_names": [ - "wlp2s0" - ], + "unix_device_names": ["wlp2s0"], "resources": [ { "type": "hwaddr", @@ -3351,15 +3110,8 @@ "5.68", "5.7" ], - "auth_modes": [ - "open", - "wpa-psk", - "wpa-eap" - ], - "enc_modes": [ - "TKIP", - "CCMP" - ] + "auth_modes": ["open", "wpa-psk", "wpa-eap"], + "enc_modes": ["TKIP", "CCMP"] } ], "detail": { @@ -3371,12 +3123,8 @@ }, "driver": "ath11k_pci", "driver_module": "ath11k_pci", - "drivers": [ - "ath11k_pci" - ], - "driver_modules": [ - "ath11k_pci" - ], + "drivers": ["ath11k_pci"], + "driver_modules": ["ath11k_pci"], "module_alias": "pci:v000017CBd00001103sv000017AAsd00009309bc02sc80i00" } ], @@ -3384,9 +3132,7 @@ { "index": 85, "attached_to": 29, - "class_list": [ - "network_interface" - ], + "class_list": ["network_interface"], "base_class": { "hex": "0107", "name": "Network Interface", @@ -3400,9 +3146,7 @@ "model": "Ethernet network interface", "sysfs_id": "/class/net/wlp2s0", "sysfs_device_link": "/devices/pci0000:00/0000:00:02.2/0000:02:00.0", - "unix_device_names": [ - "wlp2s0" - ], + "unix_device_names": ["wlp2s0"], "resources": [ { "type": "hwaddr", @@ -3415,19 +3159,13 @@ ], "driver": "ath11k_pci", "driver_module": "ath11k_pci", - "drivers": [ - "ath11k_pci" - ], - "driver_modules": [ - "ath11k_pci" - ] + "drivers": ["ath11k_pci"], + "driver_modules": ["ath11k_pci"] }, { "index": 86, "attached_to": 0, - "class_list": [ - "network_interface" - ], + "class_list": ["network_interface"], "base_class": { "hex": "0107", "name": "Network Interface", @@ -3440,19 +3178,14 @@ }, "model": "Loopback network interface", "sysfs_id": "/class/net/lo", - "unix_device_names": [ - "lo" - ] + "unix_device_names": ["lo"] } ], "pci": [ { "index": 20, "attached_to": 61, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3502,21 +3235,14 @@ }, "driver": "amdxdna", "driver_module": "amdxdna", - "drivers": [ - "amdxdna" - ], - "driver_modules": [ - "amdxdna" - ], + "drivers": ["amdxdna"], + "driver_modules": ["amdxdna"], "module_alias": "pci:v00001022d00001502sv000017AAsd0000231Cbc11sc80i00" }, { "index": 21, "attached_to": 32, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3564,21 +3290,14 @@ }, "driver": "rtsx_pci", "driver_module": "rtsx_pci", - "drivers": [ - "rtsx_pci" - ], - "driver_modules": [ - "rtsx_pci" - ], + "drivers": ["rtsx_pci"], + "driver_modules": ["rtsx_pci"], "module_alias": "pci:v000010ECd00005261sv000010ECsd00005261bcFFsc00i00" }, { "index": 36, "attached_to": 0, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3629,10 +3348,7 @@ { "index": 37, "attached_to": 38, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3679,10 +3395,7 @@ { "index": 45, "attached_to": 61, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3729,10 +3442,7 @@ { "index": 47, "attached_to": 42, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3782,21 +3492,14 @@ }, "driver": "ccp", "driver_module": "ccp", - "drivers": [ - "ccp" - ], - "driver_modules": [ - "ccp" - ], + "drivers": ["ccp"], + "driver_modules": ["ccp"], "module_alias": "pci:v00001022d000015C7sv000017AAsd0000231Cbc10sc80i00" }, { "index": 60, "attached_to": 0, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3850,21 +3553,14 @@ }, "driver": "piix4_smbus", "driver_module": "i2c_piix4", - "drivers": [ - "piix4_smbus" - ], - "driver_modules": [ - "i2c_piix4" - ], + "drivers": ["piix4_smbus"], + "driver_modules": ["i2c_piix4"], "module_alias": "pci:v00001022d0000790Bsv000017AAsd0000231Cbc0Csc05i00" }, { "index": 62, "attached_to": 42, - "class_list": [ - "pci", - "unknown" - ], + "class_list": ["pci", "unknown"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3918,12 +3614,8 @@ }, "driver": "snd_pci_ps", "driver_module": "snd_pci_ps", - "drivers": [ - "snd_pci_ps" - ], - "driver_modules": [ - "snd_pci_ps" - ], + "drivers": ["snd_pci_ps"], + "driver_modules": ["snd_pci_ps"], "module_alias": "pci:v00001022d000015E2sv000017AAsd0000231Cbc04sc80i00" } ], @@ -3931,10 +3623,7 @@ { "index": 27, "attached_to": 42, - "class_list": [ - "sound", - "pci" - ], + "class_list": ["sound", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -3983,21 +3672,14 @@ }, "driver": "snd_hda_intel", "driver_module": "snd_hda_intel", - "drivers": [ - "snd_hda_intel" - ], - "driver_modules": [ - "snd_hda_intel" - ], + "drivers": ["snd_hda_intel"], + "driver_modules": ["snd_hda_intel"], "module_alias": "pci:v00001002d00001640sv000017AAsd0000231Cbc04sc03i00" }, { "index": 39, "attached_to": 42, - "class_list": [ - "sound", - "pci" - ], + "class_list": ["sound", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4046,12 +3728,8 @@ }, "driver": "snd_hda_intel", "driver_module": "snd_hda_intel", - "drivers": [ - "snd_hda_intel" - ], - "driver_modules": [ - "snd_hda_intel" - ], + "drivers": ["snd_hda_intel"], + "driver_modules": ["snd_hda_intel"], "module_alias": "pci:v00001022d000015E3sv000017AAsd0000231Cbc04sc03i00" } ], @@ -4059,10 +3737,7 @@ { "index": 57, "attached_to": 51, - "class_list": [ - "storage_controller", - "pci" - ], + "class_list": ["storage_controller", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4118,12 +3793,8 @@ }, "driver": "nvme", "driver_module": "nvme", - "drivers": [ - "nvme" - ], - "driver_modules": [ - "nvme" - ], + "drivers": ["nvme"], + "driver_modules": ["nvme"], "module_alias": "pci:v00001C5Cd00001D59sv00001C5Csd00001D59bc01sc08i02" } ], @@ -4134,10 +3805,7 @@ { "index": 66, "attached_to": 69, - "class_list": [ - "usb", - "unknown" - ], + "class_list": ["usb", "unknown"], "bus_type": { "hex": "0086", "name": "USB", @@ -4214,21 +3882,14 @@ "hotplug": "usb", "driver": "usbhid", "driver_module": "usbhid", - "drivers": [ - "usbhid" - ], - "driver_modules": [ - "usbhid" - ], + "drivers": ["usbhid"], + "driver_modules": ["usbhid"], "module_alias": "usb:v1050p0407d0543dc00dsc00dp00ic03isc00ip00in01" }, { "index": 70, "attached_to": 68, - "class_list": [ - "usb", - "unknown" - ], + "class_list": ["usb", "unknown"], "bus_type": { "hex": "0086", "name": "USB", @@ -4323,10 +3984,7 @@ { "index": 82, "attached_to": 77, - "class_list": [ - "usb", - "unknown" - ], + "class_list": ["usb", "unknown"], "bus_type": { "hex": "0086", "name": "USB", @@ -4402,10 +4060,7 @@ { "index": 24, "attached_to": 42, - "class_list": [ - "usb_controller", - "pci" - ], + "class_list": ["usb_controller", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4459,21 +4114,14 @@ }, "driver": "xhci_hcd", "driver_module": "xhci_pci", - "drivers": [ - "xhci_hcd" - ], - "driver_modules": [ - "xhci_pci" - ], + "drivers": ["xhci_hcd"], + "driver_modules": ["xhci_pci"], "module_alias": "pci:v00001022d000015B9sv000017AAsd0000231Cbc0Csc03i30" }, { "index": 26, "attached_to": 38, - "class_list": [ - "usb_controller", - "pci" - ], + "class_list": ["usb_controller", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4527,21 +4175,14 @@ }, "driver": "thunderbolt", "driver_module": "thunderbolt", - "drivers": [ - "thunderbolt" - ], - "driver_modules": [ - "thunderbolt" - ], + "drivers": ["thunderbolt"], + "driver_modules": ["thunderbolt"], "module_alias": "pci:v00001022d00001669sv000017AAsd0000231Cbc0Csc03i40" }, { "index": 31, "attached_to": 38, - "class_list": [ - "usb_controller", - "pci" - ], + "class_list": ["usb_controller", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4595,21 +4236,14 @@ }, "driver": "xhci_hcd", "driver_module": "xhci_pci", - "drivers": [ - "xhci_hcd" - ], - "driver_modules": [ - "xhci_pci" - ], + "drivers": ["xhci_hcd"], + "driver_modules": ["xhci_pci"], "module_alias": "pci:v00001022d000015C1sv000017AAsd0000231Cbc0Csc03i30" }, { "index": 43, "attached_to": 42, - "class_list": [ - "usb_controller", - "pci" - ], + "class_list": ["usb_controller", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4663,21 +4297,14 @@ }, "driver": "xhci_hcd", "driver_module": "xhci_pci", - "drivers": [ - "xhci_hcd" - ], - "driver_modules": [ - "xhci_pci" - ], + "drivers": ["xhci_hcd"], + "driver_modules": ["xhci_pci"], "module_alias": "pci:v00001022d000015BAsv000017AAsd0000231Cbc0Csc03i30" }, { "index": 50, "attached_to": 38, - "class_list": [ - "usb_controller", - "pci" - ], + "class_list": ["usb_controller", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4731,21 +4358,14 @@ }, "driver": "thunderbolt", "driver_module": "thunderbolt", - "drivers": [ - "thunderbolt" - ], - "driver_modules": [ - "thunderbolt" - ], + "drivers": ["thunderbolt"], + "driver_modules": ["thunderbolt"], "module_alias": "pci:v00001022d00001668sv000017AAsd0000231Cbc0Csc03i40" }, { "index": 55, "attached_to": 38, - "class_list": [ - "usb_controller", - "pci" - ], + "class_list": ["usb_controller", "pci"], "bus_type": { "hex": "0004", "name": "PCI", @@ -4799,12 +4419,8 @@ }, "driver": "xhci_hcd", "driver_module": "xhci_pci", - "drivers": [ - "xhci_hcd" - ], - "driver_modules": [ - "xhci_pci" - ], + "drivers": ["xhci_hcd"], + "driver_modules": ["xhci_pci"], "module_alias": "pci:v00001022d000015C0sv000017AAsd0000231Cbc0Csc03i30" } ] @@ -4846,10 +4462,7 @@ "name": "Motherboard", "value": 10 }, - "features": [ - "Hosting Board", - "Replaceable" - ], + "features": ["Hosting Board", "Replaceable"], "location": "Not Available", "chassis": 18 }, @@ -4888,12 +4501,8 @@ "name": "8-way Set-Associative", "value": 7 }, - "sram_type_current": [ - "Pipeline Burst" - ], - "sram_type_supported": [ - "Pipeline Burst" - ] + "sram_type_current": ["Pipeline Burst"], + "sram_type_supported": ["Pipeline Burst"] }, { "handle": 1, @@ -4929,12 +4538,8 @@ "name": "8-way Set-Associative", "value": 7 }, - "sram_type_current": [ - "Pipeline Burst" - ], - "sram_type_supported": [ - "Pipeline Burst" - ] + "sram_type_current": ["Pipeline Burst"], + "sram_type_supported": ["Pipeline Burst"] }, { "handle": 2, @@ -4970,12 +4575,8 @@ "name": "16-way Set-Associative", "value": 8 }, - "sram_type_current": [ - "Pipeline Burst" - ], - "sram_type_supported": [ - "Pipeline Burst" - ] + "sram_type_current": ["Pipeline Burst"], + "sram_type_supported": ["Pipeline Burst"] } ], "chassis": [ @@ -5014,9 +4615,7 @@ ], "config": { "handle": 23, - "options": [ - "Unknown" - ] + "options": ["Unknown"] }, "group_associations": [ { @@ -5046,14 +4645,7 @@ "language": [ { "handle": 24, - "languages": [ - "en-US", - "fr-FR", - "ja-JP", - "ko-KR", - "zh-CHT", - "zh-CHS" - ] + "languages": ["en-US", "fr-FR", "ja-JP", "ko-KR", "zh-CHT", "zh-CHS"] } ], "memory_array": [ @@ -5111,9 +4703,7 @@ "name": "Other", "value": 34 }, - "memory_type_details": [ - "Synchronous" - ], + "memory_type_details": ["Synchronous"], "speed": 5600 }, { @@ -5138,9 +4728,7 @@ "name": "Other", "value": 34 }, - "memory_type_details": [ - "Synchronous" - ], + "memory_type_details": ["Synchronous"], "speed": 5600 } ], @@ -5407,4 +4995,4 @@ } } } -} \ No newline at end of file +} From ec0e139edb40e5f1aeff0b7583466adfe4c5f7e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Tue, 24 Mar 2026 17:43:31 +0800 Subject: [PATCH 11/26] feat(yui): Add obsidian --- home-config/applications/graphical/default.nix | 1 + nixos/hosts/yui.nix | 1 + 2 files changed, 2 insertions(+) diff --git a/home-config/applications/graphical/default.nix b/home-config/applications/graphical/default.nix index 29f8e63a..b0a7d3d2 100644 --- a/home-config/applications/graphical/default.nix +++ b/home-config/applications/graphical/default.nix @@ -5,6 +5,7 @@ apvlv feh yubioath-flutter + obsidian ]; programs.alacritty = { diff --git a/nixos/hosts/yui.nix b/nixos/hosts/yui.nix index f4fb881c..f1f8e62e 100644 --- a/nixos/hosts/yui.nix +++ b/nixos/hosts/yui.nix @@ -32,6 +32,7 @@ # "steam-original" # "steam-unwrapped" # "nvidia-x11" + # "obsidian" # ]; # easyNvidia = { From d9e06c1f6c997a97c3982e29616c56089d959898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Tue, 3 Mar 2026 03:42:38 +0800 Subject: [PATCH 12/26] feat(yui): Add sunshine streaming --- home-config/dotfiles/sway.conf | 2 + nixos-config/hosts/yui/sunshine.nix | 165 ++++++++++++++++++++++++++++ nixos/desktop/greeter/default.nix | 1 + nixos/games.nix | 2 + nixos/hosts/yui.nix | 10 +- packages/custom-edid.nix | 18 +++ packages/edid-generator.nix | 45 ++++++++ 7 files changed, 241 insertions(+), 2 deletions(-) create mode 100644 nixos-config/hosts/yui/sunshine.nix create mode 100644 packages/custom-edid.nix create mode 100644 packages/edid-generator.nix diff --git a/home-config/dotfiles/sway.conf b/home-config/dotfiles/sway.conf index 32c9b545..bbb4b130 100644 --- a/home-config/dotfiles/sway.conf +++ b/home-config/dotfiles/sway.conf @@ -15,6 +15,8 @@ output "Dell Inc. DELL G2723HN 5B0C3H3" { max_render_time 3 } +output "GSS edid.build 0x00000001" disable + # Window decorations client.focused $lavender $base $text $lavender $lavender diff --git a/nixos-config/hosts/yui/sunshine.nix b/nixos-config/hosts/yui/sunshine.nix new file mode 100644 index 00000000..ed6615db --- /dev/null +++ b/nixos-config/hosts/yui/sunshine.nix @@ -0,0 +1,165 @@ +{ + flake-inputs, + config, + pkgs, + ... +}: +let + inherit (flake-inputs.self.pkgs-lib.${pkgs.stdenv.hostPlatform.system}) writeNuWith; + inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) edid-generator; +in +{ + nix.settings = { + substituters = [ "https://cache.nixos-cuda.org" ]; + trusted-public-keys = [ "cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M=" ]; + }; + + # Create a virtual display to render games for sunshine on + hardware.display = { + edid.packages = [ + (pkgs.runCommand "VTCL65C825.bin" + { + nativeBuildInputs = [ edid-generator ]; + settings = pkgs.writers.writeJSON "edid.json" { + defaultMode = { + width = 1920; + height = 1080; + refresh = 120; + }; + modes = [ + { + width = 1920; + height = 1080; + refresh = 120; + } + { + width = 1920; + height = 1080; + refresh = 60; + } + { + width = 3840; + height = 2160; + refresh = 120; + } + { + width = 3840; + height = 2160; + refresh = 60; + } + ]; + audio = false; + hdr = true; + deepColor = true; + dsc = false; + vrr = false; + listedModesOnly = false; + }; + } + '' + mkdir -p "$out/lib/firmware/edid" + edid-generator $settings > "$out/lib/firmware/edid/VTCL65C825.bin" + '' + ) + ]; + + # The port (DP-2) to be used must be free on the GPU, use + # `ls /sys/class/drm/*/status` to find free ports. + # + # Using DP-2 because HDMI doesn't support 3840x2160@120. + outputs."DP-2" = { + edid = "VTCL65C825.bin"; + mode = "e"; + }; + }; + + services.sunshine = { + enable = true; + package = pkgs.sunshine.override { cudaSupport = true; }; + + openFirewall = true; + settings = { + sunshine_name = config.networking.hostName; + system_tray = false; + encoder = "nvenc"; + + stream_audio = false; + + # TODO(tlater): Switch to portalgrab once released: + # https://github.com/LizardByte/Sunshine/pull/4417 + capture = "wlr"; + output_name = "DP-2"; + }; + + applications.apps = [ + ( + let + runScript = writeNuWith { + packages = [ + pkgs.util-linux + pkgs.systemd + config.programs.sway.package + config.programs.steam.package + ]; + }; + in + { + name = "Steam Big Picture"; + cmd = + (runScript "run-steam" /* nu */ '' + swaymsg output DP-2 enable + swaymsg workspace sunshine gaps outer 0 + swaymsg workspace sunshine gaps inner 0 + swaymsg workspace sunshine output DP-2 + swaymsg focus output DP-2 + swaymsg workspace sunshine + swaymsg assign '[title="Steam Big Picture Mode"]' → workspace sunshine + + let inhibiting = (busctl -j --user get-property + net.tlater.DesktopLogic + /net/tlater/desktoplogic/idleinhibitor + net.tlater.DesktopLogic.IdleInhibitor + IsInhibiting + | from json | $in.data) + + if not $inhibiting { + (busctl --user call + net.tlater.DesktopLogic + /net/tlater/desktoplogic/idleinhibitor + net.tlater.DesktopLogic.IdleInhibitor + ToggleInhibit) + } + + try { + setsid steam steam://open/bigpicture + } + '').outPath; + + auto-detach = false; + prep-cmd = [ + { + undo = + (runScript "close-steam" /* nu */ '' + swaymsg output DP-2 disable + + (busctl --user call + net.tlater.DesktopLogic + /net/tlater/desktoplogic/idleinhibitor + net.tlater.DesktopLogic.IdleInhibitor + ToggleInhibit) + + sleep 5sec + if (ps | where pid == (cat ~/.steampid)) != [ ] { + try { + steam -shutdown + } + } + '').outPath; + } + ]; + } + ) + ]; + }; + +} diff --git a/nixos/desktop/greeter/default.nix b/nixos/desktop/greeter/default.nix index 7a1bf8de..bf2d307f 100644 --- a/nixos/desktop/greeter/default.nix +++ b/nixos/desktop/greeter/default.nix @@ -30,6 +30,7 @@ let "--unsupported-gpu" = config.hardware.nvidia.enabled; "--config" = pkgs.writeText "sway-gtkgreet.conf" '' output '*' background #fafafa solid_color + output 'GSS edid.build 0x00000001' disable seat seat0 xcursor_theme Bibata-Original-Ice 24 exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK diff --git a/nixos/games.nix b/nixos/games.nix index d20070ec..d61a08ec 100644 --- a/nixos/games.nix +++ b/nixos/games.nix @@ -6,6 +6,8 @@ inputs.nix-gaming.nixosModules.pipewireLowLatency inputs.nix-gaming.nixosModules.platformOptimizations inputs.nix-gaming.nixosModules.wine + + ./sunshine.nix ]; hardware.steam-hardware.enable = true; diff --git a/nixos/hosts/yui.nix b/nixos/hosts/yui.nix index f1f8e62e..9a8933d8 100644 --- a/nixos/hosts/yui.nix +++ b/nixos/hosts/yui.nix @@ -25,7 +25,7 @@ # nixpkgs.config.allowUnfreePredicate = # pkg: - # builtins.elem (pkgs.lib.getName pkg) [ + # (builtins.elem (lib.getName pkg) [ # "steam" # "steam-run" # # Required to get the steam controller to work (i.e., for hardware.steam-hardware) @@ -33,7 +33,13 @@ # "steam-unwrapped" # "nvidia-x11" # "obsidian" - # ]; + # "cuda-merged" + # "libnpp" + # ]) + # || (lib.strings.hasPrefix "cuda_" (lib.getName pkg)) + # || (lib.strings.hasPrefix "libcu" (lib.getName pkg)) + # || (lib.strings.hasPrefix "libnv" (lib.getName pkg)); + # easyNvidia = { # vaapi = { diff --git a/packages/custom-edid.nix b/packages/custom-edid.nix new file mode 100644 index 00000000..b093036d --- /dev/null +++ b/packages/custom-edid.nix @@ -0,0 +1,18 @@ +{ + runCommand, + xorg, + edid-generator, +}: +edid-generator.overrideAttrs (old: { + # passAsFile = [ ]; + clean = true; + + # modelines = ''Modeline "3840x2160" 712.34 3840 4152 4576 5312 2160 2161 2164 2235 -HSync +Vsync''; + + modelinesPath = + (runCommand "modelines" { nativeBuildInputs = [ xorg.xorgserver ]; } '' + gtf 3840 2160 120 > modeline + sed -i 's/"3840x2160_120.00"/"VTCL65C825"/' modeline + grep -v '# ' modeline > $out + '').outPath; +}) diff --git a/packages/edid-generator.nix b/packages/edid-generator.nix new file mode 100644 index 00000000..7c235477 --- /dev/null +++ b/packages/edid-generator.nix @@ -0,0 +1,45 @@ +{ + fetchFromGitHub, + runCommand, + writers, +}: +let + edid-core = + runCommand "edid-core" + { + src = fetchFromGitHub { + owner = "goncalossilva"; + repo = "edid-generator"; + rev = "bc311cb7d5d4900a1bdad8fa967125c8e50c0174"; + hash = "sha256-90yzP0wxVms/6+sLa8zOkZbuBkqnBMQS0WyEn2poWUM="; + }; + } + /* sh */ '' + mkdir -p "$out/lib/node_modules/edid-core/" + cp "$src/assets/js/edid-core.js" "$out/lib/node_modules/edid-core/index.js" + ''; +in +writers.writeJSBin "edid-generator" { libraries = [ edid-core ]; } /* js */ '' + const { readFile } = require("node:fs/promises"); + const { resolve } = require("node:path"); + const { stdout, stderr } = require("node:process"); + + const { generateEdid } = require("edid-core"); + + async function main() { + const settings = JSON.parse(await readFile(resolve(process.argv[2]))); + const edid = generateEdid(settings); + + if (edid.warnings) { + console.warn("EDID wasn't generated cleanly:"); + + for (warning of edid.warnings) { + console.warn("- " + warning); + } + } + + stdout.write(edid.bytes); + } + + main(); +'' From d64a4191eb8d5c5893bdc883d1ece8d35a814f9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Tue, 30 Jun 2026 17:27:06 +0800 Subject: [PATCH 13/26] fix(steam): Add `pkgs.hidapi` to fix the new steam controller Might not be necessary in the near future. --- nixos/games.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/games.nix b/nixos/games.nix index d61a08ec..3aa13957 100644 --- a/nixos/games.nix +++ b/nixos/games.nix @@ -20,6 +20,8 @@ programs = { steam = { enable = true; + extraPackages = [ pkgs.hidapi ]; + extraCompatPackages = [ pkgs.proton-ge-bin ]; platformOptimizations.enable = true; protontricks.enable = true; From 819ebfc33ca7ee6672290413ab8bf03fa1cf8a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 10 Jul 2026 04:16:25 +0800 Subject: [PATCH 14/26] WIP: fix(treewide): Adopt yui --- flake.lock | 6 +- flake.nix | 10 + home-config/personal/ssh-servers.nix | 30 +- .../syncthing/syncthing-apply-config.nu | 4 +- home-config/personal/syncthing/syncthing.nix | 2 +- lib/builders.nix | 59 +- nixos/default.nix | 20 +- nixos/games.nix | 2 - nixos/hosts/rin.nix | 5 + nixos/hosts/yui.nix | 35 +- nixos/hosts/yui/facter.json | 6324 ++++++++++++++++- nixos/hosts/yui/programs.nix | 4 +- .../hosts/yui/sunshine.nix | 25 +- nixos/modules/unfree-packages.nix | 24 + packages/catppuccin-themes/update.nu | 2 +- packages/edopro/update.nu | 2 +- packages/emacs/update-emacs-packages.nu | 2 +- packages/nvidia/update.nu | 2 +- packages/topiary/update.nu | 2 +- 19 files changed, 6471 insertions(+), 89 deletions(-) rename {nixos-config => nixos}/hosts/yui/sunshine.nix (88%) create mode 100644 nixos/modules/unfree-packages.nix diff --git a/flake.lock b/flake.lock index 355ec12f..e5609bbd 100644 --- a/flake.lock +++ b/flake.lock @@ -335,11 +335,11 @@ }, "nix-webapps": { "locked": { - "lastModified": 1758980590, - "narHash": "sha256-dPAU7K3ntk7UayXF9uYv8N3qhmyLpfhAb7WMWhWwfr8=", + "lastModified": 1783628082, + "narHash": "sha256-XIX1EELu2UkkzkFSAiFD7W7Qb3paFUmK3DZ0VUCZRdI=", "owner": "TLATER", "repo": "nix-webapps", - "rev": "2ad0b7004ef46c3c37a23e5d9bb03a67ec142f00", + "rev": "07b566b60afbd37b0d8b96d137c18b06984e2877", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index fb6e7b3a..830b9a08 100644 --- a/flake.nix +++ b/flake.nix @@ -99,6 +99,16 @@ flake = { nixosConfigurations = { + yui = nixpkgs.lib.nixosSystem { + modules = [ + ./nixos/hosts/yui.nix + # TODO: Replace with hjem + ./nixos/home-manager.nix + ]; + + specialArgs.inputs = inputs; + }; + rin = nixpkgs.lib.nixosSystem { modules = [ ./nixos/hosts/rin.nix diff --git a/home-config/personal/ssh-servers.nix b/home-config/personal/ssh-servers.nix index 9e526053..1b6a4364 100644 --- a/home-config/personal/ssh-servers.nix +++ b/home-config/personal/ssh-servers.nix @@ -5,30 +5,28 @@ programs.ssh = { enableDefaultConfig = false; - matchBlocks = { - "*".identityFile = "~/.ssh/tlater.pub"; + settings = { + "*".IdentityFile = "~/.ssh/tlater.pub"; "tlater.net" = lib.hm.dag.entryAfter [ "*" ] { - hostname = "tlater.net"; - user = "tlater"; - port = 2222; - forwardAgent = true; + HostName = "tlater.net"; + User = "tlater"; + Port = 2222; + ForwardAgent = true; }; "console.gl-inet.com" = lib.hm.dag.entryAfter [ "*" ] { - hostname = "console.gl-inet.com"; - user = "root"; - extraOptions = { - PubkeyAcceptedAlgorithms = "+ssh-rsa"; - HostkeyAlgorithms = "+ssh-rsa"; - }; + HostName = "console.gl-inet.com"; + User = "root"; + PubkeyAcceptedAlgorithms = "+ssh-rsa"; + HostkeyAlgorithms = "+ssh-rsa"; }; "hetzner-1" = lib.hm.dag.entryAfter [ "*" ] { - hostname = "116.202.158.55"; - user = "tlater"; - port = 2222; - forwardAgent = true; + HostName = "116.202.158.55"; + User = "tlater"; + Port = 2222; + ForwardAgent = true; }; }; }; diff --git a/home-config/personal/syncthing/syncthing-apply-config.nu b/home-config/personal/syncthing/syncthing-apply-config.nu index cbf80479..3cfbd9b0 100644 --- a/home-config/personal/syncthing/syncthing-apply-config.nu +++ b/home-config/personal/syncthing/syncthing-apply-config.nu @@ -4,12 +4,12 @@ def main [config: path] { let options = open $config let address = ( - open --raw $'($env.XDG_STATE_HOME)/syncthing/config.xml' + open --raw $'($env.XDG_STATE_HOME? | default "~/.local/state")/syncthing/config.xml' | query xml 'string(configuration/gui/address)' ) let api_key = ( - open --raw $'($env.XDG_STATE_HOME)/syncthing/config.xml' + open --raw $'($env.XDG_STATE_HOME? | default "~/.local/state")/syncthing/config.xml' | query xml 'string(configuration/gui/apikey)' ) diff --git a/home-config/personal/syncthing/syncthing.nix b/home-config/personal/syncthing/syncthing.nix index e17fa0ab..4ba11bbb 100644 --- a/home-config/personal/syncthing/syncthing.nix +++ b/home-config/personal/syncthing/syncthing.nix @@ -63,7 +63,7 @@ in in inputs.self.builders.${pkgs.stdenv.hostPlatform.system}.writeNuWith { plugins = [ pkgs.nushellPlugins.query ]; - extraMakeWrapperArgs = [ + makeWrapperArgs = [ "--add-flag" configFile ]; diff --git a/lib/builders.nix b/lib/builders.nix index 25e76886..d4ae64e9 100644 --- a/lib/builders.nix +++ b/lib/builders.nix @@ -57,31 +57,40 @@ { packages ? [ ], plugins ? [ ], - extraMakeWrapperArgs ? [ ], - }: - writers.makeScriptWriter { - interpreter = - (inputs.wrappers.lib.evalModule { - inherit pkgs; - imports = [ inputs.wrappers.lib.modules.default ]; - - package = pkgs.nushell; - - flags = { - "--plugins" = "[" + (lib.concatStringsSep " " (map lib.getExe plugins)) + "]"; - "--no-config-file" = true; - }; - }).config.wrapper; - - makeWrapperArgs = - (lib.optionals (packages != [ ]) [ - "--prefix" - "PATH" - ":" - (lib.makeBinPath packages) - ]) - ++ extraMakeWrapperArgs; - }; + ... + }@args: + writers.makeScriptWriter ( + { + interpreter = + lib.getExe + (inputs.wrappers.lib.evalModule { + inherit pkgs; + imports = [ inputs.wrappers.lib.modules.default ]; + + package = pkgs.nushell; + + runtimePkgs = packages; + flags = { + "--no-config-file" = true; + "--plugins" = + if (plugins == [ ]) then + false + else + { + data = map lib.getExe plugins; + ifs = " "; + sep = " "; + before = [ "--no-config-file" ]; + esc-fn = lib.id; + }; + }; + }).config.wrapper; + } + // (lib.removeAttrs args [ + "packages" + "plugins" + ]) + ); /** An alternative to `pkgs.writers.writeNuBinWith` that allows diff --git a/nixos/default.nix b/nixos/default.nix index 1264b68a..4b438869 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -1,13 +1,20 @@ /** Entrypoint into general-purpose configuration. */ -{ inputs, lib, ... }: { +{ + inputs, + lib, + pkgs, + ... +}: +{ imports = [ inputs.disko.nixosModules.disko inputs.nix-flatpak.nixosModules.nix-flatpak ./modules/networkmanager-ensure-profiles.nix ./modules/udev-rules.nix + ./modules/unfree-packages.nix ./boot.nix ./desktop.nix @@ -17,12 +24,11 @@ ./security.nix ]; - nixpkgs.config.allowUnfreePredicate = - pkg: - builtins.elem (lib.getName pkg) [ - "nvidia-x11" - "nvidia-settings" - ]; + _module.args.inputs' = lib.mapAttrs ( + _: outputs: lib.mapAttrs (_: output: output.${pkgs.stdenv.hostPlatform.system}) outputs + ) inputs; + + hardware.facter.enable = true; # Remove some silly defaults. programs.nano.enable = false; diff --git a/nixos/games.nix b/nixos/games.nix index 3aa13957..bb187351 100644 --- a/nixos/games.nix +++ b/nixos/games.nix @@ -6,8 +6,6 @@ inputs.nix-gaming.nixosModules.pipewireLowLatency inputs.nix-gaming.nixosModules.platformOptimizations inputs.nix-gaming.nixosModules.wine - - ./sunshine.nix ]; hardware.steam-hardware.enable = true; diff --git a/nixos/hosts/rin.nix b/nixos/hosts/rin.nix index fa53d940..8341d535 100644 --- a/nixos/hosts/rin.nix +++ b/nixos/hosts/rin.nix @@ -18,6 +18,11 @@ ./rin/wifi.nix ]; + unfree.allowUnfreePackages = [ + "nvidia-x11" + "nvidia-settings" + ]; + networking = { hostName = "rin"; hostId = "e6aaf496"; diff --git a/nixos/hosts/yui.nix b/nixos/hosts/yui.nix index 9a8933d8..eb8050a6 100644 --- a/nixos/hosts/yui.nix +++ b/nixos/hosts/yui.nix @@ -1,7 +1,8 @@ /** Entrypoint for yui. */ -{ inputs, ... }: { +{ inputs, ... }: +{ imports = [ # flake-inputs.nixos-hardware.nixosModules.common-pc # flake-inputs.nixos-hardware.nixosModules.common-pc-ssd @@ -20,26 +21,19 @@ ./yui/disko.nix ./yui/hardware.nix ./yui/programs.nix - ./yui/tailscale.nix + ./yui/sunshine.nix + # ./yui/tailscale.nix ]; - # nixpkgs.config.allowUnfreePredicate = - # pkg: - # (builtins.elem (lib.getName pkg) [ - # "steam" - # "steam-run" - # # Required to get the steam controller to work (i.e., for hardware.steam-hardware) - # "steam-original" - # "steam-unwrapped" - # "nvidia-x11" - # "obsidian" - # "cuda-merged" - # "libnpp" - # ]) - # || (lib.strings.hasPrefix "cuda_" (lib.getName pkg)) - # || (lib.strings.hasPrefix "libcu" (lib.getName pkg)) - # || (lib.strings.hasPrefix "libnv" (lib.getName pkg)); - + unfree.allowUnfreePackages = [ + "nvidia-x11" + "nvidia-settings" + "obsidian" + "steam" + "steam-run" + "steam-original" + "steam-unwrapped" + ]; # easyNvidia = { # vaapi = { @@ -51,10 +45,9 @@ networking.hostName = "yui"; home-manager.users.tlater = import "${inputs.self}/home-config/hosts/yui.nix"; - hardware.facter.reportPaht = ./yui/facter.json; + hardware.facter.reportPath = ./yui/facter.json; # For random android-related things - programs.adb.enable = true; users.users.tlater.extraGroups = [ "adbusers" ]; system.stateVersion = "20.09"; diff --git a/nixos/hosts/yui/facter.json b/nixos/hosts/yui/facter.json index 0967ef42..152b0e6e 100644 --- a/nixos/hosts/yui/facter.json +++ b/nixos/hosts/yui/facter.json @@ -1 +1,6323 @@ -{} +{ + "version": 1, + "system": "x86_64-linux", + "virtualisation": "none", + "hardware": { + "bios": { + "apm_info": { + "supported": false, + "enabled": false, + "version": 0, + "sub_version": 0, + "bios_flags": 0 + }, + "vbe_info": { + "version": 0, + "video_memory": 0 + }, + "pnp": false, + "pnp_id": 0, + "lba_support": false, + "low_memory_size": 0, + "smbios_version": 771 + }, + "bluetooth": [ + { + "index": 63, + "attached_to": 74, + "class_list": [ + "usb", + "bluetooth" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0115", + "name": "Bluetooth Device", + "value": 277 + }, + "vendor": { + "hex": "8087", + "value": 32903 + }, + "device": { + "hex": "0029", + "value": 41 + }, + "revision": { + "hex": "0000", + "name": "0.01", + "value": 0 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-8/1-8:1.1", + "sysfs_bus_id": "1-8:1.1", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "device_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v8087p0029d0001dcE0dsc01dp01icE0isc01ip01in01" + }, + { + "index": 76, + "attached_to": 74, + "class_list": [ + "usb", + "bluetooth" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0115", + "name": "Bluetooth Device", + "value": 277 + }, + "vendor": { + "hex": "8087", + "value": 32903 + }, + "device": { + "hex": "0029", + "value": 41 + }, + "revision": { + "hex": "0000", + "name": "0.01", + "value": 0 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-8/1-8:1.0", + "sysfs_bus_id": "1-8:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "device_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v8087p0029d0001dcE0dsc01dp01icE0isc01ip01in00" + } + ], + "bridge": [ + { + "index": 16, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 3 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1483", + "value": 5251 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:03.1", + "sysfs_bus_id": "0000:00:03.1", + "sysfs_iommu_group_id": 5, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 7, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001483sv00001022sd00001453bc06sc04i00" + }, + { + "index": 17, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1482", + "value": 5250 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.0", + "sysfs_bus_id": "0000:00:08.0", + "sysfs_iommu_group_id": 10, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001482sv00000000sd00000000bc06sc00i00" + }, + { + "index": 18, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1443", + "value": 5187 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.3", + "sysfs_bus_id": "0000:00:18.3", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 3, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "k10temp", + "driver_module": "k10temp", + "drivers": [ + "k10temp" + ], + "driver_modules": [ + "k10temp" + ], + "module_alias": "pci:v00001022d00001443sv00000000sd00000000bc06sc00i00" + }, + { + "index": 20, + "attached_to": 21, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 0 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1b21", + "value": 6945 + }, + "device": { + "hex": "43e9", + "value": 17385 + }, + "sub_device": { + "hex": "0201", + "value": 513 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2", + "sysfs_bus_id": "0000:02:00.2", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 2, + "command": 7, + "header_type": 1, + "secondary_bus": 3, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043E9sv00001B21sd00000201bc06sc04i00" + }, + { + "index": 21, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1483", + "value": 5251 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2", + "sysfs_bus_id": "0000:00:01.2", + "sysfs_iommu_group_id": 2, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 2, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001483sv00001022sd00001453bc06sc04i00" + }, + { + "index": 22, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1441", + "value": 5185 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.1", + "sysfs_bus_id": "0000:00:18.1", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 1, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001441sv00000000sd00000000bc06sc00i00" + }, + { + "index": 24, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1482", + "value": 5250 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.0", + "sysfs_bus_id": "0000:00:01.0", + "sysfs_iommu_group_id": 0, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001482sv00000000sd00000000bc06sc00i00" + }, + { + "index": 26, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 4 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1482", + "value": 5250 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:04.0", + "sysfs_bus_id": "0000:00:04.0", + "sysfs_iommu_group_id": 6, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001482sv00000000sd00000000bc06sc00i00" + }, + { + "index": 27, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 3, + "number": 9 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1b21", + "value": 6945 + }, + "device": { + "hex": "43ea", + "value": 17386 + }, + "sub_device": { + "hex": "3308", + "value": 13064 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:09.0", + "sysfs_bus_id": "0000:03:09.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 6, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043EAsv00001B21sd00003308bc06sc04i00" + }, + { + "index": 28, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0001", + "name": "ISA bridge", + "value": 1 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1458", + "value": 5208 + }, + "device": { + "hex": "790e", + "value": 30990 + }, + "sub_device": { + "hex": "5001", + "value": 20481 + }, + "revision": { + "hex": "0051", + "value": 81 + }, + "model": "AMD ISA bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:14.3", + "sysfs_bus_id": "0000:00:14.3", + "sysfs_iommu_group_id": 12, + "detail": { + "function": 3, + "command": 15, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000790Esv00001458sd00005001bc06sc01i00" + }, + { + "index": 30, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 7 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1482", + "value": 5250 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:07.0", + "sysfs_bus_id": "0000:00:07.0", + "sysfs_iommu_group_id": 8, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001482sv00000000sd00000000bc06sc00i00" + }, + { + "index": 33, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1446", + "value": 5190 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.6", + "sysfs_bus_id": "0000:00:18.6", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 6, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001446sv00000000sd00000000bc06sc00i00" + }, + { + "index": 35, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1480", + "value": 5248 + }, + "sub_device": { + "hex": "1480", + "value": 5248 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:00.0", + "sysfs_bus_id": "0000:00:00.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001480sv00001022sd00001480bc06sc00i00" + }, + { + "index": 36, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1484", + "value": 5252 + }, + "sub_device": { + "hex": "1484", + "value": 5252 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1", + "sysfs_bus_id": "0000:00:08.1", + "sysfs_iommu_group_id": 11, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 9, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001484sv00001022sd00001484bc06sc04i00" + }, + { + "index": 37, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1444", + "value": 5188 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.4", + "sysfs_bus_id": "0000:00:18.4", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 4, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001444sv00000000sd00000000bc06sc00i00" + }, + { + "index": 40, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 3 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1482", + "value": 5250 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:03.0", + "sysfs_bus_id": "0000:00:03.0", + "sysfs_iommu_group_id": 4, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001482sv00000000sd00000000bc06sc00i00" + }, + { + "index": 41, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 3, + "number": 8 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1b21", + "value": 6945 + }, + "device": { + "hex": "43ea", + "value": 17386 + }, + "sub_device": { + "hex": "3308", + "value": 13064 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:08.0", + "sysfs_bus_id": "0000:03:08.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 5, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043EAsv00001B21sd00003308bc06sc04i00" + }, + { + "index": 42, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1442", + "value": 5186 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.2", + "sysfs_bus_id": "0000:00:18.2", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 2, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001442sv00000000sd00000000bc06sc00i00" + }, + { + "index": 44, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1483", + "value": 5251 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.1", + "sysfs_bus_id": "0000:00:01.1", + "sysfs_iommu_group_id": 1, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 1, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001483sv00001022sd00001453bc06sc04i00" + }, + { + "index": 46, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1440", + "value": 5184 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.0", + "sysfs_bus_id": "0000:00:18.0", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001440sv00000000sd00000000bc06sc00i00" + }, + { + "index": 47, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 3, + "number": 4 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1b21", + "value": 6945 + }, + "device": { + "hex": "43ea", + "value": 17386 + }, + "sub_device": { + "hex": "3308", + "value": 13064 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:04.0", + "sysfs_bus_id": "0000:03:04.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 4, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043EAsv00001B21sd00003308bc06sc04i00" + }, + { + "index": 48, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 7 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1484", + "value": 5252 + }, + "sub_device": { + "hex": "1484", + "value": 5252 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:07.1", + "sysfs_bus_id": "0000:00:07.1", + "sysfs_iommu_group_id": 9, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 8, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001484sv00001022sd00001484bc06sc04i00" + }, + { + "index": 51, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1482", + "value": 5250 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.0", + "sysfs_bus_id": "0000:00:02.0", + "sysfs_iommu_group_id": 3, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001482sv00000000sd00000000bc06sc00i00" + }, + { + "index": 52, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1447", + "value": 5191 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.7", + "sysfs_bus_id": "0000:00:18.7", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 7, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001447sv00000000sd00000000bc06sc00i00" + }, + { + "index": 55, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 5 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1482", + "value": 5250 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:05.0", + "sysfs_bus_id": "0000:00:05.0", + "sysfs_iommu_group_id": 7, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001482sv00000000sd00000000bc06sc00i00" + }, + { + "index": 56, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1445", + "value": 5189 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.5", + "sysfs_bus_id": "0000:00:18.5", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 5, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001445sv00000000sd00000000bc06sc00i00" + } + ], + "chip_card": [ + { + "index": 72, + "attached_to": 74, + "class_list": [ + "chip_card", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010e", + "name": "Chipcard Reader", + "value": 270 + }, + "vendor": { + "hex": "1050", + "name": "Yubico", + "value": 4176 + }, + "device": { + "hex": "0406", + "name": "YubiKey FIDO+CCID", + "value": 1030 + }, + "revision": { + "hex": "0000", + "name": "5.74", + "value": 0 + }, + "model": "Yubico YubiKey FIDO+CCID", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2:1.1", + "sysfs_bus_id": "1-2:1.1", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "000b", + "name": "smart_card", + "value": 11 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbfs", + "driver_module": "usbcore", + "drivers": [ + "usbfs" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1050p0406d0574dc00dsc00dp00ic0Bisc00ip00in01" + } + ], + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "AuthenticAMD", + "model_name": "AMD Ryzen 5 5600X 6-Core Processor", + "family": 25, + "model": 33, + "stepping": 0, + "features": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "mmx", + "fxsr", + "sse", + "sse2", + "ht", + "syscall", + "nx", + "mmxext", + "fxsr_opt", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "rep_good", + "nopl", + "xtopology", + "nonstop_tsc", + "cpuid", + "extd_apicid", + "aperfmperf", + "rapl", + "pni", + "pclmulqdq", + "monitor", + "ssse3", + "fma", + "cx16", + "sse4_1", + "sse4_2", + "x2apic", + "movbe", + "popcnt", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "lahf_lm", + "cmp_legacy", + "svm", + "extapic", + "cr8_legacy", + "abm", + "sse4a", + "misalignsse", + "3dnowprefetch", + "osvw", + "ibs", + "skinit", + "wdt", + "tce", + "topoext", + "perfctr_core", + "perfctr_nb", + "bpext", + "perfctr_llc", + "mwaitx", + "cpb", + "cat_l3", + "cdp_l3", + "hw_pstate", + "ssbd", + "mba", + "ibrs", + "ibpb", + "stibp", + "vmmcall", + "fsgsbase", + "bmi1", + "avx2", + "smep", + "bmi2", + "erms", + "invpcid", + "cqm", + "rdt_a", + "rdseed", + "adx", + "smap", + "clflushopt", + "clwb", + "sha_ni", + "xsaveopt", + "xsavec", + "xgetbv1", + "xsaves", + "cqm_llc", + "cqm_occup_llc", + "cqm_mbm_total", + "cqm_mbm_local", + "user_shstk", + "clzero", + "irperf", + "xsaveerptr", + "rdpru", + "wbnoinvd", + "arat", + "npt", + "lbrv", + "svm_lock", + "nrip_save", + "tsc_scale", + "vmcb_clean", + "flushbyasid", + "decodeassists", + "pausefilter", + "pfthreshold", + "avic", + "v_vmsave_vmload", + "vgif", + "v_spec_ctrl", + "umip", + "pku", + "ospke", + "vaes", + "vpclmulqdq", + "rdpid", + "overflow_recov", + "succor", + "smca", + "fsrm", + "debug_swap" + ], + "bugs": [ + "sysret_ss_attrs", + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "srso", + "ibpb_no_ret", + "spectre_v2_user", + "tsa", + "vmscape" + ], + "power_management": [ + "ts", + "ttp", + "tm", + "hwpstate", + "cpb", + "eff_freq_ro", + "[13]", + "[14]" + ], + "bogo": 7386, + "cache": 512, + "units": 12, + "page_size": 4096, + "physical_id": 0, + "siblings": 12, + "cores": 6, + "fpu": false, + "fpu_exception": false, + "cpuid_level": 16, + "write_protect": false, + "tlb_size": 2560, + "clflush_size": 64, + "cache_alignment": 64, + "address_sizes": { + "physical": "0x30", + "virtual": "0x30" + } + } + ], + "disk": [ + { + "index": 59, + "attached_to": 29, + "class_list": [ + "disk", + "block_device", + "nvme" + ], + "bus_type": { + "hex": "0096", + "name": "NVME", + "value": 150 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "vendor": { + "hex": "144d", + "value": 5197 + }, + "sub_vendor": { + "hex": "144d", + "value": 5197 + }, + "device": { + "hex": "a80a", + "name": "Samsung SSD 980 PRO 1TB", + "value": 43018 + }, + "sub_device": { + "hex": "a801", + "value": 43009 + }, + "serial": "S5GXNG0NA03595W", + "model": "Samsung SSD 980 PRO 1TB", + "sysfs_id": "/class/block/nvme0n1", + "sysfs_bus_id": "nvme0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:01.1/0000:01:00.0/nvme/nvme0", + "unix_device_names": [ + "/dev/disk/by-id/nvme-Samsung_SSD_980_PRO_1TB_S5GXNG0NA03595W", + "/dev/disk/by-id/nvme-Samsung_SSD_980_PRO_1TB_S5GXNG0NA03595W_1", + "/dev/disk/by-id/nvme-eui.002538ba015048d0", + "/dev/disk/by-path/pci-0000:01:00.0-nvme-1", + "/dev/nvme0n1" + ], + "resources": [ + { + "type": "disk_geo", + "cylinders": 953869, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 1953525168, + "value_2": 512 + } + ], + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ] + }, + { + "index": 60, + "attached_to": 50, + "class_list": [ + "disk", + "block_device", + "nvme" + ], + "bus_type": { + "hex": "0096", + "name": "NVME", + "value": 150 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "vendor": { + "hex": "1987", + "value": 6535 + }, + "sub_vendor": { + "hex": "1987", + "value": 6535 + }, + "device": { + "hex": "5012", + "name": "Sabrent Rocket Q", + "value": 20498 + }, + "sub_device": { + "hex": "5012", + "value": 20498 + }, + "serial": "BD520704027D01592244", + "model": "Sabrent Rocket Q", + "sysfs_id": "/class/block/nvme1n1", + "sysfs_bus_id": "nvme1", + "sysfs_device_link": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:04.0/0000:04:00.0/nvme/nvme1", + "unix_device_names": [ + "/dev/disk/by-id/nvme-Sabrent_Rocket_Q_BD520704027D01592244", + "/dev/disk/by-id/nvme-Sabrent_Rocket_Q_BD520704027D01592244_1", + "/dev/disk/by-id/nvme-nvme.1987-4244353230373034303237443031353932323434-53616272656e7420526f636b65742051-00000001", + "/dev/disk/by-path/pci-0000:04:00.0-nvme-1", + "/dev/disk/by-uuid/3faf915e-e14b-404b-a4d6-bcf993310c72", + "/dev/nvme1n1" + ], + "resources": [ + { + "type": "disk_geo", + "cylinders": 1907729, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 3907029168, + "value_2": 512 + } + ], + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ] + } + ], + "graphics_card": [ + { + "index": 31, + "attached_to": 16, + "class_list": [ + "graphics_card", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 7, + "number": 0 + }, + "base_class": { + "hex": "0003", + "name": "Display controller", + "value": 3 + }, + "sub_class": { + "hex": "0000", + "name": "VGA compatible controller", + "value": 0 + }, + "pci_interface": { + "hex": "0000", + "name": "VGA", + "value": 0 + }, + "vendor": { + "hex": "10de", + "name": "nVidia Corporation", + "value": 4318 + }, + "sub_vendor": { + "hex": "1458", + "value": 5208 + }, + "device": { + "hex": "2803", + "value": 10243 + }, + "sub_device": { + "hex": "4106", + "value": 16646 + }, + "revision": { + "hex": "00a1", + "value": 161 + }, + "model": "nVidia VGA compatible controller", + "sysfs_id": "/devices/pci0000:00/0000:00:03.1/0000:07:00.0", + "sysfs_bus_id": "0000:07:00.0", + "sysfs_iommu_group_id": 16, + "resources": [ + { + "type": "io", + "base": 57344, + "range": 128, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "nvidia", + "driver_module": "nvidia", + "drivers": [ + "nvidia" + ], + "driver_modules": [ + "nvidia" + ], + "module_alias": "pci:v000010DEd00002803sv00001458sd00004106bc03sc00i00" + } + ], + "hub": [ + { + "index": 65, + "attached_to": 34, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.25-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:09:00.3", + "model": "Linux 6.18.25-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-0:1.0", + "sysfs_bus_id": "3-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 71, + "attached_to": 34, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.25-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:09:00.3", + "model": "Linux 6.18.25-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb4/4-0:1.0", + "sysfs_bus_id": "4-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 74, + "attached_to": 23, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.25-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:02:00.0", + "model": "Linux 6.18.25-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-0:1.0", + "sysfs_bus_id": "1-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 81, + "attached_to": 23, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.25-xanmod1 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:02:00.0", + "model": "Linux 6.18.25-xanmod1 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb2/2-0:1.0", + "sysfs_bus_id": "2-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + } + ], + "keyboard": [ + { + "index": 70, + "attached_to": 65, + "class_list": [ + "keyboard", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0108", + "name": "Keyboard", + "value": 264 + }, + "sub_class": { + "hex": "0000", + "name": "Keyboard", + "value": 0 + }, + "vendor": { + "hex": "0c45", + "value": 3141 + }, + "device": { + "hex": "1a0d", + "name": "FC750R", + "value": 6669 + }, + "revision": { + "hex": "0000", + "name": "0.01", + "value": 0 + }, + "model": "FC750R", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-1/3-1:1.0", + "sysfs_bus_id": "3-1:1.0", + "unix_device_names": [ + "/dev/input/by-id/usb-_FC750R-event-kbd", + "/dev/input/by-path/pci-0000:09:00.3-usb-0:1:1.0-event-kbd", + "/dev/input/by-path/pci-0000:09:00.3-usbv2-0:1:1.0-event-kbd", + "/dev/input/event0" + ], + "resources": [ + { + "type": "baud", + "speed": 1500000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "keyboard", + "xkb_rules": "xfree86", + "xkb_model": "pc104" + }, + "module_alias": "usb:v0C45p1A0Dd0001dc00dsc00dp00ic03isc01ip01in00" + }, + { + "index": 73, + "attached_to": 65, + "class_list": [ + "keyboard", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0108", + "name": "Keyboard", + "value": 264 + }, + "sub_class": { + "hex": "0000", + "name": "Keyboard", + "value": 0 + }, + "vendor": { + "hex": "3710", + "name": "Pulsar", + "value": 14096 + }, + "device": { + "hex": "5406", + "name": "Pulsar 8K Dongle", + "value": 21510 + }, + "revision": { + "hex": "0000", + "name": "2.25", + "value": 0 + }, + "serial": "522098634735", + "model": "Pulsar 8K Dongle", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-2/3-2:1.2", + "sysfs_bus_id": "3-2:1.2", + "unix_device_names": [ + "/dev/input/by-id/usb-Pulsar_Pulsar_8K_Dongle_522098634735-if02-event-kbd", + "/dev/input/by-path/pci-0000:09:00.3-usb-0:2:1.2-event-kbd", + "/dev/input/by-path/pci-0000:09:00.3-usbv2-0:2:1.2-event-kbd", + "/dev/input/event11" + ], + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 2, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "keyboard", + "xkb_rules": "xfree86", + "xkb_model": "pc104" + }, + "module_alias": "usb:v3710p5406d0225dc00dsc00dp00ic03isc01ip01in02" + } + ], + "memory": [ + { + "index": 15, + "attached_to": 0, + "class_list": [ + "memory" + ], + "base_class": { + "hex": "0101", + "name": "Internally Used Class", + "value": 257 + }, + "sub_class": { + "hex": "0002", + "name": "Main Memory", + "value": 2 + }, + "model": "Main Memory", + "resources": [ + { + "type": "phys_mem", + "range": 34359738368 + } + ] + } + ], + "monitor": [ + { + "index": 57, + "attached_to": 31, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "1e73", + "value": 7795 + }, + "device": { + "hex": "0001", + "name": "edid.build", + "value": 1 + }, + "serial": "1", + "model": "edid.build", + "resources": [ + { + "type": "monitor", + "width": 1920, + "height": 1080, + "vertical_frequency": 60, + "interlaced": false + } + ], + "detail": { + "manufacture_year": 2026, + "manufacture_week": 1, + "vertical_sync": { + "min": 59, + "max": 120 + }, + "horizontal_sync": { + "min": 66, + "max": 255 + }, + "horizontal_sync_timings": { + "disp": 0, + "sync_start": 0, + "sync_end": 0, + "total": 0 + }, + "vertical_sync_timings": { + "disp": 0, + "sync_start": 0, + "sync_end": 0, + "total": 0 + }, + "clock": 285250, + "width": 1920, + "height": 1080, + "width_millimetres": 0, + "height_millimetres": 0, + "horizontal_flag": 0, + "vertical_flag": 0, + "vendor": "", + "name": "edid.build" + }, + "driver_info": { + "type": "display", + "width": 1920, + "height": 1080, + "vertical_sync": { + "min": 59, + "max": 120 + }, + "horizontal_sync": { + "min": 66, + "max": 255 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 0, + "sync_start": 0, + "sync_end": 0, + "total": 0 + }, + "vertical_sync_timings": { + "disp": 0, + "sync_start": 0, + "sync_end": 0, + "total": 0 + }, + "horizontal_flag": 0, + "vertical_flag": 0 + } + }, + { + "index": 58, + "attached_to": 31, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "10ac", + "name": "DELL", + "value": 4268 + }, + "device": { + "hex": "4282", + "name": "DELL G2723HN", + "value": 17026 + }, + "serial": "5B0C3H3", + "model": "DELL G2723HN", + "resources": [ + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 1280, + "height": 1024, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 1920, + "height": 1080, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 720, + "height": 400, + "vertical_frequency": 70, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "size", + "unit": "mm", + "value_1": 597, + "value_2": 336 + } + ], + "detail": { + "manufacture_year": 2022, + "manufacture_week": 1, + "vertical_sync": { + "min": 48, + "max": 165 + }, + "horizontal_sync": { + "min": 200, + "max": 200 + }, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 2008, + "sync_end": 2052, + "total": 2200 + }, + "vertical_sync_timings": { + "disp": 1080, + "sync_start": 1084, + "sync_end": 1089, + "total": 1125 + }, + "clock": 148500, + "width": 1920, + "height": 1080, + "width_millimetres": 597, + "height_millimetres": 336, + "horizontal_flag": 43, + "vertical_flag": 43, + "vendor": "", + "name": "DELL G2723HN" + }, + "driver_info": { + "type": "display", + "width": 1920, + "height": 1080, + "vertical_sync": { + "min": 48, + "max": 165 + }, + "horizontal_sync": { + "min": 200, + "max": 200 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 2008, + "sync_end": 2052, + "total": 2200 + }, + "vertical_sync_timings": { + "disp": 1080, + "sync_start": 1084, + "sync_end": 1089, + "total": 1125 + }, + "horizontal_flag": 43, + "vertical_flag": 43 + } + } + ], + "mouse": [ + { + "index": 64, + "attached_to": 65, + "class_list": [ + "mouse", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0105", + "name": "Mouse", + "value": 261 + }, + "sub_class": { + "hex": "0003", + "name": "USB Mouse", + "value": 3 + }, + "vendor": { + "hex": "3710", + "name": "Pulsar", + "value": 14096 + }, + "device": { + "hex": "5406", + "name": "Pulsar 8K Dongle", + "value": 21510 + }, + "revision": { + "hex": "0000", + "name": "2.25", + "value": 0 + }, + "serial": "522098634735", + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Pulsar 8K Dongle", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-2/3-2:1.1", + "sysfs_bus_id": "3-2:1.1", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse1", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "mouse", + "db_entry_0": [ + "explorerps/2", + "exps2" + ], + "xf86": "explorerps/2", + "gpm": "exps2", + "buttons": -1, + "wheels": -1 + }, + "module_alias": "usb:v3710p5406d0225dc00dsc00dp00ic03isc00ip00in01" + }, + { + "index": 66, + "attached_to": 65, + "class_list": [ + "mouse", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0105", + "name": "Mouse", + "value": 261 + }, + "sub_class": { + "hex": "0003", + "name": "USB Mouse", + "value": 3 + }, + "vendor": { + "hex": "28de", + "name": "Valve Software", + "value": 10462 + }, + "device": { + "hex": "1304", + "name": "Steam Controller Puck", + "value": 4868 + }, + "revision": { + "hex": "0000", + "name": "0.02", + "value": 0 + }, + "serial": "FXB996050383B", + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Valve Software Steam Controller Puck", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-3/3-3:1.5", + "sysfs_bus_id": "3-3:1.5", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse5", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 5, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "mouse", + "db_entry_0": [ + "explorerps/2", + "exps2" + ], + "xf86": "explorerps/2", + "gpm": "exps2", + "buttons": -1, + "wheels": -1 + }, + "module_alias": "usb:v28DEp1304d0002dcEFdsc02dp01ic03isc00ip00in05" + }, + { + "index": 67, + "attached_to": 65, + "class_list": [ + "mouse", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0105", + "name": "Mouse", + "value": 261 + }, + "sub_class": { + "hex": "0003", + "name": "USB Mouse", + "value": 3 + }, + "vendor": { + "hex": "28de", + "name": "Valve Software", + "value": 10462 + }, + "device": { + "hex": "1304", + "name": "Steam Controller Puck", + "value": 4868 + }, + "revision": { + "hex": "0000", + "name": "0.02", + "value": 0 + }, + "serial": "FXB996050383B", + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Valve Software Steam Controller Puck", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-3/3-3:1.3", + "sysfs_bus_id": "3-3:1.3", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse3", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 3, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "mouse", + "db_entry_0": [ + "explorerps/2", + "exps2" + ], + "xf86": "explorerps/2", + "gpm": "exps2", + "buttons": -1, + "wheels": -1 + }, + "module_alias": "usb:v28DEp1304d0002dcEFdsc02dp01ic03isc00ip00in03" + }, + { + "index": 77, + "attached_to": 65, + "class_list": [ + "mouse", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0105", + "name": "Mouse", + "value": 261 + }, + "sub_class": { + "hex": "0003", + "name": "USB Mouse", + "value": 3 + }, + "vendor": { + "hex": "3710", + "name": "Pulsar", + "value": 14096 + }, + "device": { + "hex": "5406", + "name": "Pulsar 8K Dongle", + "value": 21510 + }, + "revision": { + "hex": "0000", + "name": "2.25", + "value": 0 + }, + "serial": "522098634735", + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Pulsar 8K Dongle", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-2/3-2:1.0", + "sysfs_bus_id": "3-2:1.0", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 2, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "mouse", + "db_entry_0": [ + "explorerps/2", + "exps2" + ], + "xf86": "explorerps/2", + "gpm": "exps2", + "buttons": -1, + "wheels": -1 + }, + "module_alias": "usb:v3710p5406d0225dc00dsc00dp00ic03isc01ip02in00" + }, + { + "index": 78, + "attached_to": 65, + "class_list": [ + "mouse", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0105", + "name": "Mouse", + "value": 261 + }, + "sub_class": { + "hex": "0003", + "name": "USB Mouse", + "value": 3 + }, + "vendor": { + "hex": "28de", + "name": "Valve Software", + "value": 10462 + }, + "device": { + "hex": "1304", + "name": "Steam Controller Puck", + "value": 4868 + }, + "revision": { + "hex": "0000", + "name": "0.02", + "value": 0 + }, + "serial": "FXB996050383B", + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Valve Software Steam Controller Puck", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-3/3-3:1.4", + "sysfs_bus_id": "3-3:1.4", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse4", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 4, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "mouse", + "db_entry_0": [ + "explorerps/2", + "exps2" + ], + "xf86": "explorerps/2", + "gpm": "exps2", + "buttons": -1, + "wheels": -1 + }, + "module_alias": "usb:v28DEp1304d0002dcEFdsc02dp01ic03isc00ip00in04" + }, + { + "index": 79, + "attached_to": 65, + "class_list": [ + "mouse", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0105", + "name": "Mouse", + "value": 261 + }, + "sub_class": { + "hex": "0003", + "name": "USB Mouse", + "value": 3 + }, + "vendor": { + "hex": "28de", + "name": "Valve Software", + "value": 10462 + }, + "device": { + "hex": "1304", + "name": "Steam Controller Puck", + "value": 4868 + }, + "revision": { + "hex": "0000", + "name": "0.02", + "value": 0 + }, + "serial": "FXB996050383B", + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Valve Software Steam Controller Puck", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-3/3-3:1.2", + "sysfs_bus_id": "3-3:1.2", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse2", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 2, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "mouse", + "db_entry_0": [ + "explorerps/2", + "exps2" + ], + "xf86": "explorerps/2", + "gpm": "exps2", + "buttons": -1, + "wheels": -1 + }, + "module_alias": "usb:v28DEp1304d0002dcEFdsc02dp01ic03isc00ip00in02" + } + ], + "network_controller": [ + { + "index": 39, + "attached_to": 27, + "class_list": [ + "network_controller", + "pci", + "wlan_card" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 6, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0082", + "name": "WLAN controller", + "value": 130 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "device": { + "hex": "2723", + "value": 10019 + }, + "sub_device": { + "hex": "0084", + "value": 132 + }, + "revision": { + "hex": "001a", + "value": 26 + }, + "model": "Intel WLAN controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:09.0/0000:06:00.0", + "sysfs_bus_id": "0000:06:00.0", + "sysfs_iommu_group_id": 15, + "unix_device_names": [ + "wlp6s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 55 + }, + { + "type": "phwaddr", + "address": 51 + }, + { + "type": "wlan", + "channels": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "12", + "13", + "36", + "40", + "44", + "48", + "52", + "56", + "60", + "64", + "100", + "104", + "108", + "112", + "116", + "120", + "124", + "128", + "132", + "136", + "140" + ], + "frequencies": [ + "2.412", + "2.417", + "2.422", + "2.427", + "2.432", + "2.437", + "2.442", + "2.447", + "2.452", + "2.457", + "2.462", + "2.467", + "2.472", + "5.18", + "5.2", + "5.22", + "5.24", + "5.26", + "5.28", + "5.3", + "5.32", + "5.5", + "5.52", + "5.54", + "5.56", + "5.58", + "5.6", + "5.62", + "5.64", + "5.66", + "5.68", + "5.7" + ], + "auth_modes": [ + "open", + "sharedkey", + "wpa-psk", + "wpa-eap" + ], + "enc_modes": [ + "WEP40", + "WEP104", + "TKIP", + "CCMP" + ] + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "iwlwifi", + "driver_module": "iwlwifi", + "drivers": [ + "iwlwifi" + ], + "driver_modules": [ + "iwlwifi" + ], + "module_alias": "pci:v00008086d00002723sv00008086sd00000084bc02sc80i00" + }, + { + "index": 45, + "attached_to": 41, + "class_list": [ + "network_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 5, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0000", + "name": "Ethernet controller", + "value": 0 + }, + "vendor": { + "hex": "10ec", + "value": 4332 + }, + "sub_vendor": { + "hex": "1458", + "value": 5208 + }, + "device": { + "hex": "8125", + "value": 33061 + }, + "sub_device": { + "hex": "e000", + "value": 57344 + }, + "revision": { + "hex": "0005", + "value": 5 + }, + "model": "Ethernet controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:08.0/0000:05:00.0", + "sysfs_bus_id": "0000:05:00.0", + "sysfs_iommu_group_id": 15, + "unix_device_names": [ + "eno1" + ], + "resources": [ + { + "type": "hwaddr", + "address": 49 + }, + { + "type": "io", + "base": 61440, + "range": 256, + "enabled": true, + "access": "read_write" + }, + { + "type": "phwaddr", + "address": 49 + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "r8169", + "driver_module": "r8169", + "drivers": [ + "r8169" + ], + "driver_modules": [ + "r8169" + ], + "module_alias": "pci:v000010ECd00008125sv00001458sd0000E000bc02sc00i00", + "label": "RTL8111E Giga LAN" + } + ], + "network_interface": [ + { + "index": 84, + "attached_to": 39, + "class_list": [ + "network_interface" + ], + "base_class": { + "hex": "0107", + "name": "Network Interface", + "value": 263 + }, + "sub_class": { + "hex": "0001", + "name": "Ethernet", + "value": 1 + }, + "model": "Ethernet network interface", + "sysfs_id": "/class/net/wlp6s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:09.0/0000:06:00.0", + "unix_device_names": [ + "wlp6s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 55 + }, + { + "type": "phwaddr", + "address": 51 + } + ], + "driver": "iwlwifi", + "driver_module": "iwlwifi", + "drivers": [ + "iwlwifi" + ], + "driver_modules": [ + "iwlwifi" + ] + }, + { + "index": 85, + "attached_to": 0, + "class_list": [ + "network_interface" + ], + "base_class": { + "hex": "0107", + "name": "Network Interface", + "value": 263 + }, + "sub_class": { + "hex": "0000", + "name": "Loopback", + "value": 0 + }, + "model": "Loopback network interface", + "sysfs_id": "/class/net/lo", + "unix_device_names": [ + "lo" + ] + }, + { + "index": 87, + "attached_to": 45, + "class_list": [ + "network_interface" + ], + "base_class": { + "hex": "0107", + "name": "Network Interface", + "value": 263 + }, + "sub_class": { + "hex": "0001", + "name": "Ethernet", + "value": 1 + }, + "model": "Ethernet network interface", + "sysfs_id": "/class/net/eno1", + "sysfs_device_link": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:08.0/0000:05:00.0", + "unix_device_names": [ + "eno1" + ], + "resources": [ + { + "type": "hwaddr", + "address": 49 + }, + { + "type": "phwaddr", + "address": 49 + } + ], + "driver": "r8169", + "driver_module": "r8169", + "drivers": [ + "r8169" + ], + "driver_modules": [ + "r8169" + ] + } + ], + "pci": [ + { + "index": 19, + "attached_to": 36, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 9, + "number": 0 + }, + "base_class": { + "hex": "0013", + "value": 19 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1485", + "value": 5253 + }, + "sub_device": { + "hex": "1485", + "value": 5253 + }, + "model": "unknown unknown", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.0", + "sysfs_bus_id": "0000:09:00.0", + "sysfs_iommu_group_id": 18, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001485sv00001022sd00001485bc13sc00i00" + }, + { + "index": 25, + "attached_to": 48, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 8, + "number": 0 + }, + "base_class": { + "hex": "0013", + "value": 19 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "148a", + "value": 5258 + }, + "sub_device": { + "hex": "148a", + "value": 5258 + }, + "model": "unknown unknown", + "sysfs_id": "/devices/pci0000:00/0000:00:07.1/0000:08:00.0", + "sysfs_bus_id": "0000:08:00.0", + "sysfs_iommu_group_id": 17, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000148Asv00001022sd0000148Abc13sc00i00" + }, + { + "index": 32, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0008", + "name": "Generic system peripheral", + "value": 8 + }, + "sub_class": { + "hex": "0006", + "value": 6 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1481", + "value": 5249 + }, + "sub_device": { + "hex": "1481", + "value": 5249 + }, + "model": "AMD Generic system peripheral", + "sysfs_id": "/devices/pci0000:00/0000:00:00.2", + "sysfs_bus_id": "0000:00:00.2", + "detail": { + "function": 2, + "command": 1088, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001481sv00001022sd00001481bc08sc06i00" + }, + { + "index": 38, + "attached_to": 36, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 9, + "number": 0 + }, + "base_class": { + "hex": "0010", + "name": "Encryption controller", + "value": 16 + }, + "sub_class": { + "hex": "0080", + "name": "Encryption controller", + "value": 128 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1486", + "value": 5254 + }, + "sub_device": { + "hex": "1486", + "value": 5254 + }, + "model": "AMD Encryption controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.1", + "sysfs_bus_id": "0000:09:00.1", + "sysfs_iommu_group_id": 19, + "detail": { + "function": 1, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "ccp", + "driver_module": "ccp", + "drivers": [ + "ccp" + ], + "driver_modules": [ + "ccp" + ], + "module_alias": "pci:v00001022d00001486sv00001022sd00001486bc10sc80i00" + }, + { + "index": 54, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0005", + "name": "SMBus", + "value": 5 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1458", + "value": 5208 + }, + "device": { + "hex": "790b", + "value": 30987 + }, + "sub_device": { + "hex": "5001", + "value": 20481 + }, + "revision": { + "hex": "0061", + "value": 97 + }, + "model": "AMD SMBus", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0", + "sysfs_bus_id": "0000:00:14.0", + "sysfs_iommu_group_id": 12, + "detail": { + "function": 0, + "command": 1027, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000790Bsv00001458sd00005001bc0Csc05i00" + } + ], + "sound": [ + { + "index": 49, + "attached_to": 16, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 7, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0003", + "value": 3 + }, + "vendor": { + "hex": "10de", + "name": "nVidia Corporation", + "value": 4318 + }, + "sub_vendor": { + "hex": "1458", + "value": 5208 + }, + "device": { + "hex": "22bd", + "value": 8893 + }, + "sub_device": { + "hex": "4106", + "value": 16646 + }, + "revision": { + "hex": "00a1", + "value": 161 + }, + "model": "nVidia Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:03.1/0000:07:00.1", + "sysfs_bus_id": "0000:07:00.1", + "sysfs_iommu_group_id": 16, + "detail": { + "function": 1, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "snd_hda_intel", + "driver_module": "snd_hda_intel", + "drivers": [ + "snd_hda_intel" + ], + "driver_modules": [ + "snd_hda_intel" + ], + "module_alias": "pci:v000010DEd000022BDsv00001458sd00004106bc04sc03i00" + }, + { + "index": 53, + "attached_to": 36, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 9, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0003", + "value": 3 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1458", + "value": 5208 + }, + "device": { + "hex": "1487", + "value": 5255 + }, + "sub_device": { + "hex": "a0c3", + "value": 41155 + }, + "model": "AMD Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.4", + "sysfs_bus_id": "0000:09:00.4", + "sysfs_iommu_group_id": 21, + "detail": { + "function": 4, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "snd_hda_intel", + "driver_module": "snd_hda_intel", + "drivers": [ + "snd_hda_intel" + ], + "driver_modules": [ + "snd_hda_intel" + ], + "module_alias": "pci:v00001022d00001487sv00001458sd0000A0C3bc04sc03i00", + "label": "Realtek ALC1220" + } + ], + "storage_controller": [ + { + "index": 29, + "attached_to": 44, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 1, + "number": 0 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0008", + "value": 8 + }, + "pci_interface": { + "hex": "0002", + "value": 2 + }, + "vendor": { + "hex": "144d", + "value": 5197 + }, + "sub_vendor": { + "hex": "144d", + "value": 5197 + }, + "device": { + "hex": "a80a", + "value": 43018 + }, + "sub_device": { + "hex": "a801", + "value": 43009 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.1/0000:01:00.0", + "sysfs_bus_id": "0000:01:00.0", + "sysfs_iommu_group_id": 14, + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 2 + }, + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ], + "module_alias": "pci:v0000144Dd0000A80Asv0000144Dsd0000A801bc01sc08i02" + }, + { + "index": 43, + "attached_to": 21, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 0 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0006", + "value": 6 + }, + "pci_interface": { + "hex": "0001", + "value": 1 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1b21", + "value": 6945 + }, + "device": { + "hex": "43eb", + "value": 17387 + }, + "sub_device": { + "hex": "1062", + "value": 4194 + }, + "model": "AMD Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.1", + "sysfs_bus_id": "0000:02:00.1", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 1, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 1 + }, + "driver": "ahci", + "driver_module": "ahci", + "drivers": [ + "ahci" + ], + "driver_modules": [ + "ahci" + ], + "module_alias": "pci:v00001022d000043EBsv00001B21sd00001062bc01sc06i01" + }, + { + "index": 50, + "attached_to": 47, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 0 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0008", + "value": 8 + }, + "pci_interface": { + "hex": "0002", + "value": 2 + }, + "vendor": { + "hex": "1987", + "value": 6535 + }, + "sub_vendor": { + "hex": "1987", + "value": 6535 + }, + "device": { + "hex": "5012", + "value": 20498 + }, + "sub_device": { + "hex": "5012", + "value": 20498 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:04.0/0000:04:00.0", + "sysfs_bus_id": "0000:04:00.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 2 + }, + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ], + "module_alias": "pci:v00001987d00005012sv00001987sd00005012bc01sc08i02" + } + ], + "system": { + "form_factor": "desktop" + }, + "usb": [ + { + "index": 61, + "attached_to": 65, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "28de", + "name": "Valve Software", + "value": 10462 + }, + "device": { + "hex": "1304", + "name": "Steam Controller Puck", + "value": 4868 + }, + "revision": { + "hex": "0000", + "name": "0.02", + "value": 0 + }, + "serial": "FXB996050383B", + "model": "Valve Software Steam Controller Puck", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-3/3-3:1.0", + "sysfs_bus_id": "3-3:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "interface_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0, + "interface_association": { + "function_class": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "function_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "function_protocol": 0, + "interface_count": 2, + "first_interface": 0 + } + }, + "hotplug": "usb", + "driver": "cdc_acm", + "driver_module": "cdc_acm", + "drivers": [ + "cdc_acm" + ], + "driver_modules": [ + "cdc_acm" + ], + "module_alias": "usb:v28DEp1304d0002dcEFdsc02dp01ic02isc02ip00in00" + }, + { + "index": 62, + "attached_to": 74, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "1050", + "name": "Yubico", + "value": 4176 + }, + "device": { + "hex": "0406", + "name": "YubiKey FIDO+CCID", + "value": 1030 + }, + "revision": { + "hex": "0000", + "name": "5.74", + "value": 0 + }, + "model": "Yubico YubiKey FIDO+CCID", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-2/1-2:1.0", + "sysfs_bus_id": "1-2:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v1050p0406d0574dc00dsc00dp00ic03isc00ip00in00" + }, + { + "index": 68, + "attached_to": 65, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "28de", + "name": "Valve Software", + "value": 10462 + }, + "device": { + "hex": "1304", + "name": "Steam Controller Puck", + "value": 4868 + }, + "revision": { + "hex": "0000", + "name": "0.02", + "value": 0 + }, + "serial": "FXB996050383B", + "model": "Valve Software Steam Controller Puck", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-3/3-3:1.1", + "sysfs_bus_id": "3-3:1.1", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "000a", + "name": "data", + "value": 10 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 1, + "interface_alternate_setting": 0, + "interface_association": { + "function_class": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "function_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "function_protocol": 0, + "interface_count": 2, + "first_interface": 0 + } + }, + "hotplug": "usb", + "driver": "cdc_acm", + "driver_module": "cdc_acm", + "drivers": [ + "cdc_acm" + ], + "driver_modules": [ + "cdc_acm" + ], + "module_alias": "usb:v28DEp1304d0002dcEFdsc02dp01ic0Aisc00ip00in01" + }, + { + "index": 69, + "attached_to": 74, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "048d", + "name": "Integrated Technology Express", + "value": 1165 + }, + "device": { + "hex": "5702", + "name": "ITE Device", + "value": 22274 + }, + "revision": { + "hex": "0000", + "name": "0.01", + "value": 0 + }, + "model": "Integrated Technology Express ITE Device", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-7/1-7:1.0", + "sysfs_bus_id": "1-7:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v048Dp5702d0001dc00dsc00dp00ic03isc00ip00in00" + }, + { + "index": 75, + "attached_to": 65, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "28de", + "name": "Valve Software", + "value": 10462 + }, + "device": { + "hex": "1304", + "name": "Steam Controller Puck", + "value": 4868 + }, + "revision": { + "hex": "0000", + "name": "0.02", + "value": 0 + }, + "serial": "FXB996050383B", + "model": "Valve Software Steam Controller Puck", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-3/3-3:1.6", + "sysfs_bus_id": "3-3:1.6", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 6, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v28DEp1304d0002dcEFdsc02dp01ic03isc00ip00in06" + }, + { + "index": 80, + "attached_to": 65, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "0c45", + "value": 3141 + }, + "device": { + "hex": "1a0d", + "name": "FC750R", + "value": 6669 + }, + "revision": { + "hex": "0000", + "name": "0.01", + "value": 0 + }, + "model": "FC750R", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3/usb3/3-1/3-1:1.1", + "sysfs_bus_id": "3-1:1.1", + "unix_device_names": [ + "/dev/input/event1" + ], + "resources": [ + { + "type": "baud", + "speed": 1500000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v0C45p1A0Dd0001dc00dsc00dp00ic03isc00ip00in01" + } + ], + "usb_controller": [ + { + "index": 23, + "attached_to": 21, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1b21", + "value": 6945 + }, + "device": { + "hex": "43ee", + "value": 17390 + }, + "sub_device": { + "hex": "1142", + "value": 4418 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0", + "sysfs_bus_id": "0000:02:00.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00001022d000043EEsv00001B21sd00001142bc0Csc03i30" + }, + { + "index": 34, + "attached_to": 36, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 9, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1458", + "value": 5208 + }, + "device": { + "hex": "149c", + "value": 5276 + }, + "sub_device": { + "hex": "5007", + "value": 20487 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:09:00.3", + "sysfs_bus_id": "0000:09:00.3", + "sysfs_iommu_group_id": 20, + "detail": { + "function": 3, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00001022d0000149Csv00001458sd00005007bc0Csc03i30" + } + ] + }, + "smbios": { + "bios": { + "handle": 0, + "vendor": "American Megatrends International, LLC.", + "version": "F21", + "date": "10/28/2025", + "features": [ + "PCI supported", + "BIOS flashable", + "BIOS shadowing allowed", + "CD boot supported", + "Selectable boot supported", + "BIOS ROM socketed", + "EDD spec supported", + "1.2MB NEC 9800 Japanese Floppy supported", + "1.2MB Toshiba Japanese Floppy supported", + "360kB Floppy supported", + "1.2MB Floppy supported", + "720kB Floppy supported", + "2.88MB Floppy supported", + "Print Screen supported", + "Serial Services supported", + "Printer Services supported", + "CGA/Mono Video supported", + "USB Legacy supported", + "BIOS Boot Spec supported" + ], + "start_address": "0xf0000", + "rom_size": 16777216 + }, + "board": { + "handle": 2, + "manufacturer": "Gigabyte Technology Co., Ltd.", + "product": "B550I AORUS PRO AX", + "version": "Default string", + "board_type": { + "hex": "000a", + "name": "Motherboard", + "value": 10 + }, + "features": [ + "Hosting Board", + "Replaceable" + ], + "location": "Default string", + "chassis": 3 + }, + "cache": [ + { + "handle": 14, + "socket": "L1 - Cache", + "size_max": 384, + "size_current": 384, + "speed": 1, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0006", + "name": "Multi-bit", + "value": 6 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + }, + { + "handle": 15, + "socket": "L2 - Cache", + "size_max": 3072, + "size_current": 3072, + "speed": 1, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 1, + "ecc": { + "hex": "0006", + "name": "Multi-bit", + "value": 6 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + }, + { + "handle": 16, + "socket": "L3 - Cache", + "size_max": 32768, + "size_current": 32768, + "speed": 1, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 2, + "ecc": { + "hex": "0006", + "name": "Multi-bit", + "value": 6 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0008", + "name": "16-way Set-Associative", + "value": 8 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + } + ], + "chassis": [ + { + "handle": 3, + "manufacturer": "Default string", + "version": "Default string", + "chassis_type": { + "hex": "0003", + "name": "Desktop", + "value": 3 + }, + "lock_present": false, + "bootup_state": { + "hex": "0003", + "name": "Safe", + "value": 3 + }, + "power_state": { + "hex": "0003", + "name": "Safe", + "value": 3 + }, + "thermal_state": { + "hex": "0003", + "name": "Safe", + "value": 3 + }, + "security_state": { + "hex": "0003", + "name": "None", + "value": 3 + }, + "oem": "0x0" + } + ], + "config": { + "handle": 6, + "options": [ + "Default string" + ] + }, + "language": [ + { + "handle": 53, + "languages": [ + "en|US|iso8859-1", + "zh|TW|unicode", + "zh|CN|unicode", + "ru|RU|iso8859-5", + "de|DE|iso8859-1", + "ja|JP|unicode", + "ko|KR|unicode", + "es|ES|iso8859-1", + "fr|FR|iso8859-1", + "it|IT|iso8859-1", + "pt|PT|iso8859-1", + "vi|VI|iso8859-1", + "id|ID|iso8859-1", + "tr|TR|iso8859-1", + "pl|PL|iso8859-1" + ] + } + ], + "memory_array": [ + { + "handle": 11, + "location": { + "hex": "0003", + "name": "Motherboard", + "value": 3 + }, + "usage": { + "hex": "0003", + "name": "System memory", + "value": 3 + }, + "ecc": { + "hex": "0003", + "name": "None", + "value": 3 + }, + "max_size": "0x8000000", + "error_handle": 10, + "slots": 4 + } + ], + "memory_array_mapped_address": [ + { + "handle": 12, + "array_handle": 11, + "start_address": "0x0", + "end_address": "0xc0000000", + "part_width": 2 + }, + { + "handle": 13, + "array_handle": 11, + "start_address": "0x100000000", + "end_address": "0x840000000", + "part_width": 2 + } + ], + "memory_device": [ + { + "handle": 19, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL A", + "manufacturer": "Unknown", + "part_number": "Unknown", + "array_handle": 11, + "error_handle": 18, + "width": 0, + "ecc_bits": 0, + "size": 0, + "form_factor": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "set": 0, + "memory_type": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "memory_type_details": [ + "Unknown" + ], + "speed": 0 + }, + { + "handle": 21, + "location": "DIMM 1", + "bank_location": "P0 CHANNEL A", + "manufacturer": "Unknown", + "part_number": "BL16G32C16U4W.M16FE1", + "array_handle": 11, + "error_handle": 20, + "width": 64, + "ecc_bits": 0, + "size": 16777216, + "form_factor": { + "hex": "0009", + "name": "DIMM", + "value": 9 + }, + "set": 0, + "memory_type": { + "hex": "001a", + "name": "Other", + "value": 26 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 3200 + }, + { + "handle": 24, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL B", + "manufacturer": "Unknown", + "part_number": "Unknown", + "array_handle": 11, + "error_handle": 23, + "width": 0, + "ecc_bits": 0, + "size": 0, + "form_factor": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "set": 0, + "memory_type": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "memory_type_details": [ + "Unknown" + ], + "speed": 0 + }, + { + "handle": 26, + "location": "DIMM 1", + "bank_location": "P0 CHANNEL B", + "manufacturer": "Unknown", + "part_number": "BL16G32C16U4W.M16FE1", + "array_handle": 11, + "error_handle": 25, + "width": 64, + "ecc_bits": 0, + "size": 16777216, + "form_factor": { + "hex": "0009", + "name": "DIMM", + "value": 9 + }, + "set": 0, + "memory_type": { + "hex": "001a", + "name": "Other", + "value": 26 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 3200 + } + ], + "memory_device_mapped_address": [ + { + "handle": 22, + "memory_device_handle": 21, + "array_map_handle": 13, + "start_address": "0x0", + "end_address": "0x800000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + }, + { + "handle": 27, + "memory_device_handle": 26, + "array_map_handle": 13, + "start_address": "0x0", + "end_address": "0x800000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + } + ], + "memory_error": [ + { + "handle": 10, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 18, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 20, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 23, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 25, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + } + ], + "onboard": [ + { + "handle": 4, + "devices": [ + { + "name": "To Be Filled By O.E.M.", + "type": { + "hex": "0003", + "name": "Video", + "value": 3 + }, + "enabled": true + } + ] + } + ], + "port_connector": [ + { + "handle": 28, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J1500", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 3.2" + }, + { + "handle": 29, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J1501", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 3.2" + }, + { + "handle": 30, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J1502", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB-C" + }, + { + "handle": 31, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J1506", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 3.2" + }, + { + "handle": 32, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J1507", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 3.2" + }, + { + "handle": 33, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J1301", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 3.2" + }, + { + "handle": 34, + "port_type": { + "hex": "001f", + "name": "Network Port", + "value": 31 + }, + "internal_reference_designator": "J1301", + "external_connector_type": { + "hex": "000b", + "name": "RJ-45", + "value": 11 + }, + "external_reference_designator": "Network" + }, + { + "handle": 35, + "port_type": { + "hex": "0020", + "name": "Other", + "value": 32 + }, + "internal_connector_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "J1704", + "external_reference_designator": "iSATA" + }, + { + "handle": 36, + "port_type": { + "hex": "0020", + "name": "Other", + "value": 32 + }, + "internal_connector_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "J1705", + "external_reference_designator": "iSATA" + }, + { + "handle": 37, + "port_type": { + "hex": "0020", + "name": "Other", + "value": 32 + }, + "internal_connector_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "J1700", + "external_reference_designator": "iSATA" + }, + { + "handle": 38, + "port_type": { + "hex": "0020", + "name": "Other", + "value": 32 + }, + "internal_connector_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "J1702", + "external_reference_designator": "iSATA" + }, + { + "handle": 39, + "port_type": { + "hex": "0020", + "name": "Other", + "value": 32 + }, + "internal_connector_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "J1703", + "external_reference_designator": "iSATA" + }, + { + "handle": 40, + "port_type": { + "hex": "0020", + "name": "Other", + "value": 32 + }, + "internal_connector_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "internal_reference_designator": "J1706", + "external_reference_designator": "iSATA" + }, + { + "handle": 41, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J1100", + "external_reference_designator": "HDMI" + }, + { + "handle": 42, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J1101", + "external_reference_designator": "HDMI" + }, + { + "handle": 43, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J1102", + "external_reference_designator": "DP" + }, + { + "handle": 44, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J2100", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Front Audio" + }, + { + "handle": 45, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J2101", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Audio Jack" + }, + { + "handle": 46, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J2102", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "HD Audio HDR" + } + ], + "processor": [ + { + "handle": 17, + "socket": "AM4", + "socket_type": { + "hex": "0031", + "name": "Other", + "value": 49 + }, + "socket_populated": true, + "manufacturer": "Advanced Micro Devices, Inc.", + "version": "AMD Ryzen 5 5600X 6-Core Processor", + "part": "Unknown", + "processor_type": { + "hex": "0003", + "name": "CPU", + "value": 3 + }, + "processor_family": { + "hex": "006b", + "name": "Other", + "value": 107 + }, + "processor_status": { + "hex": "0001", + "name": "Enabled", + "value": 1 + }, + "clock_ext": 100, + "clock_max": 4650, + "cache_handle_l1": 14, + "cache_handle_l2": 15, + "cache_handle_l3": 16 + } + ], + "slot": [ + { + "handle": 47, + "designation": "J10", + "slot_type": { + "hex": "00aa", + "name": "Other", + "value": 170 + }, + "bus_width": { + "hex": "000d", + "name": "Other", + "value": 13 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 12, + "features": [ + "3.3 V", + "PME#" + ] + }, + { + "handle": 48, + "designation": "J3700 M.2 Slot", + "slot_type": { + "hex": "00a6", + "name": "Other", + "value": 166 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 14, + "features": [ + "3.3 V", + "PME#" + ] + }, + { + "handle": 49, + "designation": "J3708 PCIE x4 slot from Promontory", + "slot_type": { + "hex": "00a8", + "name": "Other", + "value": 168 + }, + "bus_width": { + "hex": "000a", + "name": "Other", + "value": 10 + }, + "usage": { + "hex": "0003", + "name": "Available", + "value": 3 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 128, + "features": [ + "3.3 V", + "PME#" + ] + } + ], + "system": { + "handle": 1, + "manufacturer": "Gigabyte Technology Co., Ltd.", + "product": "B550I AORUS PRO AX", + "version": "Default string", + "wake_up": { + "hex": "0006", + "name": "Power Switch", + "value": 6 + } + } + } +} \ No newline at end of file diff --git a/nixos/hosts/yui/programs.nix b/nixos/hosts/yui/programs.nix index 24f4618e..592c3765 100644 --- a/nixos/hosts/yui/programs.nix +++ b/nixos/hosts/yui/programs.nix @@ -24,7 +24,9 @@ in pkgs.prismlauncher - pkgsSelf.edopro + # pkgsSelf.edopro pkgsSelf.jazz-jackrabbit-2 + + pkgs.android-tools ]; } diff --git a/nixos-config/hosts/yui/sunshine.nix b/nixos/hosts/yui/sunshine.nix similarity index 88% rename from nixos-config/hosts/yui/sunshine.nix rename to nixos/hosts/yui/sunshine.nix index ed6615db..6606e00d 100644 --- a/nixos-config/hosts/yui/sunshine.nix +++ b/nixos/hosts/yui/sunshine.nix @@ -1,12 +1,13 @@ { - flake-inputs, config, + inputs', + lib, pkgs, ... }: let - inherit (flake-inputs.self.pkgs-lib.${pkgs.stdenv.hostPlatform.system}) writeNuWith; - inherit (flake-inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) edid-generator; + inherit (inputs'.self.builders) writeNuWith; + inherit (inputs'.self.packages) edid-generator; in { nix.settings = { @@ -14,6 +15,20 @@ in trusted-public-keys = [ "cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M=" ]; }; + # These packages are required for nvenc + unfree = { + allowUnfreePackages = [ + "cuda-merged" + "libnpp" + ]; + + extraPredicates = [ + (pkg: lib.strings.hasPrefix "cuda_" (lib.getName pkg)) + (pkg: lib.strings.hasPrefix "libcu" (lib.getName pkg)) + (pkg: lib.strings.hasPrefix "libnv" (lib.getName pkg)) + ]; + }; + # Create a virtual display to render games for sunshine on hardware.display = { edid.packages = [ @@ -106,7 +121,7 @@ in { name = "Steam Big Picture"; cmd = - (runScript "run-steam" /* nu */ '' + (runScript "run-steam" '' swaymsg output DP-2 enable swaymsg workspace sunshine gaps outer 0 swaymsg workspace sunshine gaps inner 0 @@ -139,7 +154,7 @@ in prep-cmd = [ { undo = - (runScript "close-steam" /* nu */ '' + (runScript "close-steam" '' swaymsg output DP-2 disable (busctl --user call diff --git a/nixos/modules/unfree-packages.nix b/nixos/modules/unfree-packages.nix new file mode 100644 index 00000000..00c30f48 --- /dev/null +++ b/nixos/modules/unfree-packages.nix @@ -0,0 +1,24 @@ +{ config, lib, ... }: +let + inherit (lib) types; +in +{ + options.unfree = { + allowUnfreePackages = lib.mkOption { + type = types.listOf types.str; + default = [ ]; + }; + + extraPredicates = lib.mkOption { + type = types.listOf types.raw; + default = [ ]; + }; + }; + + config.nixpkgs.config.allowUnfreePredicate = + pkg: + lib.foldr (x: y: x || y) false ( + [ (lib.elem (lib.getName pkg) config.unfree.allowUnfreePackages) ] + ++ (map (p: p pkg) config.unfree.extraPredicates) + ); +} diff --git a/packages/catppuccin-themes/update.nu b/packages/catppuccin-themes/update.nu index 5aedd121..f776d4b5 100644 --- a/packages/catppuccin-themes/update.nu +++ b/packages/catppuccin-themes/update.nu @@ -1,4 +1,4 @@ -let self = "pkgs/packages/catppuccin-themes/package.nix" +let self = "packages/catppuccin-themes/package.nix" def update [prefetch] { mut new_attrset = $"{\n name = \"catppuccin-($prefetch.repo)\";\n " diff --git a/packages/edopro/update.nu b/packages/edopro/update.nu index b4bda28e..dbb06153 100644 --- a/packages/edopro/update.nu +++ b/packages/edopro/update.nu @@ -1,4 +1,4 @@ -let dir = 'pkgs/packages/edopro/' | path expand +let dir = 'packages/edopro/' | path expand def parse_edopro_version []: nothing -> string { print $dir diff --git a/packages/emacs/update-emacs-packages.nu b/packages/emacs/update-emacs-packages.nu index 40f51327..e235369a 100644 --- a/packages/emacs/update-emacs-packages.nu +++ b/packages/emacs/update-emacs-packages.nu @@ -1,4 +1,4 @@ -let dir = 'pkgs/packages/emacs' +let dir = 'packages/emacs' for file in [$'($dir)/eglot-x.nix'] { let owner = ( diff --git a/packages/nvidia/update.nu b/packages/nvidia/update.nu index 6bf5794b..9c97ccc6 100644 --- a/packages/nvidia/update.nu +++ b/packages/nvidia/update.nu @@ -1,4 +1,4 @@ -let self = "pkgs/packages/nvidia/package.nix" +let self = "packages/nvidia/package.nix" mut updates = {} diff --git a/packages/topiary/update.nu b/packages/topiary/update.nu index 38628765..58fdbd15 100644 --- a/packages/topiary/update.nu +++ b/packages/topiary/update.nu @@ -1,4 +1,4 @@ -let self = "pkgs/packages/topiary" +let self = "packages/topiary" nix-update --flake --format --version=branch topiary.languages.topiary-nushell From b726e961ace5d1ee69a31092b6d9746b3e64d4b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 10 Jul 2026 16:55:04 +0800 Subject: [PATCH 15/26] fix(update): Don't commit new files --- dev/update.nu | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dev/update.nu b/dev/update.nu index 26f3a31e..663030cb 100644 --- a/dev/update.nu +++ b/dev/update.nu @@ -16,8 +16,8 @@ for $package in $packages_with_updatescript { log info 'Committing changes' try { - git add pkgs/packages/ - git add home-config/dotfiles/eww/desktop-logic/Cargo.lock + git add --update packages/ + git add --update home-config/dotfiles/eww/desktop-logic/Cargo.lock git commit -m 'update(pkgs): Update sources of all downstream packages' } catch { log warning 'No changes to commit' From 875a4168cd13ba3e28f7e83ae15746c7a6f591bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 10 Jul 2026 17:02:55 +0800 Subject: [PATCH 16/26] update(pkgs): Update sources of all downstream packages --- .../dotfiles/eww/desktop-logic/Cargo.lock | 407 +++++------------- packages/delta-icons.nix | 4 +- packages/nvidia/package.nix | 6 +- packages/topiary/package.nix | 2 + packages/topiary/topiary-nushell.nix | 6 +- packages/topiary/tree-sitter-nu.nix | 4 +- 6 files changed, 126 insertions(+), 303 deletions(-) diff --git a/home-config/dotfiles/eww/desktop-logic/Cargo.lock b/home-config/dotfiles/eww/desktop-logic/Cargo.lock index 36d58a33..e264a9d8 100644 --- a/home-config/dotfiles/eww/desktop-logic/Cargo.lock +++ b/home-config/dotfiles/eww/desktop-logic/Cargo.lock @@ -61,12 +61,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "anyhow" -version = "1.0.102" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" - [[package]] name = "async-broadcast" version = "0.7.2" @@ -212,9 +206,15 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bitflags" -version = "2.11.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" [[package]] name = "blocking" @@ -258,9 +258,40 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" + +[[package]] +name = "defmt" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" +dependencies = [ + "bitflags 1.3.2", + "defmt-macros", +] + +[[package]] +name = "defmt-macros" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" +dependencies = [ + "defmt-parser", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "defmt-parser" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" +dependencies = [ + "thiserror", +] [[package]] name = "desktop-logic" @@ -301,9 +332,9 @@ dependencies = [ [[package]] name = "env_filter" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef" +checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217" dependencies = [ "log", "regex", @@ -311,9 +342,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.10" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a" +checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6" dependencies = [ "anstream", "anstyle", @@ -365,12 +396,6 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" -[[package]] -name = "foldhash" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - [[package]] name = "futures-core" version = "0.3.32" @@ -416,24 +441,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", "r-efi", - "wasip2", - "wasip3", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" -dependencies = [ - "foldhash", ] [[package]] @@ -442,12 +456,6 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - [[package]] name = "hermit-abi" version = "0.5.2" @@ -460,12 +468,6 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "indexmap" version = "2.14.0" @@ -473,9 +475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.1", - "serde", - "serde_core", + "hashbrown", ] [[package]] @@ -484,18 +484,13 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "itoa" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" - [[package]] name = "jiff" -version = "0.2.28" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4603d3033e49e2b0e31229fcab20a5d40089c607d975cd9c80551dc69eed9102" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ + "defmt", "jiff-static", "log", "portable-atomic", @@ -505,9 +500,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.28" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "782d32378dddf207193ac91cefb848ad41abb58195c95168e1291227a0832b47" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", @@ -516,22 +511,15 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.99" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", - "once_cell", "wasm-bindgen", ] -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "libc" version = "0.2.186" @@ -546,15 +534,15 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "log" -version = "0.4.30" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "memchr" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memoffset" @@ -639,16 +627,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -669,9 +647,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.45" +version = "1.0.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" dependencies = [ "proc-macro2", ] @@ -684,9 +662,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "regex" -version = "1.12.3" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "2a0e75113e14dc5acb068cd0786884f214f1312650a3d36d269f5c4f3cdee8a2" dependencies = [ "aho-corasick", "memchr", @@ -696,9 +674,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "1f388202e4b80542a0921078cc23b6333bcf1409c1e3f86404cae4766a6131db" dependencies = [ "aho-corasick", "memchr", @@ -707,9 +685,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rustix" @@ -717,7 +695,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags", + "bitflags 2.13.0", "errno", "libc", "linux-raw-sys", @@ -726,15 +704,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" - -[[package]] -name = "semver" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "serde" @@ -766,19 +738,6 @@ dependencies = [ "syn", ] -[[package]] -name = "serde_json" -version = "1.0.150" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" -dependencies = [ - "itoa", - "memchr", - "serde", - "serde_core", - "zmij", -] - [[package]] name = "serde_repr" version = "0.1.20" @@ -808,9 +767,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" dependencies = [ "proc-macro2", "quote", @@ -830,6 +789,26 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tokio" version = "1.52.3" @@ -929,12 +908,6 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "utf8parse" version = "0.2.2" @@ -943,38 +916,20 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.2" +version = "1.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d258b83ceec21034727ecee8c382cfa6c3e133699b0742c64571814fb420c9f7" +checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53" dependencies = [ "js-sys", "serde_core", "wasm-bindgen", ] -[[package]] -name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", -] - [[package]] name = "wasm-bindgen" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -985,9 +940,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -995,9 +950,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", @@ -1008,47 +963,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.122" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "windows-link" version = "0.2.1" @@ -1073,105 +994,11 @@ dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "zbus" -version = "5.16.0" +version = "5.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285" +checksum = "a28b97f866896a4be7aefd2b5a8e01bb6773d19a775d54ab28b4d094b9a4480e" dependencies = [ "async-broadcast", "async-executor", @@ -1204,9 +1031,9 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "5.16.0" +version = "5.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6" +checksum = "5e05ad887425eecf5e8384dc2406a4a9313eb73468712fc1cdea362eb4fe0469" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1219,26 +1046,20 @@ dependencies = [ [[package]] name = "zbus_names" -version = "4.3.2" +version = "4.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d" +checksum = "1039ca249fee9559680f3a9f05b55e0761fee51af4f6c1e7d8c1f31e549721d2" dependencies = [ "serde", "winnow", "zvariant", ] -[[package]] -name = "zmij" -version = "1.0.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" - [[package]] name = "zvariant" -version = "5.12.0" +version = "5.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0" +checksum = "7cf057bb00bf5c9ad77abb6147b0ca4818236a1858416e9d988e40d6322fefa7" dependencies = [ "endi", "enumflags2", @@ -1250,9 +1071,9 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "5.12.0" +version = "5.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737" +checksum = "8118ca6bda77bfc0ab51d660db0c955f2505eef854c9a449435bccb616933b31" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -1263,9 +1084,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "3.4.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6" +checksum = "90cb9383f9b45290407a1258b202d3f8f01db719eb60b4e4055c6375af4fc7c7" dependencies = [ "proc-macro2", "quote", diff --git a/packages/delta-icons.nix b/packages/delta-icons.nix index 414c426d..a1dff0f5 100644 --- a/packages/delta-icons.nix +++ b/packages/delta-icons.nix @@ -5,13 +5,13 @@ }: stdenvNoCC.mkDerivation (drv: { pname = "delta-icons"; - version = "2.15.0"; + version = "2.17.0"; src = fetchFromGitHub { owner = "Delta-Icons"; repo = "android"; rev = "v${drv.version}"; - sha256 = "sha256-LasVhKUnlu7e7ZthDRVFX1Hmn75U+i6w6wNGGpcJO6U="; + sha256 = "sha256-oq3C1JFuPVDa9g5fNgwp3s9n5sFz5VOuiNyMkCPAHR8="; }; installPhase = '' diff --git a/packages/nvidia/package.nix b/packages/nvidia/package.nix index e7a6b634..79160fd4 100644 --- a/packages/nvidia/package.nix +++ b/packages/nvidia/package.nix @@ -10,9 +10,9 @@ let inherit (inputs.self.nixosConfigurations.yui.config.boot) kernelPackages; in (kernelPackages.nvidiaPackages.mkDriver { - version = "595.80"; - sha256_64bit = "sha256-PVTIP+B/01c/8M66hXTAYTLg9T2Hy9u1gq43K7TF1Hg="; - openSha256 = "sha256-nonwYYPItHeMC/5Ox/TlWhjiddMPu4PLqNhgIg+bfW8="; + version = "595.84"; + sha256_64bit = "sha256-mcQE5SExvye8ptoCaNzOPr7cenOrF0BxqZXPGmxeugY="; + openSha256 = "sha256-pEmA2tUcOKwUPKy6N0QvS49Pdut4/7Phs/JhjdyBcNY="; useSettings = false; usePersistenced = false; diff --git a/packages/topiary/package.nix b/packages/topiary/package.nix index 48e569d4..a4eed968 100644 --- a/packages/topiary/package.nix +++ b/packages/topiary/package.nix @@ -12,6 +12,7 @@ nix-update, ast-grep, nix-prefetch-github, + nixfmt, }: let inherit (inputs'.tree-sitter-sieve.packages) tree-sitter-sieve topiary-sieve; @@ -73,6 +74,7 @@ symlinkJoin { ast-grep nix-update nix-prefetch-github + nixfmt ]; script = ./update.nu; }; diff --git a/packages/topiary/topiary-nushell.nix b/packages/topiary/topiary-nushell.nix index 27049d8f..1e908db1 100644 --- a/packages/topiary/topiary-nushell.nix +++ b/packages/topiary/topiary-nushell.nix @@ -2,13 +2,13 @@ runCommand "topiary-nushell" { pname = "topiary-nushell"; - version = "0-unstable-2026-03-04"; + version = "0-unstable-2026-07-02"; src = fetchFromGitHub { owner = "blindFS"; repo = "topiary-nushell"; - rev = "6e2f9b339a664a46e4015fa5d79e537807fefa39"; - hash = "sha256-fTfxSnVI7TY6vQhD+GimPBRJ4K0SyyVtoLcLGH3xIPc="; + rev = "b187defff76caaea7c95614047c1779a675df0f6"; + hash = "sha256-a9yWF75XPll2EYGE0LEDByFCcLUC+DmgfRToqTUNi60="; }; } '' diff --git a/packages/topiary/tree-sitter-nu.nix b/packages/topiary/tree-sitter-nu.nix index 9db3be5f..c9395fe1 100644 --- a/packages/topiary/tree-sitter-nu.nix +++ b/packages/topiary/tree-sitter-nu.nix @@ -3,7 +3,7 @@ tree-sitter-grammars.tree-sitter-nu.overrideAttrs { src = fetchFromGitHub { owner = "nushell"; repo = "tree-sitter-nu"; - rev = "f4793e3809bb84e78dee260b47085d8203a58d88"; - hash = "sha256-0tQOALi8079pqy12mGG3eqsqv2FsqVvRnetp4xXKH9s="; + rev = "d694570aa26b53d0d642460a0430e8aa07dcbea0"; + hash = "sha256-eWHAcV8bPCnL9y4PtPn6cJRylGQ2KMxCUoUGwDVigkg="; }; } From 49bfe452287c49c2e858d9c78f2aa246ab353fcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 10 Jul 2026 17:03:45 +0800 Subject: [PATCH 17/26] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'disko': 'github:nix-community/disko/63b4e7e6cf75307c1d26ac3762b886b5b0247267' (2026-05-02) → 'github:nix-community/disko/ff8702b4de27f72b4c78573dfb89ec74e36abdf1' (2026-06-11) • Updated input 'emacs-overlay': 'github:nix-community/emacs-overlay/f14d0074de9f9737b234ce8b00d9787f60ff833f' (2026-05-09) → 'github:nix-community/emacs-overlay/c48bc3386b8f9e224157c4238cdc95d9ab06a8d3' (2026-07-10) • Updated input 'famedly-nixos': 'github:famedly/famedly-nixos/6f60bd5d767cc80c3b435f99b6e55f8dba0a6fe7' (2026-05-11) → 'github:famedly/famedly-nixos/ecea30322474e96af8cc0aea05a0e49e609e1eaf' (2026-07-08) • Added input 'famedly-nixos/famedly-engineering-standards': 'github:famedly/engineering-standards/5817cc77d058ac50994b690bd483189078591be4' (2026-06-12) • Added input 'famedly-nixos/famedly-engineering-standards/devshell': 'github:numtide/devshell/255a2b1725a20d060f566e4755dbf571bbbb5f76' (2026-01-19) • Added input 'famedly-nixos/famedly-engineering-standards/devshell/nixpkgs': follows 'famedly-nixos/famedly-engineering-standards/nixpkgs' • Added input 'famedly-nixos/famedly-engineering-standards/flake-parts': 'github:hercules-ci/flake-parts/f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb' (2026-05-13) • Added input 'famedly-nixos/famedly-engineering-standards/flake-parts/nixpkgs-lib': 'github:nix-community/nixpkgs.lib/f5901329dade4a6ea039af1433fb087bd9c1fe14' (2026-04-26) • Added input 'famedly-nixos/famedly-engineering-standards/github-actions-nix': 'github:synapdeck/github-actions-nix/805a4f69856e0f3d0bcd8ae916f1625f22b0578c' (2026-03-18) • Added input 'famedly-nixos/famedly-engineering-standards/github-actions-nix/flake-parts': follows 'famedly-nixos/famedly-engineering-standards/flake-parts' • Added input 'famedly-nixos/famedly-engineering-standards/github-actions-nix/nixpkgs': follows 'famedly-nixos/famedly-engineering-standards/nixpkgs' • Added input 'famedly-nixos/famedly-engineering-standards/nixpkgs': 'https://releases.nixos.org/nixos/26.05/nixos-26.05beta1.705e9929918b/nixexprs.tar.xz?lastModified=1779622335&narHash=sha256-6lZN0CPBbeK9UVgFQ8EV4t2qSVQPhhlerFBGZRiz73Y%3D&rev=705e9929918b43bd7b715dc0a878ac870449bb03' (2026-05-24) • Added input 'famedly-nixos/famedly-engineering-standards/rust-overlay': 'github:oxalica/rust-overlay/6cddd512fa2bf7231f098d3a2f92f6e4cff71e0a' (2026-05-27) • Added input 'famedly-nixos/famedly-engineering-standards/rust-overlay/nixpkgs': follows 'famedly-nixos/famedly-engineering-standards/nixpkgs' • Removed input 'famedly-nixos/fenix' • Removed input 'famedly-nixos/fenix/nixpkgs' • Removed input 'famedly-nixos/fenix/rust-analyzer-src' • Removed input 'famedly-nixos/flake-compat' • Added input 'famedly-nixos/flake-parts': follows 'famedly-nixos/famedly-engineering-standards/flake-parts' • Updated input 'famedly-nixos/fleet-nixos': 'github:adamcik/fleet-nixos/427c05f9ea6728ce9415730a8fbf917da35df84c' (2026-05-07) → 'github:adamcik/fleet-nixos/e4fce0eaf7c0c898dfbc4c38e9a8358df4133144' (2026-06-05) • Updated input 'famedly-nixos/fleet-nixos/nixpkgs': follows 'famedly-nixos/nixpkgs-unstable' → follows 'famedly-nixos/nixpkgs' • Removed input 'famedly-nixos/nixpkgs-unstable' • Updated input 'flake-parts': 'github:hercules-ci/flake-parts/f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb' (2026-05-13) → 'github:hercules-ci/flake-parts/17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e' (2026-07-01) • Updated input 'flake-parts/nixpkgs-lib': 'github:nix-community/nixpkgs.lib/f5901329dade4a6ea039af1433fb087bd9c1fe14' (2026-04-26) → 'github:nix-community/nixpkgs.lib/db3f255737b94216eb71cce308e2912cf6bc2d7c' (2026-06-28) • Updated input 'home-manager': 'github:nix-community/home-manager/4eb4fec41674d5b059aa2eedf0f98453890546fa' (2026-06-08) → 'github:nix-community/home-manager/af2beae5f0fae0a4310cc0e6aef2572f56090353' (2026-07-05) • Updated input 'nix-ast-lint': 'https://codeberg.org/api/v1/repos/tlater/nix-ast-lint/archive/3447d1c43f79f45f48d979f4a3a204059e2577cf.tar.gz?narHash=sha256-3cFhkledgsDUXgGPCy3jufzRc8QAFEcCm4bu09jzGaM%3D' (2026-03-05) → 'https://codeberg.org/api/v1/repos/tlater/nix-ast-lint/archive/3447d1c43f79f45f48d979f4a3a204059e2577cf.tar.gz?narHash=sha256-3cFhkledgsDUXgGPCy3jufzRc8QAFEcCm4bu09jzGaM%3D&rev=3447d1c43f79f45f48d979f4a3a204059e2577cf' (2026-03-05) • Updated input 'nix-gaming': 'github:fufexan/nix-gaming/2c1b0276febd6b6cac789a9f3cafe5d6ef4e8f58' (2026-05-09) → 'github:fufexan/nix-gaming/ea13b9c4aa381fba9513ebf438a38ea344320b09' (2026-07-09) • Added input 'nix-gaming/flake-compat': 'github:NixOS/flake-compat/5edf11c44bc78a0d334f6334cdaf7d60d732daab' (2025-12-29) • Updated input 'nix-gaming/git-hooks': 'github:cachix/git-hooks.nix/3cfd774b0a530725a077e17354fbdb87ea1c4aad' (2026-04-21) → 'github:cachix/git-hooks.nix/bca82caa46d5ec0f5d422c61fb1e30bc51313cbe' (2026-07-02) • Updated input 'nix-gaming/git-hooks/flake-compat': 'github:NixOS/flake-compat/5edf11c44bc78a0d334f6334cdaf7d60d732daab' (2025-12-29) → follows 'nix-gaming/flake-compat' • Removed input 'nix-gaming/git-hooks/gitignore' • Removed input 'nix-gaming/git-hooks/gitignore/nixpkgs' • Updated input 'nixpkgs': 'https://releases.nixos.org/nixos/26.05/nixos-26.05.1183.6b316287bae2/nixexprs.tar.xz?lastModified=1780453794&narHash=sha256-hhAl/iKiurXPn7rdzDgiSuRB8tqOB6f0buWkh8Y9mkY%3D&rev=6b316287bae2ee04c9b93c8c858d930fd07d7338' (2026-06-03) → 'https://releases.nixos.org/nixos/26.05/nixos-26.05.4364.0ad6f47ea4fe/nixexprs.tar.xz?lastModified=1783389287&narHash=sha256-R5cxRkQCq5wIM91F9OkIEgu8YoSGjlMeTjYl9o4gpKw%3D&rev=0ad6f47ea4fe188f4bc8f0380f93ae8523337c6c' (2026-07-07) • Updated input 'wrappers': 'github:BirdeeHub/nix-wrapper-modules/8dd304c3582ddd339217e1cc5fb53f50acb63c2d' (2026-06-05) → 'github:BirdeeHub/nix-wrapper-modules/6e7f66fa2cdf4d63162580b438f7fcf87c28a46f' (2026-06-22) --- flake.lock | 237 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 152 insertions(+), 85 deletions(-) diff --git a/flake.lock b/flake.lock index e5609bbd..6c80378e 100644 --- a/flake.lock +++ b/flake.lock @@ -20,6 +20,28 @@ "type": "github" } }, + "devshell_2": { + "inputs": { + "nixpkgs": [ + "famedly-nixos", + "famedly-engineering-standards", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768818222, + "narHash": "sha256-460jc0+CZfyaO8+w8JNtlClB2n4ui1RbHfPTLkpwhU8=", + "owner": "numtide", + "repo": "devshell", + "rev": "255a2b1725a20d060f566e4755dbf571bbbb5f76", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "disko": { "inputs": { "nixpkgs": [ @@ -27,11 +49,11 @@ ] }, "locked": { - "lastModified": 1777713215, - "narHash": "sha256-8GzXDOXckDWwST8TY5DbwYFjdvQLlP7K9CLSVx6iTTo=", + "lastModified": 1781152676, + "narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=", "owner": "nix-community", "repo": "disko", - "rev": "63b4e7e6cf75307c1d26ac3762b886b5b0247267", + "rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1", "type": "github" }, "original": { @@ -50,11 +72,11 @@ ] }, "locked": { - "lastModified": 1778294769, - "narHash": "sha256-yDHHZghIaAa9F+3FgH/l9h/KhtU8QRspDf4WmpHso2M=", + "lastModified": 1783655057, + "narHash": "sha256-kNh5necxobvvAxKBxhu6CSuEt42USLsdE9sXKuEpBs0=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "f14d0074de9f9737b234ce8b00d9787f60ff833f", + "rev": "c48bc3386b8f9e224157c4238cdc95d9ab06a8d3", "type": "github" }, "original": { @@ -63,53 +85,52 @@ "type": "github" } }, - "famedly-nixos": { + "famedly-engineering-standards": { "inputs": { - "fenix": "fenix", - "flake-compat": [ - "nix-gaming", - "git-hooks", - "flake-compat" - ], - "fleet-nixos": "fleet-nixos", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-unstable": "nixpkgs-unstable" + "devshell": "devshell_2", + "flake-parts": "flake-parts", + "github-actions-nix": "github-actions-nix", + "nixpkgs": "nixpkgs", + "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1778496033, - "narHash": "sha256-wncoPHLYEx0yNaJyixsOX5QfdI5wmZKzgUysGexfhnw=", + "lastModified": 1781265653, + "narHash": "sha256-+hgwo8iiGm7gVFfuKA+zJaOKGGlSthup6G2wQnBmQGs=", "owner": "famedly", - "repo": "famedly-nixos", - "rev": "6f60bd5d767cc80c3b435f99b6e55f8dba0a6fe7", + "repo": "engineering-standards", + "rev": "5817cc77d058ac50994b690bd483189078591be4", "type": "github" }, "original": { "owner": "famedly", - "repo": "famedly-nixos", + "repo": "engineering-standards", "type": "github" } }, - "fenix": { + "famedly-nixos": { "inputs": { - "nixpkgs": [ + "famedly-engineering-standards": "famedly-engineering-standards", + "flake-parts": [ "famedly-nixos", - "nixpkgs" + "famedly-engineering-standards", + "flake-parts" ], - "rust-analyzer-src": "rust-analyzer-src" + "fleet-nixos": "fleet-nixos", + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1756795219, - "narHash": "sha256-tKBQtz1JLKWrCJUxVkHKR+YKmVpm0KZdJdPWmR2slQ8=", - "owner": "nix-community", - "repo": "fenix", - "rev": "80dbdab137f2809e3c823ed027e1665ce2502d74", + "lastModified": 1783526232, + "narHash": "sha256-lXIcbDps79avfYa3sWmRd5isB5SPZN5R424AWxvMvQ4=", + "owner": "famedly", + "repo": "famedly-nixos", + "rev": "ecea30322474e96af8cc0aea05a0e49e609e1eaf", "type": "github" }, "original": { - "owner": "nix-community", - "repo": "fenix", + "owner": "famedly", + "repo": "famedly-nixos", "type": "github" } }, @@ -147,19 +168,37 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1782949081, + "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "fleet-nixos": { "inputs": { "nixpkgs": [ "famedly-nixos", - "nixpkgs-unstable" + "nixpkgs" ] }, "locked": { - "lastModified": 1778185331, - "narHash": "sha256-PMtQio4dN9ERcfcbzI0bcvchaTnl1wAXB0QQRm9m47M=", + "lastModified": 1780683281, + "narHash": "sha256-kM1hupNGf2GfcU671Di9r2Ss1BiPhjx6TvyF4xHLRsg=", "owner": "adamcik", "repo": "fleet-nixos", - "rev": "427c05f9ea6728ce9415730a8fbf917da35df84c", + "rev": "e4fce0eaf7c0c898dfbc4c38e9a8358df4133144", "type": "github" }, "original": { @@ -190,19 +229,21 @@ }, "git-hooks": { "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", + "flake-compat": [ + "nix-gaming", + "flake-compat" + ], "nixpkgs": [ "nix-gaming", "nixpkgs" ] }, "locked": { - "lastModified": 1776796298, - "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=", + "lastModified": 1783008725, + "narHash": "sha256-jGiy6+sxjNWXSjp25uoJuNfyH9zBK1PEDY0lVoL4ibQ=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad", + "rev": "bca82caa46d5ec0f5d422c61fb1e30bc51313cbe", "type": "github" }, "original": { @@ -211,25 +252,30 @@ "type": "github" } }, - "gitignore": { + "github-actions-nix": { "inputs": { + "flake-parts": [ + "famedly-nixos", + "famedly-engineering-standards", + "flake-parts" + ], "nixpkgs": [ - "nix-gaming", - "git-hooks", + "famedly-nixos", + "famedly-engineering-standards", "nixpkgs" ] }, "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "lastModified": 1773808042, + "narHash": "sha256-97K9g40SdtDVWslJG8ytpiC3+qgeQzftsZheGQ8qoGY=", + "owner": "synapdeck", + "repo": "github-actions-nix", + "rev": "805a4f69856e0f3d0bcd8ae916f1625f22b0578c", "type": "github" }, "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", + "owner": "synapdeck", + "repo": "github-actions-nix", "type": "github" } }, @@ -240,11 +286,11 @@ ] }, "locked": { - "lastModified": 1780883961, - "narHash": "sha256-WU6SUrESuPiEXEUvX4D51AgWrXRJty+sLJBwBaDBGqE=", + "lastModified": 1783221248, + "narHash": "sha256-ESQnuNHEDChsB4IxoLRhscVahqkDWkTb+qdIz8euYt4=", "owner": "nix-community", "repo": "home-manager", - "rev": "4eb4fec41674d5b059aa2eedf0f98453890546fa", + "rev": "af2beae5f0fae0a4310cc0e6aef2572f56090353", "type": "github" }, "original": { @@ -286,7 +332,7 @@ "narHash": "sha256-3cFhkledgsDUXgGPCy3jufzRc8QAFEcCm4bu09jzGaM=", "rev": "3447d1c43f79f45f48d979f4a3a204059e2577cf", "type": "tarball", - "url": "https://codeberg.org/api/v1/repos/tlater/nix-ast-lint/archive/3447d1c43f79f45f48d979f4a3a204059e2577cf.tar.gz" + "url": "https://codeberg.org/api/v1/repos/tlater/nix-ast-lint/archive/3447d1c43f79f45f48d979f4a3a204059e2577cf.tar.gz?rev=3447d1c43f79f45f48d979f4a3a204059e2577cf" }, "original": { "type": "tarball", @@ -311,6 +357,7 @@ }, "nix-gaming": { "inputs": { + "flake-compat": "flake-compat", "flake-parts": [ "flake-parts" ], @@ -320,11 +367,11 @@ ] }, "locked": { - "lastModified": 1778297703, - "narHash": "sha256-EqS67I6LgEpnu/rUO6x+SaMWMN89TTsY1AnThsl84uI=", + "lastModified": 1783568822, + "narHash": "sha256-5ljh4OMFQuJgHjN/NODkGZRuTsu+fNg7an7oUroO5UA=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "2c1b0276febd6b6cac789a9f3cafe5d6ef4e8f58", + "rev": "ea13b9c4aa381fba9513ebf438a38ea344320b09", "type": "github" }, "original": { @@ -351,11 +398,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1780453794, - "narHash": "sha256-hhAl/iKiurXPn7rdzDgiSuRB8tqOB6f0buWkh8Y9mkY=", - "rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338", + "lastModified": 1779622335, + "narHash": "sha256-6lZN0CPBbeK9UVgFQ8EV4t2qSVQPhhlerFBGZRiz73Y=", + "rev": "705e9929918b43bd7b715dc0a878ac870449bb03", "type": "tarball", - "url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.1183.6b316287bae2/nixexprs.tar.xz?lastModified=1780453794&rev=6b316287bae2ee04c9b93c8c858d930fd07d7338" + "url": "https://releases.nixos.org/nixos/26.05/nixos-26.05beta1.705e9929918b/nixexprs.tar.xz?lastModified=1779622335&rev=705e9929918b43bd7b715dc0a878ac870449bb03" }, "original": { "type": "tarball", @@ -377,17 +424,32 @@ "type": "github" } }, - "nixpkgs-unstable": { + "nixpkgs-lib_2": { + "locked": { + "lastModified": 1782614948, + "narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { - "lastModified": 1781074563, - "narHash": "sha256-d34lhgOet4IqYMnCxbIvwFBMOyTV6PT4TyNEOP0/ZhU=", - "rev": "9ae611a455b90cf061d8f332b977e387bda8e1ca", + "lastModified": 1783389287, + "narHash": "sha256-R5cxRkQCq5wIM91F9OkIEgu8YoSGjlMeTjYl9o4gpKw=", + "rev": "0ad6f47ea4fe188f4bc8f0380f93ae8523337c6c", "type": "tarball", - "url": "https://releases.nixos.org/nixos/unstable/nixos-26.11pre1014179.9ae611a455b9/nixexprs.tar.xz?lastModified=1781074563&rev=9ae611a455b90cf061d8f332b977e387bda8e1ca" + "url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.4364.0ad6f47ea4fe/nixexprs.tar.xz?lastModified=1783389287&rev=0ad6f47ea4fe188f4bc8f0380f93ae8523337c6c" }, "original": { "type": "tarball", - "url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz" + "url": "https://channels.nixos.org/nixos-26.05/nixexprs.tar.xz" } }, "root": { @@ -396,7 +458,7 @@ "disko": "disko", "emacs-overlay": "emacs-overlay", "famedly-nixos": "famedly-nixos", - "flake-parts": "flake-parts", + "flake-parts": "flake-parts_2", "flint": "flint", "home-manager": "home-manager", "home-manager-fix-ssh-socket": "home-manager-fix-ssh-socket", @@ -404,26 +466,31 @@ "nix-flatpak": "nix-flatpak", "nix-gaming": "nix-gaming", "nix-webapps": "nix-webapps", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "tree-sitter-sieve": "tree-sitter-sieve", "treefmt": "treefmt", "wrappers": "wrappers" } }, - "rust-analyzer-src": { - "flake": false, + "rust-overlay": { + "inputs": { + "nixpkgs": [ + "famedly-nixos", + "famedly-engineering-standards", + "nixpkgs" + ] + }, "locked": { - "lastModified": 1756597274, - "narHash": "sha256-wfaKRKsEVQDB7pQtAt04vRgFphkVscGRpSx3wG1l50E=", - "owner": "rust-lang", - "repo": "rust-analyzer", - "rev": "21614ed2d3279a9aa1f15c88d293e65a98991b30", + "lastModified": 1779851998, + "narHash": "sha256-UkkMh3bX9QW4Luqkm98nUaOqKWrU6i65mUnph3WeSSw=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "6cddd512fa2bf7231f098d3a2f92f6e4cff71e0a", "type": "github" }, "original": { - "owner": "rust-lang", - "ref": "nightly", - "repo": "rust-analyzer", + "owner": "oxalica", + "repo": "rust-overlay", "type": "github" } }, @@ -474,11 +541,11 @@ ] }, "locked": { - "lastModified": 1780661205, - "narHash": "sha256-3F5DixT3Gk91lBI9E+TGMm0ko5HrRbDiL23di16TJGA=", + "lastModified": 1782135443, + "narHash": "sha256-vAmbArdCyjqpVW+37aCy/PMBOLIqukUXLQuEKLwUhA4=", "owner": "BirdeeHub", "repo": "nix-wrapper-modules", - "rev": "8dd304c3582ddd339217e1cc5fb53f50acb63c2d", + "rev": "6e7f66fa2cdf4d63162580b438f7fcf87c28a46f", "type": "github" }, "original": { From 8064fdee0bc7a12c757ae05bcb302e455c33a577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Fri, 10 Jul 2026 23:58:03 +0800 Subject: [PATCH 18/26] chore(flake.nix): Add new follows for famedly-nixos --- flake.lock | 2 -- flake.nix | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 6c80378e..c21e9e9a 100644 --- a/flake.lock +++ b/flake.lock @@ -111,8 +111,6 @@ "inputs": { "famedly-engineering-standards": "famedly-engineering-standards", "flake-parts": [ - "famedly-nixos", - "famedly-engineering-standards", "flake-parts" ], "fleet-nixos": "fleet-nixos", diff --git a/flake.nix b/flake.nix index 830b9a08..f9e12c80 100644 --- a/flake.nix +++ b/flake.nix @@ -75,7 +75,7 @@ url = "github:famedly/famedly-nixos"; inputs = { nixpkgs.follows = "nixpkgs"; - flake-compat.follows = "nix-gaming/git-hooks/flake-compat"; + flake-parts.follows = "flake-parts"; }; }; }; From 05b26df33549c828575b5a881f8f62ef0fba6bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sat, 11 Jul 2026 00:16:16 +0800 Subject: [PATCH 19/26] feat(nix): Add ncro for better cache resolution --- flake.lock | 21 +++++++++ flake.nix | 5 +++ nixos/default.nix | 1 + nixos/hosts/yui/sunshine.nix | 5 --- nixos/programs/nix.nix | 84 +++++++++++++++++++++++++----------- 5 files changed, 85 insertions(+), 31 deletions(-) diff --git a/flake.lock b/flake.lock index c21e9e9a..623a9081 100644 --- a/flake.lock +++ b/flake.lock @@ -319,6 +319,26 @@ "type": "github" } }, + "ncro": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1783665058, + "narHash": "sha256-WNl+0YP4/XCshpj5c0ZYNBuTzg/bLIaLcf7qtxrLIfU=", + "owner": "manic-systems", + "repo": "ncro", + "rev": "eec6c0ed0577312779b0842d8c15cce8fd4dcbc9", + "type": "github" + }, + "original": { + "owner": "manic-systems", + "repo": "ncro", + "type": "github" + } + }, "nix-ast-lint": { "inputs": { "nixpkgs": [ @@ -460,6 +480,7 @@ "flint": "flint", "home-manager": "home-manager", "home-manager-fix-ssh-socket": "home-manager-fix-ssh-socket", + "ncro": "ncro", "nix-ast-lint": "nix-ast-lint", "nix-flatpak": "nix-flatpak", "nix-gaming": "nix-gaming", diff --git a/flake.nix b/flake.nix index f9e12c80..6bc2995e 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + ncro = { + url = "github:manic-systems/ncro"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-gaming = { url = "github:fufexan/nix-gaming"; inputs = { diff --git a/nixos/default.nix b/nixos/default.nix index 4b438869..c3c51dc7 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -10,6 +10,7 @@ { imports = [ inputs.disko.nixosModules.disko + inputs.ncro.nixosModules.ncro inputs.nix-flatpak.nixosModules.nix-flatpak ./modules/networkmanager-ensure-profiles.nix diff --git a/nixos/hosts/yui/sunshine.nix b/nixos/hosts/yui/sunshine.nix index 6606e00d..09511062 100644 --- a/nixos/hosts/yui/sunshine.nix +++ b/nixos/hosts/yui/sunshine.nix @@ -10,11 +10,6 @@ let inherit (inputs'.self.packages) edid-generator; in { - nix.settings = { - substituters = [ "https://cache.nixos-cuda.org" ]; - trusted-public-keys = [ "cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M=" ]; - }; - # These packages are required for nvenc unfree = { allowUnfreePackages = [ diff --git a/nixos/programs/nix.nix b/nixos/programs/nix.nix index 3ac46aeb..aa4a93fb 100644 --- a/nixos/programs/nix.nix +++ b/nixos/programs/nix.nix @@ -19,6 +19,8 @@ ]; secret-key-files = [ "/run/credentials/nix-daemon.service/nix-signing-key" ]; + + substituters = lib.mkForce [ "http://${config.services.ncro.settings.server.listen}" ]; }; gc = { @@ -27,39 +29,69 @@ }; }; - # Regularly clean up gcroots - services.angrr = { - enable = true; + services = { + # Fix nix' stupid cache resolution + ncro = { + enable = true; + settings = { + server.listen = "127.0.0.1:8080"; + cache.ttl = "1d"; - settings = { - temporary-root-policies = { - direnv = { - path-regex = "/\\.direnv/"; - period = "14d"; + logging = { + timestamps = false; + format = "text"; }; - result = { - path-regex = "/result[^/]*$"; - period = "3d"; - }; + upstreams = [ + { + url = "https://cache.nixos.org"; + priority = 10; + # The key for cache.nixos.org is provided by nixpkgs, so + # we don't add it manually. + } + { + url = "https://cache.nixos-cuda.org"; + priority = 20; + public_key = "cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="; + } + ]; }; + }; - profile-policies = { - system = { - profile-paths = [ "/nix/var/nix/profiles/system" ]; - keep-since = "14d"; - keep-latest-n = 5; - keep-booted-system = true; - keep-current-system = true; + # Regularly clean up gcroots + angrr = { + enable = true; + + settings = { + temporary-root-policies = { + direnv = { + path-regex = "/\\.direnv/"; + period = "14d"; + }; + + result = { + path-regex = "/result[^/]*$"; + period = "3d"; + }; }; - user = { - profile-paths = [ - "~/.local/state/nix/profiles/profile" - "/nix/var/nix/profiles/per-user/root/profile" - ]; - keep-since = "1d"; - keep-latest-n = 1; + profile-policies = { + system = { + profile-paths = [ "/nix/var/nix/profiles/system" ]; + keep-since = "14d"; + keep-latest-n = 5; + keep-booted-system = true; + keep-current-system = true; + }; + + user = { + profile-paths = [ + "~/.local/state/nix/profiles/profile" + "/nix/var/nix/profiles/per-user/root/profile" + ]; + keep-since = "1d"; + keep-latest-n = 1; + }; }; }; }; From 6ace0926d5d1aa62f0820c4216ffaf2439913532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sat, 11 Jul 2026 00:31:06 +0800 Subject: [PATCH 20/26] fix(nix): Only permit the wheel group to use the nix daemon --- nixos/programs/nix.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nixos/programs/nix.nix b/nixos/programs/nix.nix index aa4a93fb..b76abdfc 100644 --- a/nixos/programs/nix.nix +++ b/nixos/programs/nix.nix @@ -12,6 +12,8 @@ package = pkgs.lixPackageSets.stable.lix; settings = { + allowed-users = [ "@wheel" ]; + auto-optimise-store = true; experimental-features = [ "nix-command" From 6f336829a17ba67420228aee0bdc7f6f684fe0d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sat, 11 Jul 2026 00:43:02 +0800 Subject: [PATCH 21/26] chore(nvidia): Restore nvidia package source logic --- nixos/hardware/nvidia.nix | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/nixos/hardware/nvidia.nix b/nixos/hardware/nvidia.nix index 30c01567..6fc5c23a 100644 --- a/nixos/hardware/nvidia.nix +++ b/nixos/hardware/nvidia.nix @@ -3,6 +3,7 @@ */ { config, + inputs', lib, pkgs, ... @@ -33,6 +34,23 @@ lib.mkMerge [ open = true; powerManagement.enable = true; moduleParams.nvidia.NVreg_UsePageAttributeTable = lib.mkIf cpuSupportsPat 1; + + package = + let + inherit (inputs'.self.packages) nvidia; + in + config.boot.kernelPackages.nvidiaPackages.mkDriver { + inherit (nvidia) version; + sha256_64bit = nvidia.src.outputHash; + openSha256 = nvidia.open.src.outputHash; + useSettings = false; + usePersistenced = false; + }; + + # Disabled because I don't use it and I can't be bothered to + # figure out how to get a hash for something nvidia don't seem to + # publish consistently. + nvidiaSettings = false; }; } @@ -93,24 +111,3 @@ lib.mkMerge [ } )) ] - -# hardware = { -# nvidia = -# let -# inherit (inputs.self.packages.${pkgs.stdenv.hostPlatform.system}) nvidia; -# in -# { -# package = config.boot.kernelPackages.nvidiaPackages.mkDriver { -# inherit (nvidia) version; -# sha256_64bit = nvidia.src.outputHash; -# openSha256 = nvidia.open.src.outputHash; -# useSettings = false; -# usePersistenced = false; -# }; - -# # Disabled because I don't use it and I can't be bothered to -# # figure out how to get a hash for something nvidia don't seem to -# # publish consistently. -# nvidiaSettings = false; -# }; -# }; From f338a842257952ba9b686ba77c99bdbaeb133396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sat, 11 Jul 2026 05:15:53 +0800 Subject: [PATCH 22/26] fix(bluetooth): Revert to bluez 5.84 to fix speaker connection --- nixos/hosts/yui/hardware.nix | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/nixos/hosts/yui/hardware.nix b/nixos/hosts/yui/hardware.nix index ed21ad60..0203aa11 100644 --- a/nixos/hosts/yui/hardware.nix +++ b/nixos/hosts/yui/hardware.nix @@ -3,11 +3,36 @@ TODO: Upstream this. */ -{ +{ lib, pkgs, ... }: { # Used for IPMI (remote maintenance thing), but is unsupported # by motherboard. boot.blacklistedKernelModules = [ "sp5100_tco" ]; + hardware.xpadneo.enable = true; + + # My JBL Cinema SB550 fails to connect with BlueZ 5.68 + hardware.bluetooth.package = lib.mkIf (lib.versionOlder pkgs.bluez.version "5.87") ( + (pkgs.bluez.override { + bluez-headers = pkgs.bluez-headers.overrideAttrs (old: { + version = "5.84"; + + src = pkgs.fetchurl { + url = "mirror://kernel/linux/bluetooth/bluez-5.84.tar.xz"; + hash = "sha256-W6c9Aw97AAh9Z4ALDjIWAa7A+JKCfHLlosg5DYyIaxE="; + }; + }); + }).overrideAttrs + (_: { + patches = [ + (pkgs.fetchurl { + name = "static.patch"; + url = "https://lore.kernel.org/linux-bluetooth/20250703182908.2370130-1-hi@alyssa.is/raw"; + hash = "sha256-4Yz3ljsn2emJf+uTcJO4hG/YXvjERtitce71TZx5Hak="; + }) + ]; + }) + ); + services.udev.rules."98-b550i-suspend.rules" = '' # Fix broken suspend on b550i motherboard # From 6afd185b1b73bbe42b8f031f95e06ae3e3181091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Mon, 13 Jul 2026 04:15:22 +0800 Subject: [PATCH 23/26] chore: Fix boot depending on an internet connection --- nixos/networking.nix | 15 ++++++++++++++- nixos/networking/tailscale.nix | 18 +++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/nixos/networking.nix b/nixos/networking.nix index c3390e1b..d7d08a3b 100644 --- a/nixos/networking.nix +++ b/nixos/networking.nix @@ -14,8 +14,21 @@ services.unbound.enable = true; networking = { - networkmanager.enable = true; + # Not needed since NetworkManager uses its own internal dhcp + # client. + dhcpcd.enable = false; nftables.enable = true; + + networkmanager = { + enable = true; + + # We need at least an ethernet profile to get NetworkManager to + # attempt an ethernet connection. + ensureProfiles.profiles.ethernet.connection = { + id = "ethernet"; + type = "ethernet"; + }; + }; }; # NTP diff --git a/nixos/networking/tailscale.nix b/nixos/networking/tailscale.nix index f6ff52eb..37cf0fb4 100644 --- a/nixos/networking/tailscale.nix +++ b/nixos/networking/tailscale.nix @@ -1,9 +1,25 @@ /** Set up tailscale. */ -{ +{ lib, ... }: { networking.firewall.trustedInterfaces = [ "tailscale0" ]; + # Systemd `.target` units automatically set an `After=` relation for + # services that want them. + # + # In this case, that means adding an implicit dependency on + # `NetworkManager-wait-online.service` to *everything*. + # + # This is stupid, so we make sure that the tailscale units actually + # start *after* `multi-user.target`. + systemd.services = + lib.pipe + [ "tailscaled" "tailscaled-set" ] + [ + (map (name: lib.nameValuePair name { unitConfig.After = [ "multi-user.target" ]; })) + lib.listToAttrs + ]; + services.tailscale = { enable = true; openFirewall = true; From d23257e917ec9e6d4bda792437d58437724dc32e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Sat, 18 Jul 2026 01:17:51 +0800 Subject: [PATCH 24/26] feat(matrix): Switch to cinny --- home-config/personal/webapps.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/home-config/personal/webapps.nix b/home-config/personal/webapps.nix index d9d0ef61..cbb0b2c7 100644 --- a/home-config/personal/webapps.nix +++ b/home-config/personal/webapps.nix @@ -36,12 +36,12 @@ in }) (mkFirefoxApp { - name = "element"; - url = "https://app.element.io"; + name = "cinny"; + url = "https://dev.cinny.in/login/matrix.tlater.net"; firefoxBin = lib.getExe config.programs.librewolf.package; makeDesktopItemArgs = { - icon = "Element"; + icon = "cinny"; mimeTypes = [ "x-scheme-handler/element" ]; categories = [ "Network" From 6a4ad2c594ef7b1d21c4fb5232178b4defe33bce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Mon, 20 Jul 2026 22:59:27 +0800 Subject: [PATCH 25/26] flake.lock: Update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'emacs-overlay': 'github:nix-community/emacs-overlay/c48bc3386b8f9e224157c4238cdc95d9ab06a8d3' (2026-07-10) → 'github:nix-community/emacs-overlay/b90ebb6e171b263604fd112e6e2a47b8f12ce6da' (2026-07-20) • Updated input 'flint': 'github:NotAShelf/flint/7832a5b5f5ef1243818f8f5e357ad1ee2d35d2b7' (2026-01-03) → 'github:NotAShelf/flint/56e8a7d257b671db1d83cc15e21e34e1e92c2b8a' (2026-07-10) • Updated input 'home-manager': 'github:nix-community/home-manager/af2beae5f0fae0a4310cc0e6aef2572f56090353' (2026-07-05) → 'github:nix-community/home-manager/4ce190229c73d44536caa7072f6308fb2d8feeb3' (2026-07-18) • Updated input 'ncro': 'github:manic-systems/ncro/eec6c0ed0577312779b0842d8c15cce8fd4dcbc9' (2026-07-10) → 'github:manic-systems/ncro/8681ec50b9570de825786f9ec599b1301214a1ff' (2026-07-16) • Updated input 'nix-gaming': 'github:fufexan/nix-gaming/ea13b9c4aa381fba9513ebf438a38ea344320b09' (2026-07-09) → 'github:fufexan/nix-gaming/1aef499f40964840bf28c8e5a47ac7e8009a7e7e' (2026-07-19) • Updated input 'nix-gaming/git-hooks': 'github:cachix/git-hooks.nix/bca82caa46d5ec0f5d422c61fb1e30bc51313cbe' (2026-07-02) → 'github:cachix/git-hooks.nix/43b3c1ab9d40fb1dbb008f451988a91e375825e9' (2026-07-17) • Updated input 'nixpkgs': 'https://releases.nixos.org/nixos/26.05/nixos-26.05.4364.0ad6f47ea4fe/nixexprs.tar.xz?lastModified=1783389287&narHash=sha256-R5cxRkQCq5wIM91F9OkIEgu8YoSGjlMeTjYl9o4gpKw%3D&rev=0ad6f47ea4fe188f4bc8f0380f93ae8523337c6c' (2026-07-07) → 'https://releases.nixos.org/nixos/26.05/nixos-26.05.5591.fd1462031fde/nixexprs.tar.xz?lastModified=1784432872&narHash=sha256-IX7j5TvSD7hYC9NZ8mgmq7pZ97mYyl24Qs4Tz4uyvO4%3D&rev=fd1462031fdee08f65fd0b4c6b64e22239a77870' (2026-07-19) • Updated input 'treefmt': 'github:numtide/treefmt-nix/db947814a175b7ca6ded66e21383d938df01c227' (2026-05-31) → 'github:numtide/treefmt-nix/df3c0640565d04a0261253cdd89fce78ec50168a' (2026-07-18) --- flake.lock | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/flake.lock b/flake.lock index 623a9081..f14f2131 100644 --- a/flake.lock +++ b/flake.lock @@ -72,11 +72,11 @@ ] }, "locked": { - "lastModified": 1783655057, - "narHash": "sha256-kNh5necxobvvAxKBxhu6CSuEt42USLsdE9sXKuEpBs0=", + "lastModified": 1784547626, + "narHash": "sha256-xsJH17I9RRJsTIplSyIO1mA/aVaceH/xrOnmEOAYhmw=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "c48bc3386b8f9e224157c4238cdc95d9ab06a8d3", + "rev": "b90ebb6e171b263604fd112e6e2a47b8f12ce6da", "type": "github" }, "original": { @@ -212,11 +212,11 @@ ] }, "locked": { - "lastModified": 1767431140, - "narHash": "sha256-ug37Jt6r8LP3161suTh6IW+fkx0a7kiSAhAPsVcPrkA=", + "lastModified": 1783727699, + "narHash": "sha256-BOQsKIVekTCalqI7Io5LNd6O/2Xp0Tj8bqWQva2lEqU=", "owner": "NotAShelf", "repo": "flint", - "rev": "7832a5b5f5ef1243818f8f5e357ad1ee2d35d2b7", + "rev": "56e8a7d257b671db1d83cc15e21e34e1e92c2b8a", "type": "github" }, "original": { @@ -237,11 +237,11 @@ ] }, "locked": { - "lastModified": 1783008725, - "narHash": "sha256-jGiy6+sxjNWXSjp25uoJuNfyH9zBK1PEDY0lVoL4ibQ=", + "lastModified": 1784288435, + "narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "bca82caa46d5ec0f5d422c61fb1e30bc51313cbe", + "rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9", "type": "github" }, "original": { @@ -284,11 +284,11 @@ ] }, "locked": { - "lastModified": 1783221248, - "narHash": "sha256-ESQnuNHEDChsB4IxoLRhscVahqkDWkTb+qdIz8euYt4=", + "lastModified": 1784350909, + "narHash": "sha256-ZWyzLbS1yKUTeFJLmdVuWNnHttL333/ldJbEE+KzCrM=", "owner": "nix-community", "repo": "home-manager", - "rev": "af2beae5f0fae0a4310cc0e6aef2572f56090353", + "rev": "4ce190229c73d44536caa7072f6308fb2d8feeb3", "type": "github" }, "original": { @@ -326,11 +326,11 @@ ] }, "locked": { - "lastModified": 1783665058, - "narHash": "sha256-WNl+0YP4/XCshpj5c0ZYNBuTzg/bLIaLcf7qtxrLIfU=", + "lastModified": 1784212632, + "narHash": "sha256-E4sJw/ySR3bEGd3eyqXErmDtjj0TF+8JGYXH9uDPctc=", "owner": "manic-systems", "repo": "ncro", - "rev": "eec6c0ed0577312779b0842d8c15cce8fd4dcbc9", + "rev": "8681ec50b9570de825786f9ec599b1301214a1ff", "type": "github" }, "original": { @@ -385,11 +385,11 @@ ] }, "locked": { - "lastModified": 1783568822, - "narHash": "sha256-5ljh4OMFQuJgHjN/NODkGZRuTsu+fNg7an7oUroO5UA=", + "lastModified": 1784431599, + "narHash": "sha256-B80p0N3Uqx4+nMl/rFK/SU+1i3UNkAAMP7TaUk1ug20=", "owner": "fufexan", "repo": "nix-gaming", - "rev": "ea13b9c4aa381fba9513ebf438a38ea344320b09", + "rev": "1aef499f40964840bf28c8e5a47ac7e8009a7e7e", "type": "github" }, "original": { @@ -459,11 +459,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1783389287, - "narHash": "sha256-R5cxRkQCq5wIM91F9OkIEgu8YoSGjlMeTjYl9o4gpKw=", - "rev": "0ad6f47ea4fe188f4bc8f0380f93ae8523337c6c", + "lastModified": 1784432872, + "narHash": "sha256-IX7j5TvSD7hYC9NZ8mgmq7pZ97mYyl24Qs4Tz4uyvO4=", + "rev": "fd1462031fdee08f65fd0b4c6b64e22239a77870", "type": "tarball", - "url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.4364.0ad6f47ea4fe/nixexprs.tar.xz?lastModified=1783389287&rev=0ad6f47ea4fe188f4bc8f0380f93ae8523337c6c" + "url": "https://releases.nixos.org/nixos/26.05/nixos-26.05.5591.fd1462031fde/nixexprs.tar.xz?lastModified=1784432872&rev=fd1462031fdee08f65fd0b4c6b64e22239a77870" }, "original": { "type": "tarball", @@ -540,11 +540,11 @@ ] }, "locked": { - "lastModified": 1780220602, - "narHash": "sha256-eynAfOmbmxJnkp7YewvCEbShNnnYJ9gLLqkzsYtBPeM=", + "lastModified": 1784369104, + "narHash": "sha256-47cxbcZODibHv3rELFQ9vZly0vUNkND/atn/U7HLeb0=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "db947814a175b7ca6ded66e21383d938df01c227", + "rev": "df3c0640565d04a0261253cdd89fce78ec50168a", "type": "github" }, "original": { From ba0fa8a56c256e109dc3b0a932f13b7f97fbaa08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tristan=20Dani=C3=ABl=20Maat?= Date: Tue, 21 Jul 2026 04:30:43 +0800 Subject: [PATCH 26/26] WIP: feat(dns): Use tailscale Need to figure out how to fix the bridge network's DNS assignment. --- nixos/networking/dns.nix | 89 ++++++++++------------------------ nixos/networking/vm-bridge.nix | 6 --- 2 files changed, 25 insertions(+), 70 deletions(-) diff --git a/nixos/networking/dns.nix b/nixos/networking/dns.nix index 27df9475..93088c4e 100644 --- a/nixos/networking/dns.nix +++ b/nixos/networking/dns.nix @@ -1,70 +1,31 @@ /** DNS configuration. - - This disables DNS configuration acquired through NetworkManager, and - replaces it with static DoT-compatible DNS servers, cached via - unbound. - - TODO: Figure out how to work with captive portals and services on - intranets. */ -{ lib, ... }: { - services.unbound = { - settings = { - server = { - # Sends less identifying data for queries - qname-minimisation = true; - - # Prevent DNSSEC algorithm downgrades - harden-algo-downgrade = true; - - # These addresses are forbidden from public responses, but - # unbound does not enforce this by default - private-address = [ - "10.0.0.0/8" - "172.16.0.0/12" # Maybe allow these because ad blockers use them - "192.168.0.0/16" - "169.254.0.0/16" - "fd00::/8" - "fe80::/10" - "::ffff:0:0/96" - ]; - }; - - forward-zone = [ - { - name = "."; - forward-tls-upstream = true; - forward-addr = lib.flatten ( - lib.mapAttrsToList (domain: map (ip: "${ip}@853#${domain}")) { - "dns.quad9.net" = [ - "9.9.9.9" - "149.112.112.112" - "2620:fe::fe" - "2620:fe::9" - ]; - - "one.one.one.one" = [ - "1.1.1.1" - "1.0.0.1" - "2606:4700:4700::1111" - "2606:4700:4700::1001" - ]; - } - ); - } - ]; +{ config, lib, ... }: +lib.mkMerge [ + # If tailscale is used, we just leave everything with the default + # config - shortly after connection to a network, tailscale should + # take over DNS, and we are happy. + { + services.resolved = { + enable = true; + settings.Resolve.DNSSEC = true; }; + } + + # If tailscale is *not* used, we attempt to override the DNS servers + # as much as possible. + (lib.mkIf (!config.services.tailscale.enable) { + services.resolved.settings.Resolve = { + Domains = "~."; + DNS = [ + "9.9.9.9#dns.quad9.net" + "149.112.112.112#dns.quad9.net" + "2620:fe::fe#dns.quad9.net" + "2620:fe::9#dns.quad9.net" + ]; - localControlSocketPath = "/run/unbound/unbound.ctl"; - }; - - systemd.services = { - # Ensure unbound is available for DNS settings by the time - # connections might set such - unbound = { - after = lib.mkForce [ ]; - before = [ "NetworkManager.service" ]; + DNSOverTLS = true; }; - }; -} + }) +] diff --git a/nixos/networking/vm-bridge.nix b/nixos/networking/vm-bridge.nix index c2661c7a..df5d0da4 100644 --- a/nixos/networking/vm-bridge.nix +++ b/nixos/networking/vm-bridge.nix @@ -68,10 +68,4 @@ in # More configuration to enable request forwarding from the VM boot.kernel.sysctl."net.ipv4.ip_forward" = 1; - - # Add local DNS zone for VMs - services.unbound.settings.server = { - local-zone = ''"dev.local." redirect''; - local-data = ''"dev.local. A 192.168.9.2"''; - }; }