{ config, pkgs, ... }: { # Development-specific configurations and tools # Node.js development home.packages = with pkgs; [ # Node.js tools (system-wide installation handled in NixOS config) nodePackages.npm nodePackages.bun # PHP development tools phpPackages.composer # JSON/YAML tools jq yq ]; # Development environment variables home.sessionVariables = { # Node.js NODE_ENV = "development"; NPM_CONFIG_PREFIX = "${config.home.homeDirectory}/.npm-global"; # PHP COMPOSER_HOME = "${config.home.homeDirectory}/.composer"; # Go GOPATH = "${config.home.homeDirectory}/go"; GOBIN = "${config.home.homeDirectory}/go/bin"; # Laravel Valet (when using it with Nix) PATH = "$PATH:${config.home.homeDirectory}/.composer/vendor/bin"; }; # Create development directories home.file.".keep-dirs" = { text = ""; onChange = '' mkdir -p ${config.home.homeDirectory}/projects mkdir -p ${config.home.homeDirectory}/go/{bin,pkg,src} mkdir -p ${config.home.homeDirectory}/.composer mkdir -p ${config.home.homeDirectory}/.npm-global ''; }; # Yazi file manager configuration (replaces your yazi.sh script) programs.yazi = { enable = true; enableBashIntegration = true; settings = { manager = { show_hidden = true; sort_by = "modified"; sort_reverse = true; linemode = "permissions"; }; preview = { max_width = 600; max_height = 900; }; opener = { edit = [ { run = "code \"$@\""; block = true; } ]; open = [ { run = "xdg-open \"$@\""; desc = "Open"; } ]; }; }; keymap = { manager.prepend_keymap = [ { on = [ "" ]; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; } { on = [ "q" ]; run = "quit"; desc = "Exit the process"; } { on = [ "Q" ]; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; } { on = [ "" ]; run = "close"; desc = "Close the current tab, or quit if it is last tab"; } ]; }; }; }