change from mono-home-manager to full flake multi-system configuration
This commit is contained in:
70
home/javascript.nix
Normal file
70
home/javascript.nix
Normal file
@@ -0,0 +1,70 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
cfg = config.homeModules.javascript;
|
||||
in
|
||||
|
||||
lib.mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
nodejs_20 # default fallback Node.js
|
||||
yarn # optional global package manager
|
||||
pnpm
|
||||
typescript
|
||||
nodePackages.eslint
|
||||
nodePackages.prettier
|
||||
#nodePackages.npm-check-updates
|
||||
#nodePackages.astro
|
||||
#nodePackages."@angular/cli"
|
||||
#nodePackages.create-react-app
|
||||
#nodePackages."@next/bundle-analyzer"
|
||||
#nodePackages.vite
|
||||
];
|
||||
|
||||
programs.zsh = {
|
||||
shellAliases = {
|
||||
nrun = "npx";
|
||||
nstart = "npm run start";
|
||||
dev = "pnpm dev || npm run dev || yarn dev";
|
||||
build = "pnpm build || npm run build || yarn build";
|
||||
};
|
||||
|
||||
initContent = ''
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||
'';
|
||||
};
|
||||
|
||||
# nvm installed manually; Nixpkgs does not manage dynamic Node versions well
|
||||
home.file.".nvm/nvm.sh".source = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/nvm.sh";
|
||||
sha256 = "sha256-EPSUbf93oq1jyzCRAZLRqkK15Y3EsA92Qpxq6mw8N1c=";
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
NODE_ENV = "development";
|
||||
NVM_DIR = "${config.home.homeDirectory}/.nvm";
|
||||
PNPM_HOME = "${config.home.homeDirectory}/.local/share/pnpm";
|
||||
# in _home.nix PATH = lib.mkBefore "$PNPM_HOME";
|
||||
};
|
||||
|
||||
# Auto-completions and formatting helpers
|
||||
programs.direnv.enable = true;
|
||||
programs.direnv.nix-direnv.enable = true;
|
||||
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
profiles.default.extensions = with pkgs.vscode-extensions; [
|
||||
esbenp.prettier-vscode
|
||||
dbaeumer.vscode-eslint
|
||||
astro-build.astro-vscode
|
||||
angular.ng-template
|
||||
];
|
||||
profiles.default.userSettings = {
|
||||
"editor.formatOnSave" = true;
|
||||
"typescript.tsdk" = "node_modules/typescript/lib";
|
||||
"eslint.validate" = [ "javascript" "typescript" "javascriptreact" "typescriptreact" ];
|
||||
"prettier.requireConfig" = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user