summary refs log tree commit diff
path: root/pkgs/tools/system
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2021-01-09 01:00:25 +0000
committerGitHub <noreply@github.com>2021-01-09 01:00:25 +0000
commite251591528ebecb21626f098e6ce62562568489d (patch)
treeb10d92cc925da3fc1eec8b04ba8352e09c31e4db /pkgs/tools/system
parentf89e74dbcc1398d1747039313b1f5f89110d9db8 (diff)
parent9ff1aa8d2ce70fa2c4417eab055d182623f98429 (diff)
downloadnixpkgs-e251591528ebecb21626f098e6ce62562568489d.tar
nixpkgs-e251591528ebecb21626f098e6ce62562568489d.tar.gz
nixpkgs-e251591528ebecb21626f098e6ce62562568489d.tar.bz2
nixpkgs-e251591528ebecb21626f098e6ce62562568489d.tar.lz
nixpkgs-e251591528ebecb21626f098e6ce62562568489d.tar.xz
nixpkgs-e251591528ebecb21626f098e6ce62562568489d.tar.zst
nixpkgs-e251591528ebecb21626f098e6ce62562568489d.zip
Merge master into staging-next
Diffstat (limited to 'pkgs/tools/system')
-rw-r--r--pkgs/tools/system/autocpu-freq/default.nix34
-rw-r--r--pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch178
2 files changed, 212 insertions, 0 deletions
diff --git a/pkgs/tools/system/autocpu-freq/default.nix b/pkgs/tools/system/autocpu-freq/default.nix
new file mode 100644
index 00000000000..348fd689ab9
--- /dev/null
+++ b/pkgs/tools/system/autocpu-freq/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+python3Packages.buildPythonPackage rec {
+  pname = "auto-cpufreq";
+  version = "1.5.1";
+
+  src = fetchFromGitHub {
+    owner = "AdnanHodzic";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "uVhftO6AqFnZ0uaEYRAPvVskkouNOXPtNVYXx7WJKyw=";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ click distro psutil ];
+
+  doCheck = false;
+  pythonImportsCheck = [ "source" ];
+
+  # patch to prevent script copying and to disable install
+  patches = [ ./prevent-install-and-copy.patch ];
+
+  postInstall = ''
+    # copy script manually
+    cp ${src}/scripts/cpufreqctl.sh $out/bin/cpufreqctl
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/AdnanHodzic/auto-cpufreq";
+    description = "Automatic CPU speed & power optimizer for Linux";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.Technical27 ];
+  };
+}
diff --git a/pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch b/pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch
new file mode 100644
index 00000000000..28c524e1497
--- /dev/null
+++ b/pkgs/tools/system/autocpu-freq/prevent-install-and-copy.patch
@@ -0,0 +1,178 @@
+diff --git a/scripts/cpufreqctl.sh b/scripts/cpufreqctl.sh
+index 63a2b5b..e157efe 100755
+--- a/scripts/cpufreqctl.sh
++++ b/scripts/cpufreqctl.sh
+@@ -467,35 +467,21 @@ fi
+ 
+ if [ $OPTION = "--install" ]
+ then
+-  echo 'installing helpers...'
+-  cp $0 /usr/bin/
+-  echo 'installing policy...'
+-  cp $(dirname "$(readlink -f "$0")")/konkor.cpufreq.policy /usr/share/polkit-1/actions/
+-  echo 'installing fonts...'
+-  mkdir -p /usr/share/fonts/truetype/cpufreq
+-  cp $(dirname "$(readlink -f "$0")")/fonts/cpufreq.ttf /usr/share/fonts/truetype/cpufreq/
+-  echo "done"
++  echo "install is disabled in the nix package"
+   exit
+ fi
+ if [ $OPTION = "--update-fonts" ]
+ then
+-  fc-cache -f
++  echo "update-fonts is disabled in the nix package"
+   exit
+ fi
+ if [ $OPTION = "--uninstall" ]
+ then
+-  echo 'uninstalling cpufreqctl helper...'
+-  rm /usr/bin/cpufreqctl
+-  echo 'uninstalling policy...'
+-  rm /usr/share/polkit-1/actions/konkor.cpufreq.policy
+-  echo 'uninstalling fonts...'
+-  rm -rf /usr/share/fonts/truetype/cpufreq
+-  echo "done"
++  echo "uninstall is disabled in the nix package"
+   exit
+ fi
+ if [ $OPTION = "--reset" ]
+ then
+-  echo 'reset to default values...'
+-  dconf reset -f "/org/gnome/shell/extensions/cpufreq/"
++  echo "reset is disabled in the nix package"
+   exit
+ fi
+diff --git a/source/core.py b/source/core.py
+index 531c0c4..2e27e65 100644
+--- a/source/core.py
++++ b/source/core.py
+@@ -24,8 +24,6 @@ warnings.filterwarnings("ignore")
+ # - re-enable CPU fan speed display and make more generic and not only for thinkpad
+ # - replace get system/CPU load from: psutil.getloadavg() | available in 5.6.2)
+ 
+-SCRIPTS_DIR = Path("/usr/local/share/auto-cpufreq/scripts/")
+-
+ # from the highest performance to the lowest
+ ALL_GOVERNORS = ("performance", "ondemand", "conservative", "schedutil", "userspace", "powersave")
+ CPUS = os.cpu_count()
+@@ -156,34 +154,16 @@ def cpufreqctl():
+     """
+     deploy cpufreqctl script
+     """
+-
+-    # detect if running on a SNAP
+-    if os.getenv('PKG_MARKER') == "SNAP":
+-        pass
+-    else:
+-        # deploy cpufreqctl script (if missing)
+-        if os.path.isfile("/usr/bin/cpufreqctl"):
+-            shutil.copy("/usr/bin/cpufreqctl", "/usr/bin/cpufreqctl.auto-cpufreq.bak")
+-            shutil.copy(SCRIPTS_DIR / "cpufreqctl.sh", "/usr/bin/cpufreqctl")
+-        else:
+-            shutil.copy(SCRIPTS_DIR / "cpufreqctl.sh", "/usr/bin/cpufreqctl")
++    # scripts are already in the correct place
++    pass
+ 
+ 
+ def cpufreqctl_restore():
+     """
+     restore original cpufreqctl script
+     """
+-    # detect if running on a SNAP
+-    if os.getenv('PKG_MARKER') == "SNAP":
+-        pass
+-    else:
+-        # restore original cpufreqctl script
+-        if os.path.isfile("/usr/bin/cpufreqctl.auto-cpufreq.bak"):
+-            os.system("cp /usr/bin/cpufreqctl.auto-cpufreq.bak /usr/bin/cpufreqctl")
+-            os.remove("/usr/bin/cpufreqctl.auto-cpufreq.bak")
+-        # ToDo: implement mechanism to make sure cpufreqctl (auto-cpufreq) file is
+-        # restored if overwritten by system. But during tool removal to also remove it
+-        # in def cpufreqctl
++    # no need to restore
++    pass
+ 
+ 
+ def footer(l=79):
+@@ -209,71 +189,13 @@ def remove_complete_msg():
+ 
+ 
+ def deploy_daemon():
+-    print("\n" + "-" * 21 + " Deploying auto-cpufreq as a daemon " + "-" * 22 + "\n")
+-
+-    # deploy cpufreqctl script func call
+-    cpufreqctl()
+-
+-    print("* Turn off bluetooth on boot")
+-    btconf = Path("/etc/bluetooth/main.conf")
+-    try:
+-        orig_set = "AutoEnable=true"
+-        change_set = "AutoEnable=false"
+-        with btconf.open(mode="r+") as f:
+-            content = f.read()
+-            f.seek(0)
+-            f.truncate()
+-            f.write(content.replace(orig_set, change_set))
+-    except:
+-        print("\nERROR:\nWas unable to turn off bluetooth on boot")
+-
+-    auto_cpufreq_log_file.touch(exist_ok=True)
+-
+-    print("\n* Deploy auto-cpufreq install script")
+-    shutil.copy(SCRIPTS_DIR / "auto-cpufreq-install.sh", "/usr/bin/auto-cpufreq-install")
+-
+-    print("\n* Deploy auto-cpufreq remove script")
+-    shutil.copy(SCRIPTS_DIR / "auto-cpufreq-remove.sh", "/usr/bin/auto-cpufreq-remove")
+-
+-    call("/usr/bin/auto-cpufreq-install", shell=True)
++    # prevent needless copying and system changes
++    pass
+ 
+ 
+ # remove auto-cpufreq daemon
+ def remove():
+-
+-    # check if auto-cpufreq is installed
+-    if not os.path.exists("/usr/bin/auto-cpufreq-remove"):
+-        print("\nauto-cpufreq daemon is not installed.\n")
+-        sys.exit(1)
+-        
+-    print("\n" + "-" * 21 + " Removing auto-cpufreq daemon " + "-" * 22 + "\n")
+-
+-    print("* Turn on bluetooth on boot")
+-    btconf = "/etc/bluetooth/main.conf"
+-    try:
+-        orig_set = "AutoEnable=true"
+-        change_set = "AutoEnable=false"
+-        with open(btconf, "r+") as f:
+-            content = f.read()
+-            f.seek(0)
+-            f.truncate()
+-            f.write(content.replace(change_set, orig_set))
+-    except:
+-        print("\nERROR:\nWas unable to turn on bluetooth on boot")
+-
+-    # run auto-cpufreq daemon install script
+-    call("/usr/bin/auto-cpufreq-remove", shell=True)
+-
+-    # remove auto-cpufreq-remove
+-    os.remove("/usr/bin/auto-cpufreq-remove")
+-
+-    # delete log file
+-    if auto_cpufreq_log_file.exists():
+-        auto_cpufreq_log_file.unlink()
+-
+-    # restore original cpufrectl script
+-    cpufreqctl_restore()
+-
++    pass
+ 
+ def gov_check():
+     for gov in get_avail_gov():
+@@ -798,4 +720,4 @@ def running_daemon():
+         exit(1)
+     elif os.getenv("PKG_MARKER") == "SNAP" and dcheck == "enabled":
+         deploy_complete_msg()
+-        exit(1)
+\ No newline at end of file
++        exit(1)