summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/core/default.nix10
-rw-r--r--modules/core/packages.nix21
-rw-r--r--modules/core/services.nix10
-rw-r--r--modules/core/settings.nix8
-rw-r--r--modules/core/tailscale.nix6
-rw-r--r--modules/core/users.nix44
-rw-r--r--modules/home-manager/ansible.nix7
-rw-r--r--modules/home-manager/core/default.nix74
-rw-r--r--modules/home-manager/core/helix.nix42
-rw-r--r--modules/home-manager/frontend-dev.nix20
-rw-r--r--modules/home-manager/hostnet.nix55
-rw-r--r--modules/home-manager/hyprland.nix297
-rw-r--r--modules/home-manager/php.nix13
-rw-r--r--modules/home-manager/python.nix29
-rw-r--r--modules/home-manager/tarrel.nix38
-rw-r--r--modules/hyprland.nix63
-rw-r--r--modules/snorlax/default.nix36
-rw-r--r--modules/snorlax/disk-config.nix58
-rw-r--r--modules/snorlax/facter.json3833
-rw-r--r--modules/snorlax/git.nix71
-rw-r--r--modules/snorlax/networking.nix28
-rw-r--r--modules/snorlax/nginx.nix21
-rw-r--r--modules/snorlax/samba.nix37
-rw-r--r--modules/snorlax/uvm.nix6
-rw-r--r--modules/tarrel/default.nix51
-rw-r--r--modules/tarrel/hardware-configuration.nix40
-rw-r--r--modules/tarrel/home-manager.nix42
-rw-r--r--modules/work/default.nix43
-rw-r--r--modules/work/hardware-configuration.nix41
-rw-r--r--modules/work/home-manager.nix81
-rw-r--r--modules/work/networking.nix87
-rw-r--r--modules/work/secrets.nix13
32 files changed, 5225 insertions, 0 deletions
diff --git a/modules/core/default.nix b/modules/core/default.nix
new file mode 100644
index 0000000..7ec63e4
--- /dev/null
+++ b/modules/core/default.nix
@@ -0,0 +1,10 @@
+{ ... }:
+{
+ imports = [
+ ./users.nix
+ ./services.nix
+ ./settings.nix
+ ./packages.nix
+ ./tailscale.nix
+ ];
+}
diff --git a/modules/core/packages.nix b/modules/core/packages.nix
new file mode 100644
index 0000000..37d1562
--- /dev/null
+++ b/modules/core/packages.nix
@@ -0,0 +1,21 @@
+{ pkgs, ... }:
+{
+ environment.systemPackages = with pkgs; [
+ git
+ git-crypt
+ helix
+ devenv
+
+ busybox
+ usbutils
+ dig
+ file
+ gcc
+ jq
+ netcat
+ tcpdump
+ wget
+ iftop
+ htop
+ ];
+}
diff --git a/modules/core/services.nix b/modules/core/services.nix
new file mode 100644
index 0000000..f3d1d24
--- /dev/null
+++ b/modules/core/services.nix
@@ -0,0 +1,10 @@
+{ lib, ... }:
+{
+ services = {
+ openssh = {
+ enable = true;
+ openFirewall = lib.mkDefault false;
+ settings.AllowUsers = [ "jras" ];
+ };
+ };
+}
diff --git a/modules/core/settings.nix b/modules/core/settings.nix
new file mode 100644
index 0000000..e7a7b2e
--- /dev/null
+++ b/modules/core/settings.nix
@@ -0,0 +1,8 @@
+{ ... }:
+{
+ nixpkgs.config.allowUnfree = true;
+ nix.settings = {
+ experimental-features = [ "nix-command" "flakes" ];
+ trusted-users = [ "root" "jras" ];
+ };
+}
diff --git a/modules/core/tailscale.nix b/modules/core/tailscale.nix
new file mode 100644
index 0000000..0d7c456
--- /dev/null
+++ b/modules/core/tailscale.nix
@@ -0,0 +1,6 @@
+{ ... }:
+{
+ services.tailscale = {
+ enable = true;
+ };
+}
diff --git a/modules/core/users.nix b/modules/core/users.nix
new file mode 100644
index 0000000..b1a30ed
--- /dev/null
+++ b/modules/core/users.nix
@@ -0,0 +1,44 @@
+{ lib, pkgs, inputs, ... }:
+{
+ programs.zsh.enable = true;
+
+ security.sudo.execWheelOnly = lib.mkDefault true;
+ security.sudo.wheelNeedsPassword = lib.mkDefault false;
+
+ users.users.jras = {
+ createHome = true;
+ isNormalUser = true;
+ extraGroups = [ "wheel" ];
+ shell = pkgs.zsh;
+ packages = with pkgs; [ git helix curl ];
+ openssh.authorizedKeys.keyFiles = [ ../../keys/id_tarrel.pub ../../keys/id_work.pub ];
+ };
+
+ i18n.defaultLocale = "en_US.UTF-8";
+ i18n.extraLocaleSettings = {
+ LC_ADDRESS = "nl_NL.UTF-8";
+ LC_IDENTIFICATION = "nl_NL.UTF-8";
+ LC_MEASUREMENT = "nl_NL.UTF-8";
+ LC_MONETARY = "nl_NL.UTF-8";
+ LC_NAME = "nl_NL.UTF-8";
+ LC_NUMERIC = "nl_NL.UTF-8";
+ LC_PAPER = "nl_NL.UTF-8";
+ LC_TELEPHONE = "nl_NL.UTF-8";
+ LC_TIME = "nl_NL.UTF-8";
+ };
+
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.extraSpecialArgs = { inherit inputs; };
+ home-manager.users.jras = {
+ imports = [ ../home-manager/core ];
+
+ home.username = "jras";
+ home.homeDirectory = "/home/jras";
+
+ programs.git = {
+ userName = lib.mkDefault "Jasper Ras";
+ userEmail = lib.mkDefault "jaspert.ras@gmail.com";
+ };
+ };
+}
diff --git a/modules/home-manager/ansible.nix b/modules/home-manager/ansible.nix
new file mode 100644
index 0000000..67aff1c
--- /dev/null
+++ b/modules/home-manager/ansible.nix
@@ -0,0 +1,7 @@
+{ pkgs, ... }:
+{
+ home.packages = with pkgs; [
+ ansible-language-server
+ ansible-lint
+ ];
+}
diff --git a/modules/home-manager/core/default.nix b/modules/home-manager/core/default.nix
new file mode 100644
index 0000000..9c33f66
--- /dev/null
+++ b/modules/home-manager/core/default.nix
@@ -0,0 +1,74 @@
+{ pkgs, inputs, ... }:
+{
+
+ imports = [
+ ./helix.nix
+ ./shell.nix
+ ];
+
+ home.packages = [
+ pkgs.gnumake
+ pkgs.git-crypt
+ pkgs.bitwarden-cli
+
+ pkgs.fd
+ pkgs.glow
+ pkgs.eza
+
+ pkgs.nixfmt-rfc-style
+ inputs.nil.packages."${pkgs.system}".nil
+ ];
+
+ programs.ripgrep.enable = true;
+ programs.btop.enable = true;
+
+ programs.zoxide = {
+ enable = true;
+ options = [ "--cmd cd" ];
+ };
+ programs.fzf.enable = true;
+
+ programs.direnv = {
+ enable = true;
+ nix-direnv.enable = true;
+ };
+
+ programs.git = {
+ enable = true;
+ aliases = {
+ b = "branch";
+ f = "fetch";
+ p = "pull";
+ s = "status";
+ co = "checkout";
+ pu = "push";
+ nb = "checkout -b";
+ db = "branch -D";
+ lg =
+ "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit";
+ praise = "blame";
+ bump = "!git bump";
+ ae = "!git add -A && git commit --amend";
+ ad = "commit --amend";
+ ac = "!git add -A && git commit";
+ rmbs =
+ "!git branch | grep -wv master | grep -wv main | xargs git branch -D";
+ };
+ extraConfig = {
+ pull.rebase = false;
+ init.defaultBranch = "main";
+ };
+ };
+
+ services.ssh-agent.enable = true;
+ programs.ssh = {
+ enable = true;
+ package = "${pkgs.openssh}";
+ addKeysToAgent = "yes";
+ };
+
+ programs.taskwarrior = {
+ enable = true;
+ package = "${pkgs.taskwarrior3}";
+ };
+}
diff --git a/modules/home-manager/core/helix.nix b/modules/home-manager/core/helix.nix
new file mode 100644
index 0000000..42861ce
--- /dev/null
+++ b/modules/home-manager/core/helix.nix
@@ -0,0 +1,42 @@
+{ pkgs, inputs, ... }:
+{
+ home.sessionVariables = { EDITOR = "hx"; };
+ home.file = {
+ helix-ferra = {
+ source = ../../../assets/helix-wavez.toml;
+ target = ".config/helix/themes/wavez.toml";
+ };
+ };
+
+ programs.helix = {
+ enable = true;
+ package = inputs.helix.packages."${pkgs.system}".helix;
+ defaultEditor = true;
+ settings = {
+ theme = "wavez";
+ keys.normal = {
+ space.F = "file_picker_in_current_buffer_directory";
+ };
+ editor = {
+ end-of-line-diagnostics = "hint";
+ line-number = "relative";
+ bufferline = "always";
+ auto-save = false;
+
+ inline-diagnostics = {
+ cursor-line = "error";
+ };
+
+ lsp = {
+ enable = true;
+ display-messages = true;
+ };
+
+ indent-guides = {
+ render = true;
+ skip-levels = 1;
+ };
+ };
+ };
+ };
+}
diff --git a/modules/home-manager/frontend-dev.nix b/modules/home-manager/frontend-dev.nix
new file mode 100644
index 0000000..3a957cd
--- /dev/null
+++ b/modules/home-manager/frontend-dev.nix
@@ -0,0 +1,20 @@
+{ pkgs, ... }:
+{
+ home.packages = with pkgs; [
+ dart-sass
+ tailwindcss
+ tailwindcss-language-server
+ vscode-langservers-extracted
+ ];
+
+ programs.helix.languages.language = [
+ {
+ name = "html";
+ language-servers = [ "vscode-html-language-server" "tailwindcss-language-server" ];
+ }
+ {
+ name = "css";
+ language-servers = [ "vscode-css-language-server" "tailwindcss-language-server" ];
+ }
+ ];
+}
diff --git a/modules/home-manager/hostnet.nix b/modules/home-manager/hostnet.nix
new file mode 100644
index 0000000..b8f6418
--- /dev/null
+++ b/modules/home-manager/hostnet.nix
@@ -0,0 +1,55 @@
+{ config, pkgs, ... }:
+let
+ nodePkgs = pkgs.nodePackages;
+ homeDir = "${config.home.homeDirectory}";
+ llamaDir = "${homeDir}/.llama";
+ apache2Dir = "${homeDir}/.apache2";
+ httpd = "${pkgs.apacheHttpd}/bin/httpd";
+in {
+ home.packages = [
+ pkgs.pre-commit
+ nodePkgs.webpack
+ nodePkgs.webpack-cli
+
+ (pkgs.writeShellScriptBin "use-toolbox" ''
+ source ${config.home.homeDirectory}/projects/toolbox/var/bootstrap.zsh
+ '')
+ ];
+
+ programs = {
+ rbenv = {
+ enable = true;
+ enableZshIntegration = true;
+ plugins = [{
+ name = "ruby-build";
+ src = pkgs.fetchFromGitHub {
+ owner = "rbenv";
+ repo = "ruby-build";
+ rev = "v20230717";
+ hash = "sha256-kvdANiz9R5pQMTBRHvxC5bfBewIhXc+sgRbe7V2rVU8=";
+ };
+ }];
+ };
+ };
+
+ systemd.user.services.llama = {
+ Unit.Description = "Hostnet Apache LLama";
+ Service = {
+ ExecStartPre = "${llamaDir}/se-vhosts.sh";
+ ExecStart = "${httpd} -f ${llamaDir}/apache2.conf -DFOREGROUND";
+ RestartSec = "2";
+ Restart = "always";
+ Environment = [
+ "APACHE_RUN_DIR=${apache2Dir}"
+ "APACHE_CONFDIR=${llamaDir}"
+ "APACHE_RUN_USER=${config.home.username}"
+ "APACHE_RUN_GROUP=${config.home.username}"
+ "APACHE_PID_FILE=${homeDir}/.apache2.pid"
+ "APACHE_RUN_FILE=${apache2Dir}/run"
+ "APACHE_LOCK_FILE=${apache2Dir}/lock"
+ "APACHE_LOG_FILE=${apache2Dir}/log"
+ ];
+ };
+ Install.WantedBy = [ "default.target" ];
+ };
+}
diff --git a/modules/home-manager/hyprland.nix b/modules/home-manager/hyprland.nix
new file mode 100644
index 0000000..77bb675
--- /dev/null
+++ b/modules/home-manager/hyprland.nix
@@ -0,0 +1,297 @@
+{ pkgs, inputs, ... }:
+let
+ wallpaper = ../../assets/wallpaper.jpg;
+in
+{
+ home.packages = with pkgs; [
+ rofi-wayland-unwrapped
+ rofi-rbw-wayland
+ grimblast
+ hyprpicker
+ wl-clipboard
+ ];
+
+ # Required for hyprpicker's cursor but also seems to fix some icons for astal
+ home.pointerCursor = {
+ gtk.enable = true;
+ package = pkgs.adwaita-icon-theme;
+ name = "Adwaita";
+ size = 16;
+ };
+
+ services.wlsunset.enable = true;
+ services.wlsunset.sunrise = "06:00";
+ services.wlsunset.sunset = "17:00";
+
+ wayland.windowManager.hyprland.enable = true;
+ wayland.windowManager.hyprland.systemd.enable = true;
+ wayland.windowManager.hyprland.plugins = [
+ inputs.hy3.packages.x86_64-linux.hy3
+ ];
+
+ wayland.windowManager.hyprland.settings = {
+ "$terminal" = "alacritty";
+ "$mod" = "SUPER";
+
+ exec-once = [ ];
+
+ debug = {
+ "disable_logs" = false;
+ };
+
+ general = {
+ "layout" = "hy3";
+ "border_size" = 2;
+ "col.active_border" = "rgba(fe8423ee) rgba(e11701ee) 45deg";
+ "col.inactive_border" = "rgba(595959aa)";
+ };
+
+ monitor = [
+ "Unknown-1, disable"
+ ",preferred,auto,auto"
+ ];
+
+ xwayland = {
+ force_zero_scaling = true;
+ };
+
+ animations = {
+ bezier = [
+ "easeOutQuint,0.23,1,0.32,1"
+ "easeInOutCubic,0.65,0.05,0.36,1"
+ "linear,0,0,1,1"
+ "almostLinear,0.5,0.5,0.75,1.0"
+ "quick,0.15,0,0.1,1"
+ ];
+ animation = [
+ "global, 1, 10, default"
+ "border, 1, 5.39, easeOutQuint"
+ "windows, 1, 4.79, easeOutQuint"
+ "windowsIn, 1, 4.1, easeOutQuint, popin 87%"
+ "windowsOut, 1, 1.49, linear, popin 87%"
+ "fadeIn, 1, 1.73, almostLinear"
+ "fadeOut, 1, 1.46, almostLinear"
+ "fade, 1, 3.03, quick"
+ "layers, 1, 3.81, easeOutQuint"
+ "layersIn, 1, 4, easeOutQuint, fade"
+ "layersOut, 1, 1.5, linear, fade"
+ "fadeLayersIn, 1, 1.79, almostLinear"
+ "fadeLayersOut, 1, 1.39, almostLinear"
+ "workspaces, 1, 1.94, almostLinear, fade"
+ ];
+ };
+
+ decoration = {
+ "rounding" = 5;
+ "inactive_opacity" = 0.8;
+ };
+
+ bind =
+ [
+ "$mod, Return, exec, alacritty"
+ "$mod, Semicolon, hy3:makegroup, h"
+ "$mod, D, exec, ${pkgs.rofi-wayland-unwrapped}/bin/rofi -show drun"
+ "$mod, F, fullscreen, 1"
+ "$mod, H, hy3:movefocus, l"
+ "$mod, J, hy3:movefocus, d"
+ "$mod, K, hy3:movefocus, u"
+ "$mod, L, hy3:movefocus, r"
+ "$mod, P, exec, ${pkgs.grimblast}/bin/grimblast copy area"
+ "$mod, Q, exec, ${pkgs.hyprlock}/bin/hyprlock"
+ "$mod, V, hy3:makegroup, v"
+ "$mod, W, hy3:changegroup, toggletab"
+ "$mod, X, movecurrentworkspacetomonitor, +1"
+
+ "$mod SHIFT, C, exec, ${pkgs.hyprpicker}/bin/hyprpicker -a -f hex"
+ "$mod SHIFT, D, exec, ${pkgs.rofi-rbw-wayland}/bin/rofi-rbw"
+ "$mod SHIFT, H, hy3:movewindow, l"
+ "$mod SHIFT, J, hy3:movewindow, d"
+ "$mod SHIFT, K, hy3:movewindow, u"
+ "$mod SHIFT, L, hy3:movewindow, r"
+ "$mod SHIFT, P, exec, ${pkgs.grimblast}/bin/grimblast copy screen"
+ "$mod SHIFT, Q, hy3:killactive"
+ ]
+ ++ (
+ builtins.concatLists (builtins.genList (i:
+ let ws = i + 1;
+ in [
+ "$mod, code:1${toString i}, workspace, ${toString ws}"
+ "$mod SHIFT, code:1${toString i}, hy3:movetoworkspace, ${toString ws}"
+ ]
+ )
+ 9)
+ );
+
+ plugin = {
+ hy3 = {
+ tabs = {
+ "col.active" = "0xFFFE8423";
+ "col.inactive" = "0xFF103543";
+ "col.text.inactive" = "0xFFFECDB2";
+ };
+ };
+ };
+ };
+
+ services.hyprpaper.enable = true;
+ services.hyprpaper.settings = {
+ preload = [ "${wallpaper}" ];
+ wallpaper = [ ",${wallpaper}" ];
+ };
+ services.hypridle.enable = true;
+ services.hypridle.settings = {
+ general = {
+ lock_cmd = "pidof hyprlock || hyprlock";
+ };
+
+ listener = [
+ {
+ timeout = 120;
+ on-timeout = "brightnessctl -s set 10";
+ on-resume = "brightnessctl -r";
+ }
+ {
+ timeout = 300;
+ on-timeout = "pidof hyprlock || hyprlock";
+ }
+ {
+ timeout = 600;
+ on-timeout = "hyprctl dispatch dpms off";
+ on-resume = "hyprctl dispatch dpms on";
+ }
+ ];
+ };
+
+ programs.hyprlock.enable = true;
+ programs.hyprlock.settings = {
+ background = [
+ { path = "${wallpaper}";
+ blur_passes = 2;
+ monitor = "";
+ }
+ ];
+
+ general = {
+ no_fade_in = true;
+ no_fade_out = true;
+ hide_cursor = false;
+ disable_loading_bar = true;
+ grace = 0;
+ };
+
+ input-field = [
+ {
+ monitor = "";
+ size = "250, 60";
+ outline_thickness = 2;
+ dots_size = 0.2; # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.35; # Scale of dots' absolute size, 0.0 - 1.0
+ dots_center = true;
+ outer_color = "rgba(0, 0, 0, 0)";
+ inner_color = "rgba(0, 0, 0, 0.2)";
+ font_color = "$foreground";
+ fade_on_empty = false;
+ rounding = -1;
+ check_color = "rgb(204, 136, 34)";
+ placeholder_text = "<i><span foreground=\"##cdd6f4\">Input Password...</span></i>";
+ hide_input = false;
+ position = "0, -200";
+ halign = "center";
+ valign = "center";
+ }
+ ];
+ };
+
+ programs.alacritty = {
+ enable = true;
+ settings = {
+ window = {
+ padding = { x = 5; y = 2; };
+ };
+ env = { TERM = "alacritty-direct"; };
+ terminal.shell = {
+ program = "${pkgs.zsh}/bin/zsh";
+ args = [ "-l" ];
+ };
+ } // builtins.fromJSON (builtins.readFile ../../assets/alacritty-wavez.json);
+ };
+
+ xdg.mimeApps = {
+ enable = true;
+ defaultApplications = {
+ "x-scheme-handler/http" = "firefox.desktop";
+ "x-scheme-handler/https" = "firefox.desktop";
+ "x-scheme-handler/chrome" = "firefox.desktop";
+ "text/html" = "firefox.desktop";
+ "application/x-extension-htm" = "firefox.desktop";
+ "application/x-extension-html" = "firefox.desktop";
+ "application/x-extension-shtml" = "firefox.desktop";
+ "application/xhtml+xml" = "firefox.desktop";
+ "application/x-extension-xhtml" = "firefox.desktop";
+ "application/x-extension-xht" = "firefox.desktop";
+ };
+ associations.added = {
+ "x-scheme-handler/http" = "firefox.desktop";
+ "x-scheme-handler/https" = "firefox.desktop";
+ "x-scheme-handler/chrome" = "firefox.desktop";
+ "text/html" = "firefox.desktop";
+ "application/x-extension-htm" = "firefox.desktop";
+ "application/x-extension-html" = "firefox.desktop";
+ "application/x-extension-shtml" = "firefox.desktop";
+ "application/xhtml+xml" = "firefox.desktop";
+ "application/x-extension-xhtml" = "firefox.desktop";
+ "application/x-extension-xht" = "firefox.desktop";
+ };
+ };
+
+ programs.rbw.enable = true;
+ programs.rbw.settings = {
+ email = "jaspert.ras@gmail.com";
+ pinentry = pkgs.pinentry-gnome3;
+ };
+
+ systemd.user.services.hypr-events = {
+ Unit = {
+ Description = "Listens on Hypr's socket2 for events and handles them";
+ After = [ "graphical-session-pre.target" ];
+ };
+
+ Install = {
+ WantedBy = [ "graphical-session.target" ];
+ };
+
+ Service = {
+ Type = "exec";
+ ExecStart = pkgs.writeShellScript "hyprevents" ''
+ reload_astal() {
+ systemctl --user restart astal
+ }
+
+ handle() {
+ case $1 in
+ monitoradded*) reload_astal ;;
+ monitorremoved*) reload_astal ;;
+ esac
+ }
+
+ ${pkgs.socat}/bin/socat -U - UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock | while read -r line; do handle "$line"; done
+ '';
+ };
+ };
+
+ systemd.user.services.astal = {
+ Unit = {
+ Description = "Runs the astal bar instance";
+ After = [ "graphical-session-pre.target" ];
+ };
+
+ Service = {
+ Type = "exec";
+ ExecStart = "${inputs.astal-bar.packages.x86_64-linux.default}/bin/astal-bar";
+ };
+
+ Install = {
+ WantedBy = [ "graphical-session.target" ];
+ };
+ };
+}
diff --git a/modules/home-manager/php.nix b/modules/home-manager/php.nix
new file mode 100644
index 0000000..ab56f44
--- /dev/null
+++ b/modules/home-manager/php.nix
@@ -0,0 +1,13 @@
+{ pkgs, ... }:
+{
+ programs.helix.languages.language-server.intelephense = with pkgs.nodePackages; {
+ command = "${intelephense}/bin/intelephense";
+ };
+
+ programs.git.ignores = [
+ ".phpactor.json"
+ ".phpcomplete_extended/"
+ ".phpunit.result.cache"
+ ".phpcs.xml"
+ ];
+}
diff --git a/modules/home-manager/python.nix b/modules/home-manager/python.nix
new file mode 100644
index 0000000..464fc39
--- /dev/null
+++ b/modules/home-manager/python.nix
@@ -0,0 +1,29 @@
+{ pkgs, ... }:
+{
+ home.packages = [
+ pkgs.pyright
+ pkgs.black
+ pkgs.ruff
+ ];
+
+ programs.helix.languages = {
+ language = [
+ {
+ name = "python";
+ language-servers = [ "pyright" "ruff" ];
+ formatter = { command = "black"; args = ["--line-length" "88" "--quiet" "-"]; };
+ auto-format = true;
+ }
+ ];
+ language-server.pyright.config.python.analysis = { typeCheckingMode = "basic"; };
+ language-server.ruff = { command = "ruff"; };
+ language-server.ruff.config.setting = { args = ["--ignore" "E501" ]; };
+ };
+
+ programs.starship.settings = {
+ python = {
+ format = "[$virtualenv]($style) ";
+ style = "bright-black";
+ };
+ };
+}
diff --git a/modules/home-manager/tarrel.nix b/modules/home-manager/tarrel.nix
new file mode 100644
index 0000000..a8ddb9f
--- /dev/null
+++ b/modules/home-manager/tarrel.nix
@@ -0,0 +1,38 @@
+{ pkgs, ... }:
+{
+ imports = [
+ ../home-manager/core
+ ../home-manager/hyprland.nix
+ ];
+
+ home.username = "jras";
+ home.homeDirectory = "/home/jras";
+ home.stateVersion = "23.11";
+
+ programs.git = {
+ userName = "Jasper Ras";
+ userEmail = "jaspert.ras@gmail.com";
+ };
+
+ home.file = {
+ gamestream-start = {
+ text = ''
+ #!${pkgs.zsh}/bin/zsh
+ ${pkgs.hyprland}/bin/hyprctl keyword monitor HDMI-A-1,1920x1080@59.94,auto,2
+ '';
+ target = "bin/gamestream-start";
+ executable = true;
+ };
+ gamestream-end = {
+ text = ''
+ #!${pkgs.zsh}/bin/zsh
+ ${pkgs.hyprland}/bin/hyprctl keyword monitor HDMI-A-1,preferred,auto,1
+ '';
+ target = "bin/gamestream-end";
+ executable = true;
+ };
+ };
+
+ programs.zsh.envExtra = "export PATH=$HOME/bin:$PATH";
+ };
+}
diff --git a/modules/hyprland.nix b/modules/hyprland.nix
new file mode 100644
index 0000000..92d5ee2
--- /dev/null
+++ b/modules/hyprland.nix
@@ -0,0 +1,63 @@
+{ inputs, pkgs, ... }:
+{
+ # find a better home:
+ environment.systemPackages = with pkgs; [
+ kitty
+ alacritty
+ firefox
+ whatsapp-for-linux
+ obsidian
+ ];
+
+ nix.settings = {
+ substituters = ["https://hyprland.cachix.org"];
+ trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="];
+ };
+
+ programs.hyprland = {
+ enable = true;
+ xwayland.enable = true;
+ package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
+ portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
+ };
+
+ # Some of these do not belong here
+ services = {
+ pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ };
+ keyd = {
+ enable = true;
+ keyboards = {
+ default = {
+ ids = [ "*" ];
+ settings.main.capslock = "overload(meta, esc)";
+ };
+ };
+ };
+ greetd = {
+ enable = true;
+ settings = {
+ default_session = {
+ command = "${pkgs.hyprland}/bin/Hyprland";
+ user = "jras";
+ };
+ };
+ };
+ gnome.gnome-keyring.enable = true;
+ };
+ systemd.user.services.kanshi = {
+ description = "kanshi daemon";
+ environment = {
+ WAYLAND_DISPLAY="wayland-1";
+ DISPLAY=":0";
+ };
+ serviceConfig = {
+ Type = "simple";
+ ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file'';
+ };
+ };
+}
diff --git a/modules/snorlax/default.nix b/modules/snorlax/default.nix
new file mode 100644
index 0000000..11deb13
--- /dev/null
+++ b/modules/snorlax/default.nix
@@ -0,0 +1,36 @@
+{ lib, ... }:
+{
+ imports = [
+ ./disk-config.nix
+ ./git.nix
+ ./samba.nix
+ ./nginx.nix
+ ./uvm.nix
+ ./networking.nix
+
+ ../core
+ ];
+
+ system.stateVersion = "24.11";
+
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ networking.hostName = "snorlax";
+ networking.hostId = "1d1ebf34";
+
+ time.timeZone = "Europe/Amsterdam";
+
+ programs.mtr.enable = true;
+ services.openssh = {
+ enable = true;
+ allowSFTP = false;
+ settings = {
+ PermitRootLogin = "no";
+ AllowUsers = [ "jras" ];
+ };
+ openFirewall = lib.mkForce true;
+ };
+
+ home-manager.users.jras = { home.stateVersion = "24.11"; };
+}
diff --git a/modules/snorlax/disk-config.nix b/modules/snorlax/disk-config.nix
new file mode 100644
index 0000000..9bac5f0
--- /dev/null
+++ b/modules/snorlax/disk-config.nix
@@ -0,0 +1,58 @@
+{
+ disko.devices = {
+ disk = {
+ sda = {
+ device = "/dev/sda";
+ type = "disk";
+ content = {
+ type = "gpt";
+ partitions = {
+ ESP = {
+ type = "EF00";
+ size = "64M";
+ content = {
+ type = "filesystem";
+ format = "vfat";
+ mountpoint = "/boot";
+ mountOptions = [ "umask=0077" ];
+ };
+ };
+ zfs = {
+ size = "100%";
+ content = {
+ type = "zfs";
+ pool = "zroot";
+ };
+ };
+ };
+ };
+ };
+ };
+
+ zpool = {
+ zroot = {
+ type = "zpool";
+ rootFsOptions = {
+ compression = "zstd";
+ "com.sun:auto-snapshot" = "false";
+ };
+ mountpoint = "/";
+ postCreateHook = "zfs list -t snap -H -o name | grep -E '^zroot@blank$' || zfs snapshot zroot@blank";
+
+ datasets = {
+ git = {
+ type = "zfs_fs";
+ mountpoint = "/var/lib/git";
+ options."com.sun:auto-snapshot" = "true";
+ };
+
+ samba = {
+ type = "zfs_fs";
+ mountpoint = "/srv/samba";
+ options."com.sun:auto-snapshot" = "true";
+ };
+ };
+ };
+ };
+ };
+}
diff --git a/modules/snorlax/facter.json b/modules/snorlax/facter.json
new file mode 100644
index 0000000..572dc4c
--- /dev/null
+++ b/modules/snorlax/facter.json
@@ -0,0 +1,3833 @@
+{
+ "version": 1,
+ "system": "x86_64-linux",
+ "virtualisation": "none",
+ "hardware": {
+ "bios": {
+ "apm_info": {
+ "supported": false,
+ "enabled": false,
+ "version": 0,
+ "sub_version": 0,
+ "bios_flags": 0
+ },
+ "vbe_info": {
+ "version": 0,
+ "video_memory": 0
+ },
+ "pnp": true,
+ "pnp_id": 0,
+ "lba_support": false,
+ "low_memory_size": 645120,
+ "smbios_version": 519
+ },
+ "bridge": [
+ {
+ "index": 9,
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e47",
+ "value": 7751
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel ISA bridge",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1f.0",
+ "sysfs_bus_id": "0000:00:1f.0",
+ "detail": {
+ "function": 0,
+ "command": 7,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 0,
+ "prog_if": 0
+ },
+ "driver": "lpc_ich",
+ "driver_module": "lpc_ich",
+ "drivers": [
+ "lpc_ich"
+ ],
+ "driver_modules": [
+ "lpc_ich"
+ ],
+ "module_alias": "pci:v00008086d00001E47sv00001028sd00000577bc06sc01i00"
+ },
+ {
+ "index": 14,
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "0150",
+ "value": 336
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0009",
+ "value": 9
+ },
+ "model": "Intel Host bridge",
+ "sysfs_id": "/devices/pci0000:00/0000:00:00.0",
+ "sysfs_bus_id": "0000:00:00.0",
+ "detail": {
+ "function": 0,
+ "command": 6,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 0,
+ "prog_if": 0
+ },
+ "driver": "ivb_uncore",
+ "driver_module": "intel_uncore",
+ "drivers": [
+ "ivb_uncore"
+ ],
+ "driver_modules": [
+ "intel_uncore"
+ ],
+ "module_alias": "pci:v00008086d00000150sv00001028sd00000577bc06sc00i00"
+ }
+ ],
+ "cdrom": [
+ {
+ "index": 22,
+ "attached_to": 8,
+ "class_list": [
+ "cdrom",
+ "scsi",
+ "block_device"
+ ],
+ "bus_type": {
+ "hex": "0084",
+ "name": "SCSI",
+ "value": 132
+ },
+ "slot": {
+ "bus": 1,
+ "number": 0
+ },
+ "base_class": {
+ "hex": "0106",
+ "name": "Mass Storage Device",
+ "value": 262
+ },
+ "sub_class": {
+ "hex": "0002",
+ "name": "CD-ROM",
+ "value": 2
+ },
+ "pci_interface": {
+ "hex": "0003",
+ "name": "DVD",
+ "value": 3
+ },
+ "vendor": {
+ "hex": "0000",
+ "name": "TSSTcorp",
+ "value": 0
+ },
+ "device": {
+ "hex": "0000",
+ "name": "DVD-ROM SN-108BB",
+ "value": 0
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "D200",
+ "value": 0
+ },
+ "model": "TSSTcorp DVD-ROM SN-108BB",
+ "sysfs_id": "/class/block/sr0",
+ "sysfs_bus_id": "1:0:0:0",
+ "sysfs_device_link": "/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0",
+ "unix_device_name": "/dev/sr0",
+ "unix_device_number": {
+ "type": 98,
+ "major": 11,
+ "minor": 0,
+ "range": 1
+ },
+ "unix_device_names": [
+ "/dev/cdrom",
+ "/dev/disk/by-diskseq/11",
+ "/dev/disk/by-id/ata-TSSTcorp_DVD-ROM_SN-108BB_R8N96GKD100791",
+ "/dev/disk/by-path/pci-0000:00:1f.2-ata-2",
+ "/dev/disk/by-path/pci-0000:00:1f.2-ata-2.0",
+ "/dev/sr0"
+ ],
+ "unix_device_name2": "/dev/sg1",
+ "unix_device_number2": {
+ "type": 99,
+ "major": 21,
+ "minor": 1,
+ "range": 1
+ },
+ "driver": "ahci",
+ "driver_module": "ahci",
+ "drivers": [
+ "ahci",
+ "sr"
+ ],
+ "driver_modules": [
+ "ahci",
+ "sr_mod"
+ ]
+ }
+ ],
+ "cpu": [
+ {
+ "architecture": "x86_64",
+ "vendor_name": "GenuineIntel",
+ "family": 6,
+ "model": 58,
+ "stepping": 9,
+ "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",
+ "rdtscp",
+ "lm",
+ "constant_tsc",
+ "arch_perfmon",
+ "pebs",
+ "bts",
+ "rep_good",
+ "nopl",
+ "xtopology",
+ "nonstop_tsc",
+ "cpuid",
+ "aperfmperf",
+ "pni",
+ "pclmulqdq",
+ "dtes64",
+ "monitor",
+ "ds_cpl",
+ "vmx",
+ "smx",
+ "est",
+ "tm2",
+ "ssse3",
+ "cx16",
+ "xtpr",
+ "pdcm",
+ "pcid",
+ "sse4_1",
+ "sse4_2",
+ "x2apic",
+ "popcnt",
+ "tsc_deadline_timer",
+ "aes",
+ "xsave",
+ "avx",
+ "f16c",
+ "rdrand",
+ "lahf_lm",
+ "cpuid_fault",
+ "epb",
+ "pti",
+ "tpr_shadow",
+ "flexpriority",
+ "ept",
+ "vpid",
+ "fsgsbase",
+ "smep",
+ "erms",
+ "xsaveopt",
+ "dtherm",
+ "ida",
+ "arat",
+ "pln",
+ "pts",
+ "vnmi"
+ ],
+ "bugs": [
+ "cpu_meltdown",
+ "spectre_v1",
+ "spectre_v2",
+ "spec_store_bypass",
+ "l1tf",
+ "mds",
+ "swapgs",
+ "itlb_multihit",
+ "srbds",
+ "mmio_unknown"
+ ],
+ "bogo": 6185.66,
+ "cache": 6144,
+ "units": 16,
+ "physical_id": 0,
+ "siblings": 4,
+ "cores": 4,
+ "fpu": true,
+ "fpu_exception": true,
+ "cpuid_level": 13,
+ "write_protect": false,
+ "clflush_size": 64,
+ "cache_alignment": 64,
+ "address_sizes": {
+ "physical": 36,
+ "virtual": 48
+ }
+ }
+ ],
+ "disk": [
+ {
+ "index": 21,
+ "attached_to": 18,
+ "class_list": [
+ "disk",
+ "usb",
+ "scsi",
+ "block_device"
+ ],
+ "bus_type": {
+ "hex": "0084",
+ "name": "SCSI",
+ "value": 132
+ },
+ "slot": {
+ "bus": 6,
+ "number": 0
+ },
+ "base_class": {
+ "hex": "0106",
+ "name": "Mass Storage Device",
+ "value": 262
+ },
+ "sub_class": {
+ "hex": "0000",
+ "name": "Disk",
+ "value": 0
+ },
+ "vendor": {
+ "hex": "058f",
+ "name": "Multiple",
+ "value": 1423
+ },
+ "device": {
+ "hex": "6366",
+ "name": "Card Reader",
+ "value": 25446
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "1.00",
+ "value": 0
+ },
+ "serial": "058F63666438",
+ "model": "Multiple Card Reader",
+ "sysfs_id": "/class/block/sdb",
+ "sysfs_bus_id": "6:0:0:0",
+ "sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2:1.0/host6/target6:0:0/6:0:0:0",
+ "unix_device_name": "/dev/sdb",
+ "unix_device_number": {
+ "type": 98,
+ "major": 8,
+ "minor": 16,
+ "range": 16
+ },
+ "unix_device_names": [
+ "/dev/disk/by-diskseq/12",
+ "/dev/disk/by-id/usb-Multiple_Card_Reader_058F63666438-0:0",
+ "/dev/disk/by-path/pci-0000:00:14.0-usb-0:2:1.0-scsi-0:0:0:0",
+ "/dev/disk/by-path/pci-0000:00:14.0-usbv2-0:2:1.0-scsi-0:0:0:0",
+ "/dev/sdb"
+ ],
+ "unix_device_name2": "/dev/sg2",
+ "unix_device_number2": {
+ "type": 99,
+ "major": 21,
+ "minor": 2,
+ "range": 1
+ },
+ "resources": [
+ {
+ "type": "baud",
+ "speed": 480000000,
+ "bits": 0,
+ "stop_bits": 0,
+ "parity": 0,
+ "handshake": 0
+ },
+ {
+ "type": "disk_geo",
+ "cylinders": 1016,
+ "heads": 124,
+ "sectors": 62,
+ "size": 0,
+ "geo_type": "logical"
+ },
+ {
+ "type": "size",
+ "unit": "sectors",
+ "value_1": 7815168,
+ "value_2": 512
+ }
+ ],
+ "driver": "usb-storage",
+ "driver_module": "usb_storage",
+ "drivers": [
+ "sd",
+ "usb-storage"
+ ],
+ "driver_modules": [
+ "sd_mod",
+ "usb_storage"
+ ],
+ "module_alias": "usb:v058Fp6366d0100dc00dsc00dp00ic08isc06ip50in00"
+ },
+ {
+ "index": 23,
+ "attached_to": 8,
+ "class_list": [
+ "disk",
+ "ide",
+ "block_device"
+ ],
+ "bus_type": {
+ "hex": "0085",
+ "name": "IDE",
+ "value": 133
+ },
+ "slot": {
+ "bus": 0,
+ "number": 0
+ },
+ "base_class": {
+ "hex": "0106",
+ "name": "Mass Storage Device",
+ "value": 262
+ },
+ "sub_class": {
+ "hex": "0000",
+ "name": "Disk",
+ "value": 0
+ },
+ "device": {
+ "hex": "0000",
+ "name": "ST500LX003-1AC15",
+ "value": 0
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "DEM4",
+ "value": 0
+ },
+ "serial": "W200Q36M",
+ "model": "ST500LX003-1AC15",
+ "sysfs_id": "/class/block/sda",
+ "sysfs_bus_id": "0:0:0:0",
+ "sysfs_device_link": "/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0",
+ "unix_device_name": "/dev/sda",
+ "unix_device_number": {
+ "type": 98,
+ "major": 8,
+ "minor": 0,
+ "range": 16
+ },
+ "unix_device_names": [
+ "/dev/disk/by-diskseq/9",
+ "/dev/disk/by-id/ata-ST500LX003-1AC15G_W200Q36M",
+ "/dev/disk/by-id/wwn-0x5000c5005e35781a",
+ "/dev/disk/by-path/pci-0000:00:1f.2-ata-1",
+ "/dev/disk/by-path/pci-0000:00:1f.2-ata-1.0",
+ "/dev/sda"
+ ],
+ "resources": [
+ {
+ "type": "disk_geo",
+ "cylinders": 60801,
+ "heads": 255,
+ "sectors": 63,
+ "size": 0,
+ "geo_type": "logical"
+ },
+ {
+ "type": "size",
+ "unit": "sectors",
+ "value_1": 976773168,
+ "value_2": 512
+ }
+ ],
+ "driver": "ahci",
+ "driver_module": "ahci",
+ "drivers": [
+ "ahci",
+ "sd"
+ ],
+ "driver_modules": [
+ "ahci",
+ "sd_mod"
+ ]
+ }
+ ],
+ "graphics_card": [
+ {
+ "index": 17,
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "0152",
+ "value": 338
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0009",
+ "value": 9
+ },
+ "model": "Intel VGA compatible controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:02.0",
+ "sysfs_bus_id": "0000:00:02.0",
+ "resources": [
+ {
+ "type": "io",
+ "base": 61440,
+ "range": 64,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "irq",
+ "base": 32,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 3758096384,
+ "range": 268435456,
+ "enabled": true,
+ "access": "read_only",
+ "prefetch": "no"
+ },
+ {
+ "type": "mem",
+ "base": 4152360960,
+ "range": 4194304,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ },
+ {
+ "type": "mem",
+ "base": 786432,
+ "range": 131072,
+ "enabled": false,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 0,
+ "command": 1031,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 32,
+ "prog_if": 0
+ },
+ "driver": "i915",
+ "driver_module": "i915",
+ "drivers": [
+ "i915"
+ ],
+ "driver_modules": [
+ "i915"
+ ],
+ "module_alias": "pci:v00008086d00000152sv00001028sd00000577bc03sc00i00",
+ "label": "Onboard IGD"
+ }
+ ],
+ "hub": [
+ {
+ "index": 24,
+ "attached_to": 27,
+ "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": "1a40",
+ "value": 6720
+ },
+ "device": {
+ "hex": "0101",
+ "name": "USB 2.0 Hub",
+ "value": 257
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "1.11",
+ "value": 0
+ },
+ "model": "USB 2.0 Hub",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3:1.0",
+ "sysfs_bus_id": "3-3: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",
+ "drivers": [
+ "hub"
+ ],
+ "module_alias": "usb:v1A40p0101d0111dc09dsc00dp01ic09isc00ip00in00"
+ },
+ {
+ "index": 26,
+ "attached_to": 38,
+ "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": "8087",
+ "value": 32903
+ },
+ "device": {
+ "hex": "0024",
+ "value": 36
+ },
+ "model": "Hub",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0",
+ "sysfs_bus_id": "2-1:1.0",
+ "resources": [
+ {
+ "type": "baud",
+ "speed": 480000000,
+ "bits": 0,
+ "stop_bits": 0,
+ "parity": 0,
+ "handshake": 0
+ }
+ ],
+ "detail": {
+ "device_class": {
+ "hex": "0009",
+ "name": "hub",
+ "value": 9
+ },
+ "device_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_protocol": 1,
+ "interface_class": {
+ "hex": "0009",
+ "name": "hub",
+ "value": 9
+ },
+ "interface_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "interface_protocol": 0,
+ "interface_number": 0,
+ "interface_alternate_setting": 0
+ },
+ "hotplug": "usb",
+ "driver": "hub",
+ "drivers": [
+ "hub"
+ ],
+ "module_alias": "usb:v8087p0024d0000dc09dsc00dp01ic09isc00ip00in00"
+ },
+ {
+ "index": 27,
+ "attached_to": 18,
+ "class_list": [
+ "usb",
+ "hub"
+ ],
+ "bus_type": {
+ "hex": "0086",
+ "name": "USB",
+ "value": 134
+ },
+ "slot": {
+ "bus": 0,
+ "number": 0
+ },
+ "base_class": {
+ "hex": "010a",
+ "name": "Hub",
+ "value": 266
+ },
+ "vendor": {
+ "hex": "1d6b",
+ "name": "Linux 6.12.11 xhci-hcd",
+ "value": 7531
+ },
+ "device": {
+ "hex": "0002",
+ "name": "xHCI Host Controller",
+ "value": 2
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "6.12",
+ "value": 0
+ },
+ "serial": "0000:00:14.0",
+ "model": "Linux 6.12.11 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",
+ "drivers": [
+ "hub"
+ ],
+ "module_alias": "usb:v1D6Bp0002d0612dc09dsc00dp01ic09isc00ip00in00"
+ },
+ {
+ "index": 30,
+ "attached_to": 18,
+ "class_list": [
+ "usb",
+ "hub"
+ ],
+ "bus_type": {
+ "hex": "0086",
+ "name": "USB",
+ "value": 134
+ },
+ "slot": {
+ "bus": 0,
+ "number": 0
+ },
+ "base_class": {
+ "hex": "010a",
+ "name": "Hub",
+ "value": 266
+ },
+ "vendor": {
+ "hex": "1d6b",
+ "name": "Linux 6.12.11 xhci-hcd",
+ "value": 7531
+ },
+ "device": {
+ "hex": "0003",
+ "name": "xHCI Host Controller",
+ "value": 3
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "6.12",
+ "value": 0
+ },
+ "serial": "0000:00:14.0",
+ "model": "Linux 6.12.11 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",
+ "drivers": [
+ "hub"
+ ],
+ "module_alias": "usb:v1D6Bp0003d0612dc09dsc00dp03ic09isc00ip00in00"
+ },
+ {
+ "index": 33,
+ "attached_to": 15,
+ "class_list": [
+ "usb",
+ "hub"
+ ],
+ "bus_type": {
+ "hex": "0086",
+ "name": "USB",
+ "value": 134
+ },
+ "slot": {
+ "bus": 0,
+ "number": 0
+ },
+ "base_class": {
+ "hex": "010a",
+ "name": "Hub",
+ "value": 266
+ },
+ "vendor": {
+ "hex": "1d6b",
+ "name": "Linux 6.12.11 ehci_hcd",
+ "value": 7531
+ },
+ "device": {
+ "hex": "0002",
+ "name": "EHCI Host Controller",
+ "value": 2
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "6.12",
+ "value": 0
+ },
+ "serial": "0000:00:1a.0",
+ "model": "Linux 6.12.11 ehci_hcd EHCI Host Controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1a.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": 0,
+ "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",
+ "drivers": [
+ "hub"
+ ],
+ "module_alias": "usb:v1D6Bp0002d0612dc09dsc00dp00ic09isc00ip00in00"
+ },
+ {
+ "index": 37,
+ "attached_to": 33,
+ "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": "8087",
+ "value": 32903
+ },
+ "device": {
+ "hex": "0024",
+ "value": 36
+ },
+ "model": "Hub",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1:1.0",
+ "sysfs_bus_id": "1-1:1.0",
+ "resources": [
+ {
+ "type": "baud",
+ "speed": 480000000,
+ "bits": 0,
+ "stop_bits": 0,
+ "parity": 0,
+ "handshake": 0
+ }
+ ],
+ "detail": {
+ "device_class": {
+ "hex": "0009",
+ "name": "hub",
+ "value": 9
+ },
+ "device_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_protocol": 1,
+ "interface_class": {
+ "hex": "0009",
+ "name": "hub",
+ "value": 9
+ },
+ "interface_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "interface_protocol": 0,
+ "interface_number": 0,
+ "interface_alternate_setting": 0
+ },
+ "hotplug": "usb",
+ "driver": "hub",
+ "drivers": [
+ "hub"
+ ],
+ "module_alias": "usb:v8087p0024d0000dc09dsc00dp01ic09isc00ip00in00"
+ },
+ {
+ "index": 38,
+ "attached_to": 16,
+ "class_list": [
+ "usb",
+ "hub"
+ ],
+ "bus_type": {
+ "hex": "0086",
+ "name": "USB",
+ "value": 134
+ },
+ "slot": {
+ "bus": 0,
+ "number": 0
+ },
+ "base_class": {
+ "hex": "010a",
+ "name": "Hub",
+ "value": 266
+ },
+ "vendor": {
+ "hex": "1d6b",
+ "name": "Linux 6.12.11 ehci_hcd",
+ "value": 7531
+ },
+ "device": {
+ "hex": "0002",
+ "name": "EHCI Host Controller",
+ "value": 2
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "6.12",
+ "value": 0
+ },
+ "serial": "0000:00:1d.0",
+ "model": "Linux 6.12.11 ehci_hcd EHCI Host Controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1d.0/usb2/2-0:1.0",
+ "sysfs_bus_id": "2-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": 0,
+ "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",
+ "drivers": [
+ "hub"
+ ],
+ "module_alias": "usb:v1D6Bp0002d0612dc09dsc00dp00ic09isc00ip00in00"
+ }
+ ],
+ "keyboard": [
+ {
+ "index": 36,
+ "attached_to": 24,
+ "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": "046d",
+ "name": "Logitech Inc.",
+ "value": 1133
+ },
+ "device": {
+ "hex": "c52b",
+ "name": "USB Receiver",
+ "value": 50475
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "24.11",
+ "value": 0
+ },
+ "model": "Logitech USB Receiver",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.4/3-3.4:1.0",
+ "sysfs_bus_id": "3-3.4:1.0",
+ "resources": [
+ {
+ "type": "baud",
+ "speed": 12000000,
+ "bits": 0,
+ "stop_bits": 0,
+ "parity": 0,
+ "handshake": 0
+ }
+ ],
+ "detail": {
+ "device_class": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_protocol": 0,
+ "interface_class": {
+ "hex": "0003",
+ "name": "hid",
+ "value": 3
+ },
+ "interface_subclass": {
+ "hex": "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:v046DpC52Bd2411dc00dsc00dp00ic03isc01ip01in00"
+ }
+ ],
+ "memory": [
+ {
+ "index": 7,
+ "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": "mem",
+ "base": 0,
+ "range": 3991175168,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "unknown"
+ },
+ {
+ "type": "phys_mem",
+ "range": 4026531840
+ }
+ ]
+ }
+ ],
+ "monitor": [
+ {
+ "index": 19,
+ "attached_to": 17,
+ "class_list": [
+ "monitor"
+ ],
+ "base_class": {
+ "hex": "0100",
+ "name": "Monitor",
+ "value": 256
+ },
+ "sub_class": {
+ "hex": "0002",
+ "name": "LCD Monitor",
+ "value": 2
+ },
+ "vendor": {
+ "hex": "0469",
+ "value": 1129
+ },
+ "device": {
+ "hex": "3433",
+ "name": "ROG PG348Q",
+ "value": 13363
+ },
+ "serial": "#ASMyP5gZbYPd",
+ "model": "ROG PG348Q",
+ "resources": [
+ {
+ "type": "monitor",
+ "width": 1024,
+ "height": 768,
+ "vertical_frequency": 60,
+ "interlaced": false
+ },
+ {
+ "type": "monitor",
+ "width": 3440,
+ "height": 1440,
+ "vertical_frequency": 60,
+ "interlaced": false
+ },
+ {
+ "type": "monitor",
+ "width": 640,
+ "height": 480,
+ "vertical_frequency": 60,
+ "interlaced": false
+ },
+ {
+ "type": "monitor",
+ "width": 800,
+ "height": 600,
+ "vertical_frequency": 60,
+ "interlaced": false
+ },
+ {
+ "type": "size",
+ "unit": "mm",
+ "value_1": 798,
+ "value_2": 335
+ }
+ ],
+ "detail": {
+ "manufacture_year": 2016,
+ "manufacture_week": 26,
+ "vertical_sync": {
+ "min": 30,
+ "max": 100
+ },
+ "horizontal_sync": {
+ "min": 73,
+ "max": 151
+ },
+ "horizontal_sync_timings": {
+ "disp": 3440,
+ "sync_start": 3488,
+ "sync_end": 3520,
+ "total": 3600
+ },
+ "vertical_sync_timings": {
+ "disp": 1440,
+ "sync_start": 1443,
+ "sync_end": 1453,
+ "total": 1481
+ },
+ "clock": 319750,
+ "width": 3440,
+ "height": 1440,
+ "width_millimetres": 798,
+ "height_millimetres": 335,
+ "horizontal_flag": 45,
+ "vertical_flag": 43,
+ "vendor": "",
+ "name": "ROG PG348Q"
+ },
+ "driver_info": {
+ "type": "display",
+ "width": 3440,
+ "height": 1440,
+ "vertical_sync": {
+ "min": 30,
+ "max": 100
+ },
+ "horizontal_sync": {
+ "min": 73,
+ "max": 151
+ },
+ "bandwidth": 0,
+ "horizontal_sync_timings": {
+ "disp": 3440,
+ "sync_start": 3488,
+ "sync_end": 3520,
+ "total": 3600
+ },
+ "vertical_sync_timings": {
+ "disp": 1440,
+ "sync_start": 1443,
+ "sync_end": 1453,
+ "total": 1481
+ },
+ "horizontal_flag": 45,
+ "vertical_flag": 43
+ }
+ }
+ ],
+ "mouse": [
+ {
+ "index": 28,
+ "attached_to": 24,
+ "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": "046d",
+ "name": "Logitech Inc.",
+ "value": 1133
+ },
+ "device": {
+ "hex": "c52b",
+ "name": "USB Receiver",
+ "value": 50475
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "24.11",
+ "value": 0
+ },
+ "compat_vendor": "Unknown",
+ "compat_device": "Generic USB Mouse",
+ "model": "Logitech USB Receiver",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.4/3-3.4:1.1",
+ "sysfs_bus_id": "3-3.4: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": "0001",
+ "name": "audio",
+ "value": 1
+ },
+ "interface_protocol": 2,
+ "interface_number": 1,
+ "interface_alternate_setting": 0
+ },
+ "hotplug": "usb",
+ "driver": "usbhid",
+ "driver_module": "usbhid",
+ "drivers": [
+ "usbhid"
+ ],
+ "driver_modules": [
+ "usbhid"
+ ],
+ "driver_info": {
+ "type": "mouse",
+ "db_entry_0": [
+ "explorerps/2",
+ "exps2"
+ ],
+ "xf86": "explorerps/2",
+ "gpm": "exps2",
+ "buttons": -1,
+ "wheels": -1
+ },
+ "module_alias": "usb:v046DpC52Bd2411dc00dsc00dp00ic03isc01ip02in01"
+ },
+ {
+ "index": 31,
+ "attached_to": 24,
+ "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": "3233",
+ "name": "Ducky",
+ "value": 12851
+ },
+ "device": {
+ "hex": "5311",
+ "name": "Ducky One 3 SF RGB",
+ "value": 21265
+ },
+ "serial": "DK-V1.11-220819",
+ "compat_vendor": "Unknown",
+ "compat_device": "Generic USB Mouse",
+ "model": "Ducky One 3 SF RGB",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.3/3-3.3:1.2",
+ "sysfs_bus_id": "3-3.3:1.2",
+ "unix_device_name": "/dev/input/mice",
+ "unix_device_number": {
+ "type": 99,
+ "major": 13,
+ "minor": 63,
+ "range": 1
+ },
+ "unix_device_names": [
+ "/dev/input/mice"
+ ],
+ "unix_device_name2": "/dev/input/mouse0",
+ "unix_device_number2": {
+ "type": 99,
+ "major": 13,
+ "minor": 32,
+ "range": 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": 2,
+ "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:v3233p5311d0000dc00dsc00dp00ic03isc00ip02in02"
+ }
+ ],
+ "network_controller": [
+ {
+ "index": 12,
+ "attached_to": 0,
+ "class_list": [
+ "network_controller",
+ "pci"
+ ],
+ "bus_type": {
+ "hex": "0004",
+ "name": "PCI",
+ "value": 4
+ },
+ "slot": {
+ "bus": 0,
+ "number": 25
+ },
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1502",
+ "value": 5378
+ },
+ "sub_device": {
+ "hex": "052c",
+ "value": 1324
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel Ethernet controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:19.0",
+ "sysfs_bus_id": "0000:00:19.0",
+ "unix_device_name": "eno1",
+ "unix_device_names": [
+ "eno1"
+ ],
+ "resources": [
+ {
+ "type": "hwaddr",
+ "address": 57
+ },
+ {
+ "type": "io",
+ "base": 61568,
+ "range": 32,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "irq",
+ "base": 31,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156555264,
+ "range": 131072,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ },
+ {
+ "type": "mem",
+ "base": 4156788736,
+ "range": 4096,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ },
+ {
+ "type": "phwaddr",
+ "address": 57
+ }
+ ],
+ "detail": {
+ "function": 0,
+ "command": 1031,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 31,
+ "prog_if": 0
+ },
+ "driver": "e1000e",
+ "driver_module": "e1000e",
+ "drivers": [
+ "e1000e"
+ ],
+ "driver_modules": [
+ "e1000e"
+ ],
+ "module_alias": "pci:v00008086d00001502sv00001028sd0000052Cbc02sc00i00",
+ "label": "Onboard LAN"
+ }
+ ],
+ "network_interface": [
+ {
+ "index": 40,
+ "attached_to": 12,
+ "class_list": [
+ "network_interface"
+ ],
+ "base_class": {
+ "hex": "0107",
+ "name": "Network Interface",
+ "value": 263
+ },
+ "sub_class": {
+ "hex": "0001",
+ "name": "Ethernet",
+ "value": 1
+ },
+ "model": "Ethernet network interface",
+ "sysfs_id": "/class/net/eno1",
+ "sysfs_device_link": "/devices/pci0000:00/0000:00:19.0",
+ "unix_device_name": "eno1",
+ "unix_device_names": [
+ "eno1"
+ ],
+ "resources": [
+ {
+ "type": "hwaddr",
+ "address": 57
+ },
+ {
+ "type": "phwaddr",
+ "address": 57
+ }
+ ],
+ "driver": "e1000e",
+ "driver_module": "e1000e",
+ "drivers": [
+ "e1000e"
+ ],
+ "driver_modules": [
+ "e1000e"
+ ]
+ },
+ {
+ "index": 41,
+ "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_name": "lo",
+ "unix_device_names": [
+ "lo"
+ ]
+ }
+ ],
+ "pci": [
+ {
+ "index": 10,
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e3a",
+ "value": 7738
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel Communication controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:16.0",
+ "sysfs_bus_id": "0000:00:16.0",
+ "resources": [
+ {
+ "type": "irq",
+ "base": 30,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156801024,
+ "range": 16,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 0,
+ "command": 1030,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 30,
+ "prog_if": 0
+ },
+ "driver": "mei_me",
+ "driver_module": "mei_me",
+ "drivers": [
+ "mei_me"
+ ],
+ "driver_modules": [
+ "mei_me"
+ ],
+ "module_alias": "pci:v00008086d00001E3Asv00001028sd00000577bc07sc80i00"
+ },
+ {
+ "index": 13,
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e22",
+ "value": 7714
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel SMBus",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1f.3",
+ "sysfs_bus_id": "0000:00:1f.3",
+ "resources": [
+ {
+ "type": "io",
+ "base": 61504,
+ "range": 32,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "irq",
+ "base": 18,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156772352,
+ "range": 256,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 3,
+ "command": 3,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 18,
+ "prog_if": 0
+ },
+ "driver": "i801_smbus",
+ "driver_module": "i2c_i801",
+ "drivers": [
+ "i801_smbus"
+ ],
+ "driver_modules": [
+ "i2c_i801"
+ ],
+ "module_alias": "pci:v00008086d00001E22sv00001028sd00000577bc0Csc05i00"
+ }
+ ],
+ "sound": [
+ {
+ "index": 11,
+ "attached_to": 0,
+ "class_list": [
+ "sound",
+ "pci"
+ ],
+ "bus_type": {
+ "hex": "0004",
+ "name": "PCI",
+ "value": 4
+ },
+ "slot": {
+ "bus": 0,
+ "number": 27
+ },
+ "base_class": {
+ "hex": "0004",
+ "name": "Multimedia controller",
+ "value": 4
+ },
+ "sub_class": {
+ "hex": "0003",
+ "value": 3
+ },
+ "vendor": {
+ "hex": "8086",
+ "name": "Intel Corporation",
+ "value": 32902
+ },
+ "sub_vendor": {
+ "hex": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e20",
+ "value": 7712
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel Multimedia controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1b.0",
+ "sysfs_bus_id": "0000:00:1b.0",
+ "resources": [
+ {
+ "type": "irq",
+ "base": 33,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156751872,
+ "range": 16384,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 0,
+ "command": 1030,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 33,
+ "prog_if": 0
+ },
+ "driver": "snd_hda_intel",
+ "driver_module": "snd_hda_intel",
+ "drivers": [
+ "snd_hda_intel"
+ ],
+ "driver_modules": [
+ "snd_hda_intel"
+ ],
+ "module_alias": "pci:v00008086d00001E20sv00001028sd00000577bc04sc03i00"
+ }
+ ],
+ "storage_controller": [
+ {
+ "index": 8,
+ "attached_to": 0,
+ "class_list": [
+ "storage_controller",
+ "pci"
+ ],
+ "bus_type": {
+ "hex": "0004",
+ "name": "PCI",
+ "value": 4
+ },
+ "slot": {
+ "bus": 0,
+ "number": 31
+ },
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e02",
+ "value": 7682
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel Mass storage controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1f.2",
+ "sysfs_bus_id": "0000:00:1f.2",
+ "resources": [
+ {
+ "type": "io",
+ "base": 61536,
+ "range": 32,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "io",
+ "base": 61600,
+ "range": 4,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "io",
+ "base": 61616,
+ "range": 8,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "io",
+ "base": 61632,
+ "range": 4,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "io",
+ "base": 61648,
+ "range": 8,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "irq",
+ "base": 29,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156776448,
+ "range": 2048,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 2,
+ "command": 1031,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 29,
+ "prog_if": 1
+ },
+ "driver": "ahci",
+ "driver_module": "ahci",
+ "drivers": [
+ "ahci"
+ ],
+ "driver_modules": [
+ "ahci"
+ ],
+ "module_alias": "pci:v00008086d00001E02sv00001028sd00000577bc01sc06i01"
+ }
+ ],
+ "system": {
+ "form_factor": "desktop"
+ },
+ "unknown": [
+ {
+ "index": 20,
+ "attached_to": 0,
+ "class_list": [
+ "unknown"
+ ],
+ "base_class": {
+ "hex": "0007",
+ "name": "Communication controller",
+ "value": 7
+ },
+ "sub_class": {
+ "hex": "0000",
+ "name": "Serial controller",
+ "value": 0
+ },
+ "pci_interface": {
+ "hex": "0002",
+ "name": "16550",
+ "value": 2
+ },
+ "device": {
+ "hex": "0000",
+ "name": "16550A",
+ "value": 0
+ },
+ "model": "16550A",
+ "unix_device_name": "/dev/ttyS0",
+ "unix_device_names": [
+ "/dev/ttyS0"
+ ],
+ "resources": [
+ {
+ "type": "io",
+ "base": 1016,
+ "range": 0,
+ "enabled": true,
+ "access": "read_write"
+ },
+ {
+ "type": "irq",
+ "base": 4,
+ "triggered": 0,
+ "enabled": true
+ }
+ ]
+ }
+ ],
+ "usb": [
+ {
+ "index": 25,
+ "attached_to": 24,
+ "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": "3233",
+ "name": "Ducky",
+ "value": 12851
+ },
+ "device": {
+ "hex": "5311",
+ "name": "Ducky One 3 SF RGB",
+ "value": 21265
+ },
+ "serial": "DK-V1.11-220819",
+ "model": "Ducky One 3 SF RGB",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.3/3-3.3:1.1",
+ "sysfs_bus_id": "3-3.3:1.1",
+ "unix_device_name": "/dev/input/event1",
+ "unix_device_number": {
+ "type": 99,
+ "major": 13,
+ "minor": 65,
+ "range": 1
+ },
+ "unix_device_names": [
+ "/dev/input/by-id/usb-Ducky_Ducky_One_3_SF_RGB_DK-V1.11-220819-if01-event-kbd",
+ "/dev/input/by-path/pci-0000:00:14.0-usb-0:3.3:1.1-event-kbd",
+ "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:3.3:1.1-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": "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:v3233p5311d0000dc00dsc00dp00ic03isc00ip01in01"
+ },
+ {
+ "index": 29,
+ "attached_to": 24,
+ "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": "3233",
+ "name": "Ducky",
+ "value": 12851
+ },
+ "device": {
+ "hex": "5311",
+ "name": "Ducky One 3 SF RGB",
+ "value": 21265
+ },
+ "serial": "DK-V1.11-220819",
+ "model": "Ducky One 3 SF RGB",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.3/3-3.3:1.4",
+ "sysfs_bus_id": "3-3.3:1.4",
+ "unix_device_name": "/dev/input/event4",
+ "unix_device_number": {
+ "type": 99,
+ "major": 13,
+ "minor": 68,
+ "range": 1
+ },
+ "unix_device_names": [
+ "/dev/input/by-id/usb-Ducky_Ducky_One_3_SF_RGB_DK-V1.11-220819-event-if04",
+ "/dev/input/by-path/pci-0000:00:14.0-usb-0:3.3:1.4-event",
+ "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:3.3:1.4-event",
+ "/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": 0,
+ "interface_number": 4,
+ "interface_alternate_setting": 0
+ },
+ "hotplug": "usb",
+ "driver": "usbhid",
+ "driver_module": "usbhid",
+ "drivers": [
+ "usbhid"
+ ],
+ "driver_modules": [
+ "usbhid"
+ ],
+ "module_alias": "usb:v3233p5311d0000dc00dsc00dp00ic03isc00ip00in04"
+ },
+ {
+ "index": 32,
+ "attached_to": 24,
+ "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": "3233",
+ "name": "Ducky",
+ "value": 12851
+ },
+ "device": {
+ "hex": "5311",
+ "name": "Ducky One 3 SF RGB",
+ "value": 21265
+ },
+ "serial": "DK-V1.11-220819",
+ "model": "Ducky One 3 SF RGB",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.3/3-3.3:1.0",
+ "sysfs_bus_id": "3-3.3:1.0",
+ "unix_device_name": "/dev/input/js0",
+ "unix_device_number": {
+ "type": 99,
+ "major": 13,
+ "minor": 0,
+ "range": 1
+ },
+ "unix_device_names": [
+ "/dev/input/by-id/usb-Ducky_Ducky_One_3_SF_RGB_DK-V1.11-220819-joystick",
+ "/dev/input/by-path/pci-0000:00:14.0-usb-0:3.3:1.0-joystick",
+ "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:3.3:1.0-joystick",
+ "/dev/input/js0"
+ ],
+ "resources": [
+ {
+ "type": "baud",
+ "speed": 12000000,
+ "bits": 0,
+ "stop_bits": 0,
+ "parity": 0,
+ "handshake": 0
+ }
+ ],
+ "detail": {
+ "device_class": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_protocol": 0,
+ "interface_class": {
+ "hex": "0003",
+ "name": "hid",
+ "value": 3
+ },
+ "interface_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "interface_protocol": 0,
+ "interface_number": 0,
+ "interface_alternate_setting": 0
+ },
+ "hotplug": "usb",
+ "driver": "usbhid",
+ "driver_module": "usbhid",
+ "drivers": [
+ "usbhid"
+ ],
+ "driver_modules": [
+ "usbhid"
+ ],
+ "module_alias": "usb:v3233p5311d0000dc00dsc00dp00ic03isc00ip00in00"
+ },
+ {
+ "index": 35,
+ "attached_to": 24,
+ "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": "046d",
+ "name": "Logitech Inc.",
+ "value": 1133
+ },
+ "device": {
+ "hex": "c52b",
+ "name": "USB Receiver",
+ "value": 50475
+ },
+ "revision": {
+ "hex": "0000",
+ "name": "24.11",
+ "value": 0
+ },
+ "model": "Logitech USB Receiver",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.4/3-3.4:1.2",
+ "sysfs_bus_id": "3-3.4:1.2",
+ "resources": [
+ {
+ "type": "baud",
+ "speed": 12000000,
+ "bits": 0,
+ "stop_bits": 0,
+ "parity": 0,
+ "handshake": 0
+ }
+ ],
+ "detail": {
+ "device_class": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "device_protocol": 0,
+ "interface_class": {
+ "hex": "0003",
+ "name": "hid",
+ "value": 3
+ },
+ "interface_subclass": {
+ "hex": "0000",
+ "name": "per_interface",
+ "value": 0
+ },
+ "interface_protocol": 0,
+ "interface_number": 2,
+ "interface_alternate_setting": 0
+ },
+ "hotplug": "usb",
+ "driver": "usbhid",
+ "driver_module": "usbhid",
+ "drivers": [
+ "usbhid"
+ ],
+ "driver_modules": [
+ "usbhid"
+ ],
+ "module_alias": "usb:v046DpC52Bd2411dc00dsc00dp00ic03isc00ip00in02"
+ },
+ {
+ "index": 39,
+ "attached_to": 24,
+ "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": "3233",
+ "name": "Ducky",
+ "value": 12851
+ },
+ "device": {
+ "hex": "5311",
+ "name": "Ducky One 3 SF RGB",
+ "value": 21265
+ },
+ "serial": "DK-V1.11-220819",
+ "model": "Ducky One 3 SF RGB",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.3/3-3.3:1.3",
+ "sysfs_bus_id": "3-3.3:1.3",
+ "unix_device_name": "/dev/input/event3",
+ "unix_device_number": {
+ "type": 99,
+ "major": 13,
+ "minor": 67,
+ "range": 1
+ },
+ "unix_device_names": [
+ "/dev/input/by-id/usb-Ducky_Ducky_One_3_SF_RGB_DK-V1.11-220819-if03-event-kbd",
+ "/dev/input/by-path/pci-0000:00:14.0-usb-0:3.3:1.3-event-kbd",
+ "/dev/input/by-path/pci-0000:00:14.0-usbv2-0:3.3:1.3-event-kbd",
+ "/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": 3,
+ "interface_alternate_setting": 0
+ },
+ "hotplug": "usb",
+ "driver": "usbhid",
+ "driver_module": "usbhid",
+ "drivers": [
+ "usbhid"
+ ],
+ "driver_modules": [
+ "usbhid"
+ ],
+ "module_alias": "usb:v3233p5311d0000dc00dsc00dp00ic03isc00ip01in03"
+ }
+ ],
+ "usb_controller": [
+ {
+ "index": 15,
+ "attached_to": 0,
+ "class_list": [
+ "usb_controller",
+ "pci"
+ ],
+ "bus_type": {
+ "hex": "0004",
+ "name": "PCI",
+ "value": 4
+ },
+ "slot": {
+ "bus": 0,
+ "number": 26
+ },
+ "base_class": {
+ "hex": "000c",
+ "name": "Serial bus controller",
+ "value": 12
+ },
+ "sub_class": {
+ "hex": "0003",
+ "name": "USB Controller",
+ "value": 3
+ },
+ "pci_interface": {
+ "hex": "0020",
+ "name": "EHCI",
+ "value": 32
+ },
+ "vendor": {
+ "hex": "8086",
+ "name": "Intel Corporation",
+ "value": 32902
+ },
+ "sub_vendor": {
+ "hex": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e2d",
+ "value": 7725
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel USB Controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1a.0",
+ "sysfs_bus_id": "0000:00:1a.0",
+ "resources": [
+ {
+ "type": "irq",
+ "base": 16,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156784640,
+ "range": 1024,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 0,
+ "command": 6,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 16,
+ "prog_if": 32
+ },
+ "driver": "ehci-pci",
+ "driver_module": "ehci_pci",
+ "drivers": [
+ "ehci-pci"
+ ],
+ "driver_modules": [
+ "ehci_pci"
+ ],
+ "driver_info": {
+ "type": "module",
+ "db_entry_0": [
+ "ehci-hcd"
+ ],
+ "active": true,
+ "modprobe": true,
+ "names": [
+ "ehci-hcd"
+ ],
+ "module_args": [
+ ""
+ ],
+ "conf": ""
+ },
+ "module_alias": "pci:v00008086d00001E2Dsv00001028sd00000577bc0Csc03i20"
+ },
+ {
+ "index": 16,
+ "attached_to": 0,
+ "class_list": [
+ "usb_controller",
+ "pci"
+ ],
+ "bus_type": {
+ "hex": "0004",
+ "name": "PCI",
+ "value": 4
+ },
+ "slot": {
+ "bus": 0,
+ "number": 29
+ },
+ "base_class": {
+ "hex": "000c",
+ "name": "Serial bus controller",
+ "value": 12
+ },
+ "sub_class": {
+ "hex": "0003",
+ "name": "USB Controller",
+ "value": 3
+ },
+ "pci_interface": {
+ "hex": "0020",
+ "name": "EHCI",
+ "value": 32
+ },
+ "vendor": {
+ "hex": "8086",
+ "name": "Intel Corporation",
+ "value": 32902
+ },
+ "sub_vendor": {
+ "hex": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e26",
+ "value": 7718
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel USB Controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:1d.0",
+ "sysfs_bus_id": "0000:00:1d.0",
+ "resources": [
+ {
+ "type": "irq",
+ "base": 23,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156780544,
+ "range": 1024,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 0,
+ "command": 6,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 23,
+ "prog_if": 32
+ },
+ "driver": "ehci-pci",
+ "driver_module": "ehci_pci",
+ "drivers": [
+ "ehci-pci"
+ ],
+ "driver_modules": [
+ "ehci_pci"
+ ],
+ "driver_info": {
+ "type": "module",
+ "db_entry_0": [
+ "ehci-hcd"
+ ],
+ "active": true,
+ "modprobe": true,
+ "names": [
+ "ehci-hcd"
+ ],
+ "module_args": [
+ ""
+ ],
+ "conf": ""
+ },
+ "module_alias": "pci:v00008086d00001E26sv00001028sd00000577bc0Csc03i20"
+ },
+ {
+ "index": 18,
+ "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": "1028",
+ "value": 4136
+ },
+ "device": {
+ "hex": "1e31",
+ "value": 7729
+ },
+ "sub_device": {
+ "hex": "0577",
+ "value": 1399
+ },
+ "revision": {
+ "hex": "0004",
+ "value": 4
+ },
+ "model": "Intel USB Controller",
+ "sysfs_id": "/devices/pci0000:00/0000:00:14.0",
+ "sysfs_bus_id": "0000:00:14.0",
+ "resources": [
+ {
+ "type": "irq",
+ "base": 24,
+ "triggered": 0,
+ "enabled": true
+ },
+ {
+ "type": "mem",
+ "base": 4156686336,
+ "range": 65536,
+ "enabled": true,
+ "access": "read_write",
+ "prefetch": "no"
+ }
+ ],
+ "detail": {
+ "function": 0,
+ "command": 1030,
+ "header_type": 0,
+ "secondary_bus": 0,
+ "irq": 24,
+ "prog_if": 48
+ },
+ "driver": "xhci_hcd",
+ "driver_module": "xhci_pci",
+ "drivers": [
+ "xhci_hcd"
+ ],
+ "driver_modules": [
+ "xhci_pci"
+ ],
+ "module_alias": "pci:v00008086d00001E31sv00001028sd00000577bc0Csc03i30"
+ }
+ ]
+ },
+ "smbios": {
+ "bios": {
+ "handle": 0,
+ "vendor": "Dell Inc.",
+ "version": "A12",
+ "date": "01/10/2013",
+ "features": [
+ "PCI supported",
+ "PnP supported",
+ "BIOS flashable",
+ "BIOS shadowing allowed",
+ "CD boot supported",
+ "Selectable boot supported",
+ "EDD spec supported",
+ "1.2MB Floppy supported",
+ "720kB Floppy supported",
+ "2.88MB Floppy supported",
+ "Print Screen supported",
+ "8042 Keyboard Services supported",
+ "Serial Services supported",
+ "Printer Services supported",
+ "ACPI supported",
+ "USB Legacy supported",
+ "BIOS Boot Spec supported",
+ "F12 Network boot supported"
+ ],
+ "start_address": "0xf0000",
+ "rom_size": 12582912
+ },
+ "board": {
+ "handle": 2,
+ "manufacturer": "Dell Inc.",
+ "product": "0V8WGR",
+ "version": "A02",
+ "board_type": {
+ "hex": "000a",
+ "name": "Motherboard",
+ "value": 10
+ },
+ "features": [
+ "Hosting Board",
+ "Replaceable"
+ ],
+ "location": "",
+ "chassis": 3
+ },
+ "cache": [
+ {
+ "handle": 56,
+ "socket": "CPU Internal L1",
+ "size_max": 256,
+ "size_current": 256,
+ "speed": 0,
+ "mode": {
+ "hex": "0000",
+ "name": "Write Through",
+ "value": 0
+ },
+ "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": [
+ "Unknown"
+ ],
+ "sram_type_supported": [
+ "Unknown"
+ ]
+ },
+ {
+ "handle": 57,
+ "socket": "CPU Internal L2",
+ "size_max": 1024,
+ "size_current": 1024,
+ "speed": 0,
+ "mode": {
+ "hex": "0000",
+ "name": "Write Through",
+ "value": 0
+ },
+ "enabled": true,
+ "location": {
+ "hex": "0000",
+ "name": "Internal",
+ "value": 0
+ },
+ "socketed": false,
+ "level": 1,
+ "ecc": {
+ "hex": "0006",
+ "name": "Multi-bit",
+ "value": 6
+ },
+ "cache_type": {
+ "hex": "0005",
+ "name": "Unified",
+ "value": 5
+ },
+ "associativity": {
+ "hex": "0007",
+ "name": "8-way Set-Associative",
+ "value": 7
+ },
+ "sram_type_current": [
+ "Unknown"
+ ],
+ "sram_type_supported": [
+ "Unknown"
+ ]
+ },
+ {
+ "handle": 58,
+ "socket": "CPU Internal L3",
+ "size_max": 6144,
+ "size_current": 6144,
+ "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": "0009",
+ "name": "Other",
+ "value": 9
+ },
+ "sram_type_current": [
+ "Unknown"
+ ],
+ "sram_type_supported": [
+ "Unknown"
+ ]
+ }
+ ],
+ "chassis": {
+ "handle": 3,
+ "manufacturer": "Dell Inc.",
+ "version": "",
+ "chassis_type": {
+ "hex": "0010",
+ "name": "Lunch Box",
+ "value": 16
+ },
+ "lock_present": false,
+ "bootup_state": {
+ "hex": "0003",
+ "name": "Safe",
+ "value": 3
+ },
+ "power_state": {
+ "hex": "0003",
+ "name": "Safe",
+ "value": 3
+ },
+ "thermal_state": {
+ "hex": "0003",
+ "name": "Safe",
+ "value": 3
+ },
+ "security_state": {
+ "hex": "0003",
+ "name": "None",
+ "value": 3
+ },
+ "oem": "0x0"
+ },
+ "config": {
+ "handle": 41,
+ "options": [
+ "To Be Filled By O.E.M."
+ ]
+ },
+ "language": [
+ {
+ "handle": 57167,
+ "languages": [
+ "en|US|iso8859-1"
+ ]
+ }
+ ],
+ "memory_array": [
+ {
+ "handle": 59,
+ "location": {
+ "hex": "0003",
+ "name": "Motherboard",
+ "value": 3
+ },
+ "usage": {
+ "hex": "0003",
+ "name": "System memory",
+ "value": 3
+ },
+ "ecc": {
+ "hex": "0003",
+ "name": "None",
+ "value": 3
+ },
+ "max_size": 16777216,
+ "error_handle": 65534,
+ "slots": 2
+ }
+ ],
+ "memory_array_mapped_address": [
+ {
+ "handle": 63,
+ "array_handle": 59,
+ "start_address": 0,
+ "end_address": 4294967296,
+ "part_width": 2
+ }
+ ],
+ "memory_device": [
+ {
+ "handle": 60,
+ "location": "ChannelA-DIMM0",
+ "bank_location": "BANK 0",
+ "manufacturer": "Hynix/Hyundai",
+ "part_number": "HMT351U6CFR8C-PB",
+ "array_handle": 59,
+ "error_handle": 65534,
+ "width": 64,
+ "ecc_bits": 0,
+ "size": 4194304,
+ "form_factor": {
+ "hex": "0009",
+ "name": "DIMM",
+ "value": 9
+ },
+ "set": 0,
+ "memory_type": {
+ "hex": "0018",
+ "name": "Other",
+ "value": 24
+ },
+ "memory_type_details": [
+ "Synchronous"
+ ],
+ "speed": 1600
+ },
+ {
+ "handle": 62,
+ "location": "ChannelB-DIMM0",
+ "bank_location": "BANK 2",
+ "manufacturer": "[Empty]",
+ "part_number": "[Empty]",
+ "array_handle": 59,
+ "error_handle": 65534,
+ "width": 0,
+ "ecc_bits": 0,
+ "size": 0,
+ "form_factor": {
+ "hex": "0009",
+ "name": "DIMM",
+ "value": 9
+ },
+ "set": 0,
+ "memory_type": {
+ "hex": "0002",
+ "name": "Unknown",
+ "value": 2
+ },
+ "memory_type_details": null,
+ "speed": 0
+ }
+ ],
+ "memory_device_mapped_address": [
+ {
+ "handle": 61,
+ "memory_device_handle": 60,
+ "array_map_handle": 63,
+ "start_address": 0,
+ "end_address": 4294967296,
+ "row_position": 1,
+ "interleave_position": 1,
+ "interleave_depth": 1
+ }
+ ],
+ "onboard": [
+ {
+ "handle": 39,
+ "devices": [
+ {
+ "name": "\"Intel HD Graphics\"",
+ "type": {
+ "hex": "0003",
+ "name": "Video",
+ "value": 3
+ },
+ "enabled": true
+ },
+ {
+ "name": "NETWORK_NAME_STRING",
+ "type": {
+ "hex": "0005",
+ "name": "Ethernet",
+ "value": 5
+ },
+ "enabled": true
+ }
+ ]
+ }
+ ],
+ "port_connector": [
+ {
+ "handle": 6,
+ "port_type": {
+ "hex": "0009",
+ "name": "Serial Port 16550A Compatible",
+ "value": 9
+ },
+ "internal_reference_designator": "J6A2A",
+ "external_connector_type": {
+ "hex": "0008",
+ "name": "DB-9 pin male",
+ "value": 8
+ },
+ "external_reference_designator": "COM A"
+ },
+ {
+ "handle": 7,
+ "port_type": {
+ "hex": "001c",
+ "name": "Video Port",
+ "value": 28
+ },
+ "internal_reference_designator": "J6A2B",
+ "external_connector_type": {
+ "hex": "0007",
+ "name": "DB-15 pin female",
+ "value": 7
+ },
+ "external_reference_designator": "Video"
+ },
+ {
+ "handle": 8,
+ "port_type": {
+ "hex": "0010",
+ "name": "USB",
+ "value": 16
+ },
+ "internal_reference_designator": "J2A1",
+ "external_connector_type": {
+ "hex": "0012",
+ "name": "Access Bus [USB]",
+ "value": 18
+ },
+ "external_reference_designator": "USB1"
+ },
+ {
+ "handle": 9,
+ "port_type": {
+ "hex": "0010",
+ "name": "USB",
+ "value": 16
+ },
+ "internal_reference_designator": "J2A1",
+ "external_connector_type": {
+ "hex": "0012",
+ "name": "Access Bus [USB]",
+ "value": 18
+ },
+ "external_reference_designator": "USB2"
+ },
+ {
+ "handle": 10,
+ "port_type": {
+ "hex": "0010",
+ "name": "USB",
+ "value": 16
+ },
+ "internal_reference_designator": "J5A1",
+ "external_connector_type": {
+ "hex": "0012",
+ "name": "Access Bus [USB]",
+ "value": 18
+ },
+ "external_reference_designator": "USB3"
+ },
+ {
+ "handle": 11,
+ "port_type": {
+ "hex": "0010",
+ "name": "USB",
+ "value": 16
+ },
+ "internal_reference_designator": "J5A1",
+ "external_connector_type": {
+ "hex": "0012",
+ "name": "Access Bus [USB]",
+ "value": 18
+ },
+ "external_reference_designator": "USB4"
+ },
+ {
+ "handle": 12,
+ "port_type": {
+ "hex": "0010",
+ "name": "USB",
+ "value": 16
+ },
+ "internal_reference_designator": "J5A1",
+ "external_connector_type": {
+ "hex": "0012",
+ "name": "Access Bus [USB]",
+ "value": 18
+ },
+ "external_reference_designator": "USB5"
+ },
+ {
+ "handle": 13,
+ "port_type": {
+ "hex": "0010",
+ "name": "USB",
+ "value": 16
+ },
+ "internal_reference_designator": "J5A1",
+ "external_connector_type": {
+ "hex": "0012",
+ "name": "Access Bus [USB]",
+ "value": 18
+ },
+ "external_reference_designator": "USB6"
+ },
+ {
+ "handle": 18,
+ "port_type": {
+ "hex": "001f",
+ "name": "Network Port",
+ "value": 31
+ },
+ "internal_reference_designator": "J2A1",
+ "external_connector_type": {
+ "hex": "000b",
+ "name": "RJ-45",
+ "value": 11
+ },
+ "external_reference_designator": "LAN"
+ },
+ {
+ "handle": 19,
+ "port_type": {
+ "hex": "001c",
+ "name": "Video Port",
+ "value": 28
+ },
+ "internal_reference_designator": "J2A1",
+ "external_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "external_reference_designator": "Display Port1"
+ },
+ {
+ "handle": 20,
+ "port_type": {
+ "hex": "001c",
+ "name": "Video Port",
+ "value": 28
+ },
+ "internal_reference_designator": "J3A1",
+ "external_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "external_reference_designator": "Display Port2"
+ },
+ {
+ "handle": 21,
+ "port_type": {
+ "hex": "001d",
+ "name": "Audio Port",
+ "value": 29
+ },
+ "internal_reference_designator": "J7A1",
+ "external_connector_type": {
+ "hex": "001f",
+ "name": "Mini-jack [headphones]",
+ "value": 31
+ },
+ "external_reference_designator": "MIC-IN"
+ },
+ {
+ "handle": 22,
+ "port_type": {
+ "hex": "001d",
+ "name": "Audio Port",
+ "value": 29
+ },
+ "internal_reference_designator": "J7A1",
+ "external_connector_type": {
+ "hex": "001f",
+ "name": "Mini-jack [headphones]",
+ "value": 31
+ },
+ "external_reference_designator": "HP-OUT"
+ },
+ {
+ "handle": 23,
+ "port_type": {
+ "hex": "001d",
+ "name": "Audio Port",
+ "value": 29
+ },
+ "internal_reference_designator": "J7A1",
+ "external_connector_type": {
+ "hex": "001f",
+ "name": "Mini-jack [headphones]",
+ "value": 31
+ },
+ "external_reference_designator": "LINE-OUT"
+ },
+ {
+ "handle": 24,
+ "port_type": {
+ "hex": "001d",
+ "name": "Audio Port",
+ "value": 29
+ },
+ "internal_reference_designator": "J7A1",
+ "external_connector_type": {
+ "hex": "001f",
+ "name": "Mini-jack [headphones]",
+ "value": 31
+ },
+ "external_reference_designator": "LINE-IN"
+ },
+ {
+ "handle": 25,
+ "port_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_reference_designator": "J7J3 - SATA PORT1"
+ },
+ {
+ "handle": 26,
+ "port_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_reference_designator": "J8J1 - SATA PORT0"
+ },
+ {
+ "handle": 27,
+ "port_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_reference_designator": "J2B3 - CPU FAN"
+ },
+ {
+ "handle": 30,
+ "port_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_reference_designator": "J1D1 - INTRUDER"
+ },
+ {
+ "handle": 33,
+ "port_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_reference_designator": "J2B3 - SYSTEM_FAN"
+ },
+ {
+ "handle": 34,
+ "port_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_connector_type": {
+ "hex": "00ff",
+ "name": "Other",
+ "value": 255
+ },
+ "internal_reference_designator": "J9E5 - INT_SPKR"
+ }
+ ],
+ "power_controls": [
+ {
+ "handle": 43,
+ "month": 0,
+ "day": 0,
+ "hour": 0,
+ "minute": 0,
+ "second": 0
+ }
+ ],
+ "processor": [
+ {
+ "handle": 92,
+ "socket": "CPU 1",
+ "socket_type": {
+ "hex": "0024",
+ "name": "Other",
+ "value": 36
+ },
+ "socket_populated": true,
+ "manufacturer": "Intel(R) Corporation",
+ "version": "Intel(R) Core(TM) i5-3570S CPU @ 3.10GHz",
+ "part": "Fill By OEM",
+ "processor_type": {
+ "hex": "0003",
+ "name": "CPU",
+ "value": 3
+ },
+ "processor_family": {
+ "hex": "00cd",
+ "name": "Other",
+ "value": 205
+ },
+ "processor_status": {
+ "hex": "0001",
+ "name": "Enabled",
+ "value": 1
+ },
+ "clock_ext": 100,
+ "clock_max": 3800,
+ "cache_handle_l1": 56,
+ "cache_handle_l2": 57,
+ "cache_handle_l3": 58
+ }
+ ],
+ "system": {
+ "handle": 1,
+ "manufacturer": "Dell Inc.",
+ "product": "OptiPlex 7010",
+ "version": "01",
+ "wake_up": {
+ "hex": "0006",
+ "name": "Power Switch",
+ "value": 6
+ }
+ }
+ }
+}
diff --git a/modules/snorlax/git.nix b/modules/snorlax/git.nix
new file mode 100644
index 0000000..a24c26a
--- /dev/null
+++ b/modules/snorlax/git.nix
@@ -0,0 +1,71 @@
+{ lib, pkgs, ... }:
+let
+ home = "/var/lib/git";
+ repos = {
+ nixos = {
+ path = "${home}/nixos.git";
+ desc = "My NixOS Configurations";
+ owner = "jras";
+ };
+
+ notes = {
+ path = "${home}/notes.git";
+ desc = "My notes";
+ owner = "jras";
+ };
+
+ obsidian-wavez-theme = {
+ path = "${home}/obsidian-wavez-theme.git";
+ desc = "The bordeaux theme for Obsidian";
+ owner = "jras";
+ };
+
+ astal-bar = {
+ path = "${home}/astal-bar.git";
+ desc = "A wayland bar in jsx";
+ owner = "jras";
+ };
+ };
+
+ startScript = pkgs.writeShellScript "init-git-repos" ''
+ ${lib.concatMapStrings ({ path, ... }: "${pkgs.git}/bin/git init --bare --shared ${path} && cd ${path} && ${pkgs.git}/bin/git branch -m main \n") (builtins.attrValues repos)}
+ '';
+in
+{
+ networking.firewall.allowedTCPPorts = [ 80 ];
+
+ services.cgit.snorlax = {
+ enable = true;
+ group = "git";
+ repos = repos;
+ };
+
+ systemd.services.init-repos = {
+ description = "Initialize git repositories";
+ wantedBy = [ "multi-user.target" ];
+ restartTriggers = [ startScript ];
+
+ serviceConfig = {
+ Type = "oneshot";
+ User = "git";
+ Group = "git";
+ ExecStart = startScript;
+ };
+ };
+
+ users.groups.git = {};
+ users.users.git = {
+ isNormalUser = true;
+ home = "${home}";
+ homeMode = "0750";
+ createHome = true;
+ shell = pkgs.zsh;
+ group = "git";
+ openssh.authorizedKeys.keyFiles = [
+ ../../keys/id_tarrel.pub
+ ../../keys/id_work.pub
+ ];
+ packages = with pkgs; [ git ];
+ };
+ services.openssh.settings.AllowUsers = [ "git" ];
+}
diff --git a/modules/snorlax/networking.nix b/modules/snorlax/networking.nix
new file mode 100644
index 0000000..81683a3
--- /dev/null
+++ b/modules/snorlax/networking.nix
@@ -0,0 +1,28 @@
+{ ... }:
+{
+ systemd.network.enable = true;
+
+ systemd.network.networks."10-lan" = {
+ matchConfig.Name = ["eno1" "vm-*"];
+ networkConfig = {
+ Bridge = "br0";
+ };
+ };
+
+ systemd.network.netdevs."br0" = {
+ netdevConfig = {
+ Name = "br0";
+ Kind = "bridge";
+ };
+ };
+
+ systemd.network.networks."10-lan-bridge" = {
+ matchConfig.Name = "br0";
+ networkConfig = {
+ Address = ["192.168.50.7/24" ];
+ Gateway = "192.168.50.1";
+ DNS = ["192.168.50.1"];
+ };
+ linkConfig.RequiredForOnline = "routable";
+ };
+}
diff --git a/modules/snorlax/nginx.nix b/modules/snorlax/nginx.nix
new file mode 100644
index 0000000..cc38496
--- /dev/null
+++ b/modules/snorlax/nginx.nix
@@ -0,0 +1,21 @@
+{ ... }:
+{
+ networking.firewall.allowedTCPPorts = [ 443 ];
+
+ services.nginx = {
+ enable = true;
+ recommendedTlsSettings = true;
+
+ virtualHosts = {
+ "jras.nl" = {
+ onlySSL = true;
+ kTLS = true;
+ enableACME = true;
+ root = "/srv/www/jras.nl";
+ };
+ };
+ };
+
+ security.acme.defaults.email = "jaspert.ras@gmail.com";
+ security.acme.acceptTerms = true;
+}
diff --git a/modules/snorlax/samba.nix b/modules/snorlax/samba.nix
new file mode 100644
index 0000000..44a4be9
--- /dev/null
+++ b/modules/snorlax/samba.nix
@@ -0,0 +1,37 @@
+{ ... }:
+{
+ services.samba = {
+ enable = true;
+ securityType = "user";
+ openFirewall = true;
+ settings = {
+ global = {
+ "workgroup" = "WORKGROUP";
+ "server string" = "smbnix";
+ "netbios name" = "smbnix";
+ "security" = "user";
+ "hosts allow" = "192.168.50. 127.0.0.1 localhost";
+ "hosts deny" = "0.0.0.0/0";
+ "guest account" = "nobody";
+ "map to guest" = "bad user";
+ };
+
+ photos = {
+ "path" = "/srv/samba/photos";
+ "browseable" = "yes";
+ "read only" = "no";
+ "guest ok" = "yes";
+ "create mask" = "0644";
+ "directory mask" = "0755";
+ "force user" = "nobody";
+ "force group" = "nogroup";
+ };
+ };
+ };
+
+ # Used to advertise to Windows hosts
+ services.samba-wsdd = {
+ enable = true;
+ openFirewall = true;
+ };
+}
diff --git a/modules/snorlax/uvm.nix b/modules/snorlax/uvm.nix
new file mode 100644
index 0000000..9abd85a
--- /dev/null
+++ b/modules/snorlax/uvm.nix
@@ -0,0 +1,6 @@
+{ ... }:
+{
+ microvm.autostart = [
+ "test1"
+ ];
+}
diff --git a/modules/tarrel/default.nix b/modules/tarrel/default.nix
new file mode 100644
index 0000000..9741d28
--- /dev/null
+++ b/modules/tarrel/default.nix
@@ -0,0 +1,51 @@
+{ config, ... }:
+{
+ imports = [
+ ./hardware-configuration.nix
+ ./home-manager.nix
+
+ ../core
+ ../hyprland.nix
+ ];
+
+ system.stateVersion = "24.05";
+
+ networking.hostName = "tarrel";
+ networking.networkmanager.enable = true;
+
+ time.timeZone = "Europe/Amsterdam";
+
+ users.users.jras.extraGroups = [ "networkmanager" ];
+
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ hardware.graphics.enable = true;
+ services.xserver.videoDrivers = ["nvidia"];
+ hardware.nvidia = {
+ modesetting.enable = true;
+ nvidiaSettings = true;
+ nvidiaPersistenced = true;
+ open = true;
+
+ package = config.boot.kernelPackages.nvidiaPackages.stable;
+ };
+
+ security.rtkit.enable = true;
+
+ environment.sessionVariables = {
+ TERMINAL = "alacritty";
+ EDITOR = "helix";
+ };
+
+ environment.pathsToLink = [ "/libexec" ];
+
+ services.sunshine = {
+ enable = true;
+ autoStart = true;
+ capSysAdmin = true;
+ openFirewall = true;
+ };
+
+ programs.steam.enable = true;
+}
diff --git a/modules/tarrel/hardware-configuration.nix b/modules/tarrel/hardware-configuration.nix
new file mode 100644
index 0000000..4604fcd
--- /dev/null
+++ b/modules/tarrel/hardware-configuration.nix
@@ -0,0 +1,40 @@
+# 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 = [ "xhci_pci" "ahci" "nvme" "usbhid" "uas" "sd_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/b73c41ec-fe01-4fa5-b50a-fd871e8c2710";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/BBB8-1AF8";
+ fsType = "vfat";
+ options = [ "fmask=0022" "dmask=0022" ];
+ };
+
+ swapDevices = [ ];
+
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp0s20f0u9.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/modules/tarrel/home-manager.nix b/modules/tarrel/home-manager.nix
new file mode 100644
index 0000000..9709129
--- /dev/null
+++ b/modules/tarrel/home-manager.nix
@@ -0,0 +1,42 @@
+{ pkgs, inputs, ... }:
+{
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.extraSpecialArgs = { inherit inputs; };
+ home-manager.users.jras = {
+ imports = [
+ ../home-manager/core
+ ../home-manager/hyprland.nix
+ ];
+
+ home.username = "jras";
+ home.homeDirectory = "/home/jras";
+ home.stateVersion = "23.11";
+
+ programs.git = {
+ userName = "Jasper Ras";
+ userEmail = "jaspert.ras@gmail.com";
+ };
+
+ home.file = {
+ gamestream-start = {
+ text = ''
+ #!${pkgs.zsh}/bin/zsh
+ ${pkgs.hyprland}/bin/hyprctl keyword monitor HDMI-A-1,1920x1080@59.94,auto,2
+ '';
+ target = "bin/gamestream-start";
+ executable = true;
+ };
+ gamestream-end = {
+ text = ''
+ #!${pkgs.zsh}/bin/zsh
+ ${pkgs.hyprland}/bin/hyprctl keyword monitor HDMI-A-1,preferred,auto,1
+ '';
+ target = "bin/gamestream-end";
+ executable = true;
+ };
+ };
+
+ programs.zsh.envExtra = "export PATH=$HOME/bin:$PATH";
+ };
+}
diff --git a/modules/work/default.nix b/modules/work/default.nix
new file mode 100644
index 0000000..2073ea5
--- /dev/null
+++ b/modules/work/default.nix
@@ -0,0 +1,43 @@
+{ lib, pkgs, ... }:
+{
+ imports = [
+ ../core
+ ../hyprland.nix
+
+ ./hardware-configuration.nix
+ ./home-manager.nix
+ ./networking.nix
+ ./secrets.nix
+ ./tailscale.nix
+ ];
+
+ system.stateVersion = "24.05"; # Do NOT change before reading configuration.nix
+
+ users.users.jras.extraGroups = [ "networkmanager" "docker" ];
+ security.sudo.wheelNeedsPassword = lib.mkForce true;
+
+ time.timeZone = "Europe/Amsterdam";
+
+ virtualisation.docker = {
+ enable = true;
+ enableOnBoot = true;
+ };
+
+ hardware.bluetooth.enable = true;
+ hardware.bluetooth.powerOnBoot = true;
+
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ services.libinput.mouse.accelProfile = "flat";
+ services.libinput.mouse.accelSpeed = "-5";
+ services.upower.enable = true;
+
+ services.xserver.xkb = {
+ layout = "us";
+ variant = "";
+ };
+
+ programs.gnupg.agent.enable = true;
+ programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;
+}
diff --git a/modules/work/hardware-configuration.nix b/modules/work/hardware-configuration.nix
new file mode 100644
index 0000000..9c8c4b1
--- /dev/null
+++ b/modules/work/hardware-configuration.nix
@@ -0,0 +1,41 @@
+# 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-uuid/df469cf1-1acc-4bf4-86e1-ec368e5a96a1";
+ fsType = "ext4";
+ };
+
+ boot.initrd.luks.devices."luks-0f6e3603-084c-4438-9749-36b31b6f226a".device = "/dev/disk/by-uuid/0f6e3603-084c-4438-9749-36b31b6f226a";
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/F0E6-4DF3";
+ fsType = "vfat";
+ options = [ "fmask=0077" "dmask=0077" ];
+ };
+
+ swapDevices = [ ];
+
+ # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
+ # (the default) this is the recommended approach. When using systemd-networkd it's
+ # still possible to use this option, but it's recommended to use it in conjunction
+ # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.enp1s0f0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/modules/work/home-manager.nix b/modules/work/home-manager.nix
new file mode 100644
index 0000000..c3ee4d9
--- /dev/null
+++ b/modules/work/home-manager.nix
@@ -0,0 +1,81 @@
+{ lib, pkgs, inputs, ... }:
+{
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.extraSpecialArgs = { inherit inputs; };
+ home-manager.users.jras = {
+ imports = [
+ ../home-manager/core
+
+ ../home-manager/hyprland.nix
+ ../home-manager/hostnet.nix
+ ../home-manager/php.nix
+ ../home-manager/ansible.nix
+ ../home-manager/python.nix
+ ];
+
+ home.username = "jras";
+ home.homeDirectory = "/home/jras";
+ home.stateVersion = "22.11";
+ home.sessionPath = [ "$HOME/.local/bin" ];
+
+ home.packages = with pkgs; [
+ slack
+ moonlight-qt
+ brightnessctl
+ google-chrome
+ ];
+
+ programs.git = {
+ userName = "Jasper Ras";
+ userEmail = lib.mkForce "jras@hostnet.nl";
+ extraConfig = { gitreview.username = "jrasper"; };
+ ignores = [
+ ".direnv"
+ ".envrc"
+ ".project"
+ ".settings/"
+ ".buildpath"
+ "tags"
+ ".hhconfig"
+ ".DS_Store"
+ ".idea/"
+ ".vagrant/"
+ "*.swp"
+ "clover.xml"
+ "yarn-error.log"
+ "gsuite-auth.json"
+ "venv/"
+ "shell.nix"
+
+ ".devenv*"
+ "devenv*"
+ ".pre-commit-config.yaml"
+ ];
+ };
+
+ programs.zsh.initExtra = ''
+ eval "$(dircolors)"
+ '';
+ programs.zsh.shellAliases = {
+ ssh = "TERM=xterm-256color ssh";
+ };
+
+ programs.pyenv.enable = true;
+ programs.pyenv.enableZshIntegration = true;
+ programs.ssh = {
+ controlMaster = "auto";
+ controlPersist = "12h";
+ serverAliveInterval = 11;
+ matchBlocks = {
+ "*.g1i.one".user = "jasras";
+ "*.os1.openstack.group.one".user = "jasras";
+ "*.one.com".user = "jasras";
+ "91.184.16.185".port = 12345;
+ "*.compute.prv.vps1-testpod-cph3.one.com".forwardAgent = true;
+ "access.*.one.com".forwardAgent = true;
+ "access.*.g1i.one".forwardAgent = true;
+ };
+ };
+ };
+}
diff --git a/modules/work/networking.nix b/modules/work/networking.nix
new file mode 100644
index 0000000..99ba8d7
--- /dev/null
+++ b/modules/work/networking.nix
@@ -0,0 +1,87 @@
+{ pkgs, config, ... }:
+{
+ environment.systemPackages = with pkgs; [
+ networkmanager-openvpn
+ ];
+
+ networking.hostName = "work";
+ networking.networkmanager.enable = true;
+ networking.networkmanager.dns = "systemd-resolved";
+ networking.nameservers = [ "1.1.1.1" ];
+
+ services.openvpn.servers = {
+ ghostnet = {
+ config = ''
+ client
+ remote 185.57.9.6 1194
+ cert ${config.age.secrets.ghostnet-cert.path}
+ key ${config.age.secrets.ghostnet-key.path}
+ ca ${config.age.secrets.ghostnet-ca.path}
+ auth-user-pass ${config.age.secrets.ghostnet-auth-user-pass.path}
+ reneg-sec 0
+ cipher AES-256-CBC
+ comp-lzo adaptive
+ dev tun
+ proto udp
+ remote-cert-tls server
+ tls-auth ${config.age.secrets.ghostnet-tls-auth.path} 1
+ nobind
+ auth-nocache
+ script-security 2
+ persist-key
+ persist-tun
+ user nm-openvpn
+ group nm-openvpn
+ '';
+ updateResolvConf = false;
+ autoStart = false;
+ };
+ systems = {
+ config = ''
+ client
+ remote 'vpn-v2.one.com'
+ cert '${config.age.secrets.systems-cert.path}'
+ key '${config.age.secrets.systems-key.path}'
+ ca '${config.age.secrets.systems-ca.path}'
+ cipher AES-128-CBC
+ comp-lzo adaptive
+ dev tun
+ proto udp
+ port 1200
+ remote-cert-tls server
+ tls-auth '${config.age.secrets.systems-tls-auth.path}' 1
+ nobind
+ auth-nocache
+ script-security 2
+ persist-key
+ persist-tun
+ user nm-openvpn
+ group nm-openvpn
+ '';
+ updateResolvConf = false;
+ autoStart = false;
+ };
+ };
+
+ programs.update-systemd-resolved.servers = {
+ ghostnet = {
+ includeAutomatically = true;
+ settings = {
+ routeOnlyDomains = [ "hostnetbv.nl." ];
+ defaultRoute = false;
+ multicastDNS = "no";
+ dnsOverTLS = "opportunistic";
+ dnssec = "no";
+ };
+ };
+ };
+
+ services.resolved = {
+ enable = true;
+ dnssec = "true";
+ domains = [ "~." ];
+ fallbackDns = [ "1.1.1.1" ];
+ dnsovertls = "opportunistic";
+ llmnr = "true";
+ };
+}
diff --git a/modules/work/secrets.nix b/modules/work/secrets.nix
new file mode 100644
index 0000000..d13599d
--- /dev/null
+++ b/modules/work/secrets.nix
@@ -0,0 +1,13 @@
+{ ... }:
+{
+ age.secrets.ghostnet-cert.file = ../../secrets/ghostnet-cert.age;
+ age.secrets.ghostnet-key.file = ../../secrets/ghostnet-key.age;
+ age.secrets.ghostnet-ca.file = ../../secrets/ghostnet-ca.age;
+ age.secrets.ghostnet-tls-auth.file = ../../secrets/ghostnet-tls-auth.age;
+ age.secrets.ghostnet-auth-user-pass.file = ../../secrets/ghostnet-auth-user-pass.age;
+
+ age.secrets.systems-cert.file = ../../secrets/systems-cert.age;
+ age.secrets.systems-key.file = ../../secrets/systems-key.age;
+ age.secrets.systems-ca.file = ../../secrets/systems-ca.age;
+ age.secrets.systems-tls-auth.file = ../../secrets/systems-tls-auth.age;
+}