diff --git a/nix/steam_deck/configuration/roles/sm64ex/default.nix b/nix/steam_deck/configuration/roles/sm64ex/default.nix index c1035d8..c648bbe 100644 --- a/nix/steam_deck/configuration/roles/sm64ex/default.nix +++ b/nix/steam_deck/configuration/roles/sm64ex/default.nix @@ -23,7 +23,7 @@ allowedUnfree = [ "sm64ex" ]; home.packages = with pkgs; [ - (config.lib.nixGL.wrap sm64ex) + sm64ex ]; # nixpkgs.overlays = [ @@ -43,6 +43,41 @@ ".local/share/sm64ex/sm64_save_file.bin" ]; }; + + nixpkgs.overlays = [ + (final: prev: { + sm64ex = + let + desktop_item = pkgs.makeDesktopItem { + name = "sm64ex"; + desktopName = "Super Mario 64"; + comment = "A PC Port of Super Mario 64."; + categories = [ + "Game" + ]; + icon = "sm64ex"; + type = "Application"; + exec = "sm64ex"; + }; + in + pkgs.buildEnv { + name = prev.sm64ex.name; + paths = [ + (config.lib.nixGL.wrap prev.sm64ex) + ]; + extraOutputsToInstall = [ + "man" + "doc" + "info" + ]; + # We have to use 555 instead of the normal 444 here because the .desktop file ends up inside $HOME on steam deck and desktop files must be either not in $HOME or must be executable, otherwise KDE Plasma refuses to execute them. + postBuild = '' + install -m 555 -D "${desktop_item}/share/applications/"* -t $out/share/applications/ + install -m 444 -D "${./files/icon.png}" $out/share/pixmaps/sm64ex.png + ''; + }; + }) + ]; }) ] );