{ username ? throw "username argument is required", }: { config, lib, pkgs, inputs, ... }: let hmConfig = config.home-manager.users.${username}; agsConfig = import ./config { inherit pkgs; }; in { home-manager.users.${username} = { imports = [ inputs.ags.homeManagerModules.default ]; programs.ags.enable = true; xdg.configFile.ags = { source = "${agsConfig}/share/config.js"; target = "ags/config.js"; }; theme.templates."${hmConfig.xdg.configHome}/ags/theme.sass".source = ./theme.sass; systemd.user = { targets.tray.Unit = { BindsTo = [ "ags.service" ]; After = [ "graphical-session.target" "ags.service" ]; }; services.ags = { Unit = { Description = "Desktop widget shell"; BindsTo = [ "graphical-session.target" ]; After = [ "graphical-session.target" ]; }; Service = { Type = "notify"; NotifyAccess = "all"; ExecStart = lib.meta.getExe ( pkgs.writeShellApplication { name = "init-ags"; runtimeInputs = with pkgs; [ inputs.ags.packages.${stdenv.hostPlatform.system}.default sassc hyprland nixos-icons rofi-wayland wl-clipboard cliphist libdbusmenu-gtk3 ]; text = "exec ags"; } ); }; Install.WantedBy = [ "graphical-session.target" ]; }; }; }; }