nixos-config/modules/nixos/programs/pop-launcher.nix
Gabriel Arazas 08202d1bab
programs/pop-launcher: update NixOS module
Now it assumes the package is patched to search its plugins and scripts
on its store path.
2023-08-22 09:18:58 +08:00

71 lines
2.0 KiB
Nix

{ config, options, lib, pkgs, ... }:
let
cfg = config.programs.pop-launcher;
# Plugins and scripts are assumed to be packaged at
# `$out/share/pop-launcher`.
pluginsDir = pkgs.symlinkJoin {
name = "pop-launcher-plugins-system";
paths = builtins.map (p: "${p}/share/pop-launcher") cfg.plugins;
};
in
{
options.programs.pop-launcher = {
enable = lib.mkOption {
description = ''
Whether to enable Pop launcher, a launcher service for application
launchers.
However, you have to install an application launcher frontend to make
use of this such as {command}`onagre` or
{command}`cosmic-launcher`.
'';
type = lib.types.bool;
default = false;
example = true;
};
package = lib.mkOption {
type = lib.types.package;
description = ''
The package where {command}`pop-launcher` binary and built-in plugins
are expected.
::: {.note}
The package is assumed to have been patched to search for the
derivation output path (at {file}`$out/share/pop-launcher`) instead of
the distribution plugins path (at {file}`/usr/lib/pop-launcher`).
Otherwise, the built-in plugins will not show up in the launcher
frontend.
:::
'';
default = pkgs.pop-launcher;
};
plugins = lib.mkOption {
type = lib.types.listOf lib.types.package;
description = ''
List of packages containing Pop launcher plugins and scripts to be
installed as system-wide plugins. The launcher plugins and scripts of
each listed package are assumed to be installed at
{file}`$out/share/pop-launcher`.
'';
default = [ ];
defaultText = "[]";
example = lib.literalExpression ''
with pkgs; [
pop-launcher-plugin-duckduckgo-bangs
pop-launcher-plugin-jetbrains
];
'';
};
};
config = lib.mkIf cfg.enable {
environment.etc.pop-launcher.source = pluginsDir;
environment.systemPackages = [ cfg.package ];
};
}