nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 127 lines 2.8 kB view raw
1{ 2 lib, 3 fetchFromGitHub, 4 gtk4, 5 libadwaita, 6 python3Packages, 7 gobject-introspection, 8 wrapGAppsHook4, 9 copyDesktopItems, 10 makeDesktopItem, 11 nix-update-script, 12 udevCheckHook, 13}: 14 15python3Packages.buildPythonPackage rec { 16 pname = "boxflat"; 17 version = "1.35.5"; 18 pyproject = true; 19 20 src = fetchFromGitHub { 21 owner = "Lawstorant"; 22 repo = "boxflat"; 23 tag = "v${version}"; 24 hash = "sha256-R03mQIsa6T1ApV8SMWvilBfiCGcAWvyZ5hDDgAuGd6s="; 25 }; 26 27 build-system = [ python3Packages.setuptools ]; 28 29 propagatedBuildInputs = [ 30 gtk4 31 libadwaita 32 33 python3Packages.pyyaml 34 python3Packages.psutil 35 python3Packages.pyserial 36 python3Packages.pycairo 37 python3Packages.pygobject3 38 python3Packages.evdev 39 ]; 40 41 nativeBuildInputs = [ 42 copyDesktopItems 43 wrapGAppsHook4 44 gobject-introspection 45 udevCheckHook 46 ]; 47 48 pythonRelaxDeps = [ 49 "psutil" 50 "evdev" 51 "pycairo" 52 "pygobject" 53 "PyYAML" 54 ]; 55 56 preBuild = '' 57 cat > setup.py << EOF 58 import shutil 59 from setuptools import setup 60 61 with open('requirements.txt') as f: 62 install_requires = f.read().splitlines() 63 64 shutil.copyfile('entrypoint.py', 'boxflat/entrypoint.py') 65 66 setup( 67 name='boxflat', 68 packages=['boxflat', 'boxflat.panels', 'boxflat.widgets'], 69 version='${version}', 70 install_requires=install_requires, 71 entry_points={ 72 'console_scripts': ['boxflat=boxflat.entrypoint:main'] 73 }, 74 ) 75 EOF 76 ''; 77 78 preInstall = '' 79 mkdir -p $out/{usr/share/boxflat,lib/udev/rules.d,share/icons} 80 cp -r data "$out/usr/share/boxflat/" 81 cp -r icons "$out/share/icons/hicolor" 82 cp -r udev "$out/usr/share/boxflat" 83 cp udev/99-boxflat.rules "$out/lib/udev/rules.d/" 84 ''; 85 86 dontWrapGApps = true; 87 preFixup = '' 88 makeWrapperArgs+=("''${gappsWrapperArgs[@]}") 89 makeWrapperArgs+=(--add-flags "--data-path $out/usr/share/boxflat/data") 90 ''; 91 92 desktopItems = [ 93 (makeDesktopItem rec { 94 name = "Boxflat"; 95 desktopName = name; 96 genericName = "settings"; 97 comment = "Moza Racing settings app"; 98 exec = "boxflat"; 99 icon = "io.github.lawstorant.boxflat"; 100 startupWMClass = icon; 101 startupNotify = true; 102 categories = [ 103 "Game" 104 "Utility" 105 ]; 106 keywords = [ 107 "game" 108 "racing" 109 "cars" 110 "wheels" 111 "moza" 112 ]; 113 }) 114 ]; 115 116 passthru.updateScript = nix-update-script { }; 117 118 meta = { 119 homepage = "https://github.com/Lawstorant/boxflat"; 120 changelog = "https://github.com/Lawstorant/boxflat/releases/tag/v${version}"; 121 description = "Control your Moza gear settings"; 122 license = lib.licenses.gpl3Only; 123 maintainers = with lib.maintainers; [ racci ]; 124 platforms = lib.platforms.linux; 125 mainProgram = "boxflat"; 126 }; 127}