Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles

This commit is contained in:
Lennart J. Kurzweg (Nx2)
2026-01-17 17:25:23 +00:00
53 changed files with 746 additions and 675 deletions

View File

@@ -59,6 +59,8 @@ def get_ongoing_or_next_event(url, username, password):
for calendar in calendars:
for event in calendar.search(start=now):
if "VEVENT" not in event.data:
continue
calendar_parsed = Calendar(event.data)
for ics_event in calendar_parsed.events:
event_dict = {}
@@ -73,7 +75,7 @@ def get_ongoing_or_next_event(url, username, password):
return next_event_dict
except Exception as e:
print(f"Error accessing {url}: {str(e)[:30]}...")
print(f"Error accessing {url}: {str(e)}".splitlines()[0])
return None
def is_expired(event_dict: dict):
@@ -120,7 +122,7 @@ if __name__ == "__main__":
else:
time_string = "in " + hour_string + "and " + minu_string
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}")
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}".splitlines()[0])
'')
];
}

View File

@@ -22,7 +22,7 @@
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
shellInit = init;
} // pkgs.lib.mkIf (pkgs.version != "25.05") {
} // pkgs.lib.mkIf (pkgs.version != "25.11") {
profileExtra = init;
};
}

View File

@@ -1,6 +1,6 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
bitwarden
bitwarden-desktop
];
}

View File

@@ -33,13 +33,13 @@
read-only = true;
type = "ics";
}
# {
# name = "LEC";
# url = "https://${domain}/lec.ics";
# color = "#A87000";
# read-only = true;
# type = "ics";
# }
{
name = "LEC";
url = "https://${domain}/lec.ics";
color = "#A87000";
read-only = true;
type = "ics";
}
{
name = "Feiertage Hessen";
url = "https://ics.tools/Feiertage/hessen.ics";

View File

@@ -7,18 +7,19 @@ let
# "Caedrel"
# "EintrachtSpandau"
# "GamesDoneQuick"
"Odoamne"
# "Odoamne"
"iwdominate"
"imls"
# "imls"
"gdolphn"
"GRONKH"
"handofblood"
"HisWattson"
"Jankos"
# "Jankos"
# "KuruHS"
"LEC"
"lol_nemesis"
# "NASA"
"nattynattlol"
"NoWay4u_Sir"
# "OfficialMikeShinoda"
"Rekkles"
@@ -191,7 +192,7 @@ in {
},
"misc": {
"askOnTabVisibilityToggle": false,
"currentVersion": "2.5.3",
"currentVersion": "2.5.4",
"lockNotebookLayout": false
},
"similarity": {

View File

@@ -1,6 +1,4 @@
{ pkgs, ... }@all: with all;
lib.mkIf (hyper.host != "NxACE")
{
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
home.packages = with pkgs; [
thunderbird
];
@@ -136,36 +134,22 @@ lib.mkIf (hyper.host != "NxACE")
settings = OAuth2Settings;
};
};
# hsmw = with secrets.email.hsmw; {
# address = "${un}@hs-mittweida.de";
# userName = "${un}@hs-mittweida.de";
# pnx-nix = {
# address = secrets.email.pnx.mail;
# realName = "Lennart J. Kurzweg";
# imap = {
# port = 993;
# host = "xc.hs-mittweida.de";
# };
# smtp = {
# port = 587;
# host = "xc.hs-mittweida.de";
# tls.useStartTls = true;
# };
# flavor = "outlook.office365.com";
# signature = {
# text = ''
# MatNr: ${mnr}
# SemGr: ${semgr}
# About Me: https://nx2.site/about-me
# Contact: https://nx2.site/contact
# GPG: https://nx2.site/gpg
# Phönix Metallbau GmbH
# Tel: 036374 2270
# '';
# showSignature = "append";
# };
# thunderbird = {
# thunderbird = mkIf config.thunderbird.enable {
# enable = true;
# profiles = [ "nx2" ];
# settings = id: {
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
# };
# # The id given as argument is an automatically generated account identifier.
# # settings = OAuth2Settings;
# };
# };
tuda = with secrets.email.tuda; {
@@ -205,3 +189,35 @@ lib.mkIf (hyper.host != "NxACE")
# hsmw = with secrets.email.hsmw; {
# address = "${un}@hs-mittweida.de";
# userName = "${un}@hs-mittweida.de";
# realName = "Lennart J. Kurzweg";
# imap = {
# port = 993;
# host = "xc.hs-mittweida.de";
# };
# smtp = {
# port = 587;
# host = "xc.hs-mittweida.de";
# tls.useStartTls = true;
# };
# signature = {
# text = ''
# MatNr: ${mnr}
# SemGr: ${semgr}
# About Me: https://nx2.site/about-me
# Contact: https://nx2.site/contact
# GPG: https://nx2.site/gpg
# '';
# showSignature = "append";
# };
# thunderbird = {
# enable = true;
# profiles = [ "nx2" ];
# settings = id: {
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
# };
# };
# };

View File

@@ -122,7 +122,7 @@ in /* css */ ''
background-color: transparent !important;
}
header, footer {
background-color: rgba(0,0,0,1) !important;
background-color: rgba(0,0,0,0.5) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}

View File

@@ -115,7 +115,7 @@
'';
nx_backup = let
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
in pkgs.lib.mkIf (hyper.host == "NxXPS" || hyper.host == "NxNORTH") ''
in pkgs.lib.mkIf (hyper.isPersonal) ''
set RPATH (curl -s https://${hyper.domain}/latest-backup)
rsync -avz --info=progress2 -e "ssh -p ${builtins.toString secrets.ssh.port}" ${hyper.user}@ssh.${hyper.domain}:"$RPATH" ${destination}
'';

View File

@@ -1,9 +1,5 @@
{ pkgs, ... }@all: with all;
{
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
# (gimp-with-plugins.override {
# plugins = with gimpPlugins; [ bimp ];
# })
gimp
];
}

View File

@@ -5,13 +5,27 @@
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
];
programs.git = {
enable = true;
package = pkgs.gitFull;
userName = ''Lennart J. Kurzweg (Nx2)'';
userEmail = "git@${hyper.domain}";
programs = {
git = {
enable = true;
package = pkgs.gitFull;
settings = {
user = {
Name = ''Lennart J. Kurzweg (Nx2)'';
Email = "git@${hyper.domain}";
};
credential = {
"https://git.da.dicos.de".username = lib.mkIf (hyper.host == "NxDCS") "lkurzweg";
"https://git.da.dicos.de".password = lib.mkIf (hyper.host == "NxDCS") "Test";
};
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host == "NxDCS") "https://git.da.dicos.de/";
url."ssh://git@github.com/".insteadOf = "https://github.com/";
pull.rebase = false; # true
};
};
delta = {
enable = true;
enableGitIntegration = true;
options = {
line-numbers = true;
side-by-side = false;
@@ -19,36 +33,27 @@
whitespace-error-style = "22 reverse";
};
};
extraConfig = {
credential = {
"https://git.da.dicos.de".username = lib.mkIf (hyper.host == "NxDCS") "lkurzweg";
"https://git.da.dicos.de".password = lib.mkIf (hyper.host == "NxDCS") "Test";
};
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host == "NxDCS") "https://git.da.dicos.de/";
url."ssh://git@github.com/".insteadOf = "https://github.com/";
pull.rebase = false; # true
};
};
programs.lazygit = {
enable = true;
package = pkgs.lazygit;
settings = {
windowSize = "normal";
gui.theme = with rice.color; {
lightTheme = false;
activeBorderColor = [ foreground "bold" ];
inactiveBorderColor = [ border ];
optionsTextColor = [ tertiary.base ];
selectedLineBgColor = [ secondary.base ];
selectedRangeByColor = [ weird.bright ];
showRandomTip = true;
animateExplosion = true;
cherryPickedCommitFgColor = [ accent.base ]; # Foreground color of copied commit
cherryPickedCommitBgColor = [ secondary.dark ]; # Background color of copied commit
markedBaseCommitFgColor = [ accent.base ]; # Foreground color of marked base commit (for rebase)
markedBaseCommitBgColor = [ secondary.dark ]; # Background color of marked base commit (for rebase)
unstagedChangesColor = [ negative.base ]; # Color for file with unstaged changes
defaultFgColor = [ "default" ]; # Default text color
lazygit = {
enable = true;
package = pkgs.lazygit;
settings = {
windowSize = "normal";
gui.theme = with rice.color; {
lightTheme = false;
activeBorderColor = [ foreground "bold" ];
inactiveBorderColor = [ border ];
optionsTextColor = [ tertiary.base ];
selectedLineBgColor = [ secondary.base ];
selectedRangeByColor = [ weird.bright ];
showRandomTip = true;
animateExplosion = true;
cherryPickedCommitFgColor = [ accent.base ]; # Foreground color of copied commit
cherryPickedCommitBgColor = [ secondary.dark ]; # Background color of copied commit
markedBaseCommitFgColor = [ accent.base ]; # Foreground color of marked base commit (for rebase)
markedBaseCommitBgColor = [ secondary.dark ]; # Background color of marked base commit (for rebase)
unstagedChangesColor = [ negative.base ]; # Color for file with unstaged changes
defaultFgColor = [ "default" ]; # Default text color
};
};
};
};

View File

@@ -1,5 +1,10 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [ pinentry-all ];
home.packages = with pkgs; [
# pinentry-all
# pinentry-curses
pinentry-gtk2
# pinentry-tty
];
programs.gpg = {
enable = true;
package = pkgs.gnupg;

View File

@@ -212,7 +212,8 @@
}
{
name = "typst";
language-servers = [ "language-tool" "tinymist" ];
language-servers = [ "tinymist" ];
# language-servers = [ "language-tool" "tinymist" ];
}
{
name = "markdown";
@@ -298,7 +299,7 @@
base16 = with rice.color; {
"attributes" = foreground;
"comment" = {
fg = black.bright;
fg = subtle.base;
modifiers = [ "italic" ];
};
"constant" = accent.bright;
@@ -307,7 +308,7 @@
"constructor" = weird.base;
"debug" = yellow.base;
"diagnostic.modifiers" = [ "underline" ];
"diff.delta" = blue.bright;
"diff.delta" = subtle.bright;
"diff.minus" = negative.bright;
"diff.plus" = positive.bright;
"error" = red.base;
@@ -404,13 +405,13 @@
bg = black.base;
};
"ui.selection" = {
bg = white.dark;
bg = accent.dark;
};
"ui.selection.primary" = {
bg = black.bright;
bg = accent.dark;
};
"ui.statusline" = {
fg = blue.bright;
fg = accent.bright;
bg = black.base;
};
"ui.statusline.inactive" = {

View File

@@ -185,19 +185,27 @@ in {
];
};
gestures = {
workspace_swipe = true;
workspace_swipe_fingers = "4";
workspace_swipe_distance = "300";
workspace_swipe_invert = true;
workspace_swipe_min_speed_to_force = "30";
workspace_swipe_cancel_ratio = "0.5";
workspace_swipe_create_new = false;
workspace_swipe_direction_lock = false;
workspace_swipe_direction_lock_threshold = "10";
workspace_swipe_forever = true;
workspace_swipe_use_r = false;
};
# gestures = {
# workspace_swipe = true;
# workspace_swipe_fingers = "4";
# workspace_swipe_distance = "300";
# workspace_swipe_invert = true;
# workspace_swipe_min_speed_to_force = "30";
# workspace_swipe_cancel_ratio = "0.5";
# workspace_swipe_create_new = false;
# workspace_swipe_direction_lock = false;
# workspace_swipe_direction_lock_threshold = "10";
# workspace_swipe_forever = true;
# workspace_swipe_use_r = false;
# };
gesture = [
"4, horizontal, workspace"
# "3, down, mod: ALT, close"
# "3, up, mod: SUPER, scale: 1.5, fullscreen"
# "3, left, scale: 1.5, float"
];
dwindle = {
preserve_split = true; # you probably want this
@@ -278,7 +286,7 @@ in {
"dimaround, title:^(terminal-file-picker)$"
"center, title:^(terminal-file-picker)$"
"size 80% 80%, title:^(terminal-file-picker)$"
"size: 30% 30%, initialTitle:^(Select Calendar)$"
"size 30% 30%, initialTitle:^(Select Calendar)$"
];

View File

@@ -1,6 +1,4 @@
{ pkgs, ... }@all: with all;
lib.mkIf (hyper.host != "NxACE")
{
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
texlab # LSP
(texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; })

View File

@@ -32,9 +32,11 @@
thumbfast # thumbnails on timeline hover
# uosc # custom ui
sponsorblock
# visualizer
];
bindings = {
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
"F5" = ''set contrast 0;set brightness 0;set gamma 0;set saturation 0;set hue 0;set sub-pos 100;set sub-scale 1;set panscan 0;set zoom 0;show-text default'';
# "tab" = ''script-binding uosc/toggle-ui'';
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
# "right" = ''seek 5'';

View File

@@ -1,5 +1,4 @@
{ pkgs, ... }@all: with all;
{
{ pkgs, ... }@all: with all; {
home.packages = [
(pkgs.writeShellApplication {
name = "nx_backup";

View File

@@ -1,29 +1,60 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [
unstable.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 = {
# name = "Ollama (local)";
# npm = "@ai-sdk/openai-compatible";
# options = {
# baseURL = "http://localhost:11434/v1";
# };
# models = {
# "${model}" = {
# tools = true;
# };
# };
# };
# };
# };
};
programs.opencode = {
enable = true;
package = pkgs.opencode;
themes.theme = with rice.color; let
dl = color: { dark = color; light = color; };
in {
accent = dl accent.base;
background = dl background;
backgroundElement = dl subtle.dark;
backgroundPanel = dl subtle.darker;
border = dl subtle.base;
borderActive = dl border;
borderSubtle = dl subtle.dark;
diffAdded = dl positive.base;
diffAddedBg = dl positive.darker;
diffAddedLineNumberBg = dl positive.dark;
diffContext = dl foreground;
diffContextBg = dl subtle.dark;
diffHighlightAdded = dl positive.bright;
diffHighlightRemoved = dl negative.bright;
diffHunkHeader = dl foreground;
diffLineNumber = dl subtle.base;
diffRemoved = dl negative.base;
diffRemovedBg = dl negative.darker;
diffRemovedLineNumberBg = dl negative.dark;
error = dl negative.dark;
info = dl special.base;
markdownBlockQuote = dl accent.base;
markdownCode = dl secondary.base;
markdownCodeBlock = dl secondary.base;
markdownEmph = dl accent.base;
markdownHeading = dl accent.base;
markdownHorizontalRule = dl border;
markdownImage = dl accent.base;
markdownImageText = dl accent.bright;
markdownLink = dl accent.base;
markdownLinkText = dl accent.bright;
markdownListEnumeration = dl foreground;
markdownListItem = dl foreground;
markdownStrong = dl accent.base;
markdownText = dl foreground;
primary = dl accent.base;
secondary = dl secondary.base;
success = dl positive.base;
syntaxComment = dl subtle.base;
syntaxFunction = dl accent.base;
syntaxKeyword = dl special.base;
syntaxNumber = dl tertiary.base;
syntaxOperator = dl accent.base;
syntaxPunctuation = dl foreground;
syntaxString = dl accent.base;
syntaxType = dl tertiary.base;
syntaxVariable = dl accent.base;
text = dl foreground;
textMuted = dl subtle.bright;
warning = dl weird.base;
};
};
}

View File

@@ -14,5 +14,6 @@
wl-clipboard
xclip
wlr-randr
cava
];
}

View File

@@ -1,21 +1,23 @@
{ pkgs, hyper, ... }: {
home.packages = with pkgs; [
home.packages = (with pkgs; [
chromium
gnome-clocks
gnome-calculator
gnome-characters
gnome-2048
element-desktop
qbittorrent
wl-clipboard
xfce.thunar
] ++ (if (hyper.host != "NxACE") then [
]) ++ (if hyper.isWorkstation then (with pkgs; [
signal-desktop
unstable.code-cursor-fhs
latest.antigravity
element-desktop
obsidian
zoom-us
inkscape
audacity
] else []);
gemini-cli
libreoffice
]) else []);
}

View File

@@ -5,7 +5,7 @@
cmake
cmatrix
dig
du-dust
dust
dysk
exiftool
eza

View File

@@ -1,7 +1,7 @@
{ ... }: {
imports = [
./programming/c.nix
./programming/gleam.nix
# ./programming/gleam.nix
./programming/glsl.nix
./programming/go.nix
./programming/java.nix

View File

@@ -1,6 +1,4 @@
{ pkgs, ... }@all: with all;
lib.mkIf (hyper.host != "NxACE")
{
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
erlang
rebar3

View File

@@ -2,6 +2,6 @@
programs.go = {
enable = true;
package = pkgs.go;
goPath = "${config.xdg.dataHome}/go";
env.goPath = "${config.xdg.dataHome}/go";
};
}

View File

@@ -1,10 +1,9 @@
{ pkgs, ... }@all: with all;
{
{ pkgs, ... }@all: with all; {
home = let
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
ipython
requests
debugpy
# debugpy
black
uv
uv-build
@@ -13,7 +12,7 @@
packages = [
python-with-packages
] ++ (with pkgs; [
python311Packages.python-lsp-server
python313Packages.python-lsp-server
ruff
pyright
]);

View File

@@ -1,6 +1,7 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [
gdb
cargo
clippy
rustc

View File

@@ -1,6 +1,6 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [ rofi-wayland ];
packages = with pkgs; [ rofi ];
file = let # the home-manager module sucks
trdr = "${rice.lib.float-to-drune rice.transparency}";
ts = builtins.toString;

View File

@@ -3,31 +3,39 @@
programs.ssh = {
enable = true;
package = pkgs.openssh;
addKeysToAgent = "yes";
enableDefaultConfig = false;
matchBlocks = let
nxace = name: {
default = {
addKeysToAgent = "yes";
forwardAgent = false;
compression = false;
serverAliveInterval = 0;
serverAliveCountMax = 3;
hashKnownHosts = false;
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no";
controlPath = "~/.ssh/master-%r@%n:%p";
controlPersist = "no";
};
nxace = name: default // {
host = name;
hostname = "ssh.${hyper.domain}";
user = "nx2";
port = 50022;
identityFile = "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}";
identityFile = [ "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}" ];
};
in {
"*".identityFile = [
"*" = default;
"ssh.nx2.site" = default // { identityFile = [
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"
"${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}"
"${hyper.home}/vault/ssh/tg-dm-informatik-tuda"
(pkgs.lib.mkIf (hyper.host == "NxDCS") "${hyper.home}/vault/ssh/dcsgit-lkurzweg-${hyper.host}")
];
"github.com".identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ];
"nxace" = nxace "nxace";
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
"nxgit" = (nxace "nxgit") // {
user = "git";
identityFile = "${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}";
# addKeysToAgent = "1h";
};
"${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}"
]; };
"tg.dm.informatik.tu-darmstadt.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/tg-dm-informatik-tuda" ]; };
"git.da.dicos.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/dcsgit-lkurzweg-${hyper.host}" ]; };
"github.com" = default // { identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ]; };
"nxace" = (nxace "nxace" );
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
};
};
services.ssh-agent = {

View File

@@ -1,8 +1,8 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
(writers.writePython3Bin "change_colors_json" {
libraries = with python3Packages; [ numpy pillow scikit-learn ];
home.packages = [
(pkgs.writers.writePython3Bin "change_colors_json" {
libraries = with pkgs.python3Packages; [ numpy pillow scikit-learn ];
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python */ ''
from colorsys import hls_to_rgb, rgb_to_hls
@@ -141,7 +141,10 @@
foreground = alter_l(accent, 0.9)
background = alter_l(accent, 0.05)
d = {
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "r") as f:
full_d = json.load(f)
full_d['${hyper.host}'] = {
"base": {
"foreground": list_to_hex(foreground),
"background": list_to_hex(background)
@@ -155,8 +158,8 @@
}
}
with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f:
f.write(json.dumps(d, indent=4))
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "w") as f:
f.write(json.dumps(full_d, indent=4))
'')
];
}

View File

@@ -1,5 +1,5 @@
{ pkgs, ... }@all: with all; let
nox-var = (pkgs.version != "24.05");
nox-var = (pkgs.pkgs-version != "24.05");
tfc = pkgs.unstable.xdg-desktop-portal-termfilechooser;
in {
home.packages = [
@@ -47,7 +47,7 @@ in {
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp directory"; }
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
(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.isServer) { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
# Navigation
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
@@ -160,6 +160,9 @@ in {
{ on = "<Tab>"; run = "spot"; desc = "Show Spot View"; }
# Tasks
{ on = "w"; run = "tasks:show"; desc = "Show Task View"; }
# Magic
{ on = "<C-h>"; run = "shell 'hx .' --block"; desc = "Open current directoy in Helix"; }
{ on = "<C-g>"; run = "shell 'lazygit' --block"; desc = "Open current directoy in Lazygit"; }
];
tasks.keymap = [
# Task
@@ -206,64 +209,62 @@ in {
};
opener = {
"edit" = [
{ run = ''hx "$0" "$@"''; desc = "Helix"; block = true; }
{ run = ''codium "$0" "$@"''; desc = "VS Code"; orphan = true; }
{ run = ''antigravity "$0" "$0"''; desc = "Antigravity"; orphan = true; }
{ run = ''cat "$0" "$@" | wl-copy''; desc = "Copy Contents"; }
{ run = ''hx "$@"''; desc = "Helix"; block = true; }
{ run = ''codium "$@"''; desc = "VS Code"; orphan = true; }
{ run = ''cat "$@" | wl-copy''; desc = "Copy Contents"; }
];
"play" = [
{ run = ''mpv "$0" "$@"''; desc = "mpv"; orphan = true; }
{ run = ''mpv --vf=negate "$0" "$@"''; desc = "mpv inverted"; orphan = true; }
{ run = ''mediainfo "$0"; echo "Press enter to return to yazi"; read''; block = true; desc = "Show mediainfo"; }
{ run = ''mpv "$@"''; desc = "MPV"; orphan = true; }
{ run = ''mpv --vf=negate "$@"''; desc = "MPV inverted"; orphan = true; }
{ run = ''mediainfo "$1"; echo "Press enter to return to yazi"; read''; block = true; desc = "Show mediainfo"; }
];
"archive" = [
{ run = ''unar "$0" "$@"''; desc = "Extract here"; }
{ run = ''tar -x "$0" "$@"''; desc = "tar -x"; }
{ run = ''unzip "$0" "$@"''; desc = "unzip"; }
{ run = ''unar "$@"''; desc = "Extract here"; }
{ run = ''tar -x "$@"''; desc = "tar -x"; }
{ run = ''unzip "$@"''; desc = "unzip"; }
];
"image" = [
{ run = ''imv "$0" "$@"''; desc = "imv"; orphan = true; }
{ run = ''gimp "$0" "$@"''; desc = "gimp"; orphan = true; }
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; }
{ run = ''exiftool "$0"; echo "Press enter to return to yazi"; read''; desc = "View Exif Data"; }
{ run = ''for f in "$0"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
{ run = ''imv "$@"''; desc = "IMV"; orphan = true; }
{ run = ''gimp "$@"''; desc = "Gimp"; orphan = true; }
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$1"''; desc = "swww wallpaper"; }
{ run = ''exiftool "$1"; echo "Press enter to return to yazi"; read''; desc = "View Exif Data"; }
{ run = ''for f in "$1"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
];
"svg" = [
{ run = ''inkscape "$0" "$@"''; desc = "inkscape"; orphan = true; }
{ run = ''firefox "$0" "$@"''; desc = "firefox"; orphan = true; }
{ run = ''inkscape "$@"''; desc = "Inkscape"; orphan = true; }
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
];
"font" = [
{ run = ''fontpreview "$0" "$@"''; desc = "fontpreview"; orphan = true; }
{ run = ''fontforge "$0" "$@"''; desc = "fortforge"; orphan = true; }
{ run = ''fontpreview "$@"''; desc = "Fontpreview"; orphan = true; }
{ run = ''fontforge "$@"''; desc = "Fortforge"; orphan = true; }
];
"document" = [
{ run = ''zathura "$0" "$@"''; desc = "zathura"; orphan = true; }
{ run = ''xournal "$0" "$@"''; desc = "xournal"; orphan = true; }
{ run = ''firefox "$0" "$@"''; desc = "firefox"; orphan = true; }
{ run = ''nxgs flip "$0" "$@"''; desc = "nxgs flip"; }
{ run = ''nxgs rotate "$0" "$@"''; desc = "nxgs rotate"; }
{ run = ''nxgs interactive-merge "$0" "$@"''; block = true; desc = "nxgs merge"; }
{ run = ''zathura "$@"''; desc = "Zathura"; orphan = true; }
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
];
"browser" = [
{ run = ''firefox "$0" "$@"''; desc = "firefox"; orphan = true; }
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$0" "$@"''; desc = "chromium"; orphan = true; }
{ run = ''w3m "$0" "$@"''; desc = "w3m"; }
{ run = ''lynx "$0" "$@"''; desc = "lynx"; }
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "Chromium"; orphan = true; }
{ run = ''w3m "$@"''; desc = "w3m"; }
{ run = ''lynx "$@"''; desc = "Lynx"; }
];
"office" = [
{ run = ''libreoffice "$0" "$@"''; desc = "libreoffice"; orphan = true; }
{ run = ''libreoffice --view "$0" "$@"''; desc = "libreoffice read-only"; orphan = true; }
{ run = ''libreoffice "$@"''; desc = "LibreOffice"; orphan = true; }
{ run = ''libreoffice --view "$@"''; desc = "LibreOffice read-only"; orphan = true; }
];
"shell" = [
{ run = ''bash -c "$0"; echo "Press enter to return to yazi"; read''; desc = "bash -c"; }
{ run = ''fish -c "$0"; echo "Press enter to return to yazi"; read''; desc = "fish -c"; }
{ run = ''sh -c "$0"; echo "Press enter to return to yazi"; read''; desc = "sh -c"; }
{ run = ''bash -c "$1"; echo "Press enter to return to yazi"; read''; desc = "bash -c"; }
{ run = ''fish -c "$1"; echo "Press enter to return to yazi"; read''; desc = "fish -c"; }
{ run = ''sh -c "$1"; echo "Press enter to return to yazi"; read''; desc = "sh -c"; }
];
"python" = [
{ run = ''python "$@"; echo "Press enter to return to yazi"; read''; desc = "python"; block = true; }
{ run = ''python "$@"; echo "Press enter to return to yazi"; read''; desc = "Python"; block = true; }
];
"directory" = [
{ run = ''lazygit "$0"''; desc = "lazygit"; }
{ run = ''lazygit "$1"''; desc = "LazyGit"; }
];
};
open.rules = [
@@ -326,27 +327,73 @@ in {
tabs = {
active = { fg = secondary.dark; bg = secondary.base; };
inactive = { fg = secondary.base; bg = secondary.dark; };
# sep_inner = { open = "[", close = "]" };
# sep_outer = { open = "[", close = "]" };
};
mode = {
main_main = { fg = yellow.bright; bg = yellow.dark; };
select_main = { fg = cyan.bright; bg = cyan.dark; };
unset_main = { fg = blue.bright; bg = blue.dark; };
main_alternative = { fg = yellow.brighter; bg = yellow.dark; };
select_alternative = { fg = cyan.brighter; bg = cyan.dark; };
unset_alternative = { fg = blue.brighter; bg = blue.dark; };
};
confirm = {
border = { fg = border; };
title = { fg = accent.bright; };
body = { fg = "#ff0000"; };
list = { fg = "#ff0000"; };
btn_yes = { fg = positive.base; bg = positive.dark; };
btn_no = { fg = negative.base; bg = negative.dark; };
btn_labels = [ " BET " " HELLNAW " ];
};
spot = {
border = { fg = border; };
title = { fg = accent.bright; };
tbl_col = { fg = accent.base; };
tbl_cell = { fg = secondary.base; };
};
notify = {
title_info = { fg = accent.base; };
title_warn = { fg = weird.base; };
title_error = { fg = special.base; };
};
pick = {
border = { fg = border; };
active = { fg = accent.base; };
inactive = { fg = subtle.base; };
};
status = {
separator_open = " "; #"";
separator_close = " "; #"";
separator_style = { fg = accent.base; bg = black.base; };
mode_normal = { fg = yellow.bright; bg = yellow.dark; };
mode_select = { fg = cyan.bright; bg = cyan.dark; };
mode_unset = { fg = blue.bright; bg = blue.dark; };
# sep_right = { open = ""; close = ""; };
# sep_left = { open = ""; close = ""; };
sepr_style = { fg = accent.base; bg = black.base; };
progress_label = { fg = secondary.base; bold = true; };
progress_normal = { fg = accent.base; bg = black.base; };
progress_error = { fg = negative.base; bg = black.base; };
permissions_t = { fg = special.base; };
permissions_r = { fg = accent.base; };
permissions_w = { fg = secondary.base; };
permissions_x = { fg = tertiary.base; };
permissions_s = { fg = special.base; };
perm_type = { fg = special.base; };
perm_read = { fg = accent.base; };
perm_write = { fg = secondary.base; };
perm_exec = { fg = tertiary.base; };
perm_sep = { fg = special.base; };
};
indicator = { # your "cursor"
parent = { fg = secondary.darker; bg = secondary.base; };
current = { fg = accent.darker; bg = accent.base; };
preview = { fg = secondary.base; bg = secondary.dark; };
# padding = { open = " "; close = " "; };
};
cmp = {
border = { fg = border; };
active = { fg = accent.base; };
inactive = { fg = subtle.base; };
# icon_file =
# icon_folder =
# icon_command
};
input = {
border = { fg = border; };
title = {};
value = {};
title = { fg = accent.bright; };
value = { fg = foreground; };
selected = { reversed = true; };
};
select = {
@@ -368,11 +415,11 @@ in {
separator_style = { fg = foreground; };
};
help = {
on = { fg = "#fe8019"; };
exec = { fg = "#83a598"; };
desc = { fg = "#928374"; };
hovered = { bg = "#504945"; bold = true; };
footer = { fg = "#3c3836"; bg = "#a89984"; };
on = { fg = accent.base; };
run = { fg = secondary.base; };
desc = { fg = tertiary.base; italic = true; };
hovered = { bg = accent.bright; bold = true; };
footer = { fg = accent.base; bg = subtle.dark; };
};
filetype = {
rules = [
@@ -380,17 +427,17 @@ in {
{ mime = "inode/x-empty"; fg = white.dark; }
{ mime = "inode/directory"; fg = accent.base; }
{ name = "*"; is = "link"; fg = tertiary.base; }
{ name = "*"; is = "orphan"; fg = negative.base; }
{ name = "*"; is = "block"; fg = special.base; }
{ name = "*"; is = "char"; fg = special.bright; }
{ name = "*"; is = "exec"; fg = secondary.base; }
{ name = "*"; is = "fifo"; fg = weird.base; }
{ name = "*"; is = "sock"; fg = weird.bright; }
{ name = "*"; is = "sticky"; fg = special.base; }
{ url = "*"; is = "link"; fg = tertiary.base; }
{ url = "*"; is = "orphan"; fg = negative.base; }
{ url = "*"; is = "block"; fg = special.base; }
{ url = "*"; is = "char"; fg = special.bright; }
{ url = "*"; is = "exec"; fg = secondary.base; }
{ url = "*"; is = "fifo"; fg = weird.base; }
{ url = "*"; is = "sock"; fg = weird.bright; }
{ url = "*"; is = "sticky"; fg = special.base; }
# Fallback
{ name = "*"; fg = foreground; }
{ url = "*"; fg = foreground; }
];
};
};
@@ -413,6 +460,13 @@ in {
" ",
}
end, 500, Status.RIGHT)
Header:children_add(function()
if ya.target_family() ~= "unix" then
return ""
end
return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
end, 500, Header.LEFT)
'';
plugins = with pkgs; {
inherit glow git;
@@ -424,11 +478,11 @@ in {
force = true;
text = ''
[filechooser]
cmd=${tfc}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
cmd=/home/nx2/wrapper.sh
default_dir=$HOME
env=TERMCMD=ghostty --title="terminal-file-picker -e"
open_mode=suggested
save_mode=last
save_mode=suggested
'';
};
portal = {