123 lines
2.8 KiB
Nix
123 lines
2.8 KiB
Nix
{
|
|
lib,
|
|
fetchFromGitHub,
|
|
gtk4,
|
|
libadwaita,
|
|
python3Packages,
|
|
gobject-introspection,
|
|
wrapGAppsHook4,
|
|
copyDesktopItems,
|
|
makeDesktopItem,
|
|
nix-update-script,
|
|
}:
|
|
|
|
python3Packages.buildPythonPackage rec {
|
|
pname = "boxflat";
|
|
version = "1.28.4";
|
|
pyproject = true;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "Lawstorant";
|
|
repo = "boxflat";
|
|
tag = "v${version}";
|
|
hash = "sha256-szKGrP+z0HsCV/FhhKPlOMcb6LkQhOA1pZfwR86xa3Y=";
|
|
};
|
|
|
|
build-system = [ python3Packages.setuptools ];
|
|
|
|
propagatedBuildInputs = [
|
|
gtk4
|
|
libadwaita
|
|
|
|
python3Packages.pyyaml
|
|
python3Packages.psutil
|
|
python3Packages.pyserial
|
|
python3Packages.pycairo
|
|
python3Packages.pygobject3
|
|
python3Packages.evdev
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
copyDesktopItems
|
|
wrapGAppsHook4
|
|
gobject-introspection
|
|
];
|
|
|
|
postPatch = ''
|
|
substituteInPlace requirements.txt \
|
|
--replace-fail "psutil==6.1.0" "psutil" \
|
|
--replace-fail "evdev==1.7.1" "evdev"
|
|
'';
|
|
|
|
preBuild = ''
|
|
cat > setup.py << EOF
|
|
import shutil
|
|
from setuptools import setup
|
|
|
|
with open('requirements.txt') as f:
|
|
install_requires = f.read().splitlines()
|
|
|
|
shutil.copyfile('entrypoint.py', 'boxflat/entrypoint.py')
|
|
|
|
setup(
|
|
name='boxflat',
|
|
packages=['boxflat', 'boxflat.panels', 'boxflat.widgets'],
|
|
version='${version}',
|
|
install_requires=install_requires,
|
|
entry_points={
|
|
'console_scripts': ['boxflat=boxflat.entrypoint:main']
|
|
},
|
|
)
|
|
EOF
|
|
'';
|
|
|
|
preInstall = ''
|
|
mkdir -p $out/{usr/share/boxflat,lib/udev/rules.d,share/icons}
|
|
cp -r data "$out/usr/share/boxflat/"
|
|
cp -r icons "$out/share/icons/hicolor"
|
|
cp -r udev "$out/usr/share/boxflat"
|
|
cp udev/99-boxflat.rules "$out/lib/udev/rules.d/"
|
|
'';
|
|
|
|
dontWrapGApps = true;
|
|
preFixup = ''
|
|
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
|
makeWrapperArgs+=(--add-flags "--data-path $out/usr/share/boxflat/data")
|
|
'';
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem rec {
|
|
name = "Boxflat";
|
|
desktopName = name;
|
|
genericName = "settings";
|
|
comment = "Moza Racing settings app";
|
|
exec = "boxflat";
|
|
icon = "io.github.lawstorant.boxflat";
|
|
startupWMClass = icon;
|
|
startupNotify = true;
|
|
categories = [
|
|
"Game"
|
|
"Utility"
|
|
];
|
|
keywords = [
|
|
"game"
|
|
"racing"
|
|
"cars"
|
|
"wheels"
|
|
"moza"
|
|
];
|
|
})
|
|
];
|
|
|
|
passthru.updateScript = nix-update-script { };
|
|
|
|
meta = {
|
|
homepage = "https://github.com/Lawstorant/boxflat";
|
|
changelog = "https://github.com/Lawstorant/boxflat/releases/tag/v${version}";
|
|
description = "Control your Moza gear settings";
|
|
license = lib.licenses.gpl3Only;
|
|
maintainers = with lib.maintainers; [ racci ];
|
|
platforms = lib.platforms.linux;
|
|
mainProgram = "boxflat";
|
|
};
|
|
}
|