38 Commits
Author SHA1 Message Date
github-actions[bot] 3ac5aaa396 Merge pull request #43 from tomasriveral/desktop
Weekly sync: desktop → main
2026-10-07 19:44:43 +00:00
tomasr 21349e4585 add detexify bookmark 2026-10-04 18:14:52 +02:00
github-actions[bot] 1a19380962 Merge pull request #42 from tomasriveral/desktop
Weekly sync: desktop → main
2026-09-23 18:15:39 +00:00
tomasr f23ec09369 setup fwupd 2026-09-21 12:00:44 +02:00
tomasr 7d5ae9fa2c remove pomodoro timer shortcut 2026-09-21 12:00:30 +02:00
tomasr 8f4117f3e7 fix path sync cs-119l 2026-09-13 10:43:34 +02:00
tomasr bd97ba4df7 Auto: cleanup-2026-09-13T08-29-34Z 2026-09-13 10:31:41 +02:00
tomasr bd678ae32d epfl switchDrive 2026-09-10 11:12:35 +02:00
github-actions[bot] 3a51d3c14a Merge pull request #41 from tomasriveral/desktop
Weekly sync: desktop → main
2026-09-09 17:34:49 +00:00
tomasr 9879131aca fix fastfetch vscode 2026-09-06 11:33:03 +02:00
tomasr c2f733d4c9 setup for cs-119l 2026-09-06 11:17:23 +02:00
tomasr 44709a3b7c librewolf: add courseware bookmark 2026-09-05 14:14:36 +02:00
tomasr ce8c4f7d73 librewolf: add moodle bookmark 2026-09-05 14:14:36 +02:00
tomasr 2f2d3cd2ba remove duplciate exec nixpkgs-notifier 2026-08-30 21:07:33 +02:00
tomasr b738cbb8ef ös alias 2026-08-30 19:33:11 +02:00
tomasr fdb4d53ec0 reajuste lock timing 2026-08-30 17:03:57 +02:00
tomasr 1a29fda1f9 reworked lock time 2026-08-27 17:53:24 +02:00
github-actions[bot] bc5f00cf1d Merge pull request #40 from tomasriveral/desktop
Weekly sync: desktop → main
2026-08-26 14:42:32 +00:00
tomasr b760904557 bitwarden-client updated electron 2026-08-23 13:38:14 +02:00
tomasr 28d56cf671 remove duplciate exec qtbatticon 2026-08-21 18:00:19 +02:00
tomasr 4db1f329f2 add instruction for nix-update 2026-08-18 08:04:15 +02:00
tomasr 7afe2cf7b6 nixUtils: add nix-update 2026-08-18 07:53:45 +02:00
tomasr 434e6ed31d moved out of kdrive for notes. Keep backup in there rsynced 2026-08-17 17:11:42 +02:00
tomasr f1e266331c remove battery scripts 2026-08-17 15:03:40 +02:00
tomasr f745a79af8 switch hardware utils to unstable 2026-08-16 18:02:44 +02:00
tomasr a99cb710b3 add watchecosystem to hardwareUtils 2026-08-16 18:01:39 +02:00
tomasr 9805986c10 git config 2026-08-16 08:32:23 +02:00
tomasr bc67f2b0e8 custom-vpn-picker: init 2026-08-15 20:07:34 +02:00
tomasr 7cd934c58c first setup epfl vpn 2026-08-15 20:07:34 +02:00
tomasr 6e3286419f fix notewrapper config parse error 2026-08-14 17:27:02 +02:00
tomasr c7781b7483 update notewrapper config 2026-08-14 17:06:23 +02:00
tomasr 682a5c13df remove old icloudpd 2026-08-14 11:51:36 +02:00
tomasr 82bd78bc73 rewrote performance mode into lua 2026-08-14 11:49:26 +02:00
github-actions[bot] 98bc46e67f Merge pull request #38 from tomasriveral/desktop
Weekly sync: desktop → main
2026-08-12 14:55:44 +00:00
github-actions[bot] 07c2293f77 Merge pull request #37 from tomasriveral/desktop
Weekly sync: desktop → main
2026-08-05 16:00:39 +00:00
github-actions[bot] 7f74878433 Merge pull request #36 from tomasriveral/desktop
Weekly sync: desktop → main
2026-07-29 15:48:25 +00:00
tomasr c235a0a724 Merge pull request #34 from tomasriveral/desktop 2026-07-22 19:55:56 +00:00
tomasr 3fc66623f2 Merge pull request #32 from tomasriveral/desktop
Weekly sync: desktop → main
2026-06-24 16:40:14 -05:00
24 changed files with 444 additions and 242 deletions

No files matched your search

+4 -1
View File
@@ -430,7 +430,6 @@ The macros in the layout generate combinations involving `CTRL`, `ALT`, `SUPER`,
| Row 2, Col 2 | Change audio output (`CTRL + ALT + SHIFT + 0`) |
| Row 2, Col 3 | Special characters (`CTRL + SUPER + 5`) |
| Row 2, Col 4 | Color picker (`CTRL + ALT + 8`) |
| Row 3, Col 1 | Pomodoro timer (`CTRL + ALT + 0`) |
| Row 4, Col 1 | Launch Anki (`CTRL + ALT + 9`) |
The physical layout file contains additional transparent/unused positions, but the bindings above are the active shortcuts documented for the macropad.
@@ -569,6 +568,9 @@ secrets/
Encrypted secrets should remain encrypted in Git. Decrypted secret contents and private keys should not be committed.
* To edit a secret use `agenix -e <secret_file>.age -i /etc/ssh/ssh_host_ed25519_key`.
* To decrypt a secret use `sudo agenix -d <secret_file>.age -i /etc/ssh/ssh_host_ed25519_key`.
---
# Quickshell
@@ -650,6 +652,7 @@ Some application state may need to be configured manually after installation:
* Birdtray settings
* Inkscape settings
* other application-specific user data
* git configuration
---
+3
View File
@@ -64,12 +64,15 @@
flake = let
system = "x86_64-linux";
unfreePkgs = [
"code"
"hplip"
"nvidia-x11"
"nvidia-settings"
"steam"
"steam-unwrapped"
"cheatsheet.nvim"
"vscode"
"vscode-fhs"
"zoom-us"
"zoom"
];
+18
View File
@@ -402,6 +402,24 @@
keyword = "nix function search";
url = "https://noogle.dev";
}
{
name = "EPFL Moodle";
tags = ["epfl" "moodle"];
keyword = "epfl moodle";
url = "https://moodle.epfl.ch/my/courses.php";
}
{
name = "EPFL ICC Courseware";
tags = ["icc" "epfl" "courseware"];
keyword = "icc epfl courseware";
url = "https://courseware.epfl.ch/learner-dashboard/";
}
{
name = "Detexify";
tags = ["draw" "Latex" "symbols"];
keyword = "draw latex symbols";
url = "https://detexify.kirelabs.org/";
}
];
};
search = {
+3 -3
View File
@@ -24,16 +24,16 @@
inhibitWhenAudio = true;
timeouts = [
{
timeout = 180;
timeout = 1000;
idleAction = "lock";
}
{
timeout = 300;
timeout = 1010;
idleAction = "dpms off"; # what's that?
returnAction = "dpms on";
}
{
timeout = 600;
timeout = 12200;
idleAction = ["systemctl" "suspend-then-hibernate"];
}
];
+2
View File
@@ -3,6 +3,8 @@ _: {
programs.git = {
enable = true;
/*
for some reason this doesnt work really well. So it's best to setup git imperatively
push.autoSetupRemote to true
settings = {
init.defaultBranch = "main";
};
+17 -17
View File
@@ -1,4 +1,4 @@
{...}: {
_: {
flake.nixosModules.hyprland = {
pkgs,
pkgs-unstable,
@@ -35,23 +35,22 @@
services.xserver.enable = true;
};
flake.homeModules.hyprland-laptop = {
home.file.".config/hypr/host.lua" = {
text = ''
hl.on("hyprland.start", function()
hl.exec_cmd("qtbatticon")
hl.exec_cmd("source /run/agenix/ntfy && nixpkgs-notifier listen")
end)
home.file.".config/hypr/host.lua" = {
text = ''
hl.on("hyprland.start", function()
hl.exec_cmd("qtbatticon")
end)
hl.monitor({
output = "eDP-1",
mode = "highres@highrr",
position = "0x0",
scale = 1,
})
'';
enable = true;
force = true;
};
hl.monitor({
output = "eDP-1",
mode = "highres@highrr",
position = "0x0",
scale = 1,
})
'';
enable = true;
force = true;
};
};
flake.homeModules.hyprland-desktop = {
home.file.".config/hypr/host.lua" = {
@@ -93,6 +92,7 @@ let
(builtins.readFile ../../other/hyprland/hyprland.lua);
in
{
#refer to https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/
wayland.windowManager.hyprland.enable = true;
wayland.windowManager.hyprland.package = pkgs-unstable.hyprland;
-1
View File
@@ -14,7 +14,6 @@
flake.nixosModules.kdrive-desktop = {pkgs-unstable, ...}: {
environment.systemPackages = with pkgs-unstable; [
rclone
icloudpd
self.packages.${pkgs-unstable.system}.custom-checkKdrive
self.packages.${pkgs-unstable.system}.custom-synckdrive-desktop
];
-13
View File
@@ -1,13 +0,0 @@
_: {
flake.nixosModules.mullvad = _: {
services.mullvad-vpn = {
enable = true;
};
};
flake.homeModules.mullvad = _: {
programs.mullvad-vpn = {
# gui
enable = true;
};
};
}
+10 -6
View File
@@ -8,7 +8,7 @@
force = true;
text = ''
{
"directory": ["~/kdrive/Notes/"],
"directory": ["~/Documents/Notes/"],
"render": true,
"jumpToEndOfFileOnLaunch": true,
"editor": "neovim",
@@ -16,13 +16,17 @@
"dateEntry": "# %Y %m %d %a",
"newLineOnOpening": true,
"backup": {
"enable": false,
"enable": true,
"directory": {
"~/Documents/Notes/": "~/kdrive/Notes/",
"~/test/": "~/backupTest/"
"~/Documents/Notes/": "~/kdrive/Notes/"
},
"interval": "daily",
"rsyncArgs": ["-Lqah", "--update"]
"rsyncArgs": ["-Lqah", "--update"],
"git": {
"enable": true,
"name": "Tomas Rivera",
"email": "tomas.riveral@icloud.com"
}
}
}
'';
@@ -47,7 +51,7 @@
"backup": {
"enable": false,
"directory": {
"~/Documents/Notes/": "~/kdrive/Notes/",
"~/Documents/Notes/": "~/hdd/kdrive/Notes/",
"~/test/": "~/backupTest/"
},
"interval": "daily",
+10 -1
View File
@@ -43,6 +43,11 @@ _: {
enable = true;
autosuggestion.enable = false; # zsh-autocomplete is replaced by deja
initContent = ''
# those aliases can't be written in nix, because of ö
# l and ö are very close
alias -- ös=ls
alias -- öös=ls
# Safe cat that uses colorize plugin ccat
custom-cat() {
if [[ -t 1 ]]; then
@@ -61,7 +66,11 @@ _: {
}
eval "$(direnv hook zsh)"
eval "$(deja init zsh)"
fastfetch''\n'';
if [[ "$TERM_PROGRAM" != "vscode" ]]; then
fastfetch
fi
'';
shellAliases = {
".." = "z ..";
grep = "rg";
-179
View File
@@ -336,184 +336,5 @@
install -m755 qtbatticon $out/bin/
'';
};
# This was replaced by caelestia shell's Game Mode
packages.custom-performance = pkgs.writeShellApplication {
name = "custom-performance";
runtimeInputs = with pkgs; [
hyprland
brightnessctl
swaynotificationcenter
self.packages.${pkgs.system}.custom-wallpaper
libnotify
inputs.caelestia-shell.packages.${pkgs.system}.default
];
text = ''
STATE="$HOME/.cache/hypr-battery-saver"
enable() {
mkdir -p "$(dirname "$STATE")"
echo "Enabling battery saver mode..."
# Save brightness
brightnessctl get > "''${STATE}.brightness" 2>/dev/null || true
# Kill heavy UI components
pkill -f caelestia-shell || true
pkill -f caelestia || true
pkill shell || true
pkill -f custom-wallpaper || true
# Start lightweight notifications
pkill swaync || true
swaync & disown
# Start lightweight waybar
pkill waybar || true
waybar & disown
# Lower refresh rate (BIGGEST win)
hyprctl keyword monitor "eDP-1,2560x1600@60,0x0,1"
# Core performance toggles
hyprctl --batch "\
keyword animations:enabled 0;\
keyword animation borderangle,0;\
keyword decoration:shadow:enabled 0;\
keyword decoration:blur:enabled 0;\
keyword decoration:rounding 0;\
keyword decoration:fullscreen_opacity 1;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:active_opacity 1;\
keyword decoration:inactive_opacity 1;\
keyword misc:vfr true"
# Lower brightness
brightnessctl set 5% 2>/dev/null || true
touch "$STATE"
notify-send "Battery Saver" "Enabled"
}
disable() {
echo "Disabling battery saver mode..."
# Restore refresh rate
hyprctl keyword monitor "eDP-1,2560x1600@165,0x0,1"
# Restore Caelestia
pkill swaync || true
pkill waybar || true
caelestia shell -d >/dev/null 2>&1 &
disown
# Restart wallpaper
custom-wallpaper >/dev/null 2>&1 &
disown
# Restore full UI via reload (safe here on exit)
hyprctl reload
# Restore brightness
if [[ -f "''${STATE}.brightness" ]]; then
brightnessctl set "$(cat "''${STATE}.brightness")" 2>/dev/null || true
fi
rm -f "$STATE" "''${STATE}.brightness"
notify-send "Battery Saver" "Disabled"
}
if [[ -f "$STATE" ]]; then
disable
else
enable
fi
'';
};
# Old script that was used for the battery. Might not work.
packages.custom-olddeprecatedbatterynotify = pkgs.writeShellApplication {
name = "custom-olddeprecatedbatterynotify";
runtimeInputs = with pkgs; [
libnotify # provides notify-send
systemd # provides systemctl
];
text = ''
set -euo pipefail
LOW="''${BATTERY_LOW_THRESHOLD:-20}"
CRITICAL="''${BATTERY_CRITICAL_THRESHOLD:-5}"
FULL="''${BATTERY_FULL_THRESHOLD:-95}"
INTERVAL="''${BATTERY_INTERVAL:-30}"
ACTION="''${BATTERY_CRITICAL_ACTION:-systemctl suspend}"
notify() {
notify-send -a "Battery" -u "$1" "$2" "$3"
}
get_info() {
total=0
count=0
for bat in /sys/class/power_supply/BAT*; do
[ -f "$bat/capacity" ] || continue
capacity=$(<"$bat/capacity")
status=$(<"$bat/status")
total=$((total + capacity))
count=$((count + 1))
done
[ "$count" -gt 0 ] || exit 0
percentage=$((total / count))
}
last_state=""
while true; do
get_info
if [[ "$status" == "Discharging" && "$percentage" -le "$CRITICAL" ]]; then
notify critical "Battery Critically Low" "$percentage% — suspending."
$ACTION
elif [[ "$status" == "Discharging" && "$percentage" -le "$LOW" ]]; then
if [[ "$last_state" != "low" ]]; then
notify normal "Battery Low" "$percentage% remaining."
last_state="low"
fi
elif [[ "$status" != "Discharging" && "$percentage" -ge "$FULL" ]]; then
if [[ "$last_state" != "full" ]]; then
notify normal "Battery Full" "$percentage% — unplug charger."
last_state="full"
fi
else
last_state=""
fi
sleep "$INTERVAL"
done
'';
};
};
flake.homeModules.cbatticon = _: {
# don't works. some GTK error. I let it here if someday, someone is interest in this shit.
# ChatGPT half baked a replacement that works on my system.
# see qtbatticon
services.cbatticon = {
enable = true;
lowLevelPercent = 20;
criticalLevelPercent = 5;
batteryId = "BAT1";
hideNotification = true; # we use another script for battery notifications
updateIntervalSeconds = 10;
};
};
}
+18 -2
View File
@@ -1,10 +1,26 @@
_: {
flake.nixosModules.hardwareUtils-laptop = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
flake.nixosModules.hardwareUtils-laptop = {pkgs-unstable, ...}: {
environment.systemPackages = with pkgs-unstable; [
# used for the framework 16 laptop
framework-tool
framework-tool-tui
vial # Open-source GUI and QMK fork for configuring your keyboard in real time
netwatch
(diskwatch.override {
withSmartmontools = true;
})
syswatch
];
services.fwupd.enable = true; # update device firmware
};
flake.nixosModules.hardwareUtils-desktop = {pkgs-unstable, ...}: {
environment.systemPackages = with pkgs-unstable; [
netwatch
(diskwatch.override {
withSmartmontools = true;
})
syswatch
];
services.fwupd.enable = true; # update device firmware
};
}
+2 -2
View File
@@ -29,6 +29,7 @@
fonts
games
hardware-configuration-desktop
hardwareUtils-desktop
hdd
hledger
hledger-desktop
@@ -38,7 +39,6 @@
latex
ly
mathematics
mullvad
networking
nixUtils
notifications
@@ -51,6 +51,7 @@
rss
udev
user
vpn
];
};
flake.homeModules.desktop = {...}: {
@@ -68,7 +69,6 @@
hyprland-desktop
kitty
librewolf
mullvad
neovim
nix-git-cherry-picker-desktop
desktop-notewrapper
+3 -2
View File
@@ -23,10 +23,12 @@
bootloader
browsers
caelestia
cs-119l # I'm obliged to use vscode. RIP neovim
development
documentation
disk
disk-laptop
epfl
fonts
gitBackup
hardware-configuration-laptop
@@ -39,7 +41,6 @@
latex
ly
mathematics
mullvad
networking
nixUtils-laptop
nixUtils
@@ -51,6 +52,7 @@
rss
udev
user
vpn
];
};
flake.homeModules.laptop = {...}: {
@@ -69,7 +71,6 @@
hyprland-laptop
kitty
librewolf
mullvad
neovim
nix-git-cherry-picker-laptop
laptop-notewrapper
+12
View File
@@ -44,6 +44,18 @@ _: {
command = "${pkgs-unstable.nixos-rebuild}/bin/nixos-rebuild";
options = ["NOPASSWD"];
}
{
command = "/run/current-system/sw/bin/open";
options = ["NOPASSWD"];
}
{
command = "${pkgs.openconnect}/bin/openconnect";
options = ["NOPASSWD"];
}
{
command = "${pkgs-unstable.openconnect}/bin/openconnect";
options = ["NOPASSWD"];
}
];
}
];
+6
View File
@@ -13,5 +13,11 @@
group = "users";
mode = "0400";
};
age.secrets.epfl = {
file = ../../secrets/epfl.age;
owner = "tomasr";
group = "users";
mode = "0400";
};
};
}
@@ -4,8 +4,8 @@
libnotify # Library that sends desktop notifications to a notification daemon
socat # Utility for bidirectional data transfer between two independent data channels (used to communicate between hyprland and awww to change wallpapers dinamically)
# battery notifications
self.packages.${pkgs.system}.custom-batterynotify
self.packages.${pkgs.system}.custom-batterywarning
/*self.packages.${pkgs.system}.custom-batterynotify
self.packages.${pkgs.system}.custom-batterywarning*/
self.packages.${pkgs.system}.custom-gitnotify # checks if git is set up
self.packages.${pkgs.system}.custom-checkKdrive # check if kdrive is set up with rclone
zoom-us
+65
View File
@@ -0,0 +1,65 @@
{self, ...}: {
flake.nixosModules.epfl = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
openconnect
self.packages.${pkgs.system}.custom-mountEpflDrive
];
};
flake.nixosModules.cs-119l = {pkgs, ...}: let
user = "tomasr";
home = "/home/${user}";
src = "${home}/epfl/cs-119l-ICC/";
dst = "${home}/kdrive/Travail/2 - Bachelor/BA1/Information, calcul, communication CS-119l/code/";
in {
environment.systemPackages = with pkgs; [
vscode-fhs
];
systemd.services.sync-cs119l-to-kdrive = {
description = "Sync CS-119l ICC to kDrive";
serviceConfig = {
Type = "oneshot";
User = user;
ExecStart = "${pkgs.rsync}/bin/rsync -a '${src}' '${dst}'";
};
};
systemd.timers.sync-cs119l-to-kdrive = {
description = "Sync CS-119l ICC to kDrive every Thursday and Friday evening";
wantedBy = ["timers.target"];
timerConfig = {
OnCalendar = [
"Thu *-*-* 20:00:00"
"Fri *-*-* 20:00:00"
];
Persistent = true;
};
};
};
perSystem = {pkgs, ...}: {
packages.custom-mountEpflDrive = pkgs.writeShellApplication {
name = "custom-mountEpflDrive";
runtimeInputs = with pkgs; [
rclone
libnotify
];
text = ''
REMOTE_NAME="epfl"
MOUNT_POINT="$HOME/epfl/drive"
if rclone listremotes | rg "^''${REMOTE_NAME}:"; then
echo "Mounting ''${REMOTE_NAME}..."
rclone mount "''${REMOTE_NAME}:" "$MOUNT_POINT" --vfs-cache-mode writes --allow-non-empty &
else
notify-send "rclone mount failed" \
"Remote ''${REMOTE_NAME} not found.\nConfigure rclone and create the dir ~/epfl/drive/ or comment out the exec line in hyprland.lua."
echo "Remote ''${REMOTE_NAME} not found. Configure rclone or comment out the exec line in hyprland.lua."
fi
'';
};
};
}
+1
View File
@@ -45,6 +45,7 @@
nix-index
statix
self.packages.${pkgs-unstable.system}.custom-trimmer
nix-update # nix-update <package> --build --test --format # the review will be done by nixpkgs-review-gha
];
};
perSystem = {pkgs, ...}: {
+2 -3
View File
@@ -1,7 +1,7 @@
{self, ...}: {
flake.nixosModules.otherUtils =
# try to keep packages here at a minium. Preferably use a dedicated file
{pkgs, ...}: {
{pkgs, pkgs-unstable, ...}: {
environment.systemPackages = with pkgs; [
gnome-calculator
snapshot
@@ -18,8 +18,7 @@
usbutils # used for lsusb
self.packages.${pkgs.system}.custom-tomato
self.packages.${pkgs.system}.custom-syllabes
# Electron 39 EOL. https://github.com/bitwarden/clients/pull/20448 should move it to 41. For the moment use the browser extension
#pkgs-unstable.bitwarden-desktop
pkgs-unstable.bitwarden-desktop
fluffychat # matrix client
];
};
+100
View File
@@ -0,0 +1,100 @@
# config for openconnect is in ./epfl.nix
{self, ...}: {
flake.nixosModules.vpn = {pkgs,...}: {
services.mullvad-vpn = {
enable = true;
};
environment.systemPackages = [
self.packages.${pkgs.system}.custom-vpn-picker
];
age.secrets.epfl = {
file = ../../secrets/epfl.age;
};
};
perSystem = {pkgs, ...}: {
packages.custom-vpn-picker = pkgs.writeShellApplication {
name = "custom-vpn-picker";
runtimeInputs = with pkgs; [
fzf
mullvad-compass
mullvad
openconnect
gawk
wl-clipboard
cliphist
];
text = ''
mullvad_connect () {
mullvad disconnect
mullvad relay set location "$1"
mullvad connect
}
profiles=(
"mullvad-best"
"mullvad-zurich"
"mullvad-tirana"
"mullvad-bogota"
"epfl"
"disconnect"
)
selected=$(printf "%s\n" "''${profiles[@]}" |
fzf --height 8 --reverse --prompt="Select vpn:")
[[ -z "$selected" ]] && exit 0
if [[ "$selected" == "mullvad-best" ]]; then
mullvad_connect "$(
mullvad-compass |
awk '/Best server:/ {
getline
split($1, a, "-")
print a[1]
}'
)"
elif [[ "$selected" == "mullvad-zurich" ]]; then
mullvad_connect ch
elif [[ "$selected" == "mullvad-tirana" ]]; then
mullvad_connect al
elif [[ "$selected" == "mullvad-bogota" ]]; then
mullvad_connect co
elif [[ "$selected" == "epfl" ]]; then
# shellcheck disable=SC1091
source /run/agenix/epfl
# Put password in clipboard so it can be pasted into openconnect.
printf '%s' "$EPFL_VPN_PASSWORD" | wl-copy
sudo openconnect \
--background \
--pid-file="$HOME/.local/state/epfl-openconnect.pid" \
--server="$EPFL_VPN_SERVER" \
--user="$EPFL_VPN_USER"
# Remove the password from cliphist and clear the current clipboard.
cliphist delete-query "$EPFL_VPN_PASSWORD" || true
wl-copy --clear
elif [[ "$selected" == "disconnect" ]]; then
if [[ -f "$HOME/.local/state/epfl-openconnect.pid" ]]; then
sudo kill "$(cat "$HOME/.local/state/epfl-openconnect.pid")" 2>/dev/null || true
fi
mullvad disconnect
rm "$HOME/.local/state/epfl-openconnect.pid"
fi
pkill -f "kitty.*Select vpn option" || true
exit
'';
};
};
}
+155 -10
View File
@@ -38,6 +38,7 @@ local function close_other_windows()
end
end
local wallpapers_enabled = true
local wallpapers = {
[1] = "WALLPAPER1/PATH/PLACEHOLDER",
[2] = "WALLPAPER2/PATH/PLACEHOLDER",
@@ -51,13 +52,144 @@ local wallpapers = {
[10] = "WALLPAPER5/PATH/PLACEHOLDER",
}
hl.on("workspace.active", function(workspace)
local function set_wallpaper(workspace)
if not wallpapers_enabled then
return
end
local wallpaper = wallpapers[workspace.id]
if wallpaper then
hl.exec_cmd("awww img -t none " .. wallpaper)
end
end)
end
hl.on("workspace.active", set_wallpaper)
local performance_mode = false
local saved_brightness = nil
local function get_brightness()
local handle = io.popen("brightnessctl get 2>/dev/null")
if not handle then
return nil
end
local value = handle:read("*a")
handle:close()
if not value then
return nil
end
value = value:gsub("%s+$", "")
return tonumber(value)
end
local function set_performance_mode()
if performance_mode then
hl.monitor({
output = "eDP-1",
mode = "2560x1600@165",
position = "0x0",
scale = 1,
})
hl.exec_cmd("pkill swaync || true")
hl.exec_cmd("pkill waybar || true")
hl.exec_cmd("caelestia shell -d")
if saved_brightness then
hl.exec_cmd("brightnessctl set " .. saved_brightness)
end
saved_brightness = nil
wallpapers_enabled = true
performance_mode = false
hl.exec_cmd("hyprctl reload")
local workspace = hl.get_active_workspace()
if workspace then
set_wallpaper(workspace)
end
hl.notification.create({
text = "Battery Saver",
subtext = "Disabled",
timeout = 3000,
})
return
end
-- Save current brightness.
saved_brightness = get_brightness()
-- Lower refresh rate.
hl.monitor({
output = "eDP-1",
mode = "2560x1600@60",
position = "0x0",
scale = 1,
})
-- Stop heavy UI components.
hl.exec_cmd("pkill -f caelestia-shell || true")
hl.exec_cmd("pkill -f caelestia || true")
-- Start lightweight notification daemon.
hl.exec_cmd("pkill swaync || true")
hl.exec_cmd("swaync")
-- Start lightweight status bar.
hl.exec_cmd("pkill waybar || true")
hl.exec_cmd("waybar")
-- Disable expensive Hyprland effects.
hl.config({
animations = {
enabled = false,
},
decoration = {
shadow = {
enabled = false,
},
blur = {
enabled = false,
},
rounding = 0,
fullscreen_opacity = 1,
active_opacity = 1,
inactive_opacity = 1,
},
general = {
gaps_in = 0,
gaps_out = 0,
border_size = 1,
},
misc = {
vfr = 1,
},
})
-- Lower brightness.
hl.exec_cmd("brightnessctl set 5%")
-- Disable workspace wallpaper switching.
wallpapers_enabled = false
performance_mode = true
hl.notification.create({
text = "Battery Saver",
subtext = "Enabled",
timeout = 3000,
})
end
hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
@@ -168,22 +300,29 @@ hl.bind(mod .. " + D", hl.dsp.layout("move +col"))
hl.bind(mod .. " + T", hl.dsp.exec_cmd(term))
hl.bind(mod .. " + E", hl.dsp.exec_cmd(file))
hl.bind(mod .. " + F", hl.dsp.exec_cmd(browser))
hl.bind(mod .. " + N", hl.dsp.exec_cmd(notes))
hl.bind(mod .. " + N", hl.dsp.exec_cmd("kitty --hold --class \"custom-vpn-picker\" --name \"Select vpn option\" custom-vpn-picker"))
hl.bind(mod .. " + SHIFT + A", hl.dsp.exec_cmd("caelestia shell drawers toggle launcher"))
hl.bind(mod .. " + Q", close_or_move_special)
hl.bind("CTRL + ALT + W", hl.dsp.exec_cmd("caelestia shell drawers toggle sidebar"))
local function toggle_sidebar()
if performance_mode then
hl.exec_cmd("swaync-client -t")
else
hl.exec_cmd("caelestia shell drawers toggle sidebar")
end
end
hl.bind("CTRL + ALT + W", toggle_sidebar)
hl.bind(mod .. " + L", hl.dsp.exec_cmd("caelestia shell lock lock"))
hl.bind("F11", hl.dsp.exec_cmd("caelestia screenshot"))
hl.bind(mod .. " + SHIFT + S", hl.dsp.exec_cmd("caelestia shell picker open"))
hl.bind(mod .. " + CTRL + 6", close_other_windows)
hl.bind("CTRL + ALT + 7", hl.dsp.exec_cmd("custom-performance"))
hl.bind("CTRL + ALT + 7", set_performance_mode)
hl.bind("CTRL + ALT + 1", hl.dsp.exec_cmd("caelestia shell drawers toggle sidebar"))
hl.bind(mod .. " + CTRL + 4", hl.dsp.exec_cmd("caelestia shell notifs toggleDnd"))
hl.bind(mod .. " + CTRL + 3", hl.dsp.exec_cmd("pavucontrol"))
hl.bind("CTRL + SHIFT + ALT + 0", hl.dsp.exec_cmd("kitty --hold --class \"custom-changeAudioOutput\" --name \"Select audio output\" zsh -c \"custom-changeAudioOutput\""))
hl.bind(mod .. " + CTRL + 5", hl.dsp.exec_cmd("gnome-characters"))
hl.bind("CTRL + ALT + 8", hl.dsp.exec_cmd("hyprpicker | tee >(wl-copy) | cliphist store"))
hl.bind("CTRL + ALT + 0", hl.dsp.exec_cmd("custom-tomato"))
-- hl.bind("CTRL + ALT + 0", hl.dsp.exec_cmd("custom-tomato"))
hl.bind("CTRL + ALT + 2", hl.dsp.exec_cmd("custom-bottom"))
hl.bind("CTRL + ALT + 9", hl.dsp.exec_cmd("anki"))
@@ -673,6 +812,13 @@ hl.window_rule({
float = true,
size = "400 225",
})
hl.window_rule({
match = {
class = "^(custom-vpn-picker)$",
},
float = true,
size = "350 250",
})
hl.window_rule({
match = {
@@ -780,7 +926,6 @@ hl.config({
hl.on("hyprland.start", function()
hl.exec_cmd("/nix/store/8kih8alkk4qzgjchg5501r1c3a8a71aw-dbus-1.16.2/bin/dbus-update-activation-environment --systemd DISPLAY HYPRLAND_INSTANCE_SIGNATURE WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE && systemctl --user stop hyprland-session.target && systemctl --user start hyprland-session.target")
hl.exec_cmd("qtbatticon")
hl.exec_cmd("source /run/agenix/ntfy && nixpkgs-notifier listen")
hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
hl.exec_cmd("dbus-update-activation-environment --systemd --all")
@@ -790,12 +935,12 @@ hl.on("hyprland.start", function()
hl.exec_cmd("udiskie --no-automount --smart-tray")
hl.exec_cmd("nm-applet --indicator")
hl.exec_cmd("rm -rf ~/.cache/cliphist/ && wl-paste --type text --watch cliphist store & wl-paste --type image --watch cliphist store")
hl.exec_cmd("custom-batterynotify")
hl.exec_cmd("custom-batterywarning")
-- hl.exec_cmd("custom-batterynotify")
-- hl.exec_cmd("custom-batterywarning")
hl.exec_cmd("awww img WALLPAPER/PATH/PLACEHOLDER")
hl.exec_cmd("awww-daemon")
hl.exec_cmd("sleep 1 && custom-wallpaper")
hl.exec_cmd("custom-checkKdrive && custom-mountkdrive")
hl.exec_cmd("custom-mountEpflDrive")
hl.exec_cmd("custom-gitnotify")
hl.exec_cmd("sleep 4 & caelestia-shell")
hl.exec_cmd("sleep 20 && ngcp pull --automatic")
+7
View File
@@ -0,0 +1,7 @@
age-encryption.org/v1
-> X25519 XuDyuQL0WjW/IvtzxswKnOfXlJa42Itdu+inNPsiNhw
3z2v3GbNdMvX9QtgAMrWZB/5Y1HatgpoXGQUMnW91+M
-> ssh-ed25519 +tvThg i3NM64rsEgRRgah4PKWdrl4i0pmP6X2bgr2Etzm33Ag
OwUETps78LPyjIAcJo8eC9eh0m9qtRUh399xGzMCTwQ
--- 7LnVrVnmfA8YubysLVeGyRGlLI+ef0VxnIHRi6rRAlc
W¾TîópF’X±áì‘làBTœÝ"^ï”�-þµ‹à¤û§÷Ÿ(üÛ'™ghÕóÎôGÜqx5FË~6Èï6DÎí¬gŒz…¾w·nñSÏHtß…ÌÂÓT«Úè›æŒÅó¤˜sød@°1!P""WHA$Ÿ�›,d68Ñ“õˆ�k“tù\qXÞHŽ®R=�vÕîŸZ
+4
View File
@@ -6,4 +6,8 @@ in {
backupAgeKey
laptopHostKey
];
"epfl.age".publicKeys = [
backupAgeKey
laptopHostKey
];
}