diff --git a/flake.nix b/flake.nix index 4f9d578..04ac825 100644 --- a/flake.nix +++ b/flake.nix @@ -284,8 +284,8 @@ modules = linuxOfflineGuiModules [ ./nixos/hosts/chrysalis + ./nixos/configs/virtualbox.nix ./nixos/configs/power-saving-amd.nix - #./nixos/configs/vmware.nix ]; }; diff --git a/nixos/configs/gui/niri.nix b/nixos/configs/gui/niri.nix index 9183382..6177153 100644 --- a/nixos/configs/gui/niri.nix +++ b/nixos/configs/gui/niri.nix @@ -5,380 +5,398 @@ { lib, pkgs, - niri, config, ... }: let - niri-flake = niri; sysConfig = config; + cfg = config.deprekated.niri; in { - # Add in some basic control utilities to our system config. - environment.systemPackages = [ - pkgs.wlrctl - ]; - - # Don't let the niri-flake fuck with our secret provider, kwallet. - services.gnome.gnome-keyring.enable = lib.mkForce false; - - # - # Niri configuration. - # - home-manager.users.deprekated = - { - pkgs, - config, - niri, - ... - }: - with lib; - let - binds = - { - suffixes, - prefixes, - substitutions ? { }, - }: - - # - # This quite-useful monstrosity stolen from @sodiboo. - # - let - replacer = replaceStrings (attrNames substitutions) (attrValues substitutions); - format = - prefix: suffix: - let - actual-suffix = - if isList suffix.action then - { - action = head suffix.action; - args = tail suffix.action; - } - else - { - inherit (suffix) action; - args = [ ]; - }; - - action = replacer "${prefix.action}-${actual-suffix.action}"; - in - { - name = "${prefix.key}+${suffix.key}"; - value.action.${action} = actual-suffix.args; - }; - pairs = - attrs: fn: - concatMap ( - key: - fn { - inherit key; - action = attrs.${key}; - } - ) (attrNames attrs); - in - listToAttrs (pairs prefixes (prefix: pairs suffixes (suffix: [ (format prefix suffix) ]))); - - xwayland-satellite-loop = pkgs.writeScriptBin "xwayland-satellite-loop" '' - #!${pkgs.bash}/bin/bash - - while true; do - ${pkgs.xwayland-satellite}/bin/xwayland-satellite - done + options.deprekated.niri = { + extraStartupCommands = lib.mkOption { + type = lib.types.str; + default = ""; + example = '' + niri msg action spawn -- xmessage hi ''; - in - { - # Don't let the niri-flake fuck with our secret provider, kwallet. - services.gnome-keyring.enable = lib.mkForce false; - - # - # Core Niri settings. - # - programs.niri.settings = { - - # Use Wayland programs when possible. - environment = { - NIXOS_OZONE_WL = "1"; - SHELL_TYPE = "prompt_toolkit"; - XDG_DATA_DIRS = "/var/lib/flatpak/exports/share:/home/deprekated/.nix-profile/share:/nix/profile/share:/home/deprekated/.local/state/nix/profile/share:/etc/profiles/per-user/deprekated/share:/nix/var/nix/profiles/default/share:/run/current-system/sw/share"; - - # Provided by xwayland-satellite below. - DISPLAY = ":0"; - }; - - # Avoid client-side decorations, when possible. - prefer-no-csd = true; - - # Don't show our hotkeys on startup. - hotkey-overlay.skip-at-startup = true; - - # - # Adjust our layouts. - # - layout = { - - # No wasted space between windows. - gaps = 0; - - # Default to half the screen. - default-column-width = { - proportion = 1.0 / 2.0; - }; - - # Set up the column widths for Meta+R. - preset-column-widths = [ - { proportion = 1.0 / 2.0; } - { proportion = 2.0 / 3.0; } - { proportion = 1.0 / 3.0; } - ]; - - # Improve the color of focused windows. - border = { - active = { - color = "#268BD2"; - }; - }; - }; - - # - # Keyboard, mouse, etc. settings. - # - input = { - - # Moving focus with the keyboard should move the mouse. - warp-mouse-to-focus.enable = true; - - touchpad = { - - # No tap to click, but use the number of fingers to press - # multiple buttons. - tap = false; - tap-button-map = "left-right-middle"; - click-method = "clickfinger"; - - # Disable while typing. - dwt = true; - - # Use natural scrolling. - natural-scroll = true; - }; - - trackpoint = { - accel-speed = 0.2; - accel-profile = "flat"; - }; - - keyboard.xkb = { - # Make caps lock a second escape, and ralt a compose. - options = "caps:escape,compose:ralt"; - }; - }; - - # - # Per-application settings. - # - window-rules = [ - - # Wezterm workaround: wezterm gets sad when it - # doesn't get to set its own width, so let it. - { - matches = [ { app-id = "^org.wezfurlong.wezterm$"; } ]; - default-column-width = { }; - } - - # Make anki flashcard windows modal floats. - { - matches = [{ - app-id = "^anki$"; - title = "Add"; - }]; - - open-floating = true; - default-floating-position = { - x = 0; - y = 0; - relative-to = "top-right"; - }; - } - - # Talon windows should show over other ones. - { - matches = [ { app-id = "talon"; } ]; - } - - # Bitwig needs to set its own width. - { - matches = [ { app-id = "^com.bitwig.BitwigStudio$"; } ]; - default-column-width = { }; - } - - # Let gamescope be fullscreen, by default. - { - matches = [ { app-id = "^gamescope$"; } ]; - default-column-width = { - proportion = 1.0; - }; - } - { - matches = [ { app-id = "^pcloud$"; } ]; - open-on-workspace = "2"; - open-focused = false; - } - - # Keep our system monitor on the monitoring screen. - { - matches = [ { app-id = "io.missioncenter.MissionCenter"; } ]; - open-on-output = "Shenzhen Soogeen Electronics Co., LTD. L01N8A 0x01348C5C"; - open-fullscreen = true; - open-focused = false; - } - ]; - - # - # Key bindings. - # - binds = - with config.lib.niri.actions; - let - sh = spawn "sh" "-c"; - in - lib.attrsets.mergeAttrsList [ - { - # Kate keys. - "Mod+O".action = sh "haxtype '⚪O>'"; - "Mod+T".action = sh "haxtype '🔵T>'"; - "Mod+K".action = sh "haxtype '🟣K>'"; - "Mod+W".action = sh "haxtype '🟢W>'"; - "Mod+S".action = sh "haxtype '🔴S>'"; - "Mod+E".action = sh "haxtype '⚫E>'"; - - # Kate keys. - "Mod+F1".action = sh "haxtype ⑴"; - "Mod+F2".action = sh "haxtype ⑵"; - "Mod+F3".action = sh "haxtype ⑶"; - - "Print".action = screenshot; - - "Mod+Return".action = spawn "wezterm"; - "Mod+D".action = spawn "fuzzel"; - "Mod+Space".action = spawn "fuzzel"; - - "XF86AudioRaiseVolume".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1+"; - "XF86AudioLowerVolume".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1-"; - "XF86Launch6".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1+"; - "XF86Tools".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1-"; - "XF86AudioMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - "XF86AudioMicMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; - - "XF86MonBrightnessDown".action = sh "brightnessctl set 10%-"; - "XF86MonBrightnessUp".action = sh "brightnessctl set 10%+"; - - "XF86Messenger".action = sh "rfkill toggle bluetooth"; - "XF86Go".action = sh "rfkill toggle wwan"; - "Cancel".action = sh "rfkill block nfc"; - "XF86Favorites".action = sh "mpc toggle"; - - # Lenovo buttons. - "0x47".action = sh "brightnessctl set 10%-"; - "0x48".action = sh "brightnessctl set 10%+"; - - "Mod+Q".action = close-window; - - "XF86AudioPrev".action = sh "playerctl previous"; - "XF86AudioNext".action = sh "playerctl next"; - "XF86AudioPlay".action = sh "playerctl play-pause"; - - "XF86Launch5".action = sh "playerctl play-pause"; - - } - (binds { - suffixes."Left" = "column-left"; - suffixes."Down" = "window-down"; - suffixes."Up" = "window-up"; - suffixes."Right" = "column-right"; - prefixes."Mod" = "focus"; - prefixes."Mod+Ctrl" = "move"; - prefixes."Mod+Shift" = "focus-monitor"; - prefixes."Mod+Shift+Ctrl" = "move-window-to-monitor"; - substitutions."monitor-column" = "monitor"; - substitutions."monitor-window" = "monitor"; - }) - (binds { - suffixes."Home" = "first"; - suffixes."End" = "last"; - prefixes."Mod" = "focus-column"; - prefixes."Mod+Ctrl" = "move-column-to"; - }) - (binds { - suffixes."U" = "workspace-down"; - suffixes."I" = "workspace-up"; - prefixes."Mod" = "focus"; - prefixes."Mod+Ctrl" = "move-window-to"; - prefixes."Mod+Shift" = "move"; - }) - (binds { - suffixes = builtins.listToAttrs ( - map (n: { - name = toString n; - value = [ - "workspace" - n - ]; - }) (range 1 9) - ); - prefixes."Mod" = "focus"; - prefixes."Mod+Ctrl" = "move-window-to"; - }) - { - "Mod+Comma".action = consume-window-into-column; - "Mod+Period".action = expel-window-from-column; - - "Mod+R".action = switch-preset-column-width; - "Mod+F".action = maximize-column; - "Mod+Shift+F".action = fullscreen-window; - "Mod+C".action = center-column; - - "Mod+L".action = switch-focus-between-floating-and-tiling; - "Mod+Shift+L".action = toggle-window-floating; - - "Mod+Minus".action = set-column-width "-10%"; - "Mod+Plus".action = set-column-width "+10%"; - "Mod+Shift+Minus".action = set-window-height "-10%"; - "Mod+Shift+Plus".action = set-window-height "+10%"; - - "Mod+Print".action = screenshot-window; - - "Mod+Shift+E".action = quit; - "Mod+Shift+P".action = power-off-monitors; - - "Mod+Shift+Ctrl+T".action = toggle-debug-tint; - } - ]; - - # Startup our wallpaper and our credential manager. - spawn-at-startup = - let - niri-init = pkgs.writeScriptBin "niri-init" '' - #!${pkgs.bash}/bin/bash - systemctl --user restart swaybg - sleep 2 - - systemctl --user stop waybar - niri msg action spawn -- waybar - - sleep 2 - - niri msg action spawn -- ${xwayland-satellite-loop}/bin/xwayland-satellite-loop - niri msg action spawn -- home-assistant-desktop - ${if (sysConfig.networking.hostName != "trailblazer") then "#" else ""}niri msg action spawn -- ${pkgs.mission-center}/bin/missioncenter - niri msg action spawn -- ${pkgs.pcloud}/bin/pcloud - - sleep 10 - - niri msg action spawn -- kdeconnect-cli -l - ''; - in - [ { command = [ "${niri-init}/bin/niri-init" ]; } ]; - }; + description = "Any extra commands to be added to Niri's startup."; }; + }; + + config = { + # Add in some basic control utilities to our system config. + environment.systemPackages = [ + pkgs.wlrctl + ]; + + # Don't let the niri-flake fuck with our secret provider, kwallet. + services.gnome.gnome-keyring.enable = lib.mkForce false; + + # + # Niri configuration. + # + home-manager.users.deprekated = + { + pkgs, + config, + niri, + ... + }: + with lib; + let + binds = + { + suffixes, + prefixes, + substitutions ? { }, + }: + + # + # This quite-useful monstrosity stolen from @sodiboo. + # + let + replacer = replaceStrings (attrNames substitutions) (attrValues substitutions); + format = + prefix: suffix: + let + actual-suffix = + if isList suffix.action then + { + action = head suffix.action; + args = tail suffix.action; + } + else + { + inherit (suffix) action; + args = [ ]; + }; + + action = replacer "${prefix.action}-${actual-suffix.action}"; + in + { + name = "${prefix.key}+${suffix.key}"; + value.action.${action} = actual-suffix.args; + }; + pairs = + attrs: fn: + concatMap ( + key: + fn { + inherit key; + action = attrs.${key}; + } + ) (attrNames attrs); + in + listToAttrs (pairs prefixes (prefix: pairs suffixes (suffix: [ (format prefix suffix) ]))); + + xwayland-satellite-loop = pkgs.writeScriptBin "xwayland-satellite-loop" '' + #!${pkgs.bash}/bin/bash + + while true; do + ${pkgs.xwayland-satellite}/bin/xwayland-satellite + done + ''; + in + { + # Don't let the niri-flake fuck with our secret provider, kwallet. + services.gnome-keyring.enable = lib.mkForce false; + + # + # Core Niri settings. + # + programs.niri.settings = { + + # Use Wayland programs when possible. + environment = { + NIXOS_OZONE_WL = "1"; + SHELL_TYPE = "prompt_toolkit"; + XDG_DATA_DIRS = "/var/lib/flatpak/exports/share:/home/deprekated/.nix-profile/share:/nix/profile/share:/home/deprekated/.local/state/nix/profile/share:/etc/profiles/per-user/deprekated/share:/nix/var/nix/profiles/default/share:/run/current-system/sw/share"; + + # Provided by xwayland-satellite below. + DISPLAY = ":0"; + }; + + # Avoid client-side decorations, when possible. + prefer-no-csd = true; + + # Don't show our hotkeys on startup. + hotkey-overlay.skip-at-startup = true; + + # + # Adjust our layouts. + # + layout = { + + # No wasted space between windows. + gaps = 0; + + # Default to half the screen. + default-column-width = { + proportion = 1.0 / 2.0; + }; + + # Set up the column widths for Meta+R. + preset-column-widths = [ + { proportion = 1.0 / 2.0; } + { proportion = 2.0 / 3.0; } + { proportion = 1.0 / 3.0; } + ]; + + # Improve the color of focused windows. + border = { + active = { + color = "#268BD2"; + }; + }; + }; + + # + # Keyboard, mouse, etc. settings. + # + input = { + + # Moving focus with the keyboard should move the mouse. + warp-mouse-to-focus.enable = true; + + touchpad = { + + # No tap to click, but use the number of fingers to press + # multiple buttons. + tap = false; + tap-button-map = "left-right-middle"; + click-method = "clickfinger"; + + # Disable while typing. + dwt = true; + + # Use natural scrolling. + natural-scroll = true; + }; + + trackpoint = { + accel-speed = 0.2; + accel-profile = "flat"; + }; + + keyboard.xkb = { + # Make caps lock a second escape, and ralt a compose. + options = "caps:escape,compose:ralt"; + }; + }; + + # + # Per-application settings. + # + window-rules = [ + + # Wezterm workaround: wezterm gets sad when it + # doesn't get to set its own width, so let it. + { + matches = [ { app-id = "^org.wezfurlong.wezterm$"; } ]; + default-column-width = { }; + } + + # Make anki flashcard windows modal floats. + { + matches = [ + { + app-id = "^anki$"; + title = "Add"; + } + ]; + + open-floating = true; + default-floating-position = { + x = 0; + y = 0; + relative-to = "top-right"; + }; + } + + # Talon windows should show over other ones. + { + matches = [ { app-id = "talon"; } ]; + } + + # Bitwig needs to set its own width. + { + matches = [ { app-id = "^com.bitwig.BitwigStudio$"; } ]; + default-column-width = { }; + } + + # Let gamescope be fullscreen, by default. + { + matches = [ { app-id = "^gamescope$"; } ]; + default-column-width = { + proportion = 1.0; + }; + } + { + matches = [ { app-id = "^pcloud$"; } ]; + open-on-workspace = "2"; + open-focused = false; + } + + # Keep our system monitor on the monitoring screen. + { + matches = [ { app-id = "io.missioncenter.MissionCenter"; } ]; + open-on-output = "Shenzhen Soogeen Electronics Co., LTD. L01N8A 0x01348C5C"; + open-fullscreen = true; + open-focused = false; + } + ]; + + # + # Key bindings. + # + binds = + with config.lib.niri.actions; + let + sh = spawn "sh" "-c"; + in + lib.attrsets.mergeAttrsList [ + { + # Kate keys. + "Mod+O".action = sh "haxtype '⚪O>'"; + "Mod+T".action = sh "haxtype '🔵T>'"; + "Mod+K".action = sh "haxtype '🟣K>'"; + "Mod+W".action = sh "haxtype '🟢W>'"; + "Mod+S".action = sh "haxtype '🔴S>'"; + "Mod+E".action = sh "haxtype '⚫E>'"; + + # Kate keys. + "Mod+F1".action = sh "haxtype ⑴"; + "Mod+F2".action = sh "haxtype ⑵"; + "Mod+F3".action = sh "haxtype ⑶"; + + "Print".action = screenshot; + + "Mod+Return".action = spawn "wezterm"; + "Mod+D".action = spawn "fuzzel"; + "Mod+Space".action = spawn "fuzzel"; + + "XF86AudioRaiseVolume".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1+"; + "XF86AudioLowerVolume".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1-"; + "XF86Launch6".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1+"; + "XF86Tools".action = sh "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 0.1-"; + "XF86AudioMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + "XF86AudioMicMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; + + "XF86MonBrightnessDown".action = sh "brightnessctl set 10%-"; + "XF86MonBrightnessUp".action = sh "brightnessctl set 10%+"; + + "XF86Messenger".action = sh "rfkill toggle bluetooth"; + "XF86Go".action = sh "rfkill toggle wwan"; + "Cancel".action = sh "rfkill block nfc"; + "XF86Favorites".action = sh "mpc toggle"; + + # Lenovo buttons. + "0x47".action = sh "brightnessctl set 10%-"; + "0x48".action = sh "brightnessctl set 10%+"; + + "Mod+Q".action = close-window; + + "XF86AudioPrev".action = sh "playerctl previous"; + "XF86AudioNext".action = sh "playerctl next"; + "XF86AudioPlay".action = sh "playerctl play-pause"; + + "XF86Launch5".action = sh "playerctl play-pause"; + + } + (binds { + suffixes."Left" = "column-left"; + suffixes."Down" = "window-down"; + suffixes."Up" = "window-up"; + suffixes."Right" = "column-right"; + prefixes."Mod" = "focus"; + prefixes."Mod+Ctrl" = "move"; + prefixes."Mod+Shift" = "focus-monitor"; + prefixes."Mod+Shift+Ctrl" = "move-window-to-monitor"; + substitutions."monitor-column" = "monitor"; + substitutions."monitor-window" = "monitor"; + }) + (binds { + suffixes."Home" = "first"; + suffixes."End" = "last"; + prefixes."Mod" = "focus-column"; + prefixes."Mod+Ctrl" = "move-column-to"; + }) + (binds { + suffixes."U" = "workspace-down"; + suffixes."I" = "workspace-up"; + prefixes."Mod" = "focus"; + prefixes."Mod+Ctrl" = "move-window-to"; + prefixes."Mod+Shift" = "move"; + }) + (binds { + suffixes = builtins.listToAttrs ( + map (n: { + name = toString n; + value = [ + "workspace" + n + ]; + }) (range 1 9) + ); + prefixes."Mod" = "focus"; + prefixes."Mod+Ctrl" = "move-window-to"; + }) + { + "Mod+Comma".action = consume-window-into-column; + "Mod+Period".action = expel-window-from-column; + + "Mod+R".action = switch-preset-column-width; + "Mod+F".action = maximize-column; + "Mod+Shift+F".action = fullscreen-window; + "Mod+C".action = center-column; + + "Mod+L".action = switch-focus-between-floating-and-tiling; + "Mod+Shift+L".action = toggle-window-floating; + + "Mod+Minus".action = set-column-width "-10%"; + "Mod+Plus".action = set-column-width "+10%"; + "Mod+Shift+Minus".action = set-window-height "-10%"; + "Mod+Shift+Plus".action = set-window-height "+10%"; + + "Mod+Print".action = screenshot-window; + + "Mod+Shift+E".action = quit; + "Mod+Shift+P".action = power-off-monitors; + + "Mod+Shift+Ctrl+T".action = toggle-debug-tint; + } + ]; + + # Startup our wallpaper and our credential manager. + spawn-at-startup = + let + niri-init = pkgs.writeScriptBin "niri-init" '' + #!${pkgs.bash}/bin/bash + systemctl --user restart swaybg + sleep 2 + + systemctl --user stop waybar + niri msg action spawn -- waybar + + sleep 2 + + niri msg action spawn -- ${xwayland-satellite-loop}/bin/xwayland-satellite-loop + niri msg action spawn -- home-assistant-desktop + ${ + if (sysConfig.networking.hostName != "trailblazer") then "#" else "" + }niri msg action spawn -- ${pkgs.mission-center}/bin/missioncenter + niri msg action spawn -- ${pkgs.pcloud}/bin/pcloud + + ${cfg.extraStartupCommands} + + sleep 10 + + niri msg action spawn -- kdeconnect-cli -l + ''; + in + [ { command = [ "${niri-init}/bin/niri-init" ]; } ]; + }; + }; + }; } diff --git a/nixos/configs/nix.nix b/nixos/configs/nix.nix index 83f68eb..76859f9 100644 --- a/nixos/configs/nix.nix +++ b/nixos/configs/nix.nix @@ -27,7 +27,8 @@ # For non-trailblazer machines, allow building on Trailblazer. distributedBuilds = - !(config.networking.hostName == "trailblazer"); + !(config.networking.hostName == "trailblazer") && + !(config.networking.hostName == "chrysalis"); buildMachines = if config.nix.distributedBuilds then [ diff --git a/nixos/configuration.linux.nix b/nixos/configuration.linux.nix index a034b4f..c1de2f8 100644 --- a/nixos/configuration.linux.nix +++ b/nixos/configuration.linux.nix @@ -4,7 +4,12 @@ # # vim: et:ts=2:sw=2: # -{ pkgs, deprekages, talon, ... }: +{ + pkgs, + deprekages, + talon, + ... +}: { # Ensures the system state isn't changed breakingly (e.g. by updating @@ -40,9 +45,6 @@ # General tweaks and fixes. # - # Make systemd not hang here forever. - systemd.extraConfig = "DefaultTimeoutStopSec=20"; - # # Users. # @@ -99,11 +101,18 @@ services.mullvad-vpn.enable = true; virtualisation.docker.enable = true; - services.udev.packages = [ - pkgs.minipro - ] ++ (if pkgs.stdenv.isAarch64 then [] else [ - #talon.default - ]); + services.udev.packages = + [ + pkgs.minipro + ] + ++ ( + if pkgs.stdenv.isAarch64 then + [ ] + else + [ + #talon.default + ] + ); services.fwupd.enable = true; @@ -117,4 +126,12 @@ userServices = true; }; }; + + # No, you haven't doxed us. + # This is just the location of Amsterdam =P. + location = { + provider = "geoclue2"; + latitude = 52.377956; + longitude = 4.897070; + }; } diff --git a/nixos/hosts/chrysalis/default.nix b/nixos/hosts/chrysalis/default.nix index 0a7de4f..9213138 100644 --- a/nixos/hosts/chrysalis/default.nix +++ b/nixos/hosts/chrysalis/default.nix @@ -9,6 +9,7 @@ pkgs, deprekages, modulesPath, + normalizeModule, ... }: { @@ -16,6 +17,7 @@ (modulesPath + "/installer/scan/not-detected.nix") ./audio.nix ./ec_kmod.nix + (normalizeModule ./wluma.hm.nix) ]; # Bootloader. @@ -56,6 +58,9 @@ # Override stylix font sizes. stylix.fonts.sizes.desktop = lib.mkForce 16; + # Use wluma to manage backlight with the ALS and screen content. + deprekated.niri.extraStartupCommands = "niri msg action spawn -- ${lib.getExe pkgs.wluma}"; + # Accomodate the curved screen top by moving things in just a little. deprekated.waybar.hostSpecificCss = '' .modules-left > :first-child > * { @@ -73,8 +78,8 @@ # # Hardware config. # - # Use the latest kernel, and our patches, until the Dell+Alienware stuff makes it into - # more mainline kernels. We'll include ccache so we can iterate sanely. + + # Use the latest kernel to try and ward off WiFi issues. boot.kernelPackages = pkgs.linuxPackages_latest; boot.extraModprobeConfig = '' diff --git a/nixos/hosts/chrysalis/wluma.hm.nix b/nixos/hosts/chrysalis/wluma.hm.nix new file mode 100644 index 0000000..1acedbd --- /dev/null +++ b/nixos/hosts/chrysalis/wluma.hm.nix @@ -0,0 +1,5 @@ +{ ... }: +{ + # Set up wluma. + xdg.configFile."wluma/config.toml".source = ../../../wluma/chrysalis.toml; +} diff --git a/nixos/packages/gui.pkgs.nix b/nixos/packages/gui.pkgs.nix index 70066f3..eb5ab15 100644 --- a/nixos/packages/gui.pkgs.nix +++ b/nixos/packages/gui.pkgs.nix @@ -30,7 +30,7 @@ with pkgs; # Comms. dino - gajim + #gajim vesktop nheko diff --git a/wluma/chrysalis.toml b/wluma/chrysalis.toml new file mode 100644 index 0000000..fb8f49f --- /dev/null +++ b/wluma/chrysalis.toml @@ -0,0 +1,13 @@ +[als.iio] +path = "/sys/bus/iio/devices" +thresholds = { 0 = "night", 20 = "dark", 80 = "dim", 250 = "normal", 500 = "bright", 800 = "outdoors" } + +[[output.backlight]] +name = "eDP-1" +path = "/sys/class/backlight/amdgpu_bl1" +capturer = "wayland" + +[[keyboard]] +name = "keyboard-framework" +path = "/sys/bus/platform/devices/framework_laptop/leds/framework_laptop::kbd_backlight" +