From 62c3617800dcb8cd706922c20008dec35901968f Mon Sep 17 00:00:00 2001 From: Kopatz <7265381+Kropatz@users.noreply.github.com> Date: Fri, 7 Jun 2024 17:35:18 +0200 Subject: [PATCH] power stuff and disable docker --- home-manager/hyprland/waybar.nix | 1 + home-manager/i3.nix | 451 +++++++++++++++-------------- modules/collections/laptop.nix | 10 +- modules/hardware/default.nix | 1 + modules/hardware/fingerprint.nix | 18 ++ systems/laptop/configuration.nix | 8 +- systems/laptop/modules/battery.nix | 19 +- users/kopatz/home.nix | 4 +- 8 files changed, 274 insertions(+), 238 deletions(-) create mode 100644 modules/hardware/fingerprint.nix diff --git a/home-manager/hyprland/waybar.nix b/home-manager/hyprland/waybar.nix index e8d5101..823483e 100644 --- a/home-manager/hyprland/waybar.nix +++ b/home-manager/hyprland/waybar.nix @@ -94,6 +94,7 @@ in { "backlight".states = [ 0 50 ]; "backlight".format-icons = [ "" "" ]; "battery".states.good = 95; + "battery".interval = 5; "battery".states.warning = 30; "battery".states.critical = 15; "battery".format = "{capacity}% / {power:.2}W {icon}"; diff --git a/home-manager/i3.nix b/home-manager/i3.nix index 36b4a55..7a1ce4a 100644 --- a/home-manager/i3.nix +++ b/home-manager/i3.nix @@ -1,231 +1,236 @@ -{ pkgs, config, ... }: { - home.file.".config/i3" = { - enable = true; - recursive = true; - source = ../.config/i3; - target = ".config/i3"; - }; - - home.file.".config/picom" = { - enable = true; - recursive = true; - source = ../.config/picom; - target = ".config/picom"; - }; - - home.file.".config/wallpapers" = { - enable = true; - recursive = true; - source = ../.config/wallpapers; - target = ".config/wallpapers"; - }; - - home.file.".config/polybar" = { - enable = true; - recursive = true; - source = ../.config/polybar; - target = ".config/polybar"; - }; - services.polybar = { - enable = true; - package = pkgs.polybar.override { - pulseSupport = true; - i3Support = true; +{ osConfig, pkgs, config, lib, ... }: +let cfg = osConfig.custom.graphical.i3; +in { + config = lib.mkIf cfg.enable { + home.file.".config/i3" = { + enable = true; + recursive = true; + source = ../.config/i3; + target = ".config/i3"; }; - script = "polybar &"; - config = { - "bar/main" = { - monitor = "\${env:MONITOR:}"; - bottom = true; - width = "100%"; - height = "22pt"; - radius = 0; - # offset-y = -5; - # offset-y = "5%"; - # dpi = 96; - background = config.stylix.base16Scheme.base01; - foreground = config.stylix.base16Scheme.base05; - line-size = "3pt"; - font-0 = "Noto Sans:size=11;1"; - font-1 = "Hack-Regular.ttf: Hack:style=Regular"; - font-2 = "Noto Sans CJK JP:style=Regular"; - border-top-size = 0; - border-right-size = 0; - border-left-size = 0; - border-bottom-size = 0; # "4pt"; - border-color = config.stylix.base16Scheme.base00; - padding-left = 2; - padding-right = 2; - module-margin = 1; - modules-left = "i3"; - modules-center = "xwindow"; - modules-right = "network memory cpu cpu-temp gpu pulseaudio date tray"; - cursor-click = "pointer"; - cursor-scroll = "ns-resize"; - enable-ipc = true; - #tray-position = "right"; - # wm-restack = "generic"; - # wm-restack = "bspwm"; - # wm-restack = "i3"; - # override-redirect = true; - }; - "module/i3" = let padding = 2; - in { - type = "internal/i3"; - pin-workspaces = true; - show-urgent = true; - strip-wsnumbers = true; - index-sort = true; - enable-click = true; - wrapping-scroll = true; - fuzzy-match = true; - format = " "; - label-focused = "%name%"; - label-focused-foreground = config.stylix.base16Scheme.base01; - label-focused-background = config.stylix.base16Scheme.base05; - label-focused-underline = config.stylix.base16Scheme.base03; - label-focused-padding = padding; - label-unfocused = "%name%"; - label-unfocused-padding = padding; - label-visible = "%name%"; - label-visible-underline = config.stylix.base16Scheme.base01; - label-visible-padding = padding; - label-urgent = "%name%"; - label-urgent-foreground = config.stylix.base16Scheme.base00; - label-urgent-background = config.stylix.base16Scheme.base08; - label-urgent-underline = config.stylix.base16Scheme.base0F; - label-urgent-padding = padding; - }; - "module/xworkspaces" = { - type = "internal/xworkspaces"; - label-active = "%name%"; - label-active-background = config.stylix.base16Scheme.base05; - label-active-foreground = config.stylix.base16Scheme.base01; - label-active-underline = config.stylix.base16Scheme.base03; - label-active-padding = 1; - label-occupied = "%name%"; - label-occupied-padding = 1; - label-urgent = "%name%"; - label-urgent-background = config.stylix.base16Scheme.base08; - label-urgent-padding = 1; - label-empty = "%name%"; - label-empty-foreground = config.stylix.base16Scheme.base06; - label-empty-padding = 1; - }; - "module/xwindow" = { - type = "internal/xwindow"; - label = "%title:0:60:...%"; - }; - # "module/filesystem" = { - # type = "internal/fs"; - # interval = 25; - # mount-0 = "/"; - # label-mounted = "%{F#F0C674}%mountpoint%%{F-} %percentage_used%%"; - # label-unmounted = "%mountpoint% not mounted"; - # label-unmounted-foreground = colors.disabled; - # }; - "module/network" = { - type = "internal/network"; - interface-type = "wired"; - interval = 3; - accumulate-stats = true; - format-connected = ""; - format-connected-foreground = config.stylix.base16Scheme.base0B; - format-disconnected = ""; - format-diconnected-foreground = config.stylix.base16Scheme.base08; - label-connected = "%ifname% %netspeed%"; - label-disconnected = ""; - }; - "module/pulseaudio" = { - type = "internal/pulseaudio"; - # format-volume-prefix = "VOL "; - # format-volume-prefix-foreground = colors.primary; - format-volume = " "; - # format-volume-background = colors.background; - # label-volume-background = colors.background; - format-volume-foreground = config.stylix.base16Scheme.base09; - label-volume = "%percentage%%"; - label-muted = "sound ---"; - label-muted-foreground = config.stylix.base16Scheme.base09; - #ramp-volume-0 = ""; - #ramp-volume-1 = "󰕾"; - #ramp-volume-2 = ""; - ramp-volume-0 = "sound"; - ramp-volume-1 = "sound"; - ramp-volume-2 = "sound"; - click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; - }; - # "module/xkeyboard" = { - # type = "internal/xkeyboard"; - # blacklist-0 = "num lock"; - # label-layout = "%layout%"; - # label-layout-foreground = colors.primary; - # label-indicator-padding = 2; - # label-indicator-margin = 1; - # label-indicator-foreground = colors.background; - # label-indicator-background = colors.secondary; - # }; - "module/memory" = { - type = "internal/memory"; - interval = 3; - format-prefix = "RAM "; - format-prefix-foreground = config.stylix.base16Scheme.base0C; - label = "%percentage_used:2%%"; - }; - "module/cpu" = { - type = "internal/cpu"; - interval = 3; - format-prefix = "CPU "; - format-prefix-foreground = config.stylix.base16Scheme.base0D; - label = "%percentage:2%%"; - }; - "module/cpu-temp" = { - type = "custom/script"; - exec = "~/.config/polybar/temperature.sh"; - interval = 3; - }; + home.file.".config/picom" = { + enable = true; + recursive = true; + source = ../.config/picom; + target = ".config/picom"; + }; - "module/gpu" = { - type = "custom/script"; - exec = "~/.config/polybar/nvidia.sh"; - interval = 3; - }; - # "network-base" = { - # type = "internal/network"; - # interval = 5; - # format-connected = ""; - # format-disconnected = ""; - # label-disconnected = "%{F#F0C674}%ifname%%{F#707880} disconnected"; - # }; - # "module/wlan" = { - # "inherit" = "network-base"; - # interface-type = "wireless"; - # label-connected = "%{F#F0C674}%ifname%%{F-} %essid% %local_ip%"; - # }; - #"module/eth" = { - # "inherit" = "network-base"; - # interface-type = "wired"; - # label-connected = "%{F#F0C674}%ifname%%{F-} %local_ip%"; - #}; - "module/date" = { - type = "internal/date"; - interval = 1; - date = "%d %b %l:%M %p"; - date-alt = "%Y-%m-%d %H:%M:%S"; - label = "%date%"; - label-foreground = config.stylix.base16Scheme.base06; - # format-background = colors.background; - }; - "module/tray" = { - type = "internal/tray"; + home.file.".config/wallpapers" = { + enable = true; + recursive = true; + source = ../.config/wallpapers; + target = ".config/wallpapers"; + }; - format-margin = "8px"; - tray-spacing = "8px"; + home.file.".config/polybar" = { + enable = true; + recursive = true; + source = ../.config/polybar; + target = ".config/polybar"; + }; + services.polybar = { + enable = true; + package = pkgs.polybar.override { + pulseSupport = true; + i3Support = true; }; - "settings" = { - screenchange-reload = true; - pseudo-transparency = false; + script = "polybar &"; + config = { + "bar/main" = { + monitor = "\${env:MONITOR:}"; + bottom = true; + width = "100%"; + height = "22pt"; + radius = 0; + # offset-y = -5; + # offset-y = "5%"; + # dpi = 96; + background = config.stylix.base16Scheme.base01; + foreground = config.stylix.base16Scheme.base05; + line-size = "3pt"; + font-0 = "Noto Sans:size=11;1"; + font-1 = "Hack-Regular.ttf: Hack:style=Regular"; + font-2 = "Noto Sans CJK JP:style=Regular"; + border-top-size = 0; + border-right-size = 0; + border-left-size = 0; + border-bottom-size = 0; # "4pt"; + border-color = config.stylix.base16Scheme.base00; + padding-left = 2; + padding-right = 2; + module-margin = 1; + modules-left = "i3"; + modules-center = "xwindow"; + modules-right = + "network memory cpu cpu-temp gpu pulseaudio date tray"; + cursor-click = "pointer"; + cursor-scroll = "ns-resize"; + enable-ipc = true; + #tray-position = "right"; + # wm-restack = "generic"; + # wm-restack = "bspwm"; + # wm-restack = "i3"; + # override-redirect = true; + }; + "module/i3" = let padding = 2; + in { + type = "internal/i3"; + pin-workspaces = true; + show-urgent = true; + strip-wsnumbers = true; + index-sort = true; + enable-click = true; + wrapping-scroll = true; + fuzzy-match = true; + format = " "; + label-focused = "%name%"; + label-focused-foreground = config.stylix.base16Scheme.base01; + label-focused-background = config.stylix.base16Scheme.base05; + label-focused-underline = config.stylix.base16Scheme.base03; + label-focused-padding = padding; + label-unfocused = "%name%"; + label-unfocused-padding = padding; + label-visible = "%name%"; + label-visible-underline = config.stylix.base16Scheme.base01; + label-visible-padding = padding; + label-urgent = "%name%"; + label-urgent-foreground = config.stylix.base16Scheme.base00; + label-urgent-background = config.stylix.base16Scheme.base08; + label-urgent-underline = config.stylix.base16Scheme.base0F; + label-urgent-padding = padding; + }; + "module/xworkspaces" = { + type = "internal/xworkspaces"; + label-active = "%name%"; + label-active-background = config.stylix.base16Scheme.base05; + label-active-foreground = config.stylix.base16Scheme.base01; + label-active-underline = config.stylix.base16Scheme.base03; + label-active-padding = 1; + label-occupied = "%name%"; + label-occupied-padding = 1; + label-urgent = "%name%"; + label-urgent-background = config.stylix.base16Scheme.base08; + label-urgent-padding = 1; + label-empty = "%name%"; + label-empty-foreground = config.stylix.base16Scheme.base06; + label-empty-padding = 1; + }; + "module/xwindow" = { + type = "internal/xwindow"; + label = "%title:0:60:...%"; + }; + # "module/filesystem" = { + # type = "internal/fs"; + # interval = 25; + # mount-0 = "/"; + # label-mounted = "%{F#F0C674}%mountpoint%%{F-} %percentage_used%%"; + # label-unmounted = "%mountpoint% not mounted"; + # label-unmounted-foreground = colors.disabled; + # }; + "module/network" = { + type = "internal/network"; + interface-type = "wired"; + interval = 3; + accumulate-stats = true; + format-connected = ""; + format-connected-foreground = config.stylix.base16Scheme.base0B; + format-disconnected = ""; + format-diconnected-foreground = config.stylix.base16Scheme.base08; + label-connected = "%ifname% %netspeed%"; + label-disconnected = ""; + }; + "module/pulseaudio" = { + type = "internal/pulseaudio"; + # format-volume-prefix = "VOL "; + # format-volume-prefix-foreground = colors.primary; + format-volume = " "; + # format-volume-background = colors.background; + # label-volume-background = colors.background; + format-volume-foreground = config.stylix.base16Scheme.base09; + label-volume = "%percentage%%"; + label-muted = "sound ---"; + label-muted-foreground = config.stylix.base16Scheme.base09; + #ramp-volume-0 = ""; + #ramp-volume-1 = "󰕾"; + #ramp-volume-2 = ""; + + ramp-volume-0 = "sound"; + ramp-volume-1 = "sound"; + ramp-volume-2 = "sound"; + click-right = "${pkgs.pavucontrol}/bin/pavucontrol"; + }; + # "module/xkeyboard" = { + # type = "internal/xkeyboard"; + # blacklist-0 = "num lock"; + # label-layout = "%layout%"; + # label-layout-foreground = colors.primary; + # label-indicator-padding = 2; + # label-indicator-margin = 1; + # label-indicator-foreground = colors.background; + # label-indicator-background = colors.secondary; + # }; + "module/memory" = { + type = "internal/memory"; + interval = 3; + format-prefix = "RAM "; + format-prefix-foreground = config.stylix.base16Scheme.base0C; + label = "%percentage_used:2%%"; + }; + "module/cpu" = { + type = "internal/cpu"; + interval = 3; + format-prefix = "CPU "; + format-prefix-foreground = config.stylix.base16Scheme.base0D; + label = "%percentage:2%%"; + }; + "module/cpu-temp" = { + type = "custom/script"; + exec = "~/.config/polybar/temperature.sh"; + interval = 3; + }; + + "module/gpu" = { + type = "custom/script"; + exec = "~/.config/polybar/nvidia.sh"; + interval = 3; + }; + # "network-base" = { + # type = "internal/network"; + # interval = 5; + # format-connected = ""; + # format-disconnected = ""; + # label-disconnected = "%{F#F0C674}%ifname%%{F#707880} disconnected"; + # }; + # "module/wlan" = { + # "inherit" = "network-base"; + # interface-type = "wireless"; + # label-connected = "%{F#F0C674}%ifname%%{F-} %essid% %local_ip%"; + # }; + #"module/eth" = { + # "inherit" = "network-base"; + # interface-type = "wired"; + # label-connected = "%{F#F0C674}%ifname%%{F-} %local_ip%"; + #}; + "module/date" = { + type = "internal/date"; + interval = 1; + date = "%d %b %l:%M %p"; + date-alt = "%Y-%m-%d %H:%M:%S"; + label = "%date%"; + label-foreground = config.stylix.base16Scheme.base06; + # format-background = colors.background; + }; + "module/tray" = { + type = "internal/tray"; + + format-margin = "8px"; + tray-spacing = "8px"; + }; + "settings" = { + screenchange-reload = true; + pseudo-transparency = false; + }; }; }; }; diff --git a/modules/collections/laptop.nix b/modules/collections/laptop.nix index dfdbe7b..eeea23f 100644 --- a/modules/collections/laptop.nix +++ b/modules/collections/laptop.nix @@ -13,21 +13,19 @@ ld.enable = true; settings.enable = true; }; - misc = { - docker.enable = true; - }; hardware = { firmware.enable = true; ssd.enable = true; - tablet.enable = true; + #tablet.enable = true; + #fingerprint.enable = true; }; graphical = { audio.enable = true; code = { enable = true; - android.enable = true; + #android.enable = true; }; - emulators.enable = true; + #emulators.enable = true; gamemode.enable = true; gnome.enable = true; hyprland.enable = true; diff --git a/modules/hardware/default.nix b/modules/hardware/default.nix index 48e40f6..6b9d4db 100644 --- a/modules/hardware/default.nix +++ b/modules/hardware/default.nix @@ -9,5 +9,6 @@ ./wooting.nix ./tpm.nix ./tablet.nix + ./fingerprint.nix ]; } diff --git a/modules/hardware/fingerprint.nix b/modules/hardware/fingerprint.nix new file mode 100644 index 0000000..a25697f --- /dev/null +++ b/modules/hardware/fingerprint.nix @@ -0,0 +1,18 @@ +{ config, pkgs, lib, ... }: +let cfg = config.custom.hardware.fingerprint; +in { + options.custom.hardware.fingerprint = { + enable = lib.mkEnableOption "Enables fingerprint sensor support"; + }; + + config = lib.mkIf cfg.enable { + + services.fprintd = { + enable = true; + tod = { + enable = true; + driver = pkgs.libfprint-2-tod1-goodix; + }; + }; + }; +} diff --git a/systems/laptop/configuration.nix b/systems/laptop/configuration.nix index 1327411..3747485 100644 --- a/systems/laptop/configuration.nix +++ b/systems/laptop/configuration.nix @@ -59,11 +59,11 @@ services.xserver.libinput.enable = true; ### docker - virtualisation.docker.enable = true; + #virtualisation.docker.enable = true; - systemd.tmpfiles.rules = [ - "d /docker-data 0755 kopatz users" - ]; + #systemd.tmpfiles.rules = [ + # "d /docker-data 0755 kopatz users" + #]; security.pki.certificates = [ '' -----BEGIN CERTIFICATE----- diff --git a/systems/laptop/modules/battery.nix b/systems/laptop/modules/battery.nix index f5032c8..314358f 100644 --- a/systems/laptop/modules/battery.nix +++ b/systems/laptop/modules/battery.nix @@ -5,14 +5,28 @@ # Better scheduling for CPU cycles - thanks System76!!! services.system76-scheduler.settings.cfsProfiles.enable = true; + services.upower.enable = true; + environment.systemPackages = with pkgs; [ gnome.gnome-power-manager ]; + # Enable TLP (better than gnomes internal power manager) services.tlp = { enable = true; settings = { - CPU_BOOST_ON_AC = 1; - CPU_BOOST_ON_BAT = 0; CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + + CPU_MIN_PERF_ON_AC = 0; + CPU_MAX_PERF_ON_AC = 100; + CPU_MIN_PERF_ON_BAT = 0; + CPU_MAX_PERF_ON_BAT = 20; + + #Optional helps save long term battery health + #START_CHARGE_THRESH_BAT0 = 40; # 40 and bellow it starts to charge + #STOP_CHARGE_THRESH_BAT0 = 80; # 80 and above it stops charging + }; }; @@ -28,4 +42,3 @@ # toggle tlp off if this is on # services.auto-cpufreq.enable = true; } - diff --git a/users/kopatz/home.nix b/users/kopatz/home.nix index d24a63d..c289dc1 100644 --- a/users/kopatz/home.nix +++ b/users/kopatz/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, ...}: +{ osConfig, config, pkgs, inputs, lib, ...}: { home = { # This value determines the Home Manager release that your @@ -30,7 +30,7 @@ ../../home-manager/i3.nix inputs.nixvim.homeManagerModules.nixvim inputs.nix-colors.homeManagerModule - ]; + ] ++ lib.optional osConfig.custom.graphical.i3.enable ../../home-manager/i3.nix; # need this hack because i3 uses stylix, and it errors otherwise colorScheme = import ../../home-manager/themes/yorha/colors.nix; }