From c06a3f7f92de1fa828b8cf25332e447eab41cd1a Mon Sep 17 00:00:00 2001 From: NeilClack Date: Mon, 27 Jul 2026 14:13:58 -0500 Subject: [PATCH] init new repo --- .forgejo/workflows/build-dev.yml | 67 + .gitignore | 6 + .sops.yaml | 7 + 14rvk.json | 4300 +++++++++++++++++++++++++ AGENTS.md | 73 + assets/RWT_Logo-Dark.svg | 117 + assets/splash.png | Bin 0 -> 53030 bytes build-rpi.sh | 49 + commands.md | 43 + commercial-disk-config.nix | 44 + commercial-iso-config.nix | 128 + configuration.nix | 202 ++ dev-iso.nix | 128 + disk-config.nix | 44 + facter.json | 4549 ++++++++++++++++++++++++++ flake.lock | 299 ++ flake.nix | 225 ++ hardware/x86_64-nvme-uefi.nix | 29 + iso-config.nix | 123 + plymouth-theme/rhemawave.plymouth | 8 + plymouth-theme/rhemawave.script | 6 + pn54.json | 5006 +++++++++++++++++++++++++++++ rotated_display.nix | 34 + vm-disk-config.nix | 49 + 24 files changed, 15536 insertions(+) create mode 100644 .forgejo/workflows/build-dev.yml create mode 100644 .gitignore create mode 100644 .sops.yaml create mode 100644 14rvk.json create mode 100644 AGENTS.md create mode 100644 assets/RWT_Logo-Dark.svg create mode 100644 assets/splash.png create mode 100755 build-rpi.sh create mode 100644 commands.md create mode 100644 commercial-disk-config.nix create mode 100644 commercial-iso-config.nix create mode 100644 configuration.nix create mode 100644 dev-iso.nix create mode 100644 disk-config.nix create mode 100644 facter.json create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 hardware/x86_64-nvme-uefi.nix create mode 100644 iso-config.nix create mode 100644 plymouth-theme/rhemawave.plymouth create mode 100644 plymouth-theme/rhemawave.script create mode 100644 pn54.json create mode 100644 rotated_display.nix create mode 100644 vm-disk-config.nix diff --git a/.forgejo/workflows/build-dev.yml b/.forgejo/workflows/build-dev.yml new file mode 100644 index 0000000..a8d96e1 --- /dev/null +++ b/.forgejo/workflows/build-dev.yml @@ -0,0 +1,67 @@ +# This workflow generates dev-iso any time RadiantWave is updated. +# When RadiantWave recieves a PR, a workflow is triggered that builds +# the application. If that succeeds, then this workflow is triggered +# to build the dev-iso for testing on a dev machine. The iso image is +# spit into /ssd/radiantwave/builds/ and is timestamped. +# +# This action is not meant to be run any time code is pushed to +# KioskConfig, instead, it is strictly a "response" action. +# +# Remember: KioskConfig only has the main branch, because +# the split between production and development happens +# at the system closure level, not at the branch level of +# this repository. +on: + workflow_dispatch: + repository_dispatch: + types: + - radiantwave-dev-built +jobs: + update-and-build: + runs-on: neils-server-runner + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + token: ${{ secrets.TOKEN }} + + - name: Update rhemawave-dev + run: | + . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + nix flake update rhemawave-dev + + # This builds the system closure + - name: Build dev VM + run: | + . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + nix build -L .#nixosConfigurations.rhemawavekiosk-dev.config.system.build.toplevel + + # If the closure builds, it's valid, even if incorrect and something is wrong. + # That's why we build the ISO next, even for the dev branch, for testing + - name: Build dev ISO + run: | + . /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh + nix build -L .#nixosConfigurations.dev-iso.config.system.build.isoImage + cp -rL result/iso/*.iso /ssd/radiantwave/build/radiantwave-kiosk-iso-dev-$(date +%Y%m%d-%H%M%S) + + - name: Commit updated flake.lock + run: | + git config user.email "ci@radiantwavetech.com" + git config user.name "RadiantWave CI" + git remote set-url origin https://oauth2:${{ secrets.FORGEJO_TOKEN }}@codeberg.org/RhemaWave-Technologies/KioskConfig.git + git add flake.lock + git commit -m "chore: update rhemawave-dev to latest dev" || echo "Nothing to commit" + git push + + - name: Notify + if: always() + uses: https://github.com/dawidd6/action-send-mail@v3 + with: + server_address: smtp.gmail.com + server_port: 465 + username: ${{ secrets.MAIL_USERNAME }} + password: ${{ secrets.MAIL_PASSWORD }} + subject: "${{ job.status == 'success' && '✅' || '❌' }} KioskConfig dev build ${{ job.status }}" + to: cnclack@pm.me + from: ci@radiantwavetech.com + body: "KioskConfig dev build ${{ job.status }} — rhemawave-dev updated and arstifacts copied to /ssd/radiantwave/build/" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49d9794 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +result +result-* +build/out/ +.direnv +wifi-psk.txt +*.qcow2 diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..b6b0d12 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,7 @@ +keys: + - &primary age1t2wpzv5rj8uqcfhev3zw4zkhckayumfahjvqwamjrn9724u6vf6qp2ayld +creation_rules: + - path_regex: secrets.yaml$ + key_groups: + - age: + - *primary diff --git a/14rvk.json b/14rvk.json new file mode 100644 index 0000000..4821bb6 --- /dev/null +++ b/14rvk.json @@ -0,0 +1,4300 @@ +{ + "version": 1, + "system": "x86_64-linux", + "virtualisation": "none", + "uefi": { + "supported": true, + "platform_size": 64 + }, + "hardware": { + "bios": { + "apm_info": { + "supported": false, + "enabled": false, + "version": 0, + "sub_version": 0, + "bios_flags": 0 + }, + "vbe_info": { + "version": 0, + "video_memory": 0 + }, + "pnp": false, + "pnp_id": 0, + "lba_support": false, + "low_memory_size": 0, + "smbios_version": 774 + }, + "bluetooth": [ + { + "index": 42, + "attached_to": 40, + "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": "0033", + "value": 51 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.0", + "sysfs_bus_id": "3-10: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:v8087p0033d0000dcE0dsc01dp01icE0isc01ip01in00" + }, + { + "index": 47, + "attached_to": 40, + "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": "0033", + "value": 51 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.1", + "sysfs_bus_id": "3-10: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:v8087p0033d0000dcE0dsc01dp01icE0isc01ip01in01" + } + ], + "bridge": [ + { + "index": 15, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0001", + "name": "ISA bridge", + "value": 1 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "519d", + "value": 20893 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel ISA bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.0", + "sysfs_bus_id": "0000:00:1f.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d0000519Dsv00001043sd000088CBbc06sc01i00", + "label": "Onboard - Other" + }, + { + "index": 16, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 7 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a72f", + "value": 42799 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:07.2", + "sysfs_bus_id": "0000:00:07.2", + "sysfs_iommu_group_id": 5, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 44, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d0000A72Fsv00001043sd000088CBbc06sc04i00" + }, + { + "index": 21, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 7 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a76e", + "value": 42862 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:07.0", + "sysfs_bus_id": "0000:00:07.0", + "sysfs_iommu_group_id": 4, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 2, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d0000A76Esv00001043sd000088CBbc06sc04i00" + }, + { + "index": 25, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a71b", + "value": 42779 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:00.0", + "sysfs_bus_id": "0000:00:00.0", + "sysfs_iommu_group_id": 1, + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d0000A71Bsv00001043sd000088CBbc06sc00i00", + "label": "Onboard - Other" + }, + { + "index": 27, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "device": { + "hex": "a74d", + "value": 42829 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:06.0", + "sysfs_bus_id": "0000:00:06.0", + "sysfs_iommu_group_id": 3, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 1, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d0000A74Dsv00000000sd00000000bc06sc04i00" + }, + { + "index": 28, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 29 + }, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51b0", + "value": 20912 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1d.0", + "sysfs_bus_id": "0000:00:1d.0", + "sysfs_iommu_group_id": 14, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 86, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d000051B0sv00001043sd000088CBbc06sc04i00" + } + ], + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "GenuineIntel", + "model_name": "Intel(R) Core(TM) 3 100U", + "family": 6, + "model": 186, + "stepping": 3, + "features": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "dts", + "acpi", + "mmx", + "fxsr", + "sse", + "sse2", + "ss", + "ht", + "tm", + "pbe", + "syscall", + "nx", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "art", + "arch_perfmon", + "pebs", + "bts", + "rep_good", + "nopl", + "xtopology", + "nonstop_tsc", + "cpuid", + "aperfmperf", + "tsc_known_freq", + "pni", + "pclmulqdq", + "dtes64", + "monitor", + "ds_cpl", + "vmx", + "est", + "tm2", + "ssse3", + "sdbg", + "fma", + "cx16", + "xtpr", + "pdcm", + "pcid", + "sse4_1", + "sse4_2", + "x2apic", + "movbe", + "popcnt", + "tsc_deadline_timer", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "lahf_lm", + "abm", + "3dnowprefetch", + "cpuid_fault", + "epb", + "ssbd", + "ibrs", + "ibpb", + "stibp", + "ibrs_enhanced", + "tpr_shadow", + "flexpriority", + "ept", + "vpid", + "ept_ad", + "fsgsbase", + "tsc_adjust", + "bmi1", + "avx2", + "smep", + "bmi2", + "erms", + "invpcid", + "rdseed", + "adx", + "smap", + "clflushopt", + "clwb", + "intel_pt", + "sha_ni", + "xsaveopt", + "xsavec", + "xgetbv1", + "xsaves", + "split_lock_detect", + "user_shstk", + "avx_vnni", + "dtherm", + "ida", + "arat", + "pln", + "pts", + "hwp", + "hwp_notify", + "hwp_act_window", + "hwp_epp", + "hwp_pkg_req", + "hfi", + "vnmi", + "umip", + "pku", + "ospke", + "waitpkg", + "gfni", + "vaes", + "vpclmulqdq", + "rdpid", + "movdiri", + "movdir64b", + "fsrm", + "md_clear", + "serialize", + "arch_lbr", + "ibt", + "flush_l1d", + "arch_capabilities" + ], + "bugs": [ + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "swapgs", + "eibrs_pbrsb", + "rfds", + "bhi", + "spectre_v2_user", + "vmscape" + ], + "power_management": [ + "" + ], + "bogo": 4992, + "cache": 10240, + "units": 64, + "page_size": 4096, + "physical_id": 0, + "siblings": 8, + "cores": 6, + "fpu": false, + "fpu_exception": false, + "cpuid_level": 32, + "write_protect": false, + "tlb_size": 32571, + "clflush_size": 64, + "cache_alignment": 64, + "address_sizes": { + "physical": "0x27", + "virtual": "0x30" + } + } + ], + "disk": [ + { + "index": 37, + "attached_to": 20, + "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": "1d79", + "value": 7545 + }, + "sub_vendor": { + "hex": "1d79", + "value": 7545 + }, + "device": { + "hex": "5766", + "name": "TS256GMTE110S", + "value": 22374 + }, + "sub_device": { + "hex": "5766", + "value": 22374 + }, + "serial": "J052860691", + "model": "TS256GMTE110S", + "sysfs_id": "/class/block/nvme0n1", + "sysfs_bus_id": "nvme0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:06.0/0000:01:00.0/nvme/nvme0", + "unix_device_names": [ + "/dev/disk/by-id/nvme-TS256GMTE110S_J052860691", + "/dev/disk/by-id/nvme-TS256GMTE110S_J052860691_1", + "/dev/disk/by-id/nvme-eui.4a303532383630364ce0001839312020", + "/dev/disk/by-path/pci-0000:01:00.0-nvme-1", + "/dev/nvme0n1" + ], + "resources": [ + { + "type": "disk_geo", + "cylinders": 244198, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 500118192, + "value_2": 512 + } + ], + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ] + }, + { + "index": 38, + "attached_to": 31, + "class_list": [ + "disk", + "usb", + "scsi", + "block_device" + ], + "bus_type": { + "hex": "0084", + "name": "SCSI", + "value": 132 + }, + "slot": { + "bus": 2, + "number": 0 + }, + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "vendor": { + "hex": "0951", + "name": "Kingston", + "value": 2385 + }, + "device": { + "hex": "1666", + "name": "DataTraveler 3.0", + "value": 5734 + }, + "revision": { + "hex": "0000", + "name": "PMAP", + "value": 0 + }, + "serial": "CE8879F15749", + "model": "Kingston DataTraveler 3.0", + "sysfs_id": "/class/block/sda", + "sysfs_bus_id": "2:0:0:0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb4/4-3/4-3:1.0/host2/target2:0:0/2:0:0:0", + "unix_device_names": [ + "/dev/disk/by-id/usb-Kingston_DataTraveler_3.0_C87F54C69BB4E89179450B40-0:0", + "/dev/disk/by-path/pci-0000:00:14.0-usb-0:3:1.0-scsi-0:0:0:0", + "/dev/disk/by-path/pci-0000:00:14.0-usbv3-0:3:1.0-scsi-0:0:0:0", + "/dev/sda" + ], + "unix_device_name2": "/dev/sg0", + "resources": [ + { + "type": "disk_geo", + "cylinders": 59136, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 121110528, + "value_2": 512 + } + ], + "driver": "usb-storage", + "driver_module": "usb_storage", + "drivers": [ + "sd", + "usb-storage" + ], + "driver_modules": [ + "sd_mod", + "usb_storage" + ], + "module_alias": "usb:v0951p1666d0110dc00dsc00dp00ic08isc06ip50in00" + } + ], + "graphics_card": [ + { + "index": 30, + "attached_to": 0, + "class_list": [ + "graphics_card", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a7ad", + "value": 42925 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0004", + "value": 4 + }, + "model": "Intel VGA compatible controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.0", + "sysfs_bus_id": "0000:00:02.0", + "sysfs_iommu_group_id": 0, + "resources": [ + { + "type": "io", + "base": 12288, + "range": 64, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "i915", + "driver_module": "i915", + "drivers": [ + "i915" + ], + "driver_modules": [ + "i915" + ], + "module_alias": "pci:v00008086d0000A7ADsv00001043sd000088CBbc03sc00i00", + "label": "Onboard - Video" + } + ], + "hub": [ + { + "index": 40, + "attached_to": 31, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:14.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-0:1.0", + "sysfs_bus_id": "3-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 44, + "attached_to": 31, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:14.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb4/4-0:1.0", + "sysfs_bus_id": "4-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 46, + "attached_to": 14, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:0d.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.0/usb1/1-0:1.0", + "sysfs_bus_id": "1-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 48, + "attached_to": 14, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:0d.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.0/usb2/2-0:1.0", + "sysfs_bus_id": "2-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + } + ], + "keyboard": [ + { + "index": 45, + "attached_to": 40, + "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": "3434", + "name": "Keychron", + "value": 13364 + }, + "device": { + "hex": "0430", + "name": "Keychron C3 Pro", + "value": 1072 + }, + "revision": { + "hex": "0000", + "name": "1.02", + "value": 0 + }, + "model": "Keychron C3 Pro", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.0", + "sysfs_bus_id": "3-9:1.0", + "unix_device_names": [ + "/dev/input/by-id/usb-Keychron_Keychron_C3_Pro-event-kbd", + "/dev/input/by-path/pci-0000:00:14.0-usb-0:9:1.0-event-kbd", + "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:9:1.0-event-kbd", + "/dev/input/event1" + ], + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "keyboard", + "xkb_rules": "xfree86", + "xkb_model": "pc104" + }, + "module_alias": "usb:v3434p0430d0102dc00dsc00dp00ic03isc01ip01in00" + } + ], + "memory": [ + { + "index": 11, + "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": 8053063680 + } + ] + } + ], + "monitor": [ + { + "index": 36, + "attached_to": 30, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "1e6d", + "name": "LG ELECTRONICS", + "value": 7789 + }, + "device": { + "hex": "0001", + "name": "LG TV SSCR2", + "value": 1 + }, + "serial": "16843009", + "model": "LG ELECTRONICS LG TV SSCR2", + "resources": [ + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1152, + "height": 864, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1360, + "height": 768, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 720, + "height": 400, + "vertical_frequency": 70, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "size", + "unit": "mm", + "value_1": 1600, + "value_2": 900 + } + ], + "detail": { + "manufacture_year": 2022, + "manufacture_week": 1, + "vertical_sync": { + "min": 58, + "max": 62 + }, + "horizontal_sync": { + "min": 30, + "max": 83 + }, + "horizontal_sync_timings": { + "disp": 1360, + "sync_start": 1424, + "sync_end": 1536, + "total": 1792 + }, + "vertical_sync_timings": { + "disp": 768, + "sync_start": 771, + "sync_end": 777, + "total": 795 + }, + "clock": 85500, + "width": 1360, + "height": 768, + "width_millimetres": 1600, + "height_millimetres": 900, + "horizontal_flag": 43, + "vertical_flag": 43, + "vendor": "", + "name": "LG TV SSCR2" + }, + "driver_info": { + "type": "display", + "width": 1360, + "height": 768, + "vertical_sync": { + "min": 58, + "max": 62 + }, + "horizontal_sync": { + "min": 30, + "max": 83 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 1360, + "sync_start": 1424, + "sync_end": 1536, + "total": 1792 + }, + "vertical_sync_timings": { + "disp": 768, + "sync_start": 771, + "sync_end": 777, + "total": 795 + }, + "horizontal_flag": 43, + "vertical_flag": 43 + } + } + ], + "mouse": [ + { + "index": 43, + "attached_to": 40, + "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": "3434", + "name": "Keychron", + "value": 13364 + }, + "device": { + "hex": "0430", + "name": "Keychron C3 Pro", + "value": 1072 + }, + "revision": { + "hex": "0000", + "name": "1.02", + "value": 0 + }, + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Keychron C3 Pro", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.2", + "sysfs_bus_id": "3-9: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:v3434p0430d0102dc00dsc00dp00ic03isc00ip00in02" + } + ], + "network_controller": [ + { + "index": 18, + "attached_to": 0, + "class_list": [ + "network_controller", + "pci", + "wlan_card" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "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": "51f1", + "value": 20977 + }, + "sub_device": { + "hex": "0094", + "value": 148 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel WLAN controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.3", + "sysfs_bus_id": "0000:00:14.3", + "sysfs_iommu_group_id": 11, + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 97 + }, + { + "type": "phwaddr", + "address": 50 + }, + { + "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": 3, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "iwlwifi", + "driver_module": "iwlwifi", + "drivers": [ + "iwlwifi" + ], + "driver_modules": [ + "iwlwifi" + ], + "module_alias": "pci:v00008086d000051F1sv00008086sd00000094bc02sc80i00", + "label": "Onboard - Ethernet" + }, + { + "index": 32, + "attached_to": 28, + "class_list": [ + "network_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 86, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0000", + "name": "Ethernet controller", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "125c", + "value": 4700 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0004", + "value": 4 + }, + "model": "Intel Ethernet controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1d.0/0000:56:00.0", + "sysfs_bus_id": "0000:56:00.0", + "sysfs_iommu_group_id": 17, + "unix_device_names": [ + "enp86s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 56 + }, + { + "type": "phwaddr", + "address": 56 + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "igc", + "driver_module": "igc", + "drivers": [ + "igc" + ], + "driver_modules": [ + "igc" + ], + "module_alias": "pci:v00008086d0000125Csv00001043sd000088CBbc02sc00i00" + } + ], + "network_interface": [ + { + "index": 49, + "attached_to": 32, + "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/enp86s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:1d.0/0000:56:00.0", + "unix_device_names": [ + "enp86s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 56 + }, + { + "type": "phwaddr", + "address": 56 + } + ], + "driver": "igc", + "driver_module": "igc", + "drivers": [ + "igc" + ], + "driver_modules": [ + "igc" + ] + }, + { + "index": 50, + "attached_to": 18, + "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/pci0000:00/0000:00:14.3", + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 97 + }, + { + "type": "phwaddr", + "address": 50 + } + ], + "driver": "iwlwifi", + "driver_module": "iwlwifi", + "drivers": [ + "iwlwifi" + ], + "driver_modules": [ + "iwlwifi" + ] + }, + { + "index": 51, + "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": 13, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0008", + "name": "Generic system peripheral", + "value": 8 + }, + "sub_class": { + "hex": "0080", + "name": "System peripheral", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a74f", + "value": 42831 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel System peripheral", + "sysfs_id": "/devices/pci0000:00/0000:00:08.0", + "sysfs_bus_id": "0000:00:08.0", + "sysfs_iommu_group_id": 6, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d0000A74Fsv00001043sd000088CBbc08sc80i00", + "label": "Onboard - Other" + }, + { + "index": 17, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 4 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a71d", + "value": 42781 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:04.0", + "sysfs_bus_id": "0000:00:04.0", + "sysfs_iommu_group_id": 2, + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "proc_thermal_pci", + "driver_module": "processor_thermal_device_pci", + "drivers": [ + "proc_thermal_pci" + ], + "driver_modules": [ + "processor_thermal_device_pci" + ], + "module_alias": "pci:v00008086d0000A71Dsv00001043sd000088CBbc11sc80i00", + "label": "Onboard - Other" + }, + { + "index": 19, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 22 + }, + "base_class": { + "hex": "0007", + "name": "Communication controller", + "value": 7 + }, + "sub_class": { + "hex": "0080", + "name": "Communication controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51e0", + "value": 20960 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Communication controller", + "sysfs_id": "/devices/pci0000:00/0000:00:16.0", + "sysfs_bus_id": "0000:00:16.0", + "sysfs_iommu_group_id": 12, + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "mei_me", + "driver_module": "mei_me", + "drivers": [ + "mei_me" + ], + "driver_modules": [ + "mei_me" + ], + "module_alias": "pci:v00008086d000051E0sv00001043sd000088CBbc07sc80i00", + "label": "Onboard - Other" + }, + { + "index": 22, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0080", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51a4", + "value": 20900 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Serial bus controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.5", + "sysfs_bus_id": "0000:00:1f.5", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 5, + "command": 1026, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "intel-spi", + "driver_module": "spi_intel_pci", + "drivers": [ + "intel-spi" + ], + "driver_modules": [ + "spi_intel_pci" + ], + "module_alias": "pci:v00008086d000051A4sv00001043sd000088CBbc0Csc80i00", + "label": "Onboard - Other" + }, + { + "index": 26, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 18 + }, + "base_class": { + "hex": "0007", + "name": "Communication controller", + "value": 7 + }, + "sub_class": { + "hex": "0000", + "name": "Serial controller", + "value": 0 + }, + "pci_interface": { + "hex": "0000", + "name": "8250", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51fc", + "value": 20988 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Serial controller", + "sysfs_id": "/devices/pci0000:00/0000:00:12.0", + "sysfs_bus_id": "0000:00:12.0", + "sysfs_iommu_group_id": 9, + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "intel_ish_ipc", + "driver_module": "intel_ish_ipc", + "drivers": [ + "intel_ish_ipc" + ], + "driver_modules": [ + "intel_ish_ipc" + ], + "module_alias": "pci:v00008086d000051FCsv00001043sd000088CBbc07sc00i00", + "label": "Onboard - Other" + }, + { + "index": 29, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "base_class": { + "hex": "0005", + "name": "Memory controller", + "value": 5 + }, + "sub_class": { + "hex": "0000", + "name": "RAM memory", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51ef", + "value": 20975 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel RAM memory", + "sysfs_id": "/devices/pci0000:00/0000:00:14.2", + "sysfs_bus_id": "0000:00:14.2", + "sysfs_iommu_group_id": 10, + "detail": { + "function": 2, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d000051EFsv00001043sd000088CBbc05sc00i00", + "label": "Onboard - Other" + }, + { + "index": 33, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0005", + "name": "SMBus", + "value": 5 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51a3", + "value": 20899 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel SMBus", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.4", + "sysfs_bus_id": "0000:00:1f.4", + "sysfs_iommu_group_id": 15, + "resources": [ + { + "type": "io", + "base": 61344, + "range": 32, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 4, + "command": 3, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "i801_smbus", + "driver_module": "i2c_i801", + "drivers": [ + "i801_smbus" + ], + "driver_modules": [ + "i2c_i801" + ], + "module_alias": "pci:v00008086d000051A3sv00001043sd000088CBbc0Csc05i00", + "label": "Onboard - Other" + }, + { + "index": 35, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 10 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a77d", + "value": 42877 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0a.0", + "sysfs_bus_id": "0000:00:0a.0", + "sysfs_iommu_group_id": 7, + "detail": { + "function": 0, + "command": 2, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "intel_vsec", + "driver_module": "intel_vsec", + "drivers": [ + "intel_vsec" + ], + "driver_modules": [ + "intel_vsec" + ], + "module_alias": "pci:v00008086d0000A77Dsv00001043sd000088CBbc11sc80i00", + "label": "Onboard - Other" + } + ], + "sound": [ + { + "index": 24, + "attached_to": 0, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0001", + "name": "Multimedia audio controller", + "value": 1 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51ca", + "value": 20938 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Multimedia audio controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.3", + "sysfs_bus_id": "0000:00:1f.3", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 3, + "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:v00008086d000051CAsv00001043sd000088CBbc04sc01i00", + "label": "Onboard - Sound" + } + ], + "storage_controller": [ + { + "index": 12, + "attached_to": 0, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 23 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0006", + "value": 6 + }, + "pci_interface": { + "hex": "0001", + "value": 1 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51d3", + "value": 20947 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:17.0", + "sysfs_bus_id": "0000:00:17.0", + "sysfs_iommu_group_id": 13, + "resources": [ + { + "type": "io", + "base": 12384, + "range": 32, + "enabled": true, + "access": "read_write" + }, + { + "type": "io", + "base": 12416, + "range": 4, + "enabled": true, + "access": "read_write" + }, + { + "type": "io", + "base": 12432, + "range": 8, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 1 + }, + "driver": "ahci", + "driver_module": "ahci", + "drivers": [ + "ahci" + ], + "driver_modules": [ + "ahci" + ], + "module_alias": "pci:v00008086d000051D3sv00001043sd000088CBbc01sc06i01", + "label": "Onboard - SATA" + }, + { + "index": 20, + "attached_to": 27, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 1, + "number": 0 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0008", + "value": 8 + }, + "pci_interface": { + "hex": "0002", + "value": 2 + }, + "vendor": { + "hex": "1d79", + "value": 7545 + }, + "sub_vendor": { + "hex": "1d79", + "value": 7545 + }, + "device": { + "hex": "5766", + "value": 22374 + }, + "sub_device": { + "hex": "5766", + "value": 22374 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:06.0/0000:01:00.0", + "sysfs_bus_id": "0000:01:00.0", + "sysfs_iommu_group_id": 16, + "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:v00001D79d00005766sv00001D79sd00005766bc01sc08i02" + } + ], + "system": { + "form_factor": "laptop" + }, + "usb": [ + { + "index": 39, + "attached_to": 40, + "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": "3434", + "name": "Keychron", + "value": 13364 + }, + "device": { + "hex": "0430", + "name": "Keychron C3 Pro", + "value": 1072 + }, + "revision": { + "hex": "0000", + "name": "1.02", + "value": 0 + }, + "model": "Keychron C3 Pro", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.1", + "sysfs_bus_id": "3-9: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:v3434p0430d0102dc00dsc00dp00ic03isc00ip00in01" + } + ], + "usb_controller": [ + { + "index": 14, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 13 + }, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a71e", + "value": 42782 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.0", + "sysfs_bus_id": "0000:00:0d.0", + "sysfs_iommu_group_id": 8, + "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:v00008086d0000A71Esv00001043sd000088CBbc0Csc03i30", + "label": "Onboard - Other" + }, + { + "index": 23, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 13 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0040", + "value": 64 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "a76d", + "value": 42861 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.3", + "sysfs_bus_id": "0000:00:0d.3", + "sysfs_iommu_group_id": 8, + "detail": { + "function": 3, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 64 + }, + "driver": "thunderbolt", + "driver_module": "thunderbolt", + "drivers": [ + "thunderbolt" + ], + "driver_modules": [ + "thunderbolt" + ], + "module_alias": "pci:v00008086d0000A76Dsv00002222sd00001111bc0Csc03i40", + "label": "Onboard - Other" + }, + { + "index": 31, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "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": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51ed", + "value": 20973 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0", + "sysfs_bus_id": "0000:00:14.0", + "sysfs_iommu_group_id": 10, + "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:v00008086d000051EDsv00001043sd000088CBbc0Csc03i30", + "label": "Onboard - Other" + }, + { + "index": 34, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 13 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0040", + "value": 64 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "a73e", + "value": 42814 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.2", + "sysfs_bus_id": "0000:00:0d.2", + "sysfs_iommu_group_id": 8, + "detail": { + "function": 2, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 64 + }, + "driver": "thunderbolt", + "driver_module": "thunderbolt", + "drivers": [ + "thunderbolt" + ], + "driver_modules": [ + "thunderbolt" + ], + "module_alias": "pci:v00008086d0000A73Esv00002222sd00001111bc0Csc03i40", + "label": "Onboard - Other" + } + ] + }, + "smbios": { + "bios": { + "handle": 0, + "vendor": "ASUSTeK COMPUTER INC.", + "version": "RVRPLR30.0037.2024.1209.2113", + "date": "12/09/2024", + "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", + "ACPI supported", + "USB Legacy supported", + "BIOS Boot Spec supported" + ], + "start_address": "0xf0000", + "rom_size": 16777216 + }, + "board": { + "handle": 2, + "manufacturer": "ASUSTeK COMPUTER INC.", + "product": "NUC14RVB", + "version": "60AS0080-MBDA02", + "board_type": { + "hex": "000a", + "name": "Motherboard", + "value": 10 + }, + "features": [ + "Hosting Board", + "Replaceable" + ], + "location": "", + "chassis": 3 + }, + "cache": [ + { + "handle": 55, + "socket": "L1 Cache", + "size_max": 96, + "size_current": 96, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0004", + "name": "Data", + "value": 4 + }, + "associativity": { + "hex": "0009", + "name": "Other", + "value": 9 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 56, + "socket": "L1 Cache", + "size_max": 64, + "size_current": 64, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0003", + "name": "Instruction", + "value": 3 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 57, + "socket": "L2 Cache", + "size_max": 2560, + "size_current": 2560, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 1, + "ecc": { + "hex": "0005", + "name": "Single-bit", + "value": 5 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 58, + "socket": "L3 Cache", + "size_max": 10240, + "size_current": 10240, + "speed": 0, + "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": "0001", + "name": "Other", + "value": 1 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 59, + "socket": "L1 Cache", + "size_max": 128, + "size_current": 128, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0004", + "name": "Data", + "value": 4 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 60, + "socket": "L1 Cache", + "size_max": 256, + "size_current": 256, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0003", + "name": "Instruction", + "value": 3 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 61, + "socket": "L2 Cache", + "size_max": 2048, + "size_current": 2048, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 1, + "ecc": { + "hex": "0005", + "name": "Single-bit", + "value": 5 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0008", + "name": "16-way Set-Associative", + "value": 8 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 62, + "socket": "L3 Cache", + "size_max": 10240, + "size_current": 10240, + "speed": 0, + "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": "0001", + "name": "Other", + "value": 1 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + } + ], + "chassis": [ + { + "handle": 3, + "manufacturer": "ASUSTeK COMPUTER INC.", + "version": "2.0", + "chassis_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "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" + } + ], + "group_associations": [ + { + "handle": 87, + "name": "$MEI", + "handles": [ + 0 + ] + }, + { + "handle": 90, + "name": "Firmware Version Info", + "handles": [ + 214748364849, + 219043332146, + 223338299443, + 227633266740, + 231928234037, + 360777252918, + 84 + ] + } + ], + "language": [ + { + "handle": 30, + "languages": [ + "en|US|iso8859-1" + ] + } + ], + "memory_array": [ + { + "handle": 41, + "location": { + "hex": "0003", + "name": "Motherboard", + "value": 3 + }, + "usage": { + "hex": "0003", + "name": "System memory", + "value": 3 + }, + "ecc": { + "hex": "0003", + "name": "None", + "value": 3 + }, + "max_size": "0x4000000", + "error_handle": 65534, + "slots": 2 + } + ], + "memory_array_mapped_address": [ + { + "handle": 44, + "array_handle": 41, + "start_address": "0x0", + "end_address": "0x200000000", + "part_width": 1 + } + ], + "memory_device": [ + { + "handle": 42, + "location": "Controller0-ChannelA-DIMM0", + "bank_location": "BANK 0", + "manufacturer": "Team Group Inc", + "part_number": "SD5-5600", + "array_handle": 41, + "error_handle": 65534, + "width": 64, + "ecc_bits": 0, + "size": 8388608, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 5600 + }, + { + "handle": 43, + "location": "Controller1-ChannelA-DIMM0", + "bank_location": "BANK 0", + "manufacturer": "", + "part_number": "", + "array_handle": 41, + "error_handle": 65534, + "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": null, + "speed": 0 + } + ], + "memory_device_mapped_address": [ + { + "handle": 48, + "memory_device_handle": 42, + "array_map_handle": 44, + "start_address": "0x0", + "end_address": "0x200000000", + "row_position": 255, + "interleave_position": 0, + "interleave_depth": 0 + } + ], + "port_connector": [ + { + "handle": 4, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J98", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB1" + }, + { + "handle": 5, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J80", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB2" + }, + { + "handle": 6, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J80", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB3" + }, + { + "handle": 7, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J44", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB4" + }, + { + "handle": 8, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J91", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "USB5" + }, + { + "handle": 9, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J90", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "USB6" + }, + { + "handle": 10, + "port_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "internal_reference_designator": "J90", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "Thunderbolt" + }, + { + "handle": 11, + "port_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "internal_reference_designator": "J91", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "Thunderbolt" + }, + { + "handle": 12, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J92", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB7" + }, + { + "handle": 13, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J96", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB8" + }, + { + "handle": 14, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J97", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB9" + }, + { + "handle": 15, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "CON1", + "external_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "external_reference_designator": "Power" + }, + { + "handle": 16, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J206", + "external_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "external_reference_designator": "HDMI1" + }, + { + "handle": 17, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J51", + "external_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "external_reference_designator": "HDMI2" + }, + { + "handle": 18, + "port_type": { + "hex": "001f", + "name": "Network Port", + "value": 31 + }, + "internal_reference_designator": "J8", + "external_connector_type": { + "hex": "000b", + "name": "RJ-45", + "value": 11 + }, + "external_reference_designator": "LAN" + }, + { + "handle": 19, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "J43 - M.2 SSD" + }, + { + "handle": 20, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "J36 - M.2 WIFI" + }, + { + "handle": 21, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "J44 - M.2 2242" + }, + { + "handle": 22, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "P8 - FAN" + }, + { + "handle": 23, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "SODIMM0" + }, + { + "handle": 24, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "SODIMM1" + }, + { + "handle": 25, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "P56 - SATA" + } + ], + "processor": [ + { + "handle": 63, + "socket": "U3E1", + "socket_type": { + "hex": "0041", + "name": "Other", + "value": 65 + }, + "socket_populated": true, + "manufacturer": "Intel(R) Corporation", + "version": "Intel(R) Core(TM) 3 100U", + "part": "To Be Filled By O.E.M.", + "processor_type": { + "hex": "0003", + "name": "CPU", + "value": 3 + }, + "processor_family": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "processor_status": { + "hex": "0001", + "name": "Enabled", + "value": 1 + }, + "clock_ext": 100, + "clock_max": 4700, + "cache_handle_l1": 60, + "cache_handle_l2": 61, + "cache_handle_l3": 62 + } + ], + "slot": [ + { + "handle": 26, + "designation": "M2_A", + "slot_type": { + "hex": "0015", + "name": "Other", + "value": 21 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 0, + "features": [ + "3.3 V", + "Shared", + "PME#" + ] + }, + { + "handle": 27, + "designation": "M2_B", + "slot_type": { + "hex": "0017", + "name": "Other", + "value": 23 + }, + "bus_width": { + "hex": "000a", + "name": "Other", + "value": 10 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0004", + "name": "Long", + "value": 4 + }, + "id": 1, + "features": [ + "3.3 V", + "PME#" + ] + }, + { + "handle": 28, + "designation": "M2_C", + "slot_type": { + "hex": "0016", + "name": "Other", + "value": 22 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 2, + "features": [ + "3.3 V", + "Shared", + "PME#" + ] + } + ], + "system": { + "handle": 1, + "manufacturer": "ASUSTeK COMPUTER INC.", + "product": "NUC14RVK-B", + "version": "90AR0062-M00020", + "wake_up": { + "hex": "0006", + "name": "Power Switch", + "value": 6 + } + } + } +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..ca64f69 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,73 @@ +# AGENTS.md + +## What this repo is + +NixOS flake that defines kiosk systems running the RadiantWave app. Not application code — this is the OS image and deployment configuration. The actual app lives in the `rhemawave` flake input (from Codeberg). + +Hosted on Codeberg: `https://codeberg.org/RhemaWave-Technologies/KioskConfig` + +## Key commands + +```bash +# Build a system closure (any config name from flake.nix) +nix build .#nixosConfigurations..config.system.build.toplevel + +# Build a bootable ISO +nix build .#nixosConfigurations..config.system.build.isoImage + +# Deploy to a remote kiosk over SSH +nixos-rebuild switch --flake .# --target-host root@ + +# Push build result to Attic cache +attic push kiosk ./result + +# Evaluate available config names +nix eval .#nixosConfigurations --apply builtins.attrNames +``` + +## Config variants + +| Name | Target hardware | Disk device | Notes | +|---|---|---|---| +| `rhemawavekiosk` | Intel NUC 14 (NVMe) | `/dev/nvme0n1` | Production, uses `rhemawave` main | +| `rhemawavekiosk-dev` | Intel NUC 14 (NVMe) | `/dev/nvme0n1` | Dev, uses `rhemawave-dev` ref | +| `rhemawavekiosk-commercial` | Commercial HW (SATA) | `/dev/sda` | Production | +| `rhemawavekiosk-commercial-dev` | Commercial HW (SATA) | `/dev/sda` | Dev | +| `rhemawavekiosk-android` | Intel NUC 14 | `/dev/nvme0n1` | + rotated display (portrait) | +| `rhemawavekiosk-rpi` | Raspberry Pi 5 | — | Uses `nixos-raspberrypi` | +| `rhemawavekiosk-rpi-dev` | Raspberry Pi 5 | — | Dev, uses `rhemawave-dev` | + +ISOs: `usb-iso`, `commercial-usb-iso`, `android-iso`, `dev-iso` — each bakes in the corresponding system closure for zero-touch install. + +## Branching model + +Single branch (`main`). Production vs. dev split is at the **flake input** level (`rhemawave` vs `rhemawave-dev`), not at the branch level. + +## CI (Forgejo) + +`.forgejo/workflows/build-dev.yml` — triggered by `repository_dispatch` (`radiantwave-dev-built`) from the RadiantWave repo. Updates `rhemawave-dev` input, builds dev closure + ISO, commits updated `flake.lock`. Runs on `neils-server-runner`. + +## Important gotchas + +- **Disk device differs by variant**: `disk-config.nix` uses `/dev/nvme0n1`, `commercial-disk-config.nix` uses `/dev/sda`. Don't mix them up. +- **ISO configs reference specific system closures**: `iso-config.nix` hardcodes `rhemawavekiosk`, `dev-iso.nix` hardcodes `rhemawavekiosk-dev`, `commercial-iso-config.nix` hardcodes `rhemawavekiosk-commercial`. Changing a config name in `flake.nix` requires updating the corresponding ISO config. +- **Attic cache token**: ISO configs embed a JWT token for Attic in `/etc/nix/netrc`. If builds fail with auth errors, the token may have expired (expiry in the JWT payload). +- **`rotated_display.nix` uses `mkForce`** on `loginShellInit` — it replaces the entire kiosk startup script from `configuration.nix`, don't edit both. +- **SOPS**: `.sops.yaml` configures age-based encryption for `secrets.yaml`. You'll need the private key matching `age1t2wpzv...` to decrypt. +- **Flake inputs**: `rhemawave` tracks main, `rhemawave-dev` tracks `?ref=dev`. Updating them independently is intentional. + +## File map + +- `flake.nix` — all system definitions, entry point +- `configuration.nix` — shared NixOS config (packages, services, kiosk user, auto-upgrade, health check, VM variant) +- `disk-config.nix` — NVMe disk layout (NUC) +- `commercial-disk-config.nix` — SATA disk layout (commercial HW) +- `iso-config.nix` — production ISO + zero-touch installer +- `dev-iso.nix` — dev ISO + zero-touch installer +- `commercial-iso-config.nix` — commercial ISO + zero-touch installer +- `rotated_display.nix` — portrait display override for Android variant +- `facter.json` — hardware facter report (NUC 14) +- `14rvk.json`, `pn54.json` — additional hardware facter reports +- `assets/` — logo and splash image +- `plymouth-theme/` — boot splash theme +- `commands.md` — quick-reference for build/deploy commands diff --git a/assets/RWT_Logo-Dark.svg b/assets/RWT_Logo-Dark.svg new file mode 100644 index 0000000..0127ed4 --- /dev/null +++ b/assets/RWT_Logo-Dark.svg @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/splash.png b/assets/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..a042520f2a717c400761c415931575fb207a9e2a GIT binary patch literal 53030 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
  • 6qw2yclI+4&b>M{rjU~VYe-XGvBphoz1ON|@&amoxq>+3 z#$Ga43CLU(*64Y5Iln>Cef+({4t1;GEkrD@-wplmrma`c>U|O`@8ZwgXh*P`s9g!T zksJ2z?v|3dR7!f%vL^>Iw%P&HbX#Jkq-nTR6%?E%>1;XJZ&E)oJ5XC|FmaQY=tLB< zFUKmI`VoM|dE3oq{_+83m$1?cnSA6aPep)qYzkA6y}ZI{hp~p$mC5H9_-S$p8E5f6 zJ!8}HzRmaGk2DakF(>_lzRUh<$W;y*vyaXi^(h<=s8;MLv9`c z9(Jy@Td&t*b9(!m4kRFSZn*$;qZ#9rH#pG?{M9IA4|pCs{fCR*d}YsPn>s6|0@){c zh;4+jznS6mhI`59INW*GpcVr-(Ol1G-LO|aY%s5>Tv^Zm0N#}a&^l}xC8v8E;YX?~ z^-VgJbJ}O7WB=;bBrD_M&phxK5ohM1$><&f=)yYiROUYQcqOG9Q22C>OyMpjZYec6 zbqx(zYUwzbn!LyGbNE1Jlg7d=XxD^bbphjL?4!_kTXJ^gW-wp4qVK1DIN@p29#miW zOTE5Gs;S|84%D+e zy}K|?Jp)@`5czPjZ|DgU8K{52$EiOXdg~Uc@fD^87pX8bBd}vbhA^bMB3O>d|7#Uv zbRjcr2xD5t{KWC_N2@{5;gLP3_He8ChF%2^{EQFpdF;@Mh%~YcU3Fde(pewB_+GMs zcfV2K=BBquws#c{Jv|JSioG~-GyL0olRAH$@BLH^uiaFvRPR5O{A)u4XHr_cHk>AH ztYs=*C6(hYZ))^i=uaMmb~{5dU<6+p+03@LoOL`@up?oIu2q6~yV>53F__4`%3`d6 z7>|21zO)1l7_ZZIwz097D{kkE4t>~Y7C13XL;FmxKUJ)6_sEob?siq`yJzBI)eEhx z4|Hh=@s6ou&S!PS_!jPTW>)p5 z&V%Z24$>-X-?aeERW52h#y=$zS85BBH1%A?UwyI;5i1vFxS_zv54D-^QMjlvH+=YN zZ=Nd=x=i1r$#)+9Q|~njK4k~>1uF(FqpKtRXIVI~_v+tyQmxF&IuJQX2cp5V`ZYsz1o9n*BpWVB#QqOF_LHx0u9s!Ko=l#$nluCuM z2KaoDw>HOq*JS7)&;g-t3R;QN%pMX)L_(q3he!SrC2ZA^MR$GF1X|ar25kX#)TXu*ux( zCx8YIN$Ywr^gw>xt`D5MRxdu-p90nB9=4P^si#EmTtN=R7RWo1<{3Vx8^-$CaPPDQ zWjV911C5DEu@?##-ed}0dj(#4uztCN7qVAy>q8?msTF-$nRlKZ57GTNkCtm?CoofgxC5cOh*vv+1EtjT2evbN2|tOhA^w#C(C9bMWZW zM^M&!SVz&FLQfA!nz*oBO8pvpm&GD<%`{qrDd1`ds>4-p{gcZ#(Zi<%2^mxG==1l# z6iTb9+6@RDK-7tu{)4&)zX7{oaA(?FuG&ixav-MBhNgPI8&E_6&8!lKp{+K%W2JWk z&aZQpTPo}?r)hQ#R)a0)s{Ki0jP(*+SW=(W?|Vi+*mRvp%XJMHrWu)L8SWQU%$_YJhg;817bswa6{F9JdwY?m}v4V54`zE8<`9OjjPoFcVOW~A5o;YMSN+G$QeW81zV-N4iY*%HT3ygElQ(j( zF4CM{aE0ttL9lXLnVx`?*8rI`IoG%FyTG)ksd1TluBdQ}u_^XcV8r}6o7t#PEg5zS zpl|{?rSHSAs}?zB>}F7-WK8uAO>z)gbkVU$zh10ilp2cIXtbBxn)j*A z5R2}-qLamkQf+OkLJPktYeVtV2<0%bl^}H7K>N(?eOW^eQ3kit-+rCZmPG&!Cy}Qj z<$rsBvnf2%hDDiClDS3Q_>L0Q3Vva-Ps`$?j7kDp%SOAt>`}1sBZPw&+thbeW$xa> zw}2e*r6eOTuOdQPiM84saotPZ0ZaK-^>Aq?xmqFcJ5Ed5bTJ$8)OgGYzEIzNVq$P& zu#9P4Bq{^YS?-ghtV7mWDGKM3l#Q5u=X-&)5!?0#HBG)}f8+cgZXOWIrlNf2|B0k; z70eO~Y2%89X*0!!%)X0R0RrgW2T~QDO42deJ>J?%087)a|9itJo1WgD>}NkoIJ7qTBuy618X}``pf>Uz6@1x|a37EJl5JW8XM2=4 z;_v|AXkTP6YGfE;X{=>XGFl1(Eo<2{q4x+(@&HHK+|xE`v;F#^P1ZMz)%v))YoNa9 z+C3MEaoEF5_e_N~e_jV~0A6%>gum(z$S}kO{~e0K=K(I8!K`4eytem{5W|Tcfs$d! zVvBf=1G@twY>Vp#`4kzfX6A-HvVtbH_RyXt&&FFYdE@5@uiqSaElcynZsj1K`4=R& zs3b>P=odAIa|HdCB@2TMrJk!elnvIDU}U1Fn|IHi>b)X%bJ@o?9P>bwK#fw3t0}dl zD!=uKJZ6*@e2o{wKAkpTj;Q9WwxlUri*oPVqD-(aPHph4+=omYXY%ad-TST&`rQy@ zJv}pqFs+y~IF}HcWE1_(lJFWqIcI3#ITnJa4TRnS9&+m%!`I%EsGfrn^99e*T2)O! zeTuo!M-D{Ngsl-Wz_mUS8qXUW8sV9W(7K1a>nd$xA({r296iNY%t&(gMRW`y z7oXHWuQNzBh&WcuNN6F%Cw>!`f685YgoG}uCPjJA7`f9tuu7X6@fT z4ZXh_gC0LCYDJ?W7h{M_p%B+^;wiO}ZC&=M)C(QzE0kl_2l6~nI9@eD);uT9Y8G%% z(s>XaPRKzifEKB6WB0!Iie2;w^P48c(WI%$McXmGy!CHG1gL`nKvvUL zJWx`AP8ft6-=EBkS2mfSB)iVTZZXP{(ZLN}w+kC|&Sukja4z)_g9i+HA)^sr7PluB$}fys|o)tPoD zgx;}gPPC!@X1380m2=+bY{W{gwb$@AnM}W>^7RIOI#rKWzsh%0idrog(g=sHJlQ5A ziwqrQL|`@N`pX8aJfdyvv-0Ib_<3HDV6&T`OXSO|U=;r=)qXrh3miH9_&MqZWpX2T z-W3ZMkG{#aAOU`;7ilO;W|Td^LbqAHJL5vZR(P$R2|bg>w^8VpMfXtwg@w9*@+3Y{cxLZFJ5e{1z8HIz9$|Kw}jf&8&8=xp!H`?egNk zZZ^7>RFQX?BwupcWHGA&`;~FcjW~~bSyLyhpO-2e=SQZEWYSV!h=GHtAied-*2Rok z<_mtv<+YBu>4WVvnn~JGnz4Q+rKHb5cm%JsFG*i(Jv{-R*=#5echhTFnUT@Nt$$|% z(uEAQ5fMknKIo2X%{$)LU!@eHI0;ziQC~sv^Zk^*W;gdMw^ekO#)eV+X5mx#cpthM z?uNC6Rx*UuKqS9IP8Gl=qU9Q(M6W(PS`fKrT^6sqiG1n547tu;kCd>?Wv48I#n0-7 zA*P~9oC@7jw)mvJ8nWMA|ESGb!xILM8HcVmXxT^@>i8Mn>v++n1`Ap~uBT+cDjAWH z)o`vlLaMrh+fWgy809-FSWPgpiu%gZq6(mfK|c*5<^D>DV+^ra<_KFxT|qGORbg28 zT*7pGVcO834(`byF50h)o`csJ_|VmmJGP%_|oPjySLsAAM$01 zW8(yKHOw>kveF#x&Q#lRS(*o{o)a4wh`&G?hyIAWq|$SRZTH$zu`YG0k^vKNVsTLu z#}T5kb$OF(`-cuQ3~Np2R9KE5leCd3jsr&=YH!g$&BLtsC=bna+9=g|^c!hfJ8MIx z%RdhMq{5e){v_mO!_!r)|8HW-xUcZT;?iEa5t2@D(# z(zStaP|ih?*JlQ9n9gJ@0RO<>U2Y!HvKRe!KbLG+rFI6$U3Rh89CwdwePf>^eAjbQt7JxG|@ zk%!ktDqkflLed7RPHK*w4xrYr#|x$dQt)034Fj2AQw?anH}IY|vQU9W#*PBXy@Vbb6va z0Ht-mRV@|Kd8g(<#B{cS%$oytFzkoOmc~@y8Ya_xNQ$miNjw!xkL(5Fea?g{qQl)Y z3v3|ru@`LHeHfoIK`RklOvA(Gj&t#&B6 zoWk*MYg=wiGlq7+T#^olwJOC{QjQBR=qp6(M_BnhsXS-73Ih(GGT`)RGT;tr0+kei9FKdHfAKyx(}&$=nUsXm`)10)WIFIQ{Z4PD~FLdoykwa|do z0V5Pd)T#+^<9+$&#|&QOb7o%-;igUUludZO8Rft3uJ#QAM_I5;zQSC{ZnwUTv2YWh zNoq18hj{t9#Ugj0vYJ@4-k-$IaxAMXFszF*$1H3GOX2IE10vs!NB@`@9WWP#Q_!Qp zesCb6v*h7`2JB<)zSjP450^Xo|MHoak#%u3_{3pT-Nfxcw*h!X;Md2~h2<`B16Z`M zu`sN`kNaFbGK^nRyU{#Lw1~YB0M+3n+)>VgthlI*r)SXDi}51X(oPktLuG_F>nBza zFCEu%BaQQtKEPA~3tIlwt$JCu{BBn;F+QmTf4_%@)s!FP_GZ`_9bljiL#;vrfv%FX zQ@E!WEX_YzxB(z-%?V=BoKcFh@j5AeTE;Ufm40p06G{MV4Sv4ID4jTostz$H>ky^j z@SesN_E(K8M{E>Q;t zd#z!#&^<4qJrZ_yc_C@0zYFDdtE$|XgmuRMK3wk$8xm5oaAHrvo*j?Fo%IepzkKoi zr5GEcyH~!w`J z8s;AA+-J;Gp6BaKWPw{$sq5aLk?=H2gs3a)6K_G>lqk<`rsl=G; z_HXPvh+)S!QF?^J1pcHe_<3(-g-VcxVojR8a1t*E{)0VW5kWQ5fS%Z~|6F@`>3N%X z1}8R>UE{Ekexx1q4HAK0`Qomrrl?=!g-V3R8+u^(Tc)!H9^YwC11xpR7vqgg4VsZV zk~Z3XDm|?|y}W^yA zFfBKVL?6v(FG`HWs8lAN&y#~2O>`DWHn?E?Y*()ZMQz^y-93FjQCYZe@?JTdlWOlt zl-Hffh@m=my4eNYC(m9&QNx>S%h*S}{jC1HkZC;5{*>tSx-#;6{&n4vnfl3BkH?UW zenUqpQV(u0&IibW-?b1g=r5I^z+qdxTKS+z@_v)J=$-E&jd_`6bWxKer;Q^Tl*_9o zEz}*Algzm|6pKz8IK4kkG5SbtQ&1#|+I;2Mt55J_`#0!*0AeKjU7FjSTNMT6kr5bf z+8r|>@FYO|R5DS4zd*wtr~;BjW1DwH*FNxEk-8d(B7BwMo=8elE?-`Gu1Z95rUdYU z$d#{}Z|aTD?T@>>Nh#Spxy1068i ztusTrf|vS-yBD10vw7A<5{#}DE2MUi^q9RHO<;C!^l~~l!(d0&vnj&qHwp-;$1L`Y zsY&h1hl1EJQBxk3)|oG`A_Q%o?{0DX&-XWvP&v~FZEaVRX<35r8~<=?b*!42rYj2HHm zAJeEJ2yKZd^_~~_fA!bZdsT}DMQ(8QW__ZLodfLPh`8^(B9+T-5fWoOOe%2r&|=6# z(zri_$r|)j^@rI7f7aW-^YP7-`yUSP-Y{PiSp|gn);QQkRZ0QC6d3do9zfvf^uQZT z4W~s&V|%oo$z5~5&g3h9mMa)pE2MDcDWO6iKiIqrD_NBW{iB|P1-P-70ZdUPro`0I zDUA-@8aM(pf3%4IdSm`)&lT-uf}3d|tC}npb-070?3Fi2&8@8IT$Qf4cRs?B{)TU5 z>~8;w=g0`XBolDEf5}{TacJJ-RqgUMA}$Ny*|CuPOOH*oB;vVQ9@B(8``g)H^u?MWOzP$0$3RAO35ndEK9%3uDNvJn8-$`Mn2)?)S-fE0XzDczZP z*}Y;b3mMe;(F43|5={K4nTX^J?%|rU=0E6dyjT$?C~weGvIrZ52SY;Q+|lphAGE@% zI%ywCvJG$>F{my8Y;L8ms^G|kT{gVe_~MUvS*Si-s0uQKX z;y2rBBVuab`!NGtPJZiD>rfkmbN$1}o<2Up>auH|rb#C1y32FZHo4Z3cNYa(4HO)KQp{%eI2z0kFZYWK8DyY$qD0koWAy>V?cJ>Kl)Gq&e*Q;VF|bF z+WIKdp*-BSlGFYTsR5=<3>>wm+HCd&>5VblE_LaPLVA)oi>9J zn$~}>_?V*#HT4~7+<2Z`9YzN+-eqp5YgbaM^J25y2d?z1nl3Nx zQC5#+h$K<#OELSHo)Glr870i#{kruEx^%pbB_vo2Fik1wdMI&Y;&C`3_cDt5rL#F) zJHvRK7a@His{AU?^W3cE!dcG0-kJRw1xp?tFVZd$J_``9rJI$0jb$X%UA5?nr9KwRuV&m+AMCho~inJY(eTt8hz=U_UmWsH4;@+9&C4+c<9Y6>k$ zHxc{Fx-G6_;ncog8_ZtL1G*B7R0nOqedt!~abnufwW@A98y3A@+>ny%vtDL`u`opIK~e(2!4>)hQY(z1Jt` zoCCum*+J!V21c_;!?KQ9P^8LoCZS;?a0cvxl>5a|hS{bDOW%|moXg=o=EuGABr{}K z(@}f6W2{uL%KX)wSlEq=%ugW(V&PGyE65WKeJIji}(=q!NWp zz^rr4YHc@vLXuuN{Vo5VH7C?ys)#-c9MU!ELUHMYI)X=(m$y*<*Y#0RQ6n(T% z$K4yVu%RG?mxoh4jAqBw)xeZ{!>Z87N71UeS9JCAJUjd!Sy569|LHf_Aj^O2?=`1; zX|9p2l}l=YOouZ{){9%6We3#H;)n9TD%;RdOG~fuz*Rf<0Ottte61zTL-H}GsUaqt zxW*6(=W<91k-5IiM5trcF38~POOl**MYr0p$&}iJt`W7l%!c%ROAcprn64_-jy0{9 zKein2nOrWV2~MXTkV}(IV}v!$w%uBnF{3@0H8?1?yo_S&DSK^yrjmSRsz>fCgY)$l zR`?{u!7XHN=zV$l>M8NK``240y|io0GOMn)ir}urI;*EyDX3B(YMrRc%NfI6w|9X; zp*A-4?~g9t*}9MApX|B@9Zz_TH_WorpxPC(I^2|@8CMm5fF^CCiq8KYFfj|73@r?r zCcGA{u3)7UYvvY9^Ex=gE&(qxg+BBXt44aL8qP~FP&#C$YW0zw#cO&sefAz?B|x6@ z!0lr(cqAO1z&$N?T2q>K`bdC-qPx=3S}N4mz(6v`@?wT7WI2m#*RYB%Rc#MjW`fbi z^XO@As+&s#9M}i);XIn(|iFWi<1V>7-4JkAkE&A1PZ)$|Al)MPa?_H$luTBL;f zzDHZP)Zj6WG=)uMo9n@utlfDxZb*x^n}rSQ)xMGswj^8Pm6o}g8i$3r1Po)KD*O7d zO>R*^v3~&?#(!64VGY%w)Q@y_o9&Hz@brE3k^Qa4DDrmy2Ey0mQdPle`f~g&$cq=p zPpJ1l&m7sAiB+uh&hxZcP2~SP73aihfKeJ29H8D>VZDYC?(xwg?cZj$cc1FKK z&S2m2jbe)&R=9B%DN!NevPPmtVwjO2HwQH;d|pax4-?m?%_NEa8@LOX{#)4icR~PnS$rWtv0_%-_xCZ<=FZ4e_E(s0T4pErkLN5e~-8| zw=6CB`PwDm<5Qgk%d(kx<@$}u{iu$WFYI`OZ`c8ScIcTmN{_n8=`Su>!#|NrCH^{(sEbyZY~w}h@vig1;X!?w$%vrMJPxe{`wVQglVP7*31hf#^; zIOkz(l_aOlA!cSdsS5!Lkd*_va*~rrHfB6}JJC_YN`-{apT6 zvx^pO>hs+0fdN^z3&s7k8&(0kD*i3YKHCEMzB992*H(ju{3kr6-QdB-Mfuy)i<%_@ zpku~(U)C$*xSpq{M(s0={D=x89f*}cC(Fdd#O#R4z196_SY_gfE&IB%7onFpb~;wW zqkTHQwP1F#Lao7v|M-MGdj9(wQ;v*i{wgmaqV z6K%t)=)A7oc?HC#uQH8}=A4y&qOXFV7@rR&&h@a+TQD-haWh=b69zY%F3x7EVCetF zxM`U9e%1!11vf07m?qS2L=vB?7qym3cvUfnSTVD#7zb=-`R=D$Njqw&pR&}|)wdld zrK0r>4Gr}S^ccb1&CMq^bOaqU{Ia~NN$ZrX_smUg)KTzdmdoh=I4R$4rrkK(gF5HgAw1&)*bfh;yj(~yd1h|%+ox!n|Ly~!D&#C-|0~o%6!zHo0x4J%BeE= zjj&$)k1l2Jx?N9eQ7*|hOk&1fTE|HOwE!RUv79I~i=7kH?VSGx@!BpZFHS4Ri3qzu!tAIy-WB++;cV@AtQ@PWAC>|x1hv-Nwb7nVUO!@Lc6LWRulH&~o)VeI zAOz4w)6F?XRP8 z5C0$KJ3CMD??QRe-t6QVgyMC%?->rQ&>?-Mw3c`^6g+j|4BT^(~{-R-nO`OVjFb&@3~pB4s4`H@cE_QHObi-Dj#e zyGc9#7<#MwCdSl@0C7Y3*soXZ)8NDUx)`+1NgYZ(V~*%bbHh+gr8$2ElF$0g%O^lz~goz z$8VWMW*-*5nw#tG9T_QSufMbNh4Iz%(~qVyNS;Sy7wgh8bJhbSkS6ZIjPciQCN4ca zJuR(T8Ce-|$>XBS1((V&b}Uxq=%Fg9`L=aXBH0Xicz^cf@f;+*w>ixU#2vk7%eDss z8z6La)M|g!?m7)dCuBu}4=!f65!n}U(TM+A5H?yIa*{{_e9vAM3}o~{T+72hwXXWR z@7}9ETk~aBa`afbPUOQNZH32}=e;{*gVvXQyQ@l*^jHJ%X!ClbG zK%93@tCGCIU+i*@3NYU5nIJ`qy1JX|{#`rPF8p?rhU@47L7eUHn`bQ5!B zr)G?mtmPA<{|0r(bKjQPh%~udfKb5NF9Imqkj#G`_pqPJxj~><73H4M=5(~vp z;vrtfg-8p3VTEO2#$t6Lkv)cpkMyQ%N#Kx?Mg_S{Kaajj z*}B%cyQ0J$|HyQAtycKh!;}kJ6yT8i=+@?Z!JV1`PhmfKd_5~!@nLo;uMLUuPB4@Y&?8 zB4)Ehe!y~VHrTzg$isJ5O-LqcFp-;?AIIS0mNAl+@0OpMkI@?&cy>tID#7C zxv&3emYji{pVX4=M_lO% zS6`JyO5vl%ABzJ#V-N5$R+f~A_&J7Prm(}))0`7m;8$UMr)hl+SjoCW)?K)NY9H+P zB#uT9wahMSZvORw#b$C!S*FQev3VcXwsyBJ--q%7LA^E8M2O^X7o9cWIMIr$spUdn zX!u{cnok8S7?|es6nHCZo`y|{RTZ7J-n4dFkN&*2c*jC)E=Gy*LO#|O%N;XmlA3EE z$V}DvBPa;CK3Yu8QS6+Xdh`>oQ$G#9&O5=$^owbe2|JHPc76)^1p^UghwR;+xMPd^ zCYe0VRau9L^Bhe14ahi6BO?RfOF2(j$JW-4L%G6Dp;PWXHx%(rBF>?GybPCK$YjlN zezP$h17q7Azujj;$@q%{48~b3@rjgXB(5N~+)w=1_->_EmE`c`9T;tIXoM9O?ZA0I zDJ+}3ZY7Cx*Hw{zf0G(vQd~UMoU_v2`n7mfP8y?Yh3eBZv$Ftgdt#S-R5y-n{iNx_ z{(l-HxOOT#7Dmf`|GcyFvZHHFO#f1mzSDdO!@zT0T|SXLd|Il=6Ax=EfEXoBxE@i< zLHQvD&CG<^ntW*TI$g&i-vO|z^uye^zIxe{r4C@kJ1&0fF=jyw{ntNwqT$B zd6smD-JIo__yDw0`hQ3L*{cHmFX8&qV`n?NgloPZ@sCW7?thphK(iGMs8Ik`8_&~^#tU)CAP7KZ567{SUWs;;SCqoa>_ z&pj9GsQfhd4utGM;4(IE;o6HX6+2P;6Il`M6t%K55!$*VA81-_i$hQIdM;+&JTeqb zX-~Hh@hvNK}V@^;vuV)hN2<)L8W`(bmJUx(5-+M_k z-Cg^-l93mrpq9B``y?cf4*xeC0lz89`6wx|QR~dXhYcD7_!07YOE2-kT0VG%^LR)v zAauwB`iTdC5P(yq^nQ%tJ8iYtFjQbt(ZBJk{YnD#J>qASXu}*@%qz&i7bx8mwB8da zJxnQWYnxAmPm|Eel`H%HBDOobOAV}(;4QY${XpcPD2355LP`o(W+^h{Ze9;Wr>NJU z1Y}SS<6-tAOY9wT8`z;9dW2UrVE=dA+A0U-!HZlHj>vmsh^} zEIMdrbp4|g`xjFYONqF8uda9hhD~=;pPqU(f9g$N zhL%y`(cL`0o-0;ndBRe**R0*`=om)hKJ@g zHepA4N|QoNsxDRgQp+@*BL7_Z@ch=YsA`F>ff$5sDC=`NtXsOHzapSj7qC&+RxN$` zz$}9o8Y(e+rm+r6PStpkbSy2m`eys1(&n6f>+ZaCO*RA}m5pS_7nR15W674j_jCGm z&rF{+wV_yrFdAr%r zgY}Uuh5ER*4gcU{5|6#^87|cKjcBYJc~OpS8wfiy?wCrrjy5XnhD92OzXEmGJNLk% zVS{}Dml&?uA90FeCjbGpr?na1=6M9`CmKO2cQU-#;n@%C<7n$gh#wSV2<8kK{LxnIJK(l8O|(F zm)~c0Hpxa`H(#uy9$ZW2ormUv)}@KxmX#p(@%--WTxVe#&KvTMCWh>(8n@UMPbOx8 zIoS=-URaXa|E^5WoBTw5uL{O!>q*0oq}&1}OkPjt<)Gm5qd**ED6`P&{wDwNR;EQ$ zO;fZ&UCK0)Y<7Ip9uI6o3Vmjvps*|7yT!XDfA7i}btoe;_{OU( zOD(n^a#rRte9c-N+7!b+a>V3Q=2Ve|BmXi1<@3^1o3de}k~P3g%?){HK{X?mF0F1R zIy$KT(XoF_rELzX<6J2D@m5{%D^zlAeh~fcieDhypcm9yzxti~!MMP)Z~M#K%Zt=) zij6Dyd_=d@9?A#H{!ryEPPA`4jonuy?<&&JrvOIvX?y1Xyw*trD{nu3s;$cm5?Z=- z=Jre@3VT~iXFW0#u=32>V(EaXZmt!;rqVWGa0koY>Qj>ay|3*YU zwxmh2QFdiUIM=Y&XGP`M6_hVb{G>+D>+icr#ew%~q$IYkkFfIngn?PU>KIDXx`epA zVm3!QZ)7tE|C+sM{UqwcMM0RnfGzwx97xSB8);oSTwWcrvXjr1^$ZNAw_{?(0 zG(7_&B_`{(Z{IE{)A@CBq-U>fhgZerO?xyk4ja1{9p~@}CF}XpV(qf+I--@@!Y`~H zKYc)v{Nepqb|(v3Psi=FbZHQ!o_bRf#Od*dD6j0(eT|Km61xnJXB+2Q&6Wu<)=wU- zPd80>eExC8;lI4@-1elG#&IWeC>eG89AU1xFdXm~9h#0m0M#~Fsno9TV9g%(C6k^p zZZf_jP?UzL|6P~}oLP7*$be3*|`xLUlmoDDpJ^@U0A#` zn|t1n#T+u+Q!GXKfPUf%NH|#Lw?It@mPyxyCxf ztqkZ|LW({|)(-H3y>%sF&Niqz)#C|yEysH%pN|xcpx@;D4R9@pIUc81_Y4n5dj0LT z#Ijlbql=Gdz8d?(FEY~R^)=xtcRKfn9$uSWr{;ePO4792QV&Ad`2o-A=sMMYT;Tqo z4Hpj4gfAmsK_`dnf^Pb9CZ7e_)^3EqzB}@2ufrMo1os50vkmdQ(wW zQFb+=PBrzTt?e0l{>V^0C4(0QO-AYBXqK7?6E$j(>ddhfYht|_DPLiIe%ZOBr!}wR zHRGCe@0u>oGyV8me%JQOB1DXx4_mHP9D8o^G5&SW(5bMZ8jAy)U)x!Q=)J>OI{Eto zkq69Ms0^^i`#5|D1w;AJ@&Qk`agcoewXT0O-#)`PK{Q;?(~fy_vYv|;VfpCI9=WGpf=3Y zQ=9fU-PyV2K(J@6!(wMS>4zHV{|72H1NVyv^rkVDjtRix;rkq?%!2FiVNt+2hlOu` z@T$75y6C!J2PGTiwf@)1m*1N2hbl=R8xuDgYdWgM4t0ixzW%kL+s*pi;i@+Q&iGK> zN3A0jQ6+v+eM)x5&wAJw>&z{Sa(HMmW^V;)LH6vlx9fe&AM#)zJY4)2>6MB~-Q_BG}KjdFnnm@keIW{dY~p;htYGRsvxX zdl;ZB&LA9a`hR-1IX}o&dT-^#U^H#qyU~ozFH^pAT_s!sf1bHtM$p%GZYYmwnw(k* zxfgs&)X~pZSn!33RGkY%v~vXFx%s-odDT5P{PzMmCBp%Is<||A{;ItyU_nE~a7Ru_ zXI-S;f@XquYn^dkGwtf+r}4yTO=`mBATI}-Ft2o8!PrNW?On>Dx>?TzzvTgypEqyH zs(opQS^VsMT}}0YrWcQH=wdqneZr@@zBmTJ`9DYD`tOyp{?F*ih}n}XQ-*Jac(l^> z8ZI@yV8j3wTDAz}J9F9-Cwrf%tC@BWWCy_ZbanVy&Wo7M>{ENpm>Bc(K2{ch{)L-v z8skRVzj9=4|J}qeM1Oc}tcW8dP@x?FFAW#+jWQrcNhwju!MC`f*Oo_l+wVF77lxuJ;M^ z_$biA1_X4ZE%DFg`4P#r5JUZd{vtrmvYL79`+1z3GZ1iYU%nIKq3OB{)F`W-cUi<| z{LD@92T^dEaNPdK8QA)pmik3yqhU#-A!fNiR9WdYPb$)hH)+Yt^ji7%-NVaIqyP1; zxhaFntQ_iqIGccNj?-dIR(iyEUcwon!)F(kRBNorF#zgZS&C%YFF z;l%FHn~L679Y&tBSyK(mKR-|sRaR-wW|fwXnrpnZJDcuudfJWYb-cea5kS3bKlT#e z5NSYIJi2W&nJU?_md3U2jy>OM+z+834N1uMmOro@qvB&}1RD3sc;E z2A?ib*^W3i$l9{JPVfG2x0DYUEI-pG2}%yj+0$&~|z1@gK(0 zPD#W{#8>UdDnQX|^L3xgiZ8(=$L^KY&(ef{3)_j8DznRK|2;0>LI!=FXnr0W!*Wey~{Pd3`;036-)t8RVF;_GyeG8-DIkL=*{7qzQW8Ah!1|Zt|xoF64oVGmC+Xe&-7ywqj6D`Ki)UZ%-K2*r~x_287O=fBh>$p3tYQ zxPG3OJgYiN&(Ep)F2LfCu|=+8&kD{7FPD2i*~6cd19Y;t)|PGvHHBjQ*gjm$YX1LKoezq`K1xz%GzJ~Bp*FVa>&wpZ!|2+esL(;j%hcuqmDZq#z07ur{MiArx6KXoqfa|wa%l;c#%t`oj{xTNtsqS*xEl*ud(HNc#jU&Kk z2p&iFQV!;ZN-gnkS~L5ahZh}tb=!wE)@E5XG=r3g|NZ%5t1Z1()=+UaB;_?HL|RmS z)35qfyUB~MD-1lj1^oe1%U!2+cpJZ^(s?zH=y|5Xo6*;Z7mL_X8r~#`dtwYa!)$RG? z0iYZJo_i}Lswd>;hUCnuvZ}2)GR1$oYhcV=XLXyG+I#gBh@!&e(4@OLSX2w|73R>Svc(`i82RnR?nv;VZGx`G->tvB43#j(<}rh=Fb~{1WaabsiCNiZa}~q;VF=gI zO>aDW@#}QOR3>4&Tsk2LSI@{ zP?%n}i{w2juh|bGV-o< zv=_SX1N^tfw5+kuE(^q2n$>Ofnguve(RG7(Apg1?IN%Af3|VrI-ya$Y$b*u`J|cEa zW)piQC6D4PG5v)>$?s*7`zt$A{aM=Qk#SB;ZO|z*go1rHZIwV(x%F^W-z{s$85Y%3 z3+N@FHvS1mQ!U* z_RI_Gjsg+A1NHjD$f;-Xe3XzEgc{hj?w<&2t#V8(FD{mH(suV-%&+J^xRyzyXE`%&(hd)pmY^~OoaM+ zOIO7+lYw@7`Qs7NT=V-ZBqGBMCwHMCZ56b(?hLBWpqv|E2 za2tJ$`v)|+d4hi&N`i6^a~hIkHzl_KI2}wW1^z%Sp~XjW^@8j{)*E8VzpR@+0XKso z;k4qQ?L%4v@VswL_#N6SuwMptLLv?|L4k*)D;5QI=`Z&7-^7@QU^CYIz5$84G8@?> zl7$Tlew-^mhkpG2x_bE$mJ?4hV@D?HmkVb}U|-x=!Wn8TNwhcwX_AlV^Ff4zyu}MA zrfa*BBO4CVCbQ{5ON;+u^`)P6llM$7i#s~~=lvFyCUmmbRH2o zXq{_8RRA$hC>C$6KJ^HCmq*i+-(WI;m&MQ6$GZcd-gI{;@wP|swsFR|`xA&48mofDeI4&?l=h{wT(d)%OF&6NXzqE%Vhe3D$AHSKv^nB( z@uJ&~mDNnNiwJOZvPUe8Yij%FYTqCO`SG%p51=hAy|NPYR3=TYr)Y@}K;+NL**|m$ zBdaHMNK+EZLd3aP8^DSFp(BFSzffBbfdpZx%)AGswu1JnB7=XZwjf zQ=0chsi{&m-?hTtwqhbiun+v#w#`7*Vn_X3O5=GT-YLwHTMwq7Hrrl{%ZSRp>T;ecE9)~y8<*zlR-%_oBDy$4hBV=9+2(8CcPg6N8rtlZO|G96Hq zcn`L4hRq8g5}LD=BggI?!0sfZ5{6j%i(Uuggaz5ErtI_i(uEDFg#$Py2 z0I&kL^zRp!S>~CV4P+xQH~xU$|F>@qE*`|;pKa zMT@d!b$vCXMT^yy80@QrHqOd{c@aBuJ?17qh$kqy=CJnXfYP*5?RWu6#(7?(p4MoL zi=4J*cfvmNpv!`xO70MRYB1~ytMma641@$1{L>C%Owpn@pL}ac1Xp<)cUZ*jB(#Yp zFK)01W5f)_tGidejflp!2LpAql@#rY`_IDS;ior%0cAOZ(l2NXwRrx0(7qZOQhs6# zz}go^l+|`Sk&Um?i2y^~qI(x97bUAu=L3Lt@S&GY&jcuQvKUTUi9TX!?bgRoci{FD zsYJhHc@sA$%S2g~AI}oJ*=?o_qynRS^jIgFUSVv#}HP+Kpvp%JobY?|A7-B9`A;kkFx!14Dv1=!Pd-cmN(7e;ftS_##>|C~7 z<@a4DUiPU-`&7^%9&d93o~Q@ZTcR);B47qZBeZPKweH!dIn^BST+e58IxfE7wExRJ zkoOrX81z6$k9wz>71KxyDokQu6q=)xBjo3zZnAY@t)`7j{AIx}DpG0*^L&v*M`ur2 zLHQ6e^$|v1Hsh)?U9;Gd+JZtT4;==!V2bN#a>-zE40Dpwus2Qn8WfGGe`Xn>w+F-g zgHdyRjO-=S8Hf_pPrG;Bem;;bMZGNmGKE5 za(Knn@9cn}1N{KXSXUHubYwPasjtH$dZH(2{k#P`@?R{DO$_Ls zwS>|X~8RysY|M0?hXI z*AG;xT>Niyb14>W>ium2VBETDX)mUwGoXT!l6jjToY4`l$QLH8j6ENScEy=U6CL6E zMBKrcm_WeuyMz4@v;7a)rj#48m4y~~hWR!G8HE3MrgF1+m;teVekRCh$1oCmTPX(! zZfR*p&Snbb%??Hg`Ddj5pC%USnMX7b(7Uht=#{&l?%W?su%p!KBo;1>N1ElH^Pp9f z*d8COT2TvJUlsEYIF!27`1codWze$)tq^-|Vk2c>nC7F5e&P~rphc4a^Q50(V= zbe6YQa%>C04Rg%a5QGWOx$1Zx5b!oMZT4!L}XH z!qQt|d@GJoZfR^R?MX`(Kv=6%FYd80Q_jgeM2p3MBZ?UfT2yKIbeX*WIlcYNnW1V< z_s=$k3#)*ehb|X_q8BqTWZ76z7eZ$U*Zf4~&Xpi{a{cCSZ+L*#f!DbpjynV=MRP~d zayt}^kvY^*u1l_^m1{)~1LUbVJeQ6&-*(;(jJBnI$pMT$OiL_QZ-5+u0H?+usxv6j zg4EF)uf-PqqYm!>$lfzk3nIaSlEq3J>Cs=_BkzKoYd;m3)R=UzxTrpPdeS3?`i{*T z+BQUDp*z(&me5+CH=bYzBnM0XA%)p^u;#GpR?=kK*MPFGvbS7!g#cdnpC7L4O4GB4 z;9OBRC30!BevP5_($HspSXNe*lZ&zqo30oMv!5qQ7vcpFZLz2m_zE=x!$)ez;Rnp4 z7Ejxci!5-qVi;nMqA!)$s-j&Mg5>N?&i| zn|Smpea)SnRXx#+?JphpKso(no^gADhln%Ms#AyVf#_^Njx3pKHpr5sIp?B};nyP| zj{D!aFRb15G)C8SWcJNcamXX|1;%An+=%x2Bh40{q4HlMzm_I?-0y2F0J`AYt zW97(&c~kUKmkd7Rc7a(Nbey`nJ4C`N+@3^Cp6e-qv0+fs!jdNLzfl8E=6a3?s2uSv zQ?j<5{u~c7IbJNUnHzIOqfqlLt!6;`fXTo;5WM!7SU|Q>@ra!>2c$0SWH6iVObzb( zFhm6x#m>*R0$DjRWN6G0XQh}_-AM1J;`~yLfR5S>fMU_j*3#0hpnMBis)Oxu*=pdz zmp5o9o3v(n@$pi6DO*%TxH&KDCv_%;`<{3$P|8awr4&*#Ea?#AJzz$)s&)>lFv{fTy|R1EQ*+6y82Ia2H-8?+AZTi0uepsFeC_BZNQ zEY}eB9hD^!LKb+vmoBYOH*$AV6%8*2MZQx;^3bQoCxg|6ey2caq6f3HFl8eVV2L-y zKX(7ldxK;Z78eD%T+$T9u&VE8_HQiqhsbytES4-KZF`d7UYzPI>#k5-D=Vkxp_1u0 zzLpWRVvh|9#+@`>5BoAdsF;yNg+Q+fp{2+R%MNHH=O7pq-LN1h$oJuI=^;(5ZC*M@ zNp@^7NGU`^G`##p@8AhP;@(YnHcKCCSB#!#vtpfTr7DpPSngYJZh=@s$-0se9n?hT z_C8A)?&<0JYxE#FoDA3FMG-QXFgiT4U z4RRPNivYe0|2ERC-!>#Rri0|s80cNuVs4I{T01xYkFM`ocLC4@=tY@J6I<$G=s8WCOj#}A1 z1H3a}3uYmb9C!m5)#8pnyExgDZ$#Q6in;3V?|<0=-yo#b5+VlcxKCb9n`%DSp0Ch&*B(|Lag9t8|(4-@NOOF!jj zC7!msSZ88|+zZI?1xI!P#i2>(%F`UOyS%A+SZ1`L;A3O}xY~aP%WsmNAM9I6$TSbH z#&!WtJ!M|GWli?M5ff=nGmVVXmPzK5l&A3BI>*%t9vqB&89H1ade(T`_}Md!^6xtQ zrMY@dKwmr{R(xmg)c)89FR`}}bIuQt=--fvg;|!>WXn)=v~- zJ%PA<^gtX_^N<(0BgDjtP)8&-AQl^e*0>Po=?5xJa*r&t-wzI5kI7O(hE(-f7almA zzl+@V`=nJE`!UAPBQbC@sL-qJ^LwvIPI=!x+gghW0r07L*l&fIZw|DBYQPprobKeXPV5`ZOL^z6d-iA z45weibD`0q`-TygxzXSMxSG2{ag@L6S*?(^ScJd5(N`~s2cctnbZUnM*=s~#PQ!@Z z8NCiK>+TEb0yaMu`r9E@9F}EVFIAeBN60)Q!CYx#;>N^?fDhpKv<+HS(NgylGj3s@ zb7Nz!ygKbLJNyCO=V>+{f+(KtRMKe@r3hF-Z%c~{-L*u|x#`;yt3KJ6X&m-t1tp;m zAAVWqKD(Lbo5c`j`-7p=ojgde;EMRAr_H7261=XVb4?7hodd{>50j!CU^Wi24`$4| zZ}DwfpOke-^Uvpy1l~{pKL*qdbh80{pStJvC+V#1$*g30yIV5AKHWqDFq1;u_?JzQ zrml?LWS_;Q9-&^mhtgj0Z}_a=S7sT0)jtOiy=kd45wu_FIdgQ|V%*XB*@cHNQ_VX1 z{A|=~4O35F7?4B}Q)}Q5U0g21c$P96tDuO>hWL-Wrn0yLC1uJ|E0+t)9?wpS>L8MM zAI=+4`fuunNsy}6{dgAYTJJQLdeFThv~8pu>!wrc>~X0keB#Y3`&xo*Ntn{fy9))x z_RZY^(#Ty;cm5Z(RH$V{e^p%_L|4}OkW;z0Yhy%2%_W^kLd=|s=Vh?8ub4HRMqh(r zO0t<7FpA7T6jX-H!JTe!z-mqCgua{5Wz=V6ik^PGSDFd`E7ZpCo z!)Lt}ywI6=C1UqE2PY@jZ3E%?rLGY-`oO(Ag7p48V_B1g*AKbusOfx(I@~=t*gd>8 zMlJnomQz^7xLEe3Z`W5ES?OjEF%?V)O;ZUV*VEOFjS-u2I3MhO&|%(qhhl*|dkvTEQwkxU2R-7DC=xn=(N zF^GU)qJbBFT+}SpbDe7&ZZT<2Z?sU9G1{wtKrl0KG`oohjgx zB5$Un@P5O^e<}VbG59aW=y!}~a13dpfHMl_n1qZH_>GZY9#xuQL9)}EK6=IP`*E3I z%xe5tvtQ4^(C`2YK{?dABYZ>~P3Ifwg8Jq;Gxqant8LL|laCZA?S&z8AR&|HEJ?9y zjyYSzf{1bnPHqwQ2h|cx%pRcr4WKr_2<=Jkl)>3YP!$l(=i&oTxS@U5f8*b@`a(j4 z(M*rNoE-`wI2vaf9cgfC<+k0CJuu^2nQu8*k2c2`$=J!MHlq>`=2qRq{H@>5TzJ#px931(F2|xWjh4f!_AeFKs86ZqhvjD&TKp zihTPoz1&U~GmVw1Z@ED${!8o;?(4R63a$x1CK>P8jYBVdOtG%6D7twB>E4RU)QT5V65G$5nz@QknG{%^E%=taMLi zMKH%G9`f(0A9Ip=W*E|>8Hj)1=qFx($b5l`*YBd3!0#vXPSh^KTPTE!Ta&bO73SNP zx)d;~tPM8W!`<>K_&_+J);GZ@slO%GW&T}bOW%y^fbY=YAG(GIat6KKiWfT|QDdo2 z10T~U9#&>DWZ`hsx#Xv)NJUqwE9BgcVVyVx(^+w2pQC33`gy*g)3=up25H`cV(DCQ-w^?eAEPUg1uaoEC zoSdE(yeK@bkh(JF%=>e@Hc0O-yWm^jSLs59@1*kXh7eN6ug1!jGi>xE^8GD4v(mt5 zba3FIdXF1upEaQ(NWNnq}y9~(}6_D_(qM$NP&RQM9#7m zj6WP&<*plPvhw%z95~rTSFOvRj&1f?gc94EcIn6chK;XV5Er{Kn{+$gtn`v)qF ziJ>LPUd8DNW%W_>1iDqtWc z-~*wnrr5~|=Zs*iS2XZvUpmE{DJhz+$%?I>j((r=G-x-ZUEK|ueRe9-rEMvwEyhU# z8ApcfIn1xuWHku~`Y+{nYDg~(Vpqt!yY@du;yig(65-4p*p@C_9F3#M%bGb_>fv-t z&ji?+$f!dK#0;U5aK(w~IxlTOlLFpDiYch5DW1JL5oF9uS=hBa;%Pf*#)+*$?W>~QZM=?H`Xi@}sd>E`)s@E<;!1I)rHC5~ z42WbjD|&n8s5Mi2WQ-Bj7zzv$A&ktP+7k=q-Mx~BcWNAt;_KitV`e|d_!7~HT-8X~ z^k%v|Fn8q>`}i&v6~gim(SiKT$J7B8j3OdfH*CWG;Bb0lE!%Gqeq}m0<6Kn3#g3bi zffB*e^NXS8{gc@tqA_D{`{xa=li1d48AuoTfwp;QiYe(jyIwN_63mB{{V5d-6N-Z& zGd=1dKs7C|ITGR9(`Qdave(as&7$sT2Uy8itr==h`V_2E_UDPNMfQBIdn0Mm zc-aB`yp{9wXq-|jId-J1%_(;1TdA%?&nIA@b|r4{PF3N5!(YASE_Jb)An*2hE&1O| zFPLK4%z%SoeSWQfL_|N(`7R$Z)u`y7LGsIGElN$ZDXmm(PiQuC2wK?9|rSx z3sI4KERf!QRP23)IH#fVfDUTGV^DP^ap$IgPFJjG*RR<0=Oe{sYxKxc;apShH&|++1Sc~8#fadS@gM_;VWUU;HA?|0qFZ_U}Iy8;a*iWW=f2_ z1_HB%?5)C@vku<7Mk}2Ep!;M)5F6+WCBGmtt=?34jdtjO;j~{_=$kFRI!;Z|@b5wD z`Ueby`h(JUmo2vSxT{zlj-9BR#FQ%4pbR5&7NLjTB?zzPXU>9UDH8A`np*hAmKM#!AQ2`Cvu6 zwfYfWB+ItOo~fYpnLeI`Q8zc~-xq=_FpMakNDfwi1ZL;> z%7IBvn&G0Y@d4K_v_0x|H)~pWW)^H1;y^gh-<)+{Mp()}u9>xc;2>fi?dt}kW78F1 z)m;rdhND(k^i37%-F=+7M?|wWImvv?S(5G#r|Wf^SsoSnSuDF z1tc5vodr>51`f7QCwDQQZiw9{Cq%O+H0;b8k>dd>OsCl;&15^$Oj^-z9RX~#nrMe- z{v$c20|{4ryO(a*L~^G`r>ekF`($fJW_daEG-;|aD~qHr769j+r>@Pr0D65es@DK- zq8>|*kU19)&a%-V5=s|qGJEN6%(sap2!347qp)sb_;g^_=UamRVno7>EHqibvKT9B zC_3H`n^4kx^6V5fxJjQtUVQ)1a|iufB13F7GX6Q_b=FDGQ>>KO!}?P>b#jsS`T|eE zq|yBcGT!nIzmu#A5HIU$N#WZEtJu+?So$cR=BVN4=mMoUI#w>Q6 z$aR%hM<|>*`gZna;Bz{qU^M4N^m=aWCHJPKvLOejnI>N2&`?oZf{`06Xuf(pE=wgS zs+{=h)pfh%OI4#ft=B5LG7)BKR0YA$zq!5P_TGe!c9+&&O}4cLwB2)IvrT(b01{=p zEBpYnD6rKrBpr3`&})IuxOI!7;bNLj_g@~1g1Omkt&ydH^P^-V@llAxr^l}a`{q9% zx!Rr{)KlRTNC7%_uB6g6m%8^T^TJz;|JUA^{w10AZ+AaEGftU$mzh&;(>6|vI*nVn zz*M6&IcnvWnmT5=WMD2xDoayonI%(Ank%WLx#CWWKxJm;f(wd@fJur9h>C)Oz;kJK z-@kw0_v(oke0T%bb$!p1^Sd3#@g@5+6Vj=(1tEs&*#6QowtzL71XMNk7)-U;ga?%VlLUGmw5)(+1Jfw)5# z?C*;L4dKZWM_yeW0H(ooX}}2V2-!>5Tmu!;34V0KOYia)o87x$t0B+bT)C!-O|x;- z%DEObeq$Jdu;WwfoFJKsiI}N$O#_2=UPN>vYpDpy~BvNmD4!k z39qw|xhw@w!PblY?E?9>v-T{m6Xl(?}w8EdLPSgzogXs0QnyYAo;$n49QmS?F! zttOckhzV#=x(Cf46c%=PU}S{8U9uCq)xqKU^Ksb0BrScbCa+fbO^HEW81D#>An3(} z=`RZ;zPheg(3eR;49g#Yi;kRq3&PT3obq_?>Ij+ip|Y=!;YGFNSF~l_BaoJq1wPh~ z-TTeF|1J3)%i8nc?ee%%vgTAitF#8*ATPk_EBMZ``7-vkB8LGy@>zu$jmf>TyB9~Vd zJ%+3*)a?5+8%gw3@U@~K5~p!|hLm0hiR@0@Yqmx6uHCK-M(-w``XPe7ESm+%QB-u` z>m-WsLRv%2G!yS0urhVV*otmi>UYjS(y$iEm6?4G`Zvsnatf;vwAUQYTs}=HJu~jf z3ec~#sLC~~&0G?l+-Lu1HsQ?CI!GL0{AzSNGDtC|)zW%+5}ymv&AxP+5Xh3lN&VpRMox`FqGrdaQvDcm#d|C0hxv0CG4Pil zxo>;wVIJ-`UMzyR;@cCY7sL9{QaaJ0iusUeY#14X?t5cdQ%4GqulMDMGv z7aidw0POl@q~jih+m6%>d&JmSfQG$)C^lx)UGMch> zKA;)lO!W&QMv8--`vZztGE$!lr8IsBn!*7zFEZAA|E+b6ogco(bk{4iz|&82T1*95k^zL7OpA>7sDE59rb8W8D}{}GSDXOzQIko8jNUaDb)_C? zDtdS_=V{XbGEEJO4yI-iWq%I1S&yt-ggGNvy@`SNe;+81j}@^aV(=Na zVR6F-_WmQ`lT!Ho^Jl8V+m@3_04%!5^C3fEIEk_qJLE@0;sW^zMSj*{N z%}r@}12$e=*#E(&aXahdInpT1vv(oQiGr-bfhoOcn;!?nL|Y<#11rj|@pclJSPu|Lt1ETKxse|?Wr5yaxg}+97-@EQLGM;(I1>%vj zFBd^YJq^FU1gYXHjXg(IlEhV5uq*>m<*tLlEB5L8tICxs+xTZjBFJ5$AITtUimQYbUD~n zL+-vbHcW@p6Z(#A#44L>Fv}NO-gZI-=Y4>D^gBmhg|U|p!2XwJ4DlDCG-}YhqMC{& zR!EUD*m;pogkX*cYSuQ^QsWmM)~3BkCWc?|PJo=%Vy;XP_d7XZ2QU8?-wg^BZsob_ zE$~vngeB396GeE%$~3c{@&e_#cxw}Zy+aZ=+h3|r?z}@z9eg2Ku)>bi);gsJNWtY- zQJ^{3Ay{`t!e%I5-TIGKxrGrcW-K2W!Cz>#Pe0s%97co`sRq{0wJYDR7c(?Gy}e64 zg-oNXvsyIrblb-h#GR=3f4f_N%(wfzP;0!pF=kaKQX|CjJSA90V%Qn3C?v=V^hKE^ zaaCatXpy52qR9C@)%E4W(qYN_ts#aSJ_L$e@;)4OeD34^bf9ByT+m@scPs<|VO+l1 zb$&I1Gn5W2x?*jp?RdN`e|93%qwY{z(&tjch5(IqK*dISMA3a_1Vh>#Rs@R;Ldzc= za-9b4w!N0Q!aLr>Lrh)kQn3LUvCt2rL?#%~qd`)|(7&vi-FMI|tD9=LU6!E*0Uaw) zSm^-TP;bT2(KnjSc_E19rP(}Vuzxm4wz$%CZKO#l7ByTR@!lBj#G$Gl*m^C3w-y7Dr+W)vMMX(d)`Jw^T@DQ?vESceTXiiN)GdWjm6y+O@ z(8>rFTh@NUji3y%GhD0w9=v7dbKd8?=Ww)gE?sc}XK0>^8t)+9G~df}{Bd0JtMR9# zEOX{lH>9~VWTrzGS5bj^&fI%Ro##*LG>dP^KNOzsv0jh)9}rRNl^5ku{pvn210~{M zk5W1{bRLlm05;^m#uvVw?0B3O8%*GZC;3+ojTjVNkuFJWtQ&@#**@3pMd zk2`6P9KQ5tk6Eg+6@RLJhF-+Ho|aE5u0%^%D1LGss%omkW%6BXsj_Avf4^FQO6DL0 zzTLZ^M%XNOUpv>qMqdDY#reph0d$f`O4CkV78Ab38IZ;P3Ht}st!)69lI2Vxp@{HI z)aLJ6@rOVbfueSs1Ie+1p*rcScC&_24zC`4tuHT#f@jLI zD@}pPfTw~NKsvcys*FvgGnkOqHP4-h%S;e2qL*HKZEmC?5Wfat|E~n+uII4!c4jSS zCYy}2;Z_UH21R%9j~}lT1DPlnXsNVhGM=}9#PIpPdGv9yqKcSFk)G{QO$5}l65Mhz zOYhp>fOUWdR!@FtWF%putKrotTBBVQFxhzp1h$z!e=%+h?(|@i9uW_47xGTV$U+L) zk5>#LFm-{n#&FNnYopbATn`VV-yD(JasenZsV{uat`B^{4SBi)ud~%HTS?idu}ijo z3A5@v>d=Id5ZgcA^_GR&J>f2fIcaofh{6u+%XGJGnz%XMYKM|pYP&qKD+=zdiRjdn zUm3jWZXxJZboa^a64+S`Hg$rKVovYHk>%3MH(k=@Va^aAZxTwX!(+`&dywe= zK<3kZm4*=jMj-UN^)vIo@T^tj|DI+j+bZJ+zCsExF8h zgH6pMh?9E_)uNuFvfz%%bptHNpQxqN{7*v=zYiL}O)7S#ZQWbXs^=J_2PA|9%?$~& zY{6Np&>iCPc)N$YyFfuu>O5y;1(cY;irPMtVAQIP(j&5sh(@O?bY#ucB}`aeq#8!8Qt3B8z(#= zhrCc1m*Qo8xG63;&YAN~O31wcOQg%w& z-Bg@M0SnBR;va7(PIuRrh5uX&uow`w7njUhYiDY?Ppdo4gx?$e9QEnUeo_5$tsyV4b@+e*#9Tzwj|X4nY4$vg6cs-N>C-tjT>n$WyX8j zr)^>JJDg!SZBkpaypRN)o;in6 z-r5uakRr#BHueqju|ZqyTxBig^0FYYKM+6XMR@VTk97Ag7$WDoX}SLcY4}|+VYGd7 zCNHIN-E1( z`q$hC9Sv<7ins7h7P)&ScR8i7DU!9<%-XWt-;ey)Z~1$j%iEbA3kHaOE1YM#H4HU1 zdC3HeG(kiaQ8EC2*Ys`tOId1wJ1nyE5sw34@+|uMzu<`f1BuQ!X|e6TBl4cXN~t;q zD86gvVtVj5WbbDlv`i(OebC*J%KJ2|LZ97dh$nNO;R2|$>}C~e@gvcy-|`&=z$qI# z?{ySh8=TFOk{4U87nW%|`XuZhe*u*7Da87dk(9+xQ|O*+G4L&DRwG^=JKt#MItCZR zG>8MNs!1H7?AqwxAT6+`f)EtG!^Oz@qp*^SH#;TksgLYzOa>CA`0k;DJJ^GQn8564~;GA&AFrE-(&vNnjv#53ozjLr9j^tDN62dFWI>iC40v2t;=rA z5^V0$b?(A2c*#&6_ypxw08JO$QK=uSuDYijqR&#o;g1Yg0+)1%jf5c0Uo zWZH>-JW<{-zNnK$hD<%bUBsCuFfoW|SZ5i|7+`QpSC(rl21}$f91(`5W6Y8spM5l0 z(c{`@3&KDqB`u!clc4<`tz@!b67=Vpx>cYOPPu+Jw{nsv6fsO;HA?7&Be$*K1RDj=C!PiCw$DOxyK@Ms}_n6IjSzA+!Qx1 z)qpkSJJ&oHW!IObDE;Z|c^}XEzTn&V=&5o$I9$$p@|OIYZ#4YLQ3ay?FE0JmbhMAA2O*(mzVX`}-_%pQ0Gc&| z^4(%1+NWADJS9>GbH6$EmH|D5RG)+u;+^xcN+WiaFTD29sH?j z=C4tDNO01>aug_NsudupyXTA|>v z2SzFj0}+eX%ktGLZuqq#e_dDUI&hLIZDCb3%x(Sesgr|h0epHx0MKymJ<+&)5ouz) zukrpPsdnTfBEf4KGw)Z-7;-&3IW%9+Qzb7CFcjv#J^@UYU^4phegwQYB)mUz^u<<^ zXD(U%>I9)YE`01(mAxK6z2EfwnmEvge{cKTmf4WEIqQ5FMb2 z+16lNeJ~QqVrHr%40#C=^YGw4F)utkwUsgAPrlHWXt`H+1@>;z@^QP=d-mqLDntb1 zd^hTR^X~B2uzM8^mljJqofk{Pp*lM0(lEuDo`P~|ID@!!r`On*e0l-JKf%;I3?a9_ zVRx4E<6{i2In3F@l49=EjeIyiSxmWN9P}ZK)6kC^&IJVdpUy<5H(}$RGQl$ z?5YY>eY>{9P`c}Z!mXzk!zBpPU3)KO%mNH5QM3d@SYor}#owBaF2}R-JEj;HBgBoj zv-+@b88Ak=`HgSLmUFVw!8h84Ca^1I<>eL14=x2B zx9f9AbqA(;B7T*|R{e!`gwrGYXN_?0D08fipd_tXt&FQPAyh>2xAK9W)6aNxJdy-VZ>f9$F4ga{zR9_ z<4CdE(`b2~Im8%I9zVgtOh~8&HHsWgU?1p3n#O=l65j(H zPZP_lMIvwXN(d6W^l_oxlp?)TkmXrk=H2+ydR8;|_xdhC32h`Z{Yb7*Gj8%>XYSI| z{&F2C()ZyxSFN5x!ZUwkpF6&(;zC)jSaeUgW5hrNLiWfDa=~G5`n8nOX>X?;E*ZZ_ zdMaJVOX+!{*&|FiQ$*jZsap0lz&7-Q68y9U+v0wyuI}E%(>h^{)M2|V`F?l9(z+{d zzNWlTG@Fv8d7eI4TNayVwT4f(APN{f|JFqLlF#9f+G7@bG;vn0P;ck~oz1aIDeG z@xo@A(UKy_Y=|5+KX5{-bf$z}n>e+v8oqn#4gT+@f$}Fr75#pZ*-;|%U(fH~Z|9k2 zYfIu**K)&^&@YR*!{Ah-#?I4mOFPov;ql#V(Q&tsE`3$lpz+qiyX*o9b86{dk6ipDx3|Ior_bM7R2LKP z-8odX!g0#G79;Dj^zD#I-{M`UqU=^_LPQj)?N!oxm3Z`!r{_SSvqQ@n z52~CM-ika*4QKqzYx`!_j{&;V*Id}n0m-e=1;kQ9$#8hj3nH*!$`E9hLPm-JD`N*k zDlwl)ku$y`+ljX(vKH5w=w(pPn5S_qtLSQawA054L_|_WL)e>JNE_OSvME}sHC8oo z&dqJmcV<`^KEC44A=X`uJqp&LZDZ|}=q!30y z0?H2+A5ZR6vECdqPp7bW9|4xb%L{{B8D@BJ&;V4sITxeY4p4!$ss{<&xs z6K2SK5&tQ>8rleBBXJAg&OAGrvbY;yhjD!7hr2IN5p)e3P)cqAyux<{uUZixBP5e*9)(*CJZCdoA z{a^dLaFaNzNWyq3Z$VVr;HB6YjvCgN|)lxZidR;Pzh#q^+SF zDg)PJmhX<0N(?@bVmYCMRthbHKGoy$F3?p%E;lKsfh*cWgsR*uicfEdAD8X`CS8(v zE{Z-X4pnz~x@qVUAk&traZJwM3jjNWql0F~oVn0QyoBJ9rnC81>j=ixu1qH{|2hA; z6fc6lA{cLM>I0H4@{GvE4HflpAPkIN+vX^*^%`-R?uQSN+g zdWE4~u|%p$9{TzS2WIHss4`>veXZ>Sq89(*D%~09{Kzq925F?c1AKPSIhFDR_@$sW z;gpZT2$q}2-G%hAM7H!!Kh&y6JrC*E6A2Uxu^tiRs)?%P&iepafPP!iw00M3Z2B;zsOCr@Z4L3cS)TmgFMj>>)dF8F@YMoe zE%4O>UoG&}0{=S}7**A&sqI_+?Hfue9Qt&vQS`rasjt8K)dF8F@YMoeE%4O>UoG&} i0$(lg|BD5(zcKFY)aP8kx3K!ezdN}6R&o5#8~+b;O4Yvr literal 0 HcmV?d00001 diff --git a/build-rpi.sh b/build-rpi.sh new file mode 100755 index 0000000..26de78b --- /dev/null +++ b/build-rpi.sh @@ -0,0 +1,49 @@ +#!/usr/bin/env bash +set -euo pipefail + +CONFIG="rhemawavekiosk-rpi" +VARIANT="" + +for arg in "$@"; do + case "$arg" in + --dev) CONFIG="rhemawavekiosk-rpi-dev"; VARIANT="-dev" ;; + *) echo "Unknown arg: $arg"; exit 1 ;; + esac +done + +TIMESTAMP=$(date +"%m%d%Y-%H%M") +FILENAME="radiantwave-kiosk-rpi${VARIANT}_${TIMESTAMP}.img.zst" +REPO="$(pwd)" +NIX_STORE="kiosk-nix-store" + +echo "==> Building ${CONFIG}..." +echo "==> Output: ${REPO}/${FILENAME}" +echo "" + +podman volume create "${NIX_STORE}" 2>/dev/null || true + +podman run --rm \ + -v "${REPO}:/repo" \ + -v "${NIX_STORE}:/nix/store" \ + -w /repo \ + nixos/nix:latest \ + sh -c ' + set -ex + mkdir -p /etc/nix + echo "experimental-features = nix-command flakes" > /etc/nix/nix.conf + echo "accept-flake-config = true" >> /etc/nix/nix.conf + echo "extra-substituters = https://cache.nixos.org https://nixos-raspberrypi.cachix.org" >> /etc/nix/nix.conf + echo "extra-trusted-public-keys = nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" >> /etc/nix/nix.conf + echo "max-jobs = 4" >> /etc/nix/nix.conf + + echo "==> Building sdImage (first run slow, cached after)..." + nix --accept-flake-config build \ + .#nixosConfigurations.'${CONFIG}'.config.system.build.sdImage \ + --fallback \ + --print-build-logs + + echo "==> Build complete, copying..." + cp result/sd-image/*.img* /repo/'${FILENAME}' + echo "==> Done: ${FILENAME}" + ls -lh /repo/'${FILENAME}' + ' diff --git a/commands.md b/commands.md new file mode 100644 index 0000000..cd4230c --- /dev/null +++ b/commands.md @@ -0,0 +1,43 @@ +Build ISO installer +nix build .#nixosConfigurations.installer-iso.config.system.build.isoImage + +Build kiosk system and push to Attic cache +nix build .#nixosConfigurations.rhemawavekiosk.config.system.build.toplevel +attic push kiosk ./result + +Deploy to a specific kiosk over SSH +nixos-rebuild switch --flake .#rhemawavekiosk --target-host root@ + +--- + +## How these build paths work + +The build commands follow the flake output attribute tree. Start with `flake.nix`: + +```nix +nixosConfigurations = { + rhemawavekiosk = nixpkgs.lib.nixosSystem { ... }; # production machine + installer-iso = nixpkgs.lib.nixosSystem { ... }; # USB installer +}; +``` + +Each `nixosConfiguration` is a full NixOS system. You access what you want to build +by walking the attribute tree with dots: + +``` +.#nixosConfigurations..config.system.build. +│ │ │ │ +│ │ │ └─ what to build: +│ │ │ toplevel = full system closure +│ │ │ isoImage = bootable ISO +│ │ │ +│ │ └─ name from flake.nix (rhemawavekiosk, installer-iso) +│ │ +│ └─ nixosConfigurations = standard flake output for NixOS systems +│ +└─ .# = "this flake, attribute..." +``` + +You can explore what's available with: + nix eval .#nixosConfigurations --apply builtins.attrNames + nix eval .#nixosConfigurations.rhemawavekiosk.config.system.build --apply builtins.attrNames diff --git a/commercial-disk-config.nix b/commercial-disk-config.nix new file mode 100644 index 0000000..c8854d1 --- /dev/null +++ b/commercial-disk-config.nix @@ -0,0 +1,44 @@ +{ lib, ... }: +{ + disko.devices = { + disk.disk1 = { + device = lib.mkDefault "/dev/sda"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + name = "boot"; + size = "1M"; + type = "EF00"; + }; + esp = { + name = "ESP"; + size = "500M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + extraArgs = [ "-n" "EFIBOOT" ]; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "filesystem"; + format = "xfs"; + mountpoint = "/"; + extraArgs = [ "-L" "nixos" ]; + mountOptions = [ + "defaults" + "pquota" + ]; + }; + }; + }; + }; + }; + }; +} diff --git a/commercial-iso-config.nix b/commercial-iso-config.nix new file mode 100644 index 0000000..72d8cf9 --- /dev/null +++ b/commercial-iso-config.nix @@ -0,0 +1,128 @@ +{ + pkgs, + inputs, + self, + ... +}: +let + # TODO: Parameterize this to combine with iso-config.nix + # Currently hardcoded to rhemawavekiosk-commercial; should accept target config as param + targetSystem = + self.nixosConfigurations.rhemawavekiosk-commercial.config.system.build.toplevel; + + diskoScript = + self.nixosConfigurations.rhemawavekiosk-commercial.config.system.build.diskoScript; +in +{ + nix.settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + + substituters = [ + "https://cache.nixos.org" + ]; + + flake-registry = ""; + }; + + nix.registry.nixpkgs = pkgs.lib.mkForce { + to = { + type = "path"; + path = "${inputs.nixpkgs}"; + }; + }; + + environment.variables.KIOSK_FLAKE = "${self}"; + + virtualisation.vmVariant = { + virtualisation.memorySize = 8096; + virtualisation.diskSize = 100000; + virtualisation.cores = 4; + virtualisation.qemu.options = [ + # "-nic none" + ]; + virtualisation.forwardPorts = [ + { from = "host"; host.port = 2222; guest.port = 22; } + ]; + }; + + environment.etc."nix/netrc" = { + text = '' + password eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjIwODgzODk2ODEsIm5iZiI6MTc3MjgxMzY4MSwic3ViIjoia2lvc2siLCJodHRwczovL2p3dC5hdHRpYy5ycy92MSI6eyJjYWNoZXMiOnsia2lvc2siOnsiciI6MX19fX0.N6Ktrmmu1LSy2PP8uNF25VHRP1dxPZJ4M0MR1kUpVi0 + ''; + mode = "0400"; + }; + + nix.extraOptions = '' + netrc-file = /etc/nix/netrc + ''; + + networking.networkmanager.enable = true; + + systemd.services.NetworkManager-wait-online.enable = false; + + nix.settings.connect-timeout = 0; + + services.openssh.enable = true; + + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB4vXx7sOOVAyxdS/N1LEI+L8wYICf+gbzs6Kz7K8Je5 cnclack@pm.me:Thinkpad" + ]; + + systemd.services.zero-touch-install = { + description = "Zero-Touch Kiosk Installation"; + + wantedBy = [ "multi-user.target" ]; + + wants = [ ]; + after = [ "systemd-udev-settle.service" ]; + + path = with pkgs; [ + nix + git + util-linux + nixos-install-tools + curl + networkmanager + mount + umount + disko + ]; + + environment = { + NIX_PATH = "nixpkgs=${inputs.nixpkgs}"; + KIOSK_FLAKE = "${self}"; + DISKO_SCRIPT = "${diskoScript}"; + }; + + script = '' + set -euo pipefail + + echo "Running disko script..." + echo "Script: $DISKO_SCRIPT" + + ${diskoScript} + + echo "Installing RhemaWave" + echo "Closure Path: ${targetSystem}" + + nixos-install \ + --system "${targetSystem}" \ + --no-root-passwd \ + --no-channel-copy + + # Redirect to console and show completion message + exec > /dev/tty1 2>&1 + echo "" + echo "=============================================" + echo " Installation complete!" + echo "" + echo " Please remove the USB drive and reboot." + echo "=============================================" + + # Wait indefinitely for user action + sleep infinity +''; }; +} diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..f061178 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,202 @@ +{ pkgs, rhemawave, upgradeFlakeRef, ... }: + +let + rhemaApp = rhemawave.packages.${pkgs.system}.default; + myKey = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB4vXx7sOOVAyxdS/N1LEI+L8wYICf+gbzs6Kz7K8Je5 cnclack@pm.me:Thinkpad" ]; +in +{ + # Included packages + environment.systemPackages = [ + pkgs.cage pkgs.rsync pkgs.dbus pkgs.mesa pkgs.git pkgs.tailscale pkgs.sqlite + rhemaApp + ]; + + # This populates the EFI partition and tells the NUC how to start NixOS. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Hardware-specific: NUC 14 needs these for the NVMe and Graphics + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" "i915" "drm" "drm_kms_helper" ]; + boot.kernelParams = [ "quiet" "splash" ]; + + # --- Essential Services --- + services.pipewire = { enable = true; alsa.enable = true; pulse.enable = true; }; + services.seatd.enable = true; + services.openssh.enable = true; + services.openssh.settings.PermitRootLogin = "prohibit-password"; + hardware.graphics.enable = true; + system.autoUpgrade = { + enable = true; + flake = upgradeFlakeRef; + dates = "*:00/10"; + flags = [ "--refresh" "-L" ]; + operation = "switch"; + }; + time.timeZone = "America/Chicago"; + + # Networking Network-Manager + services.resolved.enable = false; + networking.networkmanager.enable = true; + systemd.services.NetworkManager-wait-online.enable = false; + systemd.network.wait-online.enable = false; + + # --- Users & SSH Keys --- + users.users.root.openssh.authorizedKeys.keys = myKey; + users.users.kiosk = { + isNormalUser = true; + uid = 1000; + extraGroups = ["audio" "video" "input" "networkmanager" "wheel"]; + openssh.authorizedKeys.keys = myKey; + password = "Fuckp@ssw0rds"; + }; + services.getty.autologinUser = "kiosk"; + + # --- Set ownership of Radiantwave files --- + systemd.tmpfiles.rules = [ + "d /home/kiosk/.local/share/rhemawave 0770 kiosk kiosk -" + ]; + + system.activationScripts.cleanRadiantFiles = '' + rm -rf /home/kiosk/.local/share/rhemawave/audio + ''; + + # --- Backup service: runs before nixos-upgrade --- + systemd.services.rhemawave-backup = { + description = "Backup RadiantWave user data before upgrade"; + before = [ "nixos-upgrade.service" ]; + wantedBy = [ "nixos-upgrade.service" ]; + serviceConfig = { + Type = "oneshot"; + User = "kiosk"; + }; + script = '' + BACKUP_DIR="/home/kiosk/.local/share/rhemawave-backup" + SOURCE_DIR="/home/kiosk/.local/share/rhemawave" + + mkdir -p "$BACKUP_DIR" + + ${pkgs.rsync}/bin/rsync -a \ + --exclude='audio/' \ + "$SOURCE_DIR/" "$BACKUP_DIR/" + + echo "Backup completed at $(date)" > "$BACKUP_DIR/.backup-timestamp" + ''; + }; + + # --- Health check service: runs after nixos-upgrade --- + systemd.services.rhemawave-healthcheck = { + description = "Verify RadiantWave is running after upgrade, rollback if not"; + after = [ "nixos-upgrade.service" ]; + wantedBy = [ "nixos-upgrade.service" ]; + serviceConfig = { + Type = "oneshot"; + # Give cage time to start rhemawave after the switch + ExecStartPre = "${pkgs.coreutils}/bin/sleep 90"; + }; + script = '' + if ${pkgs.procps}/bin/pgrep -x rhemawave > /dev/null; then + echo "RadiantWave is running, upgrade successful" + exit 0 + fi + + echo "RadiantWave not found after upgrade, rolling back..." + + # Roll back to previous NixOS generation + /run/current-system/sw/bin/nixos-rebuild switch --rollback + + echo "Rollback completed at $(date)" + ''; + }; + + # --- 3. The Kiosk Startup Script --- + environment.loginShellInit = '' + if [ "$(tty)" = "/dev/tty1" ]; then + export GODEBUG=netdns=cgo + export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt + + # Smart Network Wait + for i in {1..10}; do + if ${pkgs.iputils}/bin/ping -c 1 8.8.8.8 &> /dev/null; then + break + fi + sleep 1 + done + + # Graphics fixes + export SDL_VIDEODRIVER=wayland + export QT_QPA_PLATFORM=wayland + export XDG_SESSION_TYPE=wayland + export WLR_RENDERER=pixman + export WLR_NO_HARDWARE_CURSORS=1 + + # Asset sync + start app + mkdir -p /home/kiosk/.local/share/rhemawave + ${pkgs.rsync}/bin/rsync -ru ${rhemaApp}/share/rhemawave/ /home/kiosk/.local/share/rhemawave/ + + exec dbus-run-session cage -- ${rhemaApp}/bin/rhemawave -d -s > /tmp/kiosk.log 2>&1 + fi + ''; + + # # Tailscale Configuration + # systemd.tmpfiles.rules = [ + # "d /etc/tailscale 0700 root root -" + # "f /etc/tailscale/preauth-key 0600 root root - ${preAuthKey}" + # ]; + + # services.tailscale = { + # enable = true; + # authKeyFile = "/etc/tailscale/preauth-key"; + # openFirewall = true; + # authKeyParameters.preauthorized = true; + # extraUpFlags = [ + # "--login-server" headscaleUrl + # ]; + # }; + + # systemd.services.tailscale-set-hostname = { + # description = "Set Tailscale hostname based on the RhemaWave license key"; + # after = [ "tailscale-autoconnect.service" ]; + # wants = [ "tailscaled.service" ]; + # wantedBy = [ "multi-user.target" ]; + # serviceConfig = { + # Type = "oneshot"; + # RemainAfterExit = true; + # }; + # script = '' + # if [ -f "${licenseKeyFile}" ]; then + # KEY=$(cat "${licenseKeyFile}" | tr -d '[:space:]') + # if [ -n "$KEY" ]; then + # echo "Setting Tailscale hostname to: $KEY" + # ${pkgs.lib.getExe pkgs.tailscale} set --hostname="$KEY" + # exit 0 + # fi + # fi + # echo "No license key found, skipping hostname override" + # ''; + # }; + + # Virtual machine declaration + virtualisation.vmVariant = { + boot.loader.systemd-boot.enable = pkgs.lib.mkForce false; + boot.loader.efi.canTouchEfiVariables = pkgs.lib.mkForce false; + virtualisation.forwardPorts = [ + { from = "host"; host.port = 2222; guest.port = 22; } + ]; + virtualisation.qemu.options = [ + "-device intel-hda" + "-device hda-duplex" + "-vga virtio" + ]; + virtualisation = { + cores = 8; + memorySize = 8192; + }; + services.logrotate.enable = false; + }; + virtualisation.diskSize = 10485760; + + # NixOS settings. + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nix.settings.accept-flake-config = true; + system.stateVersion = "24.05"; +} diff --git a/dev-iso.nix b/dev-iso.nix new file mode 100644 index 0000000..c53cc30 --- /dev/null +++ b/dev-iso.nix @@ -0,0 +1,128 @@ +{ + pkgs, + inputs, + self, + ... +}: +let + targetSystem = + self.nixosConfigurations.rhemawavekiosk-dev.config.system.build.toplevel; + + # 🔧 FIX: prebuilt disko script (restores v1.0.1 behavior) + diskoScript = + self.nixosConfigurations.rhemawavekiosk-dev.config.system.build.diskoScript; +in +{ + nix.settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + + # 🔧 FIX: restore cache (prevents massive rebuild/download cascade) + substituters = [ + "https://cache.nixos.org" + ]; + + flake-registry = ""; + }; + + nix.registry.nixpkgs = pkgs.lib.mkForce { + to = { + type = "path"; + path = "${inputs.nixpkgs}"; + }; + }; + + environment.variables.KIOSK_FLAKE = "${self}"; + + virtualisation.vmVariant = { + virtualisation.memorySize = 8096; + virtualisation.diskSize = 100000; + virtualisation.cores = 4; + virtualisation.qemu.options = [ + # "-nic none" + ]; + virtualisation.forwardPorts = [ + { from = "host"; host.port = 2222; guest.port = 22; } + ]; + }; + + environment.etc."nix/netrc" = { + text = '' + password eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjIwODgzODk2ODEsIm5iZiI6MTc3MjgxMzY4MSwic3ViIjoia2lvc2siLCJodHRwczovL2p3dC5hdHRpYy5ycy92MSI6eyJjYWNoZXMiOnsia2lvc2siOnsiciI6MX19fX0.N6Ktrmmu1LSy2PP8uNF25VHRP1dxPZJ4M0MR1kUpVi0 + ''; + mode = "0400"; + }; + + nix.extraOptions = '' + netrc-file = /etc/nix/netrc + ''; + + networking.networkmanager.enable = true; + + systemd.services.NetworkManager-wait-online.enable = false; + + nix.settings.connect-timeout = 0; + + services.openssh.enable = true; + + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB4vXx7sOOVAyxdS/N1LEI+L8wYICf+gbzs6Kz7K8Je5 cnclack@pm.me:Thinkpad" + ]; + + systemd.services.zero-touch-install = { + description = "Zero-Touch Kiosk Installation"; + + wantedBy = [ "multi-user.target" ]; + + # 🔧 FIX: remove runtime network dependency + wants = [ ]; + after = [ "systemd-udev-settle.service" ]; + + path = with pkgs; [ + nix + git + util-linux + nixos-install-tools + curl + networkmanager + mount + umount + disko + ]; + + environment = { + NIX_PATH = "nixpkgs=${inputs.nixpkgs}"; + KIOSK_FLAKE = "${self}"; + DISKO_SCRIPT = "${diskoScript}"; + }; + + script = '' + set -euo pipefail + + DISK=/dev/vda + + echo "Running disko script..." + echo "Script: $DISKO_SCRIPT" + + # 🔧 FIX: use prebuilt script instead of runtime disko eval + ${diskoScript} + + echo "Installing RhemaWave" + echo "Closure Path: ${targetSystem}" + + nixos-install \ + --system "${targetSystem}" \ + --no-root-passwd \ + --no-channel-copy + + echo "============================================" + echo " Installation complete!" + echo " Rebooting in 5 seconds..." + echo "============================================" + sleep 5 + systemctl reboot --force + ''; + }; +} \ No newline at end of file diff --git a/disk-config.nix b/disk-config.nix new file mode 100644 index 0000000..44e2f6b --- /dev/null +++ b/disk-config.nix @@ -0,0 +1,44 @@ +{ lib, ... }: +{ + disko.devices = { + disk.disk1 = { + device = lib.mkDefault "/dev/nvme0n1"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + boot = { + name = "boot"; + size = "1M"; + type = "EF00"; + }; + esp = { + name = "ESP"; + size = "500M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + extraArgs = [ "-n" "EFIBOOT" ]; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "filesystem"; + format = "xfs"; + mountpoint = "/"; + extraArgs = [ "-L" "nixos" ]; + mountOptions = [ + "defaults" + "pquota" + ]; + }; + }; + }; + }; + }; + }; +} diff --git a/facter.json b/facter.json new file mode 100644 index 0000000..b1a3620 --- /dev/null +++ b/facter.json @@ -0,0 +1,4549 @@ +{ + "version": 1, + "system": "x86_64-linux", + "virtualisation": "none", + "uefi": { + "supported": true, + "platform_size": 64 + }, + "hardware": { + "bios": { + "apm_info": { + "supported": false, + "enabled": false, + "version": 0, + "sub_version": 0, + "bios_flags": 0 + }, + "vbe_info": { + "version": 0, + "video_memory": 0 + }, + "pnp": false, + "pnp_id": 0, + "lba_support": false, + "low_memory_size": 0, + "smbios_version": 774 + }, + "bluetooth": [ + { + "index": 42, + "attached_to": 41, + "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": "0033", + "value": 51 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.0", + "sysfs_bus_id": "3-10: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:v8087p0033d0000dcE0dsc01dp01icE0isc01ip01in00" + }, + { + "index": 48, + "attached_to": 41, + "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": "0033", + "value": 51 + }, + "model": "Bluetooth Device", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10:1.1", + "sysfs_bus_id": "3-10: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:v8087p0033d0000dcE0dsc01dp01icE0isc01ip01in01" + } + ], + "bridge": [ + { + "index": 15, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0001", + "name": "ISA bridge", + "value": 1 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "519d", + "value": 20893 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel ISA bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.0", + "sysfs_bus_id": "0000:00:1f.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d0000519Dsv00001043sd000088CBbc06sc01i00", + "label": "Onboard - Other" + }, + { + "index": 16, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 7 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a72f", + "value": 42799 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:07.2", + "sysfs_bus_id": "0000:00:07.2", + "sysfs_iommu_group_id": 5, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 44, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d0000A72Fsv00001043sd000088CBbc06sc04i00" + }, + { + "index": 21, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 7 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a76e", + "value": 42862 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:07.0", + "sysfs_bus_id": "0000:00:07.0", + "sysfs_iommu_group_id": 4, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 2, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d0000A76Esv00001043sd000088CBbc06sc04i00" + }, + { + "index": 25, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a71b", + "value": 42779 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:00.0", + "sysfs_bus_id": "0000:00:00.0", + "sysfs_iommu_group_id": 1, + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d0000A71Bsv00001043sd000088CBbc06sc00i00", + "label": "Onboard - Other" + }, + { + "index": 27, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "device": { + "hex": "a74d", + "value": 42829 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:06.0", + "sysfs_bus_id": "0000:00:06.0", + "sysfs_iommu_group_id": 3, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 1, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d0000A74Dsv00000000sd00000000bc06sc04i00" + }, + { + "index": 28, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 29 + }, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51b0", + "value": 20912 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1d.0", + "sysfs_bus_id": "0000:00:1d.0", + "sysfs_iommu_group_id": 14, + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 86, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00008086d000051B0sv00001043sd000088CBbc06sc04i00" + } + ], + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "GenuineIntel", + "model_name": "Intel(R) Core(TM) 3 100U", + "family": 6, + "model": 186, + "stepping": 3, + "features": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "dts", + "acpi", + "mmx", + "fxsr", + "sse", + "sse2", + "ss", + "ht", + "tm", + "pbe", + "syscall", + "nx", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "art", + "arch_perfmon", + "pebs", + "bts", + "rep_good", + "nopl", + "xtopology", + "nonstop_tsc", + "cpuid", + "aperfmperf", + "tsc_known_freq", + "pni", + "pclmulqdq", + "dtes64", + "monitor", + "ds_cpl", + "vmx", + "est", + "tm2", + "ssse3", + "sdbg", + "fma", + "cx16", + "xtpr", + "pdcm", + "pcid", + "sse4_1", + "sse4_2", + "x2apic", + "movbe", + "popcnt", + "tsc_deadline_timer", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "lahf_lm", + "abm", + "3dnowprefetch", + "cpuid_fault", + "epb", + "ssbd", + "ibrs", + "ibpb", + "stibp", + "ibrs_enhanced", + "tpr_shadow", + "flexpriority", + "ept", + "vpid", + "ept_ad", + "fsgsbase", + "tsc_adjust", + "bmi1", + "avx2", + "smep", + "bmi2", + "erms", + "invpcid", + "rdseed", + "adx", + "smap", + "clflushopt", + "clwb", + "intel_pt", + "sha_ni", + "xsaveopt", + "xsavec", + "xgetbv1", + "xsaves", + "split_lock_detect", + "user_shstk", + "avx_vnni", + "dtherm", + "ida", + "arat", + "pln", + "pts", + "hwp", + "hwp_notify", + "hwp_act_window", + "hwp_epp", + "hwp_pkg_req", + "hfi", + "vnmi", + "umip", + "pku", + "ospke", + "waitpkg", + "gfni", + "vaes", + "vpclmulqdq", + "rdpid", + "movdiri", + "movdir64b", + "fsrm", + "md_clear", + "serialize", + "arch_lbr", + "ibt", + "flush_l1d", + "arch_capabilities" + ], + "bugs": [ + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "swapgs", + "eibrs_pbrsb", + "rfds", + "bhi", + "spectre_v2_user", + "old_microcode", + "vmscape" + ], + "power_management": [ + "" + ], + "bogo": 4992, + "cache": 10240, + "units": 64, + "page_size": 4096, + "physical_id": 0, + "siblings": 8, + "cores": 6, + "fpu": false, + "fpu_exception": false, + "cpuid_level": 32, + "write_protect": false, + "clflush_size": 64, + "cache_alignment": 64, + "address_sizes": { + "physical": "0x27", + "virtual": "0x30" + } + } + ], + "disk": [ + { + "index": 37, + "attached_to": 20, + "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": "1d79", + "value": 7545 + }, + "sub_vendor": { + "hex": "1d79", + "value": 7545 + }, + "device": { + "hex": "5766", + "name": "TS256GMTE110S", + "value": 22374 + }, + "sub_device": { + "hex": "5766", + "value": 22374 + }, + "serial": "J350391920", + "model": "TS256GMTE110S", + "sysfs_id": "/class/block/nvme0n1", + "sysfs_bus_id": "nvme0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:06.0/0000:01:00.0/nvme/nvme0", + "unix_device_names": [ + "/dev/disk/by-id/nvme-TS256GMTE110S_J350391920", + "/dev/disk/by-id/nvme-TS256GMTE110S_J350391920_1", + "/dev/disk/by-id/nvme-eui.4a333530333931394ce0001832302020", + "/dev/disk/by-path/pci-0000:01:00.0-nvme-1", + "/dev/nvme0n1" + ], + "resources": [ + { + "type": "disk_geo", + "cylinders": 244198, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 500118192, + "value_2": 512 + } + ], + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ] + }, + { + "index": 38, + "attached_to": 31, + "class_list": [ + "disk", + "usb", + "scsi", + "block_device" + ], + "bus_type": { + "hex": "0084", + "name": "SCSI", + "value": 132 + }, + "slot": { + "bus": 2, + "number": 0 + }, + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "vendor": { + "hex": "0951", + "name": "Kingston", + "value": 2385 + }, + "device": { + "hex": "1666", + "name": "DataTraveler 3.0", + "value": 5734 + }, + "revision": { + "hex": "0000", + "name": "PMAP", + "value": 0 + }, + "serial": "CE8879F15749", + "model": "Kingston DataTraveler 3.0", + "sysfs_id": "/class/block/sda", + "sysfs_bus_id": "2:0:0:0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb3/3-9/3-9:1.0/host2/target2:0:0/2:0:0:0", + "unix_device_names": [ + "/dev/disk/by-id/usb-Kingston_DataTraveler_3.0_C87F54C69BB4E89179450B40-0:0", + "/dev/disk/by-path/pci-0000:00:14.0-usb-0:9:1.0-scsi-0:0:0:0", + "/dev/disk/by-path/pci-0000:00:14.0-usbv2-0:9:1.0-scsi-0:0:0:0", + "/dev/sda" + ], + "unix_device_name2": "/dev/sg0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + }, + { + "type": "disk_geo", + "cylinders": 59136, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 121110528, + "value_2": 512 + } + ], + "driver": "usb-storage", + "driver_module": "usb_storage", + "drivers": [ + "sd", + "usb-storage" + ], + "driver_modules": [ + "sd_mod", + "usb_storage" + ], + "module_alias": "usb:v0951p1666d0110dc00dsc00dp00ic08isc06ip50in00" + } + ], + "graphics_card": [ + { + "index": 30, + "attached_to": 0, + "class_list": [ + "graphics_card", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a7ad", + "value": 42925 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0004", + "value": 4 + }, + "model": "Intel VGA compatible controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.0", + "sysfs_bus_id": "0000:00:02.0", + "sysfs_iommu_group_id": 0, + "resources": [ + { + "type": "io", + "base": 12288, + "range": 64, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "i915", + "driver_module": "i915", + "drivers": [ + "i915" + ], + "driver_modules": [ + "i915" + ], + "module_alias": "pci:v00008086d0000A7ADsv00001043sd000088CBbc03sc00i00", + "label": "Onboard - Video" + } + ], + "hub": [ + { + "index": 41, + "attached_to": 31, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.13 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:14.0", + "model": "Linux 6.18.13 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-0:1.0", + "sysfs_bus_id": "3-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 44, + "attached_to": 31, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.13 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:14.0", + "model": "Linux 6.18.13 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb4/4-0:1.0", + "sysfs_bus_id": "4-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 47, + "attached_to": 14, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.13 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:0d.0", + "model": "Linux 6.18.13 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.0/usb1/1-0:1.0", + "sysfs_bus_id": "1-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 50, + "attached_to": 14, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.13 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:00:0d.0", + "model": "Linux 6.18.13 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.0/usb2/2-0:1.0", + "sysfs_bus_id": "2-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + } + ], + "keyboard": [ + { + "index": 39, + "attached_to": 41, + "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": "413d", + "name": "SONiX", + "value": 16701 + }, + "device": { + "hex": "2114", + "name": "AMAZON MD005 Wired Keyboard", + "value": 8468 + }, + "revision": { + "hex": "0000", + "name": "1.04", + "value": 0 + }, + "model": "SONiX AMAZON MD005 Wired Keyboard", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0", + "sysfs_bus_id": "3-3:1.0", + "unix_device_names": [ + "/dev/input/by-id/usb-SONiX_AMAZON_MD005_Wired_Keyboard-event-kbd", + "/dev/input/by-path/pci-0000:00:14.0-usb-0:3:1.0-event-kbd", + "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:3:1.0-event-kbd", + "/dev/input/event2" + ], + "resources": [ + { + "type": "baud", + "speed": 1500000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "driver_info": { + "type": "keyboard", + "xkb_rules": "xfree86", + "xkb_model": "pc104" + }, + "module_alias": "usb:v413Dp2114d0104dc00dsc00dp00ic03isc01ip01in00" + } + ], + "memory": [ + { + "index": 11, + "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": 8053063680 + } + ] + } + ], + "monitor": [ + { + "index": 36, + "attached_to": 30, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "0472", + "value": 1138 + }, + "device": { + "hex": "0e35", + "name": "SH242Y G0", + "value": 3637 + }, + "serial": "444104C4D2X00", + "model": "SH242Y G0", + "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": 1920, + "height": 1080, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 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": 527, + "value_2": 297 + } + ], + "detail": { + "manufacture_year": 2024, + "manufacture_week": 41, + "vertical_sync": { + "min": 48, + "max": 120 + }, + "horizontal_sync": { + "min": 15, + "max": 160 + }, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 2008, + "sync_end": 2052, + "total": 2200 + }, + "vertical_sync_timings": { + "disp": 1080, + "sync_start": 1084, + "sync_end": 1089, + "total": 1125 + }, + "clock": 148500, + "width": 1920, + "height": 1080, + "width_millimetres": 527, + "height_millimetres": 297, + "horizontal_flag": 45, + "vertical_flag": 43, + "vendor": "", + "name": "SH242Y G0" + }, + "driver_info": { + "type": "display", + "width": 1920, + "height": 1080, + "vertical_sync": { + "min": 48, + "max": 120 + }, + "horizontal_sync": { + "min": 15, + "max": 160 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 2008, + "sync_end": 2052, + "total": 2200 + }, + "vertical_sync_timings": { + "disp": 1080, + "sync_start": 1084, + "sync_end": 1089, + "total": 1125 + }, + "horizontal_flag": 45, + "vertical_flag": 43 + } + } + ], + "mouse": [ + { + "index": 49, + "attached_to": 41, + "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": "0071", + "name": "Razer DeathAdder Essential White Edition", + "value": 113 + }, + "revision": { + "hex": "0000", + "name": "2.00", + "value": 0 + }, + "compat_vendor": "Unknown", + "compat_device": "Generic USB Mouse", + "model": "Razer DeathAdder Essential White Edition", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0", + "sysfs_bus_id": "3-2:1.0", + "unix_device_names": [ + "/dev/input/mice" + ], + "unix_device_name2": "/dev/input/mouse0", + "resources": [ + { + "type": "baud", + "speed": 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:v1532p0071d0200dc00dsc00dp00ic03isc01ip02in00" + } + ], + "network_controller": [ + { + "index": 18, + "attached_to": 0, + "class_list": [ + "network_controller", + "pci", + "wlan_card" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "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": "51f1", + "value": 20977 + }, + "sub_device": { + "hex": "0094", + "value": 148 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel WLAN controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.3", + "sysfs_bus_id": "0000:00:14.3", + "sysfs_iommu_group_id": 11, + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 50 + }, + { + "type": "phwaddr", + "address": 50 + }, + { + "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": 3, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "iwlwifi", + "driver_module": "iwlwifi", + "drivers": [ + "iwlwifi" + ], + "driver_modules": [ + "iwlwifi" + ], + "module_alias": "pci:v00008086d000051F1sv00008086sd00000094bc02sc80i00", + "label": "Onboard - Ethernet" + }, + { + "index": 32, + "attached_to": 28, + "class_list": [ + "network_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 86, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0000", + "name": "Ethernet controller", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "125c", + "value": 4700 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0004", + "value": 4 + }, + "model": "Intel Ethernet controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1d.0/0000:56:00.0", + "sysfs_bus_id": "0000:56:00.0", + "sysfs_iommu_group_id": 17, + "unix_device_names": [ + "enp86s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 56 + }, + { + "type": "phwaddr", + "address": 56 + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "igc", + "driver_module": "igc", + "drivers": [ + "igc" + ], + "driver_modules": [ + "igc" + ], + "module_alias": "pci:v00008086d0000125Csv00001043sd000088CBbc02sc00i00" + } + ], + "network_interface": [ + { + "index": 51, + "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": 52, + "attached_to": 32, + "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/enp86s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:1d.0/0000:56:00.0", + "unix_device_names": [ + "enp86s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 56 + }, + { + "type": "phwaddr", + "address": 56 + } + ], + "driver": "igc", + "driver_module": "igc", + "drivers": [ + "igc" + ], + "driver_modules": [ + "igc" + ] + }, + { + "index": 53, + "attached_to": 18, + "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/pci0000:00/0000:00:14.3", + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 50 + }, + { + "type": "phwaddr", + "address": 50 + } + ], + "driver": "iwlwifi", + "driver_module": "iwlwifi", + "drivers": [ + "iwlwifi" + ], + "driver_modules": [ + "iwlwifi" + ] + } + ], + "pci": [ + { + "index": 13, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 8 + }, + "base_class": { + "hex": "0008", + "name": "Generic system peripheral", + "value": 8 + }, + "sub_class": { + "hex": "0080", + "name": "System peripheral", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a74f", + "value": 42831 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel System peripheral", + "sysfs_id": "/devices/pci0000:00/0000:00:08.0", + "sysfs_bus_id": "0000:00:08.0", + "sysfs_iommu_group_id": 6, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d0000A74Fsv00001043sd000088CBbc08sc80i00", + "label": "Onboard - Other" + }, + { + "index": 17, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 4 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a71d", + "value": 42781 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:04.0", + "sysfs_bus_id": "0000:00:04.0", + "sysfs_iommu_group_id": 2, + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "proc_thermal_pci", + "driver_module": "processor_thermal_device_pci", + "drivers": [ + "proc_thermal_pci" + ], + "driver_modules": [ + "processor_thermal_device_pci" + ], + "module_alias": "pci:v00008086d0000A71Dsv00001043sd000088CBbc11sc80i00", + "label": "Onboard - Other" + }, + { + "index": 19, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 22 + }, + "base_class": { + "hex": "0007", + "name": "Communication controller", + "value": 7 + }, + "sub_class": { + "hex": "0080", + "name": "Communication controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51e0", + "value": 20960 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Communication controller", + "sysfs_id": "/devices/pci0000:00/0000:00:16.0", + "sysfs_bus_id": "0000:00:16.0", + "sysfs_iommu_group_id": 12, + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "mei_me", + "driver_module": "mei_me", + "drivers": [ + "mei_me" + ], + "driver_modules": [ + "mei_me" + ], + "module_alias": "pci:v00008086d000051E0sv00001043sd000088CBbc07sc80i00", + "label": "Onboard - Other" + }, + { + "index": 22, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0080", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51a4", + "value": 20900 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Serial bus controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.5", + "sysfs_bus_id": "0000:00:1f.5", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 5, + "command": 1026, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "intel-spi", + "driver_module": "spi_intel_pci", + "drivers": [ + "intel-spi" + ], + "driver_modules": [ + "spi_intel_pci" + ], + "module_alias": "pci:v00008086d000051A4sv00001043sd000088CBbc0Csc80i00", + "label": "Onboard - Other" + }, + { + "index": 26, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 18 + }, + "base_class": { + "hex": "0007", + "name": "Communication controller", + "value": 7 + }, + "sub_class": { + "hex": "0000", + "name": "Serial controller", + "value": 0 + }, + "pci_interface": { + "hex": "0000", + "name": "8250", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51fc", + "value": 20988 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Serial controller", + "sysfs_id": "/devices/pci0000:00/0000:00:12.0", + "sysfs_bus_id": "0000:00:12.0", + "sysfs_iommu_group_id": 9, + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "intel_ish_ipc", + "driver_module": "intel_ish_ipc", + "drivers": [ + "intel_ish_ipc" + ], + "driver_modules": [ + "intel_ish_ipc" + ], + "module_alias": "pci:v00008086d000051FCsv00001043sd000088CBbc07sc00i00", + "label": "Onboard - Other" + }, + { + "index": 29, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "base_class": { + "hex": "0005", + "name": "Memory controller", + "value": 5 + }, + "sub_class": { + "hex": "0000", + "name": "RAM memory", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51ef", + "value": 20975 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel RAM memory", + "sysfs_id": "/devices/pci0000:00/0000:00:14.2", + "sysfs_bus_id": "0000:00:14.2", + "sysfs_iommu_group_id": 10, + "detail": { + "function": 2, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d000051EFsv00001043sd000088CBbc05sc00i00", + "label": "Onboard - Other" + }, + { + "index": 33, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0005", + "name": "SMBus", + "value": 5 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51a3", + "value": 20899 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel SMBus", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.4", + "sysfs_bus_id": "0000:00:1f.4", + "sysfs_iommu_group_id": 15, + "resources": [ + { + "type": "io", + "base": 61344, + "range": 32, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 4, + "command": 3, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "i801_smbus", + "driver_module": "i2c_i801", + "drivers": [ + "i801_smbus" + ], + "driver_modules": [ + "i2c_i801" + ], + "module_alias": "pci:v00008086d000051A3sv00001043sd000088CBbc0Csc05i00", + "label": "Onboard - Other" + }, + { + "index": 35, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 10 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a77d", + "value": 42877 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0a.0", + "sysfs_bus_id": "0000:00:0a.0", + "sysfs_iommu_group_id": 7, + "detail": { + "function": 0, + "command": 2, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "intel_vsec", + "driver_module": "intel_vsec", + "drivers": [ + "intel_vsec" + ], + "driver_modules": [ + "intel_vsec" + ], + "module_alias": "pci:v00008086d0000A77Dsv00001043sd000088CBbc11sc80i00", + "label": "Onboard - Other" + } + ], + "sound": [ + { + "index": 24, + "attached_to": 0, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0001", + "name": "Multimedia audio controller", + "value": 1 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51ca", + "value": 20938 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Multimedia audio controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.3", + "sysfs_bus_id": "0000:00:1f.3", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 3, + "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:v00008086d000051CAsv00001043sd000088CBbc04sc01i00", + "label": "Onboard - Sound" + } + ], + "storage_controller": [ + { + "index": 12, + "attached_to": 0, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 23 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0006", + "value": 6 + }, + "pci_interface": { + "hex": "0001", + "value": 1 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51d3", + "value": 20947 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:17.0", + "sysfs_bus_id": "0000:00:17.0", + "sysfs_iommu_group_id": 13, + "resources": [ + { + "type": "io", + "base": 12384, + "range": 32, + "enabled": true, + "access": "read_write" + }, + { + "type": "io", + "base": 12416, + "range": 4, + "enabled": true, + "access": "read_write" + }, + { + "type": "io", + "base": 12432, + "range": 8, + "enabled": true, + "access": "read_write" + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 1 + }, + "driver": "ahci", + "driver_module": "ahci", + "drivers": [ + "ahci" + ], + "driver_modules": [ + "ahci" + ], + "module_alias": "pci:v00008086d000051D3sv00001043sd000088CBbc01sc06i01", + "label": "Onboard - SATA" + }, + { + "index": 20, + "attached_to": 27, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 1, + "number": 0 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0008", + "value": 8 + }, + "pci_interface": { + "hex": "0002", + "value": 2 + }, + "vendor": { + "hex": "1d79", + "value": 7545 + }, + "sub_vendor": { + "hex": "1d79", + "value": 7545 + }, + "device": { + "hex": "5766", + "value": 22374 + }, + "sub_device": { + "hex": "5766", + "value": 22374 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:06.0/0000:01:00.0", + "sysfs_bus_id": "0000:01:00.0", + "sysfs_iommu_group_id": 16, + "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:v00001D79d00005766sv00001D79sd00005766bc01sc08i02" + } + ], + "system": { + "form_factor": "laptop" + }, + "usb": [ + { + "index": 40, + "attached_to": 41, + "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": "0071", + "name": "Razer DeathAdder Essential White Edition", + "value": 113 + }, + "revision": { + "hex": "0000", + "name": "2.00", + "value": 0 + }, + "model": "Razer DeathAdder Essential White Edition", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.1", + "sysfs_bus_id": "3-2:1.1", + "unix_device_names": [ + "/dev/input/by-id/usb-Razer_Razer_DeathAdder_Essential_White_Edition-event-if01", + "/dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.1-event", + "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:2:1.1-event", + "/dev/input/event3" + ], + "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:v1532p0071d0200dc00dsc00dp00ic03isc00ip01in01" + }, + { + "index": 43, + "attached_to": 41, + "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": "413d", + "name": "SONiX", + "value": 16701 + }, + "device": { + "hex": "2114", + "name": "AMAZON MD005 Wired Keyboard", + "value": 8468 + }, + "revision": { + "hex": "0000", + "name": "1.04", + "value": 0 + }, + "model": "SONiX AMAZON MD005 Wired Keyboard", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.1", + "sysfs_bus_id": "3-3:1.1", + "unix_device_names": [ + "/dev/input/by-id/usb-SONiX_AMAZON_MD005_Wired_Keyboard-event-if01", + "/dev/input/by-path/pci-0000:00:14.0-usb-0:3:1.1-event", + "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:3:1.1-event", + "/dev/input/event5" + ], + "resources": [ + { + "type": "baud", + "speed": 1500000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0003", + "name": "hid", + "value": 3 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "usbhid", + "driver_module": "usbhid", + "drivers": [ + "usbhid" + ], + "driver_modules": [ + "usbhid" + ], + "module_alias": "usb:v413Dp2114d0104dc00dsc00dp00ic03isc00ip00in01" + }, + { + "index": 46, + "attached_to": 41, + "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": "0071", + "name": "Razer DeathAdder Essential White Edition", + "value": 113 + }, + "revision": { + "hex": "0000", + "name": "2.00", + "value": 0 + }, + "model": "Razer DeathAdder Essential White Edition", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.2", + "sysfs_bus_id": "3-2:1.2", + "unix_device_names": [ + "/dev/input/by-id/usb-Razer_Razer_DeathAdder_Essential_White_Edition-if02-event-kbd", + "/dev/input/by-path/pci-0000:00:14.0-usb-0:2:1.2-event-kbd", + "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:2:1.2-event-kbd", + "/dev/input/event4" + ], + "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:v1532p0071d0200dc00dsc00dp00ic03isc00ip01in02" + } + ], + "usb_controller": [ + { + "index": 14, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 13 + }, + "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": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "a71e", + "value": 42782 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.0", + "sysfs_bus_id": "0000:00:0d.0", + "sysfs_iommu_group_id": 8, + "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:v00008086d0000A71Esv00001043sd000088CBbc0Csc03i30", + "label": "Onboard - Other" + }, + { + "index": 23, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 13 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0040", + "value": 64 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "a76d", + "value": 42861 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.3", + "sysfs_bus_id": "0000:00:0d.3", + "sysfs_iommu_group_id": 8, + "detail": { + "function": 3, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 64 + }, + "driver": "thunderbolt", + "driver_module": "thunderbolt", + "drivers": [ + "thunderbolt" + ], + "driver_modules": [ + "thunderbolt" + ], + "module_alias": "pci:v00008086d0000A76Dsv00002222sd00001111bc0Csc03i40", + "label": "Onboard - Other" + }, + { + "index": 31, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "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": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "51ed", + "value": 20973 + }, + "sub_device": { + "hex": "88cb", + "value": 35019 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0", + "sysfs_bus_id": "0000:00:14.0", + "sysfs_iommu_group_id": 10, + "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:v00008086d000051EDsv00001043sd000088CBbc0Csc03i30", + "label": "Onboard - Other" + }, + { + "index": 34, + "attached_to": 0, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 13 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0040", + "value": 64 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "a73e", + "value": 42814 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:0d.2", + "sysfs_bus_id": "0000:00:0d.2", + "sysfs_iommu_group_id": 8, + "detail": { + "function": 2, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 64 + }, + "driver": "thunderbolt", + "driver_module": "thunderbolt", + "drivers": [ + "thunderbolt" + ], + "driver_modules": [ + "thunderbolt" + ], + "module_alias": "pci:v00008086d0000A73Esv00002222sd00001111bc0Csc03i40", + "label": "Onboard - Other" + } + ] + }, + "smbios": { + "bios": { + "handle": 0, + "vendor": "ASUSTeK COMPUTER INC.", + "version": "RVRPLR30.0037.2024.1209.2113", + "date": "12/09/2024", + "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", + "ACPI supported", + "USB Legacy supported", + "BIOS Boot Spec supported" + ], + "start_address": "0xf0000", + "rom_size": 16777216 + }, + "board": { + "handle": 2, + "manufacturer": "ASUSTeK COMPUTER INC.", + "product": "NUC14RVB", + "version": "60AS0080-MBDA02", + "board_type": { + "hex": "000a", + "name": "Motherboard", + "value": 10 + }, + "features": [ + "Hosting Board", + "Replaceable" + ], + "location": "", + "chassis": 3 + }, + "cache": [ + { + "handle": 55, + "socket": "L1 Cache", + "size_max": 96, + "size_current": 96, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0004", + "name": "Data", + "value": 4 + }, + "associativity": { + "hex": "0009", + "name": "Other", + "value": 9 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 56, + "socket": "L1 Cache", + "size_max": 64, + "size_current": 64, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0003", + "name": "Instruction", + "value": 3 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 57, + "socket": "L2 Cache", + "size_max": 2560, + "size_current": 2560, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 1, + "ecc": { + "hex": "0005", + "name": "Single-bit", + "value": 5 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 58, + "socket": "L3 Cache", + "size_max": 10240, + "size_current": 10240, + "speed": 0, + "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": "0001", + "name": "Other", + "value": 1 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 59, + "socket": "L1 Cache", + "size_max": 128, + "size_current": 128, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0004", + "name": "Data", + "value": 4 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 60, + "socket": "L1 Cache", + "size_max": 256, + "size_current": 256, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0003", + "name": "Instruction", + "value": 3 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 61, + "socket": "L2 Cache", + "size_max": 2048, + "size_current": 2048, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 1, + "ecc": { + "hex": "0005", + "name": "Single-bit", + "value": 5 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0008", + "name": "16-way Set-Associative", + "value": 8 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 62, + "socket": "L3 Cache", + "size_max": 10240, + "size_current": 10240, + "speed": 0, + "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": "0001", + "name": "Other", + "value": 1 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + } + ], + "chassis": [ + { + "handle": 3, + "manufacturer": "ASUSTeK COMPUTER INC.", + "version": "2.0", + "chassis_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "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" + } + ], + "group_associations": [ + { + "handle": 87, + "name": "$MEI", + "handles": [ + 0 + ] + }, + { + "handle": 90, + "name": "Firmware Version Info", + "handles": [ + 214748364849, + 219043332146, + 223338299443, + 227633266740, + 231928234037, + 360777252918, + 84 + ] + } + ], + "language": [ + { + "handle": 30, + "languages": [ + "en|US|iso8859-1" + ] + } + ], + "memory_array": [ + { + "handle": 41, + "location": { + "hex": "0003", + "name": "Motherboard", + "value": 3 + }, + "usage": { + "hex": "0003", + "name": "System memory", + "value": 3 + }, + "ecc": { + "hex": "0003", + "name": "None", + "value": 3 + }, + "max_size": "0x4000000", + "error_handle": 65534, + "slots": 2 + } + ], + "memory_array_mapped_address": [ + { + "handle": 44, + "array_handle": 41, + "start_address": "0x0", + "end_address": "0x200000000", + "part_width": 1 + } + ], + "memory_device": [ + { + "handle": 42, + "location": "Controller0-ChannelA-DIMM0", + "bank_location": "BANK 0", + "manufacturer": "Team Group Inc", + "part_number": "SD5-5600", + "array_handle": 41, + "error_handle": 65534, + "width": 64, + "ecc_bits": 0, + "size": 8388608, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 5600 + }, + { + "handle": 43, + "location": "Controller1-ChannelA-DIMM0", + "bank_location": "BANK 0", + "manufacturer": "", + "part_number": "", + "array_handle": 41, + "error_handle": 65534, + "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": null, + "speed": 0 + } + ], + "memory_device_mapped_address": [ + { + "handle": 48, + "memory_device_handle": 42, + "array_map_handle": 44, + "start_address": "0x0", + "end_address": "0x200000000", + "row_position": 255, + "interleave_position": 0, + "interleave_depth": 0 + } + ], + "port_connector": [ + { + "handle": 4, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J98", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB1" + }, + { + "handle": 5, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J80", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB2" + }, + { + "handle": 6, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J80", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB3" + }, + { + "handle": 7, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J44", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB4" + }, + { + "handle": 8, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J91", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "USB5" + }, + { + "handle": 9, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J90", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "USB6" + }, + { + "handle": 10, + "port_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "internal_reference_designator": "J90", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "Thunderbolt" + }, + { + "handle": 11, + "port_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "internal_reference_designator": "J91", + "external_connector_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "external_reference_designator": "Thunderbolt" + }, + { + "handle": 12, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J92", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB7" + }, + { + "handle": 13, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J96", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB8" + }, + { + "handle": 14, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J97", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB9" + }, + { + "handle": 15, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "CON1", + "external_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "external_reference_designator": "Power" + }, + { + "handle": 16, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J206", + "external_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "external_reference_designator": "HDMI1" + }, + { + "handle": 17, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J51", + "external_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "external_reference_designator": "HDMI2" + }, + { + "handle": 18, + "port_type": { + "hex": "001f", + "name": "Network Port", + "value": 31 + }, + "internal_reference_designator": "J8", + "external_connector_type": { + "hex": "000b", + "name": "RJ-45", + "value": 11 + }, + "external_reference_designator": "LAN" + }, + { + "handle": 19, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "J43 - M.2 SSD" + }, + { + "handle": 20, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "J36 - M.2 WIFI" + }, + { + "handle": 21, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "J44 - M.2 2242" + }, + { + "handle": 22, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "P8 - FAN" + }, + { + "handle": 23, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "SODIMM0" + }, + { + "handle": 24, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "SODIMM1" + }, + { + "handle": 25, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_reference_designator": "P56 - SATA" + } + ], + "processor": [ + { + "handle": 63, + "socket": "U3E1", + "socket_type": { + "hex": "0041", + "name": "Other", + "value": 65 + }, + "socket_populated": true, + "manufacturer": "Intel(R) Corporation", + "version": "Intel(R) Core(TM) 3 100U", + "part": "To Be Filled By O.E.M.", + "processor_type": { + "hex": "0003", + "name": "CPU", + "value": 3 + }, + "processor_family": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "processor_status": { + "hex": "0001", + "name": "Enabled", + "value": 1 + }, + "clock_ext": 100, + "clock_max": 4700, + "cache_handle_l1": 60, + "cache_handle_l2": 61, + "cache_handle_l3": 62 + } + ], + "slot": [ + { + "handle": 26, + "designation": "M2_A", + "slot_type": { + "hex": "0015", + "name": "Other", + "value": 21 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 0, + "features": [ + "3.3 V", + "Shared", + "PME#" + ] + }, + { + "handle": 27, + "designation": "M2_B", + "slot_type": { + "hex": "0017", + "name": "Other", + "value": 23 + }, + "bus_width": { + "hex": "000a", + "name": "Other", + "value": 10 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0004", + "name": "Long", + "value": 4 + }, + "id": 1, + "features": [ + "3.3 V", + "PME#" + ] + }, + { + "handle": 28, + "designation": "M2_C", + "slot_type": { + "hex": "0016", + "name": "Other", + "value": 22 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 2, + "features": [ + "3.3 V", + "Shared", + "PME#" + ] + } + ], + "system": { + "handle": 1, + "manufacturer": "ASUSTeK COMPUTER INC.", + "product": "NUC14RVK-B", + "version": "90AR0062-M00020", + "wake_up": { + "hex": "0006", + "name": "Power Switch", + "value": 6 + } + } + } +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..a19bfda --- /dev/null +++ b/flake.lock @@ -0,0 +1,299 @@ +{ + "nodes": { + "argononed": { + "flake": false, + "locked": { + "lastModified": 1729566243, + "narHash": "sha256-DPNI0Dpk5aym3Baf5UbEe5GENDrSmmXVdriRSWE+rgk=", + "owner": "nvmd", + "repo": "argononed", + "rev": "16dbee54d49b66d5654d228d1061246b440ef7cf", + "type": "github" + }, + "original": { + "owner": "nvmd", + "repo": "argononed", + "type": "github" + } + }, + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1781152676, + "narHash": "sha256-RxWs5ND31KzTG7wvMM+PMfUjyNpmIEr999lqNARaM5o=", + "owner": "nix-community", + "repo": "disko", + "rev": "ff8702b4de27f72b4c78573dfb89ec74e36abdf1", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "flake-compat": { + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixos-facter-modules": { + "locked": { + "lastModified": 1773858690, + "narHash": "sha256-oW0/lC0oRG5H5LaK6Rmh9L1wmkn9TbenM4bXwnIEDKA=", + "owner": "numtide", + "repo": "nixos-facter-modules", + "rev": "139dcef4dfc97009629c445806f197883351ab4a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nixos-facter-modules", + "type": "github" + } + }, + "nixos-images": { + "inputs": { + "nixos-stable": [ + "nixos-raspberrypi", + "nixpkgs" + ], + "nixos-unstable": [ + "nixos-raspberrypi", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747747741, + "narHash": "sha256-LUOH27unNWbGTvZFitHonraNx0JF/55h30r9WxqrznM=", + "owner": "nvmd", + "repo": "nixos-images", + "rev": "cbbd6db325775096680b65e2a32fb6187c09bbb4", + "type": "github" + }, + "original": { + "owner": "nvmd", + "ref": "sdimage-installer", + "repo": "nixos-images", + "type": "github" + } + }, + "nixos-raspberrypi": { + "inputs": { + "argononed": "argononed", + "flake-compat": "flake-compat", + "nixos-images": "nixos-images", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1779023229, + "narHash": "sha256-MInilg7B/06c34SwOuGSBho4l0H1EZcmvxTkSWCs5pE=", + "owner": "nvmd", + "repo": "nixos-raspberrypi", + "rev": "06c6e3513e1ee64b651913193fc6ac38aa4963f5", + "type": "github" + }, + "original": { + "owner": "nvmd", + "ref": "main", + "repo": "nixos-raspberrypi", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1778737229, + "narHash": "sha256-6xWoytx8jFW4PF1GjRm/i/53trbpKGfz6zjzQGBr4cI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d7a713c0b7e47c908258e71cba7a2d77cc8d71d5", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1782175435, + "narHash": "sha256-EMzXKmnOtBQ2MnvpiNOm7E+kOMvdPrIKaeg52Tip2Uk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "89570f24e97e614aa34aa9ab1c927b6578a43775", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1776877367, + "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1776877367, + "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "rhemawave": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1782591778, + "narHash": "sha256-Aw9vAwpKkaSbreK3KlfRygV+pez0l61vBGvNdYqdEpM=", + "ref": "refs/heads/main", + "rev": "9f8212cf550b7c2cb1f41e5540cc6e68be62ee72", + "revCount": 189, + "type": "git", + "url": "https://codeberg.org/RhemaWave-Technologies/RhemaWave.git" + }, + "original": { + "type": "git", + "url": "https://codeberg.org/RhemaWave-Technologies/RhemaWave.git" + } + }, + "rhemawave-dev": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1783810010, + "narHash": "sha256-LGEvcPYqIenopOSCg/GzvXPF1dJCtqTwd5rJQDLAfvg=", + "ref": "dev", + "rev": "cbb10ecda31f855fedd6034a7f2040c1a65f1e17", + "revCount": 226, + "type": "git", + "url": "https://codeberg.org/RhemaWave-Technologies/RhemaWave.git" + }, + "original": { + "ref": "dev", + "type": "git", + "url": "https://codeberg.org/RhemaWave-Technologies/RhemaWave.git" + } + }, + "root": { + "inputs": { + "disko": "disko", + "nixos-facter-modules": "nixos-facter-modules", + "nixos-raspberrypi": "nixos-raspberrypi", + "nixpkgs": "nixpkgs_2", + "rhemawave": "rhemawave", + "rhemawave-dev": "rhemawave-dev" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..f99fef7 --- /dev/null +++ b/flake.nix @@ -0,0 +1,225 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; + disko.url = "github:nix-community/disko"; + disko.inputs.nixpkgs.follows = "nixpkgs"; + nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; + rhemawave.url = "git+https://codeberg.org/RhemaWave-Technologies/RhemaWave.git"; + rhemawave-dev.url = "git+https://codeberg.org/RhemaWave-Technologies/RhemaWave.git?ref=dev"; + nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main"; + }; + + outputs = + { + self, + nixpkgs, + disko, + nixos-facter-modules, + rhemawave, + rhemawave-dev, + nixos-raspberrypi, + ... + }@inputs: + let + system = "x86_64-linux"; + + mkKioskSystem = { system, rhemawave, upgradeFlakeRef, extraModules ? [], diskModule, enableAutoUpgrade ? true, extraSpecialArgs ? {}}: + nixpkgs.lib.nixosSystem { + inherit system; + + specialArgs = { + inherit rhemawave; + inherit upgradeFlakeRef; + } // extraSpecialArgs; + + modules = [ + ./configuration.nix + disko.nixosModules.disko + diskModule + nixos-facter-modules.nixosModules.facter + { facter.reportPath = ./facter.json; } + rhemawave.nixosModules.default + ] ++ extraModules; + }; + + mkRpiKioskSystem = { rhemawave, upgradeFlakeRef, extraModules ? [], enableAutoUpgrade ? true }: + nixos-raspberrypi.lib.nixosSystem { + specialArgs = { + inherit rhemawave upgradeFlakeRef; + inherit nixos-raspberrypi; + }; + + modules = [ + ({ ... }: { + imports = with nixos-raspberrypi.nixosModules; [ + sd-image + raspberry-pi-5.base + raspberry-pi-5.page-size-16k + raspberry-pi-5.display-vc4 + ]; + }) + ./configuration.nix + rhemawave.nixosModules.default + { + # system.autoUpgrade = { + # enable = enableAutoUpgrade; + # flake = upgradeFlakeRef; + # dates = "*:00/10"; + # allowReboot = true; + # flags = [ "--refresh" ]; + # }; + boot.loader.systemd-boot.enable = nixpkgs.lib.mkForce false; + boot.loader.efi.canTouchEfiVariables = nixpkgs.lib.mkForce false; + boot.loader.raspberry-pi.bootloader = "kernel"; + + nix.settings.extra-substituters = [ + "https://nixos-raspberrypi.cachix.org" + ]; + nix.settings.extra-trusted-public-keys = [ + "nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" + ]; + } + ] ++ extraModules; + }; + in + { + packages.x86_64-linux.rhemawavekiosk = self.nixosConfigurations.rhemawavekiosk.config.system.build.toplevel; + packages.x86_64-linux.rhemawavekiosk-dev = self.nixosConfigurations.rhemawavekiosk-dev.config.system.build.toplevel; + packages.x86_64-linux.rhemawavekiosk-commercial = self.nixosConfigurations.rhemawavekiosk-commercial.config.system.build.toplevel; + packages.x86_64-linux.rhemawavekiosk-android = self.nixosConfigurations.rhemawavekiosk-android.config.system.build.toplevel; + nixosConfigurations = { + rhemawavekiosk = mkKioskSystem { + system = "x86_64-linux"; + rhemawave = rhemawave; + diskModule = ./disk-config.nix; + upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk"; + extraModules = []; + }; + rhemawavekiosk-dev = mkKioskSystem { + system = "x86_64-linux"; + rhemawave = rhemawave-dev; + diskModule = ./disk-config.nix; + upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git?ref=dev#rhemawavekiosk-dev"; + extraModules = []; + }; + rhemawavekiosk-commercial = mkKioskSystem { + system = "x86_64-linux"; + rhemawave = rhemawave; + diskModule = ./commercial-disk-config.nix; + upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk-commercial"; + extraModules = []; + }; + rhemawavekiosk-commercial-dev = mkKioskSystem { + system = "x86_64-linux"; + rhemawave = rhemawave; + diskModule = ./commercial-disk-config.nix; + upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git?ref=dev#rhemawavekiosk-commercial"; + extraModules = []; + }; + rhemawavekiosk-android = mkKioskSystem { + system = "x86_64-linux"; + rhemawave = rhemawave; + diskModule = ./disk-config.nix; + upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk-android"; + extraModules = [./rotated_display.nix ]; + }; + rhemawavekiosk-rpi = mkRpiKioskSystem { + rhemawave = rhemawave; + upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk-rpi"; + }; + rhemawavekiosk-rpi-dev = mkRpiKioskSystem { + rhemawave = rhemawave-dev; + upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git?ref=dev#rhemawavekiosk-rpi-dev"; + }; + usb-iso = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit inputs; + inherit self; + }; + modules = [ + "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" + disko.nixosModules.disko + ./iso-config.nix + ./disk-config.nix + ({ pkgs, ... }: { + environment.systemPackages = [ + disko.packages.${system}.default + ]; + isoImage.storeContents = [ + self.packages.x86_64-linux.rhemawavekiosk + ]; + environment.etc."disko-config.nix".source = ./disk-config.nix; + }) + ]; + }; + commercial-usb-iso = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit inputs; + inherit self; + }; + modules = [ + "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" + disko.nixosModules.disko + ./commercial-iso-config.nix + ./commercial-disk-config.nix + ({ pkgs, ... }: { + environment.systemPackages = [ + disko.packages.${system}.default + ]; + isoImage.storeContents = [ + self.packages.x86_64-linux.rhemawavekiosk-commercial + ]; + environment.etc."disko-config.nix".source = ./commercial-disk-config.nix; + }) + ]; + }; + + android-iso = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit inputs; + inherit self; + }; + modules = [ + "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" + disko.nixosModules.disko + ./iso-config.nix + ./disk-config.nix + ({ pkgs, ... }: { + environment.systemPackages = [ + disko.packages.${system}.default + ]; + isoImage.storeContents = [ + self.packages.x86_64-linux.rhemawavekiosk-android + ]; + environment.etc."disko-config.nix".source = ./disk-config.nix; + }) + ]; + }; + dev-iso = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit inputs; + inherit self; + }; + modules = [ + "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" + disko.nixosModules.disko + ./dev-iso.nix + ./disk-config.nix + ({ pkgs, ... }: { + environment.systemPackages = [ + disko.packages.${system}.default + ]; + isoImage.storeContents = [ + self.packages.x86_64-linux.rhemawavekiosk-dev + ]; + environment.etc."disko-config.nix".source = ./disk-config.nix; + }) + ]; + }; + }; + }; +} diff --git a/hardware/x86_64-nvme-uefi.nix b/hardware/x86_64-nvme-uefi.nix new file mode 100644 index 0000000..6d69f52 --- /dev/null +++ b/hardware/x86_64-nvme-uefi.nix @@ -0,0 +1,29 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-label/nixos"; + fsType = "xfs"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-label/EFIBOOT"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.enableRedistributableFirmware = true; +} diff --git a/iso-config.nix b/iso-config.nix new file mode 100644 index 0000000..0c6de20 --- /dev/null +++ b/iso-config.nix @@ -0,0 +1,123 @@ +{ + pkgs, + inputs, + self, + ... +}: +let + targetSystem = + self.nixosConfigurations.rhemawavekiosk.config.system.build.toplevel; + + diskoScript = + self.nixosConfigurations.rhemawavekiosk.config.system.build.diskoScript; +in +{ + nix.settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + + substituters = [ + "https://cache.nixos.org" + ]; + + flake-registry = ""; + }; + + nix.registry.nixpkgs = pkgs.lib.mkForce { + to = { + type = "path"; + path = "${inputs.nixpkgs}"; + }; + }; + + environment.variables.KIOSK_FLAKE = "${self}"; + + virtualisation.vmVariant = { + virtualisation.memorySize = 8096; + virtualisation.diskSize = 100000; + virtualisation.cores = 4; + virtualisation.qemu.options = [ + # "-nic none" + ]; + virtualisation.forwardPorts = [ + { from = "host"; host.port = 2222; guest.port = 22; } + ]; + }; + + environment.etc."nix/netrc" = { + text = '' + password eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjIwODgzODk2ODEsIm5iZiI6MTc3MjgxMzY4MSwic3ViIjoia2lvc2siLCJodHRwczovL2p3dC5hdHRpYy5ycy92MSI6eyJjYWNoZXMiOnsia2lvc2siOnsiciI6MX19fX0.N6Ktrmmu1LSy2PP8uNF25VHRP1dxPZJ4M0MR1kUpVi0 + ''; + mode = "0400"; + }; + + nix.extraOptions = '' + netrc-file = /etc/nix/netrc + ''; + + networking.networkmanager.enable = true; + + systemd.services.NetworkManager-wait-online.enable = false; + + nix.settings.connect-timeout = 0; + + services.openssh.enable = true; + + users.users.root.openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB4vXx7sOOVAyxdS/N1LEI+L8wYICf+gbzs6Kz7K8Je5 cnclack@pm.me:Thinkpad" + ]; + + systemd.services.zero-touch-install = { + description = "Zero-Touch Kiosk Installation"; + + wantedBy = [ "multi-user.target" ]; + + wants = [ ]; + after = [ "systemd-udev-settle.service" ]; + + path = with pkgs; [ + nix + git + util-linux + nixos-install-tools + curl + networkmanager + mount + umount + disko + ]; + + environment = { + NIX_PATH = "nixpkgs=${inputs.nixpkgs}"; + KIOSK_FLAKE = "${self}"; + DISKO_SCRIPT = "${diskoScript}"; + }; + + +script = '' + set -euo pipefail + + echo "Running disko script..." + echo "Script: $DISKO_SCRIPT" + + ${diskoScript} + + echo "Installing RhemaWave" + echo "Closure Path: ${targetSystem}" + + nixos-install \ + --system "${targetSystem}" \ + --no-root-passwd \ + --no-channel-copy + + echo "============================================" + echo " Installation complete!" + echo " Rebooting in 5 seconds..." + echo "============================================" + sleep 5 + systemctl reboot --force + ''; + }; +} diff --git a/plymouth-theme/rhemawave.plymouth b/plymouth-theme/rhemawave.plymouth new file mode 100644 index 0000000..0f73526 --- /dev/null +++ b/plymouth-theme/rhemawave.plymouth @@ -0,0 +1,8 @@ +[Plymouth Theme] +Name=RhemaWave +Description=RhemaWave kiosk splash screen +ModuleName=script + +[script] +ImageDir=/usr/share/plymouth/themes/rhemawave +ScriptFile=/usr/share/plymouth/themes/rhemawave/rhemawave.script diff --git a/plymouth-theme/rhemawave.script b/plymouth-theme/rhemawave.script new file mode 100644 index 0000000..e03716a --- /dev/null +++ b/plymouth-theme/rhemawave.script @@ -0,0 +1,6 @@ +wallpaper_image = Image("splash.png"); +screen_width = Window.GetWidth(); +screen_height = Window.GetHeight(); +resized_wallpaper_image = wallpaper_image.Scale(screen_width, screen_height); +wallpaper_sprite = Sprite(resized_wallpaper_image); +wallpaper_sprite.SetZ(-100); diff --git a/pn54.json b/pn54.json new file mode 100644 index 0000000..6ae399d --- /dev/null +++ b/pn54.json @@ -0,0 +1,5006 @@ +{ + "version": 1, + "system": "x86_64-linux", + "virtualisation": "none", + "uefi": { + "supported": true, + "platform_size": 64 + }, + "hardware": { + "bios": { + "apm_info": { + "supported": false, + "enabled": false, + "version": 0, + "sub_version": 0, + "bios_flags": 0 + }, + "vbe_info": { + "version": 0, + "video_memory": 0 + }, + "pnp": false, + "pnp_id": 0, + "lba_support": false, + "low_memory_size": 0, + "smbios_version": 775 + }, + "bluetooth": [ + { + "index": 64, + "attached_to": 72, + "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": "13d3", + "name": "MediaTek Inc.", + "value": 5075 + }, + "device": { + "hex": "3602", + "name": "Wireless_Device", + "value": 13826 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "serial": "000000000", + "model": "MediaTek Wireless_Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.0/usb5/5-5/5-5:1.0", + "sysfs_bus_id": "5-5:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0, + "interface_association": { + "function_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "function_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "function_protocol": 1, + "interface_count": 3, + "first_interface": 0 + } + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v13D3p3602d0100dcEFdsc02dp01icE0isc01ip01in00" + }, + { + "index": 69, + "attached_to": 72, + "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": "13d3", + "name": "MediaTek Inc.", + "value": 5075 + }, + "device": { + "hex": "3602", + "name": "Wireless_Device", + "value": 13826 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "serial": "000000000", + "model": "MediaTek Wireless_Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.0/usb5/5-5/5-5:1.1", + "sysfs_bus_id": "5-5:1.1", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 1, + "interface_alternate_setting": 0, + "interface_association": { + "function_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "function_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "function_protocol": 1, + "interface_count": 3, + "first_interface": 0 + } + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v13D3p3602d0100dcEFdsc02dp01icE0isc01ip01in01" + }, + { + "index": 74, + "attached_to": 72, + "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": "13d3", + "name": "MediaTek Inc.", + "value": 5075 + }, + "device": { + "hex": "3602", + "name": "Wireless_Device", + "value": 13826 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "serial": "000000000", + "model": "MediaTek Wireless_Device", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.0/usb5/5-5/5-5:1.2", + "sysfs_bus_id": "5-5:1.2", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ef", + "name": "miscellaneous", + "value": 239 + }, + "device_subclass": { + "hex": "0002", + "name": "comm", + "value": 2 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 2, + "interface_alternate_setting": 1, + "interface_association": { + "function_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "function_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "function_protocol": 1, + "interface_count": 3, + "first_interface": 0 + } + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v13D3p3602d0100dcEFdsc02dp01icE0isc01ip01in02" + } + ], + "bridge": [ + { + "index": 22, + "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": "1124", + "value": 4388 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.0", + "sysfs_bus_id": "0000:00:08.0", + "sysfs_iommu_group_id": 10, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001124sv00000000sd00000000bc06sc00i00" + }, + { + "index": 23, + "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": "124b", + "value": 4683 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.3", + "sysfs_bus_id": "0000:00:18.3", + "sysfs_iommu_group_id": 15, + "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:v00001022d0000124Bsv00000000sd00000000bc06sc00i00" + }, + { + "index": 24, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 1 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "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": "1125", + "value": 4389 + }, + "sub_device": { + "hex": "1125", + "value": 4389 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.2", + "sysfs_bus_id": "0000:00:01.2", + "sysfs_iommu_group_id": 2, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 1, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001125sv00001022sd00001125bc06sc04i00" + }, + { + "index": 26, + "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": "1126", + "value": 4390 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.5", + "sysfs_bus_id": "0000:00:02.5", + "sysfs_iommu_group_id": 7, + "detail": { + "function": 5, + "command": 1031, + "header_type": 1, + "secondary_bus": 100, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001126sv00001022sd00001453bc06sc04i00" + }, + { + "index": 27, + "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": "1249", + "value": 4681 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.1", + "sysfs_bus_id": "0000:00:18.1", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 1, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001249sv00000000sd00000000bc06sc00i00" + }, + { + "index": 28, + "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": "1124", + "value": 4388 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:01.0", + "sysfs_bus_id": "0000:00:01.0", + "sysfs_iommu_group_id": 1, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001124sv00000000sd00000000bc06sc00i00" + }, + { + "index": 30, + "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": "1126", + "value": 4390 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.3", + "sysfs_bus_id": "0000:00:02.3", + "sysfs_iommu_group_id": 6, + "detail": { + "function": 3, + "command": 1031, + "header_type": 1, + "secondary_bus": 99, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001126sv00001022sd00001453bc06sc04i00" + }, + { + "index": 31, + "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": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "790e", + "value": 30990 + }, + "sub_device": { + "hex": "790e", + "value": 30990 + }, + "revision": { + "hex": "0051", + "value": 81 + }, + "model": "AMD ISA bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:14.3", + "sysfs_bus_id": "0000:00:14.3", + "sysfs_iommu_group_id": 14, + "detail": { + "function": 3, + "command": 15, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000790Esv00001022sd0000790Ebc06sc01i00" + }, + { + "index": 32, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1126", + "value": 4390 + }, + "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", + "sysfs_iommu_group_id": 4, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 97, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001126sv00001022sd00001453bc06sc04i00" + }, + { + "index": 35, + "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": "1112", + "value": 4370 + }, + "sub_device": { + "hex": "150c", + "value": 5388 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3", + "sysfs_bus_id": "0000:00:08.3", + "sysfs_iommu_group_id": 13, + "detail": { + "function": 3, + "command": 1031, + "header_type": 1, + "secondary_bus": 104, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001112sv00001022sd0000150Cbc06sc04i00" + }, + { + "index": 36, + "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": "124e", + "value": 4686 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.6", + "sysfs_bus_id": "0000:00:18.6", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 6, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000124Esv00000000sd00000000bc06sc00i00" + }, + { + "index": 38, + "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": "1122", + "value": 4386 + }, + "sub_device": { + "hex": "1507", + "value": 5383 + }, + "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:v00001022d00001122sv00001022sd00001507bc06sc00i00" + }, + { + "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": "1110", + "value": 4368 + }, + "sub_device": { + "hex": "150c", + "value": 5388 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1", + "sysfs_bus_id": "0000:00:08.1", + "sysfs_iommu_group_id": 11, + "detail": { + "function": 1, + "command": 1031, + "header_type": 1, + "secondary_bus": 102, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001110sv00001022sd0000150Cbc06sc04i00" + }, + { + "index": 42, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "124c", + "value": 4684 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.4", + "sysfs_bus_id": "0000:00:18.4", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 4, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000124Csv00000000sd00000000bc06sc00i00" + }, + { + "index": 43, + "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": "1124", + "value": 4388 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:03.0", + "sysfs_bus_id": "0000:00:03.0", + "sysfs_iommu_group_id": 9, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001124sv00000000sd00000000bc06sc00i00" + }, + { + "index": 44, + "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": "1126", + "value": 4390 + }, + "sub_device": { + "hex": "1453", + "value": 5203 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.6", + "sysfs_bus_id": "0000:00:02.6", + "sysfs_iommu_group_id": 8, + "detail": { + "function": 6, + "command": 1031, + "header_type": 1, + "secondary_bus": 101, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001126sv00001022sd00001453bc06sc04i00" + }, + { + "index": 46, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "124a", + "value": 4682 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.2", + "sysfs_bus_id": "0000:00:18.2", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 2, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000124Asv00000000sd00000000bc06sc00i00" + }, + { + "index": 50, + "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": "1248", + "value": 4680 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.0", + "sysfs_bus_id": "0000:00:18.0", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001248sv00000000sd00000000bc06sc00i00" + }, + { + "index": 51, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1126", + "value": 4390 + }, + "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", + "sysfs_iommu_group_id": 5, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 98, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001126sv00001022sd00001453bc06sc04i00" + }, + { + "index": 53, + "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": "1124", + "value": 4388 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:02.0", + "sysfs_bus_id": "0000:00:02.0", + "sysfs_iommu_group_id": 3, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001124sv00000000sd00000000bc06sc00i00" + }, + { + "index": 54, + "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": "124f", + "value": 4687 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.7", + "sysfs_bus_id": "0000:00:18.7", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 7, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000124Fsv00000000sd00000000bc06sc00i00" + }, + { + "index": 58, + "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": "1111", + "value": 4369 + }, + "sub_device": { + "hex": "150c", + "value": 5388 + }, + "model": "AMD PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:08.2", + "sysfs_bus_id": "0000:00:08.2", + "sysfs_iommu_group_id": 12, + "detail": { + "function": 2, + "command": 1031, + "header_type": 1, + "secondary_bus": 103, + "prog_if": 0 + }, + "driver": "pcieport", + "driver_module": "pcieportdrv", + "drivers": [ + "pcieport" + ], + "driver_modules": [ + "pcieportdrv" + ], + "module_alias": "pci:v00001022d00001111sv00001022sd0000150Cbc06sc04i00" + }, + { + "index": 59, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 24 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0000", + "name": "Host bridge", + "value": 0 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "124d", + "value": 4685 + }, + "model": "AMD Host bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:18.5", + "sysfs_bus_id": "0000:00:18.5", + "sysfs_iommu_group_id": 15, + "detail": { + "function": 5, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d0000124Dsv00000000sd00000000bc06sc00i00" + } + ], + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "AuthenticAMD", + "model_name": "AMD Ryzen AI 7 350 w/ Radeon 860M", + "family": 26, + "model": 96, + "stepping": 0, + "features": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "mmx", + "fxsr", + "sse", + "sse2", + "ht", + "syscall", + "nx", + "mmxext", + "fxsr_opt", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "rep_good", + "amd_lbr_v2", + "nopl", + "xtopology", + "nonstop_tsc", + "cpuid", + "extd_apicid", + "aperfmperf", + "rapl", + "pni", + "pclmulqdq", + "monitor", + "ssse3", + "fma", + "cx16", + "sse4_1", + "sse4_2", + "movbe", + "popcnt", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "lahf_lm", + "cmp_legacy", + "svm", + "extapic", + "cr8_legacy", + "abm", + "sse4a", + "misalignsse", + "3dnowprefetch", + "osvw", + "ibs", + "skinit", + "wdt", + "tce", + "topoext", + "perfctr_core", + "perfctr_nb", + "bpext", + "perfctr_llc", + "mwaitx", + "cpuid_fault", + "cpb", + "cat_l3", + "cdp_l3", + "hw_pstate", + "ssbd", + "mba", + "perfmon_v2", + "ibrs", + "ibpb", + "stibp", + "ibrs_enhanced", + "vmmcall", + "fsgsbase", + "tsc_adjust", + "bmi1", + "avx2", + "smep", + "bmi2", + "erms", + "invpcid", + "cqm", + "rdt_a", + "avx512f", + "avx512dq", + "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", + "avx_vnni", + "avx512_bf16", + "clzero", + "irperf", + "xsaveerptr", + "rdpru", + "wbnoinvd", + "cppc", + "arat", + "npt", + "lbrv", + "svm_lock", + "nrip_save", + "tsc_scale", + "vmcb_clean", + "flushbyasid", + "decodeassists", + "pausefilter", + "pfthreshold", + "avic", + "v_vmsave_vmload", + "vgi" + ], + "bugs": [ + "sysret_ss_attrs", + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "srso", + "spectre_v2_user", + "vmscape" + ], + "power_management": [ + "ts", + "ttp", + "tm", + "hwpstate", + "cpb", + "eff_freq_ro", + "[13]", + "[14]" + ], + "bogo": 3992, + "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": 192, + "clflush_size": 64, + "cache_alignment": 64, + "address_sizes": { + "physical": "0x30", + "virtual": "0x30" + } + } + ], + "disk": [ + { + "index": 62, + "attached_to": 60, + "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": "1e4b", + "value": 7755 + }, + "sub_vendor": { + "hex": "1e4b", + "value": 7755 + }, + "device": { + "hex": "1202", + "name": "TEAM Ind N845-M80", + "value": 4610 + }, + "sub_device": { + "hex": "1202", + "value": 4610 + }, + "serial": "250414002S0060", + "model": "TEAM Ind N845-M80", + "sysfs_id": "/class/block/nvme0n1", + "sysfs_bus_id": "nvme0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.1/0000:61:00.0/nvme/nvme0", + "unix_device_names": [ + "/dev/disk/by-id/nvme-TEAM_Ind_N845-M80_250414002S0060", + "/dev/disk/by-id/nvme-TEAM_Ind_N845-M80_250414002S0060_1", + "/dev/disk/by-id/nvme-nvme.1e4b-3235303431343030325330303630-5445414d20496e64204e3834352d4d3830-00000001", + "/dev/disk/by-path/pci-0000:61:00.0-nvme-1", + "/dev/nvme0n1" + ], + "rom_id": "0x80", + "resources": [ + { + "type": "disk_geo", + "cylinders": 244198, + "heads": 64, + "sectors": 32, + "size": "0x0", + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 500118192, + "value_2": 512 + } + ], + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ] + } + ], + "graphics_card": [ + { + "index": 29, + "attached_to": 40, + "class_list": [ + "graphics_card", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 102, + "number": 0 + }, + "base_class": { + "hex": "0003", + "name": "Display controller", + "value": 3 + }, + "sub_class": { + "hex": "0080", + "name": "Display controller", + "value": 128 + }, + "vendor": { + "hex": "1002", + "name": "ATI Technologies Inc", + "value": 4098 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "1114", + "value": 4372 + }, + "sub_device": { + "hex": "8908", + "value": 35080 + }, + "revision": { + "hex": "00c2", + "value": 194 + }, + "model": "ATI Display controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.0", + "sysfs_bus_id": "0000:66:00.0", + "sysfs_iommu_group_id": 21, + "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:v00001002d00001114sv00001043sd00008908bc03sc80i00" + } + ], + "hub": [ + { + "index": 63, + "attached_to": 55, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:68:00.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.0/usb6/6-0:1.0", + "sysfs_bus_id": "6-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 65, + "attached_to": 20, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:66:00.4", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.4/usb3/3-0:1.0", + "sysfs_bus_id": "3-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 66, + "attached_to": 49, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:68:00.4", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.4/usb7/7-0:1.0", + "sysfs_bus_id": "7-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 68, + "attached_to": 20, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:66:00.4", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.4/usb4/4-0:1.0", + "sysfs_bus_id": "4-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 70, + "attached_to": 49, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:68:00.4", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.4/usb8/8-0:1.0", + "sysfs_bus_id": "8-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 71, + "attached_to": 52, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:62:00.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.2/0000:62:00.0/usb1/1-0:1.0", + "sysfs_bus_id": "1-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 72, + "attached_to": 55, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:68:00.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.0/usb5/5-0:1.0", + "sysfs_bus_id": "5-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0002d0618dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 73, + "attached_to": 52, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.18.16 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.18", + "value": 0 + }, + "serial": "0000:62:00.0", + "model": "Linux 6.18.16 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.2/0000:62:00.0/usb2/2-0:1.0", + "sysfs_bus_id": "2-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "driver_module": "usbcore", + "drivers": [ + "hub" + ], + "driver_modules": [ + "usbcore" + ], + "module_alias": "usb:v1D6Bp0003d0618dc09dsc00dp03ic09isc00ip00in00" + } + ], + "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": 16106127360 + } + ] + } + ], + "monitor": [ + { + "index": 61, + "attached_to": 29, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "220e", + "value": 8718 + }, + "device": { + "hex": "36d8", + "name": "HP U28 4K HDR", + "value": 14040 + }, + "serial": "1CR0440J1G", + "model": "HP U28 4K HDR", + "resources": [ + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1600, + "height": 900, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1920, + "height": 1080, + "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": 720, + "height": 400, + "vertical_frequency": 70, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "size", + "unit": "mm", + "value_1": 621, + "value_2": 341 + } + ], + "detail": { + "manufacture_year": 2020, + "manufacture_week": 44, + "vertical_sync": { + "min": 30, + "max": 60 + }, + "horizontal_sync": { + "min": 27, + "max": 136 + }, + "horizontal_sync_timings": { + "disp": 3840, + "sync_start": 3888, + "sync_end": 3920, + "total": 4000 + }, + "vertical_sync_timings": { + "disp": 2160, + "sync_start": 2163, + "sync_end": 2168, + "total": 2222 + }, + "clock": 533250, + "width": 3840, + "height": 2160, + "width_millimetres": 621, + "height_millimetres": 341, + "horizontal_flag": 45, + "vertical_flag": 43, + "vendor": "", + "name": "HP U28 4K HDR" + }, + "driver_info": { + "type": "display", + "width": 3840, + "height": 2160, + "vertical_sync": { + "min": 30, + "max": 60 + }, + "horizontal_sync": { + "min": 27, + "max": 136 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 3840, + "sync_start": 3888, + "sync_end": 3920, + "total": 4000 + }, + "vertical_sync_timings": { + "disp": 2160, + "sync_start": 2163, + "sync_end": 2168, + "total": 2222 + }, + "horizontal_flag": 45, + "vertical_flag": 43 + } + } + ], + "network_controller": [ + { + "index": 33, + "attached_to": 44, + "class_list": [ + "network_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 101, + "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": "1043", + "value": 4163 + }, + "device": { + "hex": "8125", + "value": 33061 + }, + "sub_device": { + "hex": "87d7", + "value": 34775 + }, + "revision": { + "hex": "0005", + "value": 5 + }, + "model": "Ethernet controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.6/0000:65:00.0", + "sysfs_bus_id": "0000:65:00.0", + "sysfs_iommu_group_id": 20, + "unix_device_names": [ + "enp101s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 98 + }, + { + "type": "io", + "base": 57344, + "range": 256, + "enabled": true, + "access": "read_write" + }, + { + "type": "phwaddr", + "address": 98 + } + ], + "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:v000010ECd00008125sv00001043sd000087D7bc02sc00i00" + }, + { + "index": 41, + "attached_to": 26, + "class_list": [ + "network_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 100, + "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": "1043", + "value": 4163 + }, + "device": { + "hex": "8125", + "value": 33061 + }, + "sub_device": { + "hex": "87d7", + "value": 34775 + }, + "revision": { + "hex": "0005", + "value": 5 + }, + "model": "Ethernet controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.5/0000:64:00.0", + "sysfs_bus_id": "0000:64:00.0", + "sysfs_iommu_group_id": 19, + "unix_device_names": [ + "enp100s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 98 + }, + { + "type": "io", + "base": 61440, + "range": 256, + "enabled": true, + "access": "read_write" + }, + { + "type": "phwaddr", + "address": 98 + } + ], + "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:v000010ECd00008125sv00001043sd000087D7bc02sc00i00" + }, + { + "index": 48, + "attached_to": 30, + "class_list": [ + "network_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 99, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0080", + "name": "Network controller", + "value": 128 + }, + "vendor": { + "hex": "14c3", + "value": 5315 + }, + "sub_vendor": { + "hex": "1a3b", + "value": 6715 + }, + "device": { + "hex": "7925", + "value": 31013 + }, + "sub_device": { + "hex": "6000", + "value": 24576 + }, + "model": "Network controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.3/0000:63:00.0", + "sysfs_bus_id": "0000:63:00.0", + "sysfs_iommu_group_id": 18, + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 53 + }, + { + "type": "phwaddr", + "address": 97 + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "mt7925e", + "driver_module": "mt7925e", + "drivers": [ + "mt7925e" + ], + "driver_modules": [ + "mt7925e" + ], + "module_alias": "pci:v000014C3d00007925sv00001A3Bsd00006000bc02sc80i00" + } + ], + "network_interface": [ + { + "index": 75, + "attached_to": 33, + "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/enp101s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.6/0000:65:00.0", + "unix_device_names": [ + "enp101s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 98 + }, + { + "type": "phwaddr", + "address": 98 + } + ], + "driver": "r8169", + "driver_module": "r8169", + "drivers": [ + "r8169" + ], + "driver_modules": [ + "r8169" + ] + }, + { + "index": 76, + "attached_to": 41, + "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/enp100s0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:02.5/0000:64:00.0", + "unix_device_names": [ + "enp100s0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 98 + }, + { + "type": "phwaddr", + "address": 98 + } + ], + "driver": "r8169", + "driver_module": "r8169", + "drivers": [ + "r8169" + ], + "driver_modules": [ + "r8169" + ] + }, + { + "index": 77, + "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": 78, + "attached_to": 48, + "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/pci0000:00/0000:00:02.3/0000:63:00.0", + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 53 + }, + { + "type": "phwaddr", + "address": 97 + } + ], + "driver": "mt7925e", + "driver_module": "mt7925e", + "drivers": [ + "mt7925e" + ], + "driver_modules": [ + "mt7925e" + ] + } + ], + "pci": [ + { + "index": 21, + "attached_to": 58, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 103, + "number": 0 + }, + "base_class": { + "hex": "0013", + "value": 19 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1116", + "value": 4374 + }, + "sub_device": { + "hex": "1116", + "value": 4374 + }, + "model": "unknown unknown", + "sysfs_id": "/devices/pci0000:00/0000:00:08.2/0000:67:00.0", + "sysfs_bus_id": "0000:67:00.0", + "sysfs_iommu_group_id": 27, + "detail": { + "function": 0, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001116sv00001022sd00001116bc13sc00i00" + }, + { + "index": 25, + "attached_to": 40, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 102, + "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": "17e0", + "value": 6112 + }, + "sub_device": { + "hex": "17e0", + "value": 6112 + }, + "model": "AMD Encryption controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.2", + "sysfs_bus_id": "0000:66:00.2", + "sysfs_iommu_group_id": 23, + "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:v00001022d000017E0sv00001022sd000017E0bc10sc80i00" + }, + { + "index": 34, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0008", + "name": "Generic system peripheral", + "value": 8 + }, + "sub_class": { + "hex": "0006", + "value": 6 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1123", + "value": 4387 + }, + "sub_device": { + "hex": "1123", + "value": 4387 + }, + "model": "AMD Generic system peripheral", + "sysfs_id": "/devices/pci0000:00/0000:00:00.2", + "sysfs_bus_id": "0000:00:00.2", + "detail": { + "function": 2, + "command": 1028, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d00001123sv00001022sd00001123bc08sc06i00" + }, + { + "index": 37, + "attached_to": 40, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 102, + "number": 0 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0080", + "name": "Multimedia controller", + "value": 128 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1043", + "value": 4163 + }, + "device": { + "hex": "15e2", + "value": 5602 + }, + "sub_device": { + "hex": "8909", + "value": 35081 + }, + "revision": { + "hex": "0071", + "value": 113 + }, + "model": "AMD Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.5", + "sysfs_bus_id": "0000:66:00.5", + "sysfs_iommu_group_id": 25, + "detail": { + "function": 5, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "snd_acp_pci", + "driver_module": "snd_acp_pci", + "drivers": [ + "snd_acp_pci" + ], + "driver_modules": [ + "snd_acp_pci" + ], + "module_alias": "pci:v00001022d000015E2sv00001043sd00008909bc04sc80i00" + }, + { + "index": 39, + "attached_to": 58, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 103, + "number": 0 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "17f0", + "value": 6128 + }, + "sub_device": { + "hex": "17f0", + "value": 6128 + }, + "revision": { + "hex": "0020", + "value": 32 + }, + "model": "AMD Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.2/0000:67:00.1", + "sysfs_bus_id": "0000:67:00.1", + "sysfs_iommu_group_id": 28, + "detail": { + "function": 1, + "command": 0, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00001022d000017F0sv00001022sd000017F0bc11sc80i00" + }, + { + "index": 57, + "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": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "790b", + "value": 30987 + }, + "sub_device": { + "hex": "790b", + "value": 30987 + }, + "revision": { + "hex": "0071", + "value": 113 + }, + "model": "AMD SMBus", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0", + "sysfs_bus_id": "0000:00:14.0", + "sysfs_iommu_group_id": 14, + "detail": { + "function": 0, + "command": 1027, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 0 + }, + "driver": "piix4_smbus", + "driver_module": "i2c_piix4", + "drivers": [ + "piix4_smbus" + ], + "driver_modules": [ + "i2c_piix4" + ], + "module_alias": "pci:v00001022d0000790Bsv00001022sd0000790Bbc0Csc05i00" + } + ], + "sound": [ + { + "index": 47, + "attached_to": 40, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 102, + "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:66:00.1", + "sysfs_bus_id": "0000:66:00.1", + "sysfs_iommu_group_id": 22, + "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": 56, + "attached_to": 40, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 102, + "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": "1043", + "value": 4163 + }, + "device": { + "hex": "15e3", + "value": 5603 + }, + "sub_device": { + "hex": "8909", + "value": 35081 + }, + "model": "AMD Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.6", + "sysfs_bus_id": "0000:66:00.6", + "sysfs_iommu_group_id": 26, + "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:v00001022d000015E3sv00001043sd00008909bc04sc03i00", + "label": "Realtek ALC245" + } + ], + "storage_controller": [ + { + "index": 60, + "attached_to": 32, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 97, + "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": "1e4b", + "value": 7755 + }, + "sub_vendor": { + "hex": "1e4b", + "value": 7755 + }, + "device": { + "hex": "1202", + "value": 4610 + }, + "sub_device": { + "hex": "1202", + "value": 4610 + }, + "revision": { + "hex": "0001", + "value": 1 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.1/0000:61:00.0", + "sysfs_bus_id": "0000:61:00.0", + "sysfs_iommu_group_id": 16, + "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:v00001E4Bd00001202sv00001E4Bsd00001202bc01sc08i02" + } + ], + "system": { + "form_factor": "laptop" + }, + "usb": [ + { + "index": 67, + "attached_to": 65, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "04f3", + "name": "Elan Microelectronics Corportation", + "value": 1267 + }, + "device": { + "hex": "0ca4", + "name": "ELAN:ARM-M4", + "value": 3236 + }, + "revision": { + "hex": "0000", + "name": "1.08", + "value": 0 + }, + "model": "Elan Microelectronics Corportation ELAN:ARM-M4", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.4/usb3/3-1/3-1:1.0", + "sysfs_bus_id": "3-1: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": "00ff", + "name": "vendor_spec", + "value": 255 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "module_alias": "usb:v04F3p0CA4d0108dc00dsc00dp00icFFisc00ip00in00" + } + ], + "usb_controller": [ + { + "index": 20, + "attached_to": 40, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 102, + "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": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1128", + "value": 4392 + }, + "sub_device": { + "hex": "15b9", + "value": 5561 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.1/0000:66:00.4", + "sysfs_bus_id": "0000:66:00.4", + "sysfs_iommu_group_id": 24, + "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:v00001022d00001128sv00001022sd000015B9bc0Csc03i30" + }, + { + "index": 45, + "attached_to": 35, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 104, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0040", + "value": 64 + }, + "vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "sub_vendor": { + "hex": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1121", + "value": 4385 + }, + "sub_device": { + "hex": "1121", + "value": 4385 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.6", + "sysfs_bus_id": "0000:68:00.6", + "sysfs_iommu_group_id": 31, + "detail": { + "function": 6, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "prog_if": 64 + }, + "driver": "thunderbolt", + "driver_module": "thunderbolt", + "drivers": [ + "thunderbolt" + ], + "driver_modules": [ + "thunderbolt" + ], + "module_alias": "pci:v00001022d00001121sv00001022sd00001121bc0Csc03i40" + }, + { + "index": 49, + "attached_to": 35, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 104, + "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": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "111e", + "value": 4382 + }, + "sub_device": { + "hex": "111e", + "value": 4382 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.4", + "sysfs_bus_id": "0000:68:00.4", + "sysfs_iommu_group_id": 30, + "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:v00001022d0000111Esv00001022sd0000111Ebc0Csc03i30" + }, + { + "index": 52, + "attached_to": 51, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 98, + "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": "1b21", + "value": 6945 + }, + "sub_vendor": { + "hex": "1b21", + "value": 6945 + }, + "device": { + "hex": "2142", + "value": 8514 + }, + "sub_device": { + "hex": "2142", + "value": 8514 + }, + "model": "USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:02.2/0000:62:00.0", + "sysfs_bus_id": "0000:62:00.0", + "sysfs_iommu_group_id": 17, + "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:v00001B21d00002142sv00001B21sd00002142bc0Csc03i30" + }, + { + "index": 55, + "attached_to": 35, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 104, + "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": "1022", + "name": "AMD", + "value": 4130 + }, + "device": { + "hex": "1118", + "value": 4376 + }, + "sub_device": { + "hex": "15b9", + "value": 5561 + }, + "model": "AMD USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:08.3/0000:68:00.0", + "sysfs_bus_id": "0000:68:00.0", + "sysfs_iommu_group_id": 29, + "detail": { + "function": 0, + "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:v00001022d00001118sv00001022sd000015B9bc0Csc03i30" + } + ] + }, + "smbios": { + "bios": { + "handle": 0, + "vendor": "American Megatrends Inc.", + "version": "KRKPNSTD.0021.2025.0320.1404", + "date": "03/20/2025", + "features": [ + "PCI supported", + "BIOS flashable", + "BIOS shadowing allowed", + "CD boot supported", + "Selectable boot supported", + "BIOS ROM socketed", + "EDD spec supported", + "ACPI supported", + "BIOS Boot Spec supported" + ], + "start_address": "0xf0000", + "rom_size": 16777216 + }, + "board": { + "handle": 2, + "manufacturer": "ASUSTeK COMPUTER INC.", + "product": "ELM_PN54", + "version": "RevA", + "board_type": { + "hex": "000a", + "name": "Motherboard", + "value": 10 + }, + "features": [ + "Hosting Board", + "Replaceable" + ], + "location": "", + "chassis": 3 + }, + "cache": [ + { + "handle": 12, + "socket": "L1 - Cache", + "size_max": 640, + "size_current": 640, + "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": 13, + "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": "0008", + "name": "16-way Set-Associative", + "value": 8 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + }, + { + "handle": 14, + "socket": "L3 - Cache", + "size_max": 16384, + "size_current": 16384, + "speed": 1, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 2, + "ecc": { + "hex": "0006", + "name": "Multi-bit", + "value": 6 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0008", + "name": "16-way Set-Associative", + "value": 8 + }, + "sram_type_current": [ + "Pipeline Burst" + ], + "sram_type_supported": [ + "Pipeline Burst" + ] + } + ], + "chassis": [ + { + "handle": 3, + "manufacturer": "", + "version": "", + "chassis_type": { + "hex": "0023", + "name": "Other", + "value": 35 + }, + "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" + } + ], + "language": [ + { + "handle": 5, + "languages": [ + "en|US|iso8859-1" + ] + } + ], + "memory_array": [ + { + "handle": 18, + "location": { + "hex": "0003", + "name": "Motherboard", + "value": 3 + }, + "usage": { + "hex": "0003", + "name": "System memory", + "value": 3 + }, + "ecc": { + "hex": "0003", + "name": "None", + "value": 3 + }, + "max_size": "0x4000000", + "error_handle": 17, + "slots": 2 + } + ], + "memory_array_mapped_address": [ + { + "handle": 19, + "array_handle": 18, + "start_address": "0x0", + "end_address": "0x400000000", + "part_width": 2 + } + ], + "memory_device": [ + { + "handle": 21, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL A", + "manufacturer": "Micron Technology", + "part_number": "CT8G56C46S5.M4D1", + "array_handle": 18, + "error_handle": 20, + "width": 64, + "ecc_bits": 0, + "size": 8388608, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 5600 + }, + { + "handle": 24, + "location": "DIMM 0", + "bank_location": "P0 CHANNEL B", + "manufacturer": "Micron Technology", + "part_number": "CT8G56C46S5.M4D1", + "array_handle": 18, + "error_handle": 23, + "width": 64, + "ecc_bits": 0, + "size": 8388608, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "0022", + "name": "Other", + "value": 34 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 5600 + } + ], + "memory_device_mapped_address": [ + { + "handle": 22, + "memory_device_handle": 21, + "array_map_handle": 19, + "start_address": "0x0", + "end_address": "0x200000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + }, + { + "handle": 25, + "memory_device_handle": 24, + "array_map_handle": 19, + "start_address": "0x200000000", + "end_address": "0x400000000", + "row_position": 255, + "interleave_position": 255, + "interleave_depth": 255 + } + ], + "memory_error": [ + { + "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": 20, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + }, + { + "handle": 23, + "error_type": { + "hex": "0003", + "name": "OK", + "value": 3 + }, + "granularity": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "operation": { + "hex": "0002", + "name": "Unknown", + "value": 2 + }, + "syndrome": 0, + "array_address": "0x80000000", + "device_address": "0x80000000", + "range": 2147483648 + } + ], + "port_connector": [ + { + "handle": 27, + "port_type": { + "hex": "000d", + "name": "Keyboard Port", + "value": 13 + }, + "internal_reference_designator": "J130", + "external_connector_type": { + "hex": "000f", + "name": "PS/2", + "value": 15 + }, + "external_reference_designator": "Keyboard" + }, + { + "handle": 28, + "port_type": { + "hex": "000e", + "name": "Mouse Port", + "value": 14 + }, + "internal_reference_designator": "J131", + "external_connector_type": { + "hex": "000f", + "name": "PS/2", + "value": 15 + }, + "external_reference_designator": "Touch pad" + }, + { + "handle": 29, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J90", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB3.2-A" + }, + { + "handle": 30, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J93", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB2.0-A" + }, + { + "handle": 31, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J76", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB3.2-A" + }, + { + "handle": 32, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J49", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB-C 20G PORT0" + }, + { + "handle": 33, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J62", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB-C 20G PORT1" + }, + { + "handle": 34, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J137", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB-C 10G PORT2" + }, + { + "handle": 35, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J79", + "external_reference_designator": "HDMI2.1 CONN" + }, + { + "handle": 36, + "port_type": { + "hex": "001f", + "name": "Network Port", + "value": 31 + }, + "internal_reference_designator": "J91", + "external_connector_type": { + "hex": "000b", + "name": "RJ-45", + "value": 11 + }, + "external_reference_designator": "Network" + }, + { + "handle": 37, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J31", + "external_reference_designator": "eDP CONN" + }, + { + "handle": 38, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J45", + "external_reference_designator": "DP1" + }, + { + "handle": 39, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J15", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Microphone" + }, + { + "handle": 40, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J16", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Headphone" + } + ], + "processor": [ + { + "handle": 15, + "socket": "FP8DDR5", + "socket_type": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "socket_populated": true, + "manufacturer": "Advanced Micro Devices, Inc.", + "version": "AMD Ryzen AI 7 350 w/ Radeon 860M", + "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": 12, + "cache_handle_l2": 13, + "cache_handle_l3": 14 + } + ], + "slot": [ + { + "handle": 41, + "designation": "J96;PCIe x8 slot;", + "slot_type": { + "hex": "00a9", + "name": "Other", + "value": 169 + }, + "bus_width": { + "hex": "000b", + "name": "Other", + "value": 11 + }, + "usage": { + "hex": "0003", + "name": "Available", + "value": 3 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 1, + "features": [ + "3.3 V", + "PME#", + "Hot-Plug" + ] + }, + { + "handle": 42, + "designation": "J98;M.2 WLAN slot;", + "slot_type": { + "hex": "0015", + "name": "Other", + "value": 21 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 2, + "features": [ + "3.3 V", + "PME#", + "Hot-Plug" + ] + }, + { + "handle": 43, + "designation": "J109;M.2 WWAN slot;", + "slot_type": { + "hex": "0016", + "name": "Other", + "value": 22 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 3, + "features": [ + "3.3 V", + "PME#", + "Hot-Plug" + ] + }, + { + "handle": 44, + "designation": "J100;M.2 SSD0 slot;", + "slot_type": { + "hex": "0017", + "name": "Other", + "value": 23 + }, + "bus_width": { + "hex": "000a", + "name": "Other", + "value": 10 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0003", + "name": "Short", + "value": 3 + }, + "id": 4, + "features": [ + "3.3 V", + "PME#" + ] + } + ], + "system": { + "handle": 1, + "manufacturer": "ASUSTeK COMPUTER INC.", + "product": "ELM_PN54", + "version": "90MR01B2-M00080", + "wake_up": { + "hex": "0006", + "name": "Power Switch", + "value": 6 + } + } + } +} diff --git a/rotated_display.nix b/rotated_display.nix new file mode 100644 index 0000000..88253f1 --- /dev/null +++ b/rotated_display.nix @@ -0,0 +1,34 @@ +{ pkgs, rhemawave, ...}: +let + rhemaApp = rhemawave.packages.${pkgs.system}.default; + kioskscript = pkgs.writeShellScript "kiosk-start" '' + OUTPUT=$(${pkgs.wlr-randr}/bin/wlr-randr | grep -m1 '^\S' | awk '{print $1}') + ${pkgs.wlr-randr}/bin/wlr-randr --output "$OUTPUT" --transform 90 + exec ${rhemaApp}/bin/rhemawave -d -s + ''; +in +{ + environment.systemPackages = [ pkgs.wlr-randr]; + + environment.loginShellInit = pkgs.lib.mkForce '' + if [ "$(tty)" = "/dev/tty1" ]; then + export CODEBUG=netdns=cgo + export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt + for i in {1..10}; do + if ${pkgs.iputils}/bin/ping -c 1 8.8.8.8 &> /dev/null; then + break + fi + sleep 1 + done + + export SDL_VIDEODRIVER=wayland + export QT_QPA_PLATFORM=wayland + export XDG_SESSION_TYPE=wayland + export WLR_RENDERER=pixman + export WLR_NO_HARDWARE_CURSORS=1 + + mkdir -p /home/kiosk/.local/share/rhemawave + exec dbus-run-session cage -- ${kioskscript} > /tmp/kiosk.log 2>&1 + fi + ''; +} diff --git a/vm-disk-config.nix b/vm-disk-config.nix new file mode 100644 index 0000000..90d2e64 --- /dev/null +++ b/vm-disk-config.nix @@ -0,0 +1,49 @@ +{ lib, ... }: +{ + disko.devices = { + disk.disk1 = { + device = lib.mkDefault "/dev/vda"; + 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 = { + name = "swap"; + size = "16G"; + content = { + type = "swap"; + }; + }; + root = { + name = "root"; + size = "100%"; + content = { + type = "filesystem"; + format = "xfs"; + mountpoint = "/"; + mountOptions = [ + "defaults" + "pquota" + ]; + }; + }; + }; + }; + }; + }; +}