diff --git a/modules/programs/atuin.nix b/modules/programs/atuin.nix index 5bceb2775..3c6c355ef 100644 --- a/modules/programs/atuin.nix +++ b/modules/programs/atuin.nix @@ -13,12 +13,7 @@ in { options.programs.atuin = { enable = lib.mkEnableOption "atuin"; - package = mkOption { - type = types.package; - default = pkgs.atuin; - defaultText = lib.literalExpression "pkgs.atuin"; - description = "The package to use for atuin."; - }; + package = lib.mkPackageOption pkgs "atuin" { }; enableBashIntegration = lib.hm.shell.mkBashIntegrationOption { inherit config; diff --git a/modules/programs/awscli.nix b/modules/programs/awscli.nix index a4cfc108f..008f182e9 100644 --- a/modules/programs/awscli.nix +++ b/modules/programs/awscli.nix @@ -10,11 +10,9 @@ in { options.programs.awscli = { enable = lib.mkEnableOption "AWS CLI tool"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.awscli2; - defaultText = lib.literalExpression "pkgs.awscli2"; - description = "Package providing {command}`aws`."; + package = lib.mkPackageOption pkgs "aws" { + default = "awscli2"; + nullable = true; }; settings = lib.mkOption { @@ -55,7 +53,7 @@ in { }; config = lib.mkIf cfg.enable { - home.packages = [ cfg.package ]; + home.packages = lib.mkIf (cfg.package != null) [ cfg.package ]; home.file."${config.home.homeDirectory}/.aws/config" = lib.mkIf (cfg.settings != { }) { diff --git a/modules/programs/beets.nix b/modules/programs/beets.nix index e05db2171..be34ce372 100644 --- a/modules/programs/beets.nix +++ b/modules/programs/beets.nix @@ -26,14 +26,10 @@ in { ''; }; - package = mkOption { - type = types.package; - default = pkgs.beets; - defaultText = literalExpression "pkgs.beets"; - example = literalExpression + package = lib.mkPackageOption pkgs "beets" { + example = "(pkgs.beets.override { pluginOverrides = { beatport.enable = false; }; })"; - description = '' - The `beets` package to use. + extraDescription = '' Can be used to specify extensions. ''; }; diff --git a/modules/programs/bottom.nix b/modules/programs/bottom.nix index 3e82cbd88..b328e1ba7 100644 --- a/modules/programs/bottom.nix +++ b/modules/programs/bottom.nix @@ -12,12 +12,7 @@ in { bottom, a cross-platform graphical process/system monitor with a customizable interface''; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.bottom; - defaultText = lib.literalExpression "pkgs.bottom"; - description = "Package providing {command}`bottom`."; - }; + package = lib.mkPackageOption pkgs "bottom" { nullable = true; }; settings = lib.mkOption { type = tomlFormat.type; @@ -46,7 +41,7 @@ in { }; config = lib.mkIf cfg.enable { - home.packages = [ cfg.package ]; + home.packages = lib.mkIf (cfg.package != null) [ cfg.package ]; xdg.configFile."bottom/bottom.toml" = lib.mkIf (cfg.settings != { }) { source = tomlFormat.generate "bottom.toml" cfg.settings; diff --git a/modules/programs/broot.nix b/modules/programs/broot.nix index 3b5ad5672..301b88945 100644 --- a/modules/programs/broot.nix +++ b/modules/programs/broot.nix @@ -164,12 +164,7 @@ in { enableZshIntegration = lib.hm.shell.mkZshIntegrationOption { inherit config; }; - package = mkOption { - type = types.package; - default = pkgs.broot; - defaultText = literalExpression "pkgs.broot"; - description = "Package providing broot"; - }; + package = lib.mkPackageOption pkgs "broot" { }; settings = mkOption { type = types.submodule settingsModule; diff --git a/modules/programs/emacs.nix b/modules/programs/emacs.nix index bbeb2fcad..664ebccdb 100644 --- a/modules/programs/emacs.nix +++ b/modules/programs/emacs.nix @@ -29,13 +29,8 @@ in { programs.emacs = { enable = lib.mkEnableOption "Emacs"; - package = mkOption { - type = types.package; - default = pkgs.emacs; - defaultText = literalExpression "pkgs.emacs"; - example = literalExpression "pkgs.emacs25-nox"; - description = "The Emacs package to use."; - }; + package = + lib.mkPackageOption pkgs "emacs" { example = "pkgs.emacs25-nox"; }; # NOTE: The config is placed in default.el instead of ~/.emacs.d so that # it won't conflict with Emacs configuration frameworks. Users of these diff --git a/modules/programs/fzf.nix b/modules/programs/fzf.nix index 73cff7c3a..5d765b559 100644 --- a/modules/programs/fzf.nix +++ b/modules/programs/fzf.nix @@ -48,12 +48,7 @@ in { options.programs.fzf = { enable = lib.mkEnableOption "fzf - a command-line fuzzy finder"; - package = mkOption { - type = types.package; - default = pkgs.fzf; - defaultText = literalExpression "pkgs.fzf"; - description = "Package providing the {command}`fzf` tool."; - }; + package = lib.mkPackageOption pkgs "fzf" { }; defaultCommand = mkOption { type = types.nullOr types.str; diff --git a/modules/programs/gh.nix b/modules/programs/gh.nix index 7d9ab1fe2..69905ef56 100644 --- a/modules/programs/gh.nix +++ b/modules/programs/gh.nix @@ -68,12 +68,7 @@ in { options.programs.gh = { enable = lib.mkEnableOption "GitHub CLI tool"; - package = mkOption { - type = types.package; - default = pkgs.gh; - defaultText = literalExpression "pkgs.gh"; - description = "Package providing {command}`gh`."; - }; + package = lib.mkPackageOption pkgs "gh" { }; settings = mkOption { type = settingsType; diff --git a/modules/programs/gitui.nix b/modules/programs/gitui.nix index 345cf5a12..134d92c94 100644 --- a/modules/programs/gitui.nix +++ b/modules/programs/gitui.nix @@ -11,12 +11,7 @@ in { enable = lib.mkEnableOption "gitui, blazing fast terminal-ui for git written in rust"; - package = mkOption { - type = types.package; - default = pkgs.gitui; - defaultText = "pkgs.gitui"; - description = "The package to use."; - }; + package = lib.mkPackageOption pkgs "gitui" { }; keyConfig = mkOption { type = types.either types.path types.lines; diff --git a/modules/programs/go.nix b/modules/programs/go.nix index 0e7782962..cf4f3daf0 100644 --- a/modules/programs/go.nix +++ b/modules/programs/go.nix @@ -13,12 +13,7 @@ in { programs.go = { enable = lib.mkEnableOption "Go"; - package = mkOption { - type = types.package; - default = pkgs.go; - defaultText = literalExpression "pkgs.go"; - description = "The Go package to use."; - }; + package = lib.mkPackageOption pkgs "go" { }; packages = mkOption { type = with types; attrsOf path; diff --git a/modules/programs/gpg.nix b/modules/programs/gpg.nix index 58b0fd616..7bb9086ef 100644 --- a/modules/programs/gpg.nix +++ b/modules/programs/gpg.nix @@ -143,13 +143,9 @@ in { options.programs.gpg = { enable = lib.mkEnableOption "GnuPG"; - package = mkOption { - type = types.package; - default = pkgs.gnupg; - defaultText = literalExpression "pkgs.gnupg"; - example = literalExpression "pkgs.gnupg23"; - description = - "The Gnupg package to use (also used by the gpg-agent service)."; + package = lib.mkPackageOption pkgs "gnupg" { + example = "pkgs.gnupg23"; + extraDescription = "Also used by the gpg-agent service."; }; settings = mkOption { diff --git a/modules/programs/helix.nix b/modules/programs/helix.nix index 848ddfac8..1c8a0394d 100644 --- a/modules/programs/helix.nix +++ b/modules/programs/helix.nix @@ -10,13 +10,7 @@ in { options.programs.helix = { enable = lib.mkEnableOption "helix text editor"; - package = mkOption { - type = types.package; - default = pkgs.helix; - defaultText = literalExpression "pkgs.helix"; - example = literalExpression "pkgs.evil-helix"; - description = "The package to use for helix."; - }; + package = lib.mkPackageOption pkgs "helix" { example = "pkgs.evil-helix"; }; extraPackages = mkOption { type = with types; listOf package; diff --git a/modules/programs/htop.nix b/modules/programs/htop.nix index cf263ebcb..ab5942cc5 100644 --- a/modules/programs/htop.nix +++ b/modules/programs/htop.nix @@ -153,12 +153,7 @@ in { ''; }; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.htop; - defaultText = lib.literalExpression "pkgs.htop"; - description = "Package containing the {command}`htop` program."; - }; + package = lib.mkPackageOption pkgs "htop" { }; }; config = lib.mkIf cfg.enable { diff --git a/modules/programs/hyfetch.nix b/modules/programs/hyfetch.nix index a5e45797b..8dc5fafc8 100644 --- a/modules/programs/hyfetch.nix +++ b/modules/programs/hyfetch.nix @@ -9,12 +9,7 @@ in { options.programs.hyfetch = { enable = lib.mkEnableOption "hyfetch"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.hyfetch; - defaultText = lib.literalExpression "pkgs.hyfetch"; - description = "The hyfetch package to use."; - }; + package = lib.mkPackageOption pkgs "hyfetch" { }; settings = lib.mkOption { type = jsonFormat.type; diff --git a/modules/programs/i3blocks.nix b/modules/programs/i3blocks.nix index 6c03e1842..25132399f 100644 --- a/modules/programs/i3blocks.nix +++ b/modules/programs/i3blocks.nix @@ -29,12 +29,7 @@ in { options.programs.i3blocks = { enable = lib.mkEnableOption "i3blocks i3 status command scheduler"; - package = lib.mkOption { - type = types.package; - default = pkgs.i3blocks; - defaultText = lib.literalExpression "pkgs.i3blocks"; - description = "Package providing {command}`i3blocks`."; - }; + package = lib.mkPackageOption pkgs "i3blocks" { }; bars = lib.mkOption { type = with types; attrsOf (lib.hm.types.dagOf configType); diff --git a/modules/programs/i3status-rust.nix b/modules/programs/i3status-rust.nix index c9dc5e579..c9df30a1b 100644 --- a/modules/programs/i3status-rust.nix +++ b/modules/programs/i3status-rust.nix @@ -219,12 +219,7 @@ in { ''; }; - package = mkOption { - type = types.package; - default = pkgs.i3status-rust; - defaultText = literalExpression "pkgs.i3status-rust"; - description = "Package providing i3status-rust"; - }; + package = lib.mkPackageOption pkgs "i3status-rust" { }; }; diff --git a/modules/programs/joshuto.nix b/modules/programs/joshuto.nix index 41534cea7..14ac53de6 100644 --- a/modules/programs/joshuto.nix +++ b/modules/programs/joshuto.nix @@ -10,12 +10,7 @@ in { options.programs.joshuto = { enable = lib.mkEnableOption "joshuto file manager"; - package = mkOption { - type = types.package; - default = pkgs.joshuto; - defaultText = lib.literalExpression "pkgs.joshuto"; - description = "The package to use for joshuto."; - }; + package = lib.mkPackageOption pkgs "joshuto" { }; settings = mkOption { type = tomlFormat.type; diff --git a/modules/programs/jq.nix b/modules/programs/jq.nix index 032201d60..df1b05ca3 100644 --- a/modules/programs/jq.nix +++ b/modules/programs/jq.nix @@ -29,12 +29,7 @@ in { programs.jq = { enable = lib.mkEnableOption "the jq command-line JSON processor"; - package = mkOption { - type = types.package; - default = pkgs.jq; - defaultText = lib.literalExpression "pkgs.jq"; - description = "jq package to use."; - }; + package = lib.mkPackageOption pkgs "jq" { }; colors = mkOption { description = '' diff --git a/modules/programs/kodi.nix b/modules/programs/kodi.nix index ea81a574a..25d3eb860 100644 --- a/modules/programs/kodi.nix +++ b/modules/programs/kodi.nix @@ -126,14 +126,9 @@ in { options.programs.kodi = { enable = lib.mkEnableOption "Kodi"; - package = mkOption { - type = types.package; - default = pkgs.kodi; - defaultText = literalExpression "pkgs.kodi"; - example = literalExpression - "pkgs.kodi.withPackages (exts: [ exts.pvr-iptvsimple ])"; - description = '' - The `kodi` package to use. + package = lib.mkPackageOption pkgs "kodi" { + example = "pkgs.kodi.withPackages (exts: [ exts.pvr-iptvsimple ])"; + extraDescription = '' Can be used to specify extensions. ''; }; diff --git a/modules/programs/lf.nix b/modules/programs/lf.nix index 310947162..8f439856e 100644 --- a/modules/programs/lf.nix +++ b/modules/programs/lf.nix @@ -12,14 +12,7 @@ in { programs.lf = { enable = lib.mkEnableOption "lf"; - package = mkOption { - type = types.package; - default = pkgs.lf; - defaultText = literalExpression "pkgs.lf"; - description = '' - lf package to use. - ''; - }; + package = lib.mkPackageOption pkgs "lf" { }; settings = mkOption { type = with types; diff --git a/modules/programs/lieer.nix b/modules/programs/lieer.nix index f67cdfc99..c1899b4b9 100644 --- a/modules/programs/lieer.nix +++ b/modules/programs/lieer.nix @@ -216,14 +216,7 @@ in { programs.lieer = { enable = lib.mkEnableOption "lieer Gmail synchronization for notmuch"; - package = mkOption { - type = types.package; - default = pkgs.lieer; - defaultText = "pkgs.lieer"; - description = '' - lieer package to use. - ''; - }; + package = lib.mkPackageOption pkgs "lieer" { }; }; accounts.email.accounts = diff --git a/modules/programs/man.nix b/modules/programs/man.nix index edc9b56a2..84bcbeba8 100644 --- a/modules/programs/man.nix +++ b/modules/programs/man.nix @@ -15,12 +15,7 @@ in { ''; }; - package = mkOption { - type = types.package; - default = pkgs.man; - defaultText = lib.literalExpression "pkgs.man"; - description = "The man package to use."; - }; + package = lib.mkPackageOption pkgs "man" { }; generateCaches = mkOption { type = types.bool; diff --git a/modules/programs/mbsync.nix b/modules/programs/mbsync.nix index 274f1f26e..2470b5f33 100644 --- a/modules/programs/mbsync.nix +++ b/modules/programs/mbsync.nix @@ -189,13 +189,7 @@ in { enable = lib.mkEnableOption "mbsync IMAP4 and Maildir mailbox synchronizer"; - package = mkOption { - type = types.package; - default = pkgs.isync; - defaultText = literalExpression "pkgs.isync"; - example = literalExpression "pkgs.isync"; - description = "The package to use for the mbsync binary."; - }; + package = lib.mkPackageOption pkgs "isync" { }; groups = mkOption { type = types.attrsOf (types.attrsOf (types.listOf types.str)); diff --git a/modules/programs/mpv.nix b/modules/programs/mpv.nix index 332a3f9df..569682939 100644 --- a/modules/programs/mpv.nix +++ b/modules/programs/mpv.nix @@ -61,14 +61,9 @@ in { programs.mpv = { enable = lib.mkEnableOption "mpv"; - package = mkOption { - type = types.package; - default = pkgs.mpv; - example = literalExpression + package = lib.mkPackageOption pkgs "mpv" { + example = "pkgs.mpv-unwrapped.wrapper { mpv = pkgs.mpv-unwrapped.override { vapoursynthSupport = true; }; youtubeSupport = true; }"; - description = '' - Package providing mpv. - ''; }; finalPackage = mkOption { diff --git a/modules/programs/msmtp.nix b/modules/programs/msmtp.nix index 98b60e809..6da15712f 100644 --- a/modules/programs/msmtp.nix +++ b/modules/programs/msmtp.nix @@ -49,12 +49,7 @@ in { programs.msmtp = { enable = lib.mkEnableOption "msmtp"; - package = mkOption { - type = types.package; - default = pkgs.msmtp; - defaultText = lib.literalExpression "pkgs.msmtp"; - description = "The msmtp package to use."; - }; + package = lib.mkPackageOption pkgs "msmtp" { }; extraConfig = mkOption { type = types.lines; diff --git a/modules/programs/mujmap.nix b/modules/programs/mujmap.nix index 98116ff14..f866ca592 100644 --- a/modules/programs/mujmap.nix +++ b/modules/programs/mujmap.nix @@ -268,14 +268,7 @@ in { programs.mujmap = { enable = lib.mkEnableOption "mujmap Gmail synchronization for notmuch"; - package = mkOption { - type = types.package; - default = pkgs.mujmap; - defaultText = "pkgs.mujmap"; - description = '' - mujmap package to use. - ''; - }; + package = lib.mkPackageOption pkgs "mujmap" { }; }; accounts.email.accounts = diff --git a/modules/programs/navi.nix b/modules/programs/navi.nix index f804779dc..3d90f720e 100644 --- a/modules/programs/navi.nix +++ b/modules/programs/navi.nix @@ -17,12 +17,7 @@ in { options.programs.navi = { enable = lib.mkEnableOption "Navi"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.navi; - defaultText = lib.literalExpression "pkgs.navi"; - description = "The package to use for the navi binary."; - }; + package = lib.mkPackageOption pkgs "navi" { }; settings = lib.mkOption { type = yamlFormat.type; diff --git a/modules/programs/ncmpcpp.nix b/modules/programs/ncmpcpp.nix index 6d67337c1..95dfa1279 100644 --- a/modules/programs/ncmpcpp.nix +++ b/modules/programs/ncmpcpp.nix @@ -48,15 +48,8 @@ in { enable = lib.mkEnableOption "ncmpcpp - an ncurses Music Player Daemon (MPD) client"; - package = mkOption { - type = types.package; - default = pkgs.ncmpcpp; - defaultText = literalExpression "pkgs.ncmpcpp"; - description = '' - Package providing the `ncmpcpp` command. - ''; - example = - literalExpression "pkgs.ncmpcpp.override { visualizerSupport = true; }"; + package = lib.mkPackageOption pkgs "ncmpcpp" { + example = "pkgs.ncmpcpp.override { visualizerSupport = true; }"; }; mpdMusicDir = mkOption { diff --git a/modules/programs/ncspot.nix b/modules/programs/ncspot.nix index 29eb92dfa..9f7f70f26 100644 --- a/modules/programs/ncspot.nix +++ b/modules/programs/ncspot.nix @@ -9,12 +9,7 @@ in { options.programs.ncspot = { enable = lib.mkEnableOption "ncspot"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.ncspot; - defaultText = lib.literalExpression "pkgs.ncspot"; - description = "The package to use for ncspot."; - }; + package = lib.mkPackageOption pkgs "ncspot" { }; settings = lib.mkOption { type = tomlFormat.type; diff --git a/modules/programs/neomutt.nix b/modules/programs/neomutt.nix index 7abbe495e..fb9beed85 100644 --- a/modules/programs/neomutt.nix +++ b/modules/programs/neomutt.nix @@ -342,12 +342,7 @@ in { programs.neomutt = { enable = lib.mkEnableOption "the NeoMutt mail client"; - package = mkOption { - type = types.package; - default = pkgs.neomutt; - defaultText = lib.literalExpression "pkgs.neomutt"; - description = "The neomutt package to use."; - }; + package = lib.mkPackageOption pkgs "neomutt" { }; sidebar = mkOption { type = sidebarModule; diff --git a/modules/programs/neovim.nix b/modules/programs/neovim.nix index af7a1a1f0..d41a02ffc 100644 --- a/modules/programs/neovim.nix +++ b/modules/programs/neovim.nix @@ -250,12 +250,8 @@ in { ''; }; - package = mkOption { - type = types.package; - default = pkgs.neovim-unwrapped; - defaultText = literalExpression "pkgs.neovim-unwrapped"; - description = "The package to use for the neovim binary."; - }; + package = + lib.mkPackageOption pkgs "neovim" { default = "neovim-unwrapped"; }; finalPackage = mkOption { type = types.package; @@ -324,11 +320,8 @@ in { coc = { enable = mkEnableOption "Coc"; - package = mkOption { - type = types.package; - default = pkgs.vimPlugins.coc-nvim; - defaultText = literalExpression "pkgs.vimPlugins.coc-nvim"; - description = "The package to use for the CoC plugin."; + package = lib.mkPackageOption pkgs "coc-nvim" { + default = [ "vimPlugins" "coc-nvim" ]; }; settings = mkOption { diff --git a/modules/programs/nix-index.nix b/modules/programs/nix-index.nix index 62474a076..eb18a850b 100644 --- a/modules/programs/nix-index.nix +++ b/modules/programs/nix-index.nix @@ -7,12 +7,7 @@ in { options.programs.nix-index = { enable = lib.mkEnableOption "nix-index, a file database for nixpkgs"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.nix-index; - defaultText = lib.literalExpression "pkgs.nix-index"; - description = "Package providing the {command}`nix-index` tool."; - }; + package = lib.mkPackageOption pkgs "nix-index" { }; enableBashIntegration = lib.hm.shell.mkBashIntegrationOption { inherit config; }; diff --git a/modules/programs/nnn.nix b/modules/programs/nnn.nix index 8f7b43ba9..d91880d7e 100644 --- a/modules/programs/nnn.nix +++ b/modules/programs/nnn.nix @@ -50,15 +50,8 @@ in { programs.nnn = { enable = lib.mkEnableOption "nnn"; - package = mkOption { - type = types.package; - default = pkgs.nnn; - defaultText = literalExpression "pkgs.nnn"; - example = - literalExpression "pkgs.nnn.override ({ withNerdIcons = true; });"; - description = '' - Package containing the {command}`nnn` program. - ''; + package = lib.mkPackageOption pkgs "nnn" { + example = "pkgs.nnn.override { withNerdIcons = true; }"; }; finalPackage = mkOption { diff --git a/modules/programs/octant.nix b/modules/programs/octant.nix index 5ed4d10bd..89c69ae7e 100644 --- a/modules/programs/octant.nix +++ b/modules/programs/octant.nix @@ -23,13 +23,8 @@ in { programs.octant = { enable = lib.mkEnableOption "octant"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.octant; - defaultText = literalExpression "pkgs.octant"; - example = literalExpression "pkgs.octant-other"; - description = "The Octant package to use."; - }; + package = + lib.mkPackageOption pkgs "octant" { example = "pkgs.octant-other"; }; plugins = lib.mkOption { default = [ ]; diff --git a/modules/programs/pandoc.nix b/modules/programs/pandoc.nix index 7f0fa713c..b207e42c0 100644 --- a/modules/programs/pandoc.nix +++ b/modules/programs/pandoc.nix @@ -24,12 +24,7 @@ in { options.programs.pandoc = { enable = mkEnableOption "pandoc"; - package = mkOption { - type = types.package; - default = pkgs.pandoc; - defaultText = literalExpression "pkgs.pandoc"; - description = "The pandoc package to use."; - }; + package = lib.mkPackageOption pkgs "pandoc" { }; # We wrap the executable to pass some arguments finalPackage = mkOption { @@ -98,6 +93,7 @@ in { }; home.packages = [ cfg.finalPackage ]; + xdg.dataFile = lib.mapAttrs' makeTemplateFile cfg.templates // lib.listToAttrs (map makeCslFile cfg.citationStyles); }; diff --git a/modules/programs/password-store.nix b/modules/programs/password-store.nix index e4a9342dd..ab99832d2 100644 --- a/modules/programs/password-store.nix +++ b/modules/programs/password-store.nix @@ -10,17 +10,9 @@ in { options.programs.password-store = { enable = lib.mkEnableOption "Password store"; - package = mkOption { - type = types.package; - default = pkgs.pass; - defaultText = literalExpression "pkgs.pass"; - example = literalExpression '' - pkgs.pass.withExtensions (exts: [ exts.pass-otp ]) - ''; - description = '' - The `pass` package to use. - Can be used to specify extensions. - ''; + package = lib.mkPackageOption pkgs "pass" { + example = "pkgs.pass.withExtensions (exts: [ exts.pass-otp ])"; + extraDescription = "Can be used to specify extensions."; }; settings = mkOption rec { diff --git a/modules/programs/pet.nix b/modules/programs/pet.nix index 23bfe8ebd..7472488ef 100644 --- a/modules/programs/pet.nix +++ b/modules/programs/pet.nix @@ -59,13 +59,9 @@ in { ''; }; - selectcmdPackage = mkOption { - type = types.package; - default = pkgs.fzf; - defaultText = lib.literalExpression "pkgs.fzf"; - description = '' - The package needed for the {var}`settings.selectcmd`. - ''; + selectcmdPackage = lib.mkPackageOption pkgs "fzf" { + extraDescription = + "The package needed for the {var}`settings.selectcmd`."; }; snippets = mkOption { diff --git a/modules/programs/pidgin.nix b/modules/programs/pidgin.nix index 4a7e9c8e0..08006f939 100644 --- a/modules/programs/pidgin.nix +++ b/modules/programs/pidgin.nix @@ -7,12 +7,7 @@ in { programs.pidgin = { enable = lib.mkEnableOption "Pidgin messaging client"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.pidgin; - defaultText = lib.literalExpression "pkgs.pidgin"; - description = "The Pidgin package to use."; - }; + package = lib.mkPackageOption pkgs "pidgin" { }; plugins = lib.mkOption { default = [ ]; diff --git a/modules/programs/piston-cli.nix b/modules/programs/piston-cli.nix index 3c07c4882..fa4908457 100644 --- a/modules/programs/piston-cli.nix +++ b/modules/programs/piston-cli.nix @@ -8,12 +8,7 @@ in { options.programs.piston-cli = { enable = lib.mkEnableOption "piston-cli, code runner"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.piston-cli; - defaultText = lib.literalExpression "pkgs.piston-cli"; - description = "The piston-cli package to use."; - }; + package = lib.mkPackageOption pkgs "piston-cli" { }; settings = lib.mkOption { type = yamlFormat.type; diff --git a/modules/programs/pubs.nix b/modules/programs/pubs.nix index 12f49cc71..a23b6e433 100644 --- a/modules/programs/pubs.nix +++ b/modules/programs/pubs.nix @@ -10,12 +10,7 @@ in { options.programs.pubs = { enable = lib.mkEnableOption "pubs"; - package = mkOption { - type = types.package; - default = pkgs.pubs; - defaultText = lib.literalExpression "pkgs.pubs"; - description = "The package to use for the pubs script."; - }; + package = lib.mkPackageOption pkgs "pubs" { }; extraConfig = mkOption { type = types.lines; diff --git a/modules/programs/pyenv.nix b/modules/programs/pyenv.nix index e18c7a924..25cf8a22a 100644 --- a/modules/programs/pyenv.nix +++ b/modules/programs/pyenv.nix @@ -12,12 +12,7 @@ in { options.programs.pyenv = { enable = lib.mkEnableOption "pyenv"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.pyenv; - defaultText = lib.literalExpression "pkgs.pyenv"; - description = "The package to use for pyenv."; - }; + package = lib.mkPackageOption pkgs "pyenv" { }; enableBashIntegration = lib.hm.shell.mkBashIntegrationOption { inherit config; }; diff --git a/modules/programs/pylint.nix b/modules/programs/pylint.nix index f646b2086..189e2d18e 100644 --- a/modules/programs/pylint.nix +++ b/modules/programs/pylint.nix @@ -8,12 +8,7 @@ in { meta.maintainers = [ lib.hm.maintainers.florpe ]; options.programs.pylint = { enable = lib.mkEnableOption "the pylint Python linter"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.python3Packages.pylint; - defaultText = lib.literalExpression "pkgs.python3Packages.pylint"; - description = "The pylint package to use."; - }; + package = lib.mkPackageOption pkgs [ "python3Packages" "pylint" ] { }; settings = lib.mkOption { type = iniFormat.type; default = { }; diff --git a/modules/programs/ranger.nix b/modules/programs/ranger.nix index e1a68b05f..c31774624 100644 --- a/modules/programs/ranger.nix +++ b/modules/programs/ranger.nix @@ -7,12 +7,7 @@ in { options.programs.ranger = { enable = lib.mkEnableOption "ranger file manager"; - package = mkOption { - type = types.package; - default = pkgs.ranger; - defaultText = literalExpression "pkgs.ranger"; - description = "The ranger package to use."; - }; + package = lib.mkPackageOption pkgs "ranger" { }; extraPackages = mkOption { type = types.listOf types.package; diff --git a/modules/programs/rbw.nix b/modules/programs/rbw.nix index 9fdf20c93..8abf53723 100644 --- a/modules/programs/rbw.nix +++ b/modules/programs/rbw.nix @@ -63,11 +63,8 @@ in { options.programs.rbw = { enable = lib.mkEnableOption "rbw, a CLI Bitwarden client"; - package = mkOption { - type = types.package; - default = pkgs.rbw; - defaultText = lib.literalExpression "pkgs.rbw"; - description = '' + package = lib.mkPackageOption pkgs "rbw" { + extraDescription = '' Package providing the {command}`rbw` tool and its {command}`rbw-agent` daemon. ''; diff --git a/modules/programs/rofi.nix b/modules/programs/rofi.nix index a89e53ba9..349ce1d3a 100644 --- a/modules/programs/rofi.nix +++ b/modules/programs/rofi.nix @@ -104,15 +104,8 @@ in { enable = lib.mkEnableOption "Rofi: A window switcher, application launcher and dmenu replacement"; - package = mkOption { - default = pkgs.rofi; - type = types.package; - description = '' - Package providing the {command}`rofi` binary. - ''; - example = literalExpression '' - pkgs.rofi.override { plugins = [ pkgs.rofi-emoji ]; }; - ''; + package = lib.mkPackageOption pkgs "rofi" { + example = "pkgs.rofi.override { plugins = [ pkgs.rofi-emoji ]; }"; }; finalPackage = mkOption { diff --git a/modules/programs/sbt.nix b/modules/programs/sbt.nix index 7f4bcdb94..fd96d5a3d 100644 --- a/modules/programs/sbt.nix +++ b/modules/programs/sbt.nix @@ -92,12 +92,7 @@ in { options.programs.sbt = { enable = lib.mkEnableOption "sbt"; - package = mkOption { - type = types.package; - default = pkgs.sbt; - defaultText = literalExpression "pkgs.sbt"; - description = "The package with sbt to be installed."; - }; + package = lib.mkPackageOption pkgs "sbt" { }; baseUserConfigPath = mkOption { type = types.str; diff --git a/modules/programs/scmpuff.nix b/modules/programs/scmpuff.nix index fc47af167..c301605a7 100644 --- a/modules/programs/scmpuff.nix +++ b/modules/programs/scmpuff.nix @@ -11,12 +11,7 @@ in { scmpuff, a command line tool that allows you to work quicker with Git by substituting numeric shortcuts for files''; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.scmpuff; - defaultText = lib.literalExpression "pkgs.scmpuff"; - description = "Package providing the {command}`scmpuff` tool."; - }; + package = lib.mkPackageOption pkgs "scmpuff" { }; enableBashIntegration = lib.hm.shell.mkBashIntegrationOption { inherit config; }; diff --git a/modules/programs/senpai.nix b/modules/programs/senpai.nix index 67d59d335..4219a1607 100644 --- a/modules/programs/senpai.nix +++ b/modules/programs/senpai.nix @@ -6,12 +6,7 @@ let in { options.programs.senpai = { enable = lib.mkEnableOption "senpai"; - package = mkOption { - type = types.package; - default = pkgs.senpai; - defaultText = lib.literalExpression "pkgs.senpai"; - description = "The `senpai` package to use."; - }; + package = lib.mkPackageOption pkgs "senpai" { }; config = mkOption { type = types.submodule { freeformType = types.attrsOf types.anything; diff --git a/modules/programs/sioyek.nix b/modules/programs/sioyek.nix index b99663ea3..9eda06a86 100644 --- a/modules/programs/sioyek.nix +++ b/modules/programs/sioyek.nix @@ -15,12 +15,7 @@ in { enable = lib.mkEnableOption "Sioyek, a PDF viewer designed for reading research papers and technical books"; - package = mkOption { - default = pkgs.sioyek; - defaultText = literalExpression "pkgs.sioyek"; - type = types.package; - description = "Package providing the sioyek binary"; - }; + package = lib.mkPackageOption pkgs "sioyek" { }; bindings = mkOption { description = '' diff --git a/modules/programs/skim.nix b/modules/programs/skim.nix index 8e694e061..3a5c44a59 100644 --- a/modules/programs/skim.nix +++ b/modules/programs/skim.nix @@ -8,12 +8,7 @@ in { options.programs.skim = { enable = lib.mkEnableOption "skim - a command-line fuzzy finder"; - package = mkOption { - type = types.package; - default = pkgs.skim; - defaultText = lib.literalExpression "pkgs.skim"; - description = "Package providing the {command}`skim` tool."; - }; + package = lib.mkPackageOption pkgs "skim" { }; defaultCommand = mkOption { type = types.nullOr types.str; diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index bef6acfc5..5ad664cfd 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -14,12 +14,7 @@ in { options.programs.starship = { enable = lib.mkEnableOption "starship"; - package = mkOption { - type = types.package; - default = pkgs.starship; - defaultText = lib.literalExpression "pkgs.starship"; - description = "The package to use for the starship binary."; - }; + package = lib.mkPackageOption pkgs "starship" { }; settings = mkOption { type = tomlFormat.type; diff --git a/modules/programs/swayr.nix b/modules/programs/swayr.nix index 3a4aeee94..3092f56a6 100644 --- a/modules/programs/swayr.nix +++ b/modules/programs/swayr.nix @@ -97,12 +97,7 @@ in { ''; }; - package = mkOption { - type = types.package; - default = pkgs.swayr; - defaultText = lib.literalExpression "pkgs.swayr"; - description = "swayr package to use."; - }; + package = lib.mkPackageOption pkgs "swayr" { }; }; config = mkIf cfg.enable (lib.mkMerge [ diff --git a/modules/programs/thunderbird.nix b/modules/programs/thunderbird.nix index 0df3c0b25..43a5966bb 100644 --- a/modules/programs/thunderbird.nix +++ b/modules/programs/thunderbird.nix @@ -188,12 +188,8 @@ in { programs.thunderbird = { enable = lib.mkEnableOption "Thunderbird"; - package = mkOption { - type = types.package; - default = pkgs.thunderbird; - defaultText = literalExpression "pkgs.thunderbird"; - example = literalExpression "pkgs.thunderbird-91"; - description = "The Thunderbird package to use."; + package = lib.mkPackageOption pkgs "thunderbird" { + example = "pkgs.thunderbird-91"; }; profileVersion = mkOption { diff --git a/modules/programs/timidity.nix b/modules/programs/timidity.nix index 26b9de982..d628148f4 100644 --- a/modules/programs/timidity.nix +++ b/modules/programs/timidity.nix @@ -10,12 +10,7 @@ in { options.programs.timidity = { enable = lib.mkEnableOption "timidity, a software MIDI renderer"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.timidity; - defaultText = lib.literalExpression "pkgs.timidity"; - description = "The timidity package to use."; - }; + package = lib.mkPackageOption pkgs "timidity" { }; finalPackage = lib.mkOption { readOnly = true; diff --git a/modules/programs/topgrade.nix b/modules/programs/topgrade.nix index 7f810ff21..57d08c09c 100644 --- a/modules/programs/topgrade.nix +++ b/modules/programs/topgrade.nix @@ -10,12 +10,7 @@ in { options.programs.topgrade = { enable = lib.mkEnableOption "topgrade"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.topgrade; - defaultText = lib.literalExpression "pkgs.topgrade"; - description = "The package to use for the topgrade binary."; - }; + package = lib.mkPackageOption pkgs "topgrade" { }; settings = lib.mkOption { type = tomlFormat.type; diff --git a/modules/programs/vdirsyncer.nix b/modules/programs/vdirsyncer.nix index 2391124fa..a3bb81f5e 100644 --- a/modules/programs/vdirsyncer.nix +++ b/modules/programs/vdirsyncer.nix @@ -168,14 +168,7 @@ in { programs.vdirsyncer = { enable = lib.mkEnableOption "vdirsyncer"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.vdirsyncer; - defaultText = "pkgs.vdirsyncer"; - description = '' - vdirsyncer package to use. - ''; - }; + package = lib.mkPackageOption pkgs "vdirsyncer" { }; statusPath = lib.mkOption { type = lib.types.str; diff --git a/modules/programs/vscode.nix b/modules/programs/vscode.nix index 6549221a3..b641f1664 100644 --- a/modules/programs/vscode.nix +++ b/modules/programs/vscode.nix @@ -244,14 +244,9 @@ in { options.programs.vscode = { enable = lib.mkEnableOption "Visual Studio Code"; - package = mkOption { - type = types.package; - default = pkgs.vscode; - defaultText = literalExpression "pkgs.vscode"; - example = literalExpression "pkgs.vscodium"; - description = '' - Version of Visual Studio Code to install. - ''; + package = lib.mkPackageOption pkgs "vscode" { + example = "pkgs.vscodium"; + extraDescription = "Version of Visual Studio Code to install."; }; mutableExtensionsDir = mkOption { diff --git a/modules/programs/watson.nix b/modules/programs/watson.nix index 6e5a2557a..6e3498605 100644 --- a/modules/programs/watson.nix +++ b/modules/programs/watson.nix @@ -17,12 +17,7 @@ in { options.programs.watson = { enable = lib.mkEnableOption "watson, a wonderful CLI to track your time"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.watson; - defaultText = lib.literalExpression "pkgs.watson"; - description = "Package providing the {command}`watson`."; - }; + package = lib.mkPackageOption pkgs "watson" { }; enableBashIntegration = lib.hm.shell.mkBashIntegrationOption { inherit config; }; diff --git a/modules/programs/xmobar.nix b/modules/programs/xmobar.nix index 83fbb72a7..ddf764e1a 100644 --- a/modules/programs/xmobar.nix +++ b/modules/programs/xmobar.nix @@ -4,14 +4,7 @@ in { options.programs.xmobar = { enable = lib.mkEnableOption "Xmobar, a minimalistic status bar"; - package = lib.mkOption { - default = pkgs.haskellPackages.xmobar; - defaultText = lib.literalExpression "pkgs.haskellPackages.xmobar"; - type = lib.types.package; - description = '' - Package providing the {command}`xmobar` binary. - ''; - }; + package = lib.mkPackageOption pkgs [ "haskellPackages" "xmobar" ] { }; extraConfig = lib.mkOption { default = ""; diff --git a/modules/programs/yt-dlp.nix b/modules/programs/yt-dlp.nix index 10d39d291..2dd0b8362 100644 --- a/modules/programs/yt-dlp.nix +++ b/modules/programs/yt-dlp.nix @@ -16,12 +16,7 @@ in { options.programs.yt-dlp = { enable = lib.mkEnableOption "yt-dlp"; - package = mkOption { - type = types.package; - default = pkgs.yt-dlp; - defaultText = lib.literalExpression "pkgs.yt-dlp"; - description = "Package providing the {command}`yt-dlp` tool."; - }; + package = lib.mkPackageOption pkgs "yt-dlp" { }; settings = mkOption { type = with types; attrsOf (oneOf [ bool int str ]); diff --git a/modules/programs/zathura.nix b/modules/programs/zathura.nix index fb3210ce9..80ae9c2d9 100644 --- a/modules/programs/zathura.nix +++ b/modules/programs/zathura.nix @@ -20,12 +20,7 @@ in { Zathura, a highly customizable and functional document viewer focused on keyboard interaction''; - package = mkOption { - type = types.package; - default = pkgs.zathura; - defaultText = "pkgs.zathura"; - description = "The Zathura package to use"; - }; + package = lib.mkPackageOption pkgs "zathura" { }; options = mkOption { default = { }; diff --git a/modules/services/activitywatch.nix b/modules/services/activitywatch.nix index ac8072577..3bf69aa6a 100644 --- a/modules/services/activitywatch.nix +++ b/modules/services/activitywatch.nix @@ -48,12 +48,8 @@ let ''; }; - package = mkOption { - type = lib.types.package; - example = lib.literalExpression "pkgs.activitywatch"; - description = '' - The derivation containing the watcher executable. - ''; + package = lib.mkPackageOption pkgs "activitywatch" { + extraDescription = "The derivation containing the watcher executable."; }; executable = mkOption {