From b00d0e4fe9cba0047f54e77418ddda5f17e6ef2c Mon Sep 17 00:00:00 2001 From: Jack W <29169102+Jack5079@users.noreply.github.com> Date: Tue, 9 Apr 2024 14:48:15 -0400 Subject: [PATCH] bun: add module --- modules/lib/maintainers.nix | 6 ++++ modules/misc/news.nix | 7 +++++ modules/modules.nix | 1 + modules/programs/bun.nix | 59 +++++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 modules/programs/bun.nix diff --git a/modules/lib/maintainers.nix b/modules/lib/maintainers.nix index 174a7d36..2c4fbd9d 100644 --- a/modules/lib/maintainers.nix +++ b/modules/lib/maintainers.nix @@ -77,6 +77,12 @@ githubId = 32838899; name = "Daniel Wagenknecht"; }; + jack5079 = { + name = "Jack W."; + email = "nix@jack.cab"; + github = "jack5079"; + githubId = 29169102; + }; jkarlson = { email = "jekarlson@gmail.com"; github = "jkarlson"; diff --git a/modules/misc/news.nix b/modules/misc/news.nix index 70a943de..97b8da7b 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -1469,6 +1469,13 @@ in { A new module is available: 'services.activitywatch'. ''; } + + { + time = "2024-04-08T21:43:38+00:00"; + message = '' + A new module is available: 'programs.bun'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index cd4abb72..ff48b21a 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -72,6 +72,7 @@ let ./programs/broot.nix ./programs/browserpass.nix ./programs/btop.nix + ./programs/bun.nix ./programs/carapace.nix ./programs/cava.nix ./programs/chromium.nix diff --git a/modules/programs/bun.nix b/modules/programs/bun.nix new file mode 100644 index 00000000..f186982e --- /dev/null +++ b/modules/programs/bun.nix @@ -0,0 +1,59 @@ +{ config, lib, pkgs, ... }: + +let + cfg = config.programs.bun; + tomlFormat = pkgs.formats.toml { }; +in { + meta.maintainers = [ lib.hm.maintainers.jack5079 ]; + + options.programs.bun = { + enable = lib.mkEnableOption "Bun JavaScript runtime"; + + package = lib.mkPackageOption pkgs "bun" { }; + + settings = lib.mkOption { + type = tomlFormat.type; + default = { }; + example = lib.literalExpression '' + { + smol = true; + telemetry = false; + test = { + coverage = true; + coverageThreshold = 0.9; + }; + install.lockfile = { + print = "yarn"; + }; + } + ''; + description = '' + Configuration written to + {file}`$XDG_CONFIG_HOME/.bunfig.toml`. + + See + for the full list of options. + ''; + }; + + enableGitIntegration = lib.mkEnableOption "Git integration" // { + default = true; + }; + }; + + config = lib.mkIf cfg.enable { + home.packages = [ cfg.package ]; + + xdg.configFile.".bunfig.toml" = lib.mkIf (cfg.settings != { }) { + source = tomlFormat.generate "bun-config" cfg.settings; + }; + + # https://bun.sh/docs/install/lockfile#how-do-i-git-diff-bun-s-lockfile + programs.git.attributes = + lib.mkIf cfg.enableGitIntegration [ "*.lockb binary diff=lockb" ]; + programs.git.extraConfig.diff.lockb = lib.mkIf cfg.enableGitIntegration { + textconv = lib.getExe cfg.package; + binary = true; + }; + }; +}