python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / pkgs / by-name / on / onedrivegui / package.nix
blobc11a24daddffa502cc6aee3364e5436bc89cc470
2   lib,
3   python3Packages,
4   fetchFromGitHub,
5   writeText,
6   copyDesktopItems,
7   makeDesktopItem,
8   makeWrapper,
9   onedrive,
12 let
13   version = "1.1.1a";
15   setupPy = writeText "setup.py" ''
16     from setuptools import setup
17     setup(
18       name='onedrivegui',
19       version='${version}',
20       scripts=[
21         'src/OneDriveGUI.py',
22       ],
23     )
24   '';
27 python3Packages.buildPythonApplication rec {
28   pname = "onedrivegui";
29   inherit version;
31   src = fetchFromGitHub {
32     owner = "bpozdena";
33     repo = "OneDriveGUI";
34     rev = "v${version}";
35     hash = "sha256-pcY1JOi74pePvkIMRuHv5mlE4F68NzuBLJTCtgjUFRw=";
36   };
38   nativeBuildInputs = [
39     copyDesktopItems
40     makeWrapper
41   ];
43   propagatedBuildInputs = with python3Packages; [
44     pyside6
45     requests
46   ];
48   # wrap manually to avoid having a bash script in $out/bin with a .py extension
49   dontWrapPythonPrograms = true;
51   doCheck = false; # No tests defined
52   pythonImportsCheck = [ "OneDriveGUI" ];
54   desktopItems = [
55     (makeDesktopItem {
56       name = "OneDriveGUI";
57       exec = "onedrivegui";
58       desktopName = "OneDriveGUI";
59       comment = "OneDrive GUI Client";
60       type = "Application";
61       icon = "OneDriveGUI";
62       terminal = false;
63       categories = [ "Utility" ];
64     })
65   ];
67   postPatch = ''
68     # Patch OneDriveGUI.py so DIR_PATH points to shared files location
69     sed -i src/OneDriveGUI.py -e "s@^DIR_PATH =.*@DIR_PATH = '$out/share/OneDriveGUI'@"
70     cp ${setupPy} ${setupPy.name}
71   '';
73   postInstall = ''
74     mkdir -p $out/share/OneDriveGUI
75     # we do not need the `ui` directory - only resources
76     cp -r src/resources $out/share/OneDriveGUI
77     install -Dm444 -t $/out/share/icons/hicolor/48x48/apps src/resources/images/OneDriveGUI.png
78     # we put our own executable wrapper in place instead
79     rm -r $out/bin/*
81     makeWrapper ${python3Packages.python.interpreter} $out/bin/onedrivegui \
82       --prefix PATH : ${lib.makeBinPath [ onedrive ]} \
83       --prefix PYTHONPATH : ${
84         python3Packages.makePythonPath (propagatedBuildInputs ++ [ (placeholder "out") ])
85       } \
86       --add-flags $out/${python3Packages.python.sitePackages}/OneDriveGUI.py
87   '';
89   meta = with lib; {
90     homepage = "https://github.com/bpozdena/OneDriveGUI";
91     description = "Simple GUI for Linux OneDrive Client, with multi-account support";
92     mainProgram = "onedrivegui";
93     license = licenses.gpl3Only;
94     maintainers = with maintainers; [ chewblacka ];
95     platforms = platforms.linux;
96   };