sarien as well

This commit is contained in:
unexplrd
2025-02-14 23:09:26 +02:00
parent 920b4de9da
commit a41d92e793
5 changed files with 911 additions and 20 deletions

View File

@ -12,7 +12,7 @@
];
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/isotope.yaml";
base16Scheme = "${pkgs.base16-schemes}/share/themes/helios.yaml";
polarity = "dark";
cursor = {
package = pkgs.google-cursor;

View File

@ -47,6 +47,7 @@
dust # du in rust
fend # calc in rust
tree # tree util
rbw # bitwarden cli in rust
zip # zip util
vial # qmk keyboard configuring app
unzip # unzip util

View File

@ -7,22 +7,23 @@
inputs.stylix.nixosModules.stylix
];
environment.systemPackages = with pkgs; [
#papirus-icon-theme
nerd-fonts.iosevka
];
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/ayu-light.yaml";
polarity = "light";
base16Scheme = "${pkgs.base16-schemes}/share/themes/helios.yaml";
polarity = "dark";
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
package = pkgs.google-cursor;
name = "GoogleDot-Blue";
size = 24;
};
image = ../../wallpapers/wallhaven-9djzww.jpg;
image = ../../wallpapers/wallhaven-zylmoo.jpg;
opacity.terminal = 0.9;
fonts = {
sizes = {
applications = 14;
applications = 13;
desktop = 14;
popups = 13;
terminal = 15;
@ -39,6 +40,7 @@
package = pkgs.nerd-fonts.iosevka;
name = "Iosevka Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";

View File

@ -26,18 +26,18 @@
};
home.packages = with pkgs; [
flatpak
waycheck
vial
git
ripgrep
trashy
fd
dust
procs
tree
zip
unzip
virt-manager
alejandra # nix formatter
flatpak # flatpak cli
trashy # trash cli
procs # ps in rust
dust # du in rust
fend # calc in rust
tree # tree util
rbw # bitwarden cli in rust
zip # zip util
vial # qmk keyboard configuring app
unzip # unzip util
waycheck # check wayland protocols
virt-manager # libvirt gui
];
}

View File

@ -0,0 +1,888 @@
{
config,
pkgs,
# pkgs-51b85c,
lib,
...
}: {
# imports = [./walker.nix];
stylix.targets.sway.enable = true;
wayland.windowManager.sway = {
enable = true;
systemd.enable = true;
# xwayland.enable = false;
wrapperFeatures.gtk = true;
config = let
modifier = "Mod4";
terminal = "ghostty";
launcher = "walker";
clipboard = "copyq toggle";
left = "n";
down = "e";
up = "i";
right = "o";
in {
bars = [
{
command = "${lib.getExe pkgs.waybar}";
}
];
modifier = "${modifier}";
terminal = "${terminal}";
menu = "${launcher}";
left = "${left}";
down = "${down}";
up = "${up}";
right = "${right}";
workspaceLayout = "tabbed";
input = {
"*" = {
xkb_layout = "us,ua";
repeat_delay = "200";
repeat_rate = "50";
accel_profile = "flat";
};
"type:touchpad" = {
tap = "enabled";
scroll_method = "two_finger";
};
};
output = {
"Samsung Electric Company S24R65x H4TMA03291" = {
mode = "1920x1080@74.973Hz";
pos = "0 0";
adaptive_sync = "on";
allow_tearing = "yes";
max_render_time = "off";
};
"AOC 27V2G5 0x0000026C" = {
pos = "1920 0";
};
};
keybindings = lib.mkForce {
"${modifier}+Ctrl+q" = "kill";
"${modifier}+Ctrl+Escape" = "exit";
"${modifier}+Ctrl+r" = "reload";
"${modifier}+Ctrl+${left}" = "move left";
"${modifier}+Ctrl+${down}" = "move down";
"${modifier}+Ctrl+${up}" = "move up";
"${modifier}+Ctrl+${right}" = "move right";
"${modifier}+Ctrl+left" = "move left";
"${modifier}+Ctrl+down" = "move down";
"${modifier}+Ctrl+up" = "move up";
"${modifier}+Ctrl+right" = "move right";
"${modifier}+Ctrl+1" = "move window workspace 1";
"${modifier}+Ctrl+2" = "move window workspace 2";
"${modifier}+Ctrl+3" = "move window workspace 3";
"${modifier}+Ctrl+4" = "move window workspace 4";
"${modifier}+Ctrl+5" = "move window workspace 5";
"${modifier}+Ctrl+6" = "move window workspace 6";
"${modifier}+Ctrl+7" = "move window workspace 7";
"${modifier}+Ctrl+8" = "move window workspace 8";
"${modifier}+Ctrl+9" = "move window workspace 9";
"${modifier}+Ctrl+0" = "move window workspace 10";
"${modifier}+Ctrl+l" = "move window workspace prev";
"${modifier}+Ctrl+y" = "move window workspace next";
"${modifier}+Shift+${left}" = "focus output left";
"${modifier}+Shift+${down}" = "focus output down";
"${modifier}+Shift+${up}" = "focus output up";
"${modifier}+Shift+${right}" = "focus output right";
"${modifier}+Shift+left" = "focus output left";
"${modifier}+Shift+down" = "focus output down";
"${modifier}+Shift+up" = "focus output up";
"${modifier}+Shift+right" = "focus output right";
"${modifier}+Return" = "exec ${terminal}";
"${modifier}+Shift+v" = "exec ${clipboard}";
"${modifier}+Space" = "exec ${launcher}";
"${modifier}+c" = "splith";
"${modifier}+d" = "splitv";
"${modifier}+s" = "layout toggle split";
"${modifier}+t" = "layout tabbed";
"${modifier}+h" = "focus mode_toggle";
"${modifier}+f" = "floating toggle";
"${modifier}+m" = "fullscreen toggle";
"${modifier}+g" = "sticky toggle";
"${modifier}+b" = "bar mode toggle";
"--locked ${modifier}+Escape" = "exec swaymsg input \"*\" xkb_switch_layout next";
"Print" = ''exec ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp -o -r -c '#ff0000ff')" -t ppm - | ${pkgs.satty}/bin/satty --filename - --fullscreen --output-filename ~/pics/screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png'';
"${modifier}+1" = "workspace 1";
"${modifier}+2" = "workspace 2";
"${modifier}+3" = "workspace 3";
"${modifier}+4" = "workspace 4";
"${modifier}+5" = "workspace 5";
"${modifier}+6" = "workspace 6";
"${modifier}+7" = "workspace 7";
"${modifier}+8" = "workspace 8";
"${modifier}+9" = "workspace 9";
"${modifier}+0" = "workspace 10";
"${modifier}+l" = "workspace prev";
"${modifier}+y" = "workspace next";
"${modifier}+${left}" = "focus left";
"${modifier}+${down}" = "focus down";
"${modifier}+${up}" = "focus up";
"${modifier}+${right}" = "focus right";
"${modifier}+left" = "focus left";
"${modifier}+down" = "focus down";
"${modifier}+up" = "focus up";
"${modifier}+right" = "focus right";
};
window = {
border = 1;
# hideEdgeBorders = "smart";
};
gaps = {
# top = 6;
# bottom = 6;
# left = 6;
# right = 6;
outer = 6;
inner = 3;
};
floating.criteria = [
{
app_id = "com.github.hluk.copyq";
}
{
app_id = "com.saivert.pwvucontrol";
}
];
};
};
programs.swaylock.enable = true;
services.swayidle = {
enable = true;
systemdTarget = "sway-session.target";
timeouts = [
{
timeout = 300;
command = "${pkgs.swaylock}/bin/swaylock -fF";
}
{
timeout = 301;
command = "${pkgs.sway}/bin/swaymsg \"output * dpms off\"";
resumeCommand = "${pkgs.sway}/bin/swaymsg \"output * dpms on\"";
}
];
events = [
{
event = "lock";
command = "${pkgs.swaylock}/bin/swaylock -fF &&";
}
{
event = "unlock";
command = "${pkgs.procps}/bin/pkill -SIGUSR1 swaylock";
}
{
event = "lock";
command = "${pkgs.swaylock}/bin/swaylock -fF & ${pkgs.playerctl}/bin/playerctl pause";
}
];
};
services.playerctld.enable = true;
services.gnome-keyring = {
enable = true;
components = ["secrets" "ssh"];
};
services.ssh-agent.enable = true;
programs.keychain = {
enable = true;
keys = ["id_ed25519"];
enableNushellIntegration = true;
extraFlags = [
"--quiet"
"--noask"
];
};
services = {
network-manager-applet.enable = true;
blueman-applet.enable = true;
copyq.enable = true;
};
qt = {
enable = true;
platformTheme.name = "gtk3";
#style.name = "gtk2";
};
stylix.targets.waybar.enable = false;
programs.waybar = {
enable = true;
#package = pkgs.waybar-0.11.0";
# systemd = {
# enable = true;
# target = "graphical-session.target";
# };
settings = {
bar-0 = {
ipc = true;
id = "bar-0";
layer = "top";
position = "bottom";
height = 32;
spacing = 6;
# margin-top = 8;
margin-left = 8;
margin-right = 8;
margin-bottom = 8;
reload_style_on_change = true;
modules-left = [
#"custom/notification"
"group/sway"
"wlr/taskbar"
];
modules-center = ["clock"];
modules-right = [
"privacy"
"tray"
"wireplumber"
# "group/laptop"
"idle_inhibitor"
];
"sway/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "I";
"2" = "II";
"3" = "III";
"4" = "IV";
"5" = "V";
"6" = "VI";
"7" = "VII";
"8" = "IIX";
"9" = "IX";
"10" = "X";
#focused = "󰗝";
#active = "󰻃";
#default = "󰄰";
};
};
"sway/language" = {
format = "{flag}";
tooltip-format = "{long}";
on-click = "swaymsg input type:keyboard xkb_switch_layout next";
};
"group/sway" = {
orientation = "inherit";
modules = [
"sway/language"
"sway/workspaces"
];
};
"group/laptop" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
children-class = "laptop";
transition-left-to-right = false;
};
modules = [
"battery"
"power-profiles-daemon"
"custom/separator"
"custom/kbd-backlight"
"custom/separator"
"custom/backlight"
"custom/separator"
];
};
"idle_inhibitor" = {
format = "{icon}";
format-icons = {
activated = "󰈈";
deactivated = "󰈉";
};
};
"tray" = {
icon-size = 24;
spacing = 3;
};
"clock" = {
interval = 1;
format = "{:%H:%M:%S}";
tooltip-format = "{:%d.%m.%Y}";
};
# "custom/backlight" = {
# format = "{}% {icon}";
# interval = 1;
# format-icons = ["󰃠"];
# };
# "custom/kbd-backlight" = {
# exec = "brightnessctl s 5%+";
# interval = 1;
# format = "{}% {icon}";
# format-icons = ["󰌌"];
# on-scroll-up = "~/.local/bin/keyboard-brightness.nu increase";
# on-scroll-down = "~/.local/bin/keyboard-brightness.nu decrease";
# };
# battery = {
# states = {
# good = 95;
# warning = 30;
# critical = 15;
# };
# format = "{capacity}% {icon}";
# format-full = "{capacity}% 󱟢";
# format-charging = "{capacity}% 󰂄";
# format-plugged = "{capacity}% 󰚥";
# format-alt = "{icon} {time}";
# format-icons = ["󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
# };
"upower" = {
icon-size = 16;
format = "{percentage}";
hide-if-empty = true;
tooltip = true;
tooltip-spacing = 20;
};
# "power-profiles-daemon" = {
# format = "{icon}";
# tooltip-format = "Power profile: {profile}\nDriver: {driver}";
# tooltip = true;
# format-icons = {
# default = "󱡮";
# performance = "󱡮";
# balanced = "";
# power-saver = "";
# };
# };
"wireplumber" = {
scroll-step = 3;
format = "{volume}% {icon}";
format-muted = "󰖁";
format-icons = ["󰕿" "󰖀" "󰕾"];
on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol";
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
};
"custom/notification" = {
tooltip = false;
format = "{icon}";
format-icons = {
notification = "";
none = "";
dnd-notification = "";
dnd-none = "";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "swaync-client -t -sw";
on-click-right = "swaync-client -d -sw";
escape = true;
};
"privacy" = {
# icon-spacing = 4;
icon-size = 16;
transition-duration = 250;
screenshare = {
type = "screenshare";
tooltip = true;
tooltip-icon-size = 24;
};
audio-in = {
type = "audio-in";
tooltip = true;
tooltip-icon-size = 24;
};
};
"wlr/taskbar" = {
format = "{icon}";
icon-size = 24;
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
tooltip-format = "{title}";
on-click = "activate";
};
};
};
style = ''
@define-color base00 #${config.lib.stylix.colors.base00};
@define-color base01 #${config.lib.stylix.colors.base01};
@define-color base02 #${config.lib.stylix.colors.base02};
@define-color base03 #${config.lib.stylix.colors.base03};
@define-color base04 #${config.lib.stylix.colors.base04};
@define-color base05 #${config.lib.stylix.colors.base05};
@define-color base06 #${config.lib.stylix.colors.base06};
@define-color base07 #${config.lib.stylix.colors.base07};
@define-color base08 #${config.lib.stylix.colors.base08};
@define-color base09 #${config.lib.stylix.colors.base09};
@define-color base0A #${config.lib.stylix.colors.base0A};
@define-color base0B #${config.lib.stylix.colors.base0B};
@define-color base0C #${config.lib.stylix.colors.base0C};
@define-color base0D #${config.lib.stylix.colors.base0D};
@define-color base0E #${config.lib.stylix.colors.base0E};
@define-color base0F #${config.lib.stylix.colors.base0F};
* {
font-family: ${config.stylix.fonts.sansSerif.name}, FontAwesome;
font-weight: 500;
font-size: 100%;
/* margin: 0px 2px 2px 2px; */
}
window#waybar {
background-color: @base00;
border: 1px solid @base0D;
/* border-top: 3px solid @overlay0; */
color: @base05;
/* padding: 0px 2px 0px 0px; */
transition-property: background-color;
transition-duration: 0.5s;
}
.modules-left,
.modules-center,
.modules-right {
padding: 1px;
margin-left: 4px;
margin-right: 4px;
}
tooltip {
background: @base01;
border: 1px solid @base0E;
}
tooltip label {
color: @base05;
}
button {
box-shadow: inset 0 -3px transparent;
border-radius: 12px;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
box-shadow: inset 0 -3px transparent;
}
#mode {
background-color: rgba(0, 0, 0, 0.2);
box-shadow: inset 0 -3px @base05;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#custom-backlight,
#custom-kbd-backlight,
#workspaces,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#laptop,
#tray,
#mode,
#privacy
#privacy-item,
#idle_inhibitor,
#backlight-slider,
#custom-notification,
#scratchpad,
#power-profiles-daemon,
#taskbar,
#language,
#upower,
#mpris,
#mpd {
padding: 0 0.5em;
color: @base05;
background-color: @base00;
}
/* #upower,
#battery,
#backlight,
#custom-kbd-backlight,
#backlight-slider,
#cpu,
#memory,
#disk,
#network,
#wireplumber,
#power-profiles-daemon {
padding-right: 0.5em;
} */
#taskbar button,
#workspaces button {
padding: 0 0.2em;
}
#workspaces button.focused,
#workspaces button.active {
color: @base0D;
}
#taskbar button:hover {
box-shadow: transparent;
}
#taskbar.empty,
window#empty {
background-color: transparent;
}
#battery.critical:not(.charging) {
background-color: @base09;
color: @base00;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
}
#power-profiles-daemon.performance {
background-color: @base00;
color: @base0D;
}
#power-profiles-daemon.balanced {
background-color: @base00;
color: @base0B;
}
#power-profiles-daemon.power-saver {
background-color: @base00;
color: @base0A;
}
label:focus {
background-color: #000000;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: @base08;
}
#idle_inhibitor:hover {
box-shadow: inset 0 -3px @base05;
}
#idle_inhibitor.activated {
background-color: @base05;
color: @base00;
}
#idle_inhibitor.activated:hover {
box-shadow: inset 0 -3px @base00;
}
#laptop,
#privacy {
padding: 0em;
}
#privacy-item.screenshare {
background-color: @base00;
color: @base0C;
}
#privacy-item.audio-in {
background-color: @base00;
color: @base0E;
}
#privacy-item.audio-out {
background-color: @base;
}
'';
};
programs.rofi = {
enable = true;
theme = {
window = {
height = 360;
border = 3;
};
inputbar = {
children = ["prompt" "entry"];
border-radius = 5;
padding = 2;
};
prompt = {
padding = 6;
border-radius = 3;
margin = "20px 0px 0px 20px";
};
textbox-prompt-colon = {
expand = false;
str = "~>";
};
entry = {
padding = 6;
margin = "20px 0px 0px 10px";
};
listview = {
border = "0px 0px 0px";
padding = "6px 0px 0px";
margin = "10px 0px 0px 20px";
columns = 2;
lines = 5;
};
element = {
padding = 5;
};
element-icon = {
size = 25;
};
mode-switcher = {
spacing = 0;
};
button = {
padding = 10;
vertical-align = "0.5";
horizontal-align = "0.5";
};
message = {
margin = 2;
padding = 2;
border-radius = 5;
};
textbox = {
padding = 6;
margin = "20 0 0 20";
};
};
extraConfig = {
show-icons = true;
modi = "run,drun,window";
kb-primary-paste = "Control+V,Shift+Insert";
kb-secondary-paste = "Control+v,Insert";
};
};
programs.fuzzel = {
enable = true;
settings = {
main = {
terminal = "wezterm -e";
fields = "filename,name,generic,keywords,categories,exec";
dpi-aware = false;
horizontal-pad = 8;
show-actions = true;
match-mode = "fuzzy";
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
};
border = {
width = 2;
radius = 4;
};
};
};
services.dunst = {
enable = true;
settings = {
global = {
width = 300;
height = 300;
icon_theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
corner_radius = 4;
#corners = "top-right,bottom-left";
offset = "16x16";
origin = "bottom-right";
timeout = 15;
frame_width = 2;
notification_limit = 5;
};
rule-telegram = {
"desktop_entry" = "org.telegram.desktop";
"urgency" = "normal";
};
};
};
services.wlsunset = {
enable = true;
latitude = "49.6";
longitude = "36.1";
temperature = {
day = 6500;
night = 3000;
};
systemdTarget = "graphical-session.target";
};
services.udiskie = {
enable = true;
automount = false;
notify = true;
tray = "auto";
};
# services.flameshot = {
# enable = true;
# settings = {
# General = {
# buttons = "@Variant(000x7f000vQList<int>0000x130000000x1000x2000x3000x4000x5000x6000x12000xf000x13000b000 000x10000000v000x17000xe000f000x11)";
# filenamePattern = "screenshot-%F_%H-%M-%S";
# saveAsFileExtension = "png";
# savePath = "/home/user/pics/screenshots";
# uiColor = "#${config.lib.stylix.colors.base0D}";
# showStartupLaunchMessage = false;
# showDesktopNotification = false;
# showHelp = false;
# };
# };
# };
home.packages = with pkgs; [
nautilus
helvum
loupe
evince
celluloid
mission-center
dconf
glib
libnotify
playerctl
wdisplays
pwvucontrol
wl-clipboard-rs
polkit_gnome
libqalculate
#papirus-icon-theme
];
xdg.userDirs = {
enable = true;
createDirectories = true;
templates = "${config.home.homeDirectory}/temps";
publicShare = "${config.home.homeDirectory}/pub";
desktop = "${config.home.homeDirectory}/desktop";
download = "${config.home.homeDirectory}/downloads";
documents = "${config.home.homeDirectory}/docs";
pictures = "${config.home.homeDirectory}/pics";
videos = "${config.home.homeDirectory}/vids";
music = "${config.home.homeDirectory}/music";
};
xdg.mime.enable = true;
xdg.mimeApps = {
enable = true;
defaultApplications = let
file_manager = ["org.gnome.Nautilus.desktop"];
web_browser = ["io.github.zen_browser.zen.desktop"];
image_viewer = ["org.gnome.Loupe.desktop"];
video_player = ["io.github.celluloid_player.Celluloid.desktop"];
pdf_reader = ["org.gnome.Evince.desktop"];
in {
"inode/directory" = file_manager;
"video/x-matroska" = video_player;
"video/mp4" = video_player;
"video/mpeg" = video_player;
"video/x-mpeg" = video_player;
"image/png" = image_viewer;
"image/jpeg" = image_viewer;
"application/pdf" = pdf_reader;
"text/html" = web_browser;
};
};
systemd.user.settings.Manager.DefaultEnvironment = {
#DISPLAY = ":123";
};
systemd.user.targets.tray = {
# workaround for udiskie
Unit = {
Description = "Home Manager System Tray";
};
};
systemd.user.services = {
udiskie = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["sway-session.target"];
};
};
# waybar = {
# Unit = {
# Description = "Swaync notification daemon";
# # };
# Unit = {
# PartOf = ["graphical-session.target"];
# After = ["graphical-session.target"];
# Requisite = ["graphical-session.target"];
# };
# Install = {
# WantedBy = ["sway-session.target"];
# };
# };
copyq = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["sway-session.target"];
};
Service = {
Environment = lib.mkForce "QT_QPA_PLATFORM=wayland";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
network-manager-applet = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["sway-session.target"];
};
};
gnome-polkit-agent = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["sway-session.target"];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
wlsunset = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["sway-session.target"];
};
};
};
}