Compare commits

..

28 Commits

Author SHA1 Message Date
nichkara fc32cf76ea Enable printing in system 2026-05-23 13:10:51 +02:00
nichkara b5b05ac620 Change podman to docker for distrobox 2026-05-23 12:49:04 +02:00
Nina Chlóe Kassandra Reiß 579cd749a9 Remove home-manager from nixos configuration 2026-04-20 12:00:08 +02:00
Nina Chlóe Kassandra Reiß 36585f4206 First attempts on using distrobox 2026-04-08 21:55:18 +02:00
Nina Chlóe Kassandra Reiß e474979699 Add lua to neovim/editor configuration 2026-03-28 11:05:08 +01:00
Nina Chlóe Kassandra Reiß 1130a847a6 Add ctags support for neovim 2026-03-28 07:31:47 +01:00
Nina Chlóe Kassandra Reiß b474cabc0e Add speed dreams file (no-app-image) 2026-03-26 10:49:23 +01:00
Nina Chlóe Kassandra Reiß 810138e9d4 Add automount 2026-03-18 17:31:24 +01:00
Nina Chlóe Kassandra Reiß 5984cd8b3a Add ipsec vpn 2026-03-18 13:30:49 +01:00
Nina Chlóe Kassandra Reiß 1b1b8111ba Update network configuration 2026-03-18 13:17:08 +01:00
Nina Chlóe Kassandra Reiß 7834f74b01 Remove networkmanager and wireguard common packages 2026-03-18 13:10:10 +01:00
Nina Chloé Kassandra Reiß a8347ee783 Add wireguard support 2026-03-18 13:06:28 +01:00
Nina Chloé Kassandra Reiß 6bc88ba514 Adjust name 2026-03-18 13:03:16 +01:00
Nina Chloé Kassandra Reiß 2d1e641887 Update terminal environment 2026-03-18 13:01:23 +01:00
Nina Chloé Kassandra Reiß a433f8fdde Add dialout for usb access 2026-03-10 11:31:47 +01:00
Nina Chloe Kassandra Reiß 39a2703698 Add usb group for access 2026-03-10 11:30:15 +01:00
Nina Chloe Kassandra Reiß 9c5f8eff46 enable nix-ld for generic linux 2026-03-07 07:09:38 +01:00
Nina Chloe Kassandra Reiß 3d45ff4c86 Add network manager to toolbar 2026-03-06 10:40:42 +01:00
Nina Chloe Kassandra Reiß a82d1f592c Revert changes 2026-03-05 22:07:22 +01:00
Nina Chloe Kassandra Reiß f5a23fc052 Allow generic linux binaries over gnat installation 2026-03-05 22:04:25 +01:00
Nina Chloé Kassandra Reiß 6ebbbe16a7 Pin gnat version and install all required components 2026-03-05 21:49:08 +01:00
Nina Chloé Kassandra Reiß debeda83a6 . 2026-03-05 21:39:21 +01:00
Nina Chloé Kassandra Reiß 172714fd14 Have fluffychat as matrix client 2026-03-02 04:43:51 +01:00
Nina Chloé Kassandra Reiß d65e7d9e57 Configure podman as service 2026-03-02 04:43:38 +01:00
Nina Chloé Kassandra Reiß 51796232ad Revert "Setup lightdm as desktop manager"
This reverts commit 0e09603af7.
2026-03-01 12:53:52 +01:00
Nina Chloé Kassandra Reiß 199d69b79a Revert "revert 7f3f6dd12f979acfd6c3da163ec980002b4afd61"
This reverts commit 6272ac29f2.
2026-03-01 12:53:31 +01:00
nichkara 6272ac29f2 revert 7f3f6dd12f
revert Add gnome-keyring for keyring support
2026-03-01 12:52:30 +01:00
Nina Chloé Kassandra Reiß 0e09603af7 Setup lightdm as desktop manager 2026-03-01 12:43:11 +01:00
15 changed files with 437 additions and 167 deletions
@@ -4,6 +4,6 @@ let
in in
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
element-desktop fluffychat
]; ];
} }
-9
View File
@@ -1,9 +0,0 @@
{ config, pkgs, lib, ... }:
let
profile = import ./profile.nix;
in
{
environment.systemPackages = with pkgs; [
openmodelica.combined
];
}
+98 -18
View File
@@ -4,30 +4,47 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
let let
profile = import ./profile.nix; profile = import ./profile.nix;
in in
{ {
imports = imports = [
[ # Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
./cron-schedule.nix ./cron-schedule.nix
./home-manager.nix ./home-manager.nix
]; ];
# Bootloader. # Bootloader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback
];
boot.kernelModules = [ "v4l2loopback" ];
boot.extraModprobeConfig = ''
options v4l2loopback video_nr=10 card_label=snapcam exclusive_caps=1
'';
networking.hostName = profile.hostname; # Define your hostname. networking.hostName = profile.hostname; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Enable networking # Enable networking
networking.networkmanager.enable = true; networking.networkmanager = {
enable = true;
plugins = with pkgs; [
networkmanager-ssh
networkmanager-openvpn
networkmanager-strongswan
];
};
# Set your time zone. # Set your time zone.
time.timeZone = "Europe/Berlin"; time.timeZone = "Europe/Berlin";
# Select internationalisation properties. # Select internationalization properties.
i18n.defaultLocale = "de_DE.UTF-8"; i18n.defaultLocale = "de_DE.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
@@ -48,24 +65,87 @@ in
variant = ""; variant = "";
}; };
# Podman service setup
virtualisation.containers.enable = true;
virtualisation = {
podman = {
enable = true;
# Create a `docker` alias for podman, to use it as a drop-in replacement
dockerCompat = false;
# Required for containers under podman-compose to be able to talk to each other.
defaultNetwork.settings.dns_enabled = true;
};
};
# Configure console keymap # Configure console keymap
console.keyMap = "de-latin1"; console.keyMap = "de-latin1";
virtualisation.docker.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
wget wget
networkmanager strongswan
epiphany nodejs_24
nodejs_24 dive
podman podman-tui
podman-tui podman-compose
podman-compose docker-compose
gmp
gmp.dev
pkg-config
]; ];
programs.nix-ld = {
enable = true;
libraries = with pkgs; [
stdenv.cc.cc
zlib
gmp
openssl
curl
glib
gtk3
libGL
xorg.libX11
appimage-run
libgcrypt
libxcrypt
rclone
];
};
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
# Shows battery charge of connected devices on supported
# Bluetooth adapters. Defaults to 'false'.
Experimental = true;
# When enabled other devices can connect faster to us, however
# the tradeoff is increased power consumption. Defaults to
# 'false'.
FastConnectable = true;
};
Policy = {
# Enable all controllers when they are found. This includes
# adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'true'.
AutoEnable = true;
};
};
};
services.blueman.enable = true;
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh.enable = true; services.openssh.enable = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [
"nix-command"
"flakes"
];
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
# This value determines the NixOS release from which the default # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave # on your system were taken. Its perfectly fine and recommended to leave
+1 -1
View File
@@ -8,7 +8,7 @@ in
./browser.nix ./browser.nix
./planner.nix ./planner.nix
./window-manager.nix ./window-manager.nix
../applications/matrix-element.nix ../applications/matrix.nix
]; ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@@ -8,8 +8,8 @@ let
dotfiles_waybar = pkgs.fetchgit { dotfiles_waybar = pkgs.fetchgit {
url = "https://git.nichkara.eu/dotfiles/waybar"; url = "https://git.nichkara.eu/dotfiles/waybar";
rev = "47a5d2b7795fcdb26bff3a91864d19158cfc5c5c"; rev = "cd3d5d8a97f9fbc1cc8a69fc9e570dfcf669dce7";
sha256 = "sha256-0S0S+qIEa20GWeHGEOzji6rPQPPzDvyZFpyHewLuxKw="; sha256 = "sha256-FTpGumhxY6ChUXqnykO+aSJiFD4A80W0eqx7hXS9Iwc=";
}; };
profile = import ../../profile.nix; profile = import ../../profile.nix;
@@ -28,6 +28,8 @@ in
pamixer pamixer
pavucontrol pavucontrol
brightnessctl brightnessctl
python313Packages.requests
networkmanagerapplet
]; ];
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
@@ -43,18 +45,4 @@ in
programs.waybar = { programs.waybar = {
enable = true; enable = true;
}; };
home-manager.users.${profile.username} = { ... }: {
home.file.".config/hypr" = {
source = dotfiles_hypr;
recursive = true;
};
home.file.".config/waybar" = {
source = dotfiles_waybar;
recursive = true;
};
};
} }
+3 -44
View File
@@ -7,7 +7,6 @@ in
{ {
imports = [ imports = [
<home-manager/nixos>
./desktop-environment/config.nix ./desktop-environment/config.nix
./terminal-environment/config.nix ./terminal-environment/config.nix
./system-environment/config.nix ./system-environment/config.nix
@@ -15,51 +14,11 @@ in
users.users.${profile.username} = { users.users.${profile.username} = {
isNormalUser = true; isNormalUser = true;
description = "Nina Chloé Kassandra"; description = "Nina Chlóe Kassandra";
extraGroups = [ "networkmanager" "wheel" "docker" "scanner" "lp"]; extraGroups = ["disks" "storage" "networkmanager" "wheel" "docker" "scanner" "lp" "uucp" "dialout"];
packages = with pkgs; []; packages = with pkgs; [];
shell = pkgs.zsh; shell = pkgs.zsh;
hashedPassword = profile.hashed-password; hashedPassword = profile.hashed-password;
};
home-manager.backupFileExtension = "bck.lck";
home-manager.users.${profile.username} = { pkgs, ... }: {
home.stateVersion = "25.11";
programs.git = {
enable = true;
settings = {
user = {
name = "Nina Chloé Kassandra Reiß";
email = "nina.reiss@nickr.eu";
};
push = {
autoSetupRemote = true;
};
};
};
programs.ssh = {
enable = 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
'';
};
}; };
systemd.services.generate-ssh-key = { systemd.services.generate-ssh-key = {
+33 -24
View File
@@ -1,39 +1,48 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
let let
profile = import ../profile.nix; profile = import ../profile.nix;
in in
{ {
imports = [ imports = [
./file-system.nix ./file-system.nix
./media.nix ./media.nix
./security/keyring.nix ./security/keyring.nix
]; ./printer.nix
];
environment.systemPackages = with pkgs; [ environment.systemPackages =
gnumake with pkgs;
python3 [
gnumake
python3
] ]
++ lib.optionals profile.modules.development [ ++ lib.optionals profile.modules.development [
cmake cmake
cmakeCurses cmakeCurses
# C/C++/Fortran tools # C/C++/Fortran tools
gcc gcc
clang clang
# Common C based dependencies # Common C based dependencies
eigen eigen
# Ada/+Spark & Rust tools # Ada/+Spark & Rust tools
alire alire
gnat gnat15
rustc gnat15Packages.gprbuild
cargo gnat15Packages.gpr2
gnat15Packages.gnatprove
gnat15Packages.gnatcoll-core
gnat15Packages.gnatcoll-readline
gnat15Packages.gnatcoll-python3
gnat15Packages.gnatcoll-gmp
rustc
cargo
]; ];
environment.variables = { environment.variables = {
}; };
} }
+3
View File
@@ -1,6 +1,9 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
services.udisks2.enable = true;
services.gvfs.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
nextcloud-client nextcloud-client
unzip unzip
+185
View File
@@ -0,0 +1,185 @@
# Optional stuff to add to profile:
# add your user to scanner/lp groups if needed:
# users.users.<name>.extraGroups = [ "scanner" "lp" ];
{
config,
pkgs,
lib,
...
}:
{
##########################################################################
# Printing
##########################################################################
services.printing = {
enable = true;
# Driver collection
drivers = with pkgs; [
gutenprint
hplip
brlaser
# Canon inkjet support
cnijfilter2
# Generic IPP/AirPrint support
cups-filters
];
# Network printer discovery
browsing = true;
defaultShared = false;
listenAddresses = [ "*:631" ];
allowFrom = [ "all" ];
};
# Avahi/mDNS for automatic printer discovery
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
publish = {
enable = true;
userServices = true;
};
};
# Scanner discovery over network
hardware.sane = {
enable = true;
extraBackends = with pkgs; [
sane-airscan
brscan4
epson-escpr
];
};
# Enable sane daemon
services.saned.enable = true;
# Some Brother scanners need this
environment.etc."sane.d/dll.d/brother".text = ''
brother4
'';
##########################################################################
# OCR / PDF / Document Processing
##########################################################################
environment.systemPackages = with pkgs; [
######################################################################
# Printing / scanning GUI tools
######################################################################
system-config-printer
simple-scan
xsane
sane-airscan
######################################################################
# OCR
######################################################################
tesseract
tesseract4
ocrmypdf
######################################################################
# PDF tools
######################################################################
poppler-utils
pdftk
qpdf
pdfcpu
mupdf
######################################################################
# Image processing
######################################################################
graphicsmagick
######################################################################
# EPUB / HTML / Markdown / TeX conversions
######################################################################
pandoc
######################################################################
# Extra document tooling
######################################################################
ghostscript
djvulibre
unoconv
######################################################################
# CLI helpers
######################################################################
file
ripgrep
fd
jq
];
##########################################################################
# Firewall
##########################################################################
networking.firewall.allowedTCPPorts = [
631 # CUPS / IPP
];
networking.firewall.allowedUDPPorts = [
5353 # mDNS / Avahi
];
##########################################################################
# Helpful shell aliases
##########################################################################
environment.shellAliases = {
# Find printers/scanners
printers = "lpstat -e";
scanner-find = "scanimage -L";
# OCR examples
ocr-pdf = "ocrmypdf";
ocr-img = "tesseract";
# Convert markdown -> pdf
md2pdf = "pandoc -o output.pdf";
# Convert epub -> pdf
epub2pdf = "ebook-convert";
# Convert pdf -> text
pdf2txt = "pdftotext";
# Scan one page
scan-one = ''
scanimage --format=png > scan.png
'';
# Continuous scans until CTRL+C
scan-loop = ''
while true; do
TS=$(date +%s)
scanimage --format=png > scan-$TS.png
echo "scanned: scan-$TS.png"
sleep 1
done
'';
};
}
+5 -54
View File
@@ -6,12 +6,14 @@ in
imports = [ imports = [
./editor.nix ./editor.nix
./tex-environment.nix
]; ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
astyle astyle
hyfetch hyfetch
fzf-zsh fzf-zsh
distrobox
]; ];
programs.tmux = { programs.tmux = {
@@ -22,6 +24,9 @@ in
''; '';
}; };
programs.direnv.enable = true;
programs.direnv.nix-direnv.enable = true;
programs.zsh = { programs.zsh = {
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
@@ -59,58 +64,4 @@ in
theme = "sonicradish"; theme = "sonicradish";
}; };
}; };
home-manager.users.${profile.username} = { ... }: {
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";
};
};
};
} }
+4
View File
@@ -9,6 +9,8 @@ in
fzf fzf
ripgrep ripgrep
ripgrep-all ripgrep-all
ctags
lua54Packages.luarocks-nix
]; ];
programs.neovim = { programs.neovim = {
@@ -17,5 +19,7 @@ in
withPython3 = true; withPython3 = true;
withRuby = true; withRuby = true;
withNodeJs = true; withNodeJs = true;
viAlias = true;
vimAlias = true;
}; };
} }
+67
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 ];
}
+11
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
@@ -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
View File
@@ -0,0 +1,11 @@
{ config, pkgs, ... }:
let
profile = import ../profile.nix;
in
{
environment.systemPackages = with pkgs; [
texliveMedium
];
}