{ inputs, self, ... }: let autostartOptionAttrs = { lib }: { type = lib.types.bool; description = "Controls whether an `equibop.desktop` file is generated and placed into `$XDG_CONFIG_HOME/autostart`."; default = false; }; in { imports = [ (inputs.helpers.mkMirroredModulesFlakeModule "graphicsOptions" ({ lib, ... }: { options.features.applications.gui.equibop.enable = lib.mkEnableOption "Equibop, a custom Discord client from the creators of Equicord"; })) ]; flake.nixosModules.graphicsOption = { lib, ... }: { options.features.applications.gui.equibop.autostart = inputs.helpers.mkRedundantOption "features.nixos.home-manager.enable" "true" (autostartOptionAttrs { inherit lib; }); }; flake.nixosModules.graphics = { pkgs, lib, config, ...}: { config = inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { home-manager.users.${config.info.userName}.features.applications.gui.equibop = lib.mkDefault config.features.applications.gui.equibop; } { environment.systemPackages = [ pkgs.equibop ]; }; }; flake.homeModules.graphicsOptions = { lib, ... }: { options.features.applications.gui.equibop.autostart = lib.mkOption (autostartOptionAttrs { inherit lib; }); }; flake.homeModules.graphics = { pkgs, lib, config, ... }: { config = lib.mkIf (config.features.applications.gui.equibop.enable) { programs.equibop.enable = true; xdg.configFile."autostart/equibop.desktop" = lib.mkIf (config.features.applications.gui.equibop.autostart) { text = '' [Desktop Entry] Type=Application Name=Equibop Comment=Equibop autostart script Exec=${pkgs.equibop}/bin/equibop --enable-speech-dispatcher StartupNotify=false Terminal=false Icon=equibop ''; }; home.activation = { linkEquibopConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.xdg.configHome}/equibop/settings.json"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/settings.json"; }); linkEquibopConfigEquicordSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.xdg.configHome}/equibop/settings/settings.json"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/equicord-settings.json"; }); linkEquibopConfigQuickCss = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.xdg.configHome}/equibop/settings/quickCss.css"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/quickCss.css"; }); }; }; }; }