ff1a94e523
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
88 lines
2.4 KiB
Nix
88 lines
2.4 KiB
Nix
{ lib
|
|
, python3Packages
|
|
, fetchFromGitHub
|
|
, writeText
|
|
, copyDesktopItems
|
|
, makeDesktopItem
|
|
, makeWrapper
|
|
, onedrive
|
|
}:
|
|
|
|
let
|
|
version = "1.0.3";
|
|
|
|
setupPy = writeText "setup.py" ''
|
|
from setuptools import setup
|
|
setup(
|
|
name='onedrivegui',
|
|
version='${version}',
|
|
scripts=[
|
|
'src/OneDriveGUI.py',
|
|
],
|
|
)
|
|
'';
|
|
|
|
in
|
|
python3Packages.buildPythonApplication rec {
|
|
pname = "onedrivegui";
|
|
inherit version;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "bpozdena";
|
|
repo = "OneDriveGUI";
|
|
rev = "v${version}";
|
|
hash = "sha256-HutziAzhIDYP8upNPieL2GNrxPBHUCVs09FFxdSqeBs=";
|
|
};
|
|
|
|
nativeBuildInputs = [ copyDesktopItems makeWrapper ];
|
|
|
|
propagatedBuildInputs = with python3Packages; [ pyside6 requests ];
|
|
|
|
# wrap manually to avoid having a bash script in $out/bin with a .py extension
|
|
dontWrapPythonPrograms = true;
|
|
|
|
doCheck = false; # No tests defined
|
|
pythonImportsCheck = [ "OneDriveGUI" ];
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = "OneDriveGUI";
|
|
exec = "onedrivegui";
|
|
desktopName = "OneDriveGUI";
|
|
comment = "OneDrive GUI Client";
|
|
type = "Application";
|
|
icon = "OneDriveGUI";
|
|
terminal = false;
|
|
categories = [ "Utility" ];
|
|
})
|
|
];
|
|
|
|
postPatch = ''
|
|
# Patch OneDriveGUI.py so DIR_PATH points to shared files location
|
|
sed -i src/OneDriveGUI.py -e "s@^DIR_PATH =.*@DIR_PATH = '$out/share/OneDriveGUI'@"
|
|
cp ${setupPy} ${setupPy.name}
|
|
'';
|
|
|
|
postInstall = ''
|
|
mkdir -p $out/share/OneDriveGUI
|
|
# we do not need the `ui` directory - only resources
|
|
cp -r src/resources $out/share/OneDriveGUI
|
|
install -Dm444 -t $/out/share/icons/hicolor/48x48/apps src/resources/images/OneDriveGUI.png
|
|
# we put our own executable wrapper in place instead
|
|
rm -r $out/bin/*
|
|
|
|
makeWrapper ${python3Packages.python.interpreter} $out/bin/onedrivegui \
|
|
--prefix PATH : ${lib.makeBinPath [ onedrive ]} \
|
|
--prefix PYTHONPATH : ${python3Packages.makePythonPath (propagatedBuildInputs ++ [(placeholder "out")])} \
|
|
--add-flags $out/${python3Packages.python.sitePackages}/OneDriveGUI.py
|
|
'';
|
|
|
|
meta = with lib; {
|
|
homepage = "https://github.com/bpozdena/OneDriveGUI";
|
|
description = "A simple GUI for Linux OneDrive Client, with multi-account support";
|
|
mainProgram = "onedrivegui";
|
|
license = licenses.gpl3Only;
|
|
maintainers = with maintainers; [ chewblacka ];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|