43 lines
1.3 KiB
Nix
43 lines
1.3 KiB
Nix
|
{ options
|
||
|
, config
|
||
|
, pkgs
|
||
|
, lib
|
||
|
, ...
|
||
|
}:
|
||
|
with lib;
|
||
|
with lib.plusultra; let
|
||
|
cfg = config.plusultra.tools.node;
|
||
|
in
|
||
|
{
|
||
|
options.plusultra.tools.node = with types; {
|
||
|
enable = mkBoolOpt false "Whether or not to install and configure git";
|
||
|
pkg = mkOpt package pkgs.nodejs "The NodeJS package to use";
|
||
|
prettier = {
|
||
|
enable = mkBoolOpt true "Whether or not to install Prettier";
|
||
|
pkg =
|
||
|
mkOpt package pkgs.nodePackages.prettier "The NodeJS package to use";
|
||
|
};
|
||
|
yarn = {
|
||
|
enable = mkBoolOpt true "Whether or not to install Yarn";
|
||
|
pkg = mkOpt package pkgs.nodePackages.yarn "The NodeJS package to use";
|
||
|
};
|
||
|
pnpm = {
|
||
|
enable = mkBoolOpt true "Whether or not to install Pnpm";
|
||
|
pkg = mkOpt package pkgs.nodePackages.pnpm "The NodeJS package to use";
|
||
|
};
|
||
|
flyctl = {
|
||
|
enable = mkBoolOpt true "Whether or not to install flyctl";
|
||
|
pkg = mkOpt package pkgs.flyctl "The flyctl package to use";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = mkIf cfg.enable {
|
||
|
environment.systemPackages = with pkgs;
|
||
|
[ cfg.pkg ]
|
||
|
++ (lib.optional cfg.prettier.enable cfg.prettier.pkg)
|
||
|
++ (lib.optional cfg.yarn.enable cfg.yarn.pkg)
|
||
|
++ (lib.optional cfg.pnpm.enable cfg.pnpm.pkg)
|
||
|
++ (lib.optional cfg.flyctl.enable cfg.flyctl.pkg);
|
||
|
};
|
||
|
}
|