First attempts on using distrobox

This commit is contained in:
Nina Chlóe Kassandra Reiß
2026-04-08 21:55:18 +02:00
parent e474979699
commit 36585f4206
10 changed files with 139 additions and 62 deletions

View File

@@ -1,9 +0,0 @@
{ config, pkgs, lib, ... }:
let
profile = import ./profile.nix;
in
{
environment.systemPackages = with pkgs; [
openmodelica.combined
];
}

View File

@@ -1,9 +0,0 @@
{ config, pkgs, lib, ... }:
let
profile = import ./profile.nix;
in
{
environment.systemPackages = with pkgs; [
speed_dreams
];
}

View File

@@ -7,8 +7,8 @@ let
profile = import ./profile.nix;
in
{
imports =
[ # Include the results of the hardware scan.
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
./cron-schedule.nix
./home-manager.nix
@@ -18,16 +18,14 @@ in
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.extraModulePackages = with config.boot.kernelPackages; [
boot.extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
];
boot.kernelModules = [ "v4l2loopback" ];
boot.extraModprobeConfig = ''
boot.kernelModules = [ "v4l2loopback" ];
boot.extraModprobeConfig = ''
options v4l2loopback video_nr=10 card_label=snapcam exclusive_caps=1
'';
'';
networking.hostName = profile.hostname; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
@@ -87,7 +85,6 @@ boot.extraModprobeConfig = ''
environment.systemPackages = with pkgs; [
wget
strongswan
epiphany
nodejs_24
dive
podman-tui
@@ -140,7 +137,10 @@ boot.extraModprobeConfig = ''
# Enable the OpenSSH daemon.
services.openssh.enable = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
nixpkgs.config.allowUnfree = true;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions

View File

@@ -8,7 +8,7 @@ in
./browser.nix
./planner.nix
./window-manager.nix
../applications/matrix-element.nix
../applications/matrix.nix
];
environment.systemPackages = with pkgs; [

View File

@@ -25,6 +25,11 @@ in
home-manager.backupFileExtension = "bck.lck";
home-manager.users.${profile.username} = { pkgs, ... }: {
imports = [
./terminal-environment/genv
];
home.stateVersion = "25.11";
programs.git = {
enable = true;

View File

@@ -13,6 +13,7 @@ in
astyle
hyfetch
fzf-zsh
distrobox
];
programs.tmux = {

View 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 ];
}

View 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

View 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