From 3e8ff68f15a5b4dd6a4049e925fbd65f7260c7be Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Mon, 2 Feb 2026 12:42:42 -0800 Subject: [PATCH] picom: completely replace home-manager's picom with custom service Home-manager was concatenating its generated settings with our custom config. Disable home-manager's picom entirely and create our own systemd service that uses only our config file. Co-Authored-By: Claude Opus 4.5 --- nixos/xmonad.nix | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/nixos/xmonad.nix b/nixos/xmonad.nix index 62334251..a2e38523 100644 --- a/nixos/xmonad.nix +++ b/nixos/xmonad.nix @@ -92,12 +92,25 @@ makeEnable config "myModules.xmonad" true { enable = true; }; - # Enable picom service but disable its config generation - we write our own config + # Completely disable home-manager's picom - we manage everything ourselves # to work around the libconfig list vs array syntax issue for animations - services.picom = { - enable = true; - # Don't let home-manager generate any settings - we handle everything in xdg.configFile - settings = {}; + services.picom.enable = false; + + # Our own picom systemd service + systemd.user.services.picom = { + Unit = { + Description = "Picom X11 compositor"; + After = [ "graphical-session.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + Service = { + ExecStart = "${pkgs.picom}/bin/picom --config %h/.config/picom/picom.conf"; + Restart = "always"; + RestartSec = 3; + }; + Install = { + WantedBy = [ "graphical-session.target" ]; + }; }; # Write complete picom config directly to avoid home-manager's libconfig generator