{ config, lib, pkgs, ... }: { services.xserver = { enable = true; desktopManager.kodi = { enable = true; package = pkgs.kodi.withPackages (ps: with ps; [ joystick youtube libretro libretro-mgba ]); }; displayManager.autoLogin = { enable = true; user = "kodi"; }; }; users.extraUsers.kodi = { isNormalUser = true; uid = 1002; }; networking.firewall = { allowedTCPPorts = [8080]; allowedUDPPorts = [8080]; }; environment.systemPackages = with pkgs; [xboxdrv cifs-utils]; fileSystems."/mnt/film" = { device = "//ccr.ydns.eu/film"; fsType = "cifs"; options = let credentials = pkgs.writeText "credentials" '' username=guest password= ''; in ["credentials=${credentials},x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"]; }; fileSystems."/mnt/archivio" = { device = "//ccr.ydns.eu/archivio"; fsType = "cifs"; options = let credentials = pkgs.writeText "credentials" '' username=guest password= ''; in ["credentials=${credentials},x-systemd.automount,noauto,x-systemd.idle-timeout=60,x-systemd.device-timeout=5s,x-systemd.mount-timeout=5s"]; }; systemd.services.xboxdrv = { wantedBy = ["multi-user.target"]; after = ["network.target"]; serviceConfig = { Type = "forking"; User = "root"; ExecStart = ''${pkgs.xboxdrv}/bin/xboxdrv --daemon --detach --pid-file /var/run/xboxdrv.pid --dbus disabled --silent --deadzone 4000 --deadzone-trigger 10% --mimic-xpad-wireless''; }; }; services.xserver.config = '' Section "InputClass" Identifier "joystick catchall" MatchIsJoystick "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "StartKeysEnabled" "False" Option "StartMouseEnabled" "False" EndSection ''; boot.blacklistedKernelModules = ["xpad"]; }