Hi I have a HTPC where I use NixOS and as my start interface i use flex-launcher that is built using SDL2.
I start it using wayland and cage and I have created a minimal config to reproduce the issue (I have used a hyper-v vm to reproduce the issue, but the same or a similar issue happens on real hardware)
# Base minimum configuration to get started
{ config, lib, pkgs, ... }:
{
imports =
[
./hardware-configuration.nix
];
virtualisation.hypervGuest.enable = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.networkmanager.enable = true;
users = {
users = {
htpc = {
uid = 1001;
isNormalUser = true;
extraGroups = [
"input"
"dialout"
"video"
"render"
"audio"
];
group = "htpc";
packages = with pkgs; [
xterm
flex-launcher
];
};
};
groups.htpc = {
gid = 1001;
};
};
users.extraUsers.htpc.isNormalUser = true;
services.cage = {
enable = true;
user = "htpc";
program = "${pkgs.flex-launcher}/bin/flex-launcher -d";
extraArguments = [ "-d" ];
};
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
AllowUsers = null;
PermitRootLogin = "yes";
};
};
hardware = {
graphics.enable = true;
#alsa.enable = true;
};
system.stateVersion = "25.05"; # Do not change this value you fool!
}
After upgrading to 25.11 I’m only met with a black screen with nothing on it..
If I instead force nixos to use the latest commit of flex-launcher (plus som additional logging i added my self) with the following
# Force flex-launcher to use a fork with improved logging (also contains fixes for sdl that aren't in any release yet)
nixpkgs.overlays = [
(final: prev: {
# nix-shell -p nix-prefetch-github
# nix-prefetch-github --nix AnderssonPeter flex-launcher
flex-launcher = prev.flex-launcher.overrideAttrs (old: {
src = prev.fetchFromGitHub {
owner = "AnderssonPeter";
repo = "flex-launcher";
rev = "b2640e734c70853e2e8c27ce7c2ff550f79102e5";
hash = "sha256-SnkWM5xPA0YSBXWmSEM5OV+RCJp3ustpwg422dth88o=";
};
});
})
];
The flex-launcher application just craches on 25.11 (but the application still works on 25.05 with the newer version of flex-launcher)
The application logs the following when crashing:
Flex Launcher version 2.2, using:
SDL 2.32.60
SDL_image 2.8.8
SDL_ttf 2.24.0
Build date: Jan 1 1980
Compiler: GCC 14.3
Config file found: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/config.ini
Initializing SDL
Initializing SDL_image
Initializing SDL_ttf
Validating settings...
Highlight padding value 25 too large to fit screen, shrinking to 0
Icon spacing value 51 too large to fit screen, shrinking to 0
Initializing SVG rasterizer
Creating SDL Window and Renderer
Hiding mouse cursor
Creating SDL Renderer
So it crashes on the following line: flex-launcher/src/launcher.c at b2640e734c70853e2e8c27ce7c2ff550f79102e5 · AnderssonPeter/flex-launcher · GitHub
And the systemd cage log says the following
Mar 10 19:31:17 nixos systemd[1]: Started cage-tty1.service.
Mar 10 19:31:17 nixos (cage)[3572]: pam_unix(cage:session): session opened for user htpc(uid=1001) by htpc(uid=0)
Mar 10 19:31:18 nixos systemd[1]: cage-tty1.service: Main process exited, code=dumped, status=6/ABRT
Mar 10 19:31:18 nixos systemd[1]: cage-tty1.service: Failed with result 'core-dump'.
From checking the log of flex-launcher on 25.05 I can see that sdl seems to use a x11 video driver.
So I managed to force it to use wayland by setting the env variables SDL_VIDEODRIVER and SDL_VIDEO_DRIVE to ”wayland” while the application no longer crashes it just displays a black screen.
the flex-launcher log can be found under /home/htpc/.local/share/flex-launcher/flex-launcher.log and when it starts up and displays a black screen i get the following log
Flex Launcher version 2.2, using:
SDL 2.32.60
SDL_image 2.8.8
SDL_ttf 2.24.0
Build date: Jan 1 1980
Compiler: GCC 14.3
Config file found: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/config.ini
Initializing SDL
Initializing SDL_image
Initializing SDL_ttf
Validating settings...
Highlight padding value 25 too large to fit screen, shrinking to 0
Icon spacing value 51 too large to fit screen, shrinking to 0
Initializing SVG rasterizer
Creating SDL Window and Renderer
Hiding mouse cursor
Creating SDL Renderer
Setting renderer blend mode to blend
Setting renderer draw color
================== Video Information ===================
Resolution: 1024x768
Refresh rate: 60 Hz
Video driver: wayland
Supported Texture formats:
SDL_PIXELFORMAT_ARGB8888
SDL_PIXELFORMAT_ABGR8888
SDL_PIXELFORMAT_RGB888
SDL_PIXELFORMAT_BGR888
SDL_PIXELFORMAT_YV12
SDL_PIXELFORMAT_IYUV
SDL_PIXELFORMAT_NV12
SDL_PIXELFORMAT_NV21
======================= General ========================
DefaultMenu: Main
VSync: true
FPSLimit: -1
ApplicationTimeout: 15
OnLaunch: Blank
WrapEntries: false
ResetOnBack: false
MouseSelect: false
InhibitOSScreensaver: true
StartupCmd: (null)
QuitCmd: (null)
===================== Background =======================
Mode: Color
Color: #000000FF
Image: (null)
SlideshowDirectory: (null)
SlideshowImageDuration: 30
SlideshowTransitionTime: 1.50
Overlay: false
OverlayColor: #0000007F
======================= Layout =========================
MaxButtons: 4
IconSize: 256
IconSpacing: 0
VCenter: 50%
======================== Titles ========================
Enabled: true
Font: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/fonts/OpenSans-Regular.ttf
FontSize: 36
Color: #FFFFFFFF
Shadows: false
ShadowColor: #000000FF
OversizeMode: Shrink
Padding: 20
====================== Highlight =======================
FillColor: #FFFFFF3F
OutlineSize: 0
OutlineColor: #0000FFFF
CornerRadius: 0
VPadding: 30
HPadding: 0
================== Scroll Indicators ===================
Enabled: true
FillColor: #FFFFFFFF
OutlineSize: 0
OutlineColor: #000000FF
======================== Clock =========================
Enabled: false
ShowDate: false
Alignment: Left
Font: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/fonts/SourceSansPro-Regular.ttf
FontSize: 50
Margin: 38
FontColor: #FFFFFFFF
Shadows: false
ShadowColor: #000000FF
TimeFormat: Auto
DateFormat: Auto
IncludeWeekday: true
===================== Screensaver ======================
Enabled: false
IdleTime: 300
Intensity: 70%
PauseSlideshow: true
======================= Gamepad ========================
Enabled: false
DeviceIndex: -1
ControllerMappingsFile: (null)
LStickX- :left
LStickX+ :right
ButtonA :select
ButtonB :back
ButtonDPadLeft :left
ButtonDPadRight :right
======================== Hotkeys =========================
Hotkey 0 Keycode: 1B
Hotkey 0 Command: :quit
======================= Menu Entries =======================
Menu Name: Main
Number of Entries: 4
Entry 0 Title: Kodi
Entry 0 Icon Path: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/icons/kodi.png
Entry 0 Command: /usr/share/applications/kodi.desktop
Entry 1 Title: Plex
Entry 1 Icon Path: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/icons/plex.png
Entry 1 Command: /usr/share/applications/plexmediaplayer.desktop;TVF
Entry 2 Title: Steam
Entry 2 Icon Path: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/icons/steam.png
Entry 2 Command: /usr/share/applications/steam.desktop;BigPicture
Entry 3 Title: System
Entry 3 Icon Path: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/icons/system.png
Entry 3 Command: :submenu System
----------------------------------------------------------
Menu Name: System
Number of Entries: 3
Entry 0 Title: Shutdown
Entry 0 Icon Path: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/icons/system.png
Entry 0 Command: :shutdown
Entry 1 Title: Restart
Entry 1 Icon Path: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/icons/restart.png
Entry 1 Command: :restart
Entry 2 Title: Sleep
Entry 2 Icon Path: /nix/store/pvh35nfa77xpcj946szn66lfkmp3730y-flex-launcher-2.2/share/flex-launcher/assets/icons/sleep.png
Entry 2 Command: :sleep
Loading menu 'Main'
Begin program loop
Gained keyboard focus
Key Numlock (#40000053) detected
Key Numlock (#40000053) detected
I’m no C developer or Linux expert so I’m a bit lost on how to debug the issue further, does anyone have a idea what could be the issue or how to solve it?
At the moment my only idea is to switch to x11, but that would mean I would have to setup a number of application all again (With som luck they just work on x11 but who knows).