Refactor gui module

This commit is contained in:
ulic-youthlic 2025-07-01 23:17:40 +08:00
parent edfe0e5bf9
commit e65183b4a4
Signed by: youthlic
GPG key ID: 63E86C3C14A0D721
36 changed files with 236 additions and 309 deletions

View file

@ -1,27 +0,0 @@
[general]
ipc_socket = true
live_config_reload = true
[window]
dynamic_padding = true
opacity = 0.8
blur = true
[scrolling]
history = 100000
multiplier = 5
[font]
size = 16
[bell]
duration = 1
[selection]
save_to_clipboard = true
[terminal]
osc52 = "CopyPaste"
[mouse]
hide_when_typing = true

View file

@ -1,30 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.youthlic.programs.alacritty;
in {
options = {
youthlic.programs.alacritty = {
enable = lib.mkEnableOption "alacritty";
};
};
config = lib.mkIf cfg.enable {
programs.alacritty = {
enable = true;
package = pkgs.alacritty_git;
settings =
(./alacritty.toml |> builtins.readFile |> builtins.fromTOML)
// {
colors = lib.mkForce {};
font.size = lib.mkForce 16;
window.opacity = lib.mkForce 0.8;
general.import = [
"${pkgs.alacritty-theme}/share/alacritty-theme/gruvbox_dark.toml"
];
};
};
};
}

View file

@ -1,25 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.youthlic.programs.chromium;
in {
options = {
youthlic.programs.chromium = {
enable = lib.mkEnableOption "chromium";
};
};
config = lib.mkIf cfg.enable {
programs.chromium = {
enable = true;
commandLineArgs = [
"--ozone-platform-hint=wayland"
"--process-per-site"
"--enable-wayland-ime"
"--wayland-text-input-version=3"
"--enable-features=UseOzonePlatform"
];
};
};
}

View file

@ -1,36 +1,20 @@
{...}: {
imports = [
./zed.nix
./rustypaste-cli.nix
./atuin.nix
./firefox.nix
./bash.nix
./fish.nix
./kvm.nix
./ghostty.nix
./wluma.nix
./niri.nix
./starship
./fuzzel.nix
./mpv.nix
./swaylock.nix
./thunderbird.nix
./chromium.nix
./gpg
./foot
./sops.nix
./git.nix
./swaync.nix
./helix
./waybar.nix
./jujutsu.nix
./espanso.nix
./yazi.nix
./zoxide.nix
./fzf.nix
./eza.nix
./ion.nix
./alacritty
./waypaper.nix
];
}

View file

@ -1,42 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.youthlic.programs.espanso;
in {
options = {
youthlic.programs.espanso = {
enable = lib.mkEnableOption "espanso";
};
};
config = lib.mkIf cfg.enable {
services.espanso = {
enable = true;
package = pkgs.espanso-wayland;
configs = {
default = {};
};
matches = {
base = {
matches = [
{
trigger = ":date";
replace = "{{date}}";
vars = [
{
name = "date";
type = "date";
params = {
format = "%Y-%m-%d";
};
}
];
}
];
};
};
};
};
}

View file

@ -1,182 +0,0 @@
{
pkgs,
outputs,
system,
lib,
config,
...
}: let
cfg = config.youthlic.programs.firefox;
in {
options = {
youthlic.programs.firefox = {
enable = lib.mkEnableOption "firefox";
};
};
config = lib.mkIf cfg.enable {
stylix.targets.firefox.profileNames = [
"default"
];
programs.firefox = {
enable = true;
betterfox = {
enable = true;
};
languagePacks = [
"zh-CN"
"en-US"
];
profiles.default = {
betterfox = {
enable = true;
enableAllSections = true;
};
name = "default";
isDefault = true;
extensions = {
# settings = {
# "redirector@einaregilsson.com" = {
# settings = {
# redirects = [
# {
# description = "NixOS Wiki";
# exampleUrl = "http://nixos.wiki/wiki/Main_Page";
# exampleResult = "http://wiki.nixos.org/wiki/Main_Page";
# error = null;
# includePattern = "http(s?)://nixos.wiki/wiki/(.*)";
# excludePattern = "";
# patternDesc = "";
# redirectUrl = "http$1://wiki.nixos.org/wiki/$2";
# patternType = "R";
# processMatches = "noProcessing";
# disabled = false;
# grouped = false;
# appliesTo = [
# "main_frame"
# ];
# }
# ];
# };
# };
# };
packages = with outputs.packages."${system}"; [
immersive-translate
tridactyl
redirector
];
};
settings = {
"sidebar.verticalTabs" = true;
"sidebar.visibility" = "expand-on-hover";
"sidebar.main.tools" = "syncedtabs,history,bookmarks,aichat";
"sidebar.animation.expand-on-hover.duration-ms" = 150;
"sidebar.revamp" = true;
"browser.tabs.closeTabByDblclick" = true;
};
search = {
force = true;
default = "ddg";
engines = {
"Nix Packages" = {
urls = [
{
template = "https://search.nixos.org/packages";
params = [
{
name = "type";
value = "packages";
}
{
name = "query";
value = "{searchTerms}";
}
];
}
];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@np"];
};
"Nix Options" = {
urls = [
{
template = "https://search.nixos.org/options";
params = [
{
name = "channel";
value = "unstable";
}
{
name = "query";
value = "{searchTerms}";
}
];
}
];
definedAliases = ["@no"];
};
"Home Manager Options" = {
urls = [
{
template = "https://home-manager-options.extranix.com";
params = [
{
name = "query";
value = "{searchTerms}";
}
{
name = "release";
value = "master";
}
];
}
];
definedAliases = ["hm"];
};
"NUR Packages" = {
urls = [
{
template = "https://nur.nix-community.org/";
}
];
definedAliases = ["nu"];
};
"Nix Flakes" = {
urls = [
{
template = "https://search.nixos.org/flakes";
params = [
{
name = "channel";
value = "unstable";
}
{
name = "query";
value = "{searchTerms}";
}
];
}
];
definedAliases = ["nf"];
};
"NixOS Wiki" = {
urls = [
{
template = "https://nixos.wiki/index.php";
params = [
{
name = "search";
value = "{searchTerms}";
}
];
}
];
definedAliases = ["nw"];
};
"bing".metaData.hidden = true;
"google".metaData.alias = "@g"; # builtin engines only support specifying one additional alias
};
};
};
};
};
}

View file

@ -1,20 +0,0 @@
{
config,
lib,
...
}: let
cfg = config.youthlic.programs.foot;
in {
options = {
youthlic.programs.foot = {
enable = lib.mkEnableOption "foot";
};
};
config = lib.mkIf cfg.enable {
programs.foot = {
enable = true;
server.enable = true;
settings = builtins.fromINI (builtins.readFile ./foot.ini);
};
};
}

View file

@ -1,256 +0,0 @@
# -*- conf -*-
# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
term=foot
# login-shell=no
# app-id=foot # globally set wayland app-id. Default values are "foot" and "footclient" for desktop and server mode
# title=foot
# locked-title=no
# font=FiraCode Nerd Font:size=15:lang=en-US
# font-bold=<bold variant of regular font>
# font-italic=<italic variant of regular font>
# font-bold-italic=<bold+italic variant of regular font>
# font-size-adjustment=0.5
# line-height=<font metrics>
# letter-spacing=0
horizontal-letter-offset=0
vertical-letter-offset=0
# underline-offset=<font metrics>
# underline-thickness=<font underline thickness>
# strikeout-thickness=<font strikeout thickness>
# box-drawings-uses-font-glyphs=no
dpi-aware=yes
# initial-window-size-pixels=700x500 # Or,
# initial-window-size-chars=<COLSxROWS>
# initial-window-mode=windowed
# pad=0x0
# resize-by-cells=yes
# resize-keep-grid=yes
# resize-delay-ms=100
# bold-text-in-bright=no
# word-delimiters=,│`|:"'()[]{}<>
selection-target=clipboard
# workers=<number of logical CPUs>
# utmp-helper=/usr/lib/utempter/utempter # When utmp backend is libutempter (Linux)
# utmp-helper=/usr/libexec/ulog-helper # When utmp backend is ulog (FreeBSD)
[environment]
# name=value
[bell]
# urgent=no
# notify=no
# visual=no
# command=
# command-focused=no
[desktop-notifications]
# command=notify-send --wait --app-name ${app-id} --icon ${app-id} --category ${category} --urgency ${urgency} --expire-time ${expire-time} --hint STRING:image-path:${icon} --hint BOOLEAN:suppress-sound:${muted} --hint STRING:sound-name:${sound-name} --replace-id ${replace-id} ${action-argument} --print-id -- ${title} ${body}
# command-action-argument=--action ${action-name}=${action-label}
# close=""
# inhibit-when-focused=yes
[scrollback]
# lines=1000
# multiplier=3.0
# indicator-position=relative
# indicator-format=""
[url]
# launch=xdg-open ${url}
# label-letters=sadfjklewcmpgh
# osc8-underline=url-mode
# protocols=http, https, ftp, ftps, file, gemini, gopher
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
[cursor]
style=beam # block
# color=<inverse foreground/background>
# blink=no
# blink-rate=500
# beam-thickness=1.5
# underline-thickness=<font underline thickness>
[mouse]
hide-when-typing=yes
# alternate-scroll-mode=yes
[touch]
# long-press-delay=400
[colors]
# alpha=1.0
# background=242424
# foreground=ffffff
# flash=7f7f00
# flash-alpha=0.5
## Normal/regular colors (color palette 0-7)
# regular0=242424 # black
# regular1=f62b5a # red
# regular2=47b413 # green
# regular3=e3c401 # yellow
# regular4=24acd4 # blue
# regular5=f2affd # magenta
# regular6=13c299 # cyan
# regular7=e6e6e6 # white
## Bright colors (color palette 8-15)
# bright0=616161 # bright black
# bright1=ff4d51 # bright red
# bright2=35d450 # bright green
# bright3=e9e836 # bright yellow
# bright4=5dc5f8 # bright blue
# bright5=feabf2 # bright magenta
# bright6=24dfc4 # bright cyan
# bright7=ffffff # bright white
## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>
## The remaining 256-color palette
# 16 = <256-color palette #16>
# ...
# 255 = <256-color palette #255>
## Sixel colors
# sixel0 = 000000
# sixel1 = 3333cc
# sixel2 = cc2121
# sixel3 = 33cc33
# sixel4 = cc33cc
# sixel5 = 33cccc
# sixel6 = cccc33
# sixel7 = 878787
# sixel8 = 424242
# sixel9 = 545499
# sixel10 = 994242
# sixel11 = 549954
# sixel12 = 995499
# sixel13 = 549999
# sixel14 = 999954
# sixel15 = cccccc
## Misc colors
# selection-foreground=<inverse foreground/background>
# selection-background=<inverse foreground/background>
# jump-labels=<regular0> <regular3> # black-on-yellow
# scrollback-indicator=<regular0> <bright4> # black-on-bright-blue
# search-box-no-match=<regular0> <regular1> # black-on-red
# search-box-match=<regular0> <regular3> # black-on-yellow
# urls=<regular3>
[csd]
# preferred=server
# size=26
# font=<primary font>
# color=<foreground color>
# hide-when-maximized=no
# double-click-to-maximize=yes
# border-width=0
# border-color=<csd.color>
# button-width=26
# button-color=<background color>
# button-minimize-color=<regular4>
# button-maximize-color=<regular2>
# button-close-color=<regular1>
[key-bindings]
# scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# scrollback-home=none
# scrollback-end=none
# clipboard-copy=Control+Shift+c XF86Copy
# clipboard-paste=Control+Shift+v XF86Paste
# primary-paste=Shift+Insert
# search-start=Control+Shift+r
# font-increase=Control+plus Control+equal Control+KP_Add
# font-decrease=Control+minus Control+KP_Subtract
# font-reset=Control+0 Control+KP_0
# spawn-terminal=Control+Shift+n
# minimize=none
# maximize=none
# fullscreen=none
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-selected=[xargs -r firefox] none
# pipe-command-output=[wl-copy] none # Copy last command's output to the clipboard
# show-urls-launch=Control+Shift+o
# show-urls-copy=none
# show-urls-persistent=none
# prompt-prev=Control+Shift+z
# prompt-next=Control+Shift+x
# unicode-input=Control+Shift+u
# noop=none
# quit=none
[search-bindings]
# cancel=Control+g Control+c Escape
# commit=Return
# find-prev=Control+r
# find-next=Control+s
# cursor-left=Left Control+b
# cursor-left-word=Control+Left Mod1+b
# cursor-right=Right Control+f
# cursor-right-word=Control+Right Mod1+f
# cursor-home=Home Control+a
# cursor-end=End Control+e
# delete-prev=BackSpace
# delete-prev-word=Mod1+BackSpace Control+BackSpace
# delete-next=Delete
# delete-next-word=Mod1+d Control+Delete
# extend-char=Shift+Right
# extend-to-word-boundary=Control+w Control+Shift+Right
# extend-to-next-whitespace=Control+Shift+w
# extend-line-down=Shift+Down
# extend-backward-char=Shift+Left
# extend-backward-to-word-boundary=Control+Shift+Left
# extend-backward-to-next-whitespace=none
# extend-line-up=Shift+Up
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
# primary-paste=Shift+Insert
# unicode-input=none
# scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# scrollback-home=none
# scrollback-end=none
[url-bindings]
# cancel=Control+g Control+c Control+d Escape
# toggle-url-visible=t
[text-bindings]
# \x03=Mod4+c # Map Super+c -> Ctrl+c
[mouse-bindings]
# scrollback-up-mouse=BTN_WHEEL_BACK
# scrollback-down-mouse=BTN_WHEEL_FORWARD
# font-increase=Control+BTN_WHEEL_BACK
# font-decrease=Control+BTN_WHEEL_FORWARD
# selection-override-modifiers=Shift
# primary-paste=BTN_MIDDLE
# select-begin=BTN_LEFT
# select-begin-block=Control+BTN_LEFT
# select-extend=BTN_RIGHT
# select-extend-character-wise=Control+BTN_RIGHT
# select-word=BTN_LEFT-2
# select-word-whitespace=Control+BTN_LEFT-2
# select-quote = BTN_LEFT-3
# select-row=BTN_LEFT-4
# vim: ft=dosini

View file

@ -1,34 +0,0 @@
{
config,
lib,
...
}: let
cfg = config.youthlic.programs.fuzzel;
in {
options = {
youthlic.programs.fuzzel = {
enable = lib.mkEnableOption "fuzzel";
};
};
config = {
programs.fuzzel = lib.mkIf cfg.enable {
enable = true;
settings = {
main = {
# font = "LXGW WenKai:size=11";
prompt = "'λ '";
dpi-aware = true;
};
# colors = {
# background = "282a36dd";
# text = "f8f8f2ff";
# match = "8be9fdff";
# selection-match = "8be9fdff";
# selection = "44475add";
# selection-text = "f8f8f2ff";
# border = "bd93f9ff";
# };
};
};
};
}

View file

@ -1,60 +0,0 @@
{
pkgs,
config,
lib,
...
}: {
options = {
youthlic.programs.ghostty = {
enable = lib.mkEnableOption "ghostty";
};
};
config = let
cfg = config.youthlic.programs.ghostty;
in (lib.mkIf cfg.enable {
programs.ghostty = lib.mkMerge [
{
enable = true;
package = pkgs.ghostty;
settings = {
# font-family = "FiraCode Nerd Font";
# font-feature = [
# "calt=1"
# "clig=1"
# "liga=1"
# "cv01"
# "cv02"
# "cv06"
# "zero"
# "onum"
# "cv17"
# "ss05"
# "ss03"
# "cv16"
# "cv31"
# "cv29"
# "cv30"
# ];
# font-family = "Maple Mono SC NF";
font-feature = [
"calt"
"zero"
"cv03"
"ss08"
];
font-size = lib.mkForce 17;
# theme = "ayu";
background-opacity = lib.mkForce 0.8;
confirm-close-surface = "false";
};
}
(lib.mkIf config.youthlic.programs.fish.enable {
enableFishIntegration = true;
})
(lib.mkIf config.youthlic.programs.bash.enable {
enableBashIntegration = true;
})
];
});
}

View file

@ -1,5 +1,3 @@
theme = "gruvbox_dark_hard"
[editor]
line-number = "relative"
cursorline = true

View file

@ -24,7 +24,6 @@
config = let
cfg = config.youthlic.programs.helix;
in {
stylix.targets.helix.enable = false;
programs.helix = lib.mkIf cfg.enable {
enable = true;
defaultEditor = true;

View file

@ -1,18 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.youthlic.programs.mpv;
in {
options = {
youthlic.programs.mpv = {
enable = lib.mkEnableOption "mpv";
};
};
config = lib.mkIf cfg.enable {
programs.mpv = {
enable = true;
};
};
}

View file

@ -1,76 +0,0 @@
{
pkgs,
config,
lib,
osConfig ? null,
inputs,
...
}: let
cfg = config.youthlic.programs.niri;
niri = osConfig.programs.niri.package;
in {
options = {
youthlic.programs.niri = {
enable = lib.mkEnableOption "niri";
config = lib.mkOption {
type = inputs.niri-flake.lib.kdl.types.kdl-document;
};
};
};
config = lib.mkMerge [
{
youthlic.programs.niri.enable = osConfig.youthlic.gui.enabled == "niri";
}
(
lib.mkIf cfg.enable {
home.packages =
(with pkgs; [
swaynotificationcenter
kdePackages.polkit-kde-agent-1
wl-clipboard
cliphist
])
++ [niri];
qt = {
enable = true;
};
xdg.portal = {
configPackages = [niri];
enable = true;
extraPortals = lib.mkIf (
!niri.cargoBuildNoDefaultFeatures || builtins.elem "xdp-gnome-screencast" niri.cargoBuildFeatures
) [pkgs.xdg-desktop-portal-gnome];
};
xdg.configFile = let
qtctConf =
''
[Appearance]
standard_dialogs=xdgdesktopportal
''
+ lib.optionalString (config.qt.style ? name) ''
style=${config.qt.style.name}
'';
in {
"qt5ct/qt5ct.conf" = lib.mkForce {
text = qtctConf;
};
"qt6ct/qt6ct.conf" = lib.mkForce {
text = qtctConf;
};
};
youthlic.programs = {
fuzzel.enable = true;
wluma.enable = true;
waybar.enable = true;
swaync.enable = true;
swaylock.enable = true;
waypaper.enable = true;
};
programs.niri = {
config = cfg.config;
package = niri;
};
}
)
];
}

View file

@ -1,20 +0,0 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.youthlic.programs.swaylock;
in {
options = {
youthlic.programs.swaylock = {
enable = lib.mkEnableOption "swaylock";
};
};
config = lib.mkIf cfg.enable {
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
};
};
}

View file

@ -1,24 +0,0 @@
{
lib,
config,
...
}: let
cfg = config.youthlic.programs.swaync;
in {
options = {
youthlic.programs.swaync = {
enable = lib.mkEnableOption "swaync";
systemd.enable = lib.mkEnableOption "systemd service for swaync";
};
};
config = lib.mkMerge [
(lib.mkIf cfg.enable {
services.swaync = {
enable = true;
};
})
(lib.mkIf (!cfg.systemd.enable) {
systemd.user.services.swaync = lib.mkForce {};
})
];
}

View file

@ -1,24 +0,0 @@
{
config,
lib,
...
}: let
cfg = config.youthlic.programs.thunderbird;
in {
options = {
youthlic.programs.thunderbird = {
enable = lib.mkEnableOption "thunderbird";
};
};
config = lib.mkIf cfg.enable {
programs.thunderbird = {
enable = true;
profiles = {
default = {
withExternalGnupg = true;
isDefault = true;
};
};
};
};
}

View file

@ -1,195 +0,0 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.youthlic.programs.waybar;
in {
options = {
youthlic.programs.waybar = {
enable = lib.mkEnableOption "waybar";
};
};
config = lib.mkMerge [
(lib.mkIf cfg.enable {
programs.waybar = {
enable = true;
systemd.enable = false;
settings = [
{
layer = "top";
position = "top";
modules-left = [
"niri/workspaces"
"wlr/taskbar"
];
modules-center = ["clock"];
modules-right = [
"tray"
"idle_inhibitor"
"memory"
"backlight"
"pulseaudio"
"battery"
"custom/notification"
];
"wlr/taskbar" = {
on-click = "activate";
};
"niri/worksapces" = {};
"niri/taskbar" = {
icon-size = 15;
on-click = "activate";
on-click-middle = "close";
};
"tray" = {
icon-size = 15;
spacing = 10;
};
idle_inhibitor = {
format = "{icon}";
format-icons = {
activated = " ";
deactivated = " ";
};
};
memory = {
format = " {percentage}%";
on-click = lib.getExe pkgs.resources;
};
backlight = {
format = "{icon}{percent}%";
format-icons = " ";
on-scroll-up = "${lib.getExe pkgs.brightnessctl} set +1%";
on-scroll-down = "${lib.getExe pkgs.brightnessctl} set 1%-";
};
pulseaudio = {
format = "{icon}{volume}%";
format-bluetooth = " {volume}%";
format-muted = " -%";
format-source = " {volume}%";
format-source-muted = " ";
format-icons = {
default = [
" "
" "
" "
];
headphone = " ";
headset = " ";
hands-free = " ";
};
on-click = "${lib.getExe' pkgs.wireplumber "wpctl"} set-mute @DEFAULT_AUDIO_SINK@ toggle";
on-click-right = lib.getExe pkgs.pwvucontrol;
tooltip-format = "{icon}{desc} {volume}%";
};
battery = {
states = {
warning = 30;
critical = 15;
};
format = "{icon}{capacity}%";
format-charging = " {capacity}%";
format-icons = [
" "
" "
" "
" "
" "
];
tooltip-format = ''
{power}W
{timeTo}'';
};
clock = {
format = "{:%a %b %d %R}";
calendar.format = {
months = "<span color='#ff7b63'>{}</span>";
days = "<span color='#ffffff'>{}</span>";
weeks = "<span color='#8ff0a4'>W{}</span>";
weekdays = "<span color='#f8e45c'>{}</span>";
today = "<span color='#78aeed'><u>{}</u></span>";
};
actions = {
on-scroll-up = "shift_up";
on-scroll-down = "shift_down";
};
tooltip-format = "{calendar}";
};
"custom/notification" = {
"tooltip" = false;
"format" = "{icon}";
"format-icons" = {
"notification" = "<span foreground='red'><sup></sup></span>";
"none" = "";
"dnd-notification" = "<span foreground='red'><sup></sup></span>";
"dnd-none" = "";
};
"return-type" = "json";
"exec" = "swaync-client -swb";
"on-click" = "swaync-client -t -sw";
"on-click-right" = "swaync-client -d -sw";
"escape" = true;
};
}
];
style = ''
* {
font-family: LXGW Wenkai, Maple Mono NF CN;
font-weight: bold;
font-size: 14px;
}
window#waybar {
background: alpha(@theme_base_color, 0.9);
color: @theme_text_color;
}
#custom-notification,
#workspaces,
#taskbar button,
#mode,
#clock,
#tray,
#mpris,
#idle_inhibitor,
#backlight,
#cpu,
#memory,
#pulseaudio,
#battery {
padding: 0 6px;
}
#workspaces button {
padding: 3px 6px;
}
#workspaces button.focused,
#workspaces button.active {
color: #78aeed;
}
#battery.warning {
color: #f8e45c;
}
#battery.critical {
color: #ff7b63;
}
#battery.charging {
color: #8ff0a4;
}
'';
};
})
(lib.mkIf (cfg.enable && config.stylix.enable) {
stylix.targets.waybar.enable = false;
})
];
}

View file

@ -1,43 +0,0 @@
{
lib,
config,
pkgs,
...
}: let
cfg = config.youthlic.programs.waypaper;
in {
options = {
youthlic.programs.waypaper = {
enable = lib.mkEnableOption "waypaper";
};
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [waypaper socat mpvpaper];
systemd.user = {
timers."waypaper" = {
Unit = {
Description = "Set a random wallpaper every 10 minutes";
};
Timer = {
Persistent = true;
OnCalendar = "*:0/10";
};
Install = {
WantedBy = ["timers.target"];
};
};
services."waypaper" = {
Unit = {
Description = "Set a random wallpaper with waypaper";
};
Service = {
Type = "oneshot";
ExecStart = lib.escapeShellArgs [
(lib.getExe pkgs.waypaper)
"--random"
];
};
};
};
};
}

View file

@ -1,55 +0,0 @@
{
config,
pkgs,
lib,
...
}: let
cfg = config.youthlic.programs.wluma;
in {
options = {
youthlic.programs.wluma = {
enable = lib.mkEnableOption "wluma";
config = lib.mkOption {
type = lib.types.path;
example = ./config.toml;
description = ''
path to config file of wluma
'';
};
package = lib.mkOption {
type = lib.types.package;
example = pkgs.wluam;
default = pkgs.wluma;
description = ''
package of wluma
'';
};
};
};
config = lib.mkIf cfg.enable {
home.packages = [
cfg.package
];
xdg.configFile."wluma/config.toml" = {
enable = true;
source = cfg.config;
};
systemd.user.services.wluma = {
Unit = {
Description = "Adjusting screen brightness based on screen contents and amount of ambient light";
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
};
Service = {
ExecStart = ["${lib.getExe cfg.package}"];
Restart = "always";
EnvironmentFile = ["-%E/wluma/service.conf"];
PrivateNetwork = true;
PrivateMounts = false;
};
Install = {
WantedBy = ["graphical-session.target"];
};
};
};
}

View file

@ -1,117 +0,0 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.youthlic.programs.zed-editor;
in {
options = {
youthlic.programs.zed-editor = {
enable = lib.mkEnableOption "zed-editor";
};
};
config = lib.mkIf cfg.enable {
stylix.targets.zed.enable = false;
programs.zed-editor = {
enable = true;
extensions = [
"asciidoc"
"basher"
"cargo-tom"
"deno"
"docker-compose"
"dockerfile"
"fish"
"git-firefly"
"golangci-lint"
"haskell"
"html"
"hurl"
"idris2"
"java"
"java-eclipse-jdtls"
"kdl"
"kotlin"
"lua"
"make"
"markdown-oxide"
"neocmake"
"nix"
"python-refactoring"
"python-requirements"
"scheme"
"toml"
"typst"
"xml"
"zig"
"typos"
"ty"
"ruff"
];
extraPackages = with pkgs; [
editor-runtime
];
userSettings = {
lsp = {
ty = {
binary = {
path = lib.getExe pkgs.ty;
arguments = ["server"];
};
};
};
languages = {
Python = {
language_servers = ["ty" "ruff" "pyright"];
formatter = [
{
language_server = {
name = "ruff";
};
}
{
code_actions = {
"source.fixAll.ruff" = true;
"source.organizeImports.ruff" = true;
};
}
];
};
Nix = {
language_servers = ["nixd" "nil"];
formatter = {
external = {
command = "alejandra";
arguments = ["--quiet" "--"];
};
};
};
};
soft_wrap = "editor_width";
autosave = "on_focus_change";
auto_update = false;
calls = {
mute_on_join = true;
share_on_join = false;
};
"format_on_save" = "off";
ui_font_size = 20;
buffer_font_size = 20;
buffer_font_family = "Maple Mono NF CN";
buffer_font_features = {
"calt" = true;
"zero" = true;
"cv03" = true;
"ss08" = true;
};
ui_font_family = "Source Han Sans SC";
theme = "Gruvbox Dark Hard";
vim_mode = true;
vim = {
# default_mode = "helix_normal";
};
};
};
};
}