feat: configuring shell & add fish shell

This commit is contained in:
Rasyidan Akbar F. 2025-10-21 16:16:50 +07:00
commit e73cc0c0f5
10 changed files with 130 additions and 22 deletions

View file

@ -1,8 +1,50 @@
{ pkgs, ... }:
pkgs.mkShell {
let
# MCP wrapper script that ensures Python is available for GUI apps
mcpNixosWrapper = pkgs.writeShellScriptBin "mcp-nixos-wrapper" ''
export PATH="${pkgs.python3}/bin:${pkgs.uv}/bin:$PATH"
exec ${pkgs.uv}/bin/uvx mcp-nixos "$@"
'';
# Generate MCP configs for GUI applications
mcpConfigForGUI = pkgs.writeText "mcp_settings.json" (builtins.toJSON {
mcpServers = {
nixos = {
type = "stdio";
command = "${mcpNixosWrapper}/bin/mcp-nixos-wrapper";
args = [ ];
};
};
});
# Script to install MCP configs for Claude Code and Codex
installMcpConfigs = pkgs.writeShellScriptBin "install-mcp-configs" ''
set -e
echo "Installing MCP configurations..."
mkdir -p "$HOME/.config/claude-code"
mkdir -p "$HOME/.config/codex"
cp ${mcpConfigForGUI} "$HOME/.config/claude-code/mcp_settings.json"
cp ${mcpConfigForGUI} "$HOME/.config/codex/mcp_settings.json"
echo " Installed MCP config to ~/.config/claude-code/mcp_settings.json"
echo " Installed MCP config to ~/.config/codex/mcp_settings.json"
echo ""
echo "Restart Claude Code and Codex to apply changes."
'';
in pkgs.mkShell {
name = "default";
packages = with pkgs; [ git nixfmt-classic uv ];
packages = with pkgs; [
git
nixfmt-classic
uv
python3
mcpNixosWrapper
installMcpConfigs
];
shellHook = ''
export DOTFILES_ROOT="$PWD"
export XDG_CACHE_HOME="$DOTFILES_ROOT/.cache"
@ -18,5 +60,8 @@ pkgs.mkShell {
echo "Loaded default shell for dotfiles development"
echo "MCP helper alias ready: mcp-nixos"
echo ""
echo "To install MCP configs for Claude Code and Codex, run:"
echo " install-mcp-configs"
'';
}