NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
17.35k stars 13.58k forks source link

Package request: Emudeck #282130

Open ShalokShalom opened 7 months ago

ShalokShalom commented 7 months ago

Project description

Emudeck is a program that abstracts video game emulators and optimises them for mobile game consoles like the Steam Deck.

Metadata


Add a :+1: reaction to issues you find important.

Turmaxx commented 1 month ago

After looking at the emudeck wiki, this isn't a package within itself, but rather a bunch of scripts that install, optimize, organize and configure existing emulators. I am not sure how this will be implemented without wrapping or overriding with existing emulators found in nixpkgs. But seems like a nifty app though like retroarch.

lpchaim commented 1 month ago

Yeah, their approach sounds extremely tough to fit into the nix way of doing things, if it's feasible at all.

In the meantime for the folks who stumble upon this, RetroDeck might be worth a shot. It's a WIP alternative of sorts which just distributes a flatpak. I haven't personally tested it, but it should work as is.

Edit: As for emudeck itself, I'm wondering if an arch distrobox would work as a stopgap measure at least since iirc it pretty much just pulls from the repos and sets up some dotfiles and whatnot. Not that I'm trying to suggest that's even close to a nixpkgs-worthy solution, of course.

dragoonDorise commented 2 weeks ago

Hiya, EmuDeck creator over here :)

We do have an AppImage, would that work for you?

Turmaxx commented 2 weeks ago

Hey @dragoonDorise

Glad you are here and got the time to check this issue out.

We are looking for a nix solution to add to the nixpkgs repository instead of the AppImage. I checked out the AppImage in the EmuDeck repository and I don't think it will be able to detect already existing emulator that were installed before hand on the system.

What I mean when I say the nix way of doing things is basically the same way that RetroArch was implemented. The emulators already exist in the nixpkgs repoistory they are just wrapped under the application, basically packaging them together.

I am not sure if you are familiar with nix but reproducibility and declarative code is two of its key aspects and the code below with can be found in the link that I've provided above.

environment.systemPackages = with pkgs; [
  (retroarch.override {
    cores = with libretro; [
      genesis-plus-gx
      snes9x
      beetle-psx-hw
    ];
  })
];

In the code above mix just wrapped RetroArch with emulators and packages them together, then when you start RetroArch the emulators are there.

The reason I make the comparison of EmuDeck with RetroArch is they have tix bits of similarities in the way they function.

Also great work on EmuDeck @dragoonDorise, seems like a great app.