From c1cef0f7eafaf85bbae9878b92971a97d7583247 Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Wed, 24 Sep 2025 13:35:39 -0500 Subject: changes; im lazy --- hosts/mercury/ai.nix | 2 +- hosts/mercury/config.nix | 1 + hosts/mercury/nixos.nix | 1 - modules/boot/nixos/default.nix | 10 ++++++++-- modules/terminal/hjem/default.nix | 2 ++ modules/terminal/hjem/programs/bash.nix | 27 ++++++++++++++------------- modules/terminal/hjem/programs/fish.nix | 15 +++++++++++++++ modules/terminal/hjem/programs/starship.nix | 5 ----- modules/terminal/nixos/bash.nix | 16 ++++++++++++++++ modules/terminal/nixos/default.nix | 4 ++++ 10 files changed, 61 insertions(+), 22 deletions(-) create mode 100644 modules/terminal/nixos/bash.nix diff --git a/hosts/mercury/ai.nix b/hosts/mercury/ai.nix index 42a478a..1ce6c25 100644 --- a/hosts/mercury/ai.nix +++ b/hosts/mercury/ai.nix @@ -3,5 +3,5 @@ enable = true; loadModels = ["deepseek-r1:1.5b"]; }; - environment.systemPackages = [pkgs.mcphost]; + # environment.systemPackages = [pkgs.mcphost]; } diff --git a/hosts/mercury/config.nix b/hosts/mercury/config.nix index d5f0832..d72277a 100644 --- a/hosts/mercury/config.nix +++ b/hosts/mercury/config.nix @@ -43,6 +43,7 @@ terminal = { shells.fish.enable = true; + shells.bash.enable = true; # for nix-shells programs = { tmux.enable = true; diff --git a/hosts/mercury/nixos.nix b/hosts/mercury/nixos.nix index 05e84a7..dfed04f 100644 --- a/hosts/mercury/nixos.nix +++ b/hosts/mercury/nixos.nix @@ -7,7 +7,6 @@ imports = [ ./disks.nix ./battery.nix - ./ai.nix inputs.nixos-facter-modules.nixosModules.facter {facter.reportPath = ./facter.json;} diff --git a/modules/boot/nixos/default.nix b/modules/boot/nixos/default.nix index 66f31fc..06e68c3 100644 --- a/modules/boot/nixos/default.nix +++ b/modules/boot/nixos/default.nix @@ -24,7 +24,7 @@ in { configurationLimit = 3; }; efi.canTouchEfiVariables = true; - timeout = 0; + timeout = 0; # hold space to show boot menu }; } // (lib.optionalAttrs cfg.secureBoot.enable { @@ -34,5 +34,11 @@ in { }; }); - environment.systemPackages = lib.mkIf cfg.secureBoot.enable [pkgs.sbctl]; + environment.systemPackages = + ( + if cfg.secureBoot.enable + then [pkgs.sbctl] + else [] + ) + ++ [pkgs.efibootmgr]; } diff --git a/modules/terminal/hjem/default.nix b/modules/terminal/hjem/default.nix index 7915319..681c3b3 100644 --- a/modules/terminal/hjem/default.nix +++ b/modules/terminal/hjem/default.nix @@ -10,6 +10,8 @@ ./programs/broot.nix ./programs/cmus.nix ./programs/helix.nix + ./programs/fish.nix + ./programs/bash.nix ]; } diff --git a/modules/terminal/hjem/programs/bash.nix b/modules/terminal/hjem/programs/bash.nix index 646cbf8..fe6f21d 100644 --- a/modules/terminal/hjem/programs/bash.nix +++ b/modules/terminal/hjem/programs/bash.nix @@ -8,22 +8,23 @@ in lib.mkIf cfg.enable { files = { - ".bashrc".text = '' + ".config/bash/bashrc".text = '' eval "$(direnv hook bash)" for file in ~/.config/bash/conf.d/*; do source "$file"; done ''; - - packages = with pkgs; [ - fish - ripgrep - fd - moreutils - zip - unzip - btop - jq - direnv - ]; }; + + packages = with pkgs; [ + fish + ripgrep + fd + wget + moreutils + zip + unzip + btop + jq + direnv + ]; } diff --git a/modules/terminal/hjem/programs/fish.nix b/modules/terminal/hjem/programs/fish.nix index 1aa4a40..2fdc184 100644 --- a/modules/terminal/hjem/programs/fish.nix +++ b/modules/terminal/hjem/programs/fish.nix @@ -8,6 +8,20 @@ in lib.mkIf cfg.enable { files = { + ".config/fish/conf.d/xdg.fish".text = + # fish + '' + set -gx XDG_DATA_HOME "$HOME/.local/share" + set -gx XDG_CONFIG_HOME "$HOME/.config" + set -gx XDG_STATE_HOME "$HOME/.local/state" + set -gx XDG_CACHE_HOME "$HOME/.cache" + + alias wget "wget --hsts-file=/dev/null" + set -gx GOPATH "$XDG_DATA_HOME/go" + set -gx GRADLE_USER_HOME "$XDG_DATA_HOME/gradle" + set -gx CARGO_HOME "$XDG_DATA_HOME/cargo" + ''; + ".config/fish/config.fish".text = '' set fish_greeting @@ -24,6 +38,7 @@ in fish ripgrep fd + wget moreutils zip unzip diff --git a/modules/terminal/hjem/programs/starship.nix b/modules/terminal/hjem/programs/starship.nix index e9d79b5..7f537d9 100644 --- a/modules/terminal/hjem/programs/starship.nix +++ b/modules/terminal/hjem/programs/starship.nix @@ -51,11 +51,6 @@ in starship init fish | source enable_transience ''; - }) - // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable { - ".config/bash/conf.d/starship.bash".text = '' - eval "$(starship init bash)" - ''; }); packages = [pkgs.starship]; diff --git a/modules/terminal/nixos/bash.nix b/modules/terminal/nixos/bash.nix new file mode 100644 index 0000000..393ab94 --- /dev/null +++ b/modules/terminal/nixos/bash.nix @@ -0,0 +1,16 @@ +{ + config, + lib, + ... +}: let + cfg = config.collinux.terminal.shells.bash; +in + lib.mkIf cfg.enable { + environment.etc = { + "bashrc.local".text = '' + if [ -s "''${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc" ]; then + . "''${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc" + fi + ''; + }; + } diff --git a/modules/terminal/nixos/default.nix b/modules/terminal/nixos/default.nix index 8118c63..4ececfa 100644 --- a/modules/terminal/nixos/default.nix +++ b/modules/terminal/nixos/default.nix @@ -1,6 +1,10 @@ {config, ...}: let cfg = config.collinux.terminal.shells; in { + imports = [ + ./bash.nix + ]; + programs.command-not-found.enable = false; # broken without nix-channels users.users."${config.collinux.user.name}" = { -- cgit v1.3.1 From 9882f579108d7c39589c7e96b428dced121bd31a Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Tue, 30 Sep 2025 20:56:26 -0500 Subject: move tmux config to its own flake --- flake.lock | 44 +++- flake.nix | 6 + modules/terminal/hjem/programs/tmux.nix | 346 +++----------------------------- 3 files changed, 63 insertions(+), 333 deletions(-) diff --git a/flake.lock b/flake.lock index e6be991..7f0e324 100644 --- a/flake.lock +++ b/flake.lock @@ -22,11 +22,11 @@ ] }, "locked": { - "lastModified": 1757508292, - "narHash": "sha256-7lVWL5bC6xBIMWWDal41LlGAG+9u2zUorqo3QCUL4p4=", + "lastModified": 1758287904, + "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", "owner": "nix-community", "repo": "disko", - "rev": "146f45bee02b8bd88812cfce6ffc0f933788875a", + "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", "type": "github" }, "original": { @@ -38,11 +38,11 @@ "firefox-csshacks": { "flake": false, "locked": { - "lastModified": 1757991741, - "narHash": "sha256-O9SXRWmXdzJXu/BgmunVUV15EriheCkAb7VEdwTjemM=", + "lastModified": 1758547398, + "narHash": "sha256-oIXXuQI65ZrJFD1/0bmgsJqD1SyjEjZocJvO9YeRqOI=", "owner": "MrOtherGuy", "repo": "firefox-csshacks", - "rev": "41e003708fb3cbd8fc9985447d267381ce8c6a26", + "rev": "c9cc22f418c794c5efe326aa109eed6427d86543", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1757745802, - "narHash": "sha256-hLEO2TPj55KcUFUU1vgtHE9UEIOjRcH/4QbmfHNF820=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c23193b943c6c689d70ee98ce3128239ed9e32d1", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", "type": "github" }, "original": { @@ -221,7 +221,8 @@ "lanzaboote": "lanzaboote", "nixos-facter-modules": "nixos-facter-modules", "nixpkgs": "nixpkgs", - "system-manager": "system-manager" + "system-manager": "system-manager", + "tmux-tsunami": "tmux-tsunami" } }, "rust-overlay": { @@ -324,6 +325,29 @@ "repo": "default", "type": "github" } + }, + "tmux-tsunami": { + "inputs": { + "hjem": [ + "hjem" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1759283700, + "narHash": "sha256-ERGJ4cPxSdQ93ZTvVA5OYc5wGRUDRVDWcAdehLuzws0=", + "owner": "bluedragon1221", + "repo": "tmux-tsunami", + "rev": "0c0a8ebd9a442e2978fb65296f67ec0759330d60", + "type": "github" + }, + "original": { + "owner": "bluedragon1221", + "repo": "tmux-tsunami", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 6467578..462424f 100644 --- a/flake.nix +++ b/flake.nix @@ -25,6 +25,12 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + tmux-tsunami = { + url = "github:bluedragon1221/tmux-tsunami"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.hjem.follows = "hjem"; + }; + firefox-csshacks = { url = "github:MrOtherGuy/firefox-csshacks"; flake = false; diff --git a/modules/terminal/hjem/programs/tmux.nix b/modules/terminal/hjem/programs/tmux.nix index 6ff485c..fd2737e 100644 --- a/modules/terminal/hjem/programs/tmux.nix +++ b/modules/terminal/hjem/programs/tmux.nix @@ -1,330 +1,30 @@ { + pkgs, + inputs, lib, config, - pkgs, ... }: let cfg = config.collinux.terminal.programs.tmux; - - scriptsDir = "~/.config/tmux/scripts"; - - scripts.minibuffer = '' - window_height="$(tmux display -p '#{window_height}')" - tmux display-popup -EB \ - -w 100% -h 16 \ - -x 0 -y "$(($window_height + 1))" \ - "$@" - ''; - - scripts.menu = '' - tmux display-menu \ - -x "#{window_width}" -y S \ - -b none \ - -s "bg=#313244,fg=#9399b2" \ - -S "bg=#313244" \ - -H "bg=#45475a fg=#b4befe" \ - "$@" - ''; - - scripts.paneSplit = '' - width=$(tmux display -p "#{pane_width}") - height=$(tmux display -p "#{pane_height}") - - if (( $(echo "$width / $height > 2.5" | ${pkgs.bc}/bin/bc -l) )); then - tmux split-window -h "$@" - else - tmux split-window -v "$@" - fi - ''; - - # -- SESSIONIZER -- - broot_sessionizer_config = { - imports = ["~/.config/broot/conf.toml"]; - quit_on_last_cancel = true; - verbs = [ - { - invocation = "sessionizer"; - external = ''bash -c -- "${scriptsDir}/sessionizer.sh '{file}'"''; - key = "enter"; - apply_to = "directory"; - leave_broot = true; - } - ]; - }; - - scripts.sessionizer = '' - selected="$1" - - session_name="$(basename "$selected" | tr '.' '_')" - - # if the session doesn't exist, create it - if tmux list-sessions -F '#{session_name}' | grep -vqx "$session_name"; then - tmux new-session -ds "$session_name" -c "$selected" - tmux set-option -t "$session_name" @default-path "$selected" - fi - - # switch to it - tmux switch -t "$session_name" - ''; - - scripts.newSession = '' - tmux switch-client -t "$(tmux new-session -dP)" - ''; - - scripts.sessionsMenu = '' - menu_items=( - "Switch Project" p "run-shell '${scriptsDir}/minibuffer.sh -d $HOME ${scriptsDir}/launch-sessionizer.sh'" - "New Unnamed Project" n "run-shell '${scriptsDir}/new-session.sh'" - ) - - # Get all tmux session names - mapfile -t sessions < <(tmux list-sessions -F "#{session_name}") - - # Only include up to 9 sessions - for i in "''\${!sessions[@]}"; do - (( i >= 9 )) && break # Stop after 9 sessions - - session="''\${sessions[$i]}" - key=$((i + 1)) # 1-based key - - menu_items+=("$session" "$key" "switch-client -t $session") - done - - # Display the menu - ${scriptsDir}/menu.sh -T "#[align=centre]Projects" "''\${menu_items[@]}" - ''; - - scripts.cleanSessions = '' - current="$(tmux display -p '#{session_name}')" - - tmux list-sessions -F '#{session_name}' | while read -r line; do - if [[ "$line" != "$current" && "$line" =~ ^[[:digit:]]+$ ]]; then - tmux kill-session -t "$line" - fi - done - ''; - - scripts.launchSessionizer = ''broot --only-folders --conf ~/.config/tmux/broot/sessionizer.toml''; - - # -- FIND FILE -- - broot_file_config = { - imports = ["~/.config/broot/conf.toml"]; - quit_on_last_cancel = true; - verbs = [ - { - invocation = "tmux-split"; - external = ["bash" "-c" ''${scriptsDir}/split.sh -c "#{?@default-path,#{@default-path},#{pane_current_path}}" "hx '{file}'"'']; - key = "ctrl-s"; - apply_to = "file"; - leave_broot = true; - } - { - invocation = "tmux-window"; - external = ["tmux" "new-window" "-c" "#{?@default-path,#{@default-path},#{pane_current_path}}" "hx '{file}'"]; - key = "ctrl-w"; - apply_to = "file"; - leave_broot = true; - } - { - key = "enter"; - cmd = ":tmux-window"; - } - ]; - }; - - scripts.launchFindFile = ''broot --conf ~/.config/tmux/broot/file.toml''; - - # -- BAR -- - scripts.battery = '' - energy_now=$(cat /sys/class/power_supply/BAT0/energy_now) - energy_full=$(cat /sys/class/power_supply/BAT0/energy_full) - percentage=$((energy_now * 100 / energy_full)) - printf "%.0f%%" "$percentage" - ''; - - scripts.bar = '' - bg="#1e1e2e" - - tmux set -g status on - - tmux set -g status-position bottom - tmux set -g status-justify absolute-centre - tmux set -g status-bg "$bg" - - tmux set -g status-left-style fg=green,bold - tmux set -g status-left " #{client_session}" - - tmux set -g window-status-style fg=color243 - tmux set -g window-status-format " #I " - tmux set -g window-status-current-style fg=color12,bold - tmux set -g window-status-current-format " #I " - tmux set -g window-status-separator "" - - tmux set -g status-right "#[fg=color243]%l:%M #[fg=red]#(${scriptsDir}/battery.sh) " - - bg_dark="#181825" - - ## pane borders - tmux set -g pane-border-style fg=$bg_dark,bg=$bg_dark - tmux set -g pane-active-border-style fg=$bg_dark,bg=$bg_dark - - ## pane backgrounds - # Set the foreground/background color for the active window - tmux set -g window-active-style bg=$bg - - # Set the foreground/background color for all other windows - tmux set -g window-style bg=$bg_dark - ''; - - # -- FZF EXEC -- - scripts.tmuxDoc = '' - usage=$(tmux list-commands -F "#{command_list_name} #{command_list_usage}" "$1") - - man tmux | awk -v usage="$usage" ' - index($0, usage) > 0 { found=1 } - found { - print - if ($0 == "") exit - } - ' - ''; - - scripts.fzfExec = '' - all_cmds() { - tmux list-commands -F $'#{command_list_name}#{?command_list_alias,\n#{command_list_alias},}' - } - - selected_cmd=$(all_cmds | fzf --bind 'enter:accept-or-print-query,tab:replace-query,alt-backspace:clear-query' --prompt : --preview "~/.config/tmux/scripts/tmux-doc.sh $(printf '{}' | cut -d' ' -f1)") - test -z "$selected_cmd" && exit - - tmux $(echo "$selected_cmd" | sed "s@~@$HOME@g") - ''; - - # -- BUFFER SEARCH -- - scripts.searchBuffer = '' - trap 'rm -f -- "''\${scrollback:-}"' EXIT - scrollback="$(mktemp)" - - tmux capture-pane -e -p -S - > "$scrollback" - cat "$scrollback" | fzf --ansi - - exit 0 - ''; - - # -- PANE SEARCH -- - scripts.paneSearch = '' - LIST_DATA="#{window_name} #{pane_title} #{pane_current_path} #{pane_current_command}" - FZF_COMMAND="fzf --delimiter=: --with-nth 4 --color=hl:2" - - # do not change - TARGET_SPEC="#{session_name}:#{window_id}:#{pane_id}:" - - # select pane - LINE=$(tmux list-panes -a -F "$TARGET_SPEC $LIST_DATA" | $FZF_COMMAND) || exit 0 - # split the result - args=(''\${LINE//:/ }) - # activate session/window/pane - tmux select-pane -t ''\${args[2]} && tmux select-window -t ''\${args[1]} && tmux switch-client -t ''\${args[0]} - ''; - - # -- LEADER MENU -- - scripts.leaderMenu = '' - ${scriptsDir}/menu.sh -T "#[align=centre]Prefix" \ - "+Projects" C-p "run-shell ${scriptsDir}/sessions-menu.sh" \ - "Find File" C-f "run-shell \"${scriptsDir}/minibuffer.sh -d '#{?@default-path,#{@default-path},#{pane_current_path}}' '${scriptsDir}/launch-find-file.sh'\"" \ - "Find Window" C-w "run-shell \"${scriptsDir}/minibuffer.sh '${scriptsDir}/pane-search.sh'\"" \ - "Detach" C-d "detach" \ - "Lazygit" C-g "display-popup -E -w 80% -h 80% -x C -y C -d '#{?@default-path,#{@default-path},#{pane_current_path}}' lazygit" \ - "Search Buffer" / "run-shell \"${scriptsDir}/minibuffer.sh '${scriptsDir}/search-buffer.sh'\"" \ - "Todo" C-o "display-popup -E -w 70% -h 70% -x C -y C 'hx ~/Documents/todo.txt'" \ - "Reload" C-r "source-file ~/.config/tmux/tmux.conf" - ''; - - tmux-conf = '' - set -g mouse on - - # Panes - bind-key -n C-w kill-pane - - bind -n C-Enter run-shell "${scriptsDir}/split.sh -c '#{?@default-path,#{@default-path},#{pane_current_path}}'" - - unbind -n MouseDown3Pane ## disable right click menu - bind-key -n M-z resize-pane -Z ## Pane zoom - set -g allow-rename on - set -g automatic-rename off - - # Windows - bind-key -n C-t new-window -c '#{?@default-path,#{@default-path},#{pane_current_path}}' - bind-key -n C-Tab next-window - bind-key -n C-S-Tab previous-window # doesn't work in foot :( - unbind n - unbind p - - set -g renumber-windows on - set -g base-index 1 - - bind-key -n C-x run-shell "${scriptsDir}/leader-menu.sh" - bind-key -n M-x run-shell "${scriptsDir}/minibuffer.sh -h 10 '${scriptsDir}/fzf-exec.sh'" - - set-hook -ag client-detached 'run-shell ${scriptsDir}/clean-sessions.sh' - set-hook -ag client-session-changed 'run-shell ${scriptsDir}/clean-sessions.sh' - - # Statusbar - run-shell "${scriptsDir}/bar.sh" - - # Scrollback - set-window-option -g mode-keys vi - ''; -in - lib.mkIf cfg.enable { - files = let - e = text: { - inherit text; - executable = true; - }; - in { - # helpers - ".config/tmux/scripts/minibuffer.sh" = e scripts.minibuffer; - ".config/tmux/scripts/menu.sh" = e scripts.menu; - ".config/tmux/scripts/split.sh" = e scripts.paneSplit; - - # sessionizer - ".config/tmux/scripts/sessionizer.sh" = e scripts.sessionizer; - ".config/tmux/broot/sessionizer.toml" = { - generator = (pkgs.formats.toml {}).generate "sessionizer.toml"; - value = broot_sessionizer_config; - }; - ".config/tmux/scripts/launch-sessionizer.sh" = e scripts.launchSessionizer; - ".config/tmux/scripts/clean-sessions.sh" = e scripts.cleanSessions; - ".config/tmux/scripts/new-session.sh" = e scripts.newSession; - ".config/tmux/scripts/sessions-menu.sh" = e scripts.sessionsMenu; - - # find-file - ".config/tmux/scripts/launch-find-file.sh" = e scripts.launchFindFile; - ".config/tmux/broot/file.toml" = { - generator = (pkgs.formats.toml {}).generate "file.toml"; - value = broot_file_config; - }; - - # search buffer - ".config/tmux/scripts/search-buffer.sh" = e scripts.searchBuffer; - - # pane search - ".config/tmux/scripts/pane-search.sh" = e scripts.paneSearch; - - # fzf-exec - ".config/tmux/scripts/tmux-doc.sh" = e scripts.tmuxDoc; - ".config/tmux/scripts/fzf-exec.sh" = e scripts.fzfExec; - - # leader menu - ".config/tmux/scripts/leader-menu.sh" = e scripts.leaderMenu; - - # Bar - ".config/tmux/scripts/battery.sh" = e scripts.battery; - ".config/tmux/scripts/bar.sh" = e scripts.bar; - - ".config/tmux/tmux.conf".text = tmux-conf; +in { + imports = [ + inputs.tmux-tsunami.hjemModules.tsunami + ]; + + config = lib.mkIf cfg.enable { + tsunami = { + enable = true; + keys.leader = [ + { + name = "Lazygit"; + key = "C-g"; + exec = "display-popup -E -w 80% -h 80% -x C -y C -d '#{?@default-path,#{@default-path},#{pane_current_path}}' ${lib.getExe pkgs.lazygit}"; + } + ]; + confs."main" = '' + set -g mouse on + set-window-option -g mode-keys vi + ''; }; - - packages = [pkgs.tmux]; - } + }; +} -- cgit v1.3.1 From cdad26dfda64e94d19db576e93793ded9434bd09 Mon Sep 17 00:00:00 2001 From: Collin Williams <96917990+bluedragon1221@users.noreply.github.com> Date: Sun, 30 Nov 2025 16:35:17 -0600 Subject: changes from a long time ago. --- flake.lock | 204 +- flake.nix | 18 +- hosts/ganymede/facter.json | 4383 +++++++++++++++++++++++++ hosts/ganymede/iwlwifi.nix | 23 + hosts/ganymede/nixos.nix | 10 +- hosts/jupiter/system.nix | 4 +- hosts/mercury/ai.nix | 5 +- hosts/mercury/config.nix | 24 +- hosts/mercury/hintergrund2.png | Bin 0 -> 11700308 bytes hosts/mercury/nixos.nix | 16 +- hosts/mercury/riverboats.png | Bin 0 -> 26692151 bytes lib/lib.nix | 20 +- modules/desktop/hjem/default.nix | 2 + modules/desktop/hjem/gtk.nix | 27 +- modules/desktop/hjem/programs/foot.nix | 61 +- modules/desktop/hjem/programs/research.nix | 47 + modules/desktop/hjem/wm/default.nix | 147 + modules/desktop/hjem/wm/dunst.nix | 27 +- modules/desktop/hjem/wm/fuzzel.nix | 28 +- modules/desktop/hjem/wm/niri.nix | 119 + modules/desktop/hjem/wm/sway.nix | 10 +- modules/desktop/nixos/greeters/greetd.nix | 2 +- modules/desktop/nixos/programs/firefox.nix | 15 +- modules/desktop/options.nix | 33 +- modules/nix/nixos/default.nix | 6 +- modules/options.nix | 95 +- modules/services/nixos/audio.nix | 2 +- modules/services/nixos/networking/default.nix | 2 + modules/terminal/hjem/programs/cmus.nix | 74 +- modules/terminal/hjem/programs/fzf.nix | 16 +- modules/terminal/hjem/programs/helix.nix | 12 +- modules/terminal/hjem/programs/tmux.nix | 45 + modules/terminal/options.nix | 16 +- modules/user/nixos/default.nix | 2 +- 34 files changed, 5270 insertions(+), 225 deletions(-) create mode 100644 hosts/ganymede/facter.json create mode 100644 hosts/ganymede/iwlwifi.nix create mode 100644 hosts/mercury/hintergrund2.png create mode 100644 hosts/mercury/riverboats.png create mode 100644 modules/desktop/hjem/wm/default.nix create mode 100644 modules/desktop/hjem/wm/niri.nix diff --git a/flake.lock b/flake.lock index 7f0e324..4c34f1e 100644 --- a/flake.lock +++ b/flake.lock @@ -38,11 +38,11 @@ "firefox-csshacks": { "flake": false, "locked": { - "lastModified": 1758547398, - "narHash": "sha256-oIXXuQI65ZrJFD1/0bmgsJqD1SyjEjZocJvO9YeRqOI=", + "lastModified": 1760110610, + "narHash": "sha256-p5mxDrxlQ7itJ3Y5ZC/ge5ym1vmKpjpC9EQo2KQfZAQ=", "owner": "MrOtherGuy", "repo": "firefox-csshacks", - "rev": "c9cc22f418c794c5efe326aa109eed6427d86543", + "rev": "a53bb3bf96a050719f68535acf9a71a67a2af15e", "type": "github" }, "original": { @@ -52,6 +52,21 @@ } }, "flake-compat": { + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1747046372, @@ -68,6 +83,24 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1759362264, + "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "758cf7296bee11f1706a574c77d072b8a7baa881", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "lanzaboote", @@ -88,6 +121,24 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -112,17 +163,18 @@ }, "hjem": { "inputs": { + "ndg": "ndg", "nixpkgs": [ "nixpkgs" ], "smfh": "smfh" }, "locked": { - "lastModified": 1757733237, - "narHash": "sha256-q57LxLzOQuW0ROtoBMMPbG8neBYa6LizRH9FVOQkkLQ=", + "lastModified": 1760328401, + "narHash": "sha256-/sGqPoyYJohw1ZmcMxEYvx9Qdui6X7bNjCLx9Jmul3c=", "owner": "feel-co", "repo": "hjem", - "rev": "627b34efad55fd42d6dd52c19c796604d2b8e8bd", + "rev": "31f969f69f02b62e417bcc39571a605977cb89fa", "type": "github" }, "original": { @@ -134,8 +186,8 @@ "lanzaboote": { "inputs": { "crane": "crane", - "flake-compat": "flake-compat", - "flake-parts": "flake-parts", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts_2", "nixpkgs": [ "nixpkgs" ], @@ -156,6 +208,45 @@ "type": "github" } }, + "multibg-wayland": { + "flake": false, + "locked": { + "lastModified": 1756985778, + "narHash": "sha256-D3YMTn+YVfqXm9+g4gDw/fegidBgco3VbMSlZBt2ysI=", + "owner": "gergo-salyi", + "repo": "multibg-wayland", + "rev": "6574f43432c46a9afd6f0fd1e44b7ed7f625ebc3", + "type": "github" + }, + "original": { + "owner": "gergo-salyi", + "repo": "multibg-wayland", + "type": "github" + } + }, + "ndg": { + "inputs": { + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "nixpkgs": [ + "hjem", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1760102695, + "narHash": "sha256-DyamtLt6KW/qkNs/kMnF/E+xlf6iFBMMF3m54boTHeY=", + "owner": "feel-co", + "repo": "ndg", + "rev": "6319eb4afa6fd42be5c8c9ed012e95e3f32c16eb", + "type": "github" + }, + "original": { + "owner": "feel-co", + "repo": "ndg", + "type": "github" + } + }, "nixos-facter-modules": { "locked": { "lastModified": 1756491981, @@ -173,11 +264,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1758690382, - "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", + "lastModified": 1760284886, + "narHash": "sha256-TK9Kr0BYBQ/1P5kAsnNQhmWWKgmZXwUQr4ZMjCzWf2c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e643668fd71b949c53f8626614b21ff71a07379d", + "rev": "cf3f5c4def3c7b5f1fc012b3d839575dbe552d43", "type": "github" }, "original": { @@ -187,6 +278,43 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1754788789, + "narHash": "sha256-x2rJ+Ovzq0sCMpgfgGaaqgBSwY+LST+WbZ6TytnT9Rk=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "a73b9c743612e4244d865a2fdee11865283c04e6", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nocargo": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": [ + "nixpkgs" + ], + "registry-crates-io": "registry-crates-io" + }, + "locked": { + "lastModified": 1745995660, + "narHash": "sha256-Cca7/uDRwfo4UnPhZX31+vQ7chKr9nJsMvwykGllDVA=", + "owner": "oxalica", + "repo": "nocargo", + "rev": "089f487c2c123454c8b9a381a99999b63c53d1d6", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "nocargo", + "type": "github" + } + }, "pre-commit-hooks-nix": { "inputs": { "flake-compat": [ @@ -213,14 +341,32 @@ "type": "github" } }, + "registry-crates-io": { + "flake": false, + "locked": { + "lastModified": 1704732624, + "narHash": "sha256-FWX5JX33ievm6JuIEp1lI5EPndYt8s6anU+fQBYuFKc=", + "owner": "rust-lang", + "repo": "crates.io-index", + "rev": "4445fa0011e6ff9989985651bec57eb4cbefcadd", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "repo": "crates.io-index", + "type": "github" + } + }, "root": { "inputs": { "disko": "disko", "firefox-csshacks": "firefox-csshacks", "hjem": "hjem", "lanzaboote": "lanzaboote", + "multibg-wayland": "multibg-wayland", "nixos-facter-modules": "nixos-facter-modules", "nixpkgs": "nixpkgs", + "nocargo": "nocargo", "system-manager": "system-manager", "tmux-tsunami": "tmux-tsunami" } @@ -234,11 +380,11 @@ ] }, "locked": { - "lastModified": 1755225702, - "narHash": "sha256-i7Rgs943NqX0RgQW0/l1coi8eWBj3XhxVggMpjjzTsk=", + "lastModified": 1759113356, + "narHash": "sha256-xm4kEUcV2jk6u15aHazFP4YsMwhq+PczA+Ul/4FDKWI=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "4abaeba6b176979be0da0195b9e4ce86bc501ae4", + "rev": "be3b8843a2be2411500f6c052876119485e957a2", "type": "github" }, "original": { @@ -278,11 +424,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1755350122, - "narHash": "sha256-fTmAdnSPmEZlwAMTm/NEl4VibUAo+cerUuby1AYbKMM=", + "lastModified": 1759458325, + "narHash": "sha256-NY9sQlRPVVY7JWcZHtrK0T0RlH676NhaqR7Lco+FhTQ=", "owner": "feel-co", "repo": "smfh", - "rev": "5de4e315d61a7378f37ebdd39d42b6cf09a1b8cc", + "rev": "c29b22c328d6b03acaa6b879bf7f3c8ff82ca2d3", "type": "github" }, "original": { @@ -326,21 +472,33 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tmux-tsunami": { "inputs": { - "hjem": [ - "hjem" - ], "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1759283700, - "narHash": "sha256-ERGJ4cPxSdQ93ZTvVA5OYc5wGRUDRVDWcAdehLuzws0=", + "lastModified": 1759929245, + "narHash": "sha256-Hy7i6yGn7gQ2AYe9Wv1IT+SvBaWy5CPqc9pWPipunoQ=", "owner": "bluedragon1221", "repo": "tmux-tsunami", - "rev": "0c0a8ebd9a442e2978fb65296f67ec0759330d60", + "rev": "8a1d508232f2767d4ab4d0d7b2a5e21fd1a230b1", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 462424f..f019422 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,14 @@ { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + # determinate = { + # # I HATE FLAKEHUB + # url = "github:DeterminateSystems/determinate"; + # inputs = { + # nix.url = "github:DeterminateSystems/nix-src"; + # nixpkgs.follows = "nixpkgs"; + # }; + # }; disko = { url = "github:nix-community/disko"; @@ -9,14 +17,13 @@ nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; - lanzaboote = { - url = "github:nix-community/lanzaboote"; + nocargo = { + url = "github:oxalica/nocargo"; inputs.nixpkgs.follows = "nixpkgs"; }; - # for server that doesn't have nixos - system-manager = { - url = "github:numtide/system-manager"; + lanzaboote = { + url = "github:nix-community/lanzaboote"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -28,7 +35,6 @@ tmux-tsunami = { url = "github:bluedragon1221/tmux-tsunami"; inputs.nixpkgs.follows = "nixpkgs"; - inputs.hjem.follows = "hjem"; }; firefox-csshacks = { diff --git a/hosts/ganymede/facter.json b/hosts/ganymede/facter.json new file mode 100644 index 0000000..e55b063 --- /dev/null +++ b/hosts/ganymede/facter.json @@ -0,0 +1,4383 @@ +{ + "version": 1, + "system": "x86_64-linux", + "virtualisation": "none", + "hardware": { + "bios": { + "apm_info": { + "supported": false, + "enabled": false, + "version": 0, + "sub_version": 0, + "bios_flags": 0 + }, + "vbe_info": { + "version": 0, + "video_memory": 0 + }, + "pnp": false, + "pnp_id": 0, + "lba_support": false, + "low_memory_size": 0, + "smbios_version": 768 + }, + "bluetooth": [ + { + "index": 43, + "attached_to": 45, + "class_list": [ + "usb", + "bluetooth" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0115", + "name": "Bluetooth Device", + "value": 277 + }, + "vendor": { + "hex": "0bda", + "name": "Realtek", + "value": 3034 + }, + "device": { + "hex": "b023", + "name": "Bluetooth Radio", + "value": 45091 + }, + "revision": { + "hex": "0000", + "name": "1.10", + "value": 0 + }, + "serial": "00e04c000001", + "model": "Realtek Bluetooth Radio", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.0", + "sysfs_bus_id": "1-7:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "device_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v0BDApB023d0110dcE0dsc01dp01icE0isc01ip01in00" + }, + { + "index": 47, + "attached_to": 45, + "class_list": [ + "usb", + "bluetooth" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0115", + "name": "Bluetooth Device", + "value": 277 + }, + "vendor": { + "hex": "0bda", + "name": "Realtek", + "value": 3034 + }, + "device": { + "hex": "b023", + "name": "Bluetooth Radio", + "value": 45091 + }, + "revision": { + "hex": "0000", + "name": "1.10", + "value": 0 + }, + "serial": "00e04c000001", + "model": "Realtek Bluetooth Radio", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb1/1-7/1-7:1.1", + "sysfs_bus_id": "1-7:1.1", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "device_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "device_protocol": 1, + "interface_class": { + "hex": "00e0", + "name": "wireless", + "value": 224 + }, + "interface_subclass": { + "hex": "0001", + "name": "audio", + "value": 1 + }, + "interface_protocol": 1, + "interface_number": 1, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "btusb", + "driver_module": "btusb", + "drivers": [ + "btusb" + ], + "driver_modules": [ + "btusb" + ], + "module_alias": "usb:v0BDApB023d0110dcE0dsc01dp01icE0isc01ip01in01" + } + ], + "bridge": [ + { + "index": 13, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 28 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d10", + "value": 40208 + }, + "sub_device": { + "hex": "3848", + "value": 14408 + }, + "revision": { + "hex": "00f1", + "value": 241 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0", + "sysfs_bus_id": "0000:00:1c.0", + "resources": [ + { + "type": "irq", + "base": 120, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 1, + "irq": 120, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d00009D10sv000017AAsd00003848bc06sc04i00" + }, + { + "index": 15, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0001", + "name": "ISA bridge", + "value": 1 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d4e", + "value": 40270 + }, + "sub_device": { + "hex": "3812", + "value": 14354 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "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 + }, + "module_alias": "pci:v00008086d00009D4Esv000017AAsd00003812bc06sc01i00" + }, + { + "index": 16, + "attached_to": 21, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 0 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "15d3", + "value": 5587 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0002", + "value": 2 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:00.0", + "sysfs_bus_id": "0000:02:00.0", + "resources": [ + { + "type": "irq", + "base": 16, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 0, + "command": 7, + "header_type": 1, + "secondary_bus": 3, + "irq": 16, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00" + }, + { + "index": 19, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 28 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d15", + "value": 40213 + }, + "sub_device": { + "hex": "3844", + "value": 14404 + }, + "revision": { + "hex": "00f1", + "value": 241 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.5", + "sysfs_bus_id": "0000:00:1c.5", + "resources": [ + { + "type": "irq", + "base": 121, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 5, + "command": 1031, + "header_type": 1, + "secondary_bus": 108, + "irq": 121, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d00009D15sv000017AAsd00003844bc06sc04i00" + }, + { + "index": 21, + "attached_to": 13, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 1, + "number": 0 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "15d3", + "value": 5587 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0002", + "value": 2 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0", + "sysfs_bus_id": "0000:01:00.0", + "resources": [ + { + "type": "irq", + "base": 16, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 0, + "command": 7, + "header_type": 1, + "secondary_bus": 2, + "irq": 16, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00" + }, + { + "index": 23, + "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": "17aa", + "value": 6058 + }, + "device": { + "hex": "5914", + "value": 22804 + }, + "sub_device": { + "hex": "3815", + "value": 14357 + }, + "revision": { + "hex": "0008", + "value": 8 + }, + "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": "skl_uncore", + "driver_module": "intel_uncore", + "drivers": [ + "skl_uncore" + ], + "driver_modules": [ + "intel_uncore" + ], + "module_alias": "pci:v00008086d00005914sv000017AAsd00003815bc06sc00i00" + }, + { + "index": 26, + "attached_to": 21, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 2 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "15d3", + "value": 5587 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0002", + "value": 2 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0", + "sysfs_bus_id": "0000:02:02.0", + "resources": [ + { + "type": "irq", + "base": 18, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 0, + "command": 7, + "header_type": 1, + "secondary_bus": 55, + "irq": 18, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00" + }, + { + "index": 29, + "attached_to": 0, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 29 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d18", + "value": 40216 + }, + "sub_device": { + "hex": "3841", + "value": 14401 + }, + "revision": { + "hex": "00f1", + "value": 241 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1d.0", + "sysfs_bus_id": "0000:00:1d.0", + "resources": [ + { + "type": "irq", + "base": 122, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 109, + "irq": 122, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d00009D18sv000017AAsd00003841bc06sc04i00" + }, + { + "index": 31, + "attached_to": 21, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 1 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "15d3", + "value": 5587 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0002", + "value": 2 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:01.0", + "sysfs_bus_id": "0000:02:01.0", + "resources": [ + { + "type": "irq", + "base": 123, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 4, + "irq": 123, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00" + }, + { + "index": 35, + "attached_to": 21, + "class_list": [ + "pci", + "bridge" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 2, + "number": 4 + }, + "base_class": { + "hex": "0006", + "name": "Bridge", + "value": 6 + }, + "sub_class": { + "hex": "0004", + "name": "PCI bridge", + "value": 4 + }, + "pci_interface": { + "hex": "0000", + "name": "Normal decode", + "value": 0 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "15d3", + "value": 5587 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0002", + "value": 2 + }, + "model": "Intel PCI bridge", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:04.0", + "sysfs_bus_id": "0000:02:04.0", + "resources": [ + { + "type": "irq", + "base": 124, + "triggered": 0, + "enabled": true + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 1, + "secondary_bus": 56, + "irq": 124, + "prog_if": 0 + }, + "driver": "pcieport", + "drivers": [ + "pcieport" + ], + "module_alias": "pci:v00008086d000015D3sv00002222sd00001111bc06sc04i00" + } + ], + "cpu": [ + { + "architecture": "x86_64", + "vendor_name": "GenuineIntel", + "family": 6, + "model": 142, + "stepping": 10, + "features": [ + "fpu", + "vme", + "de", + "pse", + "tsc", + "msr", + "pae", + "mce", + "cx8", + "apic", + "sep", + "mtrr", + "pge", + "mca", + "cmov", + "pat", + "pse36", + "clflush", + "dts", + "acpi", + "mmx", + "fxsr", + "sse", + "sse2", + "ss", + "ht", + "tm", + "pbe", + "syscall", + "nx", + "pdpe1gb", + "rdtscp", + "lm", + "constant_tsc", + "art", + "arch_perfmon", + "pebs", + "bts", + "rep_good", + "nopl", + "xtopology", + "nonstop_tsc", + "cpuid", + "aperfmperf", + "pni", + "pclmulqdq", + "dtes64", + "monitor", + "ds_cpl", + "vmx", + "est", + "tm2", + "ssse3", + "sdbg", + "fma", + "cx16", + "xtpr", + "pdcm", + "pcid", + "sse4_1", + "sse4_2", + "x2apic", + "movbe", + "popcnt", + "tsc_deadline_timer", + "aes", + "xsave", + "avx", + "f16c", + "rdrand", + "lahf_lm", + "abm", + "3dnowprefetch", + "cpuid_fault", + "epb", + "pti", + "ssbd", + "ibrs", + "ibpb", + "stibp", + "tpr_shadow", + "flexpriority", + "ept", + "vpid", + "ept_ad", + "fsgsbase", + "tsc_adjust", + "sgx", + "bmi1", + "avx2", + "smep", + "bmi2", + "erms", + "invpcid", + "mpx", + "rdseed", + "adx", + "smap", + "clflushopt", + "intel_pt", + "xsaveopt", + "xsavec", + "xgetbv1", + "xsaves", + "dtherm", + "ida", + "arat", + "pln", + "pts", + "hwp", + "hwp_notify", + "hwp_act_window", + "hwp_epp", + "vnmi", + "md_clear", + "flush_l1d" + ], + "bugs": [ + "cpu_meltdown", + "spectre_v1", + "spectre_v2", + "spec_store_bypass", + "l1tf", + "mds", + "swapgs", + "itlb_multihit", + "srbds", + "mmio_stale_data", + "retbleed", + "gds" + ], + "bogo": 3600, + "cache": 6144, + "units": 16, + "physical_id": 0, + "siblings": 8, + "cores": 4, + "fpu": true, + "fpu_exception": true, + "cpuid_level": 22, + "write_protect": false, + "clflush_size": 64, + "cache_alignment": 64, + "address_sizes": { + "physical": 39, + "virtual": 48 + } + } + ], + "disk": [ + { + "index": 37, + "attached_to": 25, + "class_list": [ + "disk", + "block_device", + "nvme" + ], + "bus_type": { + "hex": "0096", + "name": "NVME", + "value": 150 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "vendor": { + "hex": "144d", + "value": 5197 + }, + "sub_vendor": { + "hex": "144d", + "value": 5197 + }, + "device": { + "hex": "a808", + "name": "SAMSUNG MZVLB256HAHQ-000L2", + "value": 43016 + }, + "sub_device": { + "hex": "a801", + "value": 43009 + }, + "serial": "S41FNF0K419134", + "model": "SAMSUNG MZVLB256HAHQ-000L2", + "sysfs_id": "/class/block/nvme0n1", + "sysfs_bus_id": "nvme0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:1d.0/0000:6d:00.0/nvme/nvme0", + "unix_device_name": "/dev/nvme0n1", + "unix_device_number": { + "type": 98, + "major": 259, + "minor": 0, + "range": 0 + }, + "unix_device_names": [ + "/dev/disk/by-diskseq/9", + "/dev/disk/by-id/nvme-SAMSUNG_MZVLB256HAHQ-000L2_S41FNF0K419134", + "/dev/disk/by-id/nvme-SAMSUNG_MZVLB256HAHQ-000L2_S41FNF0K419134_1", + "/dev/disk/by-id/nvme-eui.0025388481b0da15", + "/dev/disk/by-path/pci-0000:6d:00.0-nvme-1", + "/dev/nvme0n1" + ], + "resources": [ + { + "type": "disk_geo", + "cylinders": 244198, + "heads": 64, + "sectors": 32, + "size": 0, + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 500118192, + "value_2": 512 + } + ], + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ] + }, + { + "index": 38, + "attached_to": 33, + "class_list": [ + "disk", + "usb", + "scsi", + "block_device" + ], + "bus_type": { + "hex": "0084", + "name": "SCSI", + "value": 132 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0106", + "name": "Mass Storage Device", + "value": 262 + }, + "sub_class": { + "hex": "0000", + "name": "Disk", + "value": 0 + }, + "vendor": { + "hex": "090c", + "name": "USB", + "value": 2316 + }, + "device": { + "hex": "3267", + "name": "Flash Disk", + "value": 12903 + }, + "revision": { + "hex": "0000", + "name": "1100", + "value": 0 + }, + "serial": "AA00000000000489", + "model": "USB Flash Disk", + "sysfs_id": "/class/block/sda", + "sysfs_bus_id": "0:0:0:0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:14.0/usb2/2-2/2-2:1.0/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/10", + "/dev/disk/by-id/usb-USB_Flash_Disk-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-usbv3-0:2:1.0-scsi-0:0:0:0", + "/dev/sda" + ], + "unix_device_name2": "/dev/sg0", + "unix_device_number2": { + "type": 99, + "major": 21, + "minor": 0, + "range": 1 + }, + "resources": [ + { + "type": "disk_geo", + "cylinders": 15200, + "heads": 64, + "sectors": 32, + "size": 0, + "geo_type": "logical" + }, + { + "type": "size", + "unit": "sectors", + "value_1": 31129600, + "value_2": 512 + } + ], + "driver": "usb-storage", + "driver_module": "usb_storage", + "drivers": [ + "sd", + "usb-storage" + ], + "driver_modules": [ + "sd_mod", + "usb_storage" + ], + "module_alias": "usb:v090Cp3267d1100dc00dsc00dp00ic08isc06ip50in00" + } + ], + "graphics_card": [ + { + "index": 32, + "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": "17aa", + "value": 6058 + }, + "device": { + "hex": "5917", + "value": 22807 + }, + "sub_device": { + "hex": "39ef", + "value": 14831 + }, + "revision": { + "hex": "0007", + "value": 7 + }, + "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": 16384, + "range": 64, + "enabled": true, + "access": "read_write" + }, + { + "type": "irq", + "base": 152, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 204547817472, + "range": 268435456, + "enabled": true, + "access": "read_only", + "prefetch": "no" + }, + { + "type": "mem", + "base": 206057766912, + "range": 16777216, + "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": 152, + "prog_if": 0 + }, + "driver": "i915", + "driver_module": "i915", + "drivers": [ + "i915" + ], + "driver_modules": [ + "i915" + ], + "module_alias": "pci:v00008086d00005917sv000017AAsd000039EFbc03sc00i00" + } + ], + "hub": [ + { + "index": 40, + "attached_to": 17, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.13.12 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.13", + "value": 0 + }, + "serial": "0000:37:00.0", + "model": "Linux 6.13.12 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0/0000:37:00.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:v1D6Bp0002d0613dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 44, + "attached_to": 17, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1d6b", + "name": "Linux 6.13.12 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.13", + "value": 0 + }, + "serial": "0000:37:00.0", + "model": "Linux 6.13.12 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0/0000:37:00.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:v1D6Bp0003d0613dc09dsc00dp03ic09isc00ip00in00" + }, + { + "index": 45, + "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": "1d6b", + "name": "Linux 6.13.12 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0002", + "name": "xHCI Host Controller", + "value": 2 + }, + "revision": { + "hex": "0000", + "name": "6.13", + "value": 0 + }, + "serial": "0000:00:14.0", + "model": "Linux 6.13.12 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0", + "sysfs_bus_id": "1-0:1.0", + "resources": [ + { + "type": "baud", + "speed": 480000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 1, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "drivers": [ + "hub" + ], + "module_alias": "usb:v1D6Bp0002d0613dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 46, + "attached_to": 45, + "class_list": [ + "usb", + "hub" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "010a", + "name": "Hub", + "value": 266 + }, + "vendor": { + "hex": "1a40", + "value": 6720 + }, + "device": { + "hex": "0801", + "name": "USB 2.0 Hub", + "value": 2049 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "model": "USB 2.0 Hub", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4:1.0", + "sysfs_bus_id": "1-4: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:v1A40p0801d0100dc09dsc00dp01ic09isc00ip00in00" + }, + { + "index": 48, + "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": "1d6b", + "name": "Linux 6.13.12 xhci-hcd", + "value": 7531 + }, + "device": { + "hex": "0003", + "name": "xHCI Host Controller", + "value": 3 + }, + "revision": { + "hex": "0000", + "name": "6.13", + "value": 0 + }, + "serial": "0000:00:14.0", + "model": "Linux 6.13.12 xhci-hcd xHCI Host Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb2/2-0:1.0", + "sysfs_bus_id": "2-0:1.0", + "detail": { + "device_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 3, + "interface_class": { + "hex": "0009", + "name": "hub", + "value": 9 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "driver": "hub", + "drivers": [ + "hub" + ], + "module_alias": "usb:v1D6Bp0003d0613dc09dsc00dp03ic09isc00ip00in00" + } + ], + "memory": [ + { + "index": 11, + "attached_to": 0, + "class_list": [ + "memory" + ], + "base_class": { + "hex": "0101", + "name": "Internally Used Class", + "value": 257 + }, + "sub_class": { + "hex": "0002", + "name": "Main Memory", + "value": 2 + }, + "model": "Main Memory", + "resources": [ + { + "type": "mem", + "base": 0, + "range": 8040165376, + "enabled": true, + "access": "read_write", + "prefetch": "unknown" + }, + { + "type": "phys_mem", + "range": 8053063680 + } + ] + } + ], + "monitor": [ + { + "index": 36, + "attached_to": 32, + "class_list": [ + "monitor" + ], + "base_class": { + "hex": "0100", + "name": "Monitor", + "value": 256 + }, + "sub_class": { + "hex": "0002", + "name": "LCD Monitor", + "value": 2 + }, + "vendor": { + "hex": "5a63", + "name": "VIEWSONIC", + "value": 23139 + }, + "device": { + "hex": "d22b", + "name": "VG2439 Series", + "value": 53803 + }, + "serial": "VBW184000686", + "model": "VIEWSONIC VG2439 Series", + "resources": [ + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 70, + "interlaced": false + }, + { + "type": "monitor", + "width": 1024, + "height": 768, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 1280, + "height": 1024, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 1600, + "height": 1200, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1600, + "height": 900, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 1920, + "height": 1080, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 67, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 72, + "interlaced": false + }, + { + "type": "monitor", + "width": 640, + "height": 480, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 720, + "height": 400, + "vertical_frequency": 70, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 56, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 60, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 72, + "interlaced": false + }, + { + "type": "monitor", + "width": 800, + "height": 600, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "monitor", + "width": 832, + "height": 624, + "vertical_frequency": 75, + "interlaced": false + }, + { + "type": "size", + "unit": "mm", + "value_1": 521, + "value_2": 293 + } + ], + "detail": { + "manufacture_year": 2018, + "manufacture_week": 40, + "vertical_sync": { + "min": 50, + "max": 75 + }, + "horizontal_sync": { + "min": 15, + "max": 82 + }, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 2008, + "sync_end": 2052, + "total": 2200 + }, + "vertical_sync_timings": { + "disp": 1080, + "sync_start": 1084, + "sync_end": 1089, + "total": 1125 + }, + "clock": 148500, + "width": 1920, + "height": 1080, + "width_millimetres": 521, + "height_millimetres": 293, + "horizontal_flag": 43, + "vertical_flag": 43, + "vendor": "", + "name": "VG2439 Series" + }, + "driver_info": { + "type": "display", + "width": 1920, + "height": 1080, + "vertical_sync": { + "min": 50, + "max": 75 + }, + "horizontal_sync": { + "min": 15, + "max": 82 + }, + "bandwidth": 0, + "horizontal_sync_timings": { + "disp": 1920, + "sync_start": 2008, + "sync_end": 2052, + "total": 2200 + }, + "vertical_sync_timings": { + "disp": 1080, + "sync_start": 1084, + "sync_end": 1089, + "total": 1125 + }, + "horizontal_flag": 43, + "vertical_flag": 43 + } + } + ], + "mouse": [ + { + "index": 51, + "attached_to": 0, + "bus_type": { + "hex": "0081", + "name": "serial", + "value": 129 + }, + "base_class": { + "hex": "0118", + "name": "touchpad", + "value": 280 + }, + "sub_class": { + "hex": "0001", + "name": "bus", + "value": 1 + }, + "vendor": { + "hex": "06cb", + "value": 1739 + }, + "device": { + "hex": "7f8f", + "value": 32655 + }, + "sysfs_id": "/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-MSFT0001:02/0018:06CB:7F8F.0001/input/input9", + "unix_device_names": [ + "/dev/input/event6", + "/dev/input/ + handler" + ] + } + ], + "network_controller": [ + { + "index": 28, + "attached_to": 19, + "class_list": [ + "network_controller", + "pci", + "wlan_card" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 108, + "number": 0 + }, + "base_class": { + "hex": "0002", + "name": "Network controller", + "value": 2 + }, + "sub_class": { + "hex": "0082", + "name": "WLAN controller", + "value": 130 + }, + "vendor": { + "hex": "10ec", + "value": 4332 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "b822", + "value": 47138 + }, + "sub_device": { + "hex": "b023", + "value": 45091 + }, + "model": "WLAN controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.5/0000:6c:00.0", + "sysfs_bus_id": "0000:6c:00.0", + "unix_device_name": "wlan0", + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 55 + }, + { + "type": "io", + "base": 12288, + "range": 256, + "enabled": true, + "access": "read_write" + }, + { + "type": "irq", + "base": 153, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 1847590912, + "range": 65536, + "enabled": true, + "access": "read_write", + "prefetch": "no" + }, + { + "type": "phwaddr", + "address": 55 + }, + { + "type": "wlan", + "channels": [ + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "10", + "11", + "36", + "40", + "44", + "48", + "52", + "56", + "60", + "64", + "100", + "104", + "108", + "112", + "116", + "120", + "124", + "128", + "132", + "136", + "140", + "144", + "149" + ], + "frequencies": [ + "2.412", + "2.417", + "2.422", + "2.427", + "2.432", + "2.437", + "2.442", + "2.447", + "2.452", + "2.457", + "2.462", + "5.18", + "5.2", + "5.22", + "5.24", + "5.26", + "5.28", + "5.3", + "5.32", + "5.5", + "5.52", + "5.54", + "5.56", + "5.58", + "5.6", + "5.62", + "5.64", + "5.66", + "5.68", + "5.7", + "5.72", + "5.745" + ], + "auth_modes": [ + "open", + "sharedkey", + "wpa-psk", + "wpa-eap" + ], + "enc_modes": [ + "WEP40", + "WEP104", + "TKIP", + "CCMP" + ] + } + ], + "detail": { + "function": 0, + "command": 1031, + "header_type": 0, + "secondary_bus": 0, + "irq": 153, + "prog_if": 0 + }, + "driver": "rtw_8822be", + "driver_module": "rtw88_8822be", + "drivers": [ + "rtw_8822be" + ], + "driver_modules": [ + "rtw88_8822be" + ], + "module_alias": "pci:v000010ECd0000B822sv000017AAsd0000B023bc02sc80i00" + } + ], + "network_interface": [ + { + "index": 49, + "attached_to": 28, + "class_list": [ + "network_interface" + ], + "base_class": { + "hex": "0107", + "name": "Network Interface", + "value": 263 + }, + "sub_class": { + "hex": "000a", + "name": "WLAN", + "value": 10 + }, + "model": "WLAN network interface", + "sysfs_id": "/class/net/wlan0", + "sysfs_device_link": "/devices/pci0000:00/0000:00:1c.5/0000:6c:00.0", + "unix_device_name": "wlan0", + "unix_device_names": [ + "wlan0" + ], + "resources": [ + { + "type": "hwaddr", + "address": 55 + }, + { + "type": "phwaddr", + "address": 55 + } + ], + "driver": "rtw_8822be", + "driver_module": "rtw88_8822be", + "drivers": [ + "rtw_8822be" + ], + "driver_modules": [ + "rtw88_8822be" + ] + }, + { + "index": 50, + "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": 12, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "0005", + "name": "Memory controller", + "value": 5 + }, + "sub_class": { + "hex": "0080", + "name": "Memory controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d21", + "value": 40225 + }, + "sub_device": { + "hex": "3864", + "value": 14436 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel Memory controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.2", + "sysfs_bus_id": "0000:00:1f.2", + "resources": [ + { + "type": "mem", + "base": 1848705024, + "range": 16384, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 2, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "irq": 0, + "prog_if": 0 + }, + "module_alias": "pci:v00008086d00009D21sv000017AAsd00003864bc05sc80i00" + }, + { + "index": 14, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 21 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d61", + "value": 40289 + }, + "sub_device": { + "hex": "3854", + "value": 14420 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:15.1", + "sysfs_bus_id": "0000:00:15.1", + "resources": [ + { + "type": "irq", + "base": 17, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074671104, + "range": 4096, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 1, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "irq": 17, + "prog_if": 0 + }, + "driver": "intel-lpss", + "driver_module": "intel_lpss_pci", + "drivers": [ + "intel-lpss" + ], + "driver_modules": [ + "intel_lpss_pci" + ], + "module_alias": "pci:v00008086d00009D61sv000017AAsd00003854bc11sc80i00" + }, + { + "index": 18, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 4 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "1903", + "value": 6403 + }, + "sub_device": { + "hex": "3818", + "value": 14360 + }, + "revision": { + "hex": "0008", + "value": 8 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:04.0", + "sysfs_bus_id": "0000:00:04.0", + "resources": [ + { + "type": "irq", + "base": 16, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074609664, + "range": 32768, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "irq": 16, + "prog_if": 0 + }, + "driver": "proc_thermal", + "driver_module": "processor_thermal_device_pci_legacy", + "drivers": [ + "proc_thermal" + ], + "driver_modules": [ + "processor_thermal_device_pci_legacy" + ], + "module_alias": "pci:v00008086d00001903sv000017AAsd00003818bc11sc80i00" + }, + { + "index": 20, + "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": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d3a", + "value": 40250 + }, + "sub_device": { + "hex": "3861", + "value": 14433 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel Communication controller", + "sysfs_id": "/devices/pci0000:00/0000:00:16.0", + "sysfs_bus_id": "0000:00:16.0", + "resources": [ + { + "type": "irq", + "base": 150, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074662912, + "range": 4096, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "irq": 150, + "prog_if": 0 + }, + "driver": "mei_me", + "driver_module": "mei_me", + "drivers": [ + "mei_me" + ], + "driver_modules": [ + "mei_me" + ], + "module_alias": "pci:v00008086d00009D3Asv000017AAsd00003861bc07sc80i00" + }, + { + "index": 24, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 21 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d62", + "value": 40290 + }, + "sub_device": { + "hex": "3817", + "value": 14359 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:15.2", + "sysfs_bus_id": "0000:00:15.2", + "resources": [ + { + "type": "irq", + "base": 18, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074667008, + "range": 4096, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 2, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "irq": 18, + "prog_if": 0 + }, + "driver": "intel-lpss", + "driver_module": "intel_lpss_pci", + "drivers": [ + "intel-lpss" + ], + "driver_modules": [ + "intel_lpss_pci" + ], + "module_alias": "pci:v00008086d00009D62sv000017AAsd00003817bc11sc80i00" + }, + { + "index": 27, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 21 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d60", + "value": 40288 + }, + "sub_device": { + "hex": "3857", + "value": 14423 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:15.0", + "sysfs_bus_id": "0000:00:15.0", + "resources": [ + { + "type": "irq", + "base": 16, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074675200, + "range": 4096, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 0, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "irq": 16, + "prog_if": 0 + }, + "driver": "intel-lpss", + "driver_module": "intel_lpss_pci", + "drivers": [ + "intel-lpss" + ], + "driver_modules": [ + "intel_lpss_pci" + ], + "module_alias": "pci:v00008086d00009D60sv000017AAsd00003857bc11sc80i00" + }, + { + "index": 30, + "attached_to": 0, + "class_list": [ + "pci", + "unknown" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 20 + }, + "base_class": { + "hex": "0011", + "name": "Signal processing controller", + "value": 17 + }, + "sub_class": { + "hex": "0080", + "name": "Signal processing controller", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d31", + "value": 40241 + }, + "sub_device": { + "hex": "3853", + "value": 14419 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel Signal processing controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.2", + "sysfs_bus_id": "0000:00:14.2", + "resources": [ + { + "type": "irq", + "base": 18, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074679296, + "range": 4096, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 2, + "command": 6, + "header_type": 0, + "secondary_bus": 0, + "irq": 18, + "prog_if": 0 + }, + "driver": "intel_pch_thermal", + "driver_module": "intel_pch_thermal", + "drivers": [ + "intel_pch_thermal" + ], + "driver_modules": [ + "intel_pch_thermal" + ], + "module_alias": "pci:v00008086d00009D31sv000017AAsd00003853bc11sc80i00" + }, + { + "index": 34, + "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": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d23", + "value": 40227 + }, + "sub_device": { + "hex": "3860", + "value": 14432 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel SMBus", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.4", + "sysfs_bus_id": "0000:00:1f.4", + "resources": [ + { + "type": "io", + "base": 16448, + "range": 32, + "enabled": true, + "access": "read_write" + }, + { + "type": "irq", + "base": 16, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074658816, + "range": 256, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 4, + "command": 3, + "header_type": 0, + "secondary_bus": 0, + "irq": 16, + "prog_if": 0 + }, + "driver": "i801_smbus", + "driver_module": "i2c_i801", + "drivers": [ + "i801_smbus" + ], + "driver_modules": [ + "i2c_i801" + ], + "module_alias": "pci:v00008086d00009D23sv000017AAsd00003860bc0Csc05i00" + } + ], + "sound": [ + { + "index": 22, + "attached_to": 0, + "class_list": [ + "sound", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 0, + "number": 31 + }, + "base_class": { + "hex": "0004", + "name": "Multimedia controller", + "value": 4 + }, + "sub_class": { + "hex": "0003", + "value": 3 + }, + "pci_interface": { + "hex": "0080", + "value": 128 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d71", + "value": 40305 + }, + "sub_device": { + "hex": "3828", + "value": 14376 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel Multimedia controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1f.3", + "sysfs_bus_id": "0000:00:1f.3", + "resources": [ + { + "type": "irq", + "base": 158, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 206074544128, + "range": 65536, + "enabled": true, + "access": "read_write", + "prefetch": "no" + }, + { + "type": "mem", + "base": 206074642432, + "range": 16384, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 3, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "irq": 158, + "prog_if": 128 + }, + "driver": "snd_hda_intel", + "driver_module": "snd_hda_intel", + "drivers": [ + "snd_hda_intel" + ], + "driver_modules": [ + "snd_hda_intel" + ], + "module_alias": "pci:v00008086d00009D71sv000017AAsd00003828bc04sc03i80" + } + ], + "storage_controller": [ + { + "index": 25, + "attached_to": 29, + "class_list": [ + "storage_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 109, + "number": 0 + }, + "base_class": { + "hex": "0001", + "name": "Mass storage controller", + "value": 1 + }, + "sub_class": { + "hex": "0008", + "value": 8 + }, + "pci_interface": { + "hex": "0002", + "value": 2 + }, + "vendor": { + "hex": "144d", + "value": 5197 + }, + "sub_vendor": { + "hex": "144d", + "value": 5197 + }, + "device": { + "hex": "a808", + "value": 43016 + }, + "sub_device": { + "hex": "a801", + "value": 43009 + }, + "model": "Mass storage controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1d.0/0000:6d:00.0", + "sysfs_bus_id": "0000:6d:00.0", + "resources": [ + { + "type": "irq", + "base": 16, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 1846542336, + "range": 16384, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "irq": 16, + "prog_if": 2 + }, + "driver": "nvme", + "driver_module": "nvme", + "drivers": [ + "nvme" + ], + "driver_modules": [ + "nvme" + ], + "module_alias": "pci:v0000144Dd0000A808sv0000144Dsd0000A801bc01sc08i02" + } + ], + "system": { + "form_factor": "laptop" + }, + "usb": [ + { + "index": 39, + "attached_to": 45, + "class_list": [ + "usb", + "unknown" + ], + "bus_type": { + "hex": "0086", + "name": "USB", + "value": 134 + }, + "slot": { + "bus": 0, + "number": 0 + }, + "base_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "sub_class": { + "hex": "0000", + "name": "Unclassified device", + "value": 0 + }, + "vendor": { + "hex": "06cb", + "value": 1739 + }, + "device": { + "hex": "0081", + "value": 129 + }, + "revision": { + "hex": "0000", + "name": "1.64", + "value": 0 + }, + "serial": "e90194867471", + "model": "Unclassified device", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb1/1-6/1-6:1.0", + "sysfs_bus_id": "1-6:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "00ff", + "name": "vendor_spec", + "value": 255 + }, + "device_subclass": { + "hex": "0010", + "name": "audio_video", + "value": 16 + }, + "device_protocol": 255, + "interface_class": { + "hex": "00ff", + "name": "vendor_spec", + "value": 255 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "module_alias": "usb:v06CBp0081d0164dcFFdsc10dpFFicFFisc00ip00in00" + }, + { + "index": 41, + "attached_to": 46, + "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": "1d5c", + "name": "Fresco Logic, Inc", + "value": 7516 + }, + "device": { + "hex": "7102", + "name": "Generic Billboard Device", + "value": 28930 + }, + "revision": { + "hex": "0000", + "name": "1.00", + "value": 0 + }, + "model": "Fresco Logic Generic Billboard Device", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0/usb1/1-4/1-4.1/1-4.1:1.0", + "sysfs_bus_id": "1-4.1:1.0", + "resources": [ + { + "type": "baud", + "speed": 12000000, + "bits": 0, + "stop_bits": 0, + "parity": 0, + "handshake": 0 + } + ], + "detail": { + "device_class": { + "hex": "0011", + "name": "billboard", + "value": 17 + }, + "device_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "device_protocol": 0, + "interface_class": { + "hex": "0011", + "name": "billboard", + "value": 17 + }, + "interface_subclass": { + "hex": "0000", + "name": "per_interface", + "value": 0 + }, + "interface_protocol": 0, + "interface_number": 0, + "interface_alternate_setting": 0 + }, + "hotplug": "usb", + "module_alias": "usb:v1D5Cp7102d0100dc11dsc00dp00ic11isc00ip00in00" + } + ], + "usb_controller": [ + { + "index": 17, + "attached_to": 26, + "class_list": [ + "usb_controller", + "pci" + ], + "bus_type": { + "hex": "0004", + "name": "PCI", + "value": 4 + }, + "slot": { + "bus": 55, + "number": 0 + }, + "base_class": { + "hex": "000c", + "name": "Serial bus controller", + "value": 12 + }, + "sub_class": { + "hex": "0003", + "name": "USB Controller", + "value": 3 + }, + "pci_interface": { + "hex": "0030", + "value": 48 + }, + "vendor": { + "hex": "8086", + "name": "Intel Corporation", + "value": 32902 + }, + "sub_vendor": { + "hex": "2222", + "value": 8738 + }, + "device": { + "hex": "15d4", + "value": 5588 + }, + "sub_device": { + "hex": "1111", + "value": 4369 + }, + "revision": { + "hex": "0002", + "value": 2 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:1c.0/0000:01:00.0/0000:02:02.0/0000:37:00.0", + "sysfs_bus_id": "0000:37:00.0", + "resources": [ + { + "type": "irq", + "base": 134, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 1475346432, + "range": 65536, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 0, + "command": 1027, + "header_type": 0, + "secondary_bus": 0, + "irq": 134, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00008086d000015D4sv00002222sd00001111bc0Csc03i30" + }, + { + "index": 33, + "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": "17aa", + "value": 6058 + }, + "device": { + "hex": "9d2f", + "value": 40239 + }, + "sub_device": { + "hex": "3862", + "value": 14434 + }, + "revision": { + "hex": "0021", + "value": 33 + }, + "model": "Intel USB Controller", + "sysfs_id": "/devices/pci0000:00/0000:00:14.0", + "sysfs_bus_id": "0000:00:14.0", + "resources": [ + { + "type": "irq", + "base": 125, + "triggered": 0, + "enabled": true + }, + { + "type": "mem", + "base": 1848639488, + "range": 65536, + "enabled": true, + "access": "read_write", + "prefetch": "no" + } + ], + "detail": { + "function": 0, + "command": 1030, + "header_type": 0, + "secondary_bus": 0, + "irq": 125, + "prog_if": 48 + }, + "driver": "xhci_hcd", + "driver_module": "xhci_pci", + "drivers": [ + "xhci_hcd" + ], + "driver_modules": [ + "xhci_pci" + ], + "module_alias": "pci:v00008086d00009D2Fsv000017AAsd00003862bc0Csc03i30" + } + ] + }, + "smbios": { + "bios": { + "handle": 0, + "vendor": "LENOVO", + "version": "7LCN32WW(V1.13)", + "date": "12/29/2020", + "features": [ + "PCI supported", + "BIOS flashable", + "BIOS shadowing allowed", + "CD boot supported", + "Selectable boot supported", + "EDD spec supported", + "1.2MB NEC 9800 Japanese Floppy supported", + "1.2MB Toshiba Japanese Floppy supported", + "360kB Floppy supported", + "1.2MB Floppy supported", + "720kB Floppy supported", + "2.88MB Floppy supported", + "8042 Keyboard Services supported", + "CGA/Mono Video supported", + "ACPI supported", + "USB Legacy supported", + "BIOS Boot Spec supported" + ], + "start_address": "0xe0000", + "rom_size": 6291456 + }, + "board": { + "handle": 2, + "manufacturer": "LENOVO", + "product": "LNVNB161216", + "version": "SDK0J40709 WIN", + "board_type": { + "hex": "000a", + "name": "Motherboard", + "value": 10 + }, + "features": [ + "Hosting Board", + "Replaceable" + ], + "location": "Type2 - Board Chassis Location", + "chassis": 3 + }, + "cache": [ + { + "handle": 5, + "socket": "L1 Cache", + "size_max": 256, + "size_current": 256, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 0, + "ecc": { + "hex": "0004", + "name": "Parity", + "value": 4 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0007", + "name": "8-way Set-Associative", + "value": 7 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 6, + "socket": "L2 Cache", + "size_max": 1024, + "size_current": 1024, + "speed": 0, + "mode": { + "hex": "0001", + "name": "Write Back", + "value": 1 + }, + "enabled": true, + "location": { + "hex": "0000", + "name": "Internal", + "value": 0 + }, + "socketed": false, + "level": 1, + "ecc": { + "hex": "0005", + "name": "Single-bit", + "value": 5 + }, + "cache_type": { + "hex": "0005", + "name": "Unified", + "value": 5 + }, + "associativity": { + "hex": "0005", + "name": "4-way Set-Associative", + "value": 5 + }, + "sram_type_current": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + }, + { + "handle": 7, + "socket": "L3 Cache", + "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": [ + "Synchronous" + ], + "sram_type_supported": [ + "Synchronous" + ] + } + ], + "chassis": { + "handle": 3, + "manufacturer": "LENOVO", + "version": "Lenovo YOGA 730-13IKB", + "chassis_type": { + "hex": "001f", + "name": "Other", + "value": 31 + }, + "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": 31, + "options": [ + "ConfigOptions1", + "ConfigOptions2", + "ConfigOptions3" + ] + }, + "group_associations": [ + { + "handle": 33, + "name": "Intel(R) Silicon View Technology", + "handles": [ + 66 + ] + }, + { + "handle": 34, + "name": "$MEI", + "handles": [ + 61 + ] + }, + { + "handle": 35, + "name": "$MEI", + "handles": [ + 60 + ] + }, + { + "handle": 45, + "power": { + "hex": "0000", + "name": "Disabled", + "value": 0 + }, + "keyboard": { + "hex": "0000", + "name": "Disabled", + "value": 0 + }, + "admin": { + "hex": "0000", + "name": "Disabled", + "value": 0 + }, + "reset": { + "hex": "0000", + "name": "Disabled", + "value": 0 + } + } + ], + "language": [ + { + "handle": 32, + "languages": [ + "en|US|iso8859-1,0", + "fr|FR|iso8859-1,0", + "zh|TW|unicode,0", + "ja|JP|unicode,0", + "it|IT|iso8859-1,0", + "es|ES|iso8859-1,0", + "de|DE|iso8859-1,0", + "pt|PT|iso8859-1,0" + ] + } + ], + "memory_array": [ + { + "handle": 37, + "location": { + "hex": "0003", + "name": "Motherboard", + "value": 3 + }, + "usage": { + "hex": "0003", + "name": "System memory", + "value": 3 + }, + "ecc": { + "hex": "0003", + "name": "None", + "value": 3 + }, + "max_size": 33554432, + "error_handle": 65535, + "slots": 2 + } + ], + "memory_array_mapped_address": [ + { + "handle": 40, + "array_handle": 37, + "start_address": 0, + "end_address": 8589934592, + "part_width": 2 + } + ], + "memory_device": [ + { + "handle": 38, + "location": "ChannelA-DIMM0", + "bank_location": "BANK 0", + "manufacturer": "Samsung", + "part_number": "M471A5244CB0-CTD", + "array_handle": 37, + "error_handle": 65535, + "width": 64, + "ecc_bits": 0, + "size": 4194304, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "001a", + "name": "Other", + "value": 26 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 2400 + }, + { + "handle": 39, + "location": "ChannelB-DIMM0", + "bank_location": "BANK 2", + "manufacturer": "Samsung", + "part_number": "M471A5244CB0-CTD", + "array_handle": 37, + "error_handle": 65535, + "width": 64, + "ecc_bits": 0, + "size": 4194304, + "form_factor": { + "hex": "000d", + "name": "SODIMM", + "value": 13 + }, + "set": 0, + "memory_type": { + "hex": "001a", + "name": "Other", + "value": 26 + }, + "memory_type_details": [ + "Synchronous" + ], + "speed": 2400 + } + ], + "memory_device_mapped_address": [ + { + "handle": 41, + "memory_device_handle": 38, + "array_map_handle": 40, + "start_address": 0, + "end_address": 4294967296, + "row_position": 255, + "interleave_position": 1, + "interleave_depth": 1 + }, + { + "handle": 42, + "memory_device_handle": 39, + "array_map_handle": 40, + "start_address": 0, + "end_address": 4294967296, + "row_position": 255, + "interleave_position": 2, + "interleave_depth": 1 + } + ], + "pointing_device": [ + { + "handle": 43, + "mouse_type": { + "hex": "0007", + "name": "Touch Pad", + "value": 7 + }, + "interface": { + "hex": "0004", + "name": "PS/2", + "value": 4 + }, + "buttons": 4 + } + ], + "port_connector": [ + { + "handle": 8, + "port_type": { + "hex": "000d", + "name": "Keyboard Port", + "value": 13 + }, + "internal_reference_designator": "J1A1", + "external_connector_type": { + "hex": "000f", + "name": "PS/2", + "value": 15 + }, + "external_reference_designator": "Keyboard" + }, + { + "handle": 9, + "port_type": { + "hex": "000e", + "name": "Mouse Port", + "value": 14 + }, + "internal_reference_designator": "J1A1", + "external_connector_type": { + "hex": "000f", + "name": "PS/2", + "value": 15 + }, + "external_reference_designator": "Mouse" + }, + { + "handle": 10, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J2A1", + "external_connector_type": { + "hex": "000d", + "name": "Mini-DIN", + "value": 13 + }, + "external_reference_designator": "TV OUT" + }, + { + "handle": 11, + "port_type": { + "hex": "001c", + "name": "Video Port", + "value": 28 + }, + "internal_reference_designator": "J2A2", + "external_connector_type": { + "hex": "0007", + "name": "DB-15 pin female", + "value": 7 + }, + "external_reference_designator": "CRT" + }, + { + "handle": 12, + "port_type": { + "hex": "0009", + "name": "Serial Port 16550A Compatible", + "value": 9 + }, + "internal_reference_designator": "J2A2", + "external_connector_type": { + "hex": "0008", + "name": "DB-9 pin male", + "value": 8 + }, + "external_reference_designator": "COM 1" + }, + { + "handle": 13, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J3A1", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB" + }, + { + "handle": 14, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J3A1", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB" + }, + { + "handle": 15, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J3A1", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB" + }, + { + "handle": 16, + "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": "USB" + }, + { + "handle": 17, + "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": "USB" + }, + { + "handle": 18, + "port_type": { + "hex": "0010", + "name": "USB", + "value": 16 + }, + "internal_reference_designator": "J5A2", + "external_connector_type": { + "hex": "0012", + "name": "Access Bus [USB]", + "value": 18 + }, + "external_reference_designator": "USB" + }, + { + "handle": 19, + "port_type": { + "hex": "001f", + "name": "Network Port", + "value": 31 + }, + "internal_reference_designator": "J5A1", + "external_connector_type": { + "hex": "000b", + "name": "RJ-45", + "value": 11 + }, + "external_reference_designator": "Network" + }, + { + "handle": 20, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "0017", + "name": "On Board Floppy", + "value": 23 + }, + "internal_reference_designator": "J9G2", + "external_reference_designator": "OnBoard Floppy Type" + }, + { + "handle": 21, + "port_type": { + "hex": "00ff", + "name": "Other", + "value": 255 + }, + "internal_connector_type": { + "hex": "0016", + "name": "On Board IDE", + "value": 22 + }, + "internal_reference_designator": "J7J1", + "external_reference_designator": "OnBoard Primary IDE" + }, + { + "handle": 22, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J30", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Microphone In" + }, + { + "handle": 23, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J30", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Line In" + }, + { + "handle": 24, + "port_type": { + "hex": "001d", + "name": "Audio Port", + "value": 29 + }, + "internal_reference_designator": "J30", + "external_connector_type": { + "hex": "001f", + "name": "Mini-jack [headphones]", + "value": 31 + }, + "external_reference_designator": "Speaker Out" + } + ], + "processor": [ + { + "handle": 4, + "socket": "U3E1", + "socket_type": { + "hex": "0033", + "name": "Other", + "value": 51 + }, + "socket_populated": true, + "manufacturer": "Intel(R) Corporation", + "version": "Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz", + "part": "To Be Filled By O.E.M.", + "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": 8300, + "cache_handle_l1": 5, + "cache_handle_l2": 6, + "cache_handle_l3": 7 + } + ], + "slot": [ + { + "handle": 25, + "designation": "J6C1", + "slot_type": { + "hex": "00a6", + "name": "Other", + "value": 166 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0004", + "name": "In Use", + "value": 4 + }, + "length": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "id": 1, + "features": [ + "PME#", + "Hot-Plug" + ] + }, + { + "handle": 26, + "designation": "J6D2", + "slot_type": { + "hex": "00a6", + "name": "Other", + "value": 166 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0003", + "name": "Available", + "value": 3 + }, + "length": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "id": 2, + "features": [ + "PME#", + "Hot-Plug" + ] + }, + { + "handle": 27, + "designation": "J7C1", + "slot_type": { + "hex": "00a6", + "name": "Other", + "value": 166 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0003", + "name": "Available", + "value": 3 + }, + "length": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "id": 3, + "features": [ + "PME#", + "Hot-Plug" + ] + }, + { + "handle": 28, + "designation": "J7D1", + "slot_type": { + "hex": "00a6", + "name": "Other", + "value": 166 + }, + "bus_width": { + "hex": "0008", + "name": "Other", + "value": 8 + }, + "usage": { + "hex": "0003", + "name": "Available", + "value": 3 + }, + "length": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "id": 4, + "features": [ + "PME#", + "Hot-Plug" + ] + }, + { + "handle": 29, + "designation": "J8C1", + "slot_type": { + "hex": "00a8", + "name": "Other", + "value": 168 + }, + "bus_width": { + "hex": "000a", + "name": "Other", + "value": 10 + }, + "usage": { + "hex": "0003", + "name": "Available", + "value": 3 + }, + "length": { + "hex": "0001", + "name": "Other", + "value": 1 + }, + "id": 5, + "features": [ + "PME#", + "Hot-Plug" + ] + } + ], + "system": { + "handle": 1, + "manufacturer": "LENOVO", + "product": "81CT", + "version": "Lenovo YOGA 730-13IKB", + "wake_up": { + "hex": "0006", + "name": "Power Switch", + "value": 6 + } + } + } +} diff --git a/hosts/ganymede/iwlwifi.nix b/hosts/ganymede/iwlwifi.nix new file mode 100644 index 0000000..729034f --- /dev/null +++ b/hosts/ganymede/iwlwifi.nix @@ -0,0 +1,23 @@ +{ + # Append Kernel modules + boot.kernelModules = [ + "brcmfmac" + "brcmutil" + "iwlmvm" + "iwlwifi" + "mmc_core" + "mt76_usb" + "mt76" + "mt76x0_common" + "mt76x02_lib" + "mt76x02_usb" + "mt76x0u" + "r8188eu" + "rtl_usb" + "rtl8192c_common" + "rtl8192cu" + "rtlwifi" + ]; + hardware.enableAllFirmware = true; + hardware.enableRedistributableFirmware = true; +} diff --git a/hosts/ganymede/nixos.nix b/hosts/ganymede/nixos.nix index bdede45..af0716d 100644 --- a/hosts/ganymede/nixos.nix +++ b/hosts/ganymede/nixos.nix @@ -1,8 +1,10 @@ {inputs, ...}: { - # imports = [ - # inputs.disko.nixosModules.disko - # ./disks.nix - # ]; + imports = [ + inputs.disko.nixosModules.disko + ./disks.nix + + ./iwlwifi.nix + ]; nixpkgs.hostPlatform = "x86_64-linux"; } diff --git a/hosts/jupiter/system.nix b/hosts/jupiter/system.nix index 1c63845..906ee2a 100644 --- a/hosts/jupiter/system.nix +++ b/hosts/jupiter/system.nix @@ -16,10 +16,8 @@ time.timeZone = "America/Chicago"; - systemd.network.wait-online.enable = false; # fix for weird wifi issue - services.pipewire.jack.enable = true; - environment.systemPackages = with pkgs; [puredata vital helvum]; + environment.systemPackages = with pkgs; [vital helvum]; system.stateVersion = "25.05"; } diff --git a/hosts/mercury/ai.nix b/hosts/mercury/ai.nix index 1ce6c25..4bdb8e0 100644 --- a/hosts/mercury/ai.nix +++ b/hosts/mercury/ai.nix @@ -1,7 +1,4 @@ {pkgs, ...}: { - services.ollama = { - enable = true; - loadModels = ["deepseek-r1:1.5b"]; - }; + services.ollama.enable = true; # environment.systemPackages = [pkgs.mcphost]; } diff --git a/hosts/mercury/config.nix b/hosts/mercury/config.nix index d72277a..268c767 100644 --- a/hosts/mercury/config.nix +++ b/hosts/mercury/config.nix @@ -1,6 +1,6 @@ -{ +{pkgs, ...}: { collinux = { - theme = "catppuccin"; + theme = "kanagawa"; user = { name = "collin"; @@ -8,21 +8,28 @@ }; desktop = { - wallpaper = ./wallpaper.jpg; + # wallpaper = ./wallpaper.jpg; + # wallpaper = ./hintergrund2.png; + # wallpaper = ./kanagawa.jpg; + wallpaper = ./riverboats.png; - gtk.enable = true; + # gtk.enable = true; greetd.enable = true; - sway = { - enable = true; + wm = { + # sway.enable = true; + niri.enable = true; components.fuzzel.enable = true; components.dunst.enable = true; }; programs = { firefox.enable = true; - foot.enable = true; + foot = { + theme = "kanagawa"; + enable = true; + }; research.enable = true; }; @@ -46,7 +53,7 @@ shells.bash.enable = true; # for nix-shells programs = { - tmux.enable = true; + # tmux.enable = true; lazygit.enable = true; starship.enable = true; @@ -64,6 +71,7 @@ nh.enable = true; helix = { + theme = "kanagawa"; enable = true; hardMode = true; }; diff --git a/hosts/mercury/hintergrund2.png b/hosts/mercury/hintergrund2.png new file mode 100644 index 0000000..6cf9a8f Binary files /dev/null and b/hosts/mercury/hintergrund2.png differ diff --git a/hosts/mercury/nixos.nix b/hosts/mercury/nixos.nix index dfed04f..48aa92c 100644 --- a/hosts/mercury/nixos.nix +++ b/hosts/mercury/nixos.nix @@ -1,24 +1,28 @@ { lib, - pkgs, inputs, ... }: { imports = [ ./disks.nix ./battery.nix + ./ai.nix inputs.nixos-facter-modules.nixosModules.facter - {facter.reportPath = ./facter.json;} - inputs.lanzaboote.nixosModules.lanzaboote ]; + systemd.services.systemd-udev-settle.enable = false; + networking.interfaces.wlp2s0.useDHCP = false; + + facter.reportPath = ./facter.json; + environment.defaultPackages = lib.mkForce []; # im not a noob - networking.firewall.allowedUDPPorts = [445]; - networking.firewall.allowedTCPPorts = [8000]; - users.users.collin.packages = [pkgs.cifs-utils]; + networking.firewall = { + allowedUDPPorts = [445]; + allowedTCPPorts = [8000]; + }; system.stateVersion = "25.05"; } diff --git a/hosts/mercury/riverboats.png b/hosts/mercury/riverboats.png new file mode 100644 index 0000000..c390ca7 Binary files /dev/null and b/hosts/mercury/riverboats.png differ diff --git a/lib/lib.nix b/lib/lib.nix index 640f0ca..00cc334 100644 --- a/lib/lib.nix +++ b/lib/lib.nix @@ -32,19 +32,15 @@ let config, }: let inherit (lib) mkOption mkEnableOption; - mkProgramOption' = name: extraOpts: - { - enable = mkEnableOption "whether to enable ${name}"; - theme = mkOption { - type = lib.types.enum ["catppuccin" "adwaita"]; - default = config.collinux.terminal.theme; - }; - } - // extraOpts; - - mkProgramOption = name: mkProgramOption' name {}; + mkProgramOption = name: { + enable = mkEnableOption "whether to enable ${name}"; + theme = mkOption { + type = lib.types.enum ["catppuccin" "adwaita" "kanagawa"]; + default = config.collinux.theme; + }; + }; in { - inherit mkProgramOption' mkProgramOption; + inherit mkProgramOption; }; in { inherit globimport; diff --git a/modules/desktop/hjem/default.nix b/modules/desktop/hjem/default.nix index f7dd95e..12623ef 100644 --- a/modules/desktop/hjem/default.nix +++ b/modules/desktop/hjem/default.nix @@ -3,6 +3,8 @@ ./gtk.nix ./wm/sway.nix + ./wm/niri.nix + ./wm/default.nix ./wm/dunst.nix ./wm/fuzzel.nix diff --git a/modules/desktop/hjem/gtk.nix b/modules/desktop/hjem/gtk.nix index 3ea3b37..4665bac 100644 --- a/modules/desktop/hjem/gtk.nix +++ b/modules/desktop/hjem/gtk.nix @@ -22,17 +22,20 @@ in gtk-icon-theme-name = "Papirus"; gtk-theme-name = cfg.theme_data.name; }; - in { - "gtk-3.0/settings.ini" = { - generator = lib.generators.toINI {}; - inherit value; + in + { + "gtk-3.0/settings.ini" = { + generator = lib.generators.toINI {}; + inherit value; + }; + "gtk-4.0/settings.ini" = { + generator = lib.generators.toINI {}; + inherit value; + }; + } + // lib.optionalAttrs (cfg.theme == "catppuccin") { + "gtk-4.0/gtk.css".text = '' + @import url("file://${cfg.theme_data.package}/share/themes/catppuccin-mocha-blue-standard/gtk-4.0/gtk.css"); + ''; }; - "gtk-4.0/settings.ini" = { - generator = lib.generators.toINI {}; - inherit value; - }; - "gtk-4.0/gtk.css".text = '' - @import url("file://${cfg.theme_data.package}/gtk-4.0/gtk.css"); - ''; - }; } diff --git a/modules/desktop/hjem/programs/foot.nix b/modules/desktop/hjem/programs/foot.nix index 4d630c6..c05e22c 100644 --- a/modules/desktop/hjem/programs/foot.nix +++ b/modules/desktop/hjem/programs/foot.nix @@ -12,40 +12,33 @@ shell = "${pkgs.fish}/bin/fish"; }; - colors = { - foreground = "cdd6f4"; - background = "1e1e2e"; - cursor = "11111b f5e0dc"; - - regular0 = "45475a"; - regular1 = "f38ba8"; - regular2 = "a6e3a1"; - regular3 = "f9e2af"; - regular4 = "89b4fa"; - regular5 = "f5c2e7"; - regular6 = "94e2d5"; - regular7 = "bac2de"; - - bright0 = "585b70"; - bright1 = "f38ba8"; - bright2 = "a6e3a1"; - bright3 = "f9e2af"; - bright4 = "89b4fa"; - bright5 = "f5c2e7"; - bright6 = "94e2d5"; - bright7 = "a6adc8"; - - "16" = "fab387"; - "17" = "f5e0dc"; - - selection-foreground = "cdd6f4"; - selection-background = "414356"; - - search-box-no-match = "11111b f38ba8"; - search-box-match = "cdd6f4 313244"; - - jump-labels = "11111b fab387"; - urls = "89b4fa"; + colors = with config.collinux.palette; { + alpha = "0.6"; + + foreground = base05; + background = base00; + regular0 = base01; + regular1 = base08; + regular2 = base11; + regular3 = base10; + regular4 = base13; + regular5 = base14; + regular6 = base12; + regular7 = base06; + bright0 = base02; + bright1 = base08; + bright2 = base11; + bright3 = base10; + bright4 = base13; + bright5 = base14; + bright6 = base12; + bright7 = base07; + "16" = base09; + "17" = base15; + "18" = base01; + "19" = base02; + "20" = base04; + "21" = base06; }; }; in diff --git a/modules/desktop/hjem/programs/research.nix b/modules/desktop/hjem/programs/research.nix index 3bfde76..1d31479 100644 --- a/modules/desktop/hjem/programs/research.nix +++ b/modules/desktop/hjem/programs/research.nix @@ -11,6 +11,7 @@ in zotero zathura xournalpp + ocrmypdf ]; files = { ".config/xournalpp/toolbar.ini" = { @@ -22,5 +23,51 @@ in }; }; }; + + ".config/zathura/zathurarc".text = lib.mkIf (config.collinux.theme == "adwaita") '' + set font "Iosevka Nerd Font 11.5" + + set recolor 'true' + set recolor-keephue 'false' + set recolor-reverse-video 'false' + + # flipped to make dark mode + set recolor-lightcolor rgba(0,0,0,0) + set recolor-darkcolor '#DEDDDA' + + set completion-fg '#DEDDDA' + set completion-bg '#303030' + set completion-group-fg '#33B2A4' + set completion-group-bg '#303030' + set completion-highlight-fg '#303030' + set completion-highlight-bg '#DEDDDA' + + set default-fg '#DEDDDA' + set default-bg rgba(29,29,29,0.6) + + set inputbar-fg '#DEDDDA' + set inputbar-bg '#303030' + + set notification-fg '#DEDDDA' + set notification-bg '#303030' + set notification-error-fg '#DEDDDA' + set notification-error-bg '#E01B24' + set notification-warning-fg '#DEDDDA' + set notification-warning-bg '#E01B24' + + set statusbar-fg '#DEDDDA' + set statusbar-bg '#303030' + + set highlight-color '#33B2A4' + set highlight-active-color '#33B2A4' + + set render-loading-fg '#DEDDDA' + set render-loading-bg '#303030' + + set index-fg '#DEDDDA' + set index-bg '#303030' + set index-active-fg '#303030' + set index-active-bg '#DEDDDA' + ''; }; } diff --git a/modules/desktop/hjem/wm/default.nix b/modules/desktop/hjem/wm/default.nix new file mode 100644 index 0000000..a5575ad --- /dev/null +++ b/modules/desktop/hjem/wm/default.nix @@ -0,0 +1,147 @@ +{pkgs, ...}: { + files.".config/util.lua" = { + text = let + lua = pkgs.lua.withPackages (p: [p.lua-subprocess]); + in + # lua + '' + #!${lua}/bin/lua + local subprocess = require("subprocess") + + local function get_volume() + local proc, err = subprocess.popen({ + "wpctl", "get-volume", "@DEFAULT_AUDIO_SINK@", + stdout = subprocess.PIPE, + stderr = subprocess.PIPE + }) + if not proc then + error("Failed to run wpctl get-volume: " .. tostring(err)) + end + + local out = proc.stdout:read("*a") or "" + local _, _, code = proc:wait() + if (code or 0) ~= 0 then + local errout = proc.stderr and proc.stderr:read("*a") or "" + error(("wpctl get-volume failed (code %d): %s"):format(code, errout)) + end + + local num = out:match("^Volume:%s*([%d%.]+)") + if not num then + error("Unexpected wpctl output: " .. out) + end + + return tonumber(num) * 100 + end + + local function notify_volume() + local ok, reason, code = subprocess.call({ + "dunstify", "-t", "300", + "-h", "string:x-canonical-private-synchronous:audio", + "Volume:", "-h", "int:value:"..get_volume() + }) + if not ok then + io.stderr:write(("dunstify failed (%s, code %s)\n"):format(reason or "?", code or "?")) + end + end + + local function set_volume(vol) + local ok, reason, code = subprocess.call({ + "wpctl", "set-volume", "@DEFAULT_AUDIO_SINK@", vol + }) + if not ok then + io.stderr:write(("wpctl set-volume failed (%s, code %s)\n"):format(reason or "?", code or "?")) + end + end + + local function get_brightness() + local proc = subprocess.popen({ + "${pkgs.brightnessctl}/bin/brightnessctl", "-e", "get", + stdout = subprocess.PIPE + }) + if not proc then error("Failed to run brightnessctl get") end + local cur = tonumber(proc.stdout:read("*a")) + proc:wait() + if not cur then error("Failed to parse brightnessctl get output") end + + local proc2 = subprocess.popen({ + "${pkgs.brightnessctl}/bin/brightnessctl", "-e", "max", + stdout = subprocess.PIPE + }) + if not proc2 then error("Failed to run brightnessctl max") end + local max = tonumber(proc2.stdout:read("*a")) + proc2:wait() + if not max or max == 0 then error("Failed to parse brightnessctl max output") end + + return (cur / max) * 100 + end + + local function notify_brightness() + local ok, reason, code = subprocess.call({ + "dunstify", "-t", "300", + "-h", "string:x-canonical-private-synchronous:brightness", + "Brightness", "-h", "int:value:"..get_brightness() + }) + if not ok then + io.stderr:write(("dunstify failed (%s, code %s)\n"):format(reason or "?", code or "?")) + end + end + + local function set_brightness(brightness) + local ok, reason, code = subprocess.call({ + "${pkgs.brightnessctl}/bin/brightnessctl", "-e", "set", brightness + }) + if not ok then + io.stderr:write(("brightnessctl set failed (%s, code %s)\n"):format(reason or "?", code or "?")) + end + end + + local function list_music_players() + local proc = subprocess.popen({ + "${pkgs.playerctl}/bin/playerctl", "-l", + stdout = subprocess.PIPE + }) + if not proc then error("Failed to run playerctl -l") end + + local cur = proc.stdout:lines() + + local out = {} + for i in cur do + table.insert(out, i) + end + + return out + end + + local function toggle_music() + local ok, reason, code = subprocess.call({ + "${pkgs.playerctl}/bin/playerctl", "play-pause", + }) + if not ok then + io.stderr:write(("playerctl play-pause failed (%s, code %s)\n"):format(reason or "?", code or "?")) + end + end + + -- main logic + if arg[2] and arg[2]:match("^(%d+)%%([%+%-])$") then + if arg[1] == "vol" then + set_volume(arg[2]) + notify_volume() + elseif arg[1] == "brightness" then + set_brightness(arg[2]) + notify_brightness() + else + error(("arg[2] '%s' incorrect format. Should look like 5%%+ or 10%%-"):format(tostring(arg[2]))) + end + elseif arg[1] and arg[1] == "music" then + if arg[2] == "play" then + toggle_music() + else + error(("Invalid arg[2]: '%s'. should be `play`"):format(arg[3])) + end + else + error("Unknown command: " .. tostring(arg[1])) + end + ''; + executable = true; + }; +} diff --git a/modules/desktop/hjem/wm/dunst.nix b/modules/desktop/hjem/wm/dunst.nix index 38a8240..9366975 100644 --- a/modules/desktop/hjem/wm/dunst.nix +++ b/modules/desktop/hjem/wm/dunst.nix @@ -4,30 +4,31 @@ pkgs, ... }: let - cfg = config.collinux.desktop.sway.components.dunst; + cfg = config.collinux.desktop.wm.components.dunst; - settings = '' + settings = with config.collinux.palette; '' [global] - frame_color = "#89b4fa" + frame_color = "#ffffff00" separator_color = frame - highlight = "#89b4fa" + + highlight = "#${base13}" + + font = "Iosevka Nerd Font" offset = "(8,8)" origin = "top-right" - transparency = 10 - font = "Iosevka Nerd Font" [urgency_low] - background = "#1e1e2e" - foreground = "#cdd6f4" + background = "#${base00}99" + foreground = "#${base05}ff" [urgency_normal] - background = "#1e1e2e" - foreground = "#cdd6f4" + background = "#${base00}99" + foreground = "#${base05}ff" [urgency_critical] - background = "#1e1e2e" - foreground = "#cdd6f4" - frame_color = "#fab387" + background = "#${base00}99" + foreground = "#${base05}ff" + frame_color = "#${base08}" ''; in lib.mkIf cfg.enable { diff --git a/modules/desktop/hjem/wm/fuzzel.nix b/modules/desktop/hjem/wm/fuzzel.nix index 7b9d075..ab11d6b 100644 --- a/modules/desktop/hjem/wm/fuzzel.nix +++ b/modules/desktop/hjem/wm/fuzzel.nix @@ -4,7 +4,7 @@ pkgs, ... }: let - cfg = config.collinux.desktop.sway.components.fuzzel; + cfg = config.collinux.desktop.wm.components.fuzzel; settings = { main = { @@ -21,21 +21,21 @@ }; border = { radius = 0; - width = 2; + width = 3; }; - colors = { - background = "1e1e2edd"; - text = "cdd6f4ff"; - prompt = "bac2deff"; - placeholder = "7f849cff"; - input = "cdd6f4ff"; - match = "89b4faff"; - selection = "585b70ff"; - selection-text = "cdd6f4ff"; - selection-match = "89b4faff"; - counter = "7f849cff"; - border = "89b4faff"; + colors = with config.collinux.palette; { + background = "${base00}99"; + border = "ffffff00"; + input = base05; + match = base13; + placeholder = base03; + text = base04; + prompt = base04; + + selection = "${base01}5a"; + selection-match = base13; + selection-text = base05; }; }; in diff --git a/modules/desktop/hjem/wm/niri.nix b/modules/desktop/hjem/wm/niri.nix new file mode 100644 index 0000000..4449f82 --- /dev/null +++ b/modules/desktop/hjem/wm/niri.nix @@ -0,0 +1,119 @@ +{ + pkgs, + config, + lib, + ... +}: let + cfg = config.collinux.desktop.wm.niri; +in + lib.mkIf cfg.enable { + files.".config/niri/config.kdl".text = '' + spawn-sh-at-startup "${config.collinux.desktop.wallpaper_cmd}" + spawn-at-startup "${pkgs.playerctl}/bin/playerctld daemon" + spawn-at-startup "dunst" + + prefer-no-csd + environment { + GTK_CSD "1" + } + + output "eDP-1" { + scale 1.0 + } + + input { + focus-follows-mouse + } + + hotkey-overlay { + skip-at-startup + hide-not-bound + } + + binds { + Mod+Q { close-window; } + + Mod+Space { spawn "fuzzel"; } + Mod+Return { spawn "foot"; } + Mod+B { spawn "firefox"; } + + Mod+m { maximize-column; } + + XF86MonBrightnessUp { spawn "~/.config/util.lua" "brightness" "5%+"; } + XF86MonBrightnessDown { spawn "~/.config/util.lua" "brightness" "5%-"; } + XF86AudioRaiseVolume { spawn "~/.config/util.lua" "vol" "5%+"; } + XF86AudioLowerVolume { spawn "~/.config/util.lua" "vol" "5%-"; } + } + + gestures { + hot-corners { + off + } + } + + overview { + zoom 0.66 + workspace-shadow { + off + } + } + + layout { + gaps 12 + + focus-ring { + off + } + + border { + width 3 + active-color "#ffffff00" + inactive-color "#ffffff00" + urgent-color "#ffffff00" + } + + struts { + left 16 + right 16 + top 16 + bottom 16 + } + + background-color "transparent" + } + + layer-rule { + match namespace="^wallpaper$" + place-within-backdrop true + } + + layer-rule { + match namespace="^launcher$" + shadow { + on + } + } + + layer-rule { + match namespace="^notifications$" + shadow { + on + } + } + + window-rule { + match app-id="firefox" + open-maximized true + } + + window-rule { + match is-focused=true + shadow { + on + } + } + + ''; + + packages = [pkgs.niri pkgs.xwayland-satellite]; + } diff --git a/modules/desktop/hjem/wm/sway.nix b/modules/desktop/hjem/wm/sway.nix index 1cd7750..367cd0d 100644 --- a/modules/desktop/hjem/wm/sway.nix +++ b/modules/desktop/hjem/wm/sway.nix @@ -4,7 +4,7 @@ lib, ... }: let - cfg = config.collinux.desktop.sway; + cfg = config.collinux.desktop.wm.sway; colors = '' set $rosewater #f5e0dc @@ -36,7 +36,6 @@ ''; settings = '' - exec ${pkgs.foot}/bin/foot --server exec ${pkgs.swaybg}/bin/swaybg -i ${config.collinux.desktop.wallpaper} exec ${pkgs.dunst}/bin/dunst @@ -74,13 +73,15 @@ bindsym Mod4+Shift+8 move container to workspace number 8 bindsym Mod4+Shift+9 move container to workspace number 9 - bindsym Mod4+Return exec ${pkgs.foot}/bin/footclient - bindsym Mod4+Shift+Return exec ${pkgs.foot}/bin/foot + bindsym Mod4+Return exec ${pkgs.foot}/bin/foot bindsym Mod4+Space exec ${pkgs.fuzzel}/bin/fuzzel bindsym Mod4+b exec ${pkgs.firefox}/bin/firefox bindsym Mod4+Shift+b exec ${pkgs.qutebrowser}/bin/qutebrowser bindsym Mod4+q kill + bindsym Mod4+Shift+s exec '${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/$(date +"%s_grim.png")' + bindsym Mod4+Alt+s exec '${pkgs.hyprpicker}/bin/hyprpicker' + bindsym XF86AudioRaiseVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"' bindsym XF86AudioLowerVolume exec 'wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-; dunstify -t 300 -h string:x-canonical-private-synchronous:audio "Volume: " -h "int:value:$(dec=$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | cut -d\" \" -f2);echo "$dec * 100" | ${pkgs.bc}/bin/bc)"' @@ -106,5 +107,6 @@ in sway brightnessctl playerctl + wl-clipboard ]; } diff --git a/modules/desktop/nixos/greeters/greetd.nix b/modules/desktop/nixos/greeters/greetd.nix index 42ff9a7..b612c86 100644 --- a/modules/desktop/nixos/greeters/greetd.nix +++ b/modules/desktop/nixos/greeters/greetd.nix @@ -10,7 +10,7 @@ in enable = true; settings = rec { initial_session = { - command = lib.getExe cfg.command; + command = cfg.command; user = config.collinux.user.name; }; default_session = initial_session; diff --git a/modules/desktop/nixos/programs/firefox.nix b/modules/desktop/nixos/programs/firefox.nix index be5c2cf..5dcfec2 100644 --- a/modules/desktop/nixos/programs/firefox.nix +++ b/modules/desktop/nixos/programs/firefox.nix @@ -16,7 +16,7 @@ in OverrideFirstRunPage = ""; OverridePostUpdatePage = ""; - Homepage = ""; + Homepage = "about:blank"; NewTabPage = false; @@ -30,6 +30,13 @@ in "browser.tabs.inTitlebar" = opt 0; "browser.tabs.hoverPreview.enabled" = opt 0; + "browser.theme.content-theme" = opt 0; + "browser.theme.toolbar-theme" = opt 0; + "browser.display.background_color.dark" = + if cfg.theme == "adwaita" + then opt "#1d1d1d" + else opt ""; + "browser.tabs.loadBookmarksInTabs" = opt true; "browser.toolbars.bookmarks.visibility" = opt "never"; "browser.uiCustomization.state" = opt (lib.replaceStrings ["\n" " "] ["" ""] '' @@ -80,7 +87,7 @@ in "accessibility.force_disabled" = opt 1; "browser.aboutConfig.showWarning" = opt false; - "startup.homepage_welcome_url" = opt ""; + "startup.homepage_welcome_url" = opt "about:blank"; "trailhead.firstrun.didSeeAboutWelcome" = opt true; "datareporting.policy.dataSubmissionPolicyBypassNotification" = opt true; "browser.startup.homepage" = opt "about:blank"; @@ -106,10 +113,14 @@ in "{446900e4-71c2-419f-a6a7-df9c091e268b}" = ext "bitwarden-password-manager"; "uBlock0@raymondhill.net" = ext "uBlock0@raymondhill.net"; "addon@darkreader.org" = ext "addon@darkreader.org"; + "*" = {installation_mode = "blocked";}; # force uninstall inactive extensions } // (lib.optionalAttrs (cfg.theme == "catppuccin") { "{88b098c8-19be-421e-8ffa-85ddd1f3f004}" = ext "catppuccin-mocha-blue"; }) + // (lib.optionalAttrs (cfg.theme == "adwaita") { + "{f1128560-8b23-46c1-aa6f-fb3e79f23cf3}" = ext "gnome-adwaita-gtk4-dark"; + }) // (lib.optionalAttrs (cfg.extensions.zotero.enable) { "zotero@chnm.gmu.edu" = { installation_mode = "force_installed"; diff --git a/modules/desktop/options.nix b/modules/desktop/options.nix index 72dda95..5820cc6 100644 --- a/modules/desktop/options.nix +++ b/modules/desktop/options.nix @@ -14,23 +14,31 @@ in { type = with types; oneOf [str path]; description = "File to use as the wallpaper on this machine"; }; + wallpaper_cmd = mkOption { + type = types.str; + default = "${lib.getExe pkgs.wbg} -s ${config.collinux.desktop.wallpaper}"; + }; greetd = { enable = mkEnableOption "greetd greeter"; command = mkOption { - type = lib.types.package; + type = lib.types.str; default = let cfg = config.collinux.desktop; in - if (cfg.sway.enable && !cfg.gnome.enable) - then pkgs.sway + if (cfg.wm.sway.enable && !cfg.gnome.enable && !cfg.wm.niri.enable) + then lib.getExe pkgs.sway + else if (cfg.wm.niri.enable && !cfg.gnome.enable && !cfg.wm.sway.enable) + then "${pkgs.niri}/bin/niri-session" else null; }; }; gdm.enable = mkEnableOption "gdm display manager"; - sway = { - enable = mkEnableOption "sway"; + wm = { + sway.enable = mkEnableOption "sway"; + niri.enable = mkEnableOption "niri"; + components = { # waybar = mkProgramOption "waybar"; dunst = mkProgramOption "dunst"; @@ -42,7 +50,7 @@ in { gtk = { enable = mkEnableOption "gtk theming"; theme = mkOption { - type = types.enum ["catppuccin" "adwaita"]; + type = types.enum ["catppuccin" "adwaita" "kanagawa"]; default = config.collinux.theme; }; cursor_data = { @@ -100,7 +108,7 @@ in { default = config.collinux.user.name; }; theme = mkOption { - type = types.enum ["none" "catppuccin" "adwaita"]; + type = types.enum ["none" "catppuccin" "adwaita" "kanagawa"]; default = config.collinux.theme; }; extensions.zotero.enable = mkOption { @@ -109,11 +117,20 @@ in { }; }; - foot.enable = mkEnableOption "foot"; + foot = mkProgramOption "foot"; blackbox.enable = mkEnableOption "blackbox"; research.enable = mkEnableOption "zathura, Xournal++, Zotero, Zotero Connector"; }; }; }; + + config = { + assertions = [ + { + assertion = with config.collinux.desktop; !(gdm.enable && greetd.enable); + message = "Can't enable gdm and greetd at the same time"; + } + ]; + }; } diff --git a/modules/nix/nixos/default.nix b/modules/nix/nixos/default.nix index 9c5c51e..07e7f44 100644 --- a/modules/nix/nixos/default.nix +++ b/modules/nix/nixos/default.nix @@ -1,4 +1,8 @@ -{config, pkgs, ...}: { +{ + config, + pkgs, + ... +}: { nix = { gc.automatic = false; # use nh cleaner instead diff --git a/modules/options.nix b/modules/options.nix index b890831..65de32e 100644 --- a/modules/options.nix +++ b/modules/options.nix @@ -1,9 +1,100 @@ -{lib, ...}: let +{ + lib, + config, + ... +}: let inherit (lib) mkOption types; in { options = { collinux.theme = mkOption { - type = types.enum ["catppuccin" "adwaita"]; + type = types.enum ["catppuccin" "adwaita" "kanagawa"]; }; + + collinux.palette = let + colorOption = lib.mkOption { + type = lib.types.strMatching "^([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$"; + }; + in + lib.mkOption { + type = lib.types.submodule { + options = { + base00 = colorOption; + base01 = colorOption; + base02 = colorOption; + base03 = colorOption; + base04 = colorOption; + base05 = colorOption; + base06 = colorOption; + base07 = colorOption; + base08 = colorOption; + base09 = colorOption; + base10 = colorOption; + base11 = colorOption; + base12 = colorOption; + base13 = colorOption; + base14 = colorOption; + base15 = colorOption; + }; + }; + default = + if (config.collinux.theme == "catppuccin") + then { + base00 = "1E1E2E"; + base01 = "181825"; + base02 = "313244"; + base03 = "45475A"; + base04 = "585B70"; + base05 = "CDD6F4"; + base06 = "F5E0DC"; + base07 = "B4BEFE"; + base08 = "F38BA8"; + base09 = "FAB387"; + base10 = "F9E2AF"; + base11 = "A6E3A1"; + base12 = "94E2D5"; + base13 = "89B4FA"; + base14 = "CBA6F7"; + base15 = "F2CDCD"; + } + else if (config.collinux.theme == "adwaita") + then { + base00 = "1D1D1D"; + base01 = "303030"; + base02 = "3D3846"; + base03 = "77767B"; + base04 = "B0AFAC"; + base05 = "DEDDDA"; + base06 = "F6F5F4"; + base07 = "FCFCFC"; + base08 = "E01B24"; + base09 = "FF7800"; + base10 = "F5C211"; + base11 = "33D17A"; + base12 = "33B2A4"; + base13 = "3584E4"; + base14 = "9141AC"; + base15 = "986A44"; + } + else if (config.collinux.theme == "kanagawa") + then { + base00 = "1F1F28"; + base01 = "16161D"; + base02 = "223249"; + base03 = "54546D"; + base04 = "727169"; + base05 = "DCD7BA"; + base06 = "C8C093"; + base07 = "717C7C"; + base08 = "C34043"; + base09 = "FFA066"; + base10 = "C0A36E"; + base11 = "76946A"; + base12 = "6A9589"; + base13 = "7E9CD8"; + base14 = "957FB8"; + base15 = "D27E99"; + } + else {}; + }; }; } diff --git a/modules/services/nixos/audio.nix b/modules/services/nixos/audio.nix index 273f1a4..93f8289 100644 --- a/modules/services/nixos/audio.nix +++ b/modules/services/nixos/audio.nix @@ -7,7 +7,7 @@ cfg = config.collinux.services.audio; in lib.mkIf cfg.enable { - security.rtkit.enable = false; + security.rtkit.enable = true; services.pipewire = { enable = true; wireplumber.enable = true; diff --git a/modules/services/nixos/networking/default.nix b/modules/services/nixos/networking/default.nix index 68c794c..de22f8b 100644 --- a/modules/services/nixos/networking/default.nix +++ b/modules/services/nixos/networking/default.nix @@ -14,5 +14,7 @@ }; networking.resolvconf.enable = false; + + systemd.network.wait-online.enable = false; }; } diff --git a/modules/terminal/hjem/programs/cmus.nix b/modules/terminal/hjem/programs/cmus.nix index afd2350..7a5ac81 100644 --- a/modules/terminal/hjem/programs/cmus.nix +++ b/modules/terminal/hjem/programs/cmus.nix @@ -25,57 +25,34 @@ ''; cmus_theme = '' - set color_cmdline_bg=default - set color_cmdline_fg=default - set color_error=211 - set color_info=223 - set color_separator=8 - set color_statusline_bg=default - set color_statusline_fg=default - set color_titleline_bg=183 - set color_titleline_fg=8 - set color_titleline_attr=bold - set color_win_bg=default - set color_win_cur=117 - set color_win_cur_sel_bg=117 - set color_win_cur_sel_fg=235 - set color_win_dir=default - set color_win_fg=default - set color_win_inactive_cur_sel_bg=0 - set color_win_inactive_cur_sel_fg=default - set color_win_inactive_sel_bg=0 - set color_win_inactive_sel_fg=default - set color_win_sel_bg=15 - set color_win_sel_fg=235 - set color_win_title_bg=default - set color_win_title_fg=183 - set color_win_title_attr=bold + set color_cmdline_error=lightred + set color_cmdline_info=lightyellow + set color_cmdline_fg=lightred + set color_cmdline_bg=237 + set color_separator=238 + set color_statusline_bg=blue + set color_statusline_fg=233 + set color_titleline_bg=237 + set color_titleline_fg=white + set color_win_bg=black + set color_win_fg=241 + set color_win_cur=lightgreen + set color_win_cur_sel_bg=green + set color_win_cur_sel_fg=233 + set color_win_dir=lightblue + set color_win_fg=white + set color_win_inactive_cur_sel_bg=016 + set color_win_inactive_cur_sel_fg=233 + set color_win_sel_bg=237 + set color_win_sel_fg=white + set color_win_title_bg=237 + set color_win_title_fg=lightred ''; cmus_rc = '' - ${ - if (cfg.theme == "catppuccin") - then "colorscheme catppuccin" - else "" - } + colorscheme all set status_display_program=${scriptsDir}/status.sh ''; - - cava_config = - if cfg.theme == "catppuccin" - then '' - [color] - gradient=1 - gradient_color_1='#94e2d5' - gradient_color_2='#89dceb' - gradient_color_3='#74c7ec' - gradient_color_4='#89b4fa' - gradient_color_5='#cba6f7' - gradient_color_6='#f5c2e7' - gradient_color_7='#eba0ac' - gradient_color_8='#f38ba8' - '' - else ""; in lib.mkIf cfg.enable { files = let @@ -87,9 +64,8 @@ in ".config/cmus/scripts/status.sh" = e scripts.statusDisplay; ".config/cmus/rc".text = cmus_rc; - ".config/cmus/catppuccin.theme".text = lib.mkIf (cfg.theme == "catppuccin") cmus_theme; - ".config/cava/config".text = cava_config; + ".config/cmus/all.theme".text = cmus_theme; }; - packages = with pkgs; [cava cmus]; + packages = [pkgs.cmus]; } diff --git a/modules/terminal/hjem/programs/fzf.nix b/modules/terminal/hjem/programs/fzf.nix index 5a51739..f697a24 100644 --- a/modules/terminal/hjem/programs/fzf.nix +++ b/modules/terminal/hjem/programs/fzf.nix @@ -8,18 +8,24 @@ in lib.mkIf cfg.enable { files = - (lib.optionalAttrs config.collinux.terminal.shells.fish.enable { + lib.optionalAttrs config.collinux.terminal.shells.fish.enable (with config.collinux.palette; { ".config/fish/conf.d/fzf.fish".text = '' fzf --fish | source - set -gx FZF_DEFAULT_OPTS "--color bg:#1E1E2E,bg+:#313244,border:#313244,fg:#CDD6F4,fg+:#CDD6F4,header:#F38BA8,hl:#F38BA8,hl+:#F38BA8,info:#CBA6F7,label:#CDD6F4,marker:#B4BEFE,pointer:#F5E0DC,prompt:#CBA6F7,selected-bg:#45475A,spinner:#F5E0DC" + set -Ux FZF_DEFAULT_OPTS "$FZF_NON_COLOR_OPTS"\ + " --color=bg+:#${base01},bg:#${base00},spinner:#${base12},hl:#${base13}"\ + " --color=fg:#${base04},header:#${base13},info:#${base10},pointer:#${base12}"\ + " --color=marker:#${base12},fg+:#${base06},prompt:#${base10},hl+:#${base13}" ''; }) - // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable { + // (lib.optionalAttrs config.collinux.terminal.shells.bash.enable (with config.collinux.palette; { ".config/bash/conf.d/fzf.bash".text = '' eval "$(fzf --bash)" - export FZF_DEFAULT_OPTS="--color bg:#1E1E2E,bg+:#313244,border:#313244,fg:#CDD6F4,fg+:#CDD6F4,header:#F38BA8,hl:#F38BA8,hl+:#F38BA8,info:#CBA6F7,label:#CDD6F4,marker:#B4BEFE,pointer:#F5E0DC,prompt:#CBA6F7,selected-bg:#45475A,spinner:#F5E0DC" + export FZF_DEFAULT_OPTS="$FZF_DEFAULT_OPTS"\ + " --color=bg+:#${base01},bg:#${base00},spinner:#${base12},hl:#${base13}"\ + " --color=fg:#${base04},header:#${base13},info:#${base10},pointer:#${base12}"\ + " --color=marker:#${base12},fg+:#${base06},prompt:#${base10},hl+:#${base13}" ''; - }); + })); packages = [pkgs.fzf]; } diff --git a/modules/terminal/hjem/programs/helix.nix b/modules/terminal/hjem/programs/helix.nix index 2c30881..80279c4 100644 --- a/modules/terminal/hjem/programs/helix.nix +++ b/modules/terminal/hjem/programs/helix.nix @@ -44,8 +44,8 @@ ]; }; - theme = { - inherits = "catppuccin_mocha"; + mkTransparentBackground = inherits: { + inherit inherits; "ui.background" = {}; }; @@ -134,7 +134,9 @@ if cfg.theme == "catppuccin" then "catppuccin_mocha_transparent" else if cfg.theme == "adwaita" - then "adwaita_dark" + then "adwaita_dark_transparent" + else if cfg.theme == "kanagawa" + then "kanagawa_transparent" else ""; }; in @@ -148,7 +150,9 @@ in { ".config/helix/config.toml" = t settings; ".config/helix/languages.toml" = t languages; - ".config/helix/themes/catppuccin_mocha_transparent.toml" = t theme; + ".config/helix/themes/catppuccin_mocha_transparent.toml" = t (mkTransparentBackground "catppuccin_mocha"); + ".config/helix/themes/adwaita_dark_transparent.toml" = t (mkTransparentBackground "adwaita-dark"); + ".config/helix/themes/kanagawa_transparent.toml" = t (mkTransparentBackground "kanagawa"); } // (lib.optionalAttrs config.collinux.terminal.shells.fish.enable { ".config/fish/conf.d/helix.fish".text = '' diff --git a/modules/terminal/hjem/programs/tmux.nix b/modules/terminal/hjem/programs/tmux.nix index fd2737e..d6c7cf8 100644 --- a/modules/terminal/hjem/programs/tmux.nix +++ b/modules/terminal/hjem/programs/tmux.nix @@ -14,12 +14,57 @@ in { config = lib.mkIf cfg.enable { tsunami = { enable = true; + + theme = + if (cfg.theme == "catppuccin") + then { + bg = "#1e1e2e"; + bg_dark = "#181825"; + } + else if (cfg.theme == "adwaita") + then { + bg = "#1d1d1d"; + bg_dark = "#171717"; + } + else {}; + + scripts.switch_to_utility = + # bash + '' + # if utility session doesn't exist, create it + if ! tmux has-session -t "utility"; then + tmux new-session -ds "utility" -c "$HOME" + fi + + if [ -z "$TMUX" ]; then + # we're not in tmux + tmux attach-session -t "utility" + else + tmux switch -t "utility" + fi + + # if cmus window doesn't exist, create it + if ! tmux list-windows -t "utility" -F "#{window_name}" | grep -qx "utility_cmus"; then + tmux new-window -t "utility" -n "utility_cmus" "cmus" + fi + + # if bluetuith window doesn't exist, create it + if ! tmux list-windows -t "utility" -F "#{window_name}" | grep -qx "utility_bluetuith"; then + tmux new-window -t "utility" -n "utility_bluetuith" "bluetuith" + fi + ''; + keys.leader = [ { name = "Lazygit"; key = "C-g"; exec = "display-popup -E -w 80% -h 80% -x C -y C -d '#{?@default-path,#{@default-path},#{pane_current_path}}' ${lib.getExe pkgs.lazygit}"; } + { + name = "Utility"; + key = "C-u"; + exec = "display-popup -w 80% -h 80% -x C -y C 'TMUX= ~/.config/tmux/scripts/switch_to_utility.sh'"; + } ]; confs."main" = '' set -g mouse on diff --git a/modules/terminal/options.nix b/modules/terminal/options.nix index 8799c0b..d4c4a1b 100644 --- a/modules/terminal/options.nix +++ b/modules/terminal/options.nix @@ -6,15 +6,10 @@ ... }: let inherit (lib) mkOption mkEnableOption types; - inherit (my-lib.options {inherit lib config;}) mkProgramOption' mkProgramOption; + inherit (my-lib.options {inherit lib config;}) mkProgramOption; in { options = { collinux.terminal = { - theme = mkOption { - type = types.enum ["catppuccin" "adwaita"]; - default = config.collinux.theme; - }; - shells = { fish = mkProgramOption "fish shell"; bash = mkProgramOption "bash shell"; @@ -36,7 +31,7 @@ in { starship = mkProgramOption "starship prompt"; lazygit.enable = mkEnableOption "lazygit"; - cmus = mkProgramOption "cmus"; + cmus.enable = mkEnableOption "cmus"; nh.enable = mkEnableOption "nh nix helper"; git = { @@ -50,7 +45,12 @@ in { }; }; - helix = mkProgramOption' "helix text editor" { + helix = { + enable = mkEnableOption "helix text editor"; + theme = mkOption { + type = lib.types.enum ["catppuccin" "adwaita" "kanagawa"]; + default = config.collinux.theme; + }; hardMode = mkOption { type = types.bool; description = "Disable arrow keys and mouse"; diff --git a/modules/user/nixos/default.nix b/modules/user/nixos/default.nix index 8692652..05afe37 100644 --- a/modules/user/nixos/default.nix +++ b/modules/user/nixos/default.nix @@ -8,7 +8,7 @@ in { users.users."${cfg.name}" = { isNormalUser = true; description = cfg.name; - extraGroups = ["networkmanager" "disks" "input" "video"] ++ (lib.optional cfg.isAdmin "wheel"); + extraGroups = ["networkmanager" "pipewire" "disks" "input" "video" "dialout" "kvm"] ++ (lib.optional cfg.isAdmin "wheel"); hashedPassword = cfg.password; }; security.sudo-rs.enable = true; -- cgit v1.3.1