diff options
author | Jasper Ras <jras@hostnet.nl> | 2025-02-12 08:19:04 +0100 |
---|---|---|
committer | Jasper Ras <jras@hostnet.nl> | 2025-02-12 08:19:04 +0100 |
commit | 07f84bb581e369ff79100f0417e9d277f3c1fb61 (patch) | |
tree | 64ec899f185a3d794791df191f53939dbc67be41 /modules | |
parent | 8fe481c0858702231335ad6c5eb850b293781b61 (diff) |
alot of stuff
Diffstat (limited to 'modules')
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; +} |