diff --git a/.github/workflows/check.yaml b/.github/workflows/check.yaml new file mode 100644 index 00000000..4cfb6aa7 --- /dev/null +++ b/.github/workflows/check.yaml @@ -0,0 +1,26 @@ +name: Run checks and tests + +on: + pull_request: + types: [opened, synchronize] + +jobs: + check: + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + with: + persist-credentials: false + + - name: Install Nix + uses: cachix/install-nix-action@d64e0553100205688c0fb2fa16edb0fc8663c590 + with: + extra_nix_config: | + access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} + + - name: Evaluate flake outputs + run: nix flake check --all-systems diff --git a/.github/workflows/ensure_docs.yaml b/.github/workflows/ensure_docs.yaml new file mode 100644 index 00000000..947e9abc --- /dev/null +++ b/.github/workflows/ensure_docs.yaml @@ -0,0 +1,27 @@ +name: Check for changes to docs + +on: + pull_request: + types: [opened, synchronize] + +jobs: + ensure_docs: + runs-on: ubuntu-latest + permissions: + contents: read + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + with: + persist-credentials: false + + - name: Get all changed docs files + id: changed-markdown-files + uses: tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47 + with: + files: docs/** + + - name: Fail if no change to docs + if: steps.changed-markdown-files.outputs.any_changed == 'false' + run: exit 1 diff --git a/.github/workflows/test.yaml b/.github/workflows/lint.yaml similarity index 60% rename from .github/workflows/test.yaml rename to .github/workflows/lint.yaml index 84bd253b..7dc84082 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/lint.yaml @@ -1,11 +1,11 @@ -name: Run tests +name: Lint on: pull_request: types: [opened, synchronize] jobs: - test: + lint: runs-on: ubuntu-latest permissions: contents: read @@ -22,22 +22,9 @@ jobs: extra_nix_config: | access-tokens = github.com=${{ secrets.GITHUB_TOKEN }} - - name: Evaluate flake outputs - run: nix flake check --all-systems - - name: Run linting and formatting checks run: | nix develop -c statix check nix develop -c deadnix nix develop -c treefmt --ci nix develop -c zizmor . - - - name: Get all changed docs files - id: changed-markdown-files - uses: tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47 - with: - files: docs/** - - - name: Fail if no change to docs - if: steps.changed-markdown-files.outputs.any_changed == 'false' - run: exit 1 diff --git a/.gitignore b/.gitignore index 8196f7da..18e13b33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ -tmp - -# Nix +# generated files result - -# Direnv - .direnv +*.qcow2 +keys/ + +# developer choice +tmp diff --git a/Justfile b/Justfile index 6f47ca5b..c44521ce 100644 --- a/Justfile +++ b/Justfile @@ -1,8 +1,8 @@ -check: format lint test +check: nice test -nice: format lint +nice: format-nix lint -format: format-nix +format: format-nix format-gha format-nix: treefmt diff --git a/docs/README.md b/docs/README.md index fec5c7b2..ba618674 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,26 +1,40 @@ ## current state -`nodes.nixos.veil` has nginx with https setup and the `rrv.sh` website. -`manifest` has externals and proxies skeleton impl set up. +nothing! -## directory structure +## what this is -- `docs/` should contain: - - README.md -> instructions and information - - runbook.md -> commands and procedures -- `ops/` should contain IaC: - - `nix/` contains Nix code that is consumed by `flake.nix` in the root directory - - `sops/` contains sops encrypted secrets with age +a sort of exploration of the dendritic method. i like the dendritic method for how it turns writing a nix flake into an act of letting the system grow organically by writing a custom flake-parts module for every problem you encounter. i pay homage to this by adding a cheeky requirement to the dendritic method rules, that i think is thematically very appropriate for real-life dendritic systems - the flake must be able to self-replicate. run `nix flake init --template github:rrvsh/cathedral#pkg_shell` to see it :) + +the manifest declares all nodes, for now only nixos, and the manifest utilities will parse this "request", and automatically pick and choose modules that when put together, makes these nixosConfigurations. however, the beauty of using flake-parts is the abstraction layer of being able to have **separate** nodes have modules or options set that are dependent on **each other**, which allows us to do things like: + + - declare: this manifest provides a reverse proxy. + - specify: this reverse proxy will run from machine a. + - declare: machine b needs a reverse proxy to make a webapp public. + +and then, the configurations will include all that is needed to make that happen. + +the end state of this is essentially to provide the backend to easily automating writing/generating nix code. the syntax of the manifest options are deliberately simple, as the main issue of generating nixos configurations now are, to me, the complexity of "merging" nixos modules. so, we kind of "merge" those modules first before we present a simpler set of options to the user. + +### RULES + +- every file must be ATOMIC -> HARD REQUIREMENT! includes all types of files +- lists should be sorted if possible ## dev setup -with `direnv`, run `direnv allow` and all dependencies will be in your shell. +with `direnv`, run `direnv allow` and all dependencies will be in your shell. otherwise, install nix and run `nix develop` after cloning the repository. + +warning: the logic is in an unfinished state. you cannot yet import any flake-parts module i have written here and put it into your own config, or for most of my modules as a general rule (too much dependence on each other). feel free to steal any of the logic for yourself though :) run: - `just nice` to format and lint - `just check` to test -## architecture +## acknowledgements -`ops/nix/manifest/manifest.nix` describes the overview of the IaC. the rest construct the system configs. +- [ornicar](https://github.com/ornicar/dotfiles), for being my inspiration to start using Nix, open source, and being a full fledged software engineer +- [NixOS & Flakes Book](https://nixos-and-flakes.thiscute.world/) for teaching me how to use NixOS, flakes, and home-manager: the best damn tutorial on the internet I've seen yet +- [NotAShelf](https://github.com/notashelf/nyx) for introducing me to the idea of monorepos and custom logic (read: over-engineering) for Nix flakes +- [drupol/infra](https://not-a-number.io/2025/refactoring-my-infrastructure-as-code-configurations/) for introducing the dendritic pattern to me, and [mightyiam](https://discourse.nixos.org/t/pattern-every-file-is-a-flake-parts-module/61271) for pioneering it. diff --git a/docs/runbook.md b/docs/runbook.md index b4b3bc74..0d9bc98e 100644 --- a/docs/runbook.md +++ b/docs/runbook.md @@ -1 +1,14 @@ ssh-to-age -private-key -i ~/.ssh/id_ed25519 > ~/.config/sops/age/keys.txt + +rg --no-binary --hidden --null -l '' \ + | tr '\0' '\n' \ + | grep -vE '^\.git/' \ + | grep -vE '/(\.direnv|result|tmp|node_modules)/' \ + | while read -l f + echo "\n==== $f ====\n" + cat "$f" + end | pbcopy + +nix store info --store ssh://eu.nixbuild.net + +nix run nixpkgs#darwin.linux-builder diff --git a/flake.lock b/flake.lock index 36912bf7..8566b21c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,26 +20,6 @@ "type": "github" } }, - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1759236626, - "narHash": "sha256-1BjCUU2csqhR5umGYFnOOTU8r8Bi+bnB2SLsr0FLcws=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "9e0453a9b0c8ef22de0355b731d712707daa6308", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, "import-tree": { "locked": { "lastModified": 1752730890, @@ -55,27 +35,6 @@ "type": "github" } }, - "nix-darwin": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1758805352, - "narHash": "sha256-BHdc43Lkayd+72W/NXRKHzX5AZ+28F3xaUs3a88/Uew=", - "owner": "nix-darwin", - "repo": "nix-darwin", - "rev": "c48e963a5558eb1c3827d59d21c5193622a1477c", - "type": "github" - }, - "original": { - "owner": "nix-darwin", - "ref": "master", - "repo": "nix-darwin", - "type": "github" - } - }, "nixpkgs": { "locked": { "lastModified": 1759036355, @@ -95,35 +54,12 @@ "root": { "inputs": { "flake-parts": "flake-parts", - "home-manager": "home-manager", "import-tree": "import-tree", - "nix-darwin": "nix-darwin", "nixpkgs": "nixpkgs", - "rrv-sh": "rrv-sh", "sops-nix": "sops-nix", "systems": "systems" } }, - "rrv-sh": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1761744898, - "narHash": "sha256-LLpyw6/lbdc3JMmXDnJ3+Pcib/BB/f8vsr+W9coWbVk=", - "owner": "rrvsh", - "repo": "rrv.sh", - "rev": "eec76b1545ee1d21ff0f163e9d7addc92b9dc789", - "type": "github" - }, - "original": { - "owner": "rrvsh", - "repo": "rrv.sh", - "type": "github" - } - }, "sops-nix": { "inputs": { "nixpkgs": [ diff --git a/flake.nix b/flake.nix index ffa27706..791fff68 100644 --- a/flake.nix +++ b/flake.nix @@ -5,22 +5,20 @@ (inputs.import-tree ./ops/nix) // { systems = import inputs.systems; - flake.paths.root = ./.; + flake.paths = { + root = ./.; + device = ./ops/definitions/devices; + secrets = ./ops/definitions/secrets; + }; } ); inputs = { flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; flake-parts.url = "github:hercules-ci/flake-parts"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.url = "github:nix-community/home-manager"; - nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; - nix-darwin.url = "github:nix-darwin/nix-darwin/master"; - sops-nix.inputs.nixpkgs.follows = "nixpkgs"; - sops-nix.url = "github:Mic92/sops-nix"; import-tree.url = "github:vic/import-tree"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + sops-nix.inputs.nixpkgs.follows = "nixpkgs"; + sops-nix.url = "github:Mic92/sops-nix"; systems.url = "github:nix-systems/default"; - rrv-sh.url = "github:rrvsh/rrv.sh"; - rrv-sh.inputs.nixpkgs.follows = "nixpkgs"; }; } diff --git a/ops/definitions/devices/desktop.json b/ops/definitions/devices/desktop.json new file mode 100644 index 00000000..562cf7f8 --- /dev/null +++ b/ops/definitions/devices/desktop.json @@ -0,0 +1,7499 @@ +{ + "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": 773 + }, + "bluetooth": [ + { + "index": 86, + "attached_to": 93, + "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": "0032", + "value": 50 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e: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": "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:v8087p0032d0000dcE0dsc01dp01icE0isc01ip01in00" + }, + { + "index": 100, + "attached_to": 93, + "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": "0032", + "value": 50 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-7/1-7:1.1", + "sysfs_bus_id": "1-7: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:v8087p0032d0000dcE0dsc01dp01icE0isc01ip01in01" + } + ], + "bridge": [ + { + "index": 20, + "attached_to": 36, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 3, + "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": "43f4", + "value": 17396 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0", + "sysfs_bus_id": "0000:03:00.0", + "detail": { + "function": 0, + "command": 7, + "header_type": 1, + "secondary_bus": 4, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F4sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 22, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 6 + }, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:06.0", + "sysfs_bus_id": "0000:04:06.0", + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 8, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 24, + "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": "14da", + "value": 5338 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.0", + "sysfs_bus_id": "0000:00:08.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014DAsv00000000sd00000000bc06sc00i00" + }, + { + "index": 25, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 11 + }, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0b.0", + "sysfs_bus_id": "0000:04:0b.0", + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 13, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 26, + "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": "14e3", + "value": 5347 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.3", + "sysfs_bus_id": "0000:00:18.3", + "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:v00001022d000014E3sv00000000sd00000000bc06sc00i00" + }, + { + "index": 27, + "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": "14db", + "value": 5339 + }, + "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", + "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:v00001022d000014DBsv00001022sd00001453bc06sc04i00" + }, + { + "index": 28, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:09.0", + "sysfs_bus_id": "0000:04:09.0", + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 11, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 30, + "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": "14e1", + "value": 5345 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.1", + "sysfs_bus_id": "0000:00:18.1", + "detail": { + "function": 1, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E1sv00000000sd00000000bc06sc00i00" + }, + { + "index": 32, + "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": "14da", + "value": 5338 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.0", + "sysfs_bus_id": "0000:00:01.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014DAsv00000000sd00000000bc06sc00i00" + }, + { + "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": "14da", + "value": 5338 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:04.0", + "sysfs_bus_id": "0000:00:04.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014DAsv00000000sd00000000bc06sc00i00" + }, + { + "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": "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", + "detail": { + "function": 3, + "command": 15, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000790Esv00001458sd00005001bc06sc01i00" + }, + { + "index": 36, + "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": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14db", + "value": 5339 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1", + "sysfs_bus_id": "0000:00:02.1", + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 3, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014DBsv00001022sd00001453bc06sc04i00" + }, + { + "index": 37, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 5 + }, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:05.0", + "sysfs_bus_id": "0000:04:05.0", + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 7, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 38, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 10 + }, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0a.0", + "sysfs_bus_id": "0000:04:0a.0", + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 12, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 40, + "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": "14dd", + "value": 5341 + }, + "sub_device": { + "hex": "14dd", + "value": 5341 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3", + "sysfs_bus_id": "0000:00:08.3", + "detail": { + "function": 3, + "command": 1031, + "header_type": 1, + "secondary_bus": 53, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014DDsv00001022sd000014DDbc06sc04i00" + }, + { + "index": 41, + "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": "14e6", + "value": 5350 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.6", + "sysfs_bus_id": "0000:00:18.6", + "detail": { + "function": 6, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E6sv00000000sd00000000bc06sc00i00" + }, + { + "index": 42, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:08.0", + "sysfs_bus_id": "0000:04:08.0", + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 10, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 43, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 13 + }, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0d.0", + "sysfs_bus_id": "0000:04:0d.0", + "detail": { + "function": 0, + "command": 7, + "header_type": 1, + "secondary_bus": 15, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 44, + "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": "14d8", + "value": 5336 + }, + "sub_device": { + "hex": "14d8", + "value": 5336 + }, + "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:v00001022d000014D8sv00001022sd000014D8bc06sc00i00" + }, + { + "index": 46, + "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": "14dd", + "value": 5341 + }, + "sub_device": { + "hex": "14dd", + "value": 5341 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1", + "sysfs_bus_id": "0000:00:08.1", + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 52, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014DDsv00001022sd000014DDbc06sc04i00" + }, + { + "index": 47, + "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": "14e4", + "value": 5348 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.4", + "sysfs_bus_id": "0000:00:18.4", + "detail": { + "function": 4, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E4sv00000000sd00000000bc06sc00i00" + }, + { + "index": 50, + "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": "14da", + "value": 5338 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:03.0", + "sysfs_bus_id": "0000:00:03.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014DAsv00000000sd00000000bc06sc00i00" + }, + { + "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": "14e2", + "value": 5346 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.2", + "sysfs_bus_id": "0000:00:18.2", + "detail": { + "function": 2, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E2sv00000000sd00000000bc06sc00i00" + }, + { + "index": 53, + "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": "14db", + "value": 5339 + }, + "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", + "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:v00001022d000014DBsv00001022sd00001453bc06sc04i00" + }, + { + "index": 54, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:04.0", + "sysfs_bus_id": "0000:04:04.0", + "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:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "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": "14e0", + "value": 5344 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.0", + "sysfs_bus_id": "0000:00:18.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E0sv00000000sd00000000bc06sc00i00" + }, + { + "index": 58, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "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": "1b21", + "value": 6945 + }, + "device": { + "hex": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:07.0", + "sysfs_bus_id": "0000:04:07.0", + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 9, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 59, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "number": 12 + }, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0", + "sysfs_bus_id": "0000:04:0c.0", + "detail": { + "function": 0, + "command": 7, + "header_type": 1, + "secondary_bus": 14, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 62, + "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": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "14db", + "value": 5339 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.2", + "sysfs_bus_id": "0000:00:02.2", + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 16, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d000014DBsv00001022sd00001453bc06sc04i00" + }, + { + "index": 63, + "attached_to": 20, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 4, + "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": "43f5", + "value": 17397 + }, + "sub_device": { + "hex": "3328", + "value": 13096 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:00.0", + "sysfs_bus_id": "0000:04:00.0", + "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:v00001022d000043F5sv00001B21sd00003328bc06sc04i00" + }, + { + "index": 65, + "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": "14da", + "value": 5338 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.0", + "sysfs_bus_id": "0000:00:02.0", + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014DAsv00000000sd00000000bc06sc00i00" + }, + { + "index": 66, + "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": "14e7", + "value": 5351 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.7", + "sysfs_bus_id": "0000:00:18.7", + "detail": { + "function": 7, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E7sv00000000sd00000000bc06sc00i00" + }, + { + "index": 68, + "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": "14e5", + "value": 5349 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.5", + "sysfs_bus_id": "0000:00:18.5", + "detail": { + "function": 5, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000014E5sv00000000sd00000000bc06sc00i00" + } + ], + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "AuthenticAMD", + "model_name": "AMD Ryzen 7 7800X3D 8-Core Processor", + "family": 25, + "model": 97, + "stepping": 2, + "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", + "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", + "avic", + "vgif", + "x2avic", + "v_spec_ctrl", + "vnmi", + "avx512vb" + ], + "bugs": [ + "sysret_ss_attrs", + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "srso", + "ibpb_no_ret", + "tsa" + ], + "power_management": [ + "ts", + "ttp", + "tm", + "hwpstate", + "cpb", + "eff_freq_ro", + "[13]", + "[14]" + ], + "bogo": 8384, + "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": 71, + "attached_to": 31, + "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": "c0a9", + "value": 49321 + }, + "sub_vendor": { + "hex": "c0a9", + "value": 49321 + }, + "device": { + "hex": "540a", + "name": "CT2000P3SSD8", + "value": 21514 + }, + "sub_device": { + "hex": "5021", + "value": 20513 + }, + "serial": "2325E6E6888E", + "model": "CT2000P3SSD8", + "sysfs_id": "/class/block/nvme0n1", + "sysfs_bus_id": "nvme0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0/nvme/nvme0", + "unix_device_names": [ + "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E6888E", + "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E6888E_1", + "/dev/disk/by-id/nvme-nvme.c0a9-323332354536453638383845-435432303030503353534438-00000001", + "/dev/disk/by-path/pci-0000:02:00.0-nvme-1", + "/dev/nvme0n1" + ], + "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" + ] + }, + { + "index": 72, + "attached_to": 60, + "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": "c0a9", + "value": 49321 + }, + "sub_vendor": { + "hex": "c0a9", + "value": 49321 + }, + "device": { + "hex": "540a", + "name": "CT2000P3SSD8", + "value": 21514 + }, + "sub_device": { + "hex": "5021", + "value": 20513 + }, + "serial": "2325E6E77434", + "model": "CT2000P3SSD8", + "sysfs_id": "/class/block/nvme1n1", + "sysfs_bus_id": "nvme1", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.2/0000:10:00.0/nvme/nvme1", + "unix_device_names": [ + "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434", + "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434_1", + "/dev/disk/by-id/nvme-nvme.c0a9-323332354536453737343334-435432303030503353534438-00000001", + "/dev/disk/by-path/pci-0000:10:00.0-nvme-1", + "/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": 35, + "attached_to": 53, + "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": "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": "2488", + "value": 9352 + }, + "sub_device": { + "hex": "404c", + "value": 16460 + }, + "revision": { + "hex": "00a1", + "value": 161 + }, + "model": "nVidia VGA compatible controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.1/0000:01:00.0", + "sysfs_bus_id": "0000:01:00.0", + "resources": [ + { + "type": "io", + "base": 61440, + "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:v000010DEd00002488sv00001458sd0000404Cbc03sc00i00" + }, + { + "index": 55, + "attached_to": 46, + "class_list": [ + "graphics_card", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 52, + "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": "1458", + "value": 5208 + }, + "device": { + "hex": "164e", + "value": 5710 + }, + "sub_device": { + "hex": "d000", + "value": 53248 + }, + "revision": { + "hex": "00cb", + "value": 203 + }, + "model": "ATI VGA compatible controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.0", + "sysfs_bus_id": "0000:34:00.0", + "resources": [ + { + "type": "io", + "base": 53248, + "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:v00001002d0000164Esv00001458sd0000D000bc03sc00i00" + } + ], + "hub": [ + { + "index": 73, + "attached_to": 45, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:34:00.4", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/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:v1D6Bp0003d0612dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 79, + "attached_to": 82, + "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": "05e3", + "name": "GenesysLogic", + "value": 1507 + }, + "device": { + "hex": "0610", + "name": "USB2.1 Hub", + "value": 1552 + }, + "revision": { + "hex": "0000", + "name": "6.63", + "value": 0 + }, + "model": "GenesysLogic USB2.1 Hub", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2:1.0", + "sysfs_bus_id": "5-2.2: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:v05E3p0610d0663dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 80, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:34:00.3", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34: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:v1D6Bp0002d0612dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 82, + "attached_to": 98, + "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": "05e3", + "name": "GenesysLogic", + "value": 1507 + }, + "device": { + "hex": "0610", + "name": "USB2.1 Hub", + "value": 1552 + }, + "revision": { + "hex": "0000", + "name": "6.63", + "value": 0 + }, + "model": "GenesysLogic USB2.1 Hub", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2:1.0", + "sysfs_bus_id": "5-2: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:v05E3p0610d0663dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 83, + "attached_to": 48, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:35:00.0", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:35:00.0/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:v1D6Bp0002d0612dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 87, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:34:00.3", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34: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:v1D6Bp0003d0612dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 88, + "attached_to": 73, + "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": "05e3", + "name": "GenesysLogic", + "value": 1507 + }, + "device": { + "hex": "0626", + "name": "USB3.1 Hub", + "value": 1574 + }, + "revision": { + "hex": "0000", + "name": "6.63", + "value": 0 + }, + "model": "GenesysLogic USB3.1 Hub", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb6/6-2/6-2:1.0", + "sysfs_bus_id": "6-2: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:v05E3p0626d0663dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 89, + "attached_to": 83, + "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": "05e3", + "value": 1507 + }, + "device": { + "hex": "0608", + "name": "USB2.0 Hub", + "value": 1544 + }, + "revision": { + "hex": "0000", + "name": "60.90", + "value": 0 + }, + "model": "USB2.0 Hub", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:35:00.0/usb7/7-1/7-1:1.0", + "sysfs_bus_id": "7-1: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:v05E3p0608d6090dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 90, + "attached_to": 48, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:35:00.0", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:35:00.0/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", + "module_alias": "usb:v1D6Bp0003d0612dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 93, + "attached_to": 57, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:0e:00.0", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e: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:v1D6Bp0002d0612dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 97, + "attached_to": 88, + "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": "05e3", + "name": "GenesysLogic", + "value": 1507 + }, + "device": { + "hex": "0626", + "name": "USB3.1 Hub", + "value": 1574 + }, + "revision": { + "hex": "0000", + "name": "6.63", + "value": 0 + }, + "model": "GenesysLogic USB3.1 Hub", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb6/6-2/6-2.2/6-2.2:1.0", + "sysfs_bus_id": "6-2.2: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:v05E3p0626d0663dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 98, + "attached_to": 45, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:34:00.4", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/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:v1D6Bp0002d0612dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 101, + "attached_to": 57, + "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.12.43 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:0e:00.0", + "model": "Linux 6.12.43 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e: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:v1D6Bp0003d0612dc09dsc00dp03ic09isc00ip00in00" + } + ], + "keyboard": [ + { + "index": 102, + "attached_to": 79, + "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": "55d4", + "name": "DH747", + "value": 21972 + }, + "device": { + "hex": "0461", + "name": "W-CORNE", + "value": 1121 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "serial": "vial:f64c2b3c", + "model": "DH747 W-CORNE", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.3/5-2.2.3:1.0", + "sysfs_bus_id": "5-2.2.3:1.0", + "unix_device_names": [ + "/dev/input/by-id/usb-DH747_W-CORNE_vial:f64c2b3c-event-kbd", + "/dev/input/by-path/pci-0000:34:00.4-usb-0:2.2.3:1.0-event-kbd", + "/dev/input/by-path/pci-0000:34:00.4-usbv2-0:2.2.3:1.0-event-kbd", + "/dev/input/event16" + ], + "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:v55D4p0461d0100dc00dsc00dp00ic03isc01ip01in00" + } + ], + "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": 69, + "attached_to": 35, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "3def", + "value": 15855 + }, + "device": { + "hex": "2700", + "name": "AN-270W04K", + "value": 9984 + }, + "serial": "0", + "model": "AN-270W04K", + "resources": [ + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 70, + "interlaced": false + }, + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 1280, + "height": 1024, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1280, + "height": 1024, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 1280, + "height": 720, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1600, + "height": 900, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 2560, + "height": 1440, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 3840, + "height": 2160, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 72, + "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": 56, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 72, + "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": 2020, + "manufacture_week": 18, + "vertical_sync": { + "min": 44, + "max": 63 + }, + "horizontal_sync": { + "min": 23, + "max": 160 + }, + "horizontal_sync_timings": { + "disp": 3840, + "sync_start": 3888, + "sync_end": 3920, + "total": 4400 + }, + "vertical_sync_timings": { + "disp": 2160, + "sync_start": 2163, + "sync_end": 2169, + "total": 2250 + }, + "clock": 297000, + "width": 3840, + "height": 2160, + "width_millimetres": 597, + "height_millimetres": 336, + "horizontal_flag": 43, + "vertical_flag": 43, + "vendor": "", + "name": "AN-270W04K" + }, + "driver_info": { + "type": "display", + "width": 3840, + "height": 2160, + "vertical_sync": { + "min": 44, + "max": 63 + }, + "horizontal_sync": { + "min": 23, + "max": 160 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 3840, + "sync_start": 3888, + "sync_end": 3920, + "total": 4400 + }, + "vertical_sync_timings": { + "disp": 2160, + "sync_start": 2163, + "sync_end": 2169, + "total": 2250 + }, + "horizontal_flag": 43, + "vertical_flag": 43 + } + } + ], + "mouse": [ + { + "index": 81, + "attached_to": 79, + "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": "1532", + "name": "Razer", + "value": 5426 + }, + "device": { + "hex": "0083", + "name": "Razer Basilisk X HyperSpeed", + "value": 131 + }, + "revision": { + "hex": "0000", + "name": "2.00", + "value": 0 + }, + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Razer Basilisk X HyperSpeed", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.4/5-2.2.4:1.0", + "sysfs_bus_id": "5-2.2.4:1.0", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse1", + "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": 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:v1532p0083d0200dc00dsc00dp00ic03isc01ip02in00" + }, + { + "index": 99, + "attached_to": 79, + "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": "55d4", + "name": "DH747", + "value": 21972 + }, + "device": { + "hex": "0461", + "name": "W-CORNE", + "value": 1121 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "serial": "vial:f64c2b3c", + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "DH747 W-CORNE", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.3/5-2.2.3:1.2", + "sysfs_bus_id": "5-2.2.3:1.2", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse0", + "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": 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:v55D4p0461d0100dc00dsc00dp00ic03isc00ip00in02" + } + ], + "network_controller": [ + { + "index": 21, + "attached_to": 38, + "class_list": [ + "network_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 12, + "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:02.1/0000:03:00.0/0000:04:0a.0/0000:0c:00.0", + "sysfs_bus_id": "0000:0c:00.0", + "unix_device_names": [ + "enp12s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 55 + }, + { + "type": "io", + "base": 57344, + "range": 256, + "enabled": true, + "access": "read_write" + }, + { + "type": "phwaddr", + "address": 55 + } + ], + "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" + }, + { + "index": 64, + "attached_to": 25, + "class_list": [ + "network_controller", + "pci", + "wlan_card" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 13, + "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": "2725", + "value": 10021 + }, + "sub_device": { + "hex": "0024", + "value": 36 + }, + "revision": { + "hex": "001a", + "value": 26 + }, + "model": "Intel WLAN controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0b.0/0000:0d:00.0", + "sysfs_bus_id": "0000:0d:00.0", + "unix_device_names": [ + "wlp13s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 52 + }, + { + "type": "phwaddr", + "address": 52 + }, + { + "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:v00008086d00002725sv00008086sd00000024bc02sc80i00" + } + ], + "network_interface": [ + { + "index": 103, + "attached_to": 64, + "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/wlp13s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0b.0/0000:0d:00.0", + "unix_device_names": [ + "wlp13s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 52 + }, + { + "type": "phwaddr", + "address": 52 + } + ], + "driver": "iwlwifi", + "driver_module": "iwlwifi", + "drivers": [ + "iwlwifi" + ], + "driver_modules": [ + "iwlwifi" + ] + }, + { + "index": 104, + "attached_to": 21, + "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/enp12s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0a.0/0000:0c:00.0", + "unix_device_names": [ + "enp12s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 55 + }, + { + "type": "phwaddr", + "address": 55 + } + ], + "driver": "r8169", + "driver_module": "r8169", + "drivers": [ + "r8169" + ], + "driver_modules": [ + "r8169" + ] + }, + { + "index": 105, + "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": 51, + "attached_to": 46, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 52, + "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": "1649", + "value": 5705 + }, + "sub_device": { + "hex": "1649", + "value": 5705 + }, + "model": "AMD Encryption controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.2", + "sysfs_bus_id": "0000:34:00.2", + "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:v00001022d00001649sv00001022sd00001649bc10sc80i00" + }, + { + "index": 67, + "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": "0071", + "value": 113 + }, + "model": "AMD SMBus", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0", + "sysfs_bus_id": "0000:00:14.0", + "detail": { + "function": 0, + "command": 1027, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000790Bsv00001458sd00005001bc0Csc05i00" + } + ], + "sound": [ + { + "index": 29, + "attached_to": 46, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 52, + "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": "1002", + "name": "ATI Technologies Inc", + "value": 4098 + }, + "device": { + "hex": "1640", + "value": 5696 + }, + "sub_device": { + "hex": "1640", + "value": 5696 + }, + "model": "ATI Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.1", + "sysfs_bus_id": "0000:34:00.1", + "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:v00001002d00001640sv00001002sd00001640bc04sc03i00" + }, + { + "index": 39, + "attached_to": 46, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 52, + "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": "15e3", + "value": 5603 + }, + "sub_device": { + "hex": "a194", + "value": 41364 + }, + "model": "AMD Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.6", + "sysfs_bus_id": "0000:34:00.6", + "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:v00001022d000015E3sv00001458sd0000A194bc04sc03i00", + "label": "Realtek ALC1220" + }, + { + "index": 61, + "attached_to": 53, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 1, + "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": "228b", + "value": 8843 + }, + "sub_device": { + "hex": "404c", + "value": 16460 + }, + "revision": { + "hex": "00a1", + "value": 161 + }, + "model": "nVidia Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.1/0000:01:00.1", + "sysfs_bus_id": "0000:01:00.1", + "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:v000010DEd0000228Bsv00001458sd0000404Cbc04sc03i00" + }, + { + "index": 76, + "attached_to": 79, + "class_list": [ + "sound", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0001", + "name": "Multimedia audio controller", + "value": 1 + }, + "vendor": { + "hex": "0d8c", + "name": "C-Media Electronics Inc.", + "value": 3468 + }, + "device": { + "hex": "0014", + "name": "USB Audio Device", + "value": 20 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "model": "C-Media Electronics USB Audio Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.2/5-2.2.2:1.1", + "sysfs_bus_id": "5-2.2.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": "0001", + "name": "audio", + "value": 1 + }, + "interface_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "interface_protocol": 0, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "snd-usb-audio", + "driver_module": "snd_usb_audio", + "drivers": [ + "snd-usb-audio" + ], + "driver_modules": [ + "snd_usb_audio" + ], + "module_alias": "usb:v0D8Cp0014d0100dc00dsc00dp00ic01isc02ip00in01" + }, + { + "index": 91, + "attached_to": 79, + "class_list": [ + "sound", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0001", + "name": "Multimedia audio controller", + "value": 1 + }, + "vendor": { + "hex": "0d8c", + "name": "C-Media Electronics Inc.", + "value": 3468 + }, + "device": { + "hex": "0014", + "name": "USB Audio Device", + "value": 20 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "model": "C-Media Electronics USB Audio Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.2/5-2.2.2:1.2", + "sysfs_bus_id": "5-2.2.2: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": "0001", + "name": "audio", + "value": 1 + }, + "interface_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "interface_protocol": 0, + "interface_number": 2, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "snd-usb-audio", + "driver_module": "snd_usb_audio", + "drivers": [ + "snd-usb-audio" + ], + "driver_modules": [ + "snd_usb_audio" + ], + "module_alias": "usb:v0D8Cp0014d0100dc00dsc00dp00ic01isc02ip00in02" + }, + { + "index": 95, + "attached_to": 79, + "class_list": [ + "sound", + "usb" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0001", + "name": "Multimedia audio controller", + "value": 1 + }, + "vendor": { + "hex": "0d8c", + "name": "C-Media Electronics Inc.", + "value": 3468 + }, + "device": { + "hex": "0014", + "name": "USB Audio Device", + "value": 20 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "model": "C-Media Electronics USB Audio Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.2/5-2.2.2:1.0", + "sysfs_bus_id": "5-2.2.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": "0001", + "name": "audio", + "value": 1 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "snd-usb-audio", + "driver_module": "snd_usb_audio", + "drivers": [ + "snd-usb-audio" + ], + "driver_modules": [ + "snd_usb_audio" + ], + "module_alias": "usb:v0D8Cp0014d0100dc00dsc00dp00ic01isc01ip00in00" + } + ], + "storage_controller": [ + { + "index": 31, + "attached_to": 27, + "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": "0008", + "value": 8 + }, + "pci_interface": { + "hex": "0002", + "value": 2 + }, + "vendor": { + "hex": "c0a9", + "value": 49321 + }, + "sub_vendor": { + "hex": "c0a9", + "value": 49321 + }, + "device": { + "hex": "540a", + "value": 21514 + }, + "sub_device": { + "hex": "5021", + "value": 20513 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2/0000:02:00.0", + "sysfs_bus_id": "0000:02:00.0", + "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:v0000C0A9d0000540Asv0000C0A9sd00005021bc01sc08i02" + }, + { + "index": 49, + "attached_to": 43, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 15, + "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": "43f6", + "value": 17398 + }, + "sub_device": { + "hex": "1062", + "value": 4194 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0d.0/0000:0f:00.0", + "sysfs_bus_id": "0000:0f:00.0", + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 1 + }, + "driver": "ahci", + "driver_module": "ahci", + "drivers": [ + "ahci" + ], + "driver_modules": [ + "ahci" + ], + "module_alias": "pci:v00001022d000043F6sv00001B21sd00001062bc01sc06i01" + }, + { + "index": 60, + "attached_to": 62, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 16, + "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": "c0a9", + "value": 49321 + }, + "sub_vendor": { + "hex": "c0a9", + "value": 49321 + }, + "device": { + "hex": "540a", + "value": 21514 + }, + "sub_device": { + "hex": "5021", + "value": 20513 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.2/0000:10:00.0", + "sysfs_bus_id": "0000:10:00.0", + "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:v0000C0A9d0000540Asv0000C0A9sd00005021bc01sc08i02" + } + ], + "system": { + "form_factor": "desktop" + }, + "unknown": [ + { + "index": 70, + "attached_to": 0, + "class_list": [ + "unknown" + ], + "base_class": { + "hex": "0007", + "name": "Communication controller", + "value": 7 + }, + "sub_class": { + "hex": "0000", + "name": "Serial controller", + "value": 0 + }, + "pci_interface": { + "hex": "0002", + "name": "16550", + "value": 2 + }, + "device": { + "hex": "0000", + "name": "16550A", + "value": 0 + }, + "model": "16550A", + "unix_device_names": [ + "/dev/ttyS0" + ], + "resources": [ + { + "type": "io", + "base": 1016, + "range": 0, + "enabled": true, + "access": "read_write" + } + ] + } + ], + "usb": [ + { + "index": 74, + "attached_to": 79, + "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": "0d8c", + "name": "C-Media Electronics Inc.", + "value": 3468 + }, + "device": { + "hex": "0014", + "name": "USB Audio Device", + "value": 20 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "model": "C-Media Electronics USB Audio Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.2/5-2.2.2:1.3", + "sysfs_bus_id": "5-2.2.2:1.3", + "unix_device_names": [ + "/dev/input/by-id/usb-C-Media_Electronics_Inc._USB_Audio_Device-event-if03", + "/dev/input/by-path/pci-0000:34:00.4-usb-0:2.2.2:1.3-event", + "/dev/input/by-path/pci-0000:34:00.4-usbv2-0:2.2.2:1.3-event", + "/dev/input/event25" + ], + "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": 3, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v0D8Cp0014d0100dc00dsc00dp00ic03isc00ip00in03" + }, + { + "index": 75, + "attached_to": 79, + "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": "1532", + "name": "Razer", + "value": 5426 + }, + "device": { + "hex": "0083", + "name": "Razer Basilisk X HyperSpeed", + "value": 131 + }, + "revision": { + "hex": "0000", + "name": "2.00", + "value": 0 + }, + "model": "Razer Basilisk X HyperSpeed", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.4/5-2.2.4:1.2", + "sysfs_bus_id": "5-2.2.4:1.2", + "unix_device_names": [ + "/dev/input/by-id/usb-Razer_Razer_Basilisk_X_HyperSpeed-if02-event-kbd", + "/dev/input/by-path/pci-0000:34:00.4-usb-0:2.2.4:1.2-event-kbd", + "/dev/input/by-path/pci-0000:34:00.4-usbv2-0:2.2.4:1.2-event-kbd", + "/dev/input/event24" + ], + "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": 1, + "interface_number": 2, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v1532p0083d0200dc00dsc00dp00ic03isc00ip01in02" + }, + { + "index": 77, + "attached_to": 82, + "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": "1d50", + "name": "ZMK Project", + "value": 7504 + }, + "device": { + "hex": "615e", + "name": "urchin", + "value": 24926 + }, + "revision": { + "hex": "0000", + "name": "3.05", + "value": 0 + }, + "serial": "214AF0D66B273031", + "model": "ZMK Project urchin", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.4/5-2.4:1.1", + "sysfs_bus_id": "5-2.4: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:v1D50p615Ed0305dcEFdsc02dp01ic0Aisc00ip00in01" + }, + { + "index": 78, + "attached_to": 93, + "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:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0/usb1/1-10/1-10:1.0", + "sysfs_bus_id": "1-10: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": 84, + "attached_to": 79, + "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": "55d4", + "name": "DH747", + "value": 21972 + }, + "device": { + "hex": "0461", + "name": "W-CORNE", + "value": 1121 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "serial": "vial:f64c2b3c", + "model": "DH747 W-CORNE", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.3/5-2.2.3:1.1", + "sysfs_bus_id": "5-2.2.3: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:v55D4p0461d0100dc00dsc00dp00ic03isc00ip00in01" + }, + { + "index": 85, + "attached_to": 82, + "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": "2dc8", + "name": "8BitDo", + "value": 11720 + }, + "device": { + "hex": "3109", + "name": "IDLE", + "value": 12553 + }, + "revision": { + "hex": "0000", + "name": "2.00", + "value": 0 + }, + "serial": "E417D863C16B", + "model": "8BitDo IDLE", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.3/5-2.3:1.0", + "sysfs_bus_id": "5-2.3: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:v2DC8p3109d0200dc00dsc00dp00ic03isc00ip00in00" + }, + { + "index": 92, + "attached_to": 82, + "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": "1d50", + "name": "ZMK Project", + "value": 7504 + }, + "device": { + "hex": "615e", + "name": "urchin", + "value": 24926 + }, + "revision": { + "hex": "0000", + "name": "3.05", + "value": 0 + }, + "serial": "214AF0D66B273031", + "model": "ZMK Project urchin", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.4/5-2.4:1.2", + "sysfs_bus_id": "5-2.4:1.2", + "unix_device_names": [ + "/dev/input/by-id/usb-ZMK_Project_urchin_214AF0D66B273031-if02-event-kbd", + "/dev/input/by-path/pci-0000:34:00.4-usb-0:2.4:1.2-event-kbd", + "/dev/input/by-path/pci-0000:34:00.4-usbv2-0:2.4:1.2-event-kbd", + "/dev/input/event20" + ], + "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" + ], + "module_alias": "usb:v1D50p615Ed0305dcEFdsc02dp01ic03isc00ip00in02" + }, + { + "index": 94, + "attached_to": 79, + "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": "1532", + "name": "Razer", + "value": 5426 + }, + "device": { + "hex": "0083", + "name": "Razer Basilisk X HyperSpeed", + "value": 131 + }, + "revision": { + "hex": "0000", + "name": "2.00", + "value": 0 + }, + "model": "Razer Basilisk X HyperSpeed", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.2/5-2.2.4/5-2.2.4:1.1", + "sysfs_bus_id": "5-2.2.4:1.1", + "unix_device_names": [ + "/dev/input/by-id/usb-Razer_Razer_Basilisk_X_HyperSpeed-event-if01", + "/dev/input/by-path/pci-0000:34:00.4-usb-0:2.2.4:1.1-event", + "/dev/input/by-path/pci-0000:34:00.4-usbv2-0:2.2.4:1.1-event", + "/dev/input/event23" + ], + "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": 1, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v1532p0083d0200dc00dsc00dp00ic03isc00ip01in01" + }, + { + "index": 96, + "attached_to": 82, + "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": "1d50", + "name": "ZMK Project", + "value": 7504 + }, + "device": { + "hex": "615e", + "name": "urchin", + "value": 24926 + }, + "revision": { + "hex": "0000", + "name": "3.05", + "value": 0 + }, + "serial": "214AF0D66B273031", + "model": "ZMK Project urchin", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4/usb5/5-2/5-2.4/5-2.4:1.0", + "sysfs_bus_id": "5-2.4: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:v1D50p615Ed0305dcEFdsc02dp01ic02isc02ip00in00" + } + ], + "usb_controller": [ + { + "index": 23, + "attached_to": 46, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 52, + "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": "15b6", + "value": 5558 + }, + "sub_device": { + "hex": "5007", + "value": 20487 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.3", + "sysfs_bus_id": "0000:34:00.3", + "detail": { + "function": 3, + "command": 1027, + "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:v00001022d000015B6sv00001458sd00005007bc0Csc03i30" + }, + { + "index": 45, + "attached_to": 46, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 52, + "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": "15b7", + "value": 5559 + }, + "sub_device": { + "hex": "5007", + "value": 20487 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:34:00.4", + "sysfs_bus_id": "0000:34:00.4", + "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:v00001022d000015B7sv00001458sd00005007bc0Csc03i30" + }, + { + "index": 48, + "attached_to": 40, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 53, + "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": "15b8", + "value": 5560 + }, + "sub_device": { + "hex": "5007", + "value": 20487 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:35:00.0", + "sysfs_bus_id": "0000:35:00.0", + "detail": { + "function": 0, + "command": 1027, + "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:v00001022d000015B8sv00001458sd00005007bc0Csc03i30" + }, + { + "index": 57, + "attached_to": 59, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 14, + "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": "43f7", + "value": 17399 + }, + "sub_device": { + "hex": "1142", + "value": 4418 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:03:00.0/0000:04:0c.0/0000:0e:00.0", + "sysfs_bus_id": "0000:0e:00.0", + "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:v00001022d000043F7sv00001B21sd00001142bc0Csc03i30" + } + ] + }, + "smbios": { + "bios": { + "handle": 0, + "vendor": "American Megatrends International, LLC.", + "version": "F4", + "date": "09/28/2022", + "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": "B650M GAMING X AX", + "version": "x.x", + "board_type": { + "hex": "000a", + "name": "Motherboard", + "value": 10 + }, + "features": [ + "Hosting Board", + "Replaceable" + ], + "location": "Default string", + "chassis": 3 + }, + "cache": [ + { + "handle": 10, + "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": 11, + "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": 12, + "socket": "L3 - Cache", + "size_max": 98304, + "size_current": 98304, + "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": 41, + "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": 15, + "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": 14, + "slots": 4 + } + ], + "memory_array_mapped_address": [ + { + "handle": 16, + "array_handle": 15, + "start_address": "0x0", + "end_address": "0x800000000", + "part_width": 2 + } + ], + "memory_device": [ + { + "handle": 18, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL A", + "manufacturer": "Unknown", + "part_number": "Unknown", + "array_handle": 15, + "error_handle": 17, + "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": 20, + "location": "DIMM 1", + "bank_location": "P0 CHANNEL A", + "manufacturer": "Unknown", + "part_number": "CMH32GX5M2D6000C36", + "array_handle": 15, + "error_handle": 19, + "width": 64, + "ecc_bits": 0, + "size": 16777216, + "form_factor": { + "hex": "0009", + "name": "DIMM", + "value": 9 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 6000 + }, + { + "handle": 23, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL B", + "manufacturer": "Unknown", + "part_number": "Unknown", + "array_handle": 15, + "error_handle": 22, + "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": 25, + "location": "DIMM 1", + "bank_location": "P0 CHANNEL B", + "manufacturer": "Unknown", + "part_number": "CMH32GX5M2D6000C36", + "array_handle": 15, + "error_handle": 24, + "width": 64, + "ecc_bits": 0, + "size": 16777216, + "form_factor": { + "hex": "0009", + "name": "DIMM", + "value": 9 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 6000 + } + ], + "memory_device_mapped_address": [ + { + "handle": 21, + "memory_device_handle": 20, + "array_map_handle": 16, + "start_address": "0x0", + "end_address": "0x400000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + }, + { + "handle": 26, + "memory_device_handle": 25, + "array_map_handle": 16, + "start_address": "0x400000000", + "end_address": "0x800000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + } + ], + "memory_error": [ + { + "handle": 14, + "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": 17, + "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": 19, + "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": 22, + "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": 24, + "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-C" + }, + { + "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-C" + }, + { + "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": "J1503", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 2.0" + }, + { + "handle": 32, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J1504", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB 3.2" + }, + { + "handle": 33, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J1100", + "external_reference_designator": "Nova" + }, + { + "handle": 34, + "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": 35, + "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": 36, + "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": 13, + "socket": "AM5", + "socket_type": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "socket_populated": true, + "manufacturer": "Advanced Micro Devices, Inc.", + "version": "AMD Ryzen 7 7800X3D 8-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": 5050, + "cache_handle_l1": 10, + "cache_handle_l2": 11, + "cache_handle_l3": 12 + } + ], + "slot": [ + { + "handle": 37, + "designation": "PCIE1", + "slot_type": { + "hex": "00a9", + "name": "Other", + "value": 169 + }, + "bus_width": { + "hex": "000b", + "name": "Other", + "value": 11 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 1, + "features": [ + "3.3 V", + "PME#" + ] + }, + { + "handle": 38, + "designation": "J3502", + "slot_type": { + "hex": "00a8", + "name": "Other", + "value": 168 + }, + "bus_width": { + "hex": "000a", + "name": "Other", + "value": 10 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 0, + "features": [ + "3.3 V", + "PME#" + ] + }, + { + "handle": 39, + "designation": "PCIE4", + "slot_type": { + "hex": "00a8", + "name": "Other", + "value": 168 + }, + "bus_width": { + "hex": "000a", + "name": "Other", + "value": 10 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 6, + "features": [ + "3.3 V", + "PME#" + ] + } + ], + "system": { + "handle": 1, + "manufacturer": "Gigabyte Technology Co., Ltd.", + "product": "B650M GAMING X AX", + "version": "Default string", + "wake_up": { + "hex": "0006", + "name": "Power Switch", + "value": 6 + } + } + } +} diff --git a/ops/definitions/devices/desktop.nix b/ops/definitions/devices/desktop.nix new file mode 100644 index 00000000..6939a838 --- /dev/null +++ b/ops/definitions/devices/desktop.nix @@ -0,0 +1,68 @@ +{ + disko.devices.disk.main = { + device = "/dev/disk/by-id/nvme-CT2000P3SSD8_2325E6E77434"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + name = "boot"; + size = "1M"; + type = "EF02"; + }; + esp = { + name = "ESP"; + size = "500M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + }; + }; + swap = { + size = "4G"; + content = { + type = "swap"; + resumeDevice = true; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "lvm_pv"; + vg = "root_vg"; + }; + }; + }; + }; + }; + disko.devices.lvm_vg.root_vg = { + type = "lvm_vg"; + lvs.root = { + size = "100%FREE"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root".mountpoint = "/"; + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ + "subvol=persist" + "noatime" + ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ + "subvol=nix" + "noatime" + ]; + }; + }; + }; + }; + }; +} diff --git a/ops/definitions/devices/rpi4b.json b/ops/definitions/devices/rpi4b.json new file mode 100644 index 00000000..bcb3ba20 --- /dev/null +++ b/ops/definitions/devices/rpi4b.json @@ -0,0 +1,1005 @@ +{ + "version": 1, + "system": "aarch64-linux", + "virtualisation": "none", + "hardware": { + "bridge": [ + { + "index": 8, + "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": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "14e4", + "name": "Broadcom", + "value": 5348 + }, + "device": { + "hex": "2711", + "value": 10001 + }, + "revision": { + "hex": "0010", + "value": 16 + }, + "model": "Broadcom PCI bridge", + "sysfs_id": "/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0", + "sysfs_bus_id": "0000:00:00.0", + "detail": { + "function": 0, + "command": 6, + "header_type": 1, + "secondary_bus": 1, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v000014E4d00002711sv00000000sd00000000bc06sc04i00" + } + ], + "cpu": [ + { + "architecture": "aarch64", + "vendor_name": "ARM Limited", + "family": 0, + "model": 3, + "stepping": 0, + "features": [ + "fp", + "asimd", + "evtstrm", + "crc32", + "cpuid" + ], + "bogo": 108, + "page_size": 4096, + "physical_id": 0, + "fpu": false, + "fpu_exception": false, + "write_protect": false, + "address_sizes": { + "physical": "0x0", + "virtual": "0x0" + } + } + ], + "disk": [ + { + "index": 16, + "attached_to": 14, + "class_list": [ + "disk", + "block_device" + ], + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "serial": "0x597e0bab", + "model": "Disk", + "sysfs_id": "/class/block/mmcblk1", + "sysfs_bus_id": "mmc1:aaaa", + "sysfs_device_link": "/devices/platform/emmc2bus/fe340000.mmc/mmc_host/mmc1/mmc1:aaaa", + "unix_device_names": [ + "/dev/disk/by-id/mmc-SD32G_0x597e0bab", + "/dev/disk/by-path/platform-fe340000.mmc", + "/dev/mmcblk1" + ], + "resources": [ + { + "type": "disk_geo", + "cylinders": 973968, + "heads": 4, + "sectors": 16, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 62333952, + "value_2": 512 + } + ], + "driver": "sdhci-iproc", + "drivers": [ + "mmcblk", + "sdhci-iproc" + ] + } + ], + "hub": [ + { + "index": 17, + "attached_to": 7, + "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.12.49 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:01:00.0", + "model": "Linux 6.12.49 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01: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:v1D6Bp0002d0612dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 18, + "attached_to": 17, + "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": "2109", + "value": 8457 + }, + "device": { + "hex": "3431", + "name": "USB2.0 Hub", + "value": 13361 + }, + "revision": { + "hex": "0000", + "name": "4.21", + "value": 0 + }, + "model": "USB2.0 Hub", + "sysfs_id": "/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1:1.0", + "sysfs_bus_id": "1-1: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:v2109p3431d0421dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 19, + "attached_to": 7, + "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.12.49 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.12", + "value": 0 + }, + "serial": "0000:01:00.0", + "model": "Linux 6.12.49 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01: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:v1D6Bp0003d0612dc09dsc00dp03ic09isc00ip00in00" + } + ], + "memory": [ + { + "index": 6, + "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": 4026531840 + } + ] + } + ], + "mmc_controller": [ + { + "index": 14, + "attached_to": 0, + "class_list": [ + "mmc_controller" + ], + "bus_type": { + "hex": "0093", + "name": "MMC", + "value": 147 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0117", + "name": "MMC Controller", + "value": 279 + }, + "vendor": "", + "device": "SD Controller 1", + "model": "SD Controller 1", + "sysfs_id": "/devices/platform/emmc2bus/fe340000.mmc/mmc_host/mmc1/mmc1:aaaa", + "sysfs_bus_id": "mmc1:aaaa", + "driver": "mmcblk", + "drivers": [ + "mmcblk" + ] + }, + { + "index": 15, + "attached_to": 0, + "class_list": [ + "mmc_controller" + ], + "bus_type": { + "hex": "0093", + "name": "MMC", + "value": 147 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0117", + "name": "MMC Controller", + "value": 279 + }, + "vendor": "", + "device": "SDIO Controller 0", + "model": "SDIO Controller 0", + "sysfs_id": "/devices/platform/soc/fe300000.mmc/mmc_host/mmc0/mmc0:0001", + "sysfs_bus_id": "mmc0:0001" + } + ], + "network_controller": [ + { + "index": 10, + "attached_to": 0, + "class_list": [ + "network_controller", + "wlan_card" + ], + "bus_type": { + "hex": "0094", + "name": "SDIO", + "value": 148 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0082", + "name": "WLAN controller", + "value": 130 + }, + "vendor": { + "hex": "02d0", + "name": "Broadcom Corp.", + "value": 720 + }, + "device": { + "hex": "a9a6", + "name": "BCM43438 combo WLAN and Bluetooth Low Energy (BLE)", + "value": 43430 + }, + "model": "Broadcom BCM43438 combo WLAN and Bluetooth Low Energy (BLE)", + "sysfs_id": "/devices/platform/soc/fe300000.mmc/mmc_host/mmc0/mmc0:0001/mmc0:0001:1", + "sysfs_bus_id": "mmc0:0001:1", + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 101 + }, + { + "type": "phwaddr", + "address": 101 + }, + { + "type": "wlan", + "channels": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "36", + "40", + "44", + "48", + "52", + "56", + "60", + "64", + "100", + "104", + "108", + "112", + "116", + "120", + "124", + "128", + "132", + "136", + "140", + "144", + "149" + ], + "frequencies": [ + "2.412", + "2.417", + "2.422", + "2.427", + "2.432", + "2.437", + "2.442", + "2.447", + "2.452", + "2.457", + "2.462", + "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", + "5.72", + "5.745" + ], + "auth_modes": [ + "open", + "sharedkey", + "wpa-psk", + "wpa-eap" + ], + "enc_modes": [ + "WEP40", + "WEP104", + "TKIP", + "CCMP" + ] + } + ], + "driver": "brcmfmac", + "driver_module": "brcmfmac", + "drivers": [ + "brcmfmac" + ], + "driver_modules": [ + "brcmfmac", + "brcmfmac", + "brcmfmac" + ], + "module_alias": "sdio:c00v02D0dA9A6" + }, + { + "index": 12, + "attached_to": 0, + "class_list": [ + "network_controller" + ], + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0000", + "name": "Ethernet controller", + "value": 0 + }, + "device": { + "hex": "0000", + "name": "ARM Ethernet controller", + "value": 0 + }, + "model": "ARM Ethernet controller", + "sysfs_id": "/devices/platform/scb/fd580000.ethernet", + "sysfs_bus_id": "fd580000.ethernet", + "unix_device_names": [ + "end0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 101 + }, + { + "type": "phwaddr", + "address": 101 + } + ], + "driver": "bcmgenet", + "driver_module": "genet", + "drivers": [ + "bcmgenet" + ], + "driver_modules": [ + "genet" + ], + "module_alias": "of:NethernetT(null)Cbrcm,bcm2711-genet-v5" + } + ], + "network_interface": [ + { + "index": 21, + "attached_to": 10, + "class_list": [ + "network_interface" + ], + "base_class": { + "hex": "0107", + "name": "Network Interface", + "value": 263 + }, + "sub_class": { + "hex": "000a", + "name": "WLAN", + "value": 10 + }, + "model": "WLAN network interface", + "sysfs_id": "/class/net/wlan0", + "sysfs_device_link": "/devices/platform/soc/fe300000.mmc/mmc_host/mmc0/mmc0:0001/mmc0:0001:1", + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 101 + }, + { + "type": "phwaddr", + "address": 101 + } + ], + "driver": "brcmfmac", + "driver_module": "brcmfmac", + "drivers": [ + "brcmfmac" + ], + "driver_modules": [ + "brcmfmac", + "brcmfmac", + "brcmfmac" + ] + }, + { + "index": 22, + "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": 23, + "attached_to": 12, + "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/end0", + "sysfs_device_link": "/devices/platform/scb/fd580000.ethernet", + "unix_device_names": [ + "end0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 101 + }, + { + "type": "phwaddr", + "address": 101 + } + ], + "driver": "bcmgenet", + "driver_module": "genet", + "drivers": [ + "bcmgenet" + ], + "driver_modules": [ + "genet" + ] + } + ], + "system": {}, + "unknown": [ + { + "index": 9, + "attached_to": 0, + "class_list": [ + "unknown" + ], + "bus_type": { + "hex": "0094", + "name": "SDIO", + "value": 148 + }, + "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": "02d0", + "name": "Broadcom Corp.", + "value": 720 + }, + "device": { + "hex": "a9a6", + "name": "BCM43438 combo WLAN and Bluetooth Low Energy (BLE)", + "value": 43430 + }, + "model": "Broadcom BCM43438 combo WLAN and Bluetooth Low Energy (BLE)", + "sysfs_id": "/devices/platform/soc/fe300000.mmc/mmc_host/mmc0/mmc0:0001/mmc0:0001:3", + "sysfs_bus_id": "mmc0:0001:3", + "module_alias": "sdio:c02v02D0dA9A6" + }, + { + "index": 11, + "attached_to": 0, + "class_list": [ + "unknown" + ], + "bus_type": { + "hex": "0094", + "name": "SDIO", + "value": 148 + }, + "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": "02d0", + "name": "Broadcom Corp.", + "value": 720 + }, + "device": { + "hex": "a9a6", + "name": "BCM43438 combo WLAN and Bluetooth Low Energy (BLE)", + "value": 43430 + }, + "model": "Broadcom BCM43438 combo WLAN and Bluetooth Low Energy (BLE)", + "sysfs_id": "/devices/platform/soc/fe300000.mmc/mmc_host/mmc0/mmc0:0001/mmc0:0001:2", + "sysfs_bus_id": "mmc0:0001:2", + "driver": "brcmfmac", + "driver_module": "brcmfmac", + "drivers": [ + "brcmfmac" + ], + "driver_modules": [ + "brcmfmac", + "brcmfmac", + "brcmfmac" + ], + "module_alias": "sdio:c00v02D0dA9A6" + } + ], + "usb_controller": [ + { + "index": 7, + "attached_to": 8, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 1, + "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": "1106", + "value": 4358 + }, + "sub_vendor": { + "hex": "1106", + "value": 4358 + }, + "device": { + "hex": "3483", + "value": 13443 + }, + "sub_device": { + "hex": "3483", + "value": 13443 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "USB Controller", + "sysfs_id": "/devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0", + "sysfs_bus_id": "0000:01:00.0", + "detail": { + "function": 0, + "command": 1350, + "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:v00001106d00003483sv00001106sd00003483bc0Csc03i30" + }, + { + "index": 13, + "attached_to": 0, + "class_list": [ + "usb_controller" + ], + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0000", + "name": "UHCI", + "value": 0 + }, + "device": { + "hex": "0000", + "name": "ARM USB controller", + "value": 0 + }, + "model": "ARM USB controller", + "sysfs_id": "/devices/platform/soc/fe980000.usb", + "sysfs_bus_id": "fe980000.usb", + "driver": "dwc2", + "drivers": [ + "dwc2" + ], + "driver_info": { + "type": "module", + "db_entry_0": [ + "uhci-hcd" + ], + "active": false, + "modprobe": true, + "names": [ + "uhci-hcd" + ], + "module_args": [ + "" + ], + "conf": "" + }, + "module_alias": "of:NusbT(null)Cbrcm,bcm2835-usb" + } + ] + }, + "smbios": {} +} diff --git a/ops/definitions/devices/rpi4b.nix b/ops/definitions/devices/rpi4b.nix new file mode 100644 index 00000000..27e6294b --- /dev/null +++ b/ops/definitions/devices/rpi4b.nix @@ -0,0 +1,35 @@ +{ + disko.devices = { + disk.main = { + device = "/dev"; # FIXME: set to rpi device name + type = "disk"; + content = { + type = "gpt"; + partitions = { + firmware = { + type = "EF00"; + size = "64M"; + label = "FIRMWARE"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot/firmware"; + }; + }; + root = { + type = "8300"; + size = "100%"; + label = "NIXOS_SD"; + content = { + type = "filesystem"; + format = "ext4"; + mountpoint = "/"; + mountOptions = [ "noatime" ]; # disables access-time updates — improves SD card lifespan + }; + }; + }; + }; + }; + }; + +} diff --git a/ops/sops/keys.yaml b/ops/definitions/secrets/keys.yaml similarity index 100% rename from ops/sops/keys.yaml rename to ops/definitions/secrets/keys.yaml diff --git a/ops/sops/users.yaml b/ops/definitions/secrets/users.yaml similarity index 100% rename from ops/sops/users.yaml rename to ops/definitions/secrets/users.yaml diff --git a/ops/nix/.gitignore b/ops/nix/_templates/.gitignore similarity index 100% rename from ops/nix/.gitignore rename to ops/nix/_templates/.gitignore diff --git a/ops/nix/templates/_pkg-shell/.envrc b/ops/nix/_templates/pkg-shell/.envrc similarity index 100% rename from ops/nix/templates/_pkg-shell/.envrc rename to ops/nix/_templates/pkg-shell/.envrc diff --git a/ops/nix/_templates/pkg-shell/.gitignore b/ops/nix/_templates/pkg-shell/.gitignore new file mode 100644 index 00000000..92b27930 --- /dev/null +++ b/ops/nix/_templates/pkg-shell/.gitignore @@ -0,0 +1 @@ +.direnv diff --git a/ops/nix/templates/_pkg-shell/Justfile b/ops/nix/_templates/pkg-shell/Justfile similarity index 100% rename from ops/nix/templates/_pkg-shell/Justfile rename to ops/nix/_templates/pkg-shell/Justfile diff --git a/ops/nix/templates/_pkg-shell/flake.nix b/ops/nix/_templates/pkg-shell/flake.nix similarity index 100% rename from ops/nix/templates/_pkg-shell/flake.nix rename to ops/nix/_templates/pkg-shell/flake.nix diff --git a/ops/nix/templates/_pkg-shell/nix/package.nix b/ops/nix/_templates/pkg-shell/nix/package.nix similarity index 100% rename from ops/nix/templates/_pkg-shell/nix/package.nix rename to ops/nix/_templates/pkg-shell/nix/package.nix diff --git a/ops/nix/templates/_pkg-shell/nix/shell.nix b/ops/nix/_templates/pkg-shell/nix/shell.nix similarity index 100% rename from ops/nix/templates/_pkg-shell/nix/shell.nix rename to ops/nix/_templates/pkg-shell/nix/shell.nix diff --git a/ops/nix/dendri/README.md b/ops/nix/dendri/README.md new file mode 100644 index 00000000..c36eee55 --- /dev/null +++ b/ops/nix/dendri/README.md @@ -0,0 +1,13 @@ +# dendri + +this should be a flake-parts module that lets you define your users and nodes in a higher level than nixos. + +## folder structure + +`a/b/c/d` -> `options.flake.a.b.c.d` + +## architecture + +each module in a subfolder should result in changes to the relevant `config.flake.modules..leaf` lower-level module. + +each module in this folder should result in generated packages or configuration. diff --git a/ops/nix/dendri/imports.nix b/ops/nix/dendri/imports.nix new file mode 100644 index 00000000..1c75663b --- /dev/null +++ b/ops/nix/dendri/imports.nix @@ -0,0 +1,4 @@ +{ inputs, ... }: +{ + imports = [ inputs.flake-parts.flakeModules.modules ]; +} diff --git a/ops/nix/dendri/users/admin.nix b/ops/nix/dendri/users/admin.nix new file mode 100644 index 00000000..60de50eb --- /dev/null +++ b/ops/nix/dendri/users/admin.nix @@ -0,0 +1,20 @@ +{ lib, config, ... }: +let + cfg = config.flake; + inherit (builtins) attrNames attrValues; + inherit (lib.types) str; + inherit (lib.options) mkOption; + inherit (lib.attrsets) filterAttrs; + inherit (lib.lists) elemAt; + adminCfg = elemAt (attrValues (filterAttrs (_: value: value.primary or false) cfg.users.users)) 0; +in +{ + options.flake.users.admin = { + username = mkOption { type = str; }; + email = mkOption { type = str; }; + }; + config.flake.users.admin = { + inherit (adminCfg) email; + username = elemAt (attrNames (filterAttrs (_: value: value.primary or false) cfg.users.users)) 0; + }; +} diff --git a/ops/nix/dendri/users/sops.nix b/ops/nix/dendri/users/sops.nix new file mode 100644 index 00000000..9ed729e0 --- /dev/null +++ b/ops/nix/dendri/users/sops.nix @@ -0,0 +1,56 @@ +{ + inputs, + config, + lib, + ... +}: +let + cfg = config.flake; + userSecrets = secrets + /users.yaml; + inherit (cfg.paths) secrets; + inherit (cfg.users) admin; + inherit (builtins) pathExists; + inherit (lib.attrsets) mapAttrs'; + inherit (lib.options) mkOption; + inherit (lib.types) enum; + inherit (lib.modules) mkIf; +in +{ + options.flake.users.secrets.type = mkOption { + type = enum [ "sops" ]; + default = "sops"; + }; + config.flake.modules.nixos.leaf = + { config, ... }: + let + sshKeyPath = "${config.users.users.${admin.username}.home}/.ssh/id_ed25519"; + in + { + imports = [ inputs.sops-nix.nixosModules.sops ]; + config = mkIf (cfg.users.secrets.type == "sops") { + assertions = [ + { + assertion = pathExists userSecrets; + message = "You must have created ${userSecrets} to set user passwords."; + } + ]; + system.activationScripts.ensureSshKey.text = # bash + '' + path="${sshKeyPath}" + if [ ! -f "$path" ]; then + echo "Error: SSH key missing at $path" + echo "Create or copy it before rebuilding." + exit 1 + fi + ''; + sops.age.sshKeyPaths = [ sshKeyPath ]; + sops.secrets = mapAttrs' (name: _value: { + name = "${name}/hashedPassword"; + value = { + neededForUsers = true; + sopsFile = userSecrets; + }; + }) cfg.users.users; + }; + }; +} diff --git a/ops/nix/dendri/users/users.nix b/ops/nix/dendri/users/users.nix new file mode 100644 index 00000000..5ea32fbc --- /dev/null +++ b/ops/nix/dendri/users/users.nix @@ -0,0 +1,43 @@ +{ lib, config, ... }: +let + cfg = config.flake; + inherit (builtins) mapAttrs attrValues; + inherit (lib.types) str attrsOf submodule; + inherit (lib.options) mkOption mkEnableOption; + inherit (lib.modules) mkIf; + inherit (lib.lists) optional any; +in +{ + options.flake.users.users = mkOption { + type = attrsOf (submodule { + options = { + primary = mkEnableOption ""; + email = mkOption { type = str; }; + pubkey = mkOption { type = str; }; + }; + }); + }; + config.flake.modules.nixos.leaf = + { config, ... }: + { + assertions = [ + { + assertion = any (u: u.primary) (attrValues cfg.users.users); + message = "At least one user must have `primary = true` in flake.users.users."; + } + ]; + security.sudo.wheelNeedsPassword = false; + users = { + groups.users.gid = 100; + mutableUsers = false; + users = mapAttrs (username: userConfig: { + extraGroups = optional userConfig.primary "wheel"; + hashedPasswordFile = mkIf ( + cfg.users.secrets.type == "sops" + ) config.sops.secrets."${username}/hashedPassword".path; + isNormalUser = true; + openssh.authorizedKeys.keys = [ userConfig.pubkey ]; + }) cfg.users.users; + }; + }; +} diff --git a/ops/nix/manifest.nix b/ops/nix/manifest.nix new file mode 100644 index 00000000..336030b1 --- /dev/null +++ b/ops/nix/manifest.nix @@ -0,0 +1,30 @@ +{ + flake = { + users.users.rafiq = { + primary = true; + email = "rafiq@rrv.sh"; + pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILdsZyY3gu8IGB8MzMnLdh+ClDxQQ2RYG9rkeetIKq8n rafiq"; + }; + templates.pkg-shell = { + path = ./_templates/pkg-shell; + description = "premade package and shell for all systems with flake parts"; + }; + }; + perSystem = + { pkgs, ... }: + { + devShells.default = pkgs.mkShell { + buildInputs = with pkgs; [ + deadnix + gh + git + just + nh + nixfmt-tree + sops + statix + zizmor + ]; + }; + }; +} diff --git a/ops/nix/manifest/manifest.nix b/ops/nix/manifest/manifest.nix deleted file mode 100644 index b04e3df7..00000000 --- a/ops/nix/manifest/manifest.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ config, ... }: -let - cfg = config.flake; -in -{ - flake.manifest = { - externals.nginx = { - node = "veil"; - addSSL = true; - }; - nodes.nixos = { - veil = { - arch = "aarch64"; - createImage = true; - modules = with cfg.modules.nixos; [ rrv-sh ]; - proxies = [ - { - domain = "rrv.sh"; - port = 2309; - } - ]; - }; - }; - }; -} diff --git a/ops/nix/manifest/modules/nixos/default.nix b/ops/nix/manifest/modules/nixos/default.nix deleted file mode 100644 index 1eb23077..00000000 --- a/ops/nix/manifest/modules/nixos/default.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ config, inputs, ... }: -let - inherit (config.flake.paths) secrets; -in -{ - flake.modules.nixos.default = - { - hostName, - hostConfig, - config, - ... - }: - { - imports = [ inputs.sops-nix.nixosModules.sops ]; - networking.hostName = hostName; - nix.settings = { - experimental-features = [ - "nix-command" - "flakes" - ]; - substituters = [ "https://nix-community.cachix.org" ]; - trusted-public-keys = [ - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; - trusted-substituters = [ "https://nix-community.cachix.org" ]; - }; - nixpkgs.hostPlatform.system = "${hostConfig.arch}-linux"; - security.sudo.wheelNeedsPassword = false; - services = { - openssh.enable = true; - tailscale = { - authKeyFile = config.sops.secrets."keys/tailscale".path; - enable = true; - }; - }; - sops = { - age.sshKeyPaths = [ "/home/rafiq/.ssh/id_ed25519" ]; - secrets = { - "keys/tailscale".sopsFile = secrets + /keys.yaml; - "rafiq/hashedPassword" = { - neededForUsers = true; - sopsFile = secrets + /users.yaml; - }; - }; - }; - system.stateVersion = "25.11"; - users = { - groups.users.gid = 100; - mutableUsers = false; - users.rafiq = { - extraGroups = [ "wheel" ]; - hashedPasswordFile = config.sops.secrets."rafiq/hashedPassword".path; - isNormalUser = true; - openssh.authorizedKeys.keys = [ - "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILdsZyY3gu8IGB8MzMnLdh+ClDxQQ2RYG9rkeetIKq8n rafiq" - ]; - }; - }; - }; -} diff --git a/ops/nix/manifest/modules/nixos/nginx.nix b/ops/nix/manifest/modules/nixos/nginx.nix deleted file mode 100644 index a8232842..00000000 --- a/ops/nix/manifest/modules/nixos/nginx.nix +++ /dev/null @@ -1,67 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.flake; - inherit (builtins) - toString - map - concatLists - listToAttrs - ; - inherit (lib.attrsets) mapAttrsToList; - inherit (lib.modules) mkMerge mkIf; - inherit (lib.trivial) pipe; - inherit (cfg.paths) secrets; - mkVHostConfig = - manifest: - pipe manifest.nodes.nixos [ - # enrich each proxy attrset with the node name - (mapAttrsToList (nodeName: nodeConfig: map (x: x // { node = nodeName; }) nodeConfig.proxies)) - # combine all proxy attrsets in the manifest - concatLists - # construct virtual host config for proxies - (map (proxy: { - name = proxy.domain; - value = { - inherit (manifest.externals.nginx) addSSL; - useACMEHost = if manifest.externals.nginx.addSSL then proxy.domain else null; - acmeRoot = null; # needed for DNS validation - locations."/".proxyPass = "http://${ - if (proxy.node == manifest.externals.nginx.node) then "localhost" else proxy.node - }:${toString proxy.port}"; - }; - })) - listToAttrs - ]; -in -{ - flake.modules.nixos.default = - { - hostName, - manifest, - config, - ... - }: - mkIf (hostName == manifest.externals.nginx.node) (mkMerge [ - { - networking.firewall.allowedTCPPorts = [ - 80 # HTTP - 443 # HTTPS - ]; - services.nginx.enable = true; - services.nginx.virtualHosts = mkVHostConfig manifest; - } - (mkIf manifest.externals.nginx.addSSL { - users.users.nginx.extraGroups = [ "acme" ]; - sops.secrets."keys/cloudflare".sopsFile = secrets + /keys.yaml; - security.acme = { - acceptTerms = true; - defaults = { - email = "rafiq@rrv.sh"; - dnsProvider = "cloudflare"; - credentialFiles."CLOUDFLARE_DNS_API_TOKEN_FILE" = config.sops.secrets."keys/cloudflare".path; - }; - certs."rrv.sh".extraDomainNames = [ "*.rrv.sh" ]; - }; - }) - ]); -} diff --git a/ops/nix/manifest/modules/nixos/proxies/rrv-sh.nix b/ops/nix/manifest/modules/nixos/proxies/rrv-sh.nix deleted file mode 100644 index a63f3c73..00000000 --- a/ops/nix/manifest/modules/nixos/proxies/rrv-sh.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ inputs, ... }: -{ - flake.modules.nixos.rrv-sh = { - imports = [ inputs.rrv-sh.nixosModules.default ]; - services.rrv-sh.enable = true; - networking.firewall.allowedTCPPorts = [ 2309 ]; - }; -} diff --git a/ops/nix/manifest/modules/nixos/sd-image.nix b/ops/nix/manifest/modules/nixos/sd-image.nix deleted file mode 100644 index 474c1dc9..00000000 --- a/ops/nix/manifest/modules/nixos/sd-image.nix +++ /dev/null @@ -1,16 +0,0 @@ -{ inputs, lib, ... }: -let - inherit (lib.modules) mkIf; - inherit (lib.lists) optional; -in -{ - flake.modules.nixos.default = - { hostName, hostConfig, ... }: - { - imports = optional hostConfig.createImage "${inputs.nixpkgs}/nixos/modules/installer/sd-card/sd-image-${hostConfig.arch}.nix"; - config = mkIf hostConfig.createImage { - image.fileName = "nixos-25-11-${hostConfig.arch}-${hostName}.img"; - sdImage.compressImage = false; - }; - }; -} diff --git a/ops/nix/manifest/utils/config.nix b/ops/nix/manifest/utils/config.nix deleted file mode 100644 index 052221b4..00000000 --- a/ops/nix/manifest/utils/config.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - config, - lib, - inputs, - ... -}: -let - cfg = config.flake; - inherit (cfg) manifest; - inherit (builtins) mapAttrs; - inherit (lib) nixosSystem; - inherit (lib.attrsets) filterAttrs; -in -{ - imports = [ inputs.flake-parts.flakeModules.modules ]; - flake = { - nixosConfigurations = mapAttrs ( - name: value: - nixosSystem { - specialArgs = { - inherit manifest; - hostName = name; - hostConfig = value; - }; - modules = [ cfg.modules.nixos.default ] ++ value.modules; - } - ) manifest.nodes.nixos; - images = (mapAttrs (name: _: cfg.nixosConfigurations.${name}.config.system.build.sdImage)) ( - filterAttrs (_: value: value.createImage) manifest.nodes.nixos - ); - }; -} diff --git a/ops/nix/manifest/utils/options.nix b/ops/nix/manifest/utils/options.nix deleted file mode 100644 index 6b23bc31..00000000 --- a/ops/nix/manifest/utils/options.nix +++ /dev/null @@ -1,70 +0,0 @@ -{ lib, config, ... }: -let - cfg = config.flake; - inherit (cfg.paths) root; - inherit (builtins) attrNames; - inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) - deferredModule - attrsOf - submodule - str - bool - path - enum - listOf - port - ; -in -{ - options.flake = { - manifest = { - externals.nginx = mkOption { - type = submodule { - options = { - node = mkOption { type = enum (attrNames cfg.manifest.nodes.nixos); }; - addSSL = mkEnableOption ""; - }; - }; - }; - nodes.nixos = mkOption { - type = attrsOf (submodule { - options = { - arch = mkOption { type = str; }; - createImage = mkOption { - type = bool; - default = false; - }; - proxies = mkOption { - type = listOf (submodule { - options = { - domain = mkOption { type = str; }; - port = mkOption { type = port; }; - }; - }); - default = [ ]; - }; - modules = mkOption { - type = listOf deferredModule; - default = [ ]; - }; - }; - }); - }; - }; - paths = { - root = mkOption { - type = path; - readOnly = true; - }; - secrets = mkOption { - type = path; - default = root + "/ops/sops"; - }; - www = mkOption { - type = path; - default = root + "/src/www"; - }; - }; - }; -} diff --git a/ops/nix/shell.nix b/ops/nix/shell.nix deleted file mode 100644 index 36274ef0..00000000 --- a/ops/nix/shell.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - perSystem = - { pkgs, ... }: - { - devShells.default = pkgs.mkShell { - buildInputs = with pkgs; [ - deadnix - gh - git - just - nh - nixfmt-tree - sops - statix - zizmor - ]; - }; - }; -} diff --git a/ops/nix/templates/pkg-shell.nix b/ops/nix/templates/pkg-shell.nix deleted file mode 100644 index f1b6c7c7..00000000 --- a/ops/nix/templates/pkg-shell.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - flake.templates.pkg-shell = { - path = ./_pkg-shell; - description = "premade package and shell for all systems with flake parts"; - }; -}