Files
nix-flake/modules/features/applications/gui/equibop.nix
T

63 lines
2.7 KiB
Nix

{ 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";
})) ];
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";
});
};
};
};
}