Establish baseline
This commit is contained in:
80
terminal-environment/config.nix
Normal file
80
terminal-environment/config.nix
Normal file
@@ -0,0 +1,80 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
profile = import ../profile.nix;
|
||||
in
|
||||
{
|
||||
|
||||
imports = [
|
||||
./editor.nix
|
||||
./tex-environment.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
astyle
|
||||
hyfetch
|
||||
fzf-zsh
|
||||
distrobox
|
||||
];
|
||||
|
||||
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";
|
||||
};
|
||||
};
|
||||
}
|
||||
25
terminal-environment/editor.nix
Normal file
25
terminal-environment/editor.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
profile = import ../profile.nix;
|
||||
in
|
||||
{
|
||||
|
||||
home.packages = with pkgs; [
|
||||
vim
|
||||
fzf
|
||||
ripgrep
|
||||
ripgrep-all
|
||||
ctags
|
||||
lua54Packages.luarocks-nix
|
||||
];
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
withPython3 = true;
|
||||
withRuby = true;
|
||||
withNodeJs = true;
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
};
|
||||
}
|
||||
67
terminal-environment/genv/default.nix
Normal file
67
terminal-environment/genv/default.nix
Normal file
@@ -0,0 +1,67 @@
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
genv = pkgs.writeShellScriptBin "genv" ''
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
DISTRO="$1"
|
||||
PRESET="$2"
|
||||
|
||||
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
|
||||
|
||||
# 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"
|
||||
'';
|
||||
in
|
||||
{
|
||||
home.packages = [ genv ];
|
||||
}
|
||||
11
terminal-environment/genv/presets/c.sh
Normal file
11
terminal-environment/genv/presets/c.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if command -v apt >/dev/null; then
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential cmake
|
||||
elif command -v pacman >/dev/null; then
|
||||
sudo pacman -Sy --noconfirm base-devel cmake
|
||||
elif command -v apk >/dev/null; then
|
||||
sudo apk add build-base cmake
|
||||
fi
|
||||
11
terminal-environment/genv/presets/data-science.sh
Normal file
11
terminal-environment/genv/presets/data-science.sh
Normal file
@@ -0,0 +1,11 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
if command -v apt >/dev/null; then
|
||||
sudo apt update
|
||||
sudo apt install -y python3
|
||||
elif command -v pacman >/dev/null; then
|
||||
sudo pacman -Sy --noconfirm base-devel python3
|
||||
elif command -v apk >/dev/null; then
|
||||
sudo apk add build-base python3
|
||||
fi
|
||||
11
terminal-environment/tex-environment.nix
Normal file
11
terminal-environment/tex-environment.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{ config, pkgs, ... }:
|
||||
let
|
||||
profile = import ../profile.nix;
|
||||
in
|
||||
{
|
||||
|
||||
home.packages = with pkgs; [
|
||||
texliveMedium
|
||||
];
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user