diff --git a/.gitignore b/.gitignore index 9465c04..3caea5b 100755 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ old/ -result/ +result diff --git a/hosts/pi-car/configuration.nix b/hosts/pi-car/configuration.nix index 23ce6d2..e22b64d 100755 --- a/hosts/pi-car/configuration.nix +++ b/hosts/pi-car/configuration.nix @@ -1,5 +1,6 @@ { pkgs, ... }: { networking.hostName = "Pontiac-G5"; + console.enable = false; systemd.services = { "autovt@tty1" = { enable = true; diff --git a/hosts/pi-htpc/configuration.nix b/hosts/pi-htpc/configuration.nix index 5f5937a..f88f9f8 100755 --- a/hosts/pi-htpc/configuration.nix +++ b/hosts/pi-htpc/configuration.nix @@ -1,18 +1,54 @@ -{ pkgs, ... }: { +{ pkgs, ... }: + +let + kodi-with-addons = pkgs.kodi-wayland.withPackages (kodiPkgs: with kodiPkgs; [ + inputstream-adaptive + bluetooth-manager + ]); +in + +{ networking.hostName = "htpc"; - users.users.user = { - isNormalUser = true; - extraGroups = [ "audio" "video" "input" ]; + # HDMI CEC + nixpkgs.overlays = [ + (self: super: { libcec = super.libcec.override { withLibraspberrypi = true; }; }) + ]; + environment.systemPackages = with pkgs; [ + libcec + ]; + services.udev.extraRules = '' + # allow access to raspi cec device for video group (and optionally register it as a systemd device, used below) + KERNEL=="vchiq", GROUP="video", MODE="0660", TAG+="systemd", ENV{SYSTEMD_ALIAS}="/dev/vchiq" + ''; + systemd.sockets."cec-client" = { + after = [ "dev-vchiq.device" ]; + bindsTo = [ "dev-vchiq.device" ]; + wantedBy = [ "sockets.target" ]; + socketConfig = { + ListenFIFO = "/run/cec.fifo"; + SocketGroup = "video"; + SocketMode = "0660"; + }; + }; + systemd.services."cec-client" = { + after = [ "dev-vchiq.device" ]; + bindsTo = [ "dev-vchiq.device" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + ExecStart = ''${pkgs.libcec}/bin/cec-client -d 1''; + ExecStop = ''/bin/sh -c "echo q > /run/cec.fifo"''; + StandardInput = "socket"; + StandardOutput = "journal"; + Restart="no"; + }; }; - # Kodi — run as a dedicated user session - services.xserver.enable = true; - services.displayManager.autoLogin = { - enable = true; - user = "user"; - }; - services.xserver.desktopManager.kodi.enable = true; + # Kodi - run under Wayland + services.cage.user = "k3t"; + services.cage.extraArguments = [ "-m" "last" ]; + services.cage.program = "${kodi-with-addons}/bin/kodi-standalone"; + services.cage.enable = true; # audio security.rtkit.enable = true; @@ -23,5 +59,7 @@ pulse.enable = true; }; - hardware.opengl.enable = true; + # gpu + hardware.raspberry-pi."4".fkms-3d.enable = true; + hardware.graphics.enable = true; } diff --git a/modules/desktop-common.nix b/modules/desktop-common.nix index 2419393..bca50ec 100755 --- a/modules/desktop-common.nix +++ b/modules/desktop-common.nix @@ -26,18 +26,18 @@ services.flatpak.enable = true; boot.binfmt.preferStaticEmulators = true; boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; - hardware.graphics.enable32Bit = true; programs.nix-ld.enable = true; programs.appimage.enable = true; programs.appimage.binfmt = true; - # Enable CUPS to print documents. + # Printing services.printing.enable = true; - # graphics + # Graphics hardware.enableRedistributableFirmware = true; hardware.graphics = { enable = true; + enable32Bit = true; extraPackages = with pkgs; [ # Required for modern Intel GPUs (Xe iGPU and ARC) intel-media-driver # VA-API (iHD) userspace diff --git a/modules/pi-common.nix b/modules/pi-common.nix index 3eee942..51e2257 100755 --- a/modules/pi-common.nix +++ b/modules/pi-common.nix @@ -16,11 +16,11 @@ }; enableRedistributableFirmware = true; }; + networking.networkmanager.wifi.powersave = false; boot.loader.grub.enable = false; boot.loader.generic-extlinux-compatible.enable = true; - console.enable = false; environment.systemPackages = with pkgs; [ libraspberrypi raspberrypi-eeprom