refactor: add language runtimes module and cleanup agent config
- Add home/coding/languages/ with Python, JavaScript, Rust, Go, TypeScript - Move bun/nodejs from agents.nix to languages/javascript.nix - Move python3 with packages to languages/python.nix - Move npm config to javascript.nix (broader context) - Add language options to m3-ares and m3-kratos host configs - Move pyrefly from agents.nix to lsp/servers.nix - Remove duplicate python3 reference (build conflict fix) - Remove unused base/secrets/cli-tools/ duplicates
This commit is contained in:
@@ -22,22 +22,30 @@ in {
|
|||||||
jq
|
jq
|
||||||
ripgrep
|
ripgrep
|
||||||
|
|
||||||
|
# Nix
|
||||||
|
alejandra
|
||||||
|
comma
|
||||||
|
nixd
|
||||||
|
nix-diff
|
||||||
|
nix-index
|
||||||
|
nix-update
|
||||||
|
|
||||||
# Dev tools
|
# Dev tools
|
||||||
|
bc
|
||||||
|
cmake
|
||||||
devenv
|
devenv
|
||||||
gcc
|
gcc
|
||||||
|
gnumake
|
||||||
go
|
go
|
||||||
httpie
|
httpie
|
||||||
just
|
just
|
||||||
lazygit
|
lazygit
|
||||||
nix-index
|
|
||||||
nix-update
|
|
||||||
progress
|
progress
|
||||||
sqlite
|
sqlite
|
||||||
sqlite-vec
|
sqlite-vec
|
||||||
tldr
|
tldr
|
||||||
|
|
||||||
# AI tools
|
# AI tools
|
||||||
comma
|
|
||||||
fabric-ai
|
fabric-ai
|
||||||
llm
|
llm
|
||||||
|
|
||||||
|
|||||||
@@ -1,145 +0,0 @@
|
|||||||
# Bat — cat replacement with nix-colors syntax highlighting theme.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.bat;
|
|
||||||
palette = config.colorScheme.palette;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.bat.enable = (mkEnableOption "enable bat with nix-colors theme") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.bat = {
|
|
||||||
enable = true;
|
|
||||||
config = {theme = "universal";};
|
|
||||||
themes = {
|
|
||||||
universal = {
|
|
||||||
src = pkgs.writeText "universal.tmTheme" ''
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Universal (nix-colors)</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>background</key>
|
|
||||||
<string>#${palette.base00}</string>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base05}</string>
|
|
||||||
<key>caret</key>
|
|
||||||
<string>#${palette.base05}</string>
|
|
||||||
<key>selection</key>
|
|
||||||
<string>#${palette.base02}</string>
|
|
||||||
<key>selectionForeground</key>
|
|
||||||
<string>#${palette.base05}</string>
|
|
||||||
<key>lineHighlight</key>
|
|
||||||
<string>#${palette.base01}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Comment</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>comment</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base03}</string>
|
|
||||||
<key>fontStyle</key>
|
|
||||||
<string>italic</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>String</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>string</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base0A}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Number</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>constant.numeric</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base0E}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Keyword</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>keyword</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base08}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Function</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>entity.name.function</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base0B}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Type</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>entity.name.type, storage.type</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base0D}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Variable</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>variable</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base05}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<dict>
|
|
||||||
<key>name</key>
|
|
||||||
<string>Constant</string>
|
|
||||||
<key>scope</key>
|
|
||||||
<string>constant</string>
|
|
||||||
<key>settings</key>
|
|
||||||
<dict>
|
|
||||||
<key>foreground</key>
|
|
||||||
<string>#${palette.base0E}</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# Carapace — multi-shell completion engine with Fish, Nushell, and Bash integration.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.carapace;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.carapace.enable = (mkEnableOption "enable carapace completion engine") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.carapace = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# CLI tools aggregator — imports all base command-line utilities.
|
|
||||||
{...}: {
|
|
||||||
imports = [
|
|
||||||
./bat.nix
|
|
||||||
./carapace.nix
|
|
||||||
./direnv.nix
|
|
||||||
./eza.nix
|
|
||||||
./fzf.nix
|
|
||||||
./lf.nix
|
|
||||||
./nitch.nix
|
|
||||||
./packages.nix
|
|
||||||
./television.nix
|
|
||||||
./zellij.nix
|
|
||||||
./zellij-ps.nix
|
|
||||||
./zoxide.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# Direnv — automatic environment loading with nix-direnv integration.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.direnv;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.direnv.enable = (mkEnableOption "enable direnv with nix-direnv") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
# Eza — modern ls replacement with icons, git status, and long format by default.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.eza;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.eza.enable = (mkEnableOption "enable eza modern ls replacement") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.eza = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
extraOptions = ["-l" "--icons" "--git" "-a"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# Fuzzy finder with nix-colors palette and Wayland clipboard integration.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.fzf;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.fzf.enable = (mkEnableOption "enable fuzzy finder") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.fzf = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
colors = {
|
|
||||||
"fg" = "#${config.colorScheme.palette.base05}";
|
|
||||||
"bg" = "#${config.colorScheme.palette.base00}";
|
|
||||||
"hl" = "#${config.colorScheme.palette.base0E}";
|
|
||||||
"fg+" = "#${config.colorScheme.palette.base05}";
|
|
||||||
"bg+" = "#${config.colorScheme.palette.base02}";
|
|
||||||
"hl+" = "#${config.colorScheme.palette.base0E}";
|
|
||||||
"info" = "#${config.colorScheme.palette.base09}";
|
|
||||||
"prompt" = "#${config.colorScheme.palette.base0B}";
|
|
||||||
"pointer" = "#${config.colorScheme.palette.base08}";
|
|
||||||
"marker" = "#${config.colorScheme.palette.base08}";
|
|
||||||
"spinner" = "#${config.colorScheme.palette.base09}";
|
|
||||||
"header" = "#${config.colorScheme.palette.base03}";
|
|
||||||
};
|
|
||||||
defaultOptions = [
|
|
||||||
"--preview='bat --color=always -n {}'"
|
|
||||||
"--bind 'ctrl-/:toggle-preview'"
|
|
||||||
"--header 'Press CTRL-Y to copy command into clipboard'"
|
|
||||||
"--bind 'ctrl-y:execute-silent(echo -n {2..} | wl-copy)+abort'"
|
|
||||||
];
|
|
||||||
defaultCommand = "fd --type f --exclude .git --follow --hidden";
|
|
||||||
changeDirWidgetCommand = "fd --type d --exclude .git --follow --hidden";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
# Lf — terminal file manager with bat preview and Dracula theme.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.lf;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.lf.enable = (mkEnableOption "enable lf terminal file manager") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = [pkgs.lf];
|
|
||||||
|
|
||||||
programs.lf = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
preview = true;
|
|
||||||
drawbox = true;
|
|
||||||
hidden = true;
|
|
||||||
icons = true;
|
|
||||||
previewer = "bat";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
# Nitch — minimal system information display tool.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.nitch;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.nitch.enable = (mkEnableOption "enable nitch") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = [pkgs.nitch];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
# Essential CLI packages — core utilities always available on every host.
|
|
||||||
# NOTE: `lazylib` does not exist in nixpkgs. `lazygit` is the correct package
|
|
||||||
# (Git TUI) and is intentionally used here instead.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.essentials;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.essentials.enable = (mkEnableOption "enable essential CLI packages") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# Core utilities
|
|
||||||
coreutils
|
|
||||||
fd
|
|
||||||
htop
|
|
||||||
jq
|
|
||||||
ripgrep
|
|
||||||
|
|
||||||
# Dev tools
|
|
||||||
devenv
|
|
||||||
gcc
|
|
||||||
go
|
|
||||||
httpie
|
|
||||||
just
|
|
||||||
lazygit
|
|
||||||
nix-index
|
|
||||||
nix-update
|
|
||||||
progress
|
|
||||||
sqlite
|
|
||||||
sqlite-vec
|
|
||||||
tldr
|
|
||||||
|
|
||||||
# AI tools
|
|
||||||
comma
|
|
||||||
fabric-ai
|
|
||||||
llm
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
basecamp
|
|
||||||
hyprpaper-random
|
|
||||||
libnotify
|
|
||||||
trash-cli
|
|
||||||
unzip
|
|
||||||
yazi
|
|
||||||
zip
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# Television — fuzzy finder with custom channels for tldr, git-diff, and git-log.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.television;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.television.enable = (mkEnableOption "enable television") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.television = {
|
|
||||||
enable = true;
|
|
||||||
channels = {
|
|
||||||
tldr = {
|
|
||||||
metadata = {
|
|
||||||
description = "Browse TLDR pages";
|
|
||||||
name = "tldr";
|
|
||||||
requirements = ["tldr"];
|
|
||||||
};
|
|
||||||
preview = {
|
|
||||||
command = "tldr '{}'";
|
|
||||||
};
|
|
||||||
source = {
|
|
||||||
command = "tldr --list";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
git-diff = {
|
|
||||||
metadata = {
|
|
||||||
description = "A channel to select files from git diff commands";
|
|
||||||
name = "git-diff";
|
|
||||||
requirements = ["git"];
|
|
||||||
};
|
|
||||||
preview = {
|
|
||||||
command = "git diff HEAD --color=always -- '{}'";
|
|
||||||
};
|
|
||||||
source = {
|
|
||||||
command = "git diff --name-only HEAD";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
git-log = {
|
|
||||||
metadata = {
|
|
||||||
description = "A channel to select from git log entries";
|
|
||||||
name = "git-log";
|
|
||||||
requirements = ["git"];
|
|
||||||
};
|
|
||||||
preview = {
|
|
||||||
command = "git show -p --stat --pretty=fuller --color=always '{0}'";
|
|
||||||
};
|
|
||||||
source = {
|
|
||||||
command = "git log --oneline --date=short --pretty=\"format:%h %s %an %cd\" \"$@\"";
|
|
||||||
output = "{split: :0}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# Zellij-ps — project-aware Zellij session manager from m3ta-nixpkgs.
|
|
||||||
# Delegates to `cli.zellij-ps` — the home-manager module namespace provided by
|
|
||||||
# m3ta-nixpkgs (inputs.m3ta-nixpkgs.nixosModules.default). This is intentional;
|
|
||||||
# `cli.*` is the convention used by m3ta-nixpkgs home-manager modules.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.zellijPs;
|
|
||||||
in {
|
|
||||||
options.base.cliTools.zellijPs = {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
enable = (mkEnableOption "enable zellij-ps project session manager") // {default = true;};
|
|
||||||
|
|
||||||
projectFolders = mkOption {
|
|
||||||
type = types.listOf types.path;
|
|
||||||
description = "Project root folders scanned by zellij-ps.";
|
|
||||||
default = ["${config.home.homeDirectory}/p"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
cli.zellij-ps = {
|
|
||||||
enable = true;
|
|
||||||
projectFolders = cfg.projectFolders;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# Zellij terminal multiplexer with nix-colors theming.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.zellij;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.zellij.enable = (mkEnableOption "enable zellij multiplexer") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.zellij = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
theme = "universal";
|
|
||||||
themes.universal = {
|
|
||||||
bg = "#${config.colorScheme.palette.base00}";
|
|
||||||
fg = "#${config.colorScheme.palette.base05}";
|
|
||||||
black = "#${config.colorScheme.palette.base01}";
|
|
||||||
red = "#${config.colorScheme.palette.base08}";
|
|
||||||
green = "#${config.colorScheme.palette.base0B}";
|
|
||||||
yellow = "#${config.colorScheme.palette.base0A}";
|
|
||||||
blue = "#${config.colorScheme.palette.base0D}";
|
|
||||||
magenta = "#${config.colorScheme.palette.base0E}";
|
|
||||||
cyan = "#${config.colorScheme.palette.base0C}";
|
|
||||||
white = "#${config.colorScheme.palette.base07}";
|
|
||||||
orange = "#${config.colorScheme.palette.base09}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# Zoxide — smarter cd with Fish and Nushell integration.
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib; let
|
|
||||||
cfg = config.base.cliTools.zoxide;
|
|
||||||
in {
|
|
||||||
# Enabled by default — base modules are always-on.
|
|
||||||
options.base.cliTools.zoxide.enable = (mkEnableOption "enable zoxide smarter cd") // {default = true;};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.zoxide = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -8,15 +8,7 @@
|
|||||||
pkgs,
|
pkgs,
|
||||||
videoDrivers ? [],
|
videoDrivers ? [],
|
||||||
...
|
...
|
||||||
}:
|
}: {
|
||||||
with lib; let
|
|
||||||
npmGlobalPrefix = "${config.home.homeDirectory}/.npm-global";
|
|
||||||
in {
|
|
||||||
home.file.".npmrc".text = ''
|
|
||||||
prefix=${npmGlobalPrefix}
|
|
||||||
'';
|
|
||||||
home.sessionVariables.NPM_CONFIG_PREFIX = npmGlobalPrefix;
|
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
# OpenCode and Pi agent configurations
|
# OpenCode and Pi agent configurations
|
||||||
./opencode.nix
|
./opencode.nix
|
||||||
@@ -70,35 +62,12 @@ in {
|
|||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
agenix-cli
|
agenix-cli
|
||||||
agent-browser
|
agent-browser
|
||||||
alejandra
|
|
||||||
bc
|
|
||||||
bun
|
|
||||||
devpod
|
|
||||||
gnumake
|
|
||||||
cmake
|
|
||||||
(python3.withPackages (ps:
|
|
||||||
with ps; [
|
|
||||||
pip
|
|
||||||
uv
|
|
||||||
numba
|
|
||||||
numpy
|
|
||||||
torch
|
|
||||||
srt
|
|
||||||
]))
|
|
||||||
pyrefly
|
pyrefly
|
||||||
nixd
|
|
||||||
nix-update
|
|
||||||
nodejs
|
|
||||||
(qmd.override {
|
(qmd.override {
|
||||||
vulkanSupport = videoDrivers == ["amdgpu"];
|
vulkanSupport = videoDrivers == ["amdgpu"];
|
||||||
cudaSupport = videoDrivers == ["nvidia"];
|
cudaSupport = videoDrivers == ["nvidia"];
|
||||||
})
|
})
|
||||||
openshell
|
openshell
|
||||||
openspec
|
openspec
|
||||||
pi-coding-agent
|
|
||||||
sidecar
|
|
||||||
tailwindcss
|
|
||||||
tailwindcss-language-server
|
|
||||||
td
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
"npm:@plannotator/pi-extension"
|
"npm:@plannotator/pi-extension"
|
||||||
"npm:pi-powerline-footer"
|
"npm:pi-powerline-footer"
|
||||||
"npm:pi-markdown-preview"
|
"npm:pi-markdown-preview"
|
||||||
"npm:pi-gsd"
|
|
||||||
"npm:pi-tool-display"
|
"npm:pi-tool-display"
|
||||||
"npm:pi-agent-browser-native"
|
"npm:pi-agent-browser-native"
|
||||||
"git:github.com/hk-vk/pi-connect"
|
"git:github.com/hk-vk/pi-connect"
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
# Coding environment aggregator — profile-independent development tooling.
|
# Coding environment aggregator — profile-independent development tooling.
|
||||||
# Imports editors, LSP servers, git configuration, the agent system, and optional packages.
|
# Imports editors, LSP servers, git configuration, the agent system, language runtimes, and optional packages.
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [
|
||||||
./editor
|
./editor
|
||||||
./lsp
|
./lsp
|
||||||
./git/git.nix
|
./git/git.nix
|
||||||
./agents/agents.nix
|
./agents/agents.nix
|
||||||
|
./languages
|
||||||
./packages.nix
|
./packages.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
10
home/coding/languages/default.nix
Normal file
10
home/coding/languages/default.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
# Language runtimes — Python, JavaScript, Rust, Go, TypeScript.
|
||||||
|
{...}: {
|
||||||
|
imports = [
|
||||||
|
./python.nix
|
||||||
|
./javascript.nix
|
||||||
|
./rust-toolchain.nix
|
||||||
|
./go.nix
|
||||||
|
./typescript.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
19
home/coding/languages/go.nix
Normal file
19
home/coding/languages/go.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Go toolchain — compiler and language server.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.coding.languages.go;
|
||||||
|
in {
|
||||||
|
options.coding.languages.go.enable = mkEnableOption "Go toolchain";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
go
|
||||||
|
gopls
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
25
home/coding/languages/javascript.nix
Normal file
25
home/coding/languages/javascript.nix
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# JavaScript/TypeScript runtime — Node.js and Bun.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.coding.languages.javascript;
|
||||||
|
npmGlobalPrefix = "${config.home.homeDirectory}/.npm-global";
|
||||||
|
in {
|
||||||
|
options.coding.languages.javascript.enable = mkEnableOption "JavaScript runtime (Node.js + Bun)";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
nodejs
|
||||||
|
bun
|
||||||
|
];
|
||||||
|
|
||||||
|
home.file.".npmrc".text = ''
|
||||||
|
prefix=${npmGlobalPrefix}
|
||||||
|
'';
|
||||||
|
home.sessionVariables.NPM_CONFIG_PREFIX = npmGlobalPrefix;
|
||||||
|
};
|
||||||
|
}
|
||||||
30
home/coding/languages/python.nix
Normal file
30
home/coding/languages/python.nix
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# Python runtime with pip and uv.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.coding.languages.python;
|
||||||
|
in {
|
||||||
|
options.coding.languages.python = {
|
||||||
|
enable = mkEnableOption "Python runtime with pip and uv";
|
||||||
|
extraPackages = mkOption {
|
||||||
|
type = types.listOf types.package;
|
||||||
|
default = [];
|
||||||
|
example = literalExpression "[ pkgs.python3Packages.numpy ]";
|
||||||
|
description = "Additional Python packages to include";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.python3.withPackages (ps:
|
||||||
|
with ps; [
|
||||||
|
pip
|
||||||
|
uv
|
||||||
|
] ++ cfg.extraPackages))
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
20
home/coding/languages/rust-toolchain.nix
Normal file
20
home/coding/languages/rust-toolchain.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Rust toolchain — compiler, package manager, and language server.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.coding.languages.rustToolchain;
|
||||||
|
in {
|
||||||
|
options.coding.languages.rustToolchain.enable = mkEnableOption "Rust toolchain";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
rustc
|
||||||
|
cargo
|
||||||
|
rust-analyzer
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
19
home/coding/languages/typescript.nix
Normal file
19
home/coding/languages/typescript.nix
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# TypeScript support — language server and type checking tools.
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.coding.languages.typescript;
|
||||||
|
in {
|
||||||
|
options.coding.languages.typescript.enable = mkEnableOption "TypeScript support";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
typescript
|
||||||
|
typescript-language-server
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -17,6 +17,7 @@ in {
|
|||||||
# General
|
# General
|
||||||
typescript-language-server
|
typescript-language-server
|
||||||
tailwindcss-language-server
|
tailwindcss-language-server
|
||||||
|
pyrefly
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,13 @@ in
|
|||||||
};
|
};
|
||||||
lsp.enable = true;
|
lsp.enable = true;
|
||||||
packages.enable = true;
|
packages.enable = true;
|
||||||
|
languages = {
|
||||||
|
python.enable = true;
|
||||||
|
javascript.enable = true;
|
||||||
|
rustToolchain.enable = true;
|
||||||
|
go.enable = true;
|
||||||
|
typescript.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Gaming profile features
|
# Gaming profile features
|
||||||
|
|||||||
@@ -57,6 +57,13 @@ in
|
|||||||
zed.enable = true;
|
zed.enable = true;
|
||||||
};
|
};
|
||||||
lsp.enable = true;
|
lsp.enable = true;
|
||||||
|
languages = {
|
||||||
|
python.enable = true;
|
||||||
|
javascript.enable = true;
|
||||||
|
rustToolchain.enable = true;
|
||||||
|
go.enable = true;
|
||||||
|
typescript.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Gaming profile features
|
# Gaming profile features
|
||||||
|
|||||||
Reference in New Issue
Block a user