Personal-use NixOS configuration

Create lutris-gamepad-ui package

+86
+1
packages/default.nix
··· 16 16 collabora-online = pkgs.callPackage ./collabora-online { }; 17 17 emby-server = pkgs.callPackage ./emby-server { }; 18 18 iso2god-rs = pkgs.callPackage ./iso2god-rs { }; 19 + lutris-gamepad-ui = pkgs.callPackage ./lutris-gamepad-ui { }; 19 20 mediaelch = pkgs.callPackage ./mediaelch { }; 20 21 network-optimizer = pkgs.callPackage ./network-optimizer { }; 21 22 omnipoly = pkgs.callPackage ./omnipoly { };
+85
packages/lutris-gamepad-ui/default.nix
··· 1 + { 2 + lib, 3 + buildNpmPackage, 4 + fetchFromGitHub, 5 + makeWrapper, 6 + makeDesktopItem, 7 + electron_39, 8 + python3, 9 + lutris-unwrapped, 10 + gtk3, 11 + copyDesktopItems, 12 + }: 13 + 14 + let 15 + pythonPackage = python3.withPackages ( 16 + ps: [ (ps.toPythonModule lutris-unwrapped) ] ++ lutris-unwrapped.propagatedBuildInputs 17 + ); 18 + in 19 + buildNpmPackage rec { 20 + pname = "lutris-gamepad-ui"; 21 + version = "0.1.31"; 22 + 23 + src = fetchFromGitHub { 24 + owner = "andrew-ld"; 25 + repo = "lutris-gamepad-ui"; 26 + tag = "v${version}"; 27 + hash = "sha256-j7gFDd7CZyayHblVTZ8voo0VAwhltesVN59jcIjqfQo="; 28 + }; 29 + 30 + nativeBuildInputs = [ 31 + makeWrapper 32 + copyDesktopItems 33 + ]; 34 + 35 + npmDepsHash = "sha256-YX0QCxc38LBYW1phPDhIS+j/rFYGNVzmQRTll3iNLbg="; 36 + makeCacheWritable = true; 37 + 38 + env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1; 39 + 40 + npmBuildScript = "build:vite"; 41 + 42 + installPhase = 43 + let 44 + binPath = lib.makeBinPath [ pythonPackage ]; 45 + in 46 + '' 47 + runHook preInstall 48 + 49 + npm prune --omit=dev 50 + 51 + mkdir -p $out/lib/node_modules/lutris-gamepad-ui 52 + cp -r dist node_modules src_backend electron.cjs electron_preload.cjs lutris_wrapper.py lutris_wrapper.sh package.json $out/lib/node_modules/lutris-gamepad-ui/ 53 + 54 + install -Dm644 src_frontend/resources/icon.svg $out/share/icons/hicolor/256x256/apps/lutris-gamepad-ui.svg 55 + 56 + makeWrapper '${lib.getExe electron_39}' $out/bin/lutris-gamepad-ui \ 57 + --suffix PATH : "${binPath}" \ 58 + --prefix GI_TYPELIB_PATH : "${gtk3}/lib/girepository-1.0" \ 59 + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ 60 + --add-flags $out/lib/node_modules/lutris-gamepad-ui/ 61 + 62 + runHook postInstall 63 + ''; 64 + 65 + desktopItems = [ 66 + (makeDesktopItem { 67 + name = "lutris gamepad ui"; 68 + exec = "lutris-gamepad-ui --no-sandbox %U"; 69 + icon = "lutris-gamepad-ui"; 70 + desktopName = "lutris gamepad ui"; 71 + comment = meta.description; 72 + categories = [ "Game" ]; 73 + startupWMClass = "lutris gamepad ui"; 74 + terminal = false; 75 + }) 76 + ]; 77 + 78 + meta = { 79 + description = "Simple, TV-friendly, gamepad-navigable frontend for the Lutris game launcher"; 80 + homepage = "https://github.com/andrew-ld/lutris-gamepad-ui"; 81 + license = lib.licenses.gpl3Only; 82 + maintainers = with lib.maintainers; [ encode42 ]; 83 + mainProgram = "lutris-gamepad-ui"; 84 + }; 85 + }