Compare commits
1 Commits
main
...
1a59f4d7b3
Author | SHA1 | Date | |
---|---|---|---|
1a59f4d7b3 |
@ -1,25 +1,8 @@
|
|||||||
{ config, pkgs, ... }:
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
let
|
|
||||||
hdmiHandler = pkgs.writeShellScript "hdmi-display-manager" ''
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -euo pipefail
|
|
||||||
PORT=$(ls /sys/class/drm/card*-HDMI-A-*/*status 2>/dev/null | head -n1 || true)
|
|
||||||
[[ -z "$PORT" ]] && exit 0
|
|
||||||
status=$(cat "$PORT" || echo "disconnected")
|
|
||||||
|
|
||||||
if [[ "$status" == "connected" ]]; then
|
|
||||||
systemctl start display-manager.service
|
|
||||||
else
|
|
||||||
systemctl stop display-manager.service
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [ ./hardware/hardware-configuration.nix ];
|
imports = [ ./hardware/hardware-configuration.nix ];
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
boot.initrd.kernelModules = [ "overlay" "vmd" ];
|
boot.initrd.kernelModules = [ "overlay" "vmd" ];
|
||||||
@ -60,21 +43,12 @@ in
|
|||||||
users.users.nicole = {
|
users.users.nicole = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
hashedPassword = "$6$p73d5mOLoSuJGOol$KRlszaPXZK9/frADlfR3kAr/57DD5f4.CPTGNNX80QWEWFE5y.bM1WiZwmRHiAlrws3q/zCDQ6AqeSyCUX.8U/";
|
hashedPassword = "$6$p73d5mOLoSuJGOol$KRlszaPXZK9/frADlfR3kAr/57DD5f4.CPTGNNX80QWEWFE5y.bM1WiZwmRHiAlrws3q/zCDQ6AqeSyCUX.8U/";
|
||||||
extraGroups = [ "wheel" "docker" "libvirtd" "video" "render" ];
|
extraGroups = [ "wheel" "docker" "libvirtd" ];
|
||||||
openssh.authorizedKeys.keys = [
|
openssh.authorizedKeys.keys = [
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGAsiKDWCwyf1usprg3K6Zk0xE9S4DX6+Bc4+nIOZGmf drezil@Manticore"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGAsiKDWCwyf1usprg3K6Zk0xE9S4DX6+Bc4+nIOZGmf drezil@Manticore"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
users.users.kodi = {
|
|
||||||
isNormalUser = true;
|
|
||||||
home = "/home/kodi";
|
|
||||||
description = "Kodi Auto-Login User";
|
|
||||||
extraGroups = [ "video" "render" ]; # GPU-/DRM-Zugriff
|
|
||||||
linger = true; # User-Scope darf headless laufen
|
|
||||||
# kein wheel ⇒ kein sudo
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
system.stateVersion = "25.05"; # ← einmalig festnageln
|
system.stateVersion = "25.05"; # ← einmalig festnageln
|
||||||
security.sudo.wheelNeedsPassword = false;
|
security.sudo.wheelNeedsPassword = false;
|
||||||
@ -86,21 +60,12 @@ in
|
|||||||
serviceConfig.ExecStart = "/run/current-system/sw/bin/zfs-prune-snapshots -r --keep=2w";
|
serviceConfig.ExecStart = "/run/current-system/sw/bin/zfs-prune-snapshots -r --keep=2w";
|
||||||
startAt = "daily";
|
startAt = "daily";
|
||||||
};
|
};
|
||||||
systemd.services.systemd-udev-settle.enable = false;
|
|
||||||
systemd.services.NetworkManager-wait-online.enable = false;
|
|
||||||
|
|
||||||
|
|
||||||
# Wir pinnen den Kernel, bis ZFS 2.3.x für 6.13 bereit ist
|
# Wir pinnen den Kernel, bis ZFS 2.3.x für 6.13 bereit ist
|
||||||
boot.kernelPackages = pkgs.linuxPackages_6_12;
|
boot.kernelPackages = pkgs.linuxPackages_6_12;
|
||||||
|
|
||||||
##########################################################################
|
environment.systemPackages = with pkgs; [ git vim zfs virt-viewer ];
|
||||||
### SYSTEM PACKAGES #####################################################
|
|
||||||
##########################################################################
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
git tig vim zfs virt-viewer
|
|
||||||
kodi netflix
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
#### Virtualisation
|
#### Virtualisation
|
||||||
@ -133,36 +98,45 @@ in
|
|||||||
### Kodi & TV-Detect #####################################################
|
### Kodi & TV-Detect #####################################################
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
videoDrivers = [ "modesetting" ]; # Intel iGPU
|
|
||||||
desktopManager.kodi = {
|
|
||||||
enable = true;
|
|
||||||
package = (pkgs.kodi.withPackages (kodiPkgs: with kodiPkgs; [
|
|
||||||
jellyfin
|
|
||||||
netflix
|
|
||||||
mediacccde
|
|
||||||
mediathekview
|
|
||||||
sponsorblock
|
|
||||||
youtube
|
|
||||||
]));
|
|
||||||
};
|
|
||||||
displayManager.startx.enable = false; # nutzt LightDM intern
|
|
||||||
xkb = {
|
|
||||||
layout = "de,de";
|
|
||||||
variant = ",neo";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
console.useXkbConfig = true;
|
|
||||||
services.displayManager.autoLogin = {
|
|
||||||
enable = true;
|
|
||||||
user = "kodi";
|
|
||||||
};
|
|
||||||
|
|
||||||
### UDEV-Regel + Skript ##################################################
|
### UDEV-Regel + Skript ##################################################
|
||||||
services.udev.extraRules = ''
|
services.udev.extraRules = ''
|
||||||
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="${hdmiHandler}"
|
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", \
|
||||||
|
RUN+="/etc/udev/scripts/hdmi-handler.sh"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
environment.etc."udev/scripts/hdmi-handler.sh".text = ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
PORT="/sys/class/drm/card0-HDMI-A-1/status"
|
||||||
|
USER="nicole"
|
||||||
|
|
||||||
|
read status < "$PORT"
|
||||||
|
if [[ "$status" == "connected" ]]; then
|
||||||
|
# Fernseher an ➜ Kodi starten
|
||||||
|
runuser -l "$USER" -c "systemctl --user start kodi.service"
|
||||||
|
# Beispiel: alternative Wartungs-VM
|
||||||
|
# runuser -l "$USER" -c "systemctl --user start vm-viewer@ha-vm.service"
|
||||||
|
else
|
||||||
|
# Fernseher aus ➜ alles stoppen
|
||||||
|
runuser -l "$USER" -c "systemctl --user stop vm-viewer@ha-vm.service" || true
|
||||||
|
runuser -l "$USER" -c "systemctl --user stop kodi.service"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
environment.etc."udev/scripts/hdmi-handler.sh".mode = "0755";
|
||||||
|
|
||||||
|
### Kodi (GBM-Wayland Variante) ##########################################
|
||||||
|
programs.kodi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.kodi; # ← Standard; wähle ggf. `pkgs.kodi-wayland`
|
||||||
|
gpuSupport = true; # deaktiviert X11-Abhängigkeit
|
||||||
|
};
|
||||||
|
|
||||||
|
### Virt-Viewer Template-Unit (optional) #################################
|
||||||
|
systemd.user.services."vm-viewer@" = {
|
||||||
|
description = "Virt-viewer fullscreen for %i";
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${pkgs.virt-viewer}/bin/virt-viewer --full-screen --wait --domain-name %i";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user