diff --git a/README.md b/README.md index c6fb8d5..e51ac9a 100755 --- a/README.md +++ b/README.md @@ -22,5 +22,5 @@ each host should have these files: - divide steam and gamemode? - laptop specific configuration (power profiles daemon, battery, etc) - sddm cursors no work :( - - try out the [new sddm options](https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=sddm) + - sddm x11 support, too. or maybe just remove x11 - gnome keyring / gcr for saving passwords \ No newline at end of file diff --git a/config/dunst.conf b/config/dunst.conf index 12d9efc..da4bc4e 100644 --- a/config/dunst.conf +++ b/config/dunst.conf @@ -1,53 +1,54 @@ # https://github.com/catppuccin/dunst/blob/main/src/mocha.conf [global] - frame_color = "#89B4FA" - separator_color= frame +frame_color = "#89B4FA" +separator_color= frame - follow = "mouse" - width = 300 - height = 145 - origin = top-right - alignment = "left" - vertical_alignment = "center" - ellipsize = "middle" - offset = "15x15" - padding = 15 - horizontal_padding = 15 - text_icon_padding = 15 - icon_position = "left" - min_icon_size = 48 - max_icon_size = 64 - progress_bar = true - progress_bar_height = 8 - progress_bar_frame_width = 1 - progress_bar_min_width = 150 - progress_bar_max_width = 300 - separator_height = 2 - frame_width = 2 - corner_radius = 8 - transparency = 0 - gap_size = 8 - line_height = 0 - notification_limit = 0 - idle_threshold = 120 - history_length = 20 - show_age_threshold = 60 - markup = "full" - font = "Atkinson Hyperlegible Pro 10" - word_wrap = "yes" - sort = "yes" - shrink = "no" - indicate_hidden = "yes" - sticky_history = "yes" - ignore_newline = "no" - show_indicators = "no" - stack_duplicates = true - always_run_script = true - hide_duplicate_count = false - ignore_dbusclose = false - mouse_left_click = "do_action" - mouse_middle_click = "close_all" - mouse_right_click = "close_current" +follow = "mouse" +width = 300 +height = 145 +origin = top-right +alignment = "left" +vertical_alignment = "center" +ellipsize = "middle" +offset = "15x15" +padding = 15 +horizontal_padding = 15 +text_icon_padding = 15 +icon_position = "left" +min_icon_size = 48 +max_icon_size = 64 +progress_bar = true +progress_bar_height = 8 +progress_bar_frame_width = 1 +progress_bar_min_width = 150 +progress_bar_max_width = 300 +separator_height = 2 +frame_width = 2 +corner_radius = 8 +transparency = 0 +gap_size = 8 +line_height = 0 +notification_limit = 0 +idle_threshold = 120 +history_length = 20 +show_age_threshold = 60 +markup = "full" +format = "%a\n%s\n%b" +font = "Atkinson Hyperlegible Pro 11" +word_wrap = "yes" +sort = "yes" +shrink = "no" +indicate_hidden = "yes" +sticky_history = "yes" +ignore_newline = "no" +show_indicators = "no" +stack_duplicates = true +always_run_script = true +hide_duplicate_count = false +ignore_dbusclose = false +mouse_left_click = "do_action" +mouse_middle_click = "close_all" +mouse_right_click = "close_current" [urgency_low] background = "#1E1E2E" diff --git a/config/waybar.css b/config/waybar.css index 305d5a1..0dd5959 100644 --- a/config/waybar.css +++ b/config/waybar.css @@ -79,6 +79,30 @@ window#waybar.floating #window { color: @lavender; } +#power-profiles-daemon { + color: @teal; +} + +#battery { + color: @green; +} + +#battery.charging { + color: @green; +} + +#battery.warning:not(.charging) { + color: @peach; +} + +#battery.critical:not(.charging) { + color: @maroon; +} + +#network { + color: @sapphire; +} + #pulseaudio { color: @pink; } diff --git a/default.nix b/default.nix index b8e7203..d00411f 100755 --- a/default.nix +++ b/default.nix @@ -85,5 +85,4 @@ in { xdg-utils git ]; - } diff --git a/flake.lock b/flake.lock index d538ec3..8adaae6 100644 --- a/flake.lock +++ b/flake.lock @@ -487,11 +487,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1711523803, - "narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", + "lastModified": 1715266358, + "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2726f127c15a4cc9810843b96cad73c7eb39e443", + "rev": "f1010e0469db743d14519a1efd37e23f8513d714", "type": "github" }, "original": { diff --git a/hosts/goopnet-interface/default.nix b/hosts/goopnet-interface/default.nix index 52ed123..381c89b 100755 --- a/hosts/goopnet-interface/default.nix +++ b/hosts/goopnet-interface/default.nix @@ -40,6 +40,7 @@ enable = true; }; desktop = { + # sets magical variables; use `x11` or `wayland` envProto = "wayland"; hyprland.enable = true; @@ -48,13 +49,16 @@ hyprpaper.enable = true; polkit-gnome.enable = true; + gnome-keyring.enable = true; dunst.enable = true; rofi.enable = true; nwg-drawer.enable = true; waybar.enable = true; + # login manager sddm.enable = true; + # set active theme, see `modules/desktop/themes` themes.active = "catppuccin"; }; software = { diff --git a/hosts/goopnet-interface/hardware.nix b/hosts/goopnet-interface/hardware.nix index ecca96a..7e06b8d 100755 --- a/hosts/goopnet-interface/hardware.nix +++ b/hosts/goopnet-interface/hardware.nix @@ -21,8 +21,15 @@ efi.canTouchEfiVariables = true; }; + # support power features such as suspend to ram + powerManagement.enable = true; + # tune power saving options on boot + # todo: fix usb mice and keyboards from suspending + #powerManagement.powertop.enable = true; # thermald proactively prevents overheating on intel CPUs and works well with other tools services.thermald.enable = true; + # power-profile-daemon for power management + services.power-profiles-daemon.enable = true; # nvidia driver services.xserver.videoDrivers = [ "nvidia" ]; diff --git a/modules/desktop/gnome-keyring.nix b/modules/desktop/gnome-keyring.nix new file mode 100644 index 0000000..14b3ebc --- /dev/null +++ b/modules/desktop/gnome-keyring.nix @@ -0,0 +1,14 @@ +{ lib, config, pkgs, ... }: + +with lib; +let + cfg = config.modules.desktop.gnome-keyring; +in { + options.modules.desktop.gnome-keyring = { + enable = mkEnableOption "Enable gnome-keyring, a lightweight keyring with git, gpg, and ssh integration"; + }; + + config = mkIf cfg.enable { + services.gnome.gnome-keyring.enable = true; + }; +} diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index b0ceb0a..948d6ab 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -20,7 +20,7 @@ in { }; config = mkIf cfg.enable { - services.xserver.displayManager.sessionPackages = [ cfg.package ]; + services.displayManager.sessionPackages = [ cfg.package ]; xdg.portal = { enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk cfg.portalPackage ]; @@ -53,6 +53,11 @@ in { bindl = [ # "bind locked" ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + + ", XF86AudioPlay, exec, ${lib.getExe pkgs.playerctl} play-pause" + ", XF86AudioStop, exec, ${lib.getExe pkgs.playerctl} stop" + ", XF86AudioPrev, exec, ${lib.getExe pkgs.playerctl} previous" + ", XF86AudioNext, exec, ${lib.getExe pkgs.playerctl} next" ]; bindr = [ # "bind released" "SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}" @@ -126,17 +131,23 @@ in { windowrulev2 = [ # common popups - "float, class:file-roller" - "size 1100 730, class:file-roller" + "float, class:org.gnome.FileRoller" + "center, class:org.gnome.FileRoller" + "size 1100 730, class:org.gnome.FileRoller" "float, class:org.gnome.Loupe" + "center, class:org.gnome.Loupe" "size 1100 730, class:org.gnome.Loupe" "float, initialTitle:^Open Folder$" + "center, initialTitle:^Open Folder$" "size 1100 730, initialTitle:^Open Folder$" "float, initialTitle:^Open File$" + "center, initialTitle:^Open File$" "size 1100 730, initialTitle:^Open File$" "float, initialTitle:^Open Files$" + "center, initialTitle:^Open Files$" "size 1100 730, initialTitle:^Open Files$" "float, initialTitle:^Save As$" + "center, initialTitle:^Save As%" "size 1100 730, initialTitle:^Save As$" "float, class:\.exe$" @@ -173,7 +184,7 @@ in { }; drop_shadow = false; - #shadow_range = 30; + #shadow_range = 4; #shadow_render_power = 3; }; diff --git a/modules/desktop/sddm.nix b/modules/desktop/sddm.nix index 1ab2038..69efeea 100644 --- a/modules/desktop/sddm.nix +++ b/modules/desktop/sddm.nix @@ -9,15 +9,13 @@ in { }; config = mkIf cfg.enable { - services.xserver.enable = true; # this is needed, unfortunately! - services.xserver.excludePackages = [ pkgs.xterm ]; # prevents xterm on wayland and x environment.systemPackages = with pkgs; [ config.modules.desktop.themes.sddmTheme.package libsForQt5.qt5.qtsvg libsForQt5.qt5.qtgraphicaleffects libsForQt5.qt5.qtquickcontrols2 ]; - services.xserver.displayManager.sddm = { + services.displayManager.sddm = { enable = true; wayland.enable = true; theme = config.modules.desktop.themes.sddmTheme.name; diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index 0e4df6d..9c4e939 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -49,9 +49,11 @@ in { orientation = "inherit"; modules = [ "pulseaudio" + #"network" "cpu" "memory" - #"network" + "power-profiles-daemon" + "battery" ]; }; "group/power" = { @@ -139,6 +141,17 @@ in { }; separate-outputs = true; }; + #network = { + # format = ""; + # format-ethernet = ""; + # format-wifi = " {signalStrength}%"; + # format-disconnected = ""; + # tooltip-format = "{ifname} via {gwaddr}"; + # tooltip-format-wifi = "connected to {essid}"; + # tooltip-format-ethernet = "{ifname}"; + # tooltip-format-disconnected = "Disconnected"; + # on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor"; + #}; pulseaudio = { format = "{icon} {volume}%"; format-bluetooth = "{icon} {volume}%"; @@ -165,17 +178,31 @@ in { format = " {percentage}%"; tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap"; }; - "network" = { - format = ""; - format-ethernet = ""; - format-wifi = " {signalStrength}%"; - format-disconnected = ""; - tooltip-format = "{ifname} via {gwaddr}"; - tooltip-format-wifi = "connected to {essid}"; - tooltip-format-ethernet = "{ifname}"; - tooltip-format-disconnected = "Disconnected"; + power-profiles-daemon = { + format = "{icon}"; + tooltip-format = "Power profile: {profile}\nDriver: {driver}"; + tooltip = true; + format-icons = { + default = ""; + performance = " perf"; + balanced = " balance"; + power-saver = " save"; + }; }; - "clock" = { + battery = { + interval = 30; + states = { + warning = 20; + critical = 10; + }; + full-at = 98; + format = "{icon} {capacity}%"; + format-icons = ["" "" "" "" ""]; + format-critical = " {capacity}%"; + tooltip-format = "{timeTo} ({power}W)"; + format-charging = " {capacity}%"; + }; + clock = { format = "{:%H:%M}"; format-alt = "{:%a %b %d %R}"; tooltip-format = "{calendar}"; diff --git a/modules/hardware/bluetooth.nix b/modules/hardware/bluetooth.nix index e121d64..b306481 100644 --- a/modules/hardware/bluetooth.nix +++ b/modules/hardware/bluetooth.nix @@ -14,6 +14,5 @@ in { # frontend services.blueman.enable = true; - hm.services.blueman-applet.enable = true; }; } diff --git a/modules/software/editors/vscode.nix b/modules/software/editors/vscode.nix index f2ade51..60e0785 100644 --- a/modules/software/editors/vscode.nix +++ b/modules/software/editors/vscode.nix @@ -34,6 +34,7 @@ in { "terminal.integrated.fontFamily" = "\"${monospace.family}\""; "terminal.integrated.fontSize" = monospace.size; + "terminal.integrated.smoothScrolling" = true; "telemetry.telemetryLevel" = "off"; @@ -44,6 +45,7 @@ in { "window.titleBarStyle" = "custom"; "workbench.tips.enabled" = false; + "workbench.list.smoothScrolling" = true; "nix.enableLanguageServer" = true; "nix.serverPath" = "${lib.getExe pkgs.nil}"; diff --git a/modules/software/system/fish.nix b/modules/software/system/fish.nix index 6f816de..d514dcf 100644 --- a/modules/software/system/fish.nix +++ b/modules/software/system/fish.nix @@ -24,7 +24,9 @@ in { interactiveShellInit = '' sh ${colorScript} ''; - # TODO: add fish greeting? + functions.fish_greeting = '' + ${lib.getExe pkgs.pfetch} + ''; }; }; }