{ config , pkgs , ... }: { home.packages = (with pkgs; [ pnpm-shell-completion bunyan-rs ]) ++ (with pkgs.nodePackages; [ node2nix nodemon javascript-typescript-langserver typescript-language-server eslint_d typescript pnpm npm-merge-driver ]); home.sessionVariables = { NO_UPDATE_NOTIFIER = "1"; # stop npm update-notifier }; programs.bun = { enable = true; settings = { run = { bun = true; silent = true; }; }; }; programs.emacs.extraPackages = epkgs: (with epkgs; [ add-node-modules-path js2-mode rjsx-mode tide typescript-mode ]); home.shellAliases = { ava = "bunx ava"; avt = "bunx ava --tap"; avat = "bunx ava --tap"; avaw = "bunx ava --watch"; avaf = "bunx ava --fail-fast"; avafw = "bunx ava --fail-fast --watch"; avawf = "bunx ava --fail-fast --watch"; pino = "bunyan"; mocha = "bunx mocha"; standard = "bunx standard"; tsc = "bunx tsc"; tslint = "bunx tslint"; tsnode = "bunx ts-node"; p = "pnpm"; pi = "pnpm install --filter=."; pit = "pnpm install-test --filter=."; pl = "pnpm ls"; pr = "pnpm run"; pb = "pnpm run build"; prb = "pnpm run build"; pbd = "pnpm multi run build --filter={.}..."; pmi = "pnpm multi install"; pmx = "pnpm multi exec "; # expand command aliases pmr = "pnpm multi run"; pa = "pnpm add"; pad = "pnpm add --save-dev"; pd = "pnpm uninstall"; pou = "pnpm outdated"; pt = "pnpm test"; pmt = "pnpm multi test"; pmd = "pnpm multi uninstall"; pmit = "pnpm multi install-test"; pup = "pnpm update"; pupl = "pnpm update --latest"; ppr = "pnpm prune"; pprp = "pnpm prune --production"; pli = "pnpm link"; pdi = "pnpm dislink"; pul = "pnpm unlink"; px = "pnpx"; bn = "bun"; bni = "bun install"; bna = "bun add"; bnad = "bun add --dev"; bnr = "bun run"; bnu = "bun update"; bnrm = "bun remove"; bnd = "bun dev"; bnp = "bun pm"; bnl = "bun pm ls"; bnt = "bun test"; bntw = "bun test --watch"; bnx = "bunx"; np = "npm"; npi = "npm install"; npl = "npm ls"; npr = "npm run"; npb = "npm run build"; nprb = "npm run build"; npa = "npm install --save"; npad = "npm install --save-dev"; npd = "npm uninstall"; npt = "npm test"; npup = "npm update"; nppr = "npm prune"; npprp = "npm prune --production"; npli = "npm link"; npul = "npm unlink"; }; programs.git.attributes = [ "*.lockb diff=lockb" ]; programs.git.extraConfig."diff.lockb" = { textconv = "bun"; binary = true; }; xdg.configFile.".bunfig.toml".text = '' [install.cache] dir = "${config.xdg.cacheHome}/bun/" ''; xdg.configFile."npm/config".text = '' prefix=''${HOME}/.local cache=${config.xdg.cacheHome}/npm/ store-dir=${config.xdg.cacheHome}/pnpm/ always-auth=true sign-git-tag=true rebuild-bundle=false update-notifier=false registry=https://registry.npmjs.org/ @jsr:registry=https://npm.jsr.io ''; }