Move DE utility modules to deUtils namespace

This commit is contained in:
SebastianStork 2025-03-08 20:52:53 +01:00
parent 7e0677ce7d
commit 84be6ec469
19 changed files with 29 additions and 29 deletions

View file

@ -0,0 +1,24 @@
{
config,
pkgs,
lib,
...
}:
{
options.myConfig.deUtils.cliphist.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.deUtils.cliphist.enable {
services.cliphist = {
enable = true;
allowImages = false;
};
systemd.user.services.cliphist.Service.ExecStopPost =
"${lib.getExe config.services.cliphist.package} wipe";
home.packages = [
pkgs.wl-clipboard
(pkgs.writeScriptBin "rofi-clipboard" "cliphist list | rofi -dmenu -display-columns 2 | cliphist decode | wl-copy")
];
};
}

View file

@ -0,0 +1,14 @@
{ config, lib, ... }:
{
options.myConfig.deUtils.gammastep.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.deUtils.gammastep.enable {
services.gammastep = {
enable = true;
provider = "geoclue2";
settings.general.adjustment-method = "wayland";
temperature.night = 2700;
};
};
}

View file

@ -0,0 +1,46 @@
{
config,
pkgs,
lib,
...
}:
{
options.myConfig.deUtils.hypridle.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.deUtils.hypridle.enable {
home.packages = [ pkgs.brightnessctl ];
services.hypridle = {
enable = true;
settings = {
general = {
lock_cmd = "pidof hyprlock || hyprlock";
before_sleep_cmd = "loginctl lock-session";
after_sleep_cmd = "hyprctl dispatch dpms on";
};
listener = [
{
timeout = 300;
on-timeout = "brightnessctl --save --exponent set 10%";
on-resume = "brightnessctl --restore";
}
{
timeout = 600;
on-timeout = "hyprctl dispatch dpms off";
on-resume = "hyprctl dispatch dpms on";
}
{
timeout = 610;
on-timeout = "loginctl lock-session";
}
{
timeout = 1800;
on-timeout = "systemctl suspend${lib.optionalString config.myConfig.hibernation.enable "-then-hibernate"}";
}
];
};
};
};
}

View file

@ -0,0 +1,37 @@
{
config,
pkgs-unstable,
lib,
...
}@moduleArgs:
let
cfg = config.myConfig.deUtils.hyprlock;
in
{
options.myConfig.deUtils.hyprlock = {
enable = lib.mkEnableOption "";
fprintAuth = lib.mkEnableOption "" // {
default = moduleArgs.osConfig.services.fprintd.enable or false;
};
};
config = lib.mkIf cfg.enable {
programs.hyprlock = {
enable = true;
package = pkgs-unstable.hyprlock;
settings = {
general.immediate_render = true;
auth."fingerprint:enabled" = cfg.fprintAuth;
animations.enabled = false;
input-field.monitor = "";
background = {
monitor = "";
path = "~/Pictures/.wallpaper";
blur_size = 4;
blur_passes = 1;
};
};
};
};
}

View file

@ -0,0 +1,15 @@
{ config, lib, ... }:
{
options.myConfig.deUtils.hyprpaper.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.deUtils.hyprpaper.enable {
services.hyprpaper = {
enable = true;
settings = {
preload = [ "~/Pictures/.wallpaper" ];
wallpaper = [ ", ~/Pictures/.wallpaper" ];
};
};
};
}

View file

@ -0,0 +1,301 @@
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: true;
display-drun: "󰀻";
display-run: "";
display-filebrowser: "";
display-window: "";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
* {
font: "Open Sans 12, Symbols Nerd Font Mono 12";
}
* {
border-colour: var(selected);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "inputbar", "message", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry", "mode-switcher" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Search...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: true;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px ;
handle-color: @handle-colour;
border-radius: 10px;
background-color: @alternate-background;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 5px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: var(normal-background);
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(active-background);
text-color: var(active-foreground);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(selected-urgent-foreground);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(selected-active-foreground);
}
element alternate.normal {
background-color: var(alternate-normal-background);
text-color: var(alternate-normal-foreground);
}
element alternate.urgent {
background-color: var(alternate-urgent-background);
text-color: var(alternate-urgent-foreground);
}
element alternate.active {
background-color: var(alternate-active-background);
text-color: var(alternate-active-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 5px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 2px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View file

@ -0,0 +1,8 @@
* {
background: #1E2127FF;
background-alt: #282B31FF;
foreground: #FFFFFFFF;
selected: #61AFEFFF;
active: #98C379FF;
urgent: #E06C75FF;
}

View file

@ -0,0 +1,27 @@
{
config,
pkgs,
lib,
...
}:
{
options.myConfig.deUtils.rofi.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.deUtils.rofi.enable {
home.packages = [ pkgs.rofi-wayland ];
xdg.configFile."rofi/config.rasi".source =
let
theming =
{
dark = ./dark-theme.rasi;
light = ./light-theme.rasi;
}
.${config.myConfig.theme};
in
pkgs.concatText "rofi-config" [
./config.rasi
theming
];
};
}

View file

@ -0,0 +1,8 @@
* {
background: #F1F1F1FF;
background-alt: #E0E0E0FF;
foreground: #252525FF;
selected: #008EC4FF;
active: #10A778FF;
urgent: #C30771FF;
}

View file

@ -0,0 +1,114 @@
{ config, lib, ... }:
{
options.myConfig.deUtils.waybar.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.deUtils.waybar.enable {
programs.waybar = {
enable = true;
systemd.enable = true;
settings.mainBar = {
output = [
"DP-1"
"eDP-1"
];
layer = "top";
position = "bottom";
spacing = 10;
modules-left = [ "clock" ];
modules-center = [ "hyprland/workspaces" ];
modules-right = [
"tray"
"network"
"wireplumber"
"backlight"
"battery"
];
clock = {
format = " {:%H:%M}";
tooltip-format = "{:%d.%m.%Y}";
};
"hyprland/workspaces" = {
active-only = false;
all-outputs = true;
};
tray = {
icon-size = 20;
spacing = 6;
};
network = {
interval = 10;
format = "";
format-disconnected = "󰪎";
format-ethernet = "󰌗";
format-icons = [
"󰤟"
"󰤢"
"󰤥"
"󰤨"
];
format-wifi = "{icon}";
tooltip-format-disconnected = "Disconnected";
tooltip-format-ethernet = "󰇚 {bandwidthDownBits} 󰕒 {bandwidthUpBits}";
tooltip-format-wifi = "{essid} 󰇚 {bandwidthDownBits} 󰕒 {bandwidthUpBits}";
};
wireplumber = {
format = "{icon} {volume}%";
format-icons = [
"󰕿"
"󰖀"
"󰕾"
];
format-muted = "󰝟";
scroll-step = "5";
};
backlight = {
device = "amdgpu_bl1";
format = "{icon} {percent}%";
format-icons = [
"󰃞"
"󰃟"
"󰃠"
];
};
battery = {
format = "{icon} {capacity}%";
format-icons = [
"󰂎"
"󰁺"
"󰁻"
"󰁼"
"󰁽"
"󰁾"
"󰁿"
"󰂀"
"󰂁"
"󰂂"
"󰁹"
];
states = {
critical = 5;
warning = 15;
};
};
};
style = ''
* {
border: none;
border-radius: 0px;
font-family: "Open Sans, Symbols Nerd Font Mono";
font-size: 15px;
}
'';
};
};
}

View file

@ -0,0 +1,48 @@
{
config,
pkgs,
lib,
...
}:
{
options.myConfig.deUtils.wluma.enable = lib.mkEnableOption "";
config = lib.mkIf config.myConfig.deUtils.wluma.enable {
home.packages = [ pkgs.wluma ];
xdg.configFile."wluma/config.toml".source = (pkgs.formats.toml { }).generate "wluma-config" {
als.iio = {
path = "/sys/bus/iio/devices";
thresholds = {
"0" = "night";
"5" = "dark";
"10" = "dim";
"80" = "normal";
"900" = "bright";
"3000" = "outdoors";
};
};
output.backlight = [
{
name = "eDP-1";
path = "/sys/class/backlight/amdgpu_bl1";
capturer = "wayland";
}
];
};
systemd.user.services.wluma = {
Install.WantedBy = [ "graphical-session.target" ];
Unit = {
Description = "Automatic brightness adjustment based on screen contents and ALS";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
X-Restart-Triggers = [ config.xdg.configFile."wluma/config.toml".source ];
};
Service = {
ExecStart = lib.getExe pkgs.wluma;
Restart = "always";
};
};
};
}