diff --git a/pkgs/by-name/tl/tlpui/package.nix b/pkgs/by-name/tl/tlpui/package.nix new file mode 100644 index 0000000000000..e1c5a1ed7b268 --- /dev/null +++ b/pkgs/by-name/tl/tlpui/package.nix @@ -0,0 +1,70 @@ +{ + cairo, + fetchFromGitHub, + gobject-introspection, + gtk3, + lib, + pciutils, + python3Packages, + substituteAll, + tlp, + usbutils, + wrapGAppsHook, +}: +python3Packages.buildPythonPackage rec { + pname = "tlpui"; + version = "1.6.5"; + pyproject = true; + + src = fetchFromGitHub { + owner = "d4nj1"; + repo = "TLPUI"; + rev = "refs/tags/tlpui-${version}"; + hash = "sha256-pgzGhf2WDRNQ2z0hPapUJA5MLTKq92UlgjC+G78T/4s="; + }; + + patches = [ + (substituteAll { + src = ./path.patch; + inherit tlp; + }) + ]; + + # ignore test/test_tlp_settings.py asit relies on opening a gui which is non-trivial + pytestFlagsArray = [ "--ignore=test/test_tlp_settings.py" ]; + nativeCheckInputs = [ + gobject-introspection + python3Packages.pytestCheckHook + ]; + + build-system = [ + wrapGAppsHook + python3Packages.poetry-core + ]; + + buildInputs = [ tlp ]; + + dependencies = [ + gobject-introspection + gtk3 + pciutils + python3Packages.pycairo + python3Packages.pygobject3 + python3Packages.pyyaml + usbutils + ]; + + meta = { + changelog = "https://github.com/d4nj1/TLPUI/releases/tag/tlpui-${version}"; + description = "A GTK user interface for TLP written in Python"; + homepage = "https://github.com/d4nj1/TLPUI"; + license = lib.licenses.gpl2Only; + longDescription = '' + The Python scripts in this project generate a GTK-UI to change TLP configuration files easily. + It has the aim to protect users from setting bad configuration and to deliver a basic overview of all the valid configuration values. + ''; + platforms = lib.platforms.linux; + mainProgram = "tlpui"; + maintainers = with lib.maintainers; [ grimmauld ]; + }; +} diff --git a/pkgs/by-name/tl/tlpui/path.patch b/pkgs/by-name/tl/tlpui/path.patch new file mode 100644 index 0000000000000..2eeee2822ae27 --- /dev/null +++ b/pkgs/by-name/tl/tlpui/path.patch @@ -0,0 +1,57 @@ +diff --git a/tlpui/file.py b/tlpui/file.py +index f0f3ecb..a9ad7f8 100644 +--- a/tlpui/file.py ++++ b/tlpui/file.py +@@ -26,7 +26,7 @@ def get_tlp_config_defaults(tlpversion: str): + tlpconfig_defaults = extract_default_tlp_configs(f"{settings.workdir}/defaults/tlp-{tlpversion}.conf") + + # update default values with intrinsic ones +- intrinsic_defaults_path = f"{settings.FOLDER_PREFIX}/usr/share/tlp/defaults.conf" ++ intrinsic_defaults_path = f"@tlp@/share/tlp/defaults.conf" + tlpconfig_defaults.update(extract_default_tlp_configs(intrinsic_defaults_path)) + + return tlpconfig_defaults +@@ -124,7 +124,10 @@ def create_tmp_tlp_config_file(changedproperties: dict) -> str: + filehandler, tmpfilename = mkstemp(dir=settings.TMP_FOLDER) + newfile = open(tmpfilename, mode='w', encoding='utf-8') + +- oldfile = open(settings.tlpconfigfile, encoding='utf-8') ++ try: ++ oldfile = open(settings.tlpconfigfile, encoding='utf-8') ++ except FileNotFoundError: ++ oldfile = open("@tlp@/etc/tlp.conf", encoding='utf-8') + lines = oldfile.readlines() + oldfile.close() + +diff --git a/tlpui/mainui.py b/tlpui/mainui.py +index 0242514..da59046 100644 +--- a/tlpui/mainui.py ++++ b/tlpui/mainui.py +@@ -115,8 +115,12 @@ def changed_items_dialog(window, tmpfilename: str, dialogtitle: str, message: st + scrolledwindow.set_hexpand(True) + scrolledwindow.set_vexpand(True) + +- with open(settings.tlpconfigfile, encoding='utf-8') as fromfile: +- fromfilecontent = fromfile.readlines() ++ try: ++ with open(settings.tlpconfigfile, encoding='utf-8') as fromfile: ++ fromfilecontent = fromfile.readlines() ++ except FileNotFoundError: ++ with open("@tlp@/etc/tlp.conf", encoding='utf-8') as fromfile: ++ fromfilecontent = fromfile.readlines() + with open(tmpfilename, encoding='utf-8') as tofile: + tofilecontent = tofile.readlines() + diff = settings.tlpbaseconfigfile + '\n\n' +diff --git a/tlpui/settingshelper.py b/tlpui/settingshelper.py +index 69481c0..d769029 100644 +--- a/tlpui/settingshelper.py ++++ b/tlpui/settingshelper.py +@@ -20,7 +20,7 @@ def exec_command(commands: [str]): + + def get_tlp_config_file(prefix: str) -> str: + """Select tlp config file by prefix.""" +- return f"{prefix}/etc/tlp.conf" ++ return f"{prefix}/etc/tlp.d/30-tlpui.conf" + + + def check_binaries_exist(flatpak_folder_prefix: str) -> None: