Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles
This commit is contained in:
@@ -43,14 +43,12 @@ pkgs: rec {
|
|||||||
code = {
|
code = {
|
||||||
name = "JetBrainsMono Nerd Font";
|
name = "JetBrainsMono Nerd Font";
|
||||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
package = pkgs.nerd-fonts.jetbrains-mono;
|
||||||
# name = "CascadiaCove-NF";
|
|
||||||
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
|
|
||||||
};
|
};
|
||||||
base = {
|
base = {
|
||||||
# name = "NewComputerModern08";
|
# name = "NewComputerModern08";
|
||||||
# package = pkgs.newcomputermodern;
|
# package = pkgs.newcomputermodern;
|
||||||
name = "Atkinson Hyperlegible";
|
name = "Atkinson Hyperlegible";
|
||||||
package = pkgs.atkinson-hyperlegible;
|
package = pkgs.atkinson-hyperlegible-next;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
cursor = {
|
cursor = {
|
||||||
|
|||||||
Binary file not shown.
807
home-modules/bar.nix
Normal file
807
home-modules/bar.nix
Normal file
@@ -0,0 +1,807 @@
|
|||||||
|
{ pkgs, hyper, ... }@all: with all; let
|
||||||
|
sep = " ";
|
||||||
|
in {
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/radicale/password" = { };
|
||||||
|
};
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellApplication { name = "submap_indicator"; text = /*bash*/ ''
|
||||||
|
print_help() {
|
||||||
|
echo "Usage: submap_indicator {set <string>|unset}"
|
||||||
|
}
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
print_help; exit 1;
|
||||||
|
fi
|
||||||
|
case "$1" in
|
||||||
|
set)
|
||||||
|
# Check if there is a second argument for the 'set' operation
|
||||||
|
if [ $# -eq 2 ]; then
|
||||||
|
echo "$2" > /tmp/submap-indictor
|
||||||
|
pkill -RTMIN+8 waybar
|
||||||
|
pkill -RTMIN+8 hyprpanel
|
||||||
|
else
|
||||||
|
echo "Error: 'set' operation requires exactly one string argument."
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
unset)
|
||||||
|
echo "" > /tmp/submap-indictor
|
||||||
|
pkill -RTMIN+8 waybar
|
||||||
|
pkill -RTMIN+8 hyprpanel
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown command '$1'"
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
||||||
|
'';})
|
||||||
|
(pkgs.writeShellApplication { name = "cclock"; text = /*bash*/ ''
|
||||||
|
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
echo "${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
|
||||||
|
elif [ "$1" = "--no-icons" ]; then
|
||||||
|
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
|
||||||
|
fi
|
||||||
|
'';})
|
||||||
|
|
||||||
|
(pkgs.writers.writePython3Bin "caldav_event" {
|
||||||
|
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
||||||
|
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
|
||||||
|
} /* python */ ''
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
from caldav import DAVClient
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
from ics import Calendar
|
||||||
|
from pytz import UTC
|
||||||
|
|
||||||
|
def get_password(password_file):
|
||||||
|
with open(password_file, "r") as file:
|
||||||
|
return file.read().strip()
|
||||||
|
|
||||||
|
def datetime_converter(obj):
|
||||||
|
if isinstance(obj, datetime):
|
||||||
|
return obj.isoformat()
|
||||||
|
return obj
|
||||||
|
|
||||||
|
def datetime_parser(dct):
|
||||||
|
for key, value in dct.items():
|
||||||
|
if isinstance(value, str):
|
||||||
|
try:
|
||||||
|
dct[key] = datetime.fromisoformat(value)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
return dct
|
||||||
|
|
||||||
|
def load_cache(cache_file):
|
||||||
|
if os.path.exists(cache_file):
|
||||||
|
with open(cache_file, "r") as file:
|
||||||
|
return json.load(file, object_hook=datetime_parser)
|
||||||
|
return None
|
||||||
|
|
||||||
|
def save_cache(cache_file, data):
|
||||||
|
with open(cache_file, "w") as file:
|
||||||
|
json.dump(data, file, default=datetime_converter, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
def get_ongoing_or_next_event(url, username, password):
|
||||||
|
now = datetime.now(timezone.utc)
|
||||||
|
|
||||||
|
try:
|
||||||
|
client = DAVClient(url, username=username, password=password)
|
||||||
|
principal = client.principal()
|
||||||
|
calendars = principal.calendars()
|
||||||
|
|
||||||
|
next_event_dict = {
|
||||||
|
'event_name': "fake",
|
||||||
|
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
|
||||||
|
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
|
||||||
|
}
|
||||||
|
|
||||||
|
for calendar in calendars:
|
||||||
|
for event in calendar.search(start=now):
|
||||||
|
calendar_parsed = Calendar(event.data)
|
||||||
|
for ics_event in calendar_parsed.events:
|
||||||
|
event_dict = {}
|
||||||
|
event_dict['event_name'] = ics_event.name or "(No Title)"
|
||||||
|
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
|
||||||
|
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
|
||||||
|
|
||||||
|
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
|
||||||
|
return event_dict
|
||||||
|
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
|
||||||
|
next_event_dict = event_dict
|
||||||
|
return next_event_dict
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error accessing {url}: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def is_expired(event_dict: dict):
|
||||||
|
now = datetime.now(timezone.utc).timestamp()
|
||||||
|
event_end = event_dict['event_end'].timestamp()
|
||||||
|
return not (now <= event_end)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
|
||||||
|
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||||
|
url = "https://dav.${hyper.domain}/"
|
||||||
|
username = "nx2"
|
||||||
|
password = get_password(password_file)
|
||||||
|
now = datetime.now(timezone.utc).timestamp()
|
||||||
|
|
||||||
|
event_dict = load_cache(cache_file)
|
||||||
|
|
||||||
|
if (event_dict is None) or (is_expired(event_dict)):
|
||||||
|
event_dict = get_ongoing_or_next_event(url, username, password)
|
||||||
|
save_cache(cache_file, event_dict)
|
||||||
|
|
||||||
|
if event_dict is None: # none were found
|
||||||
|
print("* zen *")
|
||||||
|
exit(0)
|
||||||
|
|
||||||
|
event_start = event_dict['event_begin'].timestamp()
|
||||||
|
event_end = event_dict['event_end'].timestamp()
|
||||||
|
|
||||||
|
if event_start <= now <= event_end: # is currently ongoing
|
||||||
|
action_string = "ends"
|
||||||
|
t = event_end - now # time_remaining
|
||||||
|
else: # is in the future
|
||||||
|
action_string = "starts"
|
||||||
|
t = event_start - now # time_remaining
|
||||||
|
|
||||||
|
hours, rem = divmod(int(t), 3600)
|
||||||
|
minutes, _ = divmod(rem, 60)
|
||||||
|
hour_string = f"{hours} hour{'s ' if hours != 1 else ' '}" if hours > 0 else ""
|
||||||
|
minu_string = f"{minutes} minute{'s ' if minutes != 1 else ' '}" if minutes > 0 else ""
|
||||||
|
if hour_string == "" and minu_string == "":
|
||||||
|
time_string = "now"
|
||||||
|
elif hour_string == "" or minu_string == "":
|
||||||
|
time_string = "in " + hour_string + minu_string
|
||||||
|
else:
|
||||||
|
time_string = "in " + hour_string + "and " + minu_string
|
||||||
|
|
||||||
|
print(f"{event_dict['event_name']} {action_string} {time_string}")
|
||||||
|
'')
|
||||||
|
];
|
||||||
|
programs = {
|
||||||
|
waybar = {
|
||||||
|
enable = false;
|
||||||
|
package = pkgs.waybar;
|
||||||
|
settings = {
|
||||||
|
bar = {
|
||||||
|
# height = 20;
|
||||||
|
layer = "top";
|
||||||
|
position = "bottom";
|
||||||
|
margin-top = 0;
|
||||||
|
# margin-left = rice.gap-size;
|
||||||
|
# margin-bottom = rice.gap-size;
|
||||||
|
# margin-right = rice.gap-size;
|
||||||
|
margin-left = 0;
|
||||||
|
margin-bottom = 0;
|
||||||
|
margin-right = 0;
|
||||||
|
spacing = 10;
|
||||||
|
fixed-center = true;
|
||||||
|
modules-left = [
|
||||||
|
# "cpu"
|
||||||
|
# "memory"
|
||||||
|
"wireplumber"
|
||||||
|
"backlight"
|
||||||
|
"battery"
|
||||||
|
"network"
|
||||||
|
"hyprland/window"
|
||||||
|
];
|
||||||
|
modules-center = [
|
||||||
|
"hyprland/workspaces"
|
||||||
|
];
|
||||||
|
modules-right = [
|
||||||
|
"custom/mode"
|
||||||
|
"custom/caldav_event"
|
||||||
|
"custom/cclock"
|
||||||
|
"tray"
|
||||||
|
];
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
on-click = "activate";
|
||||||
|
format = "{name}";
|
||||||
|
all-outputs = false;
|
||||||
|
active-only = false;
|
||||||
|
};
|
||||||
|
"hyprland/window" = {
|
||||||
|
# format = "${sep}{}";
|
||||||
|
format = "{}";
|
||||||
|
separate-outputs = true;
|
||||||
|
};
|
||||||
|
"custom/cclock" = {
|
||||||
|
exec = "cclock";
|
||||||
|
restart-interval = 60;
|
||||||
|
};
|
||||||
|
"custom/caldav_event" = {
|
||||||
|
format = "${sep}{}";
|
||||||
|
exec = "caldav_event";
|
||||||
|
restart-interval = 60;
|
||||||
|
max-width = 60;
|
||||||
|
};
|
||||||
|
"custom/mode" = {
|
||||||
|
exec = "cat /tmp/submap-indictor";
|
||||||
|
interval = "once";
|
||||||
|
signal = 8;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu = {
|
||||||
|
interval = 1;
|
||||||
|
format = "${sep}{}%";
|
||||||
|
max-length = 10;
|
||||||
|
};
|
||||||
|
memory = {
|
||||||
|
interval = 5;
|
||||||
|
format = "${sep}{avail:.0f}G free";
|
||||||
|
};
|
||||||
|
battery = {
|
||||||
|
interval = 60;
|
||||||
|
tooltip = false;
|
||||||
|
format = "{icon}${sep}{capacity}%";
|
||||||
|
states = {
|
||||||
|
warning = 15;
|
||||||
|
critical = 5;
|
||||||
|
};
|
||||||
|
format-icons = [ " " " " " " " " " " ];
|
||||||
|
format-charging = "{icon}${sep}+{capacity}%";
|
||||||
|
format-plugged = "{icon}${sep}P{capacity}%";
|
||||||
|
format-full = "{icon}${sep}F{capacity}%";
|
||||||
|
};
|
||||||
|
backlight = {
|
||||||
|
device = "eDP-1";
|
||||||
|
format = "{icon}${sep}{percent}%";
|
||||||
|
format-icons = [ "" "" "" "" "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
network = {
|
||||||
|
format-wifi = "${sep}{essid}";
|
||||||
|
format-ethernet = "${sep}Wired";
|
||||||
|
format-disconnected = "${sep}Disconnected";
|
||||||
|
};
|
||||||
|
wireplumber = {
|
||||||
|
format = "${sep}{volume}%";
|
||||||
|
format-muted = "${sep}--%";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in /* css */ ''
|
||||||
|
* {
|
||||||
|
font-family: ${rice.font.code.name};
|
||||||
|
font-size: 1em;
|
||||||
|
min-height: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: rgba(${f background},${builtins.toString rice.transparency});
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock,
|
||||||
|
#custom-cclock,
|
||||||
|
#custom-mode,
|
||||||
|
#custom-caldav-event,
|
||||||
|
#battery,
|
||||||
|
#cpu,
|
||||||
|
#tray,
|
||||||
|
#disk,
|
||||||
|
#backlight,
|
||||||
|
#network,
|
||||||
|
#wireplumber,
|
||||||
|
#memory,
|
||||||
|
#window,
|
||||||
|
#workspaces {
|
||||||
|
padding: 0px 3px;
|
||||||
|
margin-top: 0.3em;
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
color: rgb(${f accent.bright});
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
color: rgb(${f accent.base});
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
}
|
||||||
|
#workspaces button.active { color: rgb(${f background}); background-color: rgb(${f accent.base}); }
|
||||||
|
#workspaces button:hover { color: rgb(${f tertiary.bright}); }
|
||||||
|
#workspaces button.urgent { background-color: rgba(${f magenta.base},${builtins.toString rice.transparency}); }
|
||||||
|
|
||||||
|
#window, #custom-caldav_event {
|
||||||
|
font-family: ${rice.font.base.name}, ${rice.font.code.name};
|
||||||
|
color: rgb(${f tertiary.bright});
|
||||||
|
}
|
||||||
|
|
||||||
|
#wireplumber.muted { color: rgb(${f tertiary.bright}); }
|
||||||
|
#wireplumber { padding-left: 10px; }
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) { color: rgb(${f green.base});; }
|
||||||
|
#battery.charging { color: rgb(${f green.base}); }
|
||||||
|
#battery.critical {
|
||||||
|
background: rgb(${f negative.base});
|
||||||
|
color: rgb(${f foreground});
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-mode { color: rgb(${f red.base}); }
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
hyprpanel = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.unstable.hyprpanel;
|
||||||
|
settings = with rice.color; let
|
||||||
|
t = builtins.toString (builtins.ceil (rice.transparency * 100));
|
||||||
|
in {
|
||||||
|
"bar.layouts" = {
|
||||||
|
"*" = {
|
||||||
|
"left" = [
|
||||||
|
"volume"
|
||||||
|
# "microphone"
|
||||||
|
# "cpu"
|
||||||
|
# "cputemp"
|
||||||
|
# "ram"
|
||||||
|
"battery"
|
||||||
|
# "bluetooth"
|
||||||
|
"network"
|
||||||
|
"windowtitle"
|
||||||
|
];
|
||||||
|
"middle" = [ "workspaces" ];
|
||||||
|
"right" = [
|
||||||
|
"submap"
|
||||||
|
"custom/caldav_event"
|
||||||
|
"media"
|
||||||
|
"custom/cclock"
|
||||||
|
"notifications"
|
||||||
|
"systray"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"bar.bluetooth.label" = true;
|
||||||
|
|
||||||
|
"bar.customModules.submap.enabledIcon" = "[]";
|
||||||
|
"bar.customModules.submap.showSubmapName" = false;
|
||||||
|
"bar.customModules.submap.label" = false;
|
||||||
|
"bar.customModules.submap.icon" = true;
|
||||||
|
"bar.customModules.submap.disabledIcon" = "";
|
||||||
|
|
||||||
|
"bar.workspaces.applicationIconOncePerWorkspace" = false;
|
||||||
|
"bar.workspaces.numbered_active_indicator" = "underline";
|
||||||
|
"bar.workspaces.scroll_speed" = 1;
|
||||||
|
"bar.workspaces.showAllActive" = false;
|
||||||
|
"bar.workspaces.showApplicationIcons" = true;
|
||||||
|
"bar.workspaces.show_icons" = false;
|
||||||
|
"bar.workspaces.show_numbered" = false;
|
||||||
|
"bar.workspaces.showWsIcons" = true;
|
||||||
|
"bar.workspaces.spacing" = 1;
|
||||||
|
"bar.workspaces.workspaceMask" = true;
|
||||||
|
"bar.workspaces.workspaces" = 5;
|
||||||
|
|
||||||
|
"theme.bar.background" = background;
|
||||||
|
"theme.bar.border.color" = accent.base;
|
||||||
|
"theme.bar.border_radius" = "0.2em";
|
||||||
|
|
||||||
|
"theme.bar.buttons.background" = background;
|
||||||
|
"theme.bar.buttons.background_opacity" = 0;
|
||||||
|
"theme.bar.buttons.spacing" = "0em";
|
||||||
|
"theme.bar.buttons.padding_x" = "0.5rem";
|
||||||
|
|
||||||
|
"theme.bar.buttons.battery.background" = background;
|
||||||
|
"theme.bar.buttons.battery.border" = accent.base;
|
||||||
|
"theme.bar.buttons.battery.icon_background" = background;
|
||||||
|
"theme.bar.buttons.battery.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.battery.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.bluetooth.background" = background;
|
||||||
|
"theme.bar.buttons.bluetooth.border" = accent.base;
|
||||||
|
"theme.bar.buttons.bluetooth.icon_background" = background;
|
||||||
|
"theme.bar.buttons.bluetooth.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.bluetooth.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.borderColor" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.clock.background" = background;
|
||||||
|
"theme.bar.buttons.clock.border" = accent.base;
|
||||||
|
"theme.bar.buttons.clock.icon_background" = background;
|
||||||
|
"theme.bar.buttons.clock.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.clock.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.dashboard.background" = background;
|
||||||
|
"theme.bar.buttons.dashboard.border" = accent.base;
|
||||||
|
"theme.bar.buttons.dashboard.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.icon_background" = background;
|
||||||
|
|
||||||
|
"theme.bar.buttons.icon" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.media.background" = background;
|
||||||
|
"theme.bar.buttons.media.border" = accent.base;
|
||||||
|
"theme.bar.buttons.media.icon_background" = background;
|
||||||
|
"theme.bar.buttons.media.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.media.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.cava.background" = background;
|
||||||
|
"theme.bar.buttons.modules.cava.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cava.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.cava.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cava.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.cpu.background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpu.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpu.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpu.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpu.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.cpuTemp.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.hypridle.background" = background;
|
||||||
|
"theme.bar.buttons.modules.hypridle.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hypridle.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.hypridle.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hypridle.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.background" = background;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.hyprsunset.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.kbLayout.background" = background;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.kbLayout.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.microphone.background" = background;
|
||||||
|
"theme.bar.buttons.modules.microphone.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.microphone.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.microphone.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.microphone.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.netstat.background" = background;
|
||||||
|
"theme.bar.buttons.modules.netstat.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.netstat.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.netstat.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.netstat.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.power.background" = background;
|
||||||
|
"theme.bar.buttons.modules.power.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.power.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.power.icon" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.ram.background" = background;
|
||||||
|
"theme.bar.buttons.modules.ram.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.ram.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.ram.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.ram.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.storage.background" = background;
|
||||||
|
"theme.bar.buttons.modules.storage.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.storage.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.storage.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.storage.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.submap.background" = background;
|
||||||
|
"theme.bar.buttons.modules.submap.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.submap.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.submap.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.submap.text" = special.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.updates.background" = background;
|
||||||
|
"theme.bar.buttons.modules.updates.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.updates.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.updates.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.updates.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.weather.background" = background;
|
||||||
|
"theme.bar.buttons.modules.weather.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.weather.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.weather.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.weather.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.modules.worldclock.background" = background;
|
||||||
|
"theme.bar.buttons.modules.worldclock.border" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.worldclock.icon_background" = background;
|
||||||
|
"theme.bar.buttons.modules.worldclock.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.modules.worldclock.text" = accent.base;
|
||||||
|
"theme.bar.buttons.monochrome" = false;
|
||||||
|
|
||||||
|
"theme.bar.buttons.network.background" = background;
|
||||||
|
"theme.bar.buttons.network.border" = accent.base;
|
||||||
|
"theme.bar.buttons.network.icon_background" = background;
|
||||||
|
"theme.bar.buttons.network.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.network.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.notifications.background" = background;
|
||||||
|
"theme.bar.buttons.notifications.border" = accent.base;
|
||||||
|
"theme.bar.buttons.notifications.icon_background" = background;
|
||||||
|
"theme.bar.buttons.notifications.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.notifications.total" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.opacity" = t;
|
||||||
|
|
||||||
|
"theme.bar.buttons.separator.color" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.style" = "default";
|
||||||
|
|
||||||
|
"theme.bar.buttons.systray.background" = background;
|
||||||
|
"theme.bar.buttons.systray.border" = accent.base;
|
||||||
|
"theme.bar.buttons.systray.customIcon" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.volume.background" = background;
|
||||||
|
"theme.bar.buttons.volume.border" = accent.base;
|
||||||
|
"theme.bar.buttons.volume.icon_background" = background;
|
||||||
|
"theme.bar.buttons.volume.icon" = accent.base;
|
||||||
|
"theme.bar.buttons.volume.text" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.windowtitle.background" = background;
|
||||||
|
"theme.bar.buttons.windowtitle.border" = secondary.base;
|
||||||
|
"theme.bar.buttons.windowtitle.icon_background" = background;
|
||||||
|
"theme.bar.buttons.windowtitle.icon" = secondary.base;
|
||||||
|
"theme.bar.buttons.windowtitle.text" = secondary.base;
|
||||||
|
|
||||||
|
"theme.bar.buttons.workspaces.active" = accent.bright;
|
||||||
|
"theme.bar.buttons.workspaces.available" = accent.base;
|
||||||
|
"theme.bar.buttons.workspaces.background" = background;
|
||||||
|
"theme.bar.buttons.workspaces.border" = accent.base;
|
||||||
|
"theme.bar.buttons.workspaces.hover" = foreground;
|
||||||
|
"theme.bar.buttons.workspaces.numbered_active_highlighted_text_color" = accent.base;
|
||||||
|
"theme.bar.buttons.workspaces.numbered_active_highlight_padding" = "0.2em";
|
||||||
|
"theme.bar.buttons.workspaces.numbered_active_underline_color" = accent.bright;
|
||||||
|
"theme.bar.buttons.workspaces.numbered_inactive_padding" = "0.2em";
|
||||||
|
"theme.bar.buttons.workspaces.occupied" = secondary.base;
|
||||||
|
"theme.bar.buttons.workspaces.pill.width" = "4em";
|
||||||
|
"theme.bar.buttons.workspaces.smartHighlight" = true;
|
||||||
|
"theme.bar.buttons.y_margins" = "0em";
|
||||||
|
|
||||||
|
"theme.bar.location" = "bottom";
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.battery.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.battery.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.battery.icons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.icons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.slider.background" = background;
|
||||||
|
"theme.bar.menus.menu.battery.slider.backgroundhover" = background;
|
||||||
|
"theme.bar.menus.menu.battery.slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.slider.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.battery.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.bluetooth.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.bluetooth.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.bluetooth.iconbutton.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.iconbutton.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.icons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.icons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.scroller.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.status" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch_divider" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.switch.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.bluetooth.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.clock.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.clock.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.contextdays" = foreground;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.currentday" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.days" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.paginator" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.weekdays" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.calendar.yearmonth" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.clock.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.clock.time.time" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.time.timeperiod" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.hourly.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.hourly.temperature" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.hourly.time" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.stats" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.status" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.temperature" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.cold" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.extremelycold" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.extremelyhot" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.hot" = accent.base;
|
||||||
|
"theme.bar.menus.menu.clock.weather.thermometer.moderate" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.card.color" = accent.dark;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.bluetooth.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.bluetooth.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.input.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.input.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.notifications.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.notifications.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.volume.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.volume.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.wifi.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.controls.wifi.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.left.bottom.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.left.middle.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.left.top.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.right.bottom.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.right.middle.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.directories.right.top.color" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.bar_background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.cpu.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.cpu.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.cpu.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.disk.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.disk.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.disk.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.gpu.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.gpu.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.gpu.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.ram.bar" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.ram.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.monitors.ram.label" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.body" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.border" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.button_text" = foreground;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.card" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.confirm" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.deny" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.confirmation.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.logout" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.restart" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.shutdown" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.powermenu.sleep" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.profile.name" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.shortcuts.background" = background;
|
||||||
|
"theme.bar.menus.menu.dashboard.shortcuts.recording" = accent.base;
|
||||||
|
"theme.bar.menus.menu.dashboard.shortcuts.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.media.album" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.artist" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.background.color" = "#000000";
|
||||||
|
"theme.bar.menus.menu.media.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.buttons.background" = background;
|
||||||
|
"theme.bar.menus.menu.media.buttons.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.buttons.inactive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.buttons.text" = foreground;
|
||||||
|
"theme.bar.menus.menu.media.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.media.card.tint" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.media.slider.background" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.media.slider.backgroundhover" = secondary.dark;
|
||||||
|
"theme.bar.menus.menu.media.slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.slider.puck" = accent.bright;
|
||||||
|
"theme.bar.menus.menu.media.song" = accent.base;
|
||||||
|
"theme.bar.menus.menu.media.timestamp" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.network.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.network.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.network.iconbuttons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.iconbuttons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.icons.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.icons.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.scroller.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.status.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.switch.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.switch.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.switch.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.network.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.notifications.background" = background;
|
||||||
|
"theme.bar.menus.menu.notifications.border" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.card" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.notifications.clear" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.no_notifications_label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.pager.background" = background;
|
||||||
|
"theme.bar.menus.menu.notifications.pager.button" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.notifications.pager.label" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.scrollbar.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch.disabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch_divider" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch.enabled" = accent.base;
|
||||||
|
"theme.bar.menus.menu.notifications.switch.puck" = accent.base;
|
||||||
|
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.power.border.color" = accent.base;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.logout.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.restart.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.shutdown.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.icon_background" = background;
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.icon" = accent.base;
|
||||||
|
"theme.bar.menus.menu.power.buttons.sleep.text" = foreground;
|
||||||
|
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.systray.dropdownmenu.background" = background;
|
||||||
|
"theme.bar.menus.menu.systray.dropdownmenu.divider" = accent.base;
|
||||||
|
"theme.bar.menus.menu.systray.dropdownmenu.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.background" = background;
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.backgroundhover" = background;
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.audio_slider.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.background.color" = background;
|
||||||
|
"theme.bar.menus.menu.volume.border.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.card.color" = accent.dark;
|
||||||
|
"theme.bar.menus.menu.volume.iconbutton.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.iconbutton.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.background" = background;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.backgroundhover" = background;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.primary" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.input_slider.puck" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.label.color" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.listitems.active" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.listitems.passive" = accent.base;
|
||||||
|
"theme.bar.menus.menu.volume.text" = foreground;
|
||||||
|
|
||||||
|
"theme.bar.menus.monochrome" = false;
|
||||||
|
|
||||||
|
"theme.bar.opacity" = t;
|
||||||
|
"theme.bar.outer_spacing" = "0em";
|
||||||
|
"theme.bar.transparent" = false;
|
||||||
|
|
||||||
|
"theme.font.name" = rice.font.code.name;
|
||||||
|
"theme.font.size" = "12px";
|
||||||
|
|
||||||
|
"theme.notification.actions.background" = background;
|
||||||
|
"theme.notification.actions.text" = foreground;
|
||||||
|
"theme.notification.background" = background;
|
||||||
|
"theme.notification.border" = accent.base;
|
||||||
|
"theme.notification.close_button.background" = accent.dark;
|
||||||
|
"theme.notification.close_button.label" = accent.base;
|
||||||
|
"theme.notification.label" = accent.base;
|
||||||
|
"theme.notification.labelicon" = accent.base;
|
||||||
|
"theme.notification.opacity" = 1.0;
|
||||||
|
"theme.notification.text" = foreground;
|
||||||
|
"theme.notification.time" = accent.base;
|
||||||
|
|
||||||
|
"theme.osd.bar_color" = accent.base;
|
||||||
|
"theme.osd.bar_container" = accent.dark;
|
||||||
|
"theme.osd.bar_empty_color" = accent.dark;
|
||||||
|
"theme.osd.bar_overflow_color" = accent.base;
|
||||||
|
"theme.osd.border.color" = border;
|
||||||
|
"theme.osd.icon_container" = secondary.dark;
|
||||||
|
"theme.osd.icon" = secondary.bright;
|
||||||
|
"theme.osd.label" = accent.bright;
|
||||||
|
"theme.osd.opacity" = t;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -47,13 +47,6 @@
|
|||||||
read-only = true;
|
read-only = true;
|
||||||
type = "ics";
|
type = "ics";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
name = "MSI";
|
|
||||||
url = "https://zlypher.github.io/lol-events/cal/league-of-legends-mid-invitational.ical";
|
|
||||||
color = "#dd6000";
|
|
||||||
read-only = true;
|
|
||||||
type = "ics";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
name = "Feiertage Hessen";
|
name = "Feiertage Hessen";
|
||||||
url = "https://ics.tools/Feiertage/hessen.ics";
|
url = "https://ics.tools/Feiertage/hessen.ics";
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ let
|
|||||||
# "Caedrel"
|
# "Caedrel"
|
||||||
# "EintrachtSpandau"
|
# "EintrachtSpandau"
|
||||||
"GamesDoneQuick"
|
"GamesDoneQuick"
|
||||||
|
"Odoamne"
|
||||||
|
"iwdominate"
|
||||||
|
"imls"
|
||||||
"gdolphn"
|
"gdolphn"
|
||||||
"GRONKH"
|
"GRONKH"
|
||||||
"handofblood"
|
"handofblood"
|
||||||
@@ -74,18 +77,27 @@ in {
|
|||||||
"separateMessages": true,
|
"separateMessages": true,
|
||||||
"showTimestamps": false,
|
"showTimestamps": false,
|
||||||
"timestampFormat": "h =mm",
|
"timestampFormat": "h =mm",
|
||||||
"usernameDisplayMode": 1
|
"usernameDisplayMode": 1,
|
||||||
|
"findAllUsernames": true
|
||||||
},
|
},
|
||||||
|
"showReplyButton": false,
|
||||||
|
"showTabCloseButton": false,
|
||||||
|
"showTabLiveButton": false,
|
||||||
"splitheader": {
|
"splitheader": {
|
||||||
"showGame": true,
|
"showGame": true,
|
||||||
"showTitle": true,
|
"showTitle": true,
|
||||||
"showUptime": true,
|
"showUptime": true,
|
||||||
"showViewerCount": true
|
"showViewerCount": true
|
||||||
},
|
},
|
||||||
|
"tabStyle": "compact",
|
||||||
"tabVisibility": 0,
|
"tabVisibility": 0,
|
||||||
"theme": { "name": "nxtheme.json" }
|
"theme": { "name": "nxtheme.json" }
|
||||||
},
|
},
|
||||||
"behaviour": {
|
"behaviour": {
|
||||||
|
"autocopletion": {
|
||||||
|
"ShowUsernameCompeltionMenu": false,
|
||||||
|
"userCompletinOnlyWithAt": true
|
||||||
|
},
|
||||||
"pauseOnHoverDuration": 5.0,
|
"pauseOnHoverDuration": 5.0,
|
||||||
"showJoins": false,
|
"showJoins": false,
|
||||||
"usernameRightClickBehavior": 0,
|
"usernameRightClickBehavior": 0,
|
||||||
@@ -100,13 +112,13 @@ in {
|
|||||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
|
{ "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
|
{ "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
{ "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
|
{ "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
{ "alert": false, "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
|
{ "alert": false, "color": "#7f7f3f49", "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
|
||||||
{ "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
|
{ "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
|
||||||
],
|
],
|
||||||
"selfMessageHighlight": { "color": "#73008cff", "enabled": true }
|
"selfMessageHighlight": { "color": "#73008cff", "enabled": true }
|
||||||
},
|
},
|
||||||
"hotkeys": {
|
"hotkeys": {
|
||||||
"addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
|
"addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open overlay", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle overlay click-through", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
|
||||||
|
|
||||||
"change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
|
"change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
|
||||||
"close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
|
"close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
|
||||||
@@ -127,6 +139,7 @@ in {
|
|||||||
"new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
|
"new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
|
||||||
"next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
|
"next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
|
||||||
"open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
|
"open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
|
||||||
|
"open overlay": { "action": "popupOverlay", "arguments": [], "category": "split", "keySequence": "Ctrl+Alt+N" },
|
||||||
"open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
|
"open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
|
||||||
"open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
|
"open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
|
||||||
"popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
|
"popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
|
||||||
@@ -169,14 +182,15 @@ in {
|
|||||||
"send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
|
"send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
|
||||||
"show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
|
"show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
|
||||||
"show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
|
"show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
|
||||||
"toggle live tabs only": { "action": "setTabVisibility", "arguments": [ "toggleLiveOnly" ], "category": "window", "keySequence": "Ctrl+Shift+L" },
|
|
||||||
"toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
|
"toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
|
||||||
|
"toggle overlay click-through": { "action": "toggleOverlayInertia", "arguments": [ "all" ], "category": "split", "keySequence": "Ctrl+Shift+U" },
|
||||||
"toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
|
"toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
|
||||||
"zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
|
"zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
|
||||||
"zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
|
"zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
|
||||||
"zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
|
"zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
|
||||||
},
|
},
|
||||||
"misc": {
|
"misc": {
|
||||||
|
"askOnTabVisibilityToggle": false,
|
||||||
"currentVersion": "2.5.3",
|
"currentVersion": "2.5.3",
|
||||||
"lockNotebookLayout": false
|
"lockNotebookLayout": false
|
||||||
},
|
},
|
||||||
@@ -193,7 +207,7 @@ in {
|
|||||||
"external": {
|
"external": {
|
||||||
"streamlink": {
|
"streamlink": {
|
||||||
"quality": "",
|
"quality": "",
|
||||||
"options": "--config ${hyper.home}/.config/streamlink/config"
|
"options": "--config ${hyper.home}.config/streamlink/config"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -315,10 +329,9 @@ in {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
".config/streamlink/config".text = ''
|
".config/streamlink/config".text = /* ini */ ''
|
||||||
twitch-api-header=Authorization=OAuth='$(cat ${config.sops.secrets."streamlink/twitch-oauth".path})'
|
twitch-api-header=Authorization=OAuth ${secrets.streamlink.twitch-oauth}
|
||||||
player=mpv
|
player=mpv
|
||||||
player-args='--no-terminal'
|
|
||||||
twitch-low-latency
|
twitch-low-latency
|
||||||
default-stream=best
|
default-stream=best
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ lib.mkIf (hyper.host != "NxACE")
|
|||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# vesktop
|
vesktop
|
||||||
discord
|
# discord
|
||||||
];
|
];
|
||||||
|
|
||||||
# file.".config/vesktop/settings/settings.json".text = let
|
# file.".config/vesktop/settings/settings.json".text = let
|
||||||
|
|||||||
@@ -137,37 +137,37 @@ lib.mkIf (hyper.host != "NxACE")
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hsmw = with secrets.email.hsmw; {
|
# hsmw = with secrets.email.hsmw; {
|
||||||
address = "${un}@hs-mittweida.de";
|
# address = "${un}@hs-mittweida.de";
|
||||||
userName = "${un}@hs-mittweida.de";
|
# userName = "${un}@hs-mittweida.de";
|
||||||
realName = "Lennart J. Kurzweg";
|
# realName = "Lennart J. Kurzweg";
|
||||||
imap = {
|
# imap = {
|
||||||
port = 993;
|
# port = 993;
|
||||||
host = "xc.hs-mittweida.de";
|
# host = "xc.hs-mittweida.de";
|
||||||
};
|
# };
|
||||||
smtp = {
|
# smtp = {
|
||||||
port = 587;
|
# port = 587;
|
||||||
host = "xc.hs-mittweida.de";
|
# host = "xc.hs-mittweida.de";
|
||||||
tls.useStartTls = true;
|
# tls.useStartTls = true;
|
||||||
};
|
# };
|
||||||
signature = {
|
# signature = {
|
||||||
text = ''
|
# text = ''
|
||||||
MatNr: ${mnr}
|
# MatNr: ${mnr}
|
||||||
SemGr: ${semgr}
|
# SemGr: ${semgr}
|
||||||
About Me: https://nx2.site/about-me
|
# About Me: https://nx2.site/about-me
|
||||||
Contact: https://nx2.site/contact
|
# Contact: https://nx2.site/contact
|
||||||
GPG: https://nx2.site/gpg
|
# GPG: https://nx2.site/gpg
|
||||||
'';
|
# '';
|
||||||
showSignature = "append";
|
# showSignature = "append";
|
||||||
};
|
# };
|
||||||
thunderbird = {
|
# thunderbird = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
profiles = [ "nx2" ];
|
# profiles = [ "nx2" ];
|
||||||
settings = id: {
|
# settings = id: {
|
||||||
"mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
tuda = with secrets.email.tuda; {
|
tuda = with secrets.email.tuda; {
|
||||||
address = "${un}@stud.tu-darmstadt.de";
|
address = "${un}@stud.tu-darmstadt.de";
|
||||||
userName = tuid;
|
userName = tuid;
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
# browser.tabs.allow_transparent_browser
|
# browser.tabs.allow_transparent_browser
|
||||||
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||||
{
|
{
|
||||||
|
programs.firefox.profiles."{hyper.user}".settings = {
|
||||||
|
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||||
|
};
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
firefox
|
firefox
|
||||||
@@ -246,17 +249,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@-moz-document domain(chatgpt.com) {
|
|
||||||
body, html , .bg-token-sidebar-surface-primary {
|
|
||||||
background-color: transparent !important;
|
|
||||||
}
|
|
||||||
.bg-token-main-surface-primary {
|
|
||||||
background-color: rgba(0,0,0,1) !important;
|
|
||||||
backdrop-filter: blur(100px) !important;
|
|
||||||
border-radius: ${builtins.toString rice.rounding}px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
'';
|
||||||
|
# @-moz-document domain(chatgpt.com) {
|
||||||
|
# body, html , .bg-token-sidebar-surface-primary {
|
||||||
|
# background-color: transparent !important;
|
||||||
|
# }
|
||||||
|
# .bg-token-main-surface-primary {
|
||||||
|
# background-color: rgba(0,0,0,1) !important;
|
||||||
|
# backdrop-filter: blur(100px) !important;
|
||||||
|
# border-radius: ${builtins.toString rice.rounding}px !important;
|
||||||
|
# }
|
||||||
|
# }
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
gsw = "git switch";
|
gsw = "git switch";
|
||||||
gft = "git fetch";
|
gft = "git fetch";
|
||||||
ns = "nix-shell";
|
ns = "nix-shell";
|
||||||
|
nd = "nix develop -c fish";
|
||||||
lzd = "lazydocker";
|
lzd = "lazydocker";
|
||||||
d = "docker";
|
d = "docker";
|
||||||
dcmp = "docker compose";
|
dcmp = "docker compose";
|
||||||
@@ -101,6 +102,7 @@
|
|||||||
rm -f -- "$tmp"
|
rm -f -- "$tmp"
|
||||||
end
|
end
|
||||||
nxfetch
|
nxfetch
|
||||||
|
set -e SESSION_FROM_DE
|
||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
functions = {
|
functions = {
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
"https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxWSL") "Test";
|
"https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxWSL") "Test";
|
||||||
};
|
};
|
||||||
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/";
|
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/";
|
||||||
|
url."ssh://git@github.com/".insteadOf = "https://github.com/";
|
||||||
pull.rebase = false; # true
|
pull.rebase = false; # true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -7,10 +7,7 @@
|
|||||||
# nixd # specified in nixd.nix
|
# nixd # specified in nixd.nix
|
||||||
gopls
|
gopls
|
||||||
delve
|
delve
|
||||||
python311Packages.python-lsp-server
|
|
||||||
jdt-language-server
|
jdt-language-server
|
||||||
ruff
|
|
||||||
pyright
|
|
||||||
lldb # debugger for llvm stuff
|
lldb # debugger for llvm stuff
|
||||||
yaml-language-server # yaml
|
yaml-language-server # yaml
|
||||||
marksman # markdown
|
marksman # markdown
|
||||||
@@ -184,7 +181,7 @@
|
|||||||
supersede-menu = false;
|
supersede-menu = false;
|
||||||
};
|
};
|
||||||
inline-diagnostics = {
|
inline-diagnostics = {
|
||||||
cursor-line = "hint";
|
cursor-line = "warning";
|
||||||
other-lines = "disable";
|
other-lines = "disable";
|
||||||
prefix-len = 1;
|
prefix-len = 1;
|
||||||
# max-wrap = set above
|
# max-wrap = set above
|
||||||
|
|||||||
@@ -4,82 +4,31 @@ let
|
|||||||
transparency = builtins.toString rice.transparency;
|
transparency = builtins.toString rice.transparency;
|
||||||
terminal = "ghostty";
|
terminal = "ghostty";
|
||||||
terminal-exec = "ghostty --command=";
|
terminal-exec = "ghostty --command=";
|
||||||
monitors = let
|
monitors = {
|
||||||
docked = false;
|
|
||||||
in {
|
|
||||||
xps = {
|
xps = {
|
||||||
main = if docked then {
|
main = { name = "eDP-1"; resolution = "1920x1200"; position = "0x1080"; scale = "1.0"; };
|
||||||
name = "DP-5";
|
second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
||||||
resolution = "1920x1080";
|
|
||||||
position = "1920x0";
|
|
||||||
scale = "1.0";
|
|
||||||
} else {
|
|
||||||
name = "eDP-1";
|
|
||||||
resolution = "1920x1200";
|
|
||||||
position = "0x1080";
|
|
||||||
scale = "1.0";
|
|
||||||
};
|
|
||||||
second = if docked then {
|
|
||||||
name = "DP-6";
|
|
||||||
resolution = "1920x1080";
|
|
||||||
position = "0x0";
|
|
||||||
scale = "1.0";
|
|
||||||
} else {
|
|
||||||
name = "DP-3";
|
|
||||||
resolution = "1920x1080";
|
|
||||||
position = "0x0";
|
|
||||||
scale = "1.0";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
north = {
|
north = {
|
||||||
main = {
|
main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x150"; scale = "1.0"; };
|
||||||
name = "DP-1";
|
left = { name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
||||||
# name = "DP-4";
|
# right = { name = "HDMI-A-2"; resolution = "1920x1080"; position = "4480x360"; scale = "1.0"; };
|
||||||
resolution = "2560x1440";
|
|
||||||
position = "1920x150";
|
|
||||||
scale = "1.0";
|
|
||||||
};
|
|
||||||
left = {
|
|
||||||
# name = "HDMI-A-2";
|
|
||||||
name = "HDMI-A-1";
|
|
||||||
resolution = "1920x1080";
|
|
||||||
position = "0x0";
|
|
||||||
scale = "1.0";
|
|
||||||
};
|
|
||||||
# right = {
|
|
||||||
# name = "HDMI-A-2";
|
|
||||||
# resolution = "1920x1080";
|
|
||||||
# position = "4480x360";
|
|
||||||
# scale = "1.0";
|
|
||||||
# };
|
|
||||||
};
|
};
|
||||||
ace = {
|
ace = {
|
||||||
main = {
|
main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; };
|
||||||
name = "HDMI-A-1";
|
|
||||||
resolution = "3840x2160";
|
|
||||||
position = "0x0";
|
|
||||||
scale = "2.0";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
home.packages = (with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# hyprland itself is a system package
|
|
||||||
hyprland-protocols
|
hyprland-protocols
|
||||||
hyprlock
|
hyprlock
|
||||||
hypridle
|
hypridle
|
||||||
hyprshot
|
hyprshot
|
||||||
hyprpicker
|
hyprpicker
|
||||||
hyprcursor
|
hyprcursor
|
||||||
|
|
||||||
grim
|
grim
|
||||||
slurp
|
slurp
|
||||||
|
];
|
||||||
# ]) ++ (with pkgs-unstable; [
|
|
||||||
|
|
||||||
# ]) ++ (with inputs; [
|
|
||||||
# hyprswitch.packages.x86_64-linux.default
|
|
||||||
]);
|
|
||||||
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
@@ -268,7 +217,6 @@ in {
|
|||||||
"/usr/lib/polkit-kde-authentication-agent-1 "
|
"/usr/lib/polkit-kde-authentication-agent-1 "
|
||||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||||
"syncthing -no-browser"
|
"syncthing -no-browser"
|
||||||
"mako"
|
|
||||||
"fcitx5"
|
"fcitx5"
|
||||||
# "ibus engine xkb:de::deu"
|
# "ibus engine xkb:de::deu"
|
||||||
"libinput-gestures"
|
"libinput-gestures"
|
||||||
@@ -312,7 +260,7 @@ in {
|
|||||||
# "opacity ${transparency}, class:^(Element)$"
|
# "opacity ${transparency}, class:^(Element)$"
|
||||||
"opacity ${transparency}, class:^(lutris)$"
|
"opacity ${transparency}, class:^(lutris)$"
|
||||||
"opacity ${transparency}, class:^(neovide)$"
|
"opacity ${transparency}, class:^(neovide)$"
|
||||||
"opacity ${transparency}, class:^(obsidian)$"
|
# "opacity ${transparency}, class:^(obsidian)$"
|
||||||
"opacity ${transparency}, class:^(vesktop)$"
|
"opacity ${transparency}, class:^(vesktop)$"
|
||||||
"opacity ${transparency}, class:^(VSCodium)$"
|
"opacity ${transparency}, class:^(VSCodium)$"
|
||||||
"opacity ${transparency}, title:^(wlogout)$"
|
"opacity ${transparency}, title:^(wlogout)$"
|
||||||
@@ -324,11 +272,21 @@ in {
|
|||||||
"tile, class:^(sent)$"
|
"tile, class:^(sent)$"
|
||||||
|
|
||||||
"workspace 100, class:^(gamescope)$"
|
"workspace 100, class:^(gamescope)$"
|
||||||
|
|
||||||
|
"float, title:^(terminal-file-picker)$"
|
||||||
|
"dimaround, title:^(terminal-file-picker)$"
|
||||||
|
"center, title:^(terminal-file-picker)$"
|
||||||
|
"size 80% 80%, title:^(terminal-file-picker)$"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
layerrule = [
|
layerrule = [
|
||||||
"blur,waybar"
|
"blur,waybar"
|
||||||
|
"blur,bar-0" # hyprpanel
|
||||||
|
"blur,bar-1"
|
||||||
|
"blur,bar-2"
|
||||||
|
"blur,bar-3"
|
||||||
|
"blur,bar-4"
|
||||||
"dimaround,rofi"
|
"dimaround,rofi"
|
||||||
"blur,rofi"
|
"blur,rofi"
|
||||||
"xray,rofi"
|
"xray,rofi"
|
||||||
@@ -349,13 +307,13 @@ in {
|
|||||||
"SUPER SHIFT, F1, movetoworkspace, 100"
|
"SUPER SHIFT, F1, movetoworkspace, 100"
|
||||||
# "SUPER, F2,"
|
# "SUPER, F2,"
|
||||||
# "SUPER, F3, toggleopaque"
|
# "SUPER, F3, toggleopaque"
|
||||||
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'Cleared Saved Event!' ''"
|
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'NxCaldavEvent' 'Cleared saved event cache!' ''"
|
||||||
"SUPER, F5, exec, nx_gcal_event force-lookup"
|
# "SUPER, F5, exec, nx_gcal_event force-lookup"
|
||||||
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
# "SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
||||||
"SUPER, F6, exec, ${terminal-exec}'htop'"
|
"SUPER, F6, exec, ${terminal-exec}'htop'"
|
||||||
"SUPER, F7, exec, ${terminal-exec}'nmtui'"
|
"SUPER, F7, exec, ${terminal-exec}'nmtui'"
|
||||||
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
|
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
|
||||||
"SUPER, F9, execr, waybar_mode set ' '"
|
"SUPER, F9, execr, submap_indicator set ' '"
|
||||||
"SUPER, F9, submap, color"
|
"SUPER, F9, submap, color"
|
||||||
# "SUPER, F10, hyprload,update"
|
# "SUPER, F10, hyprload,update"
|
||||||
"SUPER, F11, exec, waybar"
|
"SUPER, F11, exec, waybar"
|
||||||
@@ -401,7 +359,7 @@ in {
|
|||||||
"ALT, TAB, focuscurrentorlast"
|
"ALT, TAB, focuscurrentorlast"
|
||||||
# "SUPER, TAB, exec, hyprswitch --daemon"
|
# "SUPER, TAB, exec, hyprswitch --daemon"
|
||||||
"SUPER, Q, killactive"
|
"SUPER, Q, killactive"
|
||||||
"SUPER, W, exec, waybar_mode set ' '"
|
"SUPER, W, exec, submap_indicator set ' '"
|
||||||
"SUPER, W, submap, browserSM "
|
"SUPER, W, submap, browserSM "
|
||||||
"SUPER, E, exec, element-desktop"
|
"SUPER, E, exec, element-desktop"
|
||||||
"SUPER, R, exec, rofi -show drun"
|
"SUPER, R, exec, rofi -show drun"
|
||||||
@@ -424,11 +382,11 @@ in {
|
|||||||
###########################################################################
|
###########################################################################
|
||||||
## ROW 3:
|
## ROW 3:
|
||||||
|
|
||||||
"SUPER, A, execr, waybar_mode set ' '"
|
"SUPER, A, execr, submap_indicator set ' '"
|
||||||
"SUPER, A, submap, scrL"
|
"SUPER, A, submap, scrL"
|
||||||
"SUPER, S, exec, spotify"
|
"SUPER, S, exec, spotify"
|
||||||
# "SUPER, D, exec, vesktop --disable-gpu-compositing"
|
"SUPER, D, exec, vesktop"
|
||||||
"SUPER, D, exec, discord"
|
# "SUPER, D, exec, discord"
|
||||||
"SUPER, F, fullscreen"
|
"SUPER, F, fullscreen"
|
||||||
# "SUPER, G,"
|
# "SUPER, G,"
|
||||||
"SUPER, H, movefocus, l"
|
"SUPER, H, movefocus, l"
|
||||||
@@ -443,7 +401,7 @@ in {
|
|||||||
## ROW 4:
|
## ROW 4:
|
||||||
|
|
||||||
# "SUPER, <, overview:toggle"
|
# "SUPER, <, overview:toggle"
|
||||||
"SUPER, Y, execr, waybar_mode set ' '"
|
"SUPER, Y, execr, submap_indicator set ' '"
|
||||||
"SUPER, Y, submap, scrR"
|
"SUPER, Y, submap, scrR"
|
||||||
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
|
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
|
||||||
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
|
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
|
||||||
@@ -462,7 +420,7 @@ in {
|
|||||||
|
|
||||||
# bindr = SUPER, Ctrl, exec, # ??
|
# bindr = SUPER, Ctrl, exec, # ??
|
||||||
# bindr = SUPERALT, Alt_L, exec,
|
# bindr = SUPERALT, Alt_L, exec,
|
||||||
"SUPER, Space, cyclenext"
|
# "SUPER, Space, cyclenext"
|
||||||
"SUPER SHIFT, Space, swapnext"
|
"SUPER SHIFT, Space, swapnext"
|
||||||
# "SUPER, , "
|
# "SUPER, , "
|
||||||
# "SUPER, , "
|
# "SUPER, , "
|
||||||
@@ -482,7 +440,7 @@ in {
|
|||||||
###########################################################################
|
###########################################################################
|
||||||
## MEGA KEYS:
|
## MEGA KEYS:
|
||||||
|
|
||||||
", Print, execr, waybar_mode set ' '"
|
", Print, execr, submap_indicator set ' '"
|
||||||
", Print, submap, screenshot"
|
", Print, submap, screenshot"
|
||||||
|
|
||||||
# "SUPER, Next, resizeactive, 5% 5%" # binde
|
# "SUPER, Next, resizeactive, 5% 5%" # binde
|
||||||
@@ -566,18 +524,18 @@ in {
|
|||||||
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
|
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
|
||||||
extraConfig = let
|
extraConfig = let
|
||||||
action_simple = { mods ? "", key, cmd }: ''
|
action_simple = { mods ? "", key, cmd }: ''
|
||||||
bind=${mods},${key},execr,waybar_mode unset
|
bind=${mods},${key},execr,submap_indicator unset
|
||||||
bind=${mods},${key},${cmd}
|
bind=${mods},${key},${cmd}
|
||||||
bind=${mods},${key},submap,reset
|
bind=${mods},${key},submap,reset
|
||||||
'';
|
'';
|
||||||
extra_workspace = { key, wsnumber }: ''
|
extra_workspace = { key, wsnumber }: ''
|
||||||
bind=,${key},execr,waybar_mode unset
|
bind=,${key},execr,submap_indicator unset
|
||||||
bind=,${key},workspace,${wsnumber}
|
bind=,${key},workspace,${wsnumber}
|
||||||
bind=,${key},submap,reset
|
bind=,${key},submap,reset
|
||||||
bind=SUPER,${key},execr,waybar_mode unset
|
bind=SUPER,${key},execr,submap_indicator unset
|
||||||
bind=SUPER,${key},workspace,${wsnumber}
|
bind=SUPER,${key},workspace,${wsnumber}
|
||||||
bind=SUPER,${key},submap,reset
|
bind=SUPER,${key},submap,reset
|
||||||
bind=SUPER SHIFT,${key},execr, waybar_mode unset
|
bind=SUPER SHIFT,${key},execr, submap_indicator unset
|
||||||
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
|
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
|
||||||
bind=SUPER SHIFT,${key},submap,reset
|
bind=SUPER SHIFT,${key},submap,reset
|
||||||
'';
|
'';
|
||||||
@@ -600,35 +558,35 @@ in {
|
|||||||
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
|
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
|
||||||
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
||||||
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
||||||
bind=,Z,exec,waybar_mode set ' '
|
bind=,Z,exec,submap_indicator set ' '
|
||||||
bind=,Z,submap,tuda
|
bind=,Z,submap,tuda
|
||||||
bind=,Z,submap,reset
|
bind=,Z,submap,reset
|
||||||
bind=,Escape,exec,waybar_mode unset
|
bind=,Escape,exec,submap_indicator unset
|
||||||
bind=,Escape,submap,reset
|
bind=,Escape,submap,reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
|
|
||||||
submap = scrL
|
submap = scrL
|
||||||
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||||
bind = , A, execr, waybar_mode unset
|
bind = , A, execr, submap_indicator unset
|
||||||
bind = , A, submap, reset
|
bind = , A, submap, reset
|
||||||
bind = , Escape, execr, waybar_mode unset
|
bind = , Escape, execr, submap_indicator unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
submap = scrR
|
submap = scrR
|
||||||
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||||
bind = , Y, execr, waybar_mode unset
|
bind = , Y, execr, submap_indicator unset
|
||||||
bind = , Y, submap, reset
|
bind = , Y, submap, reset
|
||||||
bind = , Escape, execr, waybar_mode unset
|
bind = , Escape, execr, submap_indicator unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
submap = color
|
submap = color
|
||||||
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'change_colors_json img successfull' ''; }}
|
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'NxTheme' 'change_colors_json img successfull' ''; }}
|
||||||
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'change_colors_json manual successfull' ''; }}
|
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'NxTheme' 'change_colors_json manual successfull' ''; }}
|
||||||
${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
|
${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
|
||||||
bind = , Escape, execr, waybar_mode unset
|
bind = , Escape, execr, submap_indicator unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
@@ -636,7 +594,7 @@ in {
|
|||||||
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
|
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
|
||||||
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
|
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
|
||||||
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
|
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
|
||||||
bind = , Escape, execr, waybar_mode unset
|
bind = , Escape, execr, submap_indicator unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
@@ -644,7 +602,7 @@ in {
|
|||||||
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
|
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
|
||||||
${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
|
${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
|
||||||
${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
|
${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
|
||||||
bind = , Escape, execr, waybar_mode unset
|
bind = , Escape, execr, submap_indicator unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ config, pkgs, ... }@all: with all;
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [ libnotify ];
|
home.packages = with pkgs; [ libnotify ];
|
||||||
services.mako = with rice; {
|
services.mako = with rice; {
|
||||||
enable = true;
|
enable = if config.programs.hyprpanel.enable then false else true;
|
||||||
settings = {
|
settings = {
|
||||||
defaultTimeout = 10000; # in ms
|
default-timeout = 5000; # in ms
|
||||||
backgroundColor = color.background;
|
background-color = color.background;
|
||||||
textColor = color.foreground;
|
text-color = color.foreground;
|
||||||
borderColor = color.border;
|
|
||||||
borderSize = border-width;
|
|
||||||
font = font.code.name;
|
font = font.code.name;
|
||||||
borderRadius = rounding;
|
border-size = border-width;
|
||||||
|
border-radius = rounding;
|
||||||
|
border-color = color.border;
|
||||||
anchor = "top-right";
|
anchor = "top-right";
|
||||||
margin = builtins.toString (gap-size * 2) ;
|
margin = builtins.toString (gap-size * 2) ;
|
||||||
};
|
};
|
||||||
|
|||||||
30
home-modules/opencode.nix
Normal file
30
home-modules/opencode.nix
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
latest.opencode
|
||||||
|
];
|
||||||
|
file.".config/opencode/opencode.json".text = let
|
||||||
|
model = "qwen2.5-coder:7b";
|
||||||
|
in builtins.toJSON {
|
||||||
|
"$schema" = "https://opencode.ai/config.json";
|
||||||
|
model = "ollama/${model}";
|
||||||
|
theme = "matrix";
|
||||||
|
provider = {
|
||||||
|
ollama = {
|
||||||
|
apiKey = "KEY";
|
||||||
|
disabled = false;
|
||||||
|
npm = "@ai-sdk/openai-compatible";
|
||||||
|
options = {
|
||||||
|
baseURL = "http://localhost:11434/v1";
|
||||||
|
};
|
||||||
|
models = {
|
||||||
|
"${model}" = {
|
||||||
|
tools = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
ffmpeg
|
ffmpeg
|
||||||
figlet
|
figlet
|
||||||
fzf
|
fzf
|
||||||
|
gh
|
||||||
glib
|
glib
|
||||||
glow
|
glow
|
||||||
gnumake
|
gnumake
|
||||||
@@ -21,6 +22,7 @@
|
|||||||
mediainfo
|
mediainfo
|
||||||
mpv
|
mpv
|
||||||
neofetch
|
neofetch
|
||||||
|
pastel
|
||||||
pdfgrep
|
pdfgrep
|
||||||
pipes
|
pipes
|
||||||
pv
|
pv
|
||||||
|
|||||||
@@ -3,16 +3,18 @@
|
|||||||
home = let
|
home = let
|
||||||
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
||||||
ipython
|
ipython
|
||||||
pipdeptree
|
|
||||||
requests
|
requests
|
||||||
google google-api-python-client google-auth-httplib2 google-auth-oauthlib
|
|
||||||
debugpy
|
debugpy
|
||||||
black
|
black
|
||||||
]);
|
]);
|
||||||
in {
|
in {
|
||||||
packages = [
|
packages = [
|
||||||
python-with-packages
|
python-with-packages
|
||||||
];
|
] ++ (with pkgs; [
|
||||||
|
python311Packages.python-lsp-server
|
||||||
|
ruff
|
||||||
|
pyright
|
||||||
|
]);
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
|
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
|
||||||
};
|
};
|
||||||
|
|||||||
8
home-modules/typst.nix
Normal file
8
home-modules/typst.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }@all: with all;
|
||||||
|
lib.mkIf (hyper.host != "NxACE")
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
typst
|
||||||
|
tinymist
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -1,371 +0,0 @@
|
|||||||
{ pkgs, hyper, ... }@all: with all; let
|
|
||||||
sep = " ";
|
|
||||||
in {
|
|
||||||
sops.secrets = {
|
|
||||||
"nx2site/radicale/password" = { };
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
|
|
||||||
print_help() {
|
|
||||||
echo "Usage: waybar_mode {set <string>|unset}"
|
|
||||||
}
|
|
||||||
if [ $# -lt 1 ]; then
|
|
||||||
print_help; exit 1;
|
|
||||||
fi
|
|
||||||
case "$1" in
|
|
||||||
set)
|
|
||||||
# Check if there is a second argument for the 'set' operation
|
|
||||||
if [ $# -eq 2 ]; then
|
|
||||||
echo "$2" > /tmp/waybar-mode
|
|
||||||
pkill -RTMIN+8 waybar
|
|
||||||
else
|
|
||||||
echo "Error: 'set' operation requires exactly one string argument."
|
|
||||||
print_help
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
unset)
|
|
||||||
echo "" > /tmp/waybar-mode
|
|
||||||
pkill -RTMIN+8 waybar
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Error: Unknown command '$1'"
|
|
||||||
print_help
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
exit 0
|
|
||||||
'';})
|
|
||||||
(writeShellApplication { name = "cclock"; text = /*bash*/ ''
|
|
||||||
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
echo "${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
|
|
||||||
elif [ "$1" = "--no-icons" ]; then
|
|
||||||
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
|
|
||||||
fi
|
|
||||||
'';})
|
|
||||||
(writers.writePython3Bin "caldav_event" {
|
|
||||||
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
|
||||||
flakeIgnore = [ "E302" "E305""E501" "E261" ];
|
|
||||||
} /* python */ ''
|
|
||||||
import os
|
|
||||||
import json
|
|
||||||
from caldav import DAVClient
|
|
||||||
from datetime import datetime, timezone
|
|
||||||
from ics import Calendar
|
|
||||||
from pytz import UTC
|
|
||||||
|
|
||||||
def get_password(password_file):
|
|
||||||
with open(password_file, "r") as file:
|
|
||||||
return file.read().strip()
|
|
||||||
|
|
||||||
def datetime_converter(obj):
|
|
||||||
if isinstance(obj, datetime):
|
|
||||||
return obj.isoformat()
|
|
||||||
return obj
|
|
||||||
|
|
||||||
def datetime_parser(dct):
|
|
||||||
for key, value in dct.items():
|
|
||||||
if isinstance(value, str):
|
|
||||||
try:
|
|
||||||
dct[key] = datetime.fromisoformat(value)
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
return dct
|
|
||||||
|
|
||||||
def load_cache(cache_file):
|
|
||||||
if os.path.exists(cache_file):
|
|
||||||
with open(cache_file, "r") as file:
|
|
||||||
return json.load(file, object_hook=datetime_parser)
|
|
||||||
return None
|
|
||||||
|
|
||||||
def save_cache(cache_file, data):
|
|
||||||
with open(cache_file, "w") as file:
|
|
||||||
json.dump(data, file, default=datetime_converter)
|
|
||||||
|
|
||||||
|
|
||||||
def get_ongoing_or_next_event(url, username, password):
|
|
||||||
now = datetime.now(timezone.utc)
|
|
||||||
|
|
||||||
try:
|
|
||||||
client = DAVClient(url, username=username, password=password)
|
|
||||||
principal = client.principal()
|
|
||||||
calendars = principal.calendars()
|
|
||||||
|
|
||||||
next_event_dict = {
|
|
||||||
'event_name': "fake",
|
|
||||||
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
|
|
||||||
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
|
|
||||||
}
|
|
||||||
|
|
||||||
for calendar in calendars:
|
|
||||||
for event in calendar.events():
|
|
||||||
calendar_parsed = Calendar(event.data)
|
|
||||||
for ics_event in calendar_parsed.events:
|
|
||||||
event_dict = {}
|
|
||||||
event_dict['event_name'] = ics_event.name or "(No Title)"
|
|
||||||
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
|
|
||||||
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
|
|
||||||
|
|
||||||
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
|
|
||||||
return event_dict
|
|
||||||
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
|
|
||||||
next_event_dict = event_dict
|
|
||||||
return next_event_dict
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Error accessing {url}: {e}")
|
|
||||||
return None
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
password_file = "/home/nx2/.config/sops-nix/secrets/nx2site/radicale/password" # Path to password file
|
|
||||||
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
|
||||||
url = "https://dav.${hyper.domain}/"
|
|
||||||
username = "${hyper.user}"
|
|
||||||
password = get_password(password_file)
|
|
||||||
|
|
||||||
event_dict = load_cache(cache_file)
|
|
||||||
now = datetime.now(timezone.utc).timestamp()
|
|
||||||
|
|
||||||
if event_dict is None or event_dict['event_begin'].timestamp() <= now and now < event_dict['event_end'].timestamp():
|
|
||||||
event_dict = get_ongoing_or_next_event(url, username, password)
|
|
||||||
if event_dict is None:
|
|
||||||
print("No upcoming events found.")
|
|
||||||
exit(0)
|
|
||||||
cache_data = {
|
|
||||||
"event_name": event_dict['event_name'] if event_dict is not None else None,
|
|
||||||
"event_begin": event_dict['event_begin'] if event_dict is not None else None,
|
|
||||||
"event_end": event_dict['event_end'] if event_dict is not None else None
|
|
||||||
}
|
|
||||||
save_cache(cache_file, cache_data)
|
|
||||||
|
|
||||||
if event_dict:
|
|
||||||
event_start = event_dict['event_begin'].timestamp()
|
|
||||||
event_end = event_dict['event_end'].timestamp()
|
|
||||||
|
|
||||||
if event_start <= now <= event_end:
|
|
||||||
time_remaining = event_end - now
|
|
||||||
hours, rem = divmod(int(time_remaining), 3600)
|
|
||||||
minutes, _ = divmod(rem, 60)
|
|
||||||
print(f"{event_dict['event_name']} ends in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
|
|
||||||
else:
|
|
||||||
time_until_start = event_start - now
|
|
||||||
hours, rem = divmod(int(time_until_start), 3600)
|
|
||||||
minutes, _ = divmod(rem, 60)
|
|
||||||
print(f"{event_dict['event_name']} starts in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
|
|
||||||
else:
|
|
||||||
print("No upcoming events found.")
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.waybar;
|
|
||||||
settings = {
|
|
||||||
bar = {
|
|
||||||
# height = 20;
|
|
||||||
layer = "top";
|
|
||||||
position = "bottom";
|
|
||||||
margin-top = 0;
|
|
||||||
# margin-left = rice.gap-size;
|
|
||||||
# margin-bottom = rice.gap-size;
|
|
||||||
# margin-right = rice.gap-size;
|
|
||||||
margin-left = 0;
|
|
||||||
margin-bottom = 0;
|
|
||||||
margin-right = 0;
|
|
||||||
spacing = 10;
|
|
||||||
fixed-center = true;
|
|
||||||
modules-left = [
|
|
||||||
# "cpu"
|
|
||||||
# "memory"
|
|
||||||
"wireplumber"
|
|
||||||
"backlight"
|
|
||||||
"battery"
|
|
||||||
"network"
|
|
||||||
"hyprland/window"
|
|
||||||
];
|
|
||||||
modules-center = [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
];
|
|
||||||
modules-right = [
|
|
||||||
"custom/mode"
|
|
||||||
# "custom/caldav_event"
|
|
||||||
"custom/cclock"
|
|
||||||
"tray"
|
|
||||||
];
|
|
||||||
"hyprland/workspaces" = {
|
|
||||||
on-click = "activate";
|
|
||||||
format = "{name}";
|
|
||||||
all-outputs = false;
|
|
||||||
active-only = false;
|
|
||||||
};
|
|
||||||
"hyprland/window" = {
|
|
||||||
# format = "${sep}{}";
|
|
||||||
format = "{}";
|
|
||||||
separate-outputs = true;
|
|
||||||
};
|
|
||||||
"custom/cclock" = {
|
|
||||||
exec = "cclock";
|
|
||||||
restart-interval = 60;
|
|
||||||
};
|
|
||||||
"custom/caldav_event" = {
|
|
||||||
format = "${sep}{}";
|
|
||||||
exec = "caldav_event";
|
|
||||||
restart-interval = 60;
|
|
||||||
max-width = 60;
|
|
||||||
};
|
|
||||||
"custom/mode" = {
|
|
||||||
exec = "cat /tmp/waybar-mode";
|
|
||||||
interval = "once";
|
|
||||||
signal = 8;
|
|
||||||
};
|
|
||||||
|
|
||||||
cpu = {
|
|
||||||
interval = 1;
|
|
||||||
format = "${sep}{}%";
|
|
||||||
max-length = 10;
|
|
||||||
};
|
|
||||||
memory = {
|
|
||||||
interval = 5;
|
|
||||||
format = "${sep}{avail:.0f}G free";
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
interval = 60;
|
|
||||||
tooltip = false;
|
|
||||||
format = "{icon}${sep}{capacity}%";
|
|
||||||
states = {
|
|
||||||
warning = 15;
|
|
||||||
critical = 5;
|
|
||||||
};
|
|
||||||
format-icons = [
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
" "
|
|
||||||
];
|
|
||||||
format-charging = "{icon}${sep}+{capacity}%";
|
|
||||||
format-plugged = "{icon}${sep}P{capacity}%";
|
|
||||||
format-full = "{icon}${sep}F{capacity}%";
|
|
||||||
};
|
|
||||||
backlight = {
|
|
||||||
device = "eDP-1";
|
|
||||||
format = "{icon}${sep}{percent}%";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
format-wifi = "${sep}{essid}";
|
|
||||||
format-ethernet = "${sep}Wired";
|
|
||||||
format-disconnected = "${sep}Disconnected";
|
|
||||||
};
|
|
||||||
wireplumber = {
|
|
||||||
format = "${sep}{volume}%";
|
|
||||||
format-muted = "${sep}--%";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in ''
|
|
||||||
* {
|
|
||||||
font-family: ${rice.font.code.name};
|
|
||||||
font-size: 1em;
|
|
||||||
min-height: 0px;
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
background-color: rgba(${f background},${builtins.toString rice.transparency});
|
|
||||||
transition-duration: 5s;
|
|
||||||
transition-property: background-color;
|
|
||||||
/* border: ${builtins.toString rice.border-width}px solid rgb(${f border}); */
|
|
||||||
/* margin: ${builtins.toString rice.gap-size}px; */
|
|
||||||
/* border-radius: ${builtins.toString rice.rounding}px; */
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock,
|
|
||||||
#custom-cclock,
|
|
||||||
#custom-mode,
|
|
||||||
#custom-caldav-event,
|
|
||||||
#battery,
|
|
||||||
#cpu,
|
|
||||||
#tray,
|
|
||||||
#disk,
|
|
||||||
#backlight,
|
|
||||||
#network,
|
|
||||||
#wireplumber,
|
|
||||||
#memory,
|
|
||||||
#window,
|
|
||||||
#workspaces {
|
|
||||||
padding: 0px 3px;
|
|
||||||
margin-top: 0.3em;
|
|
||||||
border-radius: ${builtins.toString rice.rounding}px;
|
|
||||||
color: rgb(${f accent.bright});
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
font-family: ${rice.font.code.name};
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
color: rgb(${f accent.base});
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 15px;
|
|
||||||
border-radius: ${builtins.toString rice.rounding}px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
color: rgb(${f background});
|
|
||||||
background-color: rgb(${f accent.base});
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
color: rgb(${f tertiary.bright});
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
background-color: rgba(${f magenta.base},${builtins.toString rice.transparency});
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-mode {
|
|
||||||
color: rgb(${f red.base});
|
|
||||||
}
|
|
||||||
|
|
||||||
#window, #custom-caldav_event {
|
|
||||||
font-family: ${rice.font.base.name}, ${rice.font.code.name};
|
|
||||||
color: rgb(${f tertiary.bright});
|
|
||||||
}
|
|
||||||
|
|
||||||
#wireplumber.muted {
|
|
||||||
color: rgb(${f tertiary.bright});
|
|
||||||
}
|
|
||||||
#wireplumber {
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.warning:not(.charging) {
|
|
||||||
color: rgb(${f green.base});;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.charging {
|
|
||||||
color: rgb(${f green.base});
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.critical {
|
|
||||||
background: rgb(${f negative.base});
|
|
||||||
color: rgb(${f foreground});
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
#battery.critical:not(.charging) {
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -10,7 +10,27 @@
|
|||||||
package = inputs.yazi.packages.${hyper.system}.default;
|
package = inputs.yazi.packages.${hyper.system}.default;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
shellWrapperName = "ya";
|
shellWrapperName = "ya";
|
||||||
# plugins = with inputs.yazi-plugins.packages.${hyper.system}; { };
|
initLua = /* lua */ ''
|
||||||
|
require("zoxide"):setup {
|
||||||
|
update_db = true,
|
||||||
|
}
|
||||||
|
Status:children_add(function()
|
||||||
|
local h = cx.active.current.hovered
|
||||||
|
if not h or ya.target_family() ~= "unix" then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
return ui.Line {
|
||||||
|
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
|
||||||
|
":",
|
||||||
|
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
|
||||||
|
" ",
|
||||||
|
}
|
||||||
|
end, 500, Status.RIGHT)
|
||||||
|
'';
|
||||||
|
plugins = with pkgs; {
|
||||||
|
inherit glow git;
|
||||||
|
};
|
||||||
# initLua = /* lua */ '' '';
|
# initLua = /* lua */ '' '';
|
||||||
keymap = {
|
keymap = {
|
||||||
mgr.keymap = [
|
mgr.keymap = [
|
||||||
@@ -30,8 +50,8 @@
|
|||||||
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||||
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||||
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||||
{ on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; }
|
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
||||||
{ on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; }
|
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
|
||||||
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||||
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
||||||
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
|
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
|
||||||
@@ -45,6 +65,7 @@
|
|||||||
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||||
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
||||||
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
|
{ on = [ "g" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
|
||||||
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
||||||
# Navigation
|
# Navigation
|
||||||
@@ -69,6 +90,8 @@
|
|||||||
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||||
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
||||||
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||||
|
{ on = "y"; run = [ ''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list''
|
||||||
|
"yank" ]; desc = "Yank selected files (copy)"; }
|
||||||
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
||||||
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
||||||
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
||||||
@@ -373,4 +396,74 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
xdg = {
|
||||||
|
# # https://github.com/hunkyburrito/xdg-desktop-portal-termfilechooser/pull/44
|
||||||
|
configFile = let
|
||||||
|
wrapper = pkgs.writeShellApplication { name = "yazi-wrapper.sh"; text = /*bash*/ ''
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
multiple="$1"
|
||||||
|
directory="$2"
|
||||||
|
save="$3"
|
||||||
|
path="$4"
|
||||||
|
out="$5"
|
||||||
|
|
||||||
|
cmd="yazi"
|
||||||
|
termcmd="''${TERMCMD:-kitty --title 'termfilechooser'}"
|
||||||
|
|
||||||
|
if [ "$save" = "1" ]; then
|
||||||
|
# save a file
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
elif [ "$directory" = "1" ]; then
|
||||||
|
# upload files from a directory
|
||||||
|
set -- --chooser-file="$out" --cwd-file="$out" "$path"
|
||||||
|
elif [ "$multiple" = "1" ]; then
|
||||||
|
# upload multiple files
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
else
|
||||||
|
# upload only 1 file
|
||||||
|
set -- --chooser-file="$out" "$path"
|
||||||
|
fi
|
||||||
|
|
||||||
|
command="$termcmd $cmd"
|
||||||
|
for arg in "$@"; do
|
||||||
|
# escape double quotes
|
||||||
|
escaped=$(printf "%s" "$arg" | sed -E 's/[\"\(\)\{\}\|]//g')
|
||||||
|
# escape spaces
|
||||||
|
command="$command \"$escaped\""
|
||||||
|
done
|
||||||
|
|
||||||
|
sh -c "$command"
|
||||||
|
'';};
|
||||||
|
in {
|
||||||
|
"xdg-desktop-portal-termfilechooser/config".text = ''
|
||||||
|
[filechooser]
|
||||||
|
cmd=${wrapper}/bin/yazi-wrapper.sh
|
||||||
|
env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
||||||
|
default_dir=$HOME
|
||||||
|
open_mode=suggested
|
||||||
|
save_mode=last
|
||||||
|
'';
|
||||||
|
# "xdg-desktop-portal-termfilechooser/config".text = ''
|
||||||
|
# [filechooser]
|
||||||
|
# cmd=${pkgs.latest.xdg-desktop-portal-termfilechooser}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
|
||||||
|
# env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
||||||
|
# default_dir=$HOME
|
||||||
|
# open_mode=suggested
|
||||||
|
# save_mode=last
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [ pkgs.latest.xdg-desktop-portal-termfilechooser ];
|
||||||
|
config = {
|
||||||
|
common = {
|
||||||
|
"org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
home.sessionVariables = {
|
||||||
|
GTK_USE_PORTAL = "1";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
6
home.nix
6
home.nix
@@ -1,6 +1,7 @@
|
|||||||
{ pkgs, ... }@all: with all; {
|
{ pkgs, ... }@all: with all; {
|
||||||
imports = [
|
imports = [
|
||||||
./home-modules/auto-mount.nix
|
./home-modules/auto-mount.nix
|
||||||
|
./home-modules/bar.nix
|
||||||
./home-modules/bash.nix
|
./home-modules/bash.nix
|
||||||
./home-modules/bitwarden.nix
|
./home-modules/bitwarden.nix
|
||||||
./home-modules/calendar.nix
|
./home-modules/calendar.nix
|
||||||
@@ -10,8 +11,8 @@
|
|||||||
./home-modules/direnv.nix
|
./home-modules/direnv.nix
|
||||||
./home-modules/discord.nix
|
./home-modules/discord.nix
|
||||||
./home-modules/email.nix
|
./home-modules/email.nix
|
||||||
./home-modules/firefox.nix
|
|
||||||
./home-modules/figlet.nix
|
./home-modules/figlet.nix
|
||||||
|
./home-modules/firefox.nix
|
||||||
./home-modules/fish.nix
|
./home-modules/fish.nix
|
||||||
./home-modules/games.nix
|
./home-modules/games.nix
|
||||||
./home-modules/gestures.nix
|
./home-modules/gestures.nix
|
||||||
@@ -34,6 +35,7 @@
|
|||||||
./home-modules/obs.nix
|
./home-modules/obs.nix
|
||||||
./home-modules/office.nix
|
./home-modules/office.nix
|
||||||
./home-modules/ollama.nix
|
./home-modules/ollama.nix
|
||||||
|
./home-modules/opencode.nix
|
||||||
./home-modules/pandoc.nix
|
./home-modules/pandoc.nix
|
||||||
./home-modules/pkgs-list/desktop.nix
|
./home-modules/pkgs-list/desktop.nix
|
||||||
./home-modules/pkgs-list/programs.nix
|
./home-modules/pkgs-list/programs.nix
|
||||||
@@ -53,11 +55,11 @@
|
|||||||
./home-modules/ssh.nix
|
./home-modules/ssh.nix
|
||||||
./home-modules/starship.nix
|
./home-modules/starship.nix
|
||||||
./home-modules/tts.nix
|
./home-modules/tts.nix
|
||||||
|
./home-modules/typst.nix
|
||||||
./home-modules/vale.nix
|
./home-modules/vale.nix
|
||||||
./home-modules/virt-manager.nix
|
./home-modules/virt-manager.nix
|
||||||
./home-modules/vscode.nix
|
./home-modules/vscode.nix
|
||||||
./home-modules/wallpaper-to-colors.nix
|
./home-modules/wallpaper-to-colors.nix
|
||||||
./home-modules/waybar.nix
|
|
||||||
./home-modules/wlogout.nix
|
./home-modules/wlogout.nix
|
||||||
./home-modules/xdg.nix
|
./home-modules/xdg.nix
|
||||||
./home-modules/yazi.nix
|
./home-modules/yazi.nix
|
||||||
|
|||||||
@@ -18,5 +18,18 @@
|
|||||||
defaultUser = hyper.user;
|
defaultUser = hyper.user;
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix = {
|
||||||
|
settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
substitute = true;
|
||||||
|
substituters = [
|
||||||
|
"https://yazi.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = hyper.system;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,4 +49,6 @@
|
|||||||
libvdpau-va-gl
|
libvdpau-va-gl
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
] else [];
|
] else [];
|
||||||
|
|
||||||
|
services.upower.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ lib.mkIf (hyper.host != "NxACE")
|
|||||||
enable = true;
|
enable = true;
|
||||||
wantedBy = [ "timers.target" ];
|
wantedBy = [ "timers.target" ];
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
OnBootSec = "5m";
|
OnBootSec = "30m";
|
||||||
OnUnitActiveSec = "5m";
|
OnUnitActiveSec = "10m";
|
||||||
Unit = "health_reminder.service";
|
Unit = "health_reminder.service";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -34,11 +34,11 @@ lib.mkIf (hyper.host != "NxACE")
|
|||||||
return action
|
return action
|
||||||
|
|
||||||
actions = [
|
actions = [
|
||||||
Action(action="look away for %o Seconds!", likelihood=300, options=["10", "15"]),
|
Action(action="look away for %o Seconds!", likelihood=30, options=["10", "15"]),
|
||||||
Action(action="Posture Check!", likelihood=300),
|
Action(action="Posture Check!", likelihood=200),
|
||||||
Action(action="Strech your upper body!", likelihood=20),
|
Action(action="Strech your upper body!", likelihood=20),
|
||||||
Action(action="Strech your core!", likelihood=10),
|
Action(action="Strech your core!", likelihood=10),
|
||||||
Action(action="Strech your legs!", likelihood=10),
|
Action(action="Strech your legs!", likelihood=20),
|
||||||
Action(action="Strech your arms/hands!", likelihood=10),
|
Action(action="Strech your arms/hands!", likelihood=10),
|
||||||
Action(action="Make Tea!", likelihood=5),
|
Action(action="Make Tea!", likelihood=5),
|
||||||
Action(action="说现在中文的时间!", likelihood=2),
|
Action(action="说现在中文的时间!", likelihood=2),
|
||||||
|
|||||||
Reference in New Issue
Block a user