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

This commit is contained in:
Lennart J. Kurzweg (Nx2)
2026-01-04 14:24:59 +01:00
28 changed files with 290 additions and 316 deletions

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

@@ -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"

View File

@@ -4,7 +4,7 @@
# (gimp-with-plugins.override {
# plugins = with gimpPlugins; [ bimp ];
# })
gimp
unstable.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

@@ -307,7 +307,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;
@@ -410,7 +410,7 @@
bg = black.bright;
};
"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

@@ -32,6 +32,7 @@
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"'';

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

@@ -17,5 +17,6 @@
zoom-us
inkscape
audacity
gemini-cli
] else []);
}

View File

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

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,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

@@ -206,64 +206,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 = [