Compare commits

..

16 commits

14 changed files with 160 additions and 72 deletions

View file

@ -22,5 +22,5 @@ each host should have these files:
- divide steam and gamemode? - divide steam and gamemode?
- laptop specific configuration (power profiles daemon, battery, etc) - laptop specific configuration (power profiles daemon, battery, etc)
- sddm cursors no work :( - 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 - gnome keyring / gcr for saving passwords

View file

@ -1,53 +1,54 @@
# https://github.com/catppuccin/dunst/blob/main/src/mocha.conf # https://github.com/catppuccin/dunst/blob/main/src/mocha.conf
[global] [global]
frame_color = "#89B4FA" frame_color = "#89B4FA"
separator_color= frame separator_color= frame
follow = "mouse" follow = "mouse"
width = 300 width = 300
height = 145 height = 145
origin = top-right origin = top-right
alignment = "left" alignment = "left"
vertical_alignment = "center" vertical_alignment = "center"
ellipsize = "middle" ellipsize = "middle"
offset = "15x15" offset = "15x15"
padding = 15 padding = 15
horizontal_padding = 15 horizontal_padding = 15
text_icon_padding = 15 text_icon_padding = 15
icon_position = "left" icon_position = "left"
min_icon_size = 48 min_icon_size = 48
max_icon_size = 64 max_icon_size = 64
progress_bar = true progress_bar = true
progress_bar_height = 8 progress_bar_height = 8
progress_bar_frame_width = 1 progress_bar_frame_width = 1
progress_bar_min_width = 150 progress_bar_min_width = 150
progress_bar_max_width = 300 progress_bar_max_width = 300
separator_height = 2 separator_height = 2
frame_width = 2 frame_width = 2
corner_radius = 8 corner_radius = 8
transparency = 0 transparency = 0
gap_size = 8 gap_size = 8
line_height = 0 line_height = 0
notification_limit = 0 notification_limit = 0
idle_threshold = 120 idle_threshold = 120
history_length = 20 history_length = 20
show_age_threshold = 60 show_age_threshold = 60
markup = "full" markup = "full"
font = "Atkinson Hyperlegible Pro 10" format = "<b>%a</b>\n<b>%s</b>\n%b"
word_wrap = "yes" font = "Atkinson Hyperlegible Pro 11"
sort = "yes" word_wrap = "yes"
shrink = "no" sort = "yes"
indicate_hidden = "yes" shrink = "no"
sticky_history = "yes" indicate_hidden = "yes"
ignore_newline = "no" sticky_history = "yes"
show_indicators = "no" ignore_newline = "no"
stack_duplicates = true show_indicators = "no"
always_run_script = true stack_duplicates = true
hide_duplicate_count = false always_run_script = true
ignore_dbusclose = false hide_duplicate_count = false
mouse_left_click = "do_action" ignore_dbusclose = false
mouse_middle_click = "close_all" mouse_left_click = "do_action"
mouse_right_click = "close_current" mouse_middle_click = "close_all"
mouse_right_click = "close_current"
[urgency_low] [urgency_low]
background = "#1E1E2E" background = "#1E1E2E"

View file

@ -79,6 +79,30 @@ window#waybar.floating #window {
color: @lavender; 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 { #pulseaudio {
color: @pink; color: @pink;
} }

View file

@ -85,5 +85,4 @@ in {
xdg-utils xdg-utils
git git
]; ];
} }

6
flake.lock generated
View file

@ -487,11 +487,11 @@
}, },
"nixpkgs_7": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1711523803, "lastModified": 1715266358,
"narHash": "sha256-UKcYiHWHQynzj6CN/vTcix4yd1eCu1uFdsuarupdCQQ=", "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2726f127c15a4cc9810843b96cad73c7eb39e443", "rev": "f1010e0469db743d14519a1efd37e23f8513d714",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -40,6 +40,7 @@
enable = true; enable = true;
}; };
desktop = { desktop = {
# sets magical variables; use `x11` or `wayland`
envProto = "wayland"; envProto = "wayland";
hyprland.enable = true; hyprland.enable = true;
@ -48,13 +49,16 @@
hyprpaper.enable = true; hyprpaper.enable = true;
polkit-gnome.enable = true; polkit-gnome.enable = true;
gnome-keyring.enable = true;
dunst.enable = true; dunst.enable = true;
rofi.enable = true; rofi.enable = true;
nwg-drawer.enable = true; nwg-drawer.enable = true;
waybar.enable = true; waybar.enable = true;
# login manager
sddm.enable = true; sddm.enable = true;
# set active theme, see `modules/desktop/themes`
themes.active = "catppuccin"; themes.active = "catppuccin";
}; };
software = { software = {

View file

@ -21,8 +21,15 @@
efi.canTouchEfiVariables = true; 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 # thermald proactively prevents overheating on intel CPUs and works well with other tools
services.thermald.enable = true; services.thermald.enable = true;
# power-profile-daemon for power management
services.power-profiles-daemon.enable = true;
# nvidia driver # nvidia driver
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = [ "nvidia" ];

View file

@ -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;
};
}

View file

@ -20,7 +20,7 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
services.xserver.displayManager.sessionPackages = [ cfg.package ]; services.displayManager.sessionPackages = [ cfg.package ];
xdg.portal = { xdg.portal = {
enable = true; enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk cfg.portalPackage ]; extraPortals = [ pkgs.xdg-desktop-portal-gtk cfg.portalPackage ];
@ -53,6 +53,11 @@ in {
bindl = [ # "bind locked" bindl = [ # "bind locked"
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ 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" bindr = [ # "bind released"
"SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}" "SUPER, Super_L, exec, ${lib.getExe pkgs.nwg-drawer}"
@ -126,17 +131,23 @@ in {
windowrulev2 = [ windowrulev2 = [
# common popups # common popups
"float, class:file-roller" "float, class:org.gnome.FileRoller"
"size 1100 730, class:file-roller" "center, class:org.gnome.FileRoller"
"size 1100 730, class:org.gnome.FileRoller"
"float, class:org.gnome.Loupe" "float, class:org.gnome.Loupe"
"center, class:org.gnome.Loupe"
"size 1100 730, class:org.gnome.Loupe" "size 1100 730, class:org.gnome.Loupe"
"float, initialTitle:^Open Folder$" "float, initialTitle:^Open Folder$"
"center, initialTitle:^Open Folder$"
"size 1100 730, initialTitle:^Open Folder$" "size 1100 730, initialTitle:^Open Folder$"
"float, initialTitle:^Open File$" "float, initialTitle:^Open File$"
"center, initialTitle:^Open File$"
"size 1100 730, initialTitle:^Open File$" "size 1100 730, initialTitle:^Open File$"
"float, initialTitle:^Open Files$" "float, initialTitle:^Open Files$"
"center, initialTitle:^Open Files$"
"size 1100 730, initialTitle:^Open Files$" "size 1100 730, initialTitle:^Open Files$"
"float, initialTitle:^Save As$" "float, initialTitle:^Save As$"
"center, initialTitle:^Save As%"
"size 1100 730, initialTitle:^Save As$" "size 1100 730, initialTitle:^Save As$"
"float, class:\.exe$" "float, class:\.exe$"
@ -173,7 +184,7 @@ in {
}; };
drop_shadow = false; drop_shadow = false;
#shadow_range = 30; #shadow_range = 4;
#shadow_render_power = 3; #shadow_render_power = 3;
}; };

View file

@ -9,15 +9,13 @@ in {
}; };
config = mkIf cfg.enable { 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; [ environment.systemPackages = with pkgs; [
config.modules.desktop.themes.sddmTheme.package config.modules.desktop.themes.sddmTheme.package
libsForQt5.qt5.qtsvg libsForQt5.qt5.qtsvg
libsForQt5.qt5.qtgraphicaleffects libsForQt5.qt5.qtgraphicaleffects
libsForQt5.qt5.qtquickcontrols2 libsForQt5.qt5.qtquickcontrols2
]; ];
services.xserver.displayManager.sddm = { services.displayManager.sddm = {
enable = true; enable = true;
wayland.enable = true; wayland.enable = true;
theme = config.modules.desktop.themes.sddmTheme.name; theme = config.modules.desktop.themes.sddmTheme.name;

View file

@ -49,9 +49,11 @@ in {
orientation = "inherit"; orientation = "inherit";
modules = [ modules = [
"pulseaudio" "pulseaudio"
#"network"
"cpu" "cpu"
"memory" "memory"
#"network" "power-profiles-daemon"
"battery"
]; ];
}; };
"group/power" = { "group/power" = {
@ -139,6 +141,17 @@ in {
}; };
separate-outputs = true; 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 = { pulseaudio = {
format = "{icon} {volume}%"; format = "{icon} {volume}%";
format-bluetooth = "{icon} {volume}%"; format-bluetooth = "{icon} {volume}%";
@ -165,17 +178,31 @@ in {
format = " {percentage}%"; format = " {percentage}%";
tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap"; tooltip-format = "{used:0.1f}GiB/{avail:0.1f}GiB used\n{swapUsed:0.1f}GiB/{swapAvail:0.1f}GiB swap";
}; };
"network" = { power-profiles-daemon = {
format = ""; format = "{icon}";
format-ethernet = ""; tooltip-format = "Power profile: {profile}\nDriver: {driver}";
format-wifi = " {signalStrength}%"; tooltip = true;
format-disconnected = ""; format-icons = {
tooltip-format = "{ifname} via {gwaddr}"; default = "";
tooltip-format-wifi = "connected to {essid}"; performance = " perf";
tooltip-format-ethernet = "{ifname}"; balanced = " balance";
tooltip-format-disconnected = "Disconnected"; 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 = "{:%H:%M}";
format-alt = "{:%a %b %d %R}"; format-alt = "{:%a %b %d %R}";
tooltip-format = "<tt><small>{calendar}</small></tt>"; tooltip-format = "<tt><small>{calendar}</small></tt>";

View file

@ -14,6 +14,5 @@ in {
# frontend # frontend
services.blueman.enable = true; services.blueman.enable = true;
hm.services.blueman-applet.enable = true;
}; };
} }

View file

@ -34,6 +34,7 @@ in {
"terminal.integrated.fontFamily" = "\"${monospace.family}\""; "terminal.integrated.fontFamily" = "\"${monospace.family}\"";
"terminal.integrated.fontSize" = monospace.size; "terminal.integrated.fontSize" = monospace.size;
"terminal.integrated.smoothScrolling" = true;
"telemetry.telemetryLevel" = "off"; "telemetry.telemetryLevel" = "off";
@ -44,6 +45,7 @@ in {
"window.titleBarStyle" = "custom"; "window.titleBarStyle" = "custom";
"workbench.tips.enabled" = false; "workbench.tips.enabled" = false;
"workbench.list.smoothScrolling" = true;
"nix.enableLanguageServer" = true; "nix.enableLanguageServer" = true;
"nix.serverPath" = "${lib.getExe pkgs.nil}"; "nix.serverPath" = "${lib.getExe pkgs.nil}";

View file

@ -24,7 +24,9 @@ in {
interactiveShellInit = '' interactiveShellInit = ''
sh ${colorScript} sh ${colorScript}
''; '';
# TODO: add fish greeting? functions.fish_greeting = ''
${lib.getExe pkgs.pfetch}
'';
}; };
}; };
} }