350 lines
8.8 KiB
Nix
350 lines
8.8 KiB
Nix
# In deiner home.nix
|
|
{ config, pkgs, ... }:
|
|
|
|
{
|
|
home.stateVersion = "25.11";
|
|
|
|
home.packages = with pkgs; [
|
|
# Desktop-Anwendungen
|
|
thunderbird
|
|
vlc
|
|
gimp
|
|
filezilla
|
|
solaar
|
|
jameica
|
|
|
|
libreoffice-fresh
|
|
hunspell
|
|
hunspellDicts.de_DE
|
|
|
|
darktable
|
|
# davinci-resolve-studio
|
|
|
|
# Browser
|
|
google-chrome
|
|
|
|
# Kommunikation
|
|
signal-desktop
|
|
|
|
# Remote Desktop
|
|
rustdesk-flutter
|
|
|
|
# Gaming
|
|
lutris
|
|
steam
|
|
|
|
# Entwicklung
|
|
jetbrains-toolbox
|
|
mkcert
|
|
gitflow
|
|
|
|
stow
|
|
gnumake
|
|
p7zip
|
|
cacert
|
|
|
|
gnomeExtensions.appindicator
|
|
gnomeExtensions.caffeine
|
|
gnomeExtensions.dash-to-dock
|
|
];
|
|
|
|
# Powerlevel10k Theme installieren
|
|
home.activation.installPowerlevel10k = config.lib.dag.entryAfter ["writeBoundary"] ''
|
|
P10K_DIR="$HOME/.oh-my-zsh/custom/themes/powerlevel10k"
|
|
if [ ! -d "$P10K_DIR" ]; then
|
|
$DRY_RUN_CMD mkdir -p "$HOME/.oh-my-zsh/custom/themes"
|
|
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 \
|
|
https://github.com/romkatv/powerlevel10k.git "$P10K_DIR" || true
|
|
fi
|
|
'';
|
|
|
|
# Flatpak Apps installieren
|
|
# HINWEIS: Diese werden beim ersten home-manager switch installiert
|
|
# Dandanch werden sie von Flatpak selbst verwaltet
|
|
home.activation.installFlatpakApps = config.lib.dag.entryAfter ["writeBoundary"] ''
|
|
# Flathub Remote hinzufügen (falls noch nicht vorhanden)
|
|
$DRY_RUN_CMD ${pkgs.flatpak}/bin/flatpak remote-add --if-not-exists --user \
|
|
flathub https://dl.flathub.org/repo/flathub.flatpakrepo || true
|
|
|
|
# Extension Manager
|
|
if ! ${pkgs.flatpak}/bin/flatpak list --user | grep -q "com.mattjakeman.ExtensionManager"; then
|
|
$DRY_RUN_CMD ${pkgs.flatpak}/bin/flatpak install --user -y flathub \
|
|
com.mattjakeman.ExtensionManager || true
|
|
fi
|
|
|
|
# Kdenlive (Video-Bearbeitung)
|
|
if ! ${pkgs.flatpak}/bin/flatpak list --user | grep -q "org.kde.kdenlive"; then
|
|
$DRY_RUN_CMD ${pkgs.flatpak}/bin/flatpak install --user -y flathub \
|
|
org.kde.kdenlive || true
|
|
fi
|
|
|
|
# PrismLauncher (Minecraft)
|
|
if ! ${pkgs.flatpak}/bin/flatpak list --user | grep -q "org.prismlauncher.PrismLauncher"; then
|
|
$DRY_RUN_CMD ${pkgs.flatpak}/bin/flatpak install --user -y flathub \
|
|
org.prismlauncher.PrismLauncher || true
|
|
|
|
mkdir -p /home/Programme/Minecraft/
|
|
chmod 2775 /home/Programme/Minecraft/
|
|
chgrp users /home/Programme/Minecraft/
|
|
# Minecraft-Verzeichnis Zugriff gewähren
|
|
$DRY_RUN_CMD ${pkgs.flatpak}/bin/flatpak override --user \
|
|
org.prismlauncher.PrismLauncher --filesystem=/home/Programme/Minecraft/ || true
|
|
fi
|
|
'';
|
|
|
|
# mkcert installieren (für lokale SSL-Zertifikate)
|
|
home.activation.setupMkcert = config.lib.dag.entryAfter ["writeBoundary"] ''
|
|
if [ ! -f "$HOME/.local/share/mkcert/rootCA.pem" ]; then
|
|
$DRY_RUN_CMD ${pkgs.mkcert}/bin/mkcert -install || true
|
|
fi
|
|
'';
|
|
|
|
dconf.settings = {
|
|
"org/gnome/desktop/wm/preferences" = {
|
|
button-layout = "appmenu:minimize,maximize,close";
|
|
};
|
|
"org/gnome/shell" = {
|
|
disable-user-extensions = false;
|
|
# Hier die IDs der Extensions eintragen
|
|
enabled-extensions = with pkgs.gnomeExtensions; [
|
|
appindicator.extensionUuid
|
|
caffeine.extensionUuid
|
|
dash-to-dock.extensionUuid
|
|
];
|
|
};
|
|
};
|
|
|
|
programs.git = {
|
|
enable = true;
|
|
|
|
settings = {
|
|
aliases = {
|
|
prune = "fetch --prune";
|
|
undo = "reset --soft HEAD^";
|
|
stash-all = "stash save --include-untracked";
|
|
graph = "log --graph --decorate --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'";
|
|
};
|
|
|
|
apply.whitespace = "fix";
|
|
|
|
branch = {
|
|
autosetuprebase = "remote";
|
|
sort = "-authordate";
|
|
};
|
|
|
|
"branch \"main\"" = {
|
|
remote = "origin";
|
|
merge = "refs/heads/main";
|
|
rebase = true;
|
|
};
|
|
|
|
color = {
|
|
ui = "auto";
|
|
branch = "auto";
|
|
diff = "auto";
|
|
status = "auto";
|
|
interactive = "auto";
|
|
pager = true;
|
|
};
|
|
|
|
"color \"branch\"" = {
|
|
current = "yellow reverse";
|
|
local = "yellow";
|
|
remote = "green";
|
|
};
|
|
|
|
"color \"diff\"" = {
|
|
meta = "yellow bold";
|
|
frag = "magenta bold";
|
|
old = "red bold";
|
|
new = "green bold";
|
|
whitespace = "red reverse";
|
|
};
|
|
|
|
"color \"diff-highlight\"" = {
|
|
oldNormal = "red bold";
|
|
oldHighlight = "red bold 52";
|
|
newNormal = "green bold";
|
|
newHighlight = "green bold 22";
|
|
};
|
|
|
|
"color \"status\"" = {
|
|
added = "yellow";
|
|
changed = "green";
|
|
untracked = "cyan";
|
|
};
|
|
|
|
core = {
|
|
pager = "less -FRSX";
|
|
whitespace = "fix,-indent-with-non-tab,trailing-space,cr-at-eol";
|
|
editor = "vim";
|
|
fileMode = false;
|
|
autocrlf = "input";
|
|
};
|
|
|
|
credential.helper = "cache";
|
|
|
|
diff.tool = "vimdiff";
|
|
difftool.prompt = false;
|
|
|
|
fetch.prune = true;
|
|
http.sslverify = false;
|
|
|
|
init.defaultBranch = "main";
|
|
|
|
merge.tool = "vimdiff";
|
|
mergetool.prompt = false;
|
|
|
|
pull.rebase = false;
|
|
|
|
push = {
|
|
default = "simple";
|
|
followTags = true;
|
|
};
|
|
|
|
rerere.enabled = 1;
|
|
|
|
status.showUntrackedFiles = "all";
|
|
};
|
|
|
|
ignores = [
|
|
".idea" # JetBrains IDEs
|
|
];
|
|
};
|
|
|
|
# Vim Konfiguration
|
|
programs.vim = {
|
|
enable = true;
|
|
defaultEditor = true;
|
|
|
|
settings = {
|
|
number = true;
|
|
relativenumber = true;
|
|
tabstop = 2;
|
|
shiftwidth = 2;
|
|
expandtab = true;
|
|
};
|
|
|
|
extraConfig = ''
|
|
syntax on
|
|
set encoding=utf-8
|
|
set autoindent
|
|
set smartindent
|
|
'';
|
|
};
|
|
|
|
# Zsh mit Oh-My-Zsh und Powerlevel10k
|
|
programs.zsh = {
|
|
enable = true;
|
|
enableCompletion = true;
|
|
autosuggestion.enable = true;
|
|
syntaxHighlighting.enable = true;
|
|
|
|
oh-my-zsh = {
|
|
enable = true;
|
|
theme = "powerlevel10k/powerlevel10k";
|
|
plugins = [
|
|
"command-not-found"
|
|
"common-aliases"
|
|
"docker"
|
|
"docker-compose"
|
|
"git"
|
|
"git-prompt"
|
|
"git-flow-avh"
|
|
"ssh-agent"
|
|
"systemd"
|
|
"sudo"
|
|
"rsync"
|
|
];
|
|
|
|
custom = "$HOME/.oh-my-zsh/custom";
|
|
};
|
|
|
|
shellAliases = {
|
|
ll = "ls -lah";
|
|
la = "ls -A";
|
|
l = "ls -CF";
|
|
".." = "cd ..";
|
|
"..." = "cd ../..";
|
|
rebuild = "sudo nixos-rebuild switch";
|
|
update = "sudo nixos-rebuild switch --upgrade";
|
|
c = "composer";
|
|
gclb = "git-cleanup-local-branches";
|
|
lzd = "lazydocker";
|
|
};
|
|
|
|
initContent = ''
|
|
# Powerlevel10k Konfiguration laden (falls vorhanden)
|
|
[[ -f ~/.p10k.zsh ]] && source ~/.p10k.zsh
|
|
|
|
function composer() {
|
|
mkdir -p "''${HOME}/.config/composer"
|
|
mkdir -p "''${HOME}/.cache/composer"
|
|
|
|
if ! ${pkgs.docker}/bin/docker network inspect db >/dev/null 2>&1; then
|
|
echo "Erstelle Docker-Netzwerk 'db'..."
|
|
${pkgs.docker}/bin/docker network create db
|
|
fi
|
|
|
|
SSH_AUTH_PATH=$(readlink -f "''${SSH_AUTH_SOCK:-/dev/null}")
|
|
|
|
docker run -t \
|
|
--rm \
|
|
--user ''$(id -u):33 \
|
|
--env COMPOSER_CACHE_DIR=/cache \
|
|
--env SSH_AUTH_SOCK=/ssh-agent \
|
|
--env CI_HOST \
|
|
--env CI_PROJECT_DIR \
|
|
--env ENVIRONMENT_NAME \
|
|
--env INSTANCE_ID \
|
|
--env ADDITIONAL_CONFIG_FILE \
|
|
--env TYPO3_CONTEXT \
|
|
--env STAGE \
|
|
--network db \
|
|
--volume "''${SSH_AUTH_PATH}":/ssh-agent \
|
|
--volume /etc/passwd:/etc/passwd:ro \
|
|
--volume "''${HOME}":"''${HOME}" \
|
|
--volume "''${HOME}/.config/composer":/tmp \
|
|
--volume "''${HOME}/.cache/composer":/cache \
|
|
--volume "''${PWD%/}":/app \
|
|
evoweb/php:composer $@
|
|
}
|
|
|
|
function git-cleanup-local-branches {
|
|
${pkgs.git}/bin/git fetch -p
|
|
|
|
FOR_EACH_REF=$(${pkgs.git}/bin/git for-each-ref --format '%(refname) %(upstream:track)' refs/heads)
|
|
GONE_BRANCHES=$(echo "''$FOR_EACH_REF" | ${pkgs.gawk}/bin/awk '$2 == "[gone]" {sub("refs/heads/", "", $1); print $1}')
|
|
|
|
if [ -z "''$GONE_BRANCHES" ]; then
|
|
echo "Found now orphan local branches."
|
|
exit 0
|
|
fi
|
|
|
|
for BRANCH in ''$GONE_BRANCHES; do
|
|
echo "Delete local branch: ''$BRANCH"
|
|
${pkgs.git}/bin/git branch -D "''$BRANCH"
|
|
done
|
|
}
|
|
|
|
function lazydocker() {
|
|
mkdir -p ''$HOME/.config/lazydocker
|
|
docker run --rm -it \
|
|
--volume /var/run/docker.sock:/var/run/docker.sock \
|
|
--volume ''$HOME/.config/lazydocker:/.config/jesseduffield/lazydocker \
|
|
lazyteam/lazydocker
|
|
}
|
|
'';
|
|
};
|
|
home.file.".p10k.zsh".source = ./config/p10k.zsh;
|
|
|
|
# GTK Theme (optional, für besseres Aussehen)
|
|
gtk = {
|
|
enable = true;
|
|
theme = {
|
|
name = "Adwaita-dark";
|
|
package = pkgs.gnome-themes-extra;
|
|
};
|
|
};
|
|
}
|