Add ssh and git configuration

This commit is contained in:
Nina Chlóe Kassandra Reiß
2026-04-20 15:59:52 +02:00
parent 482cb354d3
commit 64817ef4ff
22 changed files with 569 additions and 429 deletions

View File

@@ -1,80 +1,115 @@
{ config, pkgs, ... }:
let
profile = import ../profile.nix;
profile = import ../profile.nix;
in
{
imports = [
./editor.nix
./tex-environment.nix
];
imports = [
./editor.nix
./tex-environment.nix
];
home.packages = with pkgs; [
astyle
hyfetch
fzf-zsh
distrobox
home.packages = with pkgs; [
git
astyle
hyfetch
fzf-zsh
distrobox
];
programs.tmux = {
enable = true;
clock24 = true;
extraConfig = builtins.readFile ./external/tmux.conf;
};
programs.direnv.enable = true;
programs.direnv.nix-direnv.enable = true;
programs.git = {
enable = true;
settings = {
user = {
name = "Nina Chlóe Kassandra Reiß";
email = "nina.reiss@nickr.eu";
};
push = {
autoSetupRemote = true;
};
};
};
programs.ssh = {
enable = true;
enableDefaultConfig = true;
extraConfig = ''
Host git.nickr.eu
HostName git.nickr.eu
Port 22
Host nickr.eu
HostName nickr.eu
Port 222
Host nichkara.eu
HostName nichkara.eu
Port 222
Host git.nichkara.eu
HostName git.nichkara.eu
Port 22
'';
};
programs.zsh = {
enable = true;
enableCompletion = true;
autocd = true;
autosuggestion = {
enable = true;
};
syntaxHighlighting = {
enable = true;
};
history = {
size = 4096;
ignoreSpace = true;
ignorePatterns = [ ];
saveNoDups = true;
ignoreAllDups = true;
};
oh-my-zsh = {
enable = true;
theme = "sonicradish";
plugins = [
"git"
"z"
"dotenv"
"battery"
"emoji"
"emoji-clock"
"fzf"
"kitty"
"themes"
"tmux"
"vi-mode"
];
};
setOptions = [
"HIST_IGNORE_ALL_DUPS"
];
programs.tmux = {
enable = true;
clock24 = true;
extraConfig = ''
'';
};
programs.direnv.enable = true;
programs.direnv.nix-direnv.enable = true;
programs.zsh = {
enable = true;
enableCompletion = true;
autocd = true;
autosuggestion = {
enable = true;
};
syntaxHighlighting = {
enable = true;
};
history = {
size = 4096;
ignoreSpace = true;
ignorePatterns = [ ];
saveNoDups = true;
ignoreAllDups = true;
};
oh-my-zsh = {
enable = true;
theme = "sonicradish";
plugins = [
"git"
"z"
"dotenv"
"battery"
"emoji"
"emoji-clock"
"fzf"
"kitty"
"themes"
"tmux"
"vi-mode"
];
};
setOptions = [
"HIST_IGNORE_ALL_DUPS"
];
shellAliases = {
ll = "ls -lh";
nix-check = "nixos-rebuild build";
nix-update = "sudo nixos-rebuild switch";
sirc = "ssh -t nichkara.eu tmux new-session -A -s weechat weechat";
};
shellAliases = {
ll = "ls -lh";
nix-check = "nixos-rebuild build";
nix-update = "sudo nixos-rebuild switch";
sirc = "ssh -t nichkara.eu tmux new-session -A -s weechat weechat";
};
};
}

View File

@@ -1,25 +1,26 @@
{ config, pkgs, ... }:
let
profile = import ../profile.nix;
profile = import ../profile.nix;
in
{
home.packages = with pkgs; [
vim
fzf
ripgrep
ripgrep-all
ctags
lua54Packages.luarocks-nix
];
home.packages = with pkgs; [
vim
fzf
ripgrep
ripgrep-all
ctags
lua54Packages.luarocks-nix
nixfmt
];
programs.neovim = {
enable = true;
defaultEditor = true;
withPython3 = true;
withRuby = true;
withNodeJs = true;
viAlias = true;
vimAlias = true;
};
programs.neovim = {
enable = true;
defaultEditor = true;
withPython3 = true;
withRuby = true;
withNodeJs = true;
viAlias = true;
vimAlias = true;
};
}

87
terminal-environment/external/tmux.conf vendored Normal file
View File

@@ -0,0 +1,87 @@
##### CORE #####
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",xterm-256color:Tc"
set -g mouse on
set -g focus-events on
set -g history-limit 100000
set -g base-index 1
setw -g pane-base-index 1
##### TIMING / UX #####
set -g escape-time 10
set -g repeat-time 600
##### BELL / ACTIVITY #####
# Keine akustische Bell, nur visuell
set -g bell-action none
set -g visual-bell on
set -g visual-activity on
setw -g monitor-activity on
set -g activity-action none
# Window-Status bei Bell / Activity (Fallback-Styling)
set -g window-status-bell-style "fg=#ff5555,bold"
set -g window-status-activity-style "fg=#f1fa8c,bold"
##### COLORS (Dracula-ish) #####
set -g status-style "bg=#1e1f29,fg=#c0caf5"
set -g message-style "bg=#2a2b3d,fg=#c0caf5"
set -g pane-border-style "fg=#3b4261"
set -g pane-active-border-style "fg=#7aa2f7"
##### STATUS BAR #####
set -g status on
set -g status-interval 2
set -g status-position bottom
set -g status-justify left
set -g status-left-length 100
set -g status-right-length 100
##### LEFT: Session / Host #####
set -g status-left " \
#[fg=#7aa2f7,bold] #S#[default] \
#[fg=#565f89] #[fg=#9ece6a]#H#[default] \
"
##### WINDOW LIST #####
# Inactive windows
setw -g window-status-format " \
#[fg=#565f89] #I:#W#[default] \
#{?window_bell_flag,#[fg=#ff5555]🔔#[default],} \
"
# Active window
setw -g window-status-current-format " \
#[fg=#1e1f29,bg=#7aa2f7,bold] #I:#W#[default] \
#[fg=#1e1f29,bg=#7aa2f7]\
#{?window_bell_flag,🔔,}#[default] \
"
##### RIGHT: Clock only (no broken flags) #####
set -g status-right " \
#[fg=#565f89] #[fg=#7dcfff] %H:%M#[default] \
"
##### PANE INFO #####
set -g pane-border-status top
set -g pane-border-format " #[fg=#565f89]#P #[fg=#7aa2f7]#{pane_current_command}#[default] "
##### SMART SPLITS #####
bind | split-window -h
bind - split-window -v
#unbind '"'
#unbind %
##### COPY MODE (VI) #####
setw -g mode-keys vi
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi y send -X copy-selection
##### DIM INACTIVE PANES #####
set -g window-style "bg=#1a1b26"
set -g window-active-style "bg=#1e1f29"

View File

@@ -2,64 +2,64 @@
let
genv = pkgs.writeShellScriptBin "genv" ''
#!/usr/bin/env bash
set -e
#!/usr/bin/env bash
set -e
DISTRO="$1"
PRESET="$2"
DISTRO="$1"
PRESET="$2"
if [ -z "$DISTRO" ] || [ -z "$PRESET" ]; then
echo "Usage: genv <distro> <preset>"
exit 1
if [ -z "$DISTRO" ] || [ -z "$PRESET" ]; then
echo "Usage: genv <distro> <preset>"
exit 1
fi
PROJECT=$(basename "$PWD")
BOX="genv-$PROJECT"
# distro mapping
case "$DISTRO" in
ubuntu) IMAGE="docker.io/library/ubuntu:24.04" ;;
arch) IMAGE="docker.io/library/archlinux:latest" ;;
alpine) IMAGE="docker.io/library/alpine:latest" ;;
*) IMAGE="$DISTRO" ;;
esac
echo "[genv] image: $IMAGE"
# container nur erstellen wenn nötig
if ! distrobox list | grep -q "$BOX"; then
distrobox create --name "$BOX" --image "$IMAGE"
fi
mkdir -p .genv
# preset kopieren
cp ${./presets}/$PRESET.sh .genv/setup.sh
chmod +x .genv/setup.sh
# envrc generieren
cat > .envrc <<EOF
export GENV_BOX="$BOX"
# container starten
distrobox start "$GENV_BOX" >/dev/null 2>&1 || true
# setup einmalig
if [ ! -f .genv/.init ]; then
echo "[genv] setup läuft"
distrobox enter "$GENV_BOX" -- bash .genv/setup.sh
touch .genv/.init
fi
PROJECT=$(basename "$PWD")
BOX="genv-$PROJECT"
# distro mapping
case "$DISTRO" in
ubuntu) IMAGE="docker.io/library/ubuntu:24.04" ;;
arch) IMAGE="docker.io/library/archlinux:latest" ;;
alpine) IMAGE="docker.io/library/alpine:latest" ;;
*) IMAGE="$DISTRO" ;;
esac
echo "[genv] image: $IMAGE"
# container nur erstellen wenn nötig
if ! distrobox list | grep -q "$BOX"; then
distrobox create --name "$BOX" --image "$IMAGE"
# tmux workflow
if [ -z "$TMUX" ]; then
tmux new-session -A -s "$GENV_BOX" \
\; new-window -n editor "nvim" \
\; new-window -n dev "distrobox enter $GENV_BOX"
fi
EOF
mkdir -p .genv
# preset kopieren
cp ${./presets}/$PRESET.sh .genv/setup.sh
chmod +x .genv/setup.sh
# envrc generieren
cat > .envrc <<EOF
export GENV_BOX="$BOX"
# container starten
distrobox start "$GENV_BOX" >/dev/null 2>&1 || true
# setup einmalig
if [ ! -f .genv/.init ]; then
echo "[genv] setup läuft"
distrobox enter "$GENV_BOX" -- bash .genv/setup.sh
touch .genv/.init
fi
# tmux workflow
if [ -z "$TMUX" ]; then
tmux new-session -A -s "$GENV_BOX" \
\; new-window -n editor "nvim" \
\; new-window -n dev "distrobox enter $GENV_BOX"
fi
EOF
echo "[genv] fertig direnv allow"
echo "[genv] fertig direnv allow"
'';
in
{

View File

@@ -1,11 +1,11 @@
{ config, pkgs, ... }:
let
profile = import ../profile.nix;
profile = import ../profile.nix;
in
{
home.packages = with pkgs; [
texliveMedium
];
home.packages = with pkgs; [
texliveMedium
];
}