update to prevent accidental dirs from being created
This commit is contained in:
alsaiduq-lab 2025-09-12 16:32:37 -06:00
parent b0429272f4
commit 2aac162aba

View file

@ -1,16 +1,6 @@
{ config, pkgs, lib, ... }:
{ {
config, options.npm.enable = lib.mkEnableOption "npm setup";
pkgs,
lib,
...
}: let
npmConf = pkgs.writeText "npmrc" ''
prefix=${"$"}HOME/.npm-global
cache=${"$"}HOME/.npm
init-module=${"$"}HOME/.npm-init.js
'';
in {
options.npm.enable = lib.mkEnableOption "system-wide npm environment";
config = lib.mkIf config.npm.enable { config = lib.mkIf config.npm.enable {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -21,31 +11,33 @@ in {
nodePackages.typescript nodePackages.typescript
]; ];
environment.etc."npmrc".source = npmConf; systemd.user.services."npm-init" = {
systemd.user.services.npm-global-dir = {
wantedBy = [ "default.target" ]; wantedBy = [ "default.target" ];
serviceConfig.Type = "oneshot";
script = '' script = ''
mkdir -p $HOME/.npm-global/bin set -eu
chmod u+rwx $HOME/.npm-global H="$HOME"
''; mkdir -p "$H/.npm-global/bin" "$H/.npm"
serviceConfig = { tmp="$(mktemp)"
Type = "oneshot"; cat > "$tmp" <<EOF
}; prefix=$H/.npm-global
}; cache=$H/.npm
init-module=$H/.npm-init.js
systemd.user.services.npm-setup = { EOF
wantedBy = ["default.target"]; if [ ! -f "$H/.npmrc" ] || ! cmp -s "$tmp" "$H/.npmrc"; then
script = '' mv "$tmp" "$H/.npmrc"
if [ ! -f ~/.npmrc ]; then chmod 600 "$H/.npmrc"
cp ${npmConf} ~/.npmrc else
chmod u+rw ~/.npmrc rm -f "$tmp"
fi fi
''; '';
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
}; };
environment.etc."profile.d/50-npm-global.sh".text = ''
case ":$PATH:" in
*:"$HOME/.npm-global/bin":*) ;;
*) [ -d "$HOME/.npm-global/bin" ] && export PATH="$HOME/.npm-global/bin:$PATH" ;;
esac
'';
}; };
} }