aboutsummaryrefslogtreecommitdiffstats
path: root/modules/desktop/eww
diff options
context:
space:
mode:
Diffstat (limited to 'modules/desktop/eww')
-rw-r--r--modules/desktop/eww/yuck.nix56
1 files changed, 53 insertions, 3 deletions
diff --git a/modules/desktop/eww/yuck.nix b/modules/desktop/eww/yuck.nix
index 0efc0f1..1fde829 100644
--- a/modules/desktop/eww/yuck.nix
+++ b/modules/desktop/eww/yuck.nix
@@ -4,13 +4,63 @@
pkgs,
...
}:
-let
- inherit ((import ../../lib/script.nix { inherit lib pkgs; })) mkPythonScript;
-in
{
config = lib.mkIf config.desktop.enable {
programs.eww.yuckConfig =
let
+ mkPythonScript =
+ {
+ name,
+ path,
+ description ? "",
+ python ? pkgs.python3,
+ pythonPackages ? (ps: [ ]),
+ deps ? [ ],
+ gobjectIntrospection ? false,
+ }:
+ let
+ pythonEnv = python.withPackages pythonPackages;
+ pathPrefix = lib.concatStringsSep ":" (
+ [ "${pythonEnv}/bin" ] ++ map (p: "${lib.getBin p}/bin") deps
+ );
+ in
+ pkgs.stdenv.mkDerivation {
+ pname = name;
+ version = "0.1.0";
+ src = path;
+ dontUnpack = true;
+ meta = lib.optionalAttrs (description != "") { inherit description; } // {
+ mainProgram = name;
+ };
+
+ nativeBuildInputs =
+ lib.optionals gobjectIntrospection [
+ pkgs.wrapGAppsHook3
+ pkgs.gobject-introspection
+ ]
+ ++ lib.optional (!gobjectIntrospection) pkgs.makeWrapper;
+ buildInputs = lib.optionals gobjectIntrospection [ pkgs.gtk3 ];
+
+ installPhase = ''
+ mkdir -p $out/bin
+ install -m755 $src $out/bin/${name}
+ patchShebangs $out/bin/${name}
+ '';
+
+ # wrapGAppsHook3 wraps every executable in $out/bin automatically,
+ # setting GI_TYPELIB_PATH etc. from buildInputs' closure. With
+ # gobjectIntrospection = false a plain wrapProgram only extends PATH.
+ preFixup =
+ if gobjectIntrospection then
+ ''
+ gappsWrapperArgs+=(--prefix PATH : "${pathPrefix}")
+ ''
+ else
+ ''
+ wrapProgram $out/bin/${name} --prefix PATH : "${pathPrefix}"
+ '';
+ };
+
system-stats = mkPythonScript {
name = "eww-system-stats";
path = ./system-stats.py;