Compare commits

...

4 commits

4 changed files with 60 additions and 11 deletions

View file

@ -7,6 +7,7 @@ the window names. Window name and class are obtained from piped stdin, to preven
needlessly keep restarting this program, which takes a while due to the interpreter starting
overhead.
"""
import json
import re
import sys
@ -50,9 +51,9 @@ class RemapRule:
# Rules will be applied in specified order
REMAP_RULES: list[RemapRule] = [
RemapRule(r"", "", ""),
RemapRule(r"(.*) — Mozilla Firefox", "{}", "firefox"),
RemapRule(r"Mozilla Firefox", "Mozilla Firefox", "firefox"),
RemapRule(r"Alacritty", "Alacritty", "Alacritty"),
RemapRule(r"(.*) — Mozilla Firefox", " {}", "firefox"),
RemapRule(r"Mozilla Firefox", " Mozilla Firefox", "firefox"),
RemapRule(r"Alacritty", " Alacritty", "Alacritty"),
RemapRule(
r"zsh;#toggleterm#1 - \(term:\/\/(.+)\/\/(\d+):(.+)\) - N?VIM",
" Terminal: {0}",
@ -63,13 +64,13 @@ REMAP_RULES: list[RemapRule] = [
RemapRule(r"(.+) - Discord", "{}", "discord"),
RemapRule(r"(?:\(\d+\) )?Discord \| (.+)", "{}", "vesktop"),
RemapRule(r"(.+) - mpv", "{}", "mpv"),
RemapRule(r"Stremio - (.+)", "Stremio - {}", r"(Stremio)|(com.stremio.stremio)"),
RemapRule(r"Spotify", " Spotify", "Spotify"),
RemapRule(r"pulsemixer", "Pulsemixer"),
RemapRule(r"Stremio - (.+)", " Stremio - {}", r"(Stremio)|(com.stremio.stremio)"),
RemapRule(r"Spotify((?: Premium)?)", " Spotify{}", "[Ss]potify"),
RemapRule(r"pulsemixer", " Pulsemixer"),
RemapRule(r"(.*)", "{}", "Pcmanfm"),
RemapRule(r"(.*)", "{}", "pcmanfm-qt"),
# Needs to be last
RemapRule(r"(.*)", "{}", "kitty"),
RemapRule(r"(.*)", " {}", "kitty"),
]
MAX_LENGTH = 65
@ -81,7 +82,9 @@ def iter_window() -> Iterator[tuple[str, str]]:
line = line.removesuffix("\n")
els = line.split(",", maxsplit=1)
if len(els) != 2:
raise ValueError(f"Expected 2 arguments from stdin line (name, class), but got {len(els)}")
raise ValueError(
f"Expected 2 arguments from stdin line (name, class), but got {len(els)}"
)
yield els[1], els[0]

View file

@ -54,29 +54,42 @@
enable = true;
persistentMountPoint = "/persist/home";
extraDirectories = [
# Nixos flake
"dots"
# Personal data
"Downloads"
"Personal"
"Media"
"dots"
# Browsers
".mozilla"
".mullvad"
".config/chromium"
# Applications
".config/spotify"
".config/vesktop"
".local/share/Smart Code ltd/Stremio"
# Tools
".local/share/gnupg"
".local/share/zoxide"
".local/share/wakatime"
".local/share/nvim"
".local/state/nvim"
".local/share/zsh"
".local/share/Smart Code ltd/Stremio"
# Services
".local/state/wireplumber" # volume settings
# Language package managers
".local/share/cargo"
".local/share/go"
];
extraFiles = [
".config/git/git-credentials"
".cache/walker/history.gob"
".local/share/zsh/zsh_history"
];
};

View file

@ -4,6 +4,7 @@ _: {
./generic.nix
./secure-boot.nix
./initrd.nix
./numlock.nix
./plymouth.nix
];
}

View file

@ -0,0 +1,32 @@
{ pkgs, ... }: {
boot.initrd.systemd = {
# Include setleds binary in the initrd
# (the nix store doesn't exists in there yet, so we need to include
# all of the necessary binaries ahead of time here)
extraBin = {
setleds = "${pkgs.kbd}/bin/setleds";
};
# Enable numlock in the early userspace (initrd)
# This will happen before we're asked for the disk decryption password
services."numlock" = {
enable = true;
description = "Activate Numlock";
wantedBy = [ "initrd.target" ];
# Delay disk decryption until this unit is started
before = [ "systemd-cryptsetup@cryptfs.service" ];
unitConfig.DefaultDependencies = "no";
serviceConfig.Type = "oneshot";
# This is essentially runs the same code as present in the
# mkinitcpio-numlock hook on Arch Linux (AUR).
script = ''
#!/bin/bash
for tty in /dev/tty{1..6}
do
/bin/setleds -D +num < "$tty";
done
'';
};
};
}