Compare commits

..

4 Commits

Author SHA1 Message Date
Nina Chlóe Kassandra Reiß
37b07a8fb1 Move to a secure greeter 2026-06-08 10:30:59 +02:00
Nina Chlóe Kassandra Reiß
b37cbd352a Remove fzf-zsh 2026-06-02 17:51:46 +02:00
fc32cf76ea Enable printing in system 2026-05-23 13:10:51 +02:00
b5b05ac620 Change podman to docker for distrobox 2026-05-23 12:49:04 +02:00
5 changed files with 261 additions and 68 deletions

View File

@@ -72,7 +72,7 @@ in
enable = true; enable = true;
# Create a `docker` alias for podman, to use it as a drop-in replacement # Create a `docker` alias for podman, to use it as a drop-in replacement
dockerCompat = true; dockerCompat = false;
# Required for containers under podman-compose to be able to talk to each other. # Required for containers under podman-compose to be able to talk to each other.
defaultNetwork.settings.dns_enabled = true; defaultNetwork.settings.dns_enabled = true;
@@ -82,6 +82,8 @@ in
# 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
strongswan strongswan
@@ -89,6 +91,7 @@ in
dive dive
podman-tui podman-tui
podman-compose podman-compose
docker-compose
gmp gmp
gmp.dev gmp.dev
pkg-config pkg-config
@@ -109,6 +112,7 @@ in
appimage-run appimage-run
libgcrypt libgcrypt
libxcrypt libxcrypt
rclone
]; ];
}; };

View File

@@ -1,49 +1,52 @@
{ pkgs, ... }: { pkgs, ... }:
let let
profile = import ../profile.nix; profile = import ../profile.nix;
in in
{ {
imports = [ imports = [
./browser.nix ./browser.nix
./planner.nix ./planner.nix
./window-manager.nix ./window-manager.nix
../applications/matrix.nix ../applications/matrix.nix
]; ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
kitty kitty
pamixer pamixer
nemo-with-extensions nemo-with-extensions
]; ];
services.dbus.enable = true; services.dbus.enable = true;
programs.dconf.enable = true; programs.dconf.enable = true;
hardware.graphics.enable = true; hardware.graphics.enable = true;
services.greetd = { programs.regreet = {
enable = true; enable = true;
settings = { };
default_session = {
command = "Hyprland"; services.greetd = {
user = profile.username; enable = true;
}; settings = {
default_session = {
command = "${pkgs.cage}/bin/cage -s -- ${pkgs.regreet}/bin/regreet";
}; };
}; };
};
xdg.portal = { xdg.portal = {
enable = true; enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-hyprland ]; extraPortals = [ pkgs.xdg-desktop-portal-hyprland ];
}; };
hardware.nvidia = { hardware.nvidia = {
modesetting.enable = true; modesetting.enable = true;
powerManagement.enable = false; powerManagement.enable = false;
open = false; open = false;
}; };
systemd.targets.sleep.enable = false; systemd.targets.sleep.enable = false;
systemd.targets.suspend.enable = false; systemd.targets.suspend.enable = false;
systemd.targets.hibernate.enable = false; systemd.targets.hibernate.enable = false;
systemd.targets.hybrid-sleep.enable = false; systemd.targets.hybrid-sleep.enable = false;
} }

View File

@@ -1,46 +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
gnat15 gnat15
gnat15Packages.gprbuild gnat15Packages.gprbuild
gnat15Packages.gpr2 gnat15Packages.gpr2
gnat15Packages.gnatprove gnat15Packages.gnatprove
gnat15Packages.gnatcoll-core gnat15Packages.gnatcoll-core
gnat15Packages.gnatcoll-readline gnat15Packages.gnatcoll-readline
gnat15Packages.gnatcoll-python3 gnat15Packages.gnatcoll-python3
gnat15Packages.gnatcoll-gmp gnat15Packages.gnatcoll-gmp
rustc rustc
cargo cargo
]; ];
environment.variables = { environment.variables = {
}; };
} }

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
'';
};
}

View File

@@ -12,7 +12,6 @@ in
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
astyle astyle
hyfetch hyfetch
fzf-zsh
distrobox distrobox
]; ];