diff --git a/hosts/modules/env.nix b/hosts/modules/env.nix index 4f3cad7..3236acd 100644 --- a/hosts/modules/env.nix +++ b/hosts/modules/env.nix @@ -7,10 +7,8 @@ if [ -d "$HOME/.cargo/bin" ]; then export PATH="$PATH:$HOME/.cargo/bin" fi - if [ -d "$HOME/.npm-global/bin" ]; then - export PATH="$PATH:$HOME/.npm-global/bin" - fi ''; + environment.variables = { EDITOR = "nvim"; VISUAL = "nvim"; diff --git a/hosts/modules/npm.nix b/hosts/modules/npm.nix index 4b3ea21..560acb8 100644 --- a/hosts/modules/npm.nix +++ b/hosts/modules/npm.nix @@ -5,43 +5,47 @@ ... }: let npmConf = pkgs.writeText "npmrc" '' - prefix=${"$"}{HOME}/.npm-global - cache=${"$"}{HOME}/.npm - init-module=${"$"}{HOME}/.npm-init.js + 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 { environment.systemPackages = with pkgs; [ - nodejs_22 + nodejs_23 nodePackages.npm yarn bun - pnpm - electron nodePackages.typescript - nodePackages.prettier - nodePackages.eslint - nodePackages.sql-formatter - nodePackages.markdownlint-cli - nodePackages.stylelint - nodePackages.htmlhint - nodePackages.jsonlint ]; - environment.sessionVariables.PATH = - lib.mkAfter ":${"$"}{HOME}/.npm-global/bin"; - environment.etc."npmrc".source = npmConf; - systemd.user.services."npm-setup" = { - description = "Install .npmrc"; + systemd.user.services.npm-global-dir = { wantedBy = ["default.target"]; script = '' - install -m600 -D ${npmConf} "$HOME/.npmrc" + mkdir -p $HOME/.npm-global/bin + chmod u+rwx $HOME/.npm-global ''; - serviceConfig.Type = "oneshot"; + serviceConfig = { + Type = "oneshot"; + }; + }; + + systemd.user.services.npm-setup = { + wantedBy = ["default.target"]; + script = '' + if [ ! -f ~/.npmrc ]; then + cp ${npmConf} ~/.npmrc + chmod u+rw ~/.npmrc + fi + ''; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; }; }; } diff --git a/hosts/system-packages.nix b/hosts/system-packages.nix index a2f43fd..c1a061c 100644 --- a/hosts/system-packages.nix +++ b/hosts/system-packages.nix @@ -28,7 +28,7 @@ ./modules/libs.nix ./modules/rgb.nix ]; - + programs.npm.enable = true; services.udisks2.enable = true; # Some programs need SUID wrappers, can be configured further or are