infra/module/aspect/desktop/session/enlightenment.nix

123 lines
3.8 KiB
Nix
Raw Normal View History

2025-12-01 13:23:24 +07:00
{
den.aspects = {
desktop-session-enlightenment = {
nixos =
{
config,
pkgs,
lib,
...
}:
with lib;
let
e = pkgs.enlightenment;
xcfg = config.services.xserver;
GST_PLUGIN_PATH = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" [
pkgs.gst_all_1.gst-plugins-base
pkgs.gst_all_1.gst-plugins-good
pkgs.gst_all_1.gst-plugins-bad
pkgs.gst_all_1.gst-libav
];
econnmanFixOverlay = final: prev: {
fix-econnman = prev // {
enlightenment = prev.enlightenment // {
econnman = prev.enlightenment.econnman.override (_oldArgs: {
python3Packages = final.python311Packages;
});
};
};
};
in
{
services.displayManager.sessionPackages = [ pkgs.enlightenment.enlightenment ];
nixpkgs.overlays = [
econnmanFixOverlay
];
environment.systemPackages = [
pkgs.enlightenment.enlightenment
#pkgs.fix-econnman.enlightenment.econnman # fixed overlay to python311
pkgs.enlightenment.efl
];
environment.pathsToLink = [
"/etc/enlightenment"
"/share/enlightenment"
"/share/elementary"
"/share/locale"
];
services.xserver.displayManager.sessionCommands = ''
if test "$XDG_CURRENT_DESKTOP" = "Enlightenment"; then
export GST_PLUGIN_PATH="${GST_PLUGIN_PATH}"
# make available for D-BUS user services
#export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}:${config.system.path}/share:${e.efl}/share
# Update user dirs as described in https://freedesktop.org/wiki/Software/xdg-user-dirs/
${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
fi
'';
# wrappers for programs installed by enlightenment that should be setuid
security.wrappers = {
enlightenment_ckpasswd = {
setuid = true;
owner = "root";
group = "root";
source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_ckpasswd";
};
enlightenment_sys = {
setuid = true;
owner = "root";
group = "root";
source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_sys";
};
enlightenment_system = {
setuid = true;
owner = "root";
group = "root";
source = "${pkgs.enlightenment.enlightenment}/lib/enlightenment/utils/enlightenment_system";
};
};
environment.etc."X11/xkb".source = xcfg.xkb.dir;
fonts.packages = [ pkgs.dejavu_fonts ];
services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable;
services.libinput.enable = mkDefault true;
services.dbus.packages = [ e.efl ];
systemd.user.services.efreet = {
enable = true;
description = "org.enlightenment.Efreet";
serviceConfig = {
ExecStart = "${e.efl}/bin/efreetd";
StandardOutput = "null";
};
};
systemd.user.services.ethumb = {
enable = true;
description = "org.enlightenment.Ethumb";
serviceConfig = {
ExecStart = "${e.efl}/bin/ethumbd";
StandardOutput = "null";
};
};
# ----- e16 / retro-enlightenment
# services.xserver.windowManager.e16.enable = true;
};
};
};
}