nixpkgs/pkgs/tools/misc/autorandr/default.nix
Romanos Skiadas d7956c52e1 autorandr: WIP Fix distutils import warning
Because autorandr still imports distutils, it produces a bunch of
deprecation warnings. we need to add packaging to propagatedBuildInputs,
but because this wasn't wrapped, the wrapper hook did not take care of
adjusting the system path.

The easiest way I could find to fix this was to actually wrap
autorandr. Then I also had to add a patch to disable autorandr
using sys.executable to fork itself in --batch mode. Otherwise it tries to use
python to run the bash wrapper, which doesn't work. This should be
fine in a nixpkgs environment, since nixpkgs sets the shebang explicitly.
2022-06-29 21:30:03 +03:00

72 lines
2.1 KiB
Nix

{ lib
, python3
, python3Packages
, fetchFromGitHub
, systemd
, xrandr
, installShellFiles }:
python3.pkgs.buildPythonApplication rec {
pname = "autorandr";
version = "1.12.1";
nativeBuildInputs = [ installShellFiles ];
propagatedBuildInputs = [ python3Packages.packaging ];
buildPhase = ''
substituteInPlace autorandr.py \
--replace 'os.popen("xrandr' 'os.popen("${xrandr}/bin/xrandr' \
--replace '["xrandr"]' '["${xrandr}/bin/xrandr"]'
'';
patches = [ ./0001-don-t-use-sys.executable.patch ];
outputs = [ "out" "man" ];
installPhase = ''
runHook preInstall
make install TARGETS='autorandr' PREFIX=$out
# zsh completions exist but currently have no make target, use
# installShellCompletions for both
# see https://github.com/phillipberndt/autorandr/issues/197
installShellCompletion --cmd autorandr \
--bash contrib/bash_completion/autorandr \
--zsh contrib/zsh_completion/_autorandr
make install TARGETS='autostart_config' PREFIX=$out DESTDIR=$out
make install TARGETS='manpage' PREFIX=$man
${if systemd != null then ''
make install TARGETS='systemd udev' PREFIX=$out DESTDIR=$out \
SYSTEMD_UNIT_DIR=/lib/systemd/system \
UDEV_RULES_DIR=/etc/udev/rules.d
substituteInPlace $out/etc/udev/rules.d/40-monitor-hotplug.rules \
--replace /bin/systemctl "/run/current-system/systemd/bin/systemctl"
'' else ''
make install TARGETS='pmutils' DESTDIR=$out \
PM_SLEEPHOOKS_DIR=/lib/pm-utils/sleep.d
make install TARGETS='udev' PREFIX=$out DESTDIR=$out \
UDEV_RULES_DIR=/etc/udev/rules.d
''}
runHook postInstall
'';
src = fetchFromGitHub {
owner = "phillipberndt";
repo = "autorandr";
rev = version;
sha256 = "sha256-7SNnbgV6PeseBD6wdilEIOfOL2KVDpnlkSn9SBgRhhM=";
};
meta = with lib; {
homepage = "https://github.com/phillipberndt/autorandr/";
description = "Automatically select a display configuration based on connected devices";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ coroa globin ];
platforms = platforms.unix;
};
}