diff --git a/modules/misc/xdg-mime.nix b/modules/misc/xdg-mime.nix index 5a5cb600d..9c47ebe6d 100644 --- a/modules/misc/xdg-mime.nix +++ b/modules/misc/xdg-mime.nix @@ -35,18 +35,12 @@ in ''; }; - sharedMimeInfoPackage = mkOption { - type = types.package; - default = pkgs.shared-mime-info; - defaultText = lib.literalExpression "pkgs.shared-mime-info"; - description = "The package to use when running update-mime-database."; + sharedMimeInfoPackage = lib.mkPackageOption pkgs "shared-mime-info" { + extraDescription = "Used when running update-mime-database."; }; - desktopFileUtilsPackage = mkOption { - type = types.package; - default = pkgs.desktop-file-utils; - defaultText = lib.literalExpression "pkgs.desktop-file-utils"; - description = "The package to use when running update-desktop-database."; + desktopFileUtilsPackage = lib.mkPackageOption pkgs "desktop-file-utils" { + extraDescription = "Used when running update-desktop-database."; }; }; }; diff --git a/modules/programs/lutris.nix b/modules/programs/lutris.nix index 991b5e7c3..ce5781924 100644 --- a/modules/programs/lutris.nix +++ b/modules/programs/lutris.nix @@ -27,13 +27,7 @@ in { options.programs.lutris = { enable = mkEnableOption "lutris."; - package = mkOption { - default = pkgs.lutris; - description = '' - The lutris package to use. - ''; - type = types.package; - }; + package = lib.mkPackageOption pkgs "lutris" { }; steamPackage = mkOption { default = null; example = "pkgs.steam or osConfig.programs.steam.package"; diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix index a7353a19e..fea556d48 100644 --- a/modules/programs/neovim.nix +++ b/modules/programs/neovim.nix @@ -48,9 +48,10 @@ let description = "Don't load by default (load with :packadd)"; }; - plugin = mkOption { - type = types.package; - description = "vim plugin"; + plugin = lib.mkPackageOption pkgs.vimPlugins "plugin" { + default = null; + example = "pkgs.vimPlugins.nvim-treesitter"; + pkgsText = "pkgs.vimPlugins"; }; runtime = mkOption { diff --git a/modules/programs/tmux.nix b/modules/programs/tmux.nix index 1c43a36cb..ec7ea19ea 100644 --- a/modules/programs/tmux.nix +++ b/modules/programs/tmux.nix @@ -19,9 +19,11 @@ let pluginModule = types.submodule { options = { - plugin = mkOption { - type = types.package; - description = "Path of the configuration file to include."; + plugin = lib.mkPackageOption pkgs.tmuxPlugins "plugin" { + example = "pkgs.tmuxPlugins.sensible"; + default = null; + pkgsText = "pkgs.tmuxPlugins"; + extraDescription = "Path of the configuration file to include."; }; extraConfig = mkOption { diff --git a/modules/programs/vim.nix b/modules/programs/vim.nix index 58b42ffda..6773c8786 100644 --- a/modules/programs/vim.nix +++ b/modules/programs/vim.nix @@ -152,12 +152,9 @@ in readOnly = true; }; - packageConfigurable = mkOption { - type = types.package; - description = "Vim package to customize"; - default = pkgs.vim-full or pkgs.vim_configurable; - defaultText = literalExpression "pkgs.vim-full"; - example = literalExpression "pkgs.vim"; + packageConfigurable = lib.mkPackageOption pkgs "vim-full" { + extraDescription = "Vim package to customize"; + example = "pkgs.vim"; }; defaultEditor = mkOption { diff --git a/modules/services/avizo.nix b/modules/services/avizo.nix index b4e46cb9c..7284dae45 100644 --- a/modules/services/avizo.nix +++ b/modules/services/avizo.nix @@ -33,16 +33,12 @@ in ''; }; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.avizo; - defaultText = lib.literalExpression "pkgs.avizo"; - example = lib.literalExpression '' + package = lib.mkPackageOption pkgs "avizo" { + example = '' pkgs.avizo.overrideAttrs (final: prev: { patchPhase = "cp ''${./images}/*.png data/images/"; }) ''; - description = "The `avizo` package to use."; }; }; diff --git a/modules/services/betterlockscreen.nix b/modules/services/betterlockscreen.nix index 0afe6eb6c..487003a01 100644 --- a/modules/services/betterlockscreen.nix +++ b/modules/services/betterlockscreen.nix @@ -14,12 +14,7 @@ in services.betterlockscreen = { enable = lib.mkEnableOption "betterlockscreen, a screen-locker module"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.betterlockscreen; - defaultText = lib.literalExpression "pkgs.betterlockscreen"; - description = "Package providing {command}`betterlockscreen`."; - }; + package = lib.mkPackageOption pkgs "betterlockscreen" { }; arguments = lib.mkOption { type = lib.types.listOf lib.types.str; diff --git a/modules/services/clipmenu.nix b/modules/services/clipmenu.nix index b786fc728..922abb31f 100644 --- a/modules/services/clipmenu.nix +++ b/modules/services/clipmenu.nix @@ -15,12 +15,7 @@ in options.services.clipmenu = { enable = lib.mkEnableOption "clipmenu, the clipboard management daemon"; - package = mkOption { - type = types.package; - default = pkgs.clipmenu; - defaultText = "pkgs.clipmenu"; - description = "clipmenu derivation to use."; - }; + package = lib.mkPackageOption pkgs "clipmenu" { }; launcher = mkOption { type = types.nullOr types.str; diff --git a/modules/services/dunst.nix b/modules/services/dunst.nix index 8b37148aa..2e7113d5b 100644 --- a/modules/services/dunst.nix +++ b/modules/services/dunst.nix @@ -68,12 +68,7 @@ in services.dunst = { enable = lib.mkEnableOption "the dunst notification daemon"; - package = mkOption { - type = types.package; - default = pkgs.dunst; - defaultText = literalExpression "pkgs.dunst"; - description = "Package providing {command}`dunst`."; - }; + package = lib.mkPackageOption pkgs "dunst" { }; configFile = mkOption { type = with types; nullOr (either str path); diff --git a/modules/services/dwm-status.nix b/modules/services/dwm-status.nix index b2b34936a..1a87b8142 100644 --- a/modules/services/dwm-status.nix +++ b/modules/services/dwm-status.nix @@ -32,12 +32,8 @@ in services.dwm-status = { enable = lib.mkEnableOption "dwm-status user service"; - package = mkOption { - type = types.package; - default = pkgs.dwm-status; - defaultText = lib.literalExpression "pkgs.dwm-status"; + package = lib.mkPackageOption pkgs "dwm-status" { example = "pkgs.dwm-status.override { enableAlsaUtils = false; }"; - description = "Which dwm-status package to use."; }; order = mkOption { diff --git a/modules/services/easyeffects.nix b/modules/services/easyeffects.nix index 2dca97e50..77e21dc3a 100644 --- a/modules/services/easyeffects.nix +++ b/modules/services/easyeffects.nix @@ -81,12 +81,7 @@ in ``` to your system configuration for the daemon to work correctly''; - package = mkOption { - type = types.package; - default = pkgs.easyeffects; - defaultText = literalExpression "pkgs.easyeffects"; - description = "The `easyeffects` package to use."; - }; + package = lib.mkPackageOption pkgs "easyeffects" { }; preset = mkOption { type = types.str; diff --git a/modules/services/espanso.nix b/modules/services/espanso.nix index b4df0e3be..3408242cf 100644 --- a/modules/services/espanso.nix +++ b/modules/services/espanso.nix @@ -57,12 +57,7 @@ in services.espanso = { enable = mkEnableOption "Espanso: cross platform text expander in Rust"; - package = mkOption { - type = types.package; - description = "Which espanso package to use"; - default = pkgs.espanso; - defaultText = literalExpression "pkgs.espanso"; - }; + package = lib.mkPackageOption pkgs "espanso" { }; package-wayland = mkPackageOption pkgs "espanso-wayland" { diff --git a/modules/services/etesync-dav.nix b/modules/services/etesync-dav.nix index 0ef2565b5..d343f31c2 100644 --- a/modules/services/etesync-dav.nix +++ b/modules/services/etesync-dav.nix @@ -19,12 +19,7 @@ in options.services.etesync-dav = { enable = lib.mkEnableOption "etesync-dav"; - package = mkOption { - type = types.package; - default = pkgs.etesync-dav; - defaultText = "pkgs.etesync-dav"; - description = "The etesync-dav derivation to use."; - }; + package = lib.mkPackageOption pkgs "etesync-dav" { }; serverUrl = mkOption { type = types.str; diff --git a/modules/services/flameshot.nix b/modules/services/flameshot.nix index be4360445..664f63faf 100644 --- a/modules/services/flameshot.nix +++ b/modules/services/flameshot.nix @@ -19,12 +19,7 @@ in options.services.flameshot = { enable = lib.mkEnableOption "Flameshot"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.flameshot; - defaultText = lib.literalExpression "pkgs.flameshot"; - description = "Package providing {command}`flameshot`."; - }; + package = lib.mkPackageOption pkgs "flameshot" { }; settings = lib.mkOption { inherit (iniFormat) type; diff --git a/modules/services/fnott.nix b/modules/services/fnott.nix index 91d1daf47..d1b1d31fb 100644 --- a/modules/services/fnott.nix +++ b/modules/services/fnott.nix @@ -22,12 +22,7 @@ in fnott, a lightweight Wayland notification daemon for wlroots-based compositors ''; - package = mkOption { - type = types.package; - default = pkgs.fnott; - defaultText = lib.literalExpression "pkgs.fnott"; - description = "Package providing {command}`fnott`."; - }; + package = lib.mkPackageOption pkgs "fnott" { }; extraFlags = mkOption { type = types.listOf types.str; diff --git a/modules/services/fusuma.nix b/modules/services/fusuma.nix index 435463018..2daa192a6 100644 --- a/modules/services/fusuma.nix +++ b/modules/services/fusuma.nix @@ -68,12 +68,7 @@ in options.services.fusuma = { enable = lib.mkEnableOption "the fusuma systemd service to automatically enable touchpad gesture"; - package = mkOption { - type = types.package; - default = pkgs.fusuma; - defaultText = literalExpression "pkgs.fusuma"; - description = "Package providing {command}`fusuma`."; - }; + package = lib.mkPackageOption pkgs "fusuma" { }; settings = mkOption { type = yamlFormat.type; diff --git a/modules/services/git-sync.nix b/modules/services/git-sync.nix index 860dda722..ce0e78afd 100644 --- a/modules/services/git-sync.nix +++ b/modules/services/git-sync.nix @@ -121,14 +121,7 @@ in services.git-sync = { enable = lib.mkEnableOption "git-sync services"; - package = mkOption { - type = types.package; - default = pkgs.git-sync; - defaultText = literalExpression "pkgs.git-sync"; - description = '' - Package containing the {command}`git-sync` program. - ''; - }; + package = lib.mkPackageOption pkgs "git-sync" { }; repositories = mkOption { type = with types; attrsOf repositoryType; diff --git a/modules/services/gromit-mpx.nix b/modules/services/gromit-mpx.nix index 64486518b..3c99986ed 100644 --- a/modules/services/gromit-mpx.nix +++ b/modules/services/gromit-mpx.nix @@ -139,12 +139,7 @@ in options.services.gromit-mpx = { enable = lib.mkEnableOption "Gromit-MPX annotation tool"; - package = mkOption { - type = types.package; - default = pkgs.gromit-mpx; - defaultText = "pkgs.gromit-mpx"; - description = "The gromit-mpx package to use."; - }; + package = lib.mkPackageOption pkgs "gromit-mpx" { }; hotKey = mkOption { type = with types; nullOr (either str ints.positive); diff --git a/modules/services/imapnotify.nix b/modules/services/imapnotify.nix index 295196460..2a089f388 100644 --- a/modules/services/imapnotify.nix +++ b/modules/services/imapnotify.nix @@ -126,12 +126,8 @@ in services.imapnotify = { enable = lib.mkEnableOption "imapnotify"; - package = mkOption { - type = types.package; - default = pkgs.goimapnotify; - defaultText = lib.literalExpression "pkgs.goimapnotify"; - example = lib.literalExpression "pkgs.imapnotify"; - description = "The imapnotify package to use"; + package = lib.mkPackageOption pkgs "goimapnotify" { + example = "pkgs.imapnotify"; }; path = mkOption { diff --git a/modules/services/kanshi.nix b/modules/services/kanshi.nix index 06d67f8fa..9050c258e 100644 --- a/modules/services/kanshi.nix +++ b/modules/services/kanshi.nix @@ -226,14 +226,7 @@ in options.services.kanshi = { enable = lib.mkEnableOption "kanshi, a Wayland daemon that automatically configures outputs"; - package = mkOption { - type = types.package; - default = pkgs.kanshi; - defaultText = literalExpression "pkgs.kanshi"; - description = '' - kanshi derivation to use. - ''; - }; + package = lib.mkPackageOption pkgs "kanshi" { }; profiles = mkOption { type = types.attrsOf profileModule; diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix index 6b043f532..68bafeb24 100644 --- a/modules/services/kdeconnect.nix +++ b/modules/services/kdeconnect.nix @@ -15,11 +15,9 @@ in options = { services.kdeconnect = { enable = lib.mkEnableOption "KDE connect"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.kdePackages.kdeconnect-kde; - example = lib.literalExpression "pkgs.plasma5Packages.kdeconnect-kde"; - description = "The KDE connect package to use"; + package = lib.mkPackageOption pkgs.kdePackages "kdeconnect-kde" { + example = "pkgs.plasma5Packages.kdeconnect-kde"; + pkgsText = "pkgs.kdePackages"; }; indicator = lib.mkOption { diff --git a/modules/services/mbsync.nix b/modules/services/mbsync.nix index e29c4d0fd..e336da9c9 100644 --- a/modules/services/mbsync.nix +++ b/modules/services/mbsync.nix @@ -21,13 +21,7 @@ in options.services.mbsync = { enable = lib.mkEnableOption "mbsync"; - package = mkOption { - type = types.package; - default = pkgs.isync; - defaultText = lib.literalExpression "pkgs.isync"; - example = lib.literalExpression "pkgs.isync"; - description = "The package to use for the mbsync binary."; - }; + package = lib.mkPackageOption pkgs "isync" { }; frequency = mkOption { type = types.str; diff --git a/modules/services/mpd-discord-rpc.nix b/modules/services/mpd-discord-rpc.nix index 0db0347aa..8c86a1d74 100644 --- a/modules/services/mpd-discord-rpc.nix +++ b/modules/services/mpd-discord-rpc.nix @@ -33,12 +33,7 @@ in ''; }; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.mpd-discord-rpc; - defaultText = lib.literalExpression "pkgs.mpd-discord-rpc"; - description = "mpd-discord-rpc package to use."; - }; + package = lib.mkPackageOption pkgs "mpd-discord-rpc" { }; }; config = lib.mkIf cfg.enable { diff --git a/modules/services/mpd.nix b/modules/services/mpd.nix index ea15a4c3f..e4fd61141 100644 --- a/modules/services/mpd.nix +++ b/modules/services/mpd.nix @@ -20,14 +20,7 @@ in ''; }; - package = mkOption { - type = types.package; - default = pkgs.mpd; - defaultText = "pkgs.mpd"; - description = '' - The MPD package to run. - ''; - }; + package = lib.mkPackageOption pkgs "mpd" { }; musicDirectory = mkOption { type = with types; either path str; diff --git a/modules/services/mpdris2.nix b/modules/services/mpdris2.nix index d59db3520..102ec0a02 100644 --- a/modules/services/mpdris2.nix +++ b/modules/services/mpdris2.nix @@ -44,12 +44,7 @@ in notifications = mkEnableOption "song change notifications"; multimediaKeys = mkEnableOption "multimedia key support"; - package = mkOption { - type = types.package; - default = pkgs.mpdris2; - defaultText = lib.literalExpression "pkgs.mpdris2"; - description = "The mpDris2 package to use."; - }; + package = lib.mkPackageOption pkgs "mpdris2" { }; mpd = { host = mkOption { diff --git a/modules/services/nextcloud-client.nix b/modules/services/nextcloud-client.nix index 2f651b747..e9f943eb6 100644 --- a/modules/services/nextcloud-client.nix +++ b/modules/services/nextcloud-client.nix @@ -14,12 +14,7 @@ in services.nextcloud-client = { enable = lib.mkEnableOption "Nextcloud Client"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.nextcloud-client; - defaultText = lib.literalExpression "pkgs.nextcloud-client"; - description = "The package to use for the nextcloud client binary."; - }; + package = lib.mkPackageOption pkgs "nextcloud-client" { }; startInBackground = lib.mkOption { type = lib.types.bool; diff --git a/modules/services/notify-osd.nix b/modules/services/notify-osd.nix index a160a42c5..f05ed431e 100644 --- a/modules/services/notify-osd.nix +++ b/modules/services/notify-osd.nix @@ -16,14 +16,7 @@ in services.notify-osd = { enable = lib.mkEnableOption "notify-osd"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.notify-osd; - defaultText = lib.literalExpression "pkgs.notify-osd"; - description = '' - Package containing the {command}`notify-osd` program. - ''; - }; + package = lib.mkPackageOption pkgs "notify-osd" { }; }; }; diff --git a/modules/services/pantalaimon.nix b/modules/services/pantalaimon.nix index 3bd5a9333..ce90ec7c9 100644 --- a/modules/services/pantalaimon.nix +++ b/modules/services/pantalaimon.nix @@ -16,12 +16,7 @@ in services.pantalaimon = { enable = lib.mkEnableOption "Pantalaimon, an E2EE aware proxy daemon for matrix clients"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.pantalaimon; - defaultText = lib.literalExpression "pkgs.pantalaimon"; - description = "Package providing the {command}`pantalaimon` executable to use."; - }; + package = lib.mkPackageOption pkgs "pantalaimon" { }; settings = lib.mkOption { type = iniFmt.type; diff --git a/modules/services/parcellite.nix b/modules/services/parcellite.nix index a9f02bb5d..2d071ec71 100644 --- a/modules/services/parcellite.nix +++ b/modules/services/parcellite.nix @@ -24,12 +24,8 @@ in ''; }; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.parcellite; - defaultText = lib.literalExpression "pkgs.parcellite"; - example = lib.literalExpression "pkgs.clipit"; - description = "Parcellite derivation to use."; + package = lib.mkPackageOption pkgs "parcellite" { + example = "pkgs.clipit"; }; }; diff --git a/modules/services/picom.nix b/modules/services/picom.nix index c3138a430..16420e453 100644 --- a/modules/services/picom.nix +++ b/modules/services/picom.nix @@ -295,15 +295,7 @@ in ''; }; - package = mkOption { - type = types.package; - default = pkgs.picom; - defaultText = literalExpression "pkgs.picom"; - example = literalExpression "pkgs.picom"; - description = '' - Picom derivation to use. - ''; - }; + package = lib.mkPackageOption pkgs "picom" { }; settings = with types; diff --git a/modules/services/playerctld.nix b/modules/services/playerctld.nix index 3278af762..d0d106c0c 100644 --- a/modules/services/playerctld.nix +++ b/modules/services/playerctld.nix @@ -15,12 +15,7 @@ in options.services.playerctld = { enable = lib.mkEnableOption "playerctld daemon"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.playerctl; - defaultText = lib.literalExpression "pkgs.playerctl"; - description = "The playerctl package to use."; - }; + package = lib.mkPackageOption pkgs "playerctl" { }; }; config = lib.mkIf cfg.enable { diff --git a/modules/services/plex-mpv-shim.nix b/modules/services/plex-mpv-shim.nix index f34ddd80b..d7e89c7b3 100644 --- a/modules/services/plex-mpv-shim.nix +++ b/modules/services/plex-mpv-shim.nix @@ -17,12 +17,7 @@ in services.plex-mpv-shim = { enable = lib.mkEnableOption "Plex mpv shim"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.plex-mpv-shim; - defaultText = lib.literalExpression "pkgs.plex-mpv-shim"; - description = "The package to use for the Plex mpv shim."; - }; + package = lib.mkPackageOption pkgs "plex-mpv-shim" { }; settings = lib.mkOption { type = jsonFormat.type; diff --git a/modules/services/podman-linux/options.nix b/modules/services/podman-linux/options.nix index 3485805d3..35bc2c95d 100644 --- a/modules/services/podman-linux/options.nix +++ b/modules/services/podman-linux/options.nix @@ -56,12 +56,7 @@ in }; }; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.podman; - defaultText = lib.literalExpression "pkgs.podman"; - description = "The podman package to use."; - }; + package = lib.mkPackageOption pkgs "podman" { }; enableTypeChecks = lib.mkEnableOption "type checks for podman quadlets"; }; diff --git a/modules/services/pulseeffects.nix b/modules/services/pulseeffects.nix index 16c36d408..a4ed67bc2 100644 --- a/modules/services/pulseeffects.nix +++ b/modules/services/pulseeffects.nix @@ -23,12 +23,7 @@ in ``` to your system configuration for the daemon to work correctly''; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.pulseeffects-legacy; - defaultText = lib.literalExpression "pkgs.pulseeffects-legacy"; - description = "Pulseeffects package to use."; - }; + package = lib.mkPackageOption pkgs "pulseeffects-legacy" { }; preset = lib.mkOption { type = lib.types.str; diff --git a/modules/services/recoll.nix b/modules/services/recoll.nix index 4548aa2a2..9002abfa6 100644 --- a/modules/services/recoll.nix +++ b/modules/services/recoll.nix @@ -108,14 +108,8 @@ in options.services.recoll = { enable = lib.mkEnableOption "Recoll file index service"; - package = mkOption { - type = types.package; - default = pkgs.recoll; - defaultText = literalExpression "pkgs.recoll"; - description = '' - Package providing the {command}`recoll` binary. - ''; - example = literalExpression "(pkgs.recoll.override { withGui = false; })"; + package = lib.mkPackageOption pkgs "recoll" { + example = "(pkgs.recoll.override { withGui = false; })"; }; startAt = mkOption { diff --git a/modules/services/screen-locker.nix b/modules/services/screen-locker.nix index 20ceb6a50..f36391479 100644 --- a/modules/services/screen-locker.nix +++ b/modules/services/screen-locker.nix @@ -84,13 +84,7 @@ in description = "Use xautolock for time-based locking."; }; - package = mkOption { - type = types.package; - default = pkgs.xautolock; - description = '' - Package providing the {command}`xautolock` binary. - ''; - }; + package = lib.mkPackageOption pkgs "xautolock" { }; detectSleep = mkOption { type = types.bool; @@ -112,13 +106,7 @@ in }; xss-lock = { - package = mkOption { - type = types.package; - default = pkgs.xss-lock; - description = '' - Package providing the {command}`xss-lock` binary. - ''; - }; + package = lib.mkPackageOption pkgs "xss-lock" { }; extraOptions = mkOption { type = types.listOf types.str; diff --git a/modules/services/signaturepdf.nix b/modules/services/signaturepdf.nix index 5aa33ece9..532d6eef7 100644 --- a/modules/services/signaturepdf.nix +++ b/modules/services/signaturepdf.nix @@ -24,12 +24,7 @@ in options.services.signaturepdf = { enable = lib.mkEnableOption "signaturepdf; signing, organizing, editing metadatas or compressing PDFs"; - package = mkOption { - type = types.package; - default = pkgs.signaturepdf; - defaultText = "pkgs.signaturepdf"; - description = "signaturepdf derivation to use."; - }; + package = lib.mkPackageOption pkgs "signaturepdf" { }; port = mkOption { type = types.port; diff --git a/modules/services/spotifyd.nix b/modules/services/spotifyd.nix index 866cfbd79..d46df4240 100644 --- a/modules/services/spotifyd.nix +++ b/modules/services/spotifyd.nix @@ -19,13 +19,9 @@ in options.services.spotifyd = { enable = lib.mkEnableOption "SpotifyD connect"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.spotifyd; - defaultText = literalExpression "pkgs.spotifyd"; - example = literalExpression "(pkgs.spotifyd.override { withKeyring = true; })"; - description = '' - The `spotifyd` package to use. + package = lib.mkPackageOption pkgs "spotifyd" { + example = "(pkgs.spotifyd.override { withKeyring = true; })"; + extraDescription = '' Can be used to specify extensions. ''; }; diff --git a/modules/services/stalonetray.nix b/modules/services/stalonetray.nix index 037555063..e6fc4da1c 100644 --- a/modules/services/stalonetray.nix +++ b/modules/services/stalonetray.nix @@ -21,13 +21,7 @@ in services.stalonetray = { enable = lib.mkEnableOption "Stalonetray system tray"; - package = mkOption { - default = pkgs.stalonetray; - defaultText = literalExpression "pkgs.stalonetray"; - type = types.package; - example = literalExpression "pkgs.stalonetray"; - description = "The package to use for the Stalonetray binary."; - }; + package = lib.mkPackageOption pkgs "stalonetray" { }; config = mkOption { type = with types; attrsOf (nullOr (either str (either bool int))); diff --git a/modules/services/status-notifier-watcher.nix b/modules/services/status-notifier-watcher.nix index f90b1ae2f..1b6f35882 100644 --- a/modules/services/status-notifier-watcher.nix +++ b/modules/services/status-notifier-watcher.nix @@ -15,12 +15,8 @@ in services.status-notifier-watcher = { enable = lib.mkEnableOption "Status Notifier Watcher"; - package = lib.mkOption { - default = pkgs.haskellPackages.status-notifier-item; - defaultText = lib.literalExpression "pkgs.haskellPackages.status-notifier-item"; - type = lib.types.package; - example = lib.literalExpression "pkgs.haskellPackages.status-notifier-item"; - description = "The package to use for the status notifier watcher binary."; + package = lib.mkPackageOption pkgs.haskellPackages "status-notifier-item" { + pkgsText = "pkgs.haskellPackages"; }; }; }; diff --git a/modules/services/sxhkd.nix b/modules/services/sxhkd.nix index c0a2d64c8..6391a605b 100644 --- a/modules/services/sxhkd.nix +++ b/modules/services/sxhkd.nix @@ -37,11 +37,8 @@ in options.services.sxhkd = { enable = lib.mkEnableOption "simple X hotkey daemon"; - package = mkOption { - type = types.package; - default = pkgs.sxhkd; - defaultText = "pkgs.sxhkd"; - description = "Package containing the {command}`sxhkd` executable."; + package = lib.mkPackageOption pkgs "sxhkd" { + extraDescription = "containing the sxhkd executable"; }; extraOptions = mkOption { diff --git a/modules/services/taffybar.nix b/modules/services/taffybar.nix index 1d9a68974..64d706e3b 100644 --- a/modules/services/taffybar.nix +++ b/modules/services/taffybar.nix @@ -17,13 +17,7 @@ in services.taffybar = { enable = lib.mkEnableOption "Taffybar"; - package = lib.mkOption { - default = pkgs.taffybar; - defaultText = lib.literalExpression "pkgs.taffybar"; - type = lib.types.package; - example = lib.literalExpression "pkgs.taffybar"; - description = "The package to use for the Taffybar binary."; - }; + package = lib.mkPackageOption pkgs "taffybar" { }; }; }; diff --git a/modules/services/trayer.nix b/modules/services/trayer.nix index fb84980a0..85854103c 100644 --- a/modules/services/trayer.nix +++ b/modules/services/trayer.nix @@ -120,13 +120,7 @@ in services.trayer = { enable = lib.mkEnableOption "trayer, the lightweight GTK2+ systray for UNIX desktops"; - package = lib.mkOption { - default = pkgs.trayer; - defaultText = lib.literalExpression "pkgs.trayer"; - type = types.package; - example = lib.literalExpression "pkgs.trayer"; - description = "The package to use for the trayer binary."; - }; + package = lib.mkPackageOption pkgs "trayer" { }; settings = lib.mkOption { type = with types; attrsOf (nullOr (either str (either bool int))); diff --git a/modules/services/twmn.nix b/modules/services/twmn.nix index 3efff9a5a..4d7111d6c 100644 --- a/modules/services/twmn.nix +++ b/modules/services/twmn.nix @@ -123,13 +123,13 @@ in }; font = { - package = mkOption { - type = types.nullOr types.package; + package = lib.mkPackageOption pkgs "font" { default = null; - example = literalExpression "pkgs.dejavu_fonts"; - description = '' - Notification text's font package. If `null` then - the font is assumed to already be available in your profile. + example = "pkgs.dejavu_fonts"; + nullable = true; + extraDescription = '' + Package providing the font to use for the notification text. + This package is only used if `font.package` is not null. ''; }; diff --git a/modules/services/unclutter.nix b/modules/services/unclutter.nix index 5047dd06d..d5aa6fd51 100644 --- a/modules/services/unclutter.nix +++ b/modules/services/unclutter.nix @@ -19,12 +19,7 @@ in enable = lib.mkEnableOption "unclutter"; - package = mkOption { - description = "unclutter derivation to use."; - type = types.package; - default = pkgs.unclutter-xfixes; - defaultText = lib.literalExpression "pkgs.unclutter-xfixes"; - }; + package = lib.mkPackageOption pkgs "unclutter-xfixes" { }; timeout = mkOption { description = "Number of seconds before the cursor is marked inactive."; diff --git a/modules/services/vdirsyncer.nix b/modules/services/vdirsyncer.nix index a111a5947..86611158f 100644 --- a/modules/services/vdirsyncer.nix +++ b/modules/services/vdirsyncer.nix @@ -22,13 +22,7 @@ in options.services.vdirsyncer = { enable = lib.mkEnableOption "vdirsyncer"; - package = mkOption { - type = types.package; - default = pkgs.vdirsyncer; - defaultText = "pkgs.vdirsyncer"; - example = lib.literalExpression "pkgs.vdirsyncer"; - description = "The package to use for the vdirsyncer binary."; - }; + package = lib.mkPackageOption pkgs "vdirsyncer" { }; frequency = mkOption { type = types.str; diff --git a/modules/services/volnoti.nix b/modules/services/volnoti.nix index db86a2452..c9c837a79 100644 --- a/modules/services/volnoti.nix +++ b/modules/services/volnoti.nix @@ -20,14 +20,7 @@ in services.volnoti = { enable = lib.mkEnableOption "Volnoti volume HUD daemon"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.volnoti; - defaultText = lib.literalExpression "pkgs.volnoti"; - description = '' - Package containing the {command}`volnoti` program. - ''; - }; + package = lib.mkPackageOption pkgs "volnoti" { }; }; }; diff --git a/modules/services/window-managers/awesome.nix b/modules/services/window-managers/awesome.nix index 9fc742b16..46b16ecae 100644 --- a/modules/services/window-managers/awesome.nix +++ b/modules/services/window-managers/awesome.nix @@ -20,11 +20,8 @@ in xsession.windowManager.awesome = { enable = lib.mkEnableOption "Awesome window manager"; - package = mkOption { - type = types.package; - default = pkgs.awesome; - defaultText = lib.literalExpression "pkgs.awesome"; - description = "Package to use for running the Awesome WM."; + package = lib.mkPackageOption pkgs "awesome" { + extraDescription = "to use for running the Awesome WM"; }; luaModules = mkOption { diff --git a/modules/services/window-managers/bspwm/options.nix b/modules/services/window-managers/bspwm/options.nix index e44969c58..62d4646fe 100644 --- a/modules/services/window-managers/bspwm/options.nix +++ b/modules/services/window-managers/bspwm/options.nix @@ -182,12 +182,8 @@ in xsession.windowManager.bspwm = { enable = lib.mkEnableOption "bspwm window manager"; - package = mkOption { - type = types.package; - default = pkgs.bspwm; - defaultText = literalExpression "pkgs.bspwm"; - description = "The bspwm package to use."; - example = literalExpression "pkgs.bspwm-unstable"; + package = lib.mkPackageOption pkgs "bspwm" { + example = "pkgs.bspwm-unstable"; }; settings = mkOption { diff --git a/modules/services/window-managers/herbstluftwm.nix b/modules/services/window-managers/herbstluftwm.nix index df83041c3..c004564be 100644 --- a/modules/services/window-managers/herbstluftwm.nix +++ b/modules/services/window-managers/herbstluftwm.nix @@ -47,15 +47,7 @@ in options.xsession.windowManager.herbstluftwm = { enable = lib.mkEnableOption "herbstluftwm window manager"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.herbstluftwm; - defaultText = lib.literalExpression "pkgs.herbstluftwm"; - description = '' - Package providing the {command}`herbstluftwm` and - {command}`herbstclient` commands. - ''; - }; + package = lib.mkPackageOption pkgs "herbstluftwm" { }; settings = lib.mkOption { type = lib.types.attrsOf settingType; diff --git a/modules/services/window-managers/spectrwm.nix b/modules/services/window-managers/spectrwm.nix index e3e94d0b3..9b79b1a38 100644 --- a/modules/services/window-managers/spectrwm.nix +++ b/modules/services/window-managers/spectrwm.nix @@ -41,13 +41,8 @@ in xsession.windowManager.spectrwm = { enable = lib.mkEnableOption "Spectrwm window manager"; - package = mkOption { - type = types.package; - default = pkgs.spectrwm; - defaultText = literalExpression "pkgs.spectrwm"; - description = '' - Package providing the {command}`spectrwm` command. - ''; + package = lib.mkPackageOption pkgs "spectrwm" { + extraDescription = "providing the spectrwm command"; }; settings = mkOption { diff --git a/modules/services/window-managers/wayfire.nix b/modules/services/window-managers/wayfire.nix index 6039030b0..0e67a5e44 100644 --- a/modules/services/window-managers/wayfire.nix +++ b/modules/services/window-managers/wayfire.nix @@ -79,7 +79,9 @@ wf-shell = { enable = lib.mkEnableOption "Manage wf-shell Configuration"; - package = lib.mkPackageOption pkgs.wayfirePlugins "wf-shell" { }; + package = lib.mkPackageOption pkgs.wayfirePlugins "wf-shell" { + pkgsText = "pkgs.wayfirePlugins"; + }; settings = lib.mkOption { type = configIniType; diff --git a/modules/services/wlsunset.nix b/modules/services/wlsunset.nix index 939cf8798..8f0652818 100644 --- a/modules/services/wlsunset.nix +++ b/modules/services/wlsunset.nix @@ -19,14 +19,7 @@ in options.services.wlsunset = { enable = lib.mkEnableOption "wlsunset"; - package = mkOption { - type = with types; package; - default = pkgs.wlsunset; - defaultText = "pkgs.wlsunset"; - description = '' - wlsunset derivation to use. - ''; - }; + package = lib.mkPackageOption pkgs "wlsunset" { }; latitude = mkOption { type = with types; nullOr (either str (either float int)); diff --git a/modules/services/wluma.nix b/modules/services/wluma.nix index 76f72b92a..01ab4b206 100644 --- a/modules/services/wluma.nix +++ b/modules/services/wluma.nix @@ -15,12 +15,7 @@ in options.services.wluma = { enable = lib.mkEnableOption "Enable wluma, a service for automatic brightness adjustment"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.wluma; - defaultText = lib.literalExpression "pkgs.wluma"; - description = "Package providing {command}`wluma`."; - }; + package = lib.mkPackageOption pkgs "wluma" { }; settings = lib.mkOption { type = format.type; diff --git a/modules/services/xembed-sni-proxy.nix b/modules/services/xembed-sni-proxy.nix index a2c484d67..48314a019 100644 --- a/modules/services/xembed-sni-proxy.nix +++ b/modules/services/xembed-sni-proxy.nix @@ -17,14 +17,8 @@ in services.xembed-sni-proxy = { enable = lib.mkEnableOption "XEmbed SNI Proxy"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.kdePackages.plasma-workspace; - defaultText = lib.literalExpression "pkgs.kdePackages.plasma-workspace"; - description = '' - Package containing the {command}`xembedsniproxy` - program. - ''; + package = lib.mkPackageOption pkgs.kdePackages "plasma-workspace" { + pkgsText = "pkgs.kdePackages"; }; }; }; diff --git a/modules/services/xidlehook.nix b/modules/services/xidlehook.nix index ee53c799d..3bc3cf8dd 100644 --- a/modules/services/xidlehook.nix +++ b/modules/services/xidlehook.nix @@ -56,12 +56,7 @@ in options.services.xidlehook = { enable = mkEnableOption "xidlehook systemd service"; - package = mkOption { - type = types.package; - default = pkgs.xidlehook; - defaultText = "pkgs.xidlehook"; - description = "The package to use for xidlehook."; - }; + package = lib.mkPackageOption pkgs "xidlehook" { }; environment = mkOption { type = types.attrsOf types.str; diff --git a/modules/services/xscreensaver.nix b/modules/services/xscreensaver.nix index 14343a805..efc76c38f 100644 --- a/modules/services/xscreensaver.nix +++ b/modules/services/xscreensaver.nix @@ -30,12 +30,7 @@ in ''; }; - package = lib.mkOption { - type = with lib.types; package; - default = pkgs.xscreensaver; - defaultText = lib.literalExpression "pkgs.xscreensaver"; - description = "Which xscreensaver package to use."; - }; + package = lib.mkPackageOption pkgs "xscreensaver" { }; }; }; diff --git a/modules/services/xsettingsd.nix b/modules/services/xsettingsd.nix index 5e5676367..e74a8794e 100644 --- a/modules/services/xsettingsd.nix +++ b/modules/services/xsettingsd.nix @@ -37,14 +37,7 @@ in services.xsettingsd = { enable = lib.mkEnableOption "xsettingsd"; - package = mkOption { - type = types.package; - default = pkgs.xsettingsd; - defaultText = literalExpression "pkgs.xsettingsd"; - description = '' - Package containing the {command}`xsettingsd` program. - ''; - }; + package = lib.mkPackageOption pkgs "xsettingsd" { }; settings = mkOption { type = diff --git a/modules/services/yubikey-agent.nix b/modules/services/yubikey-agent.nix index ab1ffdb38..7ae751538 100644 --- a/modules/services/yubikey-agent.nix +++ b/modules/services/yubikey-agent.nix @@ -16,12 +16,7 @@ in options.services.yubikey-agent = { enable = lib.mkEnableOption "Seamless ssh-agent for YubiKeys"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.yubikey-agent; - defaultText = lib.literalExpression "pkgs.yubikey-agent"; - description = "The yubikey-agent package to use."; - }; + package = lib.mkPackageOption pkgs "yubikey-agent" { }; }; config = mkIf cfg.enable (