This commit is contained in:
unexplrd
2025-02-06 00:33:06 +02:00
commit 2e6e28ef32
254 changed files with 28562 additions and 0 deletions

View File

@ -0,0 +1,28 @@
{
config,
pkgs,
lib,
...
}: {
options = {
fuzzel.enable =
lib.mkEnableOption "enable fuzzel launcher";
};
config = lib.mkIf config.fuzzel.enable {
programs.fuzzel = {
enable = true;
settings = {
main = {
terminal = "${pkgs.wezterm}/bin/wezterm -e";
fields = "filename,name,generic,keywords,categories,exec";
match-mode = "fuzzy";
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
};
border = {
width = 3;
radius = 12;
};
};
};
};
}

View File

@ -0,0 +1,310 @@
{
config,
pkgs,
lib,
...
}: {
imports = [
./niri.nix
./wofi.nix
./fuzzel.nix
./waybar.nix
./swaync.nix
./swayidle.nix
./swaylock.nix
./wlsunset.nix
./udiskie.nix
];
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/solarized-dark.yaml";
polarity = "dark";
cursor = {
package = pkgs.google-cursor;
name = "GoogleDot-Blue";
size = 24;
};
image = ../wallpapers/wallhaven-5g9ed8.png;
opacity.terminal = 0.8;
fonts = {
sizes = {
applications = 13;
desktop = 14;
popups = 12;
terminal = 15;
};
serif = {
package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
name = "Iosevka Nerd Font";
};
sansSerif = {
package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
name = "Iosevka Nerd Font";
};
monospace = {
package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
name = "Iosevka Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
};
dconf.settings = {
"org/gnome/desktop/interface" = {
icon-theme = "Papirus-Dark";
};
};
fuzzel.enable = true;
waybar.enable = true;
swaync.enable = false;
wlsunset.enable = true;
component.swaylock.enable = true;
swayidle.enable = true;
udiskie.enable = true;
imv.enable = true;
services.gnome-keyring.enable = true;
services.network-manager-applet.enable = true;
services.copyq.enable = true;
services.dunst = {
enable = true;
settings = {
global = {
width = 300;
height = 300;
icon_theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
corner_radius = 12;
corners = "top-right,bottom-left";
offset = "45x5";
origin = "top-right";
timeout = 15;
};
rule-telegram = {
"desktop_entry" = "org.telegram.desktop";
"urgency" = "normal";
};
};
};
home.packages = with pkgs; [
dconf
glib
wbg
swayidle
swaylock-effects
libnotify
wdisplays
pwvucontrol
wl-clipboard-rs
polkit_gnome
xwayland-satellite
papirus-icon-theme
#libsForQt5.qt5ct
#kdePackages.qt6ct
#libsForQt5.qtstyleplugin-kvantum
#kdePackages.qtstyleplugin-kvantum
#adwaita-qt
#adwaita-qt6
];
gtk = {
enable = true;
#iconTheme = {
# name = "Papirus-Dark";
# package = pkgs.papirus-icon-theme;
};
qt = {
enable = true;
platformTheme.name = "gtk3";
};
xdg.mime.enable = true;
xdg.mimeApps = {
enable = true;
defaultApplications = let
file_manager = ["yazi.desktop"];
web_browser = ["io.github.zen_browser.zen.desktop"];
image_viewer = ["imv.desktop"];
video_player = ["io.mpv.Mpv.desktop"];
pdf_reader = ["org.pwmt.zathura-pdf-mupdf.desktop"];
in {
"inode/directory" = file_manager;
"video/x-matroska" = video_player;
"application/pdf" = pdf_reader;
};
};
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.configFile = {
#niri = {
# recursive = true;
# source = dotfiles/niri;
#};
#qt5ct = {
# recursive = true;
# source = dotfiles/qt5ct;
#};
#qt6ct = {
# recursive = true;
# source = dotfiles/qt6ct;
#};
#Kvantum = {
# recursive = true;
# source = dotfiles/Kvantum;
#};
};
systemd.user.settings.Manager.DefaultEnvironment = {
QT_QPA_PLATFORMTHEME = "gtk3";
QT_QPA_PLATFORM = "wayland";
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 = ["niri.service"];
};
};
waybar = {
# Unit = {
# Description = "Swaync notification daemon";
# };
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["niri.service"];
};
# Service = {
# Type = "dbus";
# ExecStart = "${pkgs.swaynotificationcenter}/bin/swaync";
# Restart = "on-failure";
# RestartSec = 1;
# TimeoutStopSec = 10;
# };
};
copyq = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["niri.service"];
};
Service = {
Environment = lib.mkForce "QT_QPA_PLATFORM=wayland";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
wbg = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["niri.service"];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.wbg}/bin/wbg ${config.stylix.image}";
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 = ["niri.service"];
};
};
gnome-polkit-agent = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["niri.service"];
};
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 = ["niri.service"];
};
};
swayidle = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["niri.service"];
};
};
xwayland-satellite = {
Unit = {
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
Requisite = ["graphical-session.target"];
};
Install = {
WantedBy = ["niri.service"];
};
Service = {
Type = "simple";
ExecStart = "${pkgs.xwayland-satellite}/bin/xwayland-satellite :123";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
};
}

View File

@ -0,0 +1,33 @@
{
pkgs,
config,
lib,
...
}: {
options = {
swayidle.enable =
lib.mkEnableOption "enable swayidle";
};
config = lib.mkIf config.swayidle.enable {
services.swayidle = {
enable = true;
systemdTarget = "graphical-session.target";
timeouts = [
{
timeout = 300;
command = "${pkgs.swaylock-effects}/bin/swaylock -fF";
}
{
timeout = 600;
command = "${pkgs.niri}/bin/niri msg action power-off-monitors";
}
];
events = [
{
event = "before-sleep";
command = "${pkgs.swaylock-effects}/bin/swaylock -fF";
}
];
};
};
}

View File

@ -0,0 +1,30 @@
{
pkgs,
config,
lib,
...
}: {
options = {
component.swaylock.enable =
lib.mkEnableOption "enable swaylock";
};
config = lib.mkIf config.component.swaylock.enable {
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
settings = {
font = "${config.stylix.fonts.serif.name}";
font-size = 25;
indicator-radius = 100;
indicator-thickness = 20;
indicator-idle-visible = true;
# -effect section
screenshots = true;
clock = true;
effect-pixelate = 60;
effect-vignette = "0.5:0.5";
};
};
};
}

View File

@ -0,0 +1,18 @@
{
config,
lib,
...
}: {
options = {
udiskie.enable =
lib.mkEnableOption "enable udiskie";
};
config = lib.mkIf config.udiskie.enable {
services.udiskie = {
enable = true;
automount = false;
notify = true;
tray = "auto";
};
};
}

View File

@ -0,0 +1,418 @@
{
config,
lib,
pkgs,
...
}: {
options = {
waybar.enable =
lib.mkEnableOption "enable waybar";
};
config = lib.mkIf config.waybar.enable {
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 = {
layer = "top";
position = "top";
height = 40;
spacing = 4;
margin-left = 48;
margin-right = 48;
margin-top = 4;
reload_style_on_change = true;
modules-left = [
#"custom/notification"
"group/niri"
"wlr/taskbar"
];
modules-center = ["clock" "privacy"];
modules-right = [
"tray"
"wireplumber"
"group/laptop"
"idle_inhibitor"
];
"niri/workspaces" = {
format = "{icon}";
format-icons = {
focused = "󰗝";
active = "󰻃";
default = "󰄰";
};
};
"niri/language" = {
format = "{}";
format-en = "🇺🇸";
format-uk = "🇺🇦";
};
"custom/separator" = {
format = "|";
interval = "once";
tooltip = false;
};
"custom/text" = {
format = "here will be workspaces";
interval = "once";
tooltip = false;
};
"group/niri" = {
orientation = "inherit";
modules = [
"niri/language"
"niri/workspaces"
];
};
"group/laptop" = {
orientation = "inherit";
drawer = {
transition-duration = 500;
children-class = "laptop";
transition-left-to-right = false;
};
modules = [
"battery"
"custom/kbd-backlight"
"custom/separator"
"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}";
};
"backlight" = {
device = "intel_backlight";
format = "{percent}% {icon}";
format-icons = ["󰃞" "󰃟" "󰃝" "󰃠"];
on-scroll-up = "light -A 2%";
on-scroll-down = "light -U 2%";
};
"custom/kbd-backlight" = {
exec = "cat /sys/class/leds/platform::kbd_backlight/brightness";
interval = 1;
format = "{}% {icon}";
format-icons = ["󰌌"];
on-scroll-up = "light -s sysfs/leds/platform::kbd_backlight -A 5%";
on-scroll-down = "light -s sysfs/leds/platform::kbd_backlight -U 5%";
};
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 = "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: Iosevka Nerd Font Propo, FontAwesome;
font-size: 100%;
/* margin: 0px 2px 2px 2px; */
}
window#waybar {
background-color: transparent;
/* border-top: 3px solid @overlay0; */
color: @base05;
/* padding: 0px 2px 0px 0px; */
transition-property: background-color;
transition-duration: 0.5s;
}
.modules-left {
border-radius: 12px;
margin-right: 4px;
}
.modules-center {
border-radius: 12px;
}
.modules-right {
border-radius: 12px;
margin-left: 4px;
}
tooltip {
background: @base01;
border: 1px solid @base0E;
}
tooltip label {
color: @base05;
}
/* .modules-center {
margin: 4px;
margin-top: 6px;
}*/
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-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.8em;
border-radius: 12px;
color: @base05;
background-color: @base00;
}
/* #upower, */
#battery,
#backlight,
#custom-kbd-backlight,
#backlight-slider,
#cpu,
#memory,
#disk,
#network,
#wireplumber,
#power-profiles-daemon {
padding-right: 0.8em;
}
#language {
padding-right: 0;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
#workspaces {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
#taskbar,
#workspaces {
padding: 0 0.5em;
}
#taskbar button,
#workspaces button {
padding: 0 0.3em;
}
#taskbar button:hover {
box-shadow: transparent;
}
#taskbar.empty,
window#empty {
background-color: transparent;
}
#battery.critical:not(.charging) {
background-color: #ed8796;
color: #181926;
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: #ed8796;
color: #000000;
}
#power-profiles-daemon.balanced {
background-color: #b7bdf8;
color: #000000;
}
#power-profiles-daemon.power-saver {
background-color: #8aadf4;
color: #000000;
}
label:focus {
background-color: #000000;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
#idle_inhibitor {
padding: 0 0.9em;
}
#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;
}
'';
};
};
}

View File

@ -0,0 +1,22 @@
{
config,
lib,
...
}: {
options = {
wlsunset.enable =
lib.mkEnableOption "enable wlsunset";
};
config = lib.mkIf config.wlsunset.enable {
services.wlsunset = {
enable = true;
latitude = "49.6";
longitude = "36.1";
temperature = {
day = 6500;
night = 3000;
};
systemdTarget = "graphical-session.target";
};
};
}