{ user ? throw "user argument is required", home ? throw "home argument is required", }: { config, lib, pkgs, inputs, ... }: let agsConfig = import ./config { inherit pkgs; }; in { home-manager.users.${user} = { imports = [ inputs.ags.homeManagerModules.default ]; programs.ags.enable = true; xdg.configFile."ags/config.js".source = "${agsConfig}/share/config.js"; theme.templates."${home}/.config/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 libdbusmenu-gtk3 (pkgs.callPackage ../cliphist/rofi.nix { }) ]; text = "exec ags"; } ); }; Install.WantedBy = [ "graphical-session.target" ]; }; }; }; }