34 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
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
22 changed files with 278 additions and 38 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";
};
+2 -2
View File
@@ -1,4 +1,4 @@
{...}: {
_: {
flake.nixosModules.hyprland = {
pkgs,
pkgs-unstable,
@@ -39,7 +39,6 @@
text = ''
hl.on("hyprland.start", function()
hl.exec_cmd("qtbatticon")
hl.exec_cmd("source /run/agenix/ntfy && nixpkgs-notifier listen")
end)
hl.monitor({
@@ -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;
-13
View File
@@ -1,13 +0,0 @@
_: {
flake.nixosModules.mullvad = _: {
services.mullvad-vpn = {
enable = true;
};
};
flake.homeModules.mullvad = _: {
programs.mullvad-vpn = {
# gui
enable = true;
};
};
}
+2 -2
View File
@@ -8,7 +8,7 @@
force = true;
text = ''
{
"directory": ["~/kdrive/Notes/"],
"directory": ["~/Documents/Notes/"],
"render": true,
"jumpToEndOfFileOnLaunch": true,
"editor": "neovim",
@@ -18,7 +18,7 @@
"backup": {
"enable": true,
"directory": {
"~/kdrive/Notes/": "~/kdrive/Notes/"
"~/Documents/Notes/": "~/kdrive/Notes/"
},
"interval": "daily",
"rsyncArgs": ["-Lqah", "--update"],
+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";
+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
'';
};
};
}
+12 -5
View File
@@ -300,7 +300,7 @@ 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)
local function toggle_sidebar()
@@ -322,7 +322,7 @@ 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"))
@@ -812,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 = {
@@ -919,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")
@@ -929,11 +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("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
];
}