diff --git a/.conclaude.yaml b/.conclaude.yaml index e264519d..8705c47b 100644 --- a/.conclaude.yaml +++ b/.conclaude.yaml @@ -1,124 +1,159 @@ -# yaml-language-server: $schema=https://github.com/connix-io/conclaude/releases/latest/download/conclaude-schema.json -# Conclaude YAML Configuration - Complete Default Configuration -# This configuration defines how conclaude handles Claude Code hook events -# All supported options are shown below with their default values +# yaml-language-server: $schema=https://github.com/connerohnesorge/conclaude/releases/latest/download/conclaude-schema.json +# Conclaude Configuration Template +# +# This is a minimal example configuration file. +# For full documentation of all options, run: conclaude config --docs +# Or see the generated documentation from `cargo doc --open` -# Stop hook configuration - runs when Claude is about to stop +# Stop hook - runs when Claude is about to stop stop: - # Structured command format with optional custom error messages - # Each command can have its own error message, and control output display - commands: - - run: "git add ." - showStdout: true - message: "Git add failed - please fix errors before continuing" - - run: "nix flake check" - showStdout: false - showStderr: true - message: "Nix flake check failed - please fix errors before continuing" - # Examples: - # commands: - # - run: "echo 'Starting build...'" - # showStdout: true # User/Claude sees: "Starting build..." - # - # - run: "npm test" - # showStdout: true # Show test results to user/Claude - # showStderr: true # Show test errors to user/Claude - # message: "Tests failed - please fix failing tests before continuing" - # maxOutputLines: 100 # Limit output to last 100 lines (1-10000) - # - # - run: "npm run build" - # showStderr: true # Only show build errors to user/Claude, hide stdout - # message: "Build failed - please fix compilation errors" - # maxOutputLines: 50 # Limit build output to last 50 lines + commands: [] + # Example: + # - run: "npm test" + # showStdout: true + # showStderr: true + # showCommand: true # Show "Executing command X/Y: npm test" (default: true) + # message: "Tests failed" + # maxOutputLines: 100 + # timeout: 300 - # Infinite mode - allows Claude to continue automatically - # When enabled, Claude receives the infiniteMessage to continue working - # instead of ending the session after stop hook commands succeed infinite: false - - # Message to send when infinite mode is enabled infiniteMessage: "continue working on the task" -# Pre-tool-use hook configuration - runs before tools are executed -# All file protection rules are consolidated in this section +# Subagent stop hook - runs when subagents finish +subagentStop: + commands: {} + # Example: + # coder: + # - run: "npm run lint" + # showStdout: true + # showCommand: true # Show "Executing command X/Y: npm run lint" (default: true) + # message: "Linting failed" + # test*: + # - run: "npm test" + # showStderr: true + # showCommand: false # Hide the "Executing command..." line + +# Pre-tool-use hook - file protection and tool validation preToolUse: - # Prevent Claude from creating or modifying files at the repository root - # Helps maintain clean project structure + # Prevent files at repository root preventRootAdditions: true + # Custom message for root additions block (supports {file_path} and {tool} placeholders) + # Example: "Files must go in src/. Cannot create {file_path} using {tool}." + preventRootAdditionsMessage: null - # Files that Claude cannot edit, using glob patterns - # Supports various glob patterns for flexible file protection - # By default, conclaude's own config files are protected to prevent the AI - # from modifying guardrail settings - this is a security best practice + # Protected files (glob patterns) uneditableFiles: - - ".conclaude.yml" # Protect conclaude config from AI modification - - ".conclaude.yaml" # Alternative config extension - # Additional examples: - # uneditableFiles: - # - "./package.json" # specific file - # - "*.md" # file extension - # - "src/**/*.ts" # nested patterns - # - ".env*" # environment files - # - "docs/**" # entire directories - # - "{package,tsconfig}.json" # multiple specific files + - ".conclaude.yml" + - ".conclaude.yaml" + # Examples: + # - "*.lock" + # - pattern: ".env*" + # message: "Environment files contain secrets" + # + # Agent-specific protection examples (blocks specific subagents): + # - pattern: "spectr/changes/**/tasks.jsonc" + # message: "Task files managed by orchestrator" + # agent: "coder" # Only blocks coder subagent + # + # - pattern: "src/**/*.test.ts" + # message: "Test files managed by tester agent" + # agent: "code*" # Blocks coder, coder-v2, etc. + # + # - pattern: "docs/**" + # agent: "*" # Blocks all agents (same as omitting agent field) - # Prevent Claude from creating or modifying files that are git-ignored - # When enabled, files matching patterns in .gitignore will be protected - # Uses your existing .gitignore as the source of truth for file protection + # Prevent editing git-ignored files preventUpdateGitIgnored: false - # Tool usage validation rules - control which tools can be used on which files - # Allows fine-grained control over tool usage based on file patterns + # Tool usage rules toolUsageValidation: [] - # Examples: - # toolUsageValidation: - # - tool: "Write" - # pattern: "**/*.js" - # action: "allow" - # message: "Writing to JavaScript files is allowed" - # - tool: "*" - # pattern: ".env*" - # action: "block" - # message: "Environment files cannot be modified" + # Example: + # - tool: "Write" + # pattern: "**/*.js" + # action: "allow" + # - tool: "Bash" + # commandPattern: "git push --force*" + # action: "block" + # message: "Force push not allowed" + # + # Agent-scoped rules (only apply to specific agents): + # - tool: "Bash" + # pattern: "" + # commandPattern: "rm -rf *" + # action: "block" + # agent: "coder" + # message: "Coder agent cannot run destructive rm commands" + # - tool: "Write" + # pattern: "**/*.test.ts" + # action: "block" + # agent: "coder" + # message: "Coder agent should not modify test files" + # - tool: "*" + # pattern: "src/**" + # action: "block" + # agent: "test*" + # message: "Test agents cannot modify source files" + # + # Agent pattern examples: + # - agent: "coder" # Exact match - only "coder" subagent + # - agent: "test*" # Glob pattern - matches "tester", "test-runner" + # - agent: "*" # Wildcard - matches all agents (default if omitted) - # Directories where file additions are prevented (in addition to root) - # List of directory paths where new files cannot be created + # Directories where additions are prevented preventAdditions: [] - # Examples: - # preventAdditions: - # - "dist" - # - "build" - # - "node_modules" - - # Prevent editing of files with generation markers (enabled by default) - # Checks for common markers like "DO NOT EDIT", "Code generated by", etc. - preventGeneratedFileEdits: true - - # Custom message when blocking file edits with generation markers - # Available placeholders: {file_path}, {marker} - generatedFileMessage: null - # Example: - # generatedFileMessage: "Cannot modify {file_path} - it contains '{marker}' marker" + # Example: ["dist", "build"] -# System notifications configuration +# System notifications notifications: - # Enable system notifications for hook execution enabled: false - - # List of hook names that should trigger notifications - # Use ["*"] to receive notifications for all hooks - # Common hook names: "Stop", "PreToolUse", "PostToolUse", "SessionStart", "UserPromptSubmit", "Notification", "SubagentStop", "PreCompact" - hooks: [] - # Examples: - # hooks: ["*"] # All hooks - # hooks: ["Stop", "PreToolUse"] # Only specific hooks - # hooks: ["Stop"] # Only stop hook notifications - - # Show error notifications (hook failures, system errors) + hooks: [] # ["*"] for all, or ["Stop", "PreToolUse"] showErrors: false - - # Show success notifications (hook completion, successful operations) showSuccess: false - - # Show system event notifications (session start/end, configuration loaded) showSystemEvents: true + +# Permission request hook - auto-approve/deny tools +# Uncomment to enable: +# +# permissionRequest: +# default: deny # "allow" or "deny" +# allow: +# - "Read" +# - "Glob" +# - "Grep" +# - "Edit" +# - "Write" +# deny: +# - "BashOutput" +# - "KillShell" + +# User prompt submit hook - context injection based on prompt patterns +# Automatically prepends context when prompts match patterns +# Uncomment to enable: +# +# userPromptSubmit: +# contextRules: +# # Pattern-based context injection +# - pattern: "sidebar" +# prompt: | +# Make sure to read @.claude/contexts/sidebar.md before proceeding. +# +# # Multiple patterns with regex alternation +# - pattern: "auth|login|authentication" +# prompt: | +# Review the authentication patterns in @.claude/contexts/auth.md +# +# # Case-insensitive matching (using regex flag) +# - pattern: "(?i)database|sql|query" +# prompt: | +# Follow the database conventions in @.claude/contexts/database.md +# +# # Disable a rule temporarily +# - pattern: "test" +# prompt: "Run tests before proceeding" +# enabled: false +# +# # Explicit case-insensitive flag +# - pattern: "api" +# prompt: "Check API documentation first" +# caseInsensitive: true diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index c873d78c..b5074f52 100644 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -2,7 +2,7 @@ debug:disable_logs = false monitor=DP-1,1920x1080,0x0,1 monitor=eDP-1,2304x1440,1920x400,2 -$terminal = ghostty +$terminal = kitty $fileManager = dolphin $menu = rofi -show drun @@ -202,9 +202,3 @@ bindl = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle exec-once=hyprpaper exec-once=sh ~/.config/hypr/setup.sh - -exec-once = dconf write /org/gnome/desktop/interface/gtk-theme "'Adwaita'" -exec-once = dconf write /org/gnome/desktop/interface/icon-theme "'Flat-Remix-Red-Dark'" -exec-once = dconf write /org/gnome/desktop/interface/document-font-name "'Noto Sans Medium 11'" -exec-once = dconf write /org/gnome/desktop/interface/font-name "'Noto Sans Medium 11'" -exec-once = dconf write /org/gnome/desktop/interface/monospace-font-name "'Noto Sans Mono Medium 11'" diff --git a/.config/hypr/scripts/term.sh b/.config/hypr/scripts/term.sh index 12d85f60..d9ded503 100644 --- a/.config/hypr/scripts/term.sh +++ b/.config/hypr/scripts/term.sh @@ -1,2 +1,2 @@ # term launcher script as hyprland broke it in the config -ghostty +kitty diff --git a/.config/hypr/setup.sh b/.config/hypr/setup.sh index 721bd1b2..a72f8b9a 100644 --- a/.config/hypr/setup.sh +++ b/.config/hypr/setup.sh @@ -2,4 +2,3 @@ wl-clip-persist --clipboard regular determinate-nixd init -hyprshell run -vv & diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index 40038d1f..46d20a0d 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -27,3 +27,4 @@ active_tab_foreground #6c6c6c active_tab_background #000000 inactive_tab_foreground #303030 inactive_tab_background #000000 +map ctrl+shift+t new_tab_with_cwd diff --git a/.zshrc b/.zshrc index 566285d0..4b049663 100644 --- a/.zshrc +++ b/.zshrc @@ -44,6 +44,10 @@ fi eval "$(starship init zsh)" source <(carapace chmod zsh) +autoload -Uz edit-command-line +zle -N edit-command-line +bindkey '^x^e' edit-command-line + # cfi is find all ignoring .git alias cfi='cd $(find . -type d -path "./.git" -prune -o -type d -not -path "*/\.*" -print | fzf --reverse --preview "ls --color {}")' # cf is find all - shell function wrapper for cf program @@ -70,8 +74,11 @@ alias k='kubectl' alias nix-env='echo "panic: nix-env is disabled (#61)" >&2 && false' alias vim='nvim' alias v='nvim' +alias vf='nvimf' +alias vfi='nvimfi' alias os='spectr' alias osv='spectr validate --all --strict' +alias kl='klaude' # Load a few important annexes, without Turbo diff --git a/flake.lock b/flake.lock index 3afef216..903fd3fb 100644 --- a/flake.lock +++ b/flake.lock @@ -110,11 +110,11 @@ ] }, "locked": { - "lastModified": 1766398469, - "narHash": "sha256-vzC7Rb12qs1pVnuNbO8xUyEd2+hMvDI8maLjn8k/SN4=", + "lastModified": 1766775205, + "narHash": "sha256-BTI6TLv7gafyn/leGdfhgF9FW6ADOwheD+TNwUd22X4=", "owner": "Saghen", "repo": "blink.cmp", - "rev": "ceed1545929b74cf79b5a8950e7c415683bf690b", + "rev": "18712d9d292dd362067de74d3b54eb90ce860ba9", "type": "github" }, "original": { @@ -158,11 +158,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1766413978, - "narHash": "sha256-+NavaexqCMDRl0V2tTR2t/oisxAX8jeF8DN5DSc9bM0=", + "lastModified": 1767193636, + "narHash": "sha256-l74Eg7nNmq00h79wdLkrqkSp08WLmx/JG3cNZrwqpsw=", "owner": "connerohnesorge", "repo": "conclaude", - "rev": "b2b058db2d004c869c0c5a9e82c9522b680f3b51", + "rev": "a94a07904ef8fa8856d941031ae653119d2fb977", "type": "github" }, "original": { @@ -173,11 +173,11 @@ }, "crane": { "locked": { - "lastModified": 1766194365, - "narHash": "sha256-4AFsUZ0kl6MXSm4BaQgItD0VGlEKR3iq7gIaL7TjBvc=", + "lastModified": 1766774972, + "narHash": "sha256-8qxEFpj4dVmIuPn9j9z6NTbU+hrcGjBOvaxTzre5HmM=", "owner": "ipetkov", "repo": "crane", - "rev": "7d8ec2c71771937ab99790b45e6d9b93d15d9379", + "rev": "01bc1d404a51a0a07e9d8759cd50a7903e218c82", "type": "github" }, "original": { @@ -238,12 +238,12 @@ "nixpkgs": "nixpkgs_4" }, "locked": { - "lastModified": 1766177528, - "narHash": "sha256-Bl+p766mM7qNCZtMqmTz13RuUbOMKsFa+/vnGYoxgPk=", - "rev": "b159c082f0f9bdefa6c386189a13c5fa0734d8d8", - "revCount": 317, + "lastModified": 1766549083, + "narHash": "sha256-G1Hljg7vIBt8n9cxO382YAZWtZU/mYfQcg3icdNG8RQ=", + "rev": "ba8999fac986e70f52b4cba15047be7bbb7b6346", + "revCount": 318, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/determinate/3.15.0/019b3865-57a1-7d80-98c5-962fac29c404/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/determinate/3.15.1/019b4e8a-dc22-75db-aef5-a447efbb1a13/source.tar.gz" }, "original": { "type": "tarball", @@ -253,37 +253,37 @@ "determinate-nixd-aarch64-darwin": { "flake": false, "locked": { - "narHash": "sha256-vDaEQ5T4eA7kEPREmm68IVWGR6zT0aDL5slZxA6dkSc=", + "narHash": "sha256-uWDS94cAYprGj+AwuT42nuuDDicRLj1S0JwalZGeBRU=", "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/macOS" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/macOS" }, "original": { "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/macOS" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/macOS" } }, "determinate-nixd-aarch64-linux": { "flake": false, "locked": { - "narHash": "sha256-Hf4JsIv5G3IR0Q0RHGLSNdmDzFv97sVQQKwzY6A0vV4=", + "narHash": "sha256-uHBcZCh2/Bj5/88TDihupA336tSQDk7s5lVP66IDAX0=", "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/aarch64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/aarch64-linux" }, "original": { "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/aarch64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/aarch64-linux" } }, "determinate-nixd-x86_64-linux": { "flake": false, "locked": { - "narHash": "sha256-J+J4E02XpEl0ZkpzMbUmGCf6S4yk0gYCYmiGzZ058ik=", + "narHash": "sha256-y+l05H6GNv/1WcrMztDYem8VBWqjc9gNg4WjeQ1PQxo=", "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/x86_64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/x86_64-linux" }, "original": { "type": "file", - "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.0/x86_64-linux" + "url": "https://install.determinate.systems/determinate-nixd/tag/v3.15.1/x86_64-linux" } }, "disko": { @@ -406,11 +406,11 @@ "flake-compat_3": { "flake": false, "locked": { - "lastModified": 1765121682, - "narHash": "sha256-4VBOP18BFeiPkyhy9o4ssBNQEvfvv1kXkasAYd0+rrA=", + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", "owner": "edolstra", "repo": "flake-compat", - "rev": "65f23138d8d09a92e30f1e5c87611b23ef451bf3", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", "type": "github" }, "original": { @@ -467,6 +467,24 @@ "type": "github" } }, + "flake-fmt": { + "inputs": { + "nixpkgs": "nixpkgs_10" + }, + "locked": { + "lastModified": 1767005043, + "narHash": "sha256-qAf0gop1s4NjZhL/e78o8FX8go92v+NA20cCg+3KQ+0=", + "owner": "Mic92", + "repo": "flake-fmt", + "rev": "df8d53c329c0a57e74910d2b6f0259c07f2e2531", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "flake-fmt", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" @@ -758,11 +776,11 @@ "zon2nix": "zon2nix" }, "locked": { - "lastModified": 1766357191, - "narHash": "sha256-FsXCeHAvzdo4lSSXZdSWV2q5ADkTXNtBKlfh3OuIme8=", + "lastModified": 1767190615, + "narHash": "sha256-bo41fSxjMmIRyQ/8AWfc6HznYt1pn+nCNyChUVPOpro=", "owner": "ghostty-org", "repo": "ghostty", - "rev": "c355a94b123b0da0b66ff9e8af784140b6102400", + "rev": "d3666d6ef94985105567a5f8022305d64c76c762", "type": "github" }, "original": { @@ -909,11 +927,11 @@ ] }, "locked": { - "lastModified": 1766387499, - "narHash": "sha256-AjK3/UKDzeXFeYNLVBaJ3+HLE9he1g5UrlNd4/BM3eA=", + "lastModified": 1767104570, + "narHash": "sha256-GKgwu5//R+cLdKysZjGqvUEEOGXXLdt93sNXeb2M/Lk=", "owner": "nix-community", "repo": "home-manager", - "rev": "527ad07e6625302b648ed3b28c34b62a79bd103e", + "rev": "e4e78a2cbeaddd07ab7238971b16468cc1d14daf", "type": "github" }, "original": { @@ -1022,11 +1040,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1766422408, - "narHash": "sha256-eWwTRcHCo2E1RwUKn4NcBrI9P8OCSEwBRhCp8/MJrbI=", + "lastModified": 1767186011, + "narHash": "sha256-Ca+4YU35PS7MjsnNtGxNDMmCYU3nbFDzWfMPl4yYN4s=", "owner": "hyprwm", "repo": "hyprland", - "rev": "abffe75088e2d776e14e5dbd726a835fa157df9a", + "rev": "214fdb099ca84435196a0f06c816835514c3e8e3", "type": "github" }, "original": { @@ -1327,12 +1345,12 @@ "nixpkgs-regression": "nixpkgs-regression" }, "locked": { - "lastModified": 1766174426, - "narHash": "sha256-0ZofAQZNgg5nfIKsVb7g4It6ufmIyLtfFRPOf+6WRkk=", - "rev": "15d6091194b5b90d292e8d6283db77f09c303b1e", - "revCount": 24285, + "lastModified": 1766546676, + "narHash": "sha256-GsC52VFF9Gi2pgP/haQyPdQoF5Qe2myk1tsPcuJZI28=", + "rev": "51dacdd248e8071cd0243a8245c8c42ac1f33307", + "revCount": 24299, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.15.0/019b3854-cca6-7298-a91c-0fd8551a7270/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nix-src/3.15.1/019b4e84-d036-75db-b6c6-6bc2e2035c53/source.tar.gz" }, "original": { "type": "tarball", @@ -1350,16 +1368,16 @@ ] }, "locked": { - "lastModified": 1766414073, - "narHash": "sha256-ouDF+KcSEsikZY5T964mDem413d41vFUdBwGip1FVCo=", + "lastModified": 1767192721, + "narHash": "sha256-+hD5e3GdzNgY1ijeWmt1ySjjOfWEs3dWz/h/6wSBlJs=", "owner": "numtide", - "repo": "nix-ai-tools", - "rev": "18f8e4fe64975970057c7f4cc5531a3aff938805", + "repo": "llm-agents.nix", + "rev": "0cfdf2f732581c50e11735bdb5b1200cdcab4a1d", "type": "github" }, "original": { "owner": "numtide", - "repo": "nix-ai-tools", + "repo": "llm-agents.nix", "type": "github" } }, @@ -1372,11 +1390,11 @@ "treefmt-nix": "treefmt-nix_3" }, "locked": { - "lastModified": 1766198597, - "narHash": "sha256-VkjBi1dRm3wTtuYagGJ4HI2qa1sIX5nkkQa+bcVwlWc=", + "lastModified": 1767149370, + "narHash": "sha256-Xa8uKsEUSNPm1l8prRjcwyorVedXME4XYF8CzyPitT4=", "owner": "numtide", "repo": "nix-auth", - "rev": "3dfa1ca60ca77bf4717c66bf0e606a3f4dc04ef4", + "rev": "ce97117b195d45eaffc310ddb71b1375013d6b96", "type": "github" }, "original": { @@ -1392,11 +1410,11 @@ ] }, "locked": { - "lastModified": 1766038392, - "narHash": "sha256-ht/GuKaw5NT3M12xM+mkUtkSBVtzjJ8IHIy6R/ncv9g=", + "lastModified": 1767028240, + "narHash": "sha256-0/fLUqwJ4Z774muguUyn5t8AQ6wyxlNbHexpje+5hRo=", "owner": "nix-darwin", "repo": "nix-darwin", - "rev": "5fb45ece6129bd7ad8f7310df0ae9c00bae7c562", + "rev": "c31afa6e76da9bbc7c9295e39c7de9fca1071ea1", "type": "github" }, "original": { @@ -1433,11 +1451,11 @@ ] }, "locked": { - "lastModified": 1766391426, - "narHash": "sha256-m9jNkCcD6i2Taiuds837GTMlXDeya57g0i7y4FoZnCM=", + "lastModified": 1766997865, + "narHash": "sha256-pcmoWAlf/CSDFNptUAYKG3k8FwGNYSJBDF6li9+y+cI=", "owner": "Mic92", "repo": "nix-ld", - "rev": "5c2026ba1a0364d8bab1a59ce416efb3a51cb4bb", + "rev": "f388fe13b4370336982c53916744028465fbfc81", "type": "github" }, "original": { @@ -1472,11 +1490,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1764440730, - "narHash": "sha256-ZlJTNLUKQRANlLDomuRWLBCH5792x+6XUJ4YdFRjtO4=", + "lastModified": 1767185284, + "narHash": "sha256-ljDBUDpD1Cg5n3mJI81Hz5qeZAwCGxon4kQW3Ho3+6Q=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "9154f4569b6cdfd3c595851a6ba51bfaa472d9f3", + "rev": "40b1a28dce561bea34858287fbb23052c3ee63fe", "type": "github" }, "original": { @@ -1613,18 +1631,19 @@ }, "nixpkgs_10": { "locked": { - "lastModified": 1747958103, - "narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "fe51d34885f7b5e3e7b59572796e1bcb427eccb1", - "type": "github" + "lastModified": 1766840161, + "narHash": "sha256-Ss/LHpJJsng8vz1Pe33RSGIWUOcqM1fjrehjUkdrWio=", + "ref": "nixpkgs-unstable", + "rev": "3edc4a30ed3903fdf6f90c837f961fa6b49582d1", + "shallow": true, + "type": "git", + "url": "https://github.com/NixOS/nixpkgs" }, "original": { - "owner": "nixos", "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" + "shallow": true, + "type": "git", + "url": "https://github.com/NixOS/nixpkgs" } }, "nixpkgs_11": { @@ -1675,12 +1694,12 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1765772535, - "narHash": "sha256-aq+dQoaPONOSjtFIBnAXseDm9TUhIbe215TPmkfMYww=", - "rev": "09b8fda8959d761445f12b55f380d90375a1d6bb", - "revCount": 911985, + "lastModified": 1766314097, + "narHash": "sha256-laJftWbghBehazn/zxVJ8NdENVgjccsWAdAqKXhErrM=", + "rev": "306ea70f9eb0fb4e040f8540e2deab32ed7e2055", + "revCount": 914780, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nixpkgs-weekly/0.1.911985%2Brev-09b8fda8959d761445f12b55f380d90375a1d6bb/019b25ab-7c11-79e0-a0b0-c94d455b7190/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/nixpkgs-weekly/0.1.914780%2Brev-306ea70f9eb0fb4e040f8540e2deab32ed7e2055/019b49b8-ed0f-724e-bdaf-5fd90cc1c590/source.tar.gz" }, "original": { "type": "tarball", @@ -1721,11 +1740,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1766309749, - "narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=", + "lastModified": 1766902085, + "narHash": "sha256-coBu0ONtFzlwwVBzmjacUQwj3G+lybcZ1oeNSQkgC0M=", "owner": "nixos", "repo": "nixpkgs", - "rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816", + "rev": "c0b0e0fddf73fd517c3471e546c0df87a42d53f4", "type": "github" }, "original": { @@ -2047,11 +2066,11 @@ ] }, "locked": { - "lastModified": 1766289575, - "narHash": "sha256-BOKCwOQQIP4p9z8DasT5r+qjri3x7sPCOq+FTjY8Z+o=", + "lastModified": 1766894905, + "narHash": "sha256-pn8AxxfajqyR/Dmr1wnZYdUXHgM3u6z9x0Z1Ijmz2UQ=", "owner": "Mic92", "repo": "sops-nix", - "rev": "9836912e37aef546029e48c8749834735a6b9dad", + "rev": "61b39c7b657081c2adc91b75dd3ad8a91d6f07a7", "type": "github" }, "original": { @@ -2062,18 +2081,19 @@ }, "spectr": { "inputs": { - "flake-utils": "flake-utils_7", + "flake-fmt": "flake-fmt", + "flake-utils": "flake-utils_6", "nixpkgs": [ "nixpkgs" ], "treefmt-nix": "treefmt-nix_6" }, "locked": { - "lastModified": 1766161997, - "narHash": "sha256-4G74MZQHW9hPgl65TdG+YUkKe09ZvmSZVK4BIm0d/1U=", + "lastModified": 1767195793, + "narHash": "sha256-JvjmdN+yxtAxKP5KSJDlu0u7K9bpk8RwWOT9bAnM7SY=", "owner": "connerohnesorge", "repo": "spectr", - "rev": "a65dfe72497f879d5269233e1e1b90f9f0c2e2c9", + "rev": "77b770e9d591e43d83e83b9966f4b2ef01bc00d2", "type": "github" }, "original": { @@ -2105,12 +2125,12 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1766360762, - "narHash": "sha256-g0aHXl+htuBpBpYxeXemocARRr1xtyNPzIIV1/tofAc=", - "rev": "c53b4a548a75895c69811a719bb4ed750ea41a17", - "revCount": 1313, + "lastModified": 1766603026, + "narHash": "sha256-J2DDdRqSU4w9NNgkMfmMeaLIof5PXtS9RG7y6ckDvQE=", + "rev": "551df12ee3ebac52c5712058bd97fd9faa4c3430", + "revCount": 1318, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/danth/stylix/0.1.1313%2Brev-c53b4a548a75895c69811a719bb4ed750ea41a17/019b434f-2a24-7c57-9e57-59ef16ec3c76/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/danth/stylix/0.1.1318%2Brev-551df12ee3ebac52c5712058bd97fd9faa4c3430/019b51c0-1805-7e2a-a9d7-1d7809852b7d/source.tar.gz" }, "original": { "type": "tarball", @@ -2410,11 +2430,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1766000401, - "narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=", + "lastModified": 1767122417, + "narHash": "sha256-yOt/FTB7oSEKQH9EZMFMeuldK1HGpQs2eAzdS9hNS/o=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd", + "rev": "dec15f37015ac2e774c84d0952d57fcdf169b54d", "type": "github" }, "original": { @@ -2490,11 +2510,11 @@ ] }, "locked": { - "lastModified": 1766000401, - "narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=", + "lastModified": 1767122417, + "narHash": "sha256-yOt/FTB7oSEKQH9EZMFMeuldK1HGpQs2eAzdS9hNS/o=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd", + "rev": "dec15f37015ac2e774c84d0952d57fcdf169b54d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index dfbb44ff..7e4a7105 100644 --- a/flake.nix +++ b/flake.nix @@ -20,7 +20,7 @@ }; nix-ai-tools = { - url = "github:numtide/nix-ai-tools"; + url = "github:numtide/llm-agents.nix"; inputs.nixpkgs.follows = "nixpkgs"; inputs.treefmt-nix.follows = "treefmt-nix"; }; diff --git a/hosts/mac-nix/default.nix b/hosts/mac-nix/default.nix index 010da7c7..64fec178 100644 --- a/hosts/mac-nix/default.nix +++ b/hosts/mac-nix/default.nix @@ -1,32 +1,3 @@ -/** -# Host Configuration: mac-nix (Conner's MacBook Air) - -## Description -Primary development machine configuration for macOS (Apple Silicon). -This host runs nix-darwin for package management. - -## Host Type -- Type: laptop -- System: aarch64-darwin (Apple Silicon) -- Rice: dark theme - -## Key Features -- **Engineer role**: Development tools and environments -- **macOS integration**: Native macOS apps (Aerospace, Raycast, Xcodes) -- **Blink shell**: Terminal emulator with fuzzy search - -## Platform-specific Configurations -### Darwin -- Touch ID for sudo authentication -- Custom dock and trackpad settings -- Nix Apps integration in /Applications -- Container support via gvproxy - -## Enabled Programs -- dx: Flake.nix editor -- catls: Ruby-based file browser -- convert_img: Image conversion utility -*/ { delib, inputs, diff --git a/hosts/oxe-nixos/default.nix b/hosts/oxe-nixos/default.nix index eca3c2a3..8cca8a2c 100644 --- a/hosts/oxe-nixos/default.nix +++ b/hosts/oxe-nixos/default.nix @@ -1,39 +1,3 @@ -/** -# Host Configuration: oxe-nixos - -## Description -Server/workstation configuration running NixOS with full desktop capabilities. -This host is configured as a server type but includes a complete Hyprland -desktop environment for when GUI access is needed. - -## Host Type -- Type: server -- System: x86_64-linux -- Rice: empty theme - -## Key Features -- **Full desktop server**: Hyprland Wayland compositor -- **AMD graphics**: Optimized for AMD GPUs -- **Audio/Bluetooth**: Full multimedia support -- **Development environment**: Engineer role enabled -- **Privacy tools**: Darknet features enabled -- **Secrets management**: Secure credential handling -- **Ollama**: Go based AI LLM Runner - -## Hardware Support -- AMD GPU drivers and optimizations -- Hardware configuration imported from ./hardware.nix - -## System Configuration -- Locale: en_US.UTF-8 (Chicago timezone) -- RTKit for real-time audio -- libinput for input device handling - -## Security -- Determinate Systems hardening -- Secrets management enabled -- Limited boot history (4 generations) -*/ { delib, inputs, diff --git a/modules/features/darknet.nix b/modules/features/darknet.nix index 587ce161..cc52e7f4 100644 --- a/modules/features/darknet.nix +++ b/modules/features/darknet.nix @@ -1,50 +1,3 @@ -/** -# Feature Module: Darknet (Privacy & Security) - -## Description -Enhanced privacy and security configuration for systems requiring -secure network access and protection against intrusion attempts. -Provides VPN connectivity and automated threat response. - -## Platform Support -- ✅ NixOS -- ❌ Darwin (would require different tooling) - -## What This Enables -- **Tailscale**: Zero-config VPN for secure mesh networking -- **Fail2ban**: Intrusion prevention system that blocks malicious IPs - -## Security Features -### Tailscale VPN -- Secure peer-to-peer connectivity -- Zero-trust network architecture -- Automatic NAT traversal -- End-to-end encryption -- Access control lists (ACLs) - -### Fail2ban Protection -- Monitors system logs for intrusion attempts -- Automatically bans IPs after failed login attempts -- Protects SSH, web services, and other exposed services -- Configurable ban duration and thresholds - -## Common Use Cases -- Secure remote access to home network -- Protection for internet-facing services -- Private networking between devices -- Enhanced security for servers -- Defense against brute force attacks - -## Network Security -- Creates secure overlay network with Tailscale -- Provides defense-in-depth with fail2ban -- Suitable for both personal and professional use - -## Management -- Tailscale: `tailscale status`, `tailscale up` -- Fail2ban: `fail2ban-client status` -- Check banned IPs: `fail2ban-client status sshd` -*/ {delib, ...}: let inherit (delib) singleEnableOption; in diff --git a/modules/features/engineer.nix b/modules/features/engineer.nix index de24cb61..545e5914 100644 --- a/modules/features/engineer.nix +++ b/modules/features/engineer.nix @@ -35,6 +35,7 @@ in cldk.enable = true; cldo.enable = true; clds.enable = true; + glaude.enable = true; latest.enable = true; ghostty.enable = true; dx.enable = true; @@ -87,7 +88,6 @@ in unixtools.xxd ffmpeg tree - fdtools stdenv.cc xdg-utils zip @@ -136,6 +136,9 @@ in doppler gh tea + gh-dash + radicle-tui + radicle-desktop # Emulation docker @@ -155,6 +158,7 @@ in inputs.kiro-flake.packages."${pkgs.stdenv.hostPlatform.system}".default inputs.conclaude.packages."${pkgs.stdenv.hostPlatform.system}".default inputs.nix-ai-tools.packages."${pkgs.stdenv.hostPlatform.system}".crush + inputs.nix-ai-tools.packages."${pkgs.stdenv.hostPlatform.system}".amp inputs.nordvpn.packages."${pkgs.stdenv.hostPlatform.system}".default inputs.zen-browser.packages."${pkgs.stdenv.hostPlatform.system}".default inputs.blink.packages."${pkgs.stdenv.hostPlatform.system}".default diff --git a/modules/features/hyprland.nix b/modules/features/hyprland.nix index 43505408..a3306b9c 100644 --- a/modules/features/hyprland.nix +++ b/modules/features/hyprland.nix @@ -1,78 +1,3 @@ -/** -# Feature Module: Hyprland Desktop Environment - -## Description -Complete Hyprland Wayland compositor setup with a modern, tiling window -manager environment. Provides a full desktop experience with animations, -effects, and extensive customization options for power users who prefer -keyboard-driven workflows. - -## Platform Support -- ✅ NixOS -- ❌ Darwin (Wayland compositors are Linux-only) - -## What This Enables -- **Hyprland**: Dynamic tiling Wayland compositor -- **Terminal Emulators**: Ghostty, Kitty, Alacritty, Foot -- **Application Launchers**: Rofi with plugins, Walker -- **Status Bars**: Waybar with custom styling -- **Notifications**: Dunst notification daemon -- **Media Controls**: Audio/video control integration -- **Screenshot Tools**: Grim, Slurp, Grimblast - -## Core Components -### Window Management -- Dynamic tiling with smooth animations -- Multiple workspace support -- Window rules and special workspaces -- Picture-in-picture mode -- Fullscreen and floating windows - -### Desktop Utilities -- **hyprcursor**: Cursor theme support -- **hyprpaper**: Wallpaper manager -- **hyprsunset**: Blue light filter -- **hyprnotify**: Native notifications - -### Terminal Emulators -- Ghostty: Modern GPU-accelerated terminal -- Kitty: Feature-rich terminal with images - -### Application Launcher (Rofi) -- Application launcher -- Window switcher -- Power menu -- Calculator plugin -- Clipboard manager -- Password manager integration - -### Media & Screen Tools -- wl-clipboard: Wayland clipboard utilities -- grim/slurp: Screenshot and region selection -- grimblast: Screenshot wrapper with effects -- playerctl: Media player control -- pavucontrol: Audio control GUI - -## Display Protocols -- Native Wayland support -- XWayland for legacy X11 applications -- UWSM: Universal Wayland Session Manager -- GPU acceleration with EGL/GLES - -## Integration Points -- Works with audio/bluetooth features -- Integrates with engineer tools -- Theme support via rice system -- Hardware acceleration (AMD/NVIDIA) - -## Key Bindings -Configured through Hyprland config with: -- Super key as primary modifier -- Vim-like navigation -- Application shortcuts -- Workspace management -- Window manipulation -*/ { delib, pkgs, @@ -146,13 +71,26 @@ in }; programs = { - dconf.enable = true; + dconf = { + enable = true; + profiles.user.databases = [ + { + settings."org/gnome/desktop/interface" = { + gtk-theme = "Adwaita"; + icon-theme = "Flat-Remix-Red-Dark"; + font-name = "Noto Sans Medium 11"; + document-font-name = "Noto Sans Medium 11"; + monospace-font-name = "Noto Sans Mono Medium 11"; + }; + } + ]; + }; ydotool.enable = true; hyprland = { package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.default; portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; enable = true; - withUWSM = true; + # withUWSM = true; xwayland.enable = true; }; }; @@ -160,12 +98,14 @@ in security = { pam.services = { sddm.enableGnomeKeyring = true; + gdm-password.enableGnomeKeyring = true; gdm.enableGnomeKeyring = true; }; }; services = { gnome.gnome-keyring.enable = true; + desktopManager.gnome.enable = true; gvfs.enable = true; # Mount, trash, and other functionalities tumbler.enable = true; # Thumbnails dbus = { @@ -175,7 +115,6 @@ in upower.enable = true; xserver = { enable = true; - desktopManager.gnome.enable = true; }; displayManager.gdm = { enable = lib.mkDefault true; diff --git a/modules/features/nvidia.nix b/modules/features/nvidia.nix index bff79c6b..4567bd0b 100644 --- a/modules/features/nvidia.nix +++ b/modules/features/nvidia.nix @@ -1,80 +1,3 @@ -/** -# Feature Module: NVIDIA Graphics Support - -## Description -Comprehensive NVIDIA GPU support with proprietary drivers, power management, -and Optimus laptop configurations. Optimized for both desktop and laptop -systems with NVIDIA graphics, including hybrid Intel+NVIDIA setups. - -## Platform Support -- ✅ NixOS -- ❌ Darwin (NVIDIA drivers not available on macOS) - -## What This Enables -- **Proprietary NVIDIA Drivers**: Closed-source drivers for best performance -- **PRIME Offloading**: Dynamic GPU switching for laptops -- **Power Management**: Fine-grained control to save battery -- **CUDA Support**: GPU compute capabilities -- **Hardware Video Acceleration**: NVENC/NVDEC -- **Vulkan/OpenGL**: Full 3D acceleration - -## Key Features -### PRIME Technology -- **Reverse Sync**: Better performance for external displays -- **Offload Mode**: Run specific apps on NVIDIA GPU -- **Dynamic Switching**: Automatic GPU selection -- **Power Saving**: NVIDIA GPU powers down when idle - -### Power Management -- **Fine-grained Control**: Per-component power management -- **Dynamic Power**: Adjusts based on workload -- **Suspend/Resume**: Proper sleep state handling -- **Battery Optimization**: Extends laptop battery life - -### Graphics Stack -- Full OpenGL support with GLX -- Vulkan with ray tracing (RTX cards) -- CUDA toolkit compatibility -- OpenCL compute support -- Hardware video encoding/decoding - -## Hardware Configurations -### Desktop Systems -- Single NVIDIA GPU setup -- Multi-GPU SLI configurations -- Professional Quadro cards - -### Laptop Systems (Optimus) -- Intel integrated + NVIDIA discrete -- AMD integrated + NVIDIA discrete -- External display support via NVIDIA -- Dynamic power management - -## Common Use Cases -- CUDA development and compute -- Machine learning workloads -- Video editing with NVENC -- 3D rendering and CAD -- Multiple high-resolution displays - -## Configuration Notes -- Uses proprietary drivers (open = false) -- PRIME configured per-host (see hosts/) -- Wayland support via XWayland -- May require kernel parameters - -## Troubleshooting -- Check `nvidia-smi` for GPU status -- Use `nvidia-offload ` for PRIME -- Monitor temps with `nvidia-settings` -- Power state: `/sys/bus/pci/devices/` - -## Performance Tips -- Enable Force Composition Pipeline for tearing -- Use `__NV_PRIME_RENDER_OFFLOAD=1` for offloading -- Configure TDP limits for efficiency -- Enable GPU boost for performance -*/ { delib, pkgs, diff --git a/modules/features/ollama.nix b/modules/features/ollama.nix index 316ba337..672bd483 100644 --- a/modules/features/ollama.nix +++ b/modules/features/ollama.nix @@ -1,19 +1,3 @@ -/** -* Ollama Feature Module -* -* Enables Ollama, a local LLM inference server, with automatic hardware acceleration -* detection and Open WebUI integration for a complete local AI development experience. -* -* Features: -* - Automatic hardware acceleration (NVIDIA CUDA, AMD ROCm, or CPU fallback) -* - Pre-configured with gpt-oss:20b model loading -* - Open WebUI web interface for model interaction -* - NixOS service integration with proper systemd management -* -* Dependencies: -* - Automatically detects myconfig.features.nvidia or myconfig.features.amd for acceleration -* - Only available on NixOS (requires systemd services) -*/ { delib, pkgs, diff --git a/modules/features/power-efficient.nix b/modules/features/power-efficient.nix index 9aa7eb35..55913086 100644 --- a/modules/features/power-efficient.nix +++ b/modules/features/power-efficient.nix @@ -1,61 +1,3 @@ -/** -# Feature Module: Power Efficiency - -## Description -Optimizes system power consumption for laptops and mobile devices. -Enables advanced power management with TLP (TLP Linux Advanced Power -Management) while disabling the simpler power-profiles-daemon to -avoid conflicts. - -## Platform Support -- ✅ NixOS -- ❌ Darwin (macOS has native power management) - -## What This Enables -- **TLP**: Advanced power management for battery life optimization -- **Disables**: power-profiles-daemon (prevents conflicts) - -## TLP Features -- CPU frequency scaling and governor selection -- Disk APM level and spin down timeout -- SATA aggressive link power management -- PCI Express active state power management -- WiFi, Bluetooth, and WWAN power saving -- USB autosuspend with device blacklisting -- Audio codec power management -- Battery charge thresholds (ThinkPads) - -## Power Optimization -- Automatic switching between AC and battery profiles -- Processor boost control based on power source -- Turbo boost limitation on battery -- Runtime power management for PCI devices -- Optimal settings for SSDs and HDDs - -## Benefits -- Extended battery life (typically 20-30% improvement) -- Reduced heat generation -- Quieter operation (less fan activity) -- Automatic profile switching -- No manual intervention required - -## Common Use Cases -- Laptops requiring maximum battery life -- Mobile workstations -- Ultrabooks with limited battery capacity -- Devices used frequently on battery power - -## Note -TLP is chosen over power-profiles-daemon for its more comprehensive -and fine-grained control over power management parameters. It provides -better battery life optimization at the cost of slightly more complex -configuration. - -## Management -- Check status: `tlp-stat` -- Force battery mode: `tlp bat` -- Force AC mode: `tlp ac` -*/ {delib, ...}: let inherit (delib) singleEnableOption; in diff --git a/modules/features/secrets.nix b/modules/features/secrets.nix index cacf7e3b..1eb0f5b6 100644 --- a/modules/features/secrets.nix +++ b/modules/features/secrets.nix @@ -1,61 +1,3 @@ -/** -# Feature Module: Secrets Management - -## Description -Secure credential and secrets management tools for handling sensitive -data like passwords, API keys, and certificates. Currently provides -Proton Pass integration with SOPS prepared for future secret operations. - -## Platform Support -- ✅ NixOS -- ❌ Darwin (would need platform-specific adaptations) - -## What This Enables -- **Proton Pass**: Secure password manager from Proton -- **SOPS** (commented): Secrets operations for configuration files - -## Current Tools -### Proton Pass -- End-to-end encrypted password manager -- Integration with Proton ecosystem -- Secure password generation -- Cross-platform synchronization -- Zero-knowledge architecture - -## Planned Features (SOPS) -- Encrypted secrets in Git repositories -- Age/GPG encryption support -- Integration with Nix configurations -- Secure secret deployment -- Multi-user secret sharing - -## Security Model -- Client-side encryption -- Zero-knowledge proof -- No plaintext secrets in configuration -- Secure secret injection at runtime - -## Common Use Cases -- Personal password management -- API key storage -- Database credentials -- Certificate management -- Team secret sharing - -## Best Practices -- Never commit plaintext secrets -- Use strong master passwords -- Enable two-factor authentication -- Regularly rotate credentials -- Audit access logs - -## Future Integration -SOPS integration will enable: -- Encrypted secrets in nix configs -- Automatic secret decryption on activation -- Git-friendly encrypted files -- Team secret management workflows -*/ { delib, pkgs, diff --git a/modules/features/student.nix b/modules/features/student.nix index 4a6466c6..c91f8455 100644 --- a/modules/features/student.nix +++ b/modules/features/student.nix @@ -1,60 +1,3 @@ -/** -# Feature Module: Student Tools - -## Description -Academic and educational software suite for students. Provides essential -tools for document creation, research, and academic work. Currently -includes LibreOffice with room for expansion to other academic tools. - -## Platform Support -- ✅ NixOS -- ✅ Darwin (prepared but no packages defined yet) - -## What This Enables -- **LibreOffice**: Complete office suite for documents, spreadsheets, presentations - -## LibreOffice Components -- Writer: Word processing for essays and reports -- Calc: Spreadsheet for data analysis and calculations -- Impress: Presentations for academic projects -- Draw: Vector graphics and diagrams -- Math: Formula editor for scientific notation -- Base: Database management for research data - -## Potential Additions -- Note-taking applications (Obsidian, Logseq) -- Reference managers (Zotero, Mendeley) -- LaTeX environment for academic papers -- Scientific calculators and plotting tools -- Mind mapping software -- PDF annotation tools -- Language learning applications - -## File Format Support -- Native ODF formats (.odt, .ods, .odp) -- Microsoft Office compatibility (.docx, .xlsx, .pptx) -- PDF export with embedded fonts -- Legacy format support - -## Common Use Cases -- Writing academic papers and essays -- Creating presentations for classes -- Data analysis for research projects -- Collaborative document editing -- Creating study materials -- Managing bibliographies - -## Academic Workflow -- Document templates for common formats -- Citation and bibliography support -- Track changes for peer review -- Export to standard academic formats - -## Note -This module is designed to be extended with additional -academic tools based on specific field requirements -(STEM, humanities, social sciences, etc.) -*/ { delib, pkgs, diff --git a/modules/features/zshell.nix b/modules/features/zshell.nix index 3d904a48..879a4655 100644 --- a/modules/features/zshell.nix +++ b/modules/features/zshell.nix @@ -1,63 +1,3 @@ -/** -# Feature Module: Modern Shell Environment (Zsh-focused) - -## Description -Provides a comprehensive modern shell environment centered around Zsh with -enhanced CLI tools, productivity utilities, and developer-focused enhancements. -This module includes modern replacements for traditional Unix tools and -powerful shell integrations for improved workflow efficiency. - -## Platform Support -- ✅ NixOS (full support) -- ✅ Darwin (full support) - -## What This Enables -- **Modern CLI Tools**: Enhanced replacements for ls, cat, grep, find, etc. -- **Shell Enhancement**: Starship prompt, Zsh completions, history management -- **Navigation**: fzf fuzzy finder, zoxide smart cd, directory jumping -- **Development Tools**: direnv, git, version managers, text processing -- **Terminal Experience**: bat syntax highlighting, delta git diffs - -## Key Tools Included -### Navigation & Search -- `fzf` - Fuzzy finder for files, history, processes -- `fd` - Fast, user-friendly alternative to find -- `ripgrep` - Ultra-fast text search tool -- `zoxide` - Smart cd command that learns your habits - -### Text & File Processing -- `bat` - Cat with syntax highlighting and Git integration -- `eza` - Modern ls replacement with Git status -- `delta` - Syntax-highlighted git diff viewer -- `jq` - JSON processor -- `tealdeer` - Fast tldr implementation - -### Shell & Environment -- `starship` - Cross-shell prompt with Git and context info -- `atuin` - Enhanced shell history with sync capability -- `carapace` - Multi-shell completion engine -- `zinit` - Zsh plugin manager - -### Development Environment -- `direnv` - Environment switcher for projects -- `git` - Version control system -- `uv` - Fast Python package installer -- `stow` - Symlink farm manager - -## Integration Notes -- Automatically enabled by `engineer.nix` feature -- Provides foundation tools used by other development features -- Cross-platform package list ensures consistency across NixOS and Darwin - -## Performance Characteristics -- Minimal startup overhead with efficient tool selection -- Tools chosen for speed and modern UX improvements -- Smart caching and indexing where applicable (atuin, zoxide) - -## Dependencies -This is a foundational module with minimal external dependencies, -designed to be enabled by higher-level feature modules like `engineer.nix`. -*/ { delib, pkgs, diff --git a/modules/programs/catls/catls.nix b/modules/programs/catls/catls.nix index 4884cb3c..c413cf9a 100644 --- a/modules/programs/catls/catls.nix +++ b/modules/programs/catls/catls.nix @@ -1,53 +1,3 @@ -/** -# Program Module: catls (Enhanced File Browser) - -## Description -A Go-based enhanced file listing utility that provides XML-formatted -output of directory contents with file filtering and pattern matching. -Useful for code analysis and file content inspection. - -## Platform Support -- ✅ NixOS -- ✅ Darwin - -## Features -- XML-formatted output -- Pattern matching for file inclusion/exclusion -- Content filtering with glob patterns -- Binary file detection -- File type detection -- Recursive directory traversal -- Line number display -- Debug mode - -## Implementation -- **Language**: Go 1.24+ -- **Framework**: Cobra CLI -- **Source**: ./main.go, ./cmd/root.go -- **Dependencies**: github.com/spf13/cobra -- **Build**: pkgs.buildGoModule - -## Usage -```bash -catls # List current directory -catls /path/to/dir # List specific directory -catls -r # Recursive listing -catls --globs "*.py" # Include only Python files -catls --pattern "*import*" # Show only lines with imports -catls -n # Show line numbers -``` - -## Common Use Cases -- Code analysis and inspection -- File content search and filtering -- Documentation generation -- Codebase exploration - -## Configuration -Enabled via: -- `myconfig.programs.catls.enable = true` -- Or automatically with engineer feature -*/ { delib, pkgs, diff --git a/modules/programs/cf/default.nix b/modules/programs/cf/default.nix index ce972b0f..77b6c9a7 100644 --- a/modules/programs/cf/default.nix +++ b/modules/programs/cf/default.nix @@ -1,210 +1,3 @@ -/** -# Program Module: cf (Change Directory Fuzzy) - -## Description -A lightweight interactive fuzzy directory navigator that provides instant directory -selection with preview. Changes to selected directories with a streamlined, efficient -workflow. - -## Platform Support -- ✅ NixOS -- ✅ Darwin - -## Features -### Core Functionality -- **Fuzzy Directory Finding**: Fast directory search with instant filtering -- **Directory Preview**: Shows directory contents with ls integration -- **Direct Navigation**: Changes to directories immediately upon selection -- **Smart Filtering**: Automatically excludes .git directories -- **Graceful Cancellation**: Clean exit without side effects - -### User Experience -- **Interactive Interface**: Clean fzf-based directory selection -- **Colorized Preview**: Directory contents preview for better context -- **Help System**: Built-in help with `cf --help` -- **Error Handling**: Comprehensive validation and error messages -- **Directory Support**: Works in current or specified directory - -## Implementation -- **Language**: Bash (with strict error handling) -- **Source**: ./cf (executable shell script) -- **Type**: Interactive command-line utility -- **Dependencies**: fzf, fd, coreutils -- **Build**: stdenv.mkDerivation with makeWrapper - -## Architecture -### Script Structure -- Clean function-based design -- Strict error handling with `set -euo pipefail` -- Dependency validation before execution -- Uses fd for fast directory discovery -- Graceful handling of empty selections - -### Integration Method -- Uses `makeWrapper` to bundle dependencies into PATH -- Self-contained executable with all tools available -- No runtime dependency resolution needed -- Works independently of system package management - -## Usage Examples -### Basic Usage -```bash -cf # Open directory picker in current directory -cf ~/projects # Open directory picker in specific directory -cf --help # Show help information -``` - -### Workflow Integration -```bash -# Quick navigation -cf # Select and cd to any directory - -# Project navigation -cd ~/myproject && cf # Browse and navigate to subdirectories - -# Multi-directory workflow -cf ~/configs # Navigate config directories -cf ~/projects # Navigate project directories -``` - -## Interactive Features -### Key Bindings (in fzf) -- **Enter**: Change to selected directory -- **Ctrl-C / ESC**: Exit without changing directory -- **Up/Down**: Navigate through directory list -- **Ctrl-/**: Toggle preview window visibility -- **Ctrl-U/D**: Scroll preview window up/down -- **Type to filter**: Fuzzy search directory names - -### Visual Elements -- **Header Bar**: Shows key bindings and current operation -- **Preview Window**: Directory contents (60% of screen) -- **Border Styling**: Clean borders for visual clarity -- **Prompt**: Clear indication of current action -- **Reverse Layout**: Results above prompt for better UX - -## How It Works -### Selection Pipeline -1. **Validation**: Check dependencies and validate directory -2. **Directory Discovery**: Scan directory tree with fd -3. **Interactive Selection**: Present directories in fzf with preview -4. **Directory Change**: Output selected directory path - -### Smart Defaults -- **Directory Filtering**: Excludes .git/ directories -- **Preview**: Shows directory contents with ls --color -- **Graceful Exit**: Returns exit code 0 on cancellation -- **Hidden Support**: Shows hidden directories (except .git) - -## Common Use Cases -### Development Workflows -- **Quick Navigation**: Rapidly navigate to any directory in a project -- **Project Exploration**: Browse unfamiliar directory structures efficiently -- **Context Switching**: Jump between different parts of a codebase quickly - -### Daily Operations -- **Directory Browsing**: Explore file system hierarchies -- **Configuration Navigation**: Navigate dotfiles and config directories -- **Project Management**: Navigate between different projects -- **Script Integration**: Use in shell scripts for directory selection - -## Configuration & Integration -### Module Enablement -```nix -# Direct enablement -myconfig.programs.cf.enable = true; - -# Automatic with engineer feature -myconfig.features.engineer.enable = true; # includes cf -``` - -### Shell Integration -Since cf outputs a directory path, it needs to be wrapped in a shell function: - -```bash -# Add to .zshrc or .bashrc -cf() { - local dir - dir=$(/path/to/cf "$@") - if [ -n "$dir" ]; then - cd "$dir" - fi -} -``` - -Note: The Nix module installs the binary, but shell integration requires -the wrapper function to actually change directories in the current shell. - -## Performance & Optimization -### Directory Discovery -- **Fast Scanning**: Uses fd for parallel directory scanning -- **Smart Exclusions**: Skips .git directories -- **No Hidden Cost**: Efficient hidden directory handling - -### UI Responsiveness -- **Instant Preview**: Real-time preview as you navigate -- **Smooth Navigation**: Optimized fzf configuration -- **Fast Filtering**: Fuzzy search without lag - -## Dependencies & Requirements -### Required Tools -- **fzf**: Command-line fuzzy finder for directory selection -- **fd**: Fast directory finder -- **coreutils**: Standard Unix utilities (ls, cd) - -## Error Handling & Troubleshooting -### Common Scenarios -- **No Directory Selected**: Exits gracefully with informative message -- **Invalid Directory**: Clear error message with directory path -- **Missing Dependencies**: Validates all tools before execution -- **Permission Errors**: Readable error messages for access issues - -### Debug Information -- **Dependency Check**: Validates fzf, fd, ls before running -- **Path Validation**: Ensures directory exists and is accessible -- **Clear Messages**: All errors include context and suggestions -- **Exit Codes**: Proper exit codes for script integration - -## Security Considerations -- **Path Safety**: Validates directory existence before access -- **Permission Respect**: Honors file system permissions -- **No Execution**: Only navigates, doesn't execute files -- **User Control**: Requires explicit directory selection - -## Tips & Best Practices -### Effective Usage -- Use in project root directories for quick subdirectory access -- Create shell aliases for frequently accessed directory trees -- Leverage preview to verify directory contents before changing -- Combine with other navigation tools for optimal workflow - -### Integration Ideas -- Add shell function wrapper for actual directory changing -- Use in shell scripts for interactive directory selection -- Integrate with tmux for pane-based navigation -- Combine with other CLI tools in custom scripts - -## Comparison with Alternatives -### vs. cd with tab completion -- **Faster**: No manual path typing or sequential tab completion -- **Preview**: See directory contents before changing -- **Fuzzy**: Find directories without exact names - -### vs. z/autojump -- **Complementary**: cf for exploration, z for frecency-based navigation -- **Visual**: See directory structure while navigating -- **No History Needed**: Works immediately without building database - -### vs. ranger/lf -- **Simpler**: Focused on single task (directory navigation) -- **Faster**: Minimal overhead, quick startup -- **Integration**: Easy to use in shell scripts - -## Related Tools -- **nvimf**: Fuzzy file finder with Neovim integration -- **fzf**: Underlying fuzzy finder technology -- **fd**: Fast directory discovery -*/ { delib, pkgs, diff --git a/modules/programs/cmbd/default.nix b/modules/programs/cmbd/default.nix index 5ba53379..ed85101f 100644 --- a/modules/programs/cmbd/default.nix +++ b/modules/programs/cmbd/default.nix @@ -1,67 +1,3 @@ -/** -# Program Module: cmbd (Clipboard Manager Daemon) - -## Description -A lightweight clipboard manager daemon written in Go that runs in the -background and maintains clipboard history. Provides easy access to -previously copied items and clipboard manipulation utilities. - -## Platform Support -- ✅ NixOS -- ✅ Darwin - -## Features -- Clipboard history management -- Persistent storage of clipboard items -- Search through clipboard history -- Configurable history size -- Privacy mode for sensitive data -- Integration with system clipboard - -## Implementation -- **Language**: Go -- **Source**: ./main.go -- **Build**: buildGoModule -- **Type**: Background daemon - -## Architecture -- Daemon process monitors clipboard changes -- Stores history in local database/file -- Provides CLI interface for access -- Supports multiple clipboard formats - -## Usage -```bash -cmbd # Start daemon -cmbd list # Show clipboard history -cmbd get # Retrieve item from history -cmbd clear # Clear history -cmbd search # Search in history -``` - -## Common Use Cases -- Recover accidentally overwritten clips -- Maintain frequently used snippets -- Quick access to recent copies -- Clipboard synchronization -- Development workflow enhancement - -## Privacy & Security -- Option to exclude sensitive patterns -- Configurable retention period -- Secure storage of clipboard data -- Clear history on demand - -## Configuration -Enabled via: -- `myconfig.programs.cmbd.enable = true` -- Or automatically with engineer feature - -## Integration -- Works with Wayland (wl-clipboard) -- Works with X11 (xclip/xsel) -- Native macOS clipboard support -*/ { pkgs, lib, diff --git a/modules/programs/convert_img/convert_img.nix b/modules/programs/convert_img/convert_img.nix index f59d898a..a870269b 100644 --- a/modules/programs/convert_img/convert_img.nix +++ b/modules/programs/convert_img/convert_img.nix @@ -1,71 +1,3 @@ -/** -# Program Module: convert_img (Image Format Converter) - -## Description -A Python-based image conversion utility that supports multiple image -formats and transformations. Includes comprehensive test suite and -supports batch processing, format conversion, and basic image operations. - -## Platform Support -- ✅ NixOS -- ✅ Darwin - -## Features -- Multi-format support (JPEG, PNG, WebP, BMP, GIF, etc.) -- Batch conversion capabilities -- Image resizing and scaling -- Format optimization -- Quality adjustment -- Metadata preservation options -- SVG to raster conversion (via potrace) - -## Implementation -- **Language**: Python 3 -- **Main Library**: Pillow (PIL fork) -- **Source**: ./convert_img.py -- **Tests**: pytest-based test suite -- **Additional Tools**: potrace for vector conversion - -## Supported Operations -- Format conversion between all PIL-supported formats -- Image resizing with aspect ratio preservation -- Quality/compression adjustment -- Batch processing of multiple files -- Color mode conversion (RGB, RGBA, Grayscale) -- Basic image transformations - -## Usage -```bash -convert_img input.jpg output.png # Basic conversion -convert_img -q 85 photo.jpg compressed.jpg # Adjust quality -convert_img -s 800x600 large.png small.png # Resize image -convert_img -b *.jpg -f png # Batch convert -``` - -## Testing -- Basic functionality tests in test_basic.py -- Comprehensive pytest suite in tests/ -- Coverage reporting available -- CI-friendly test runner - -## Common Use Cases -- Web image optimization -- Batch format conversion -- Thumbnail generation -- Image preprocessing for ML -- Asset pipeline integration -- Screenshot processing - -## Dependencies -- Pillow: Core image processing -- potrace: Vector to raster conversion -- pytest: Testing framework - -## Configuration -Enabled via: -- `myconfig.programs.convert_img.enable = true` -- Or automatically with engineer feature -*/ { delib, pkgs, diff --git a/modules/programs/dx/dx.nix b/modules/programs/dx/dx.nix index 5336dd11..8322c019 100644 --- a/modules/programs/dx/dx.nix +++ b/modules/programs/dx/dx.nix @@ -1,65 +1,3 @@ -/** -# Program Module: dx (Quick Flake Editor) - -## Description -A simple shell utility for quickly editing the flake.nix file in any -Git repository. Automatically finds the repository root and opens the -flake.nix file in your preferred editor. Essential tool for Nix flake -development workflows. - -## Platform Support -- ✅ NixOS -- ✅ Darwin - -## Features -- Automatically finds Git repository root -- Opens flake.nix in configured editor -- Respects $EDITOR environment variable -- Falls back to nvim if no editor set -- Error handling for non-Git directories - -## Implementation -- **Language**: Shell script -- **Type**: Command-line utility -- **Dependencies**: git, text editor - -## Usage -```bash -dx # Open flake.nix in repository root -cd subdir && dx # Works from any subdirectory -EDITOR=vim dx # Use specific editor -``` - -## How It Works -1. Uses `git rev-parse --show-toplevel` to find repo root -2. Checks for $EDITOR environment variable -3. Falls back to nvim if not set -4. Opens flake.nix at repository root -5. Shows error if not in a Git repository - -## Common Use Cases -- Quick flake.nix edits during development -- Updating dependencies -- Adding new outputs or inputs -- Modifying flake configuration -- Part of Nix development workflow - -## Configuration -Enabled via: -- `myconfig.programs.dx.enable = true` -- Or automatically with engineer feature - -## Tips -- Set $EDITOR in your shell config -- Works great with shell aliases -- Combine with nix develop workflows -- Use with direnv for auto-loading - -## Error Handling -- Graceful failure if not in Git repo -- Clear error message -- Non-zero exit code on failure -*/ { delib, pkgs, diff --git a/modules/programs/explorer/explorer.nix b/modules/programs/explorer/explorer.nix index de47e825..804be062 100644 --- a/modules/programs/explorer/explorer.nix +++ b/modules/programs/explorer/explorer.nix @@ -1,7 +1,3 @@ -# $HOME/.local/share/kactivitymanagerd/resources/database -/* -TODO: Add comment -*/ { delib, pkgs, diff --git a/modules/programs/ghostty/default.nix b/modules/programs/ghostty/default.nix index b591c677..00bcb991 100644 --- a/modules/programs/ghostty/default.nix +++ b/modules/programs/ghostty/default.nix @@ -1,57 +1,3 @@ -/** -# Program Module: Ghostty Terminal Emulator - -## Description -Configuration module for Ghostty, a modern GPU-accelerated terminal emulator -that provides fast rendering, comprehensive Unicode support, and seamless -integration with terminal workflows. Supports platform-specific configuration -for Linux and macOS environments. - -## Platform Support -- ✅ NixOS (Linux) -- ✅ Darwin (macOS) - -## Features -- **GPU Acceleration**: Hardware-accelerated text rendering -- **Unicode Support**: Full Unicode and emoji support -- **Shell Integration**: Deep shell integration with zsh -- **Platform Optimization**: Different settings for Linux and macOS -- **Modern Terminal Features**: True color, ligatures, and more - -## Configuration Differences -### Linux -- Window decorations disabled for better tiling window manager integration -- Optimized for desktop Linux environments - -### macOS -- Window decorations enabled (native macOS window chrome) -- Integrated with macOS system conventions - -## Common Settings -- **Font**: CodeNewRoman Nerd Font for programming -- **Shell**: zsh with full integration -- **Theme**: Dark background (#000000) -- **Key Bindings**: shift+enter for newline insertion -- **Working Directory**: Inherits from parent process - -## Integration Points -- Works with Hyprland tiling window manager (Linux) -- Integrates with macOS window management -- Compatible with zsh configurations -- Supports development workflows - -## Usage -Enabled automatically when Hyprland feature is active, or can be enabled -individually via: -```nix -myconfig.programs.ghostty.enable = true; -``` - -## Implementation -Uses Home Manager to deploy platform-specific configuration files: -- Linux: Uses ghostty.linux config (no window decorations) -- macOS: Uses ghostty.macos config (with window decorations) -*/ { delib, pkgs, diff --git a/modules/programs/glaude/default.nix b/modules/programs/glaude/default.nix new file mode 100644 index 00000000..865ca9e9 --- /dev/null +++ b/modules/programs/glaude/default.nix @@ -0,0 +1,29 @@ +{ + delib, + pkgs, + ... +}: let + inherit (delib) singleEnableOption; + + program = pkgs.writeShellApplication { + name = "glaude"; + text = builtins.readFile ./glaude.sh; + excludeShellChecks = [ + "SC2068" + "SC2155" + ]; + }; +in + delib.module { + name = "programs.glaude"; + + options = singleEnableOption false; + + nixos.ifEnabled = { + environment.systemPackages = [program]; + }; + + darwin.ifEnabled = { + environment.systemPackages = [program]; + }; + } diff --git a/modules/programs/glaude/glaude.sh b/modules/programs/glaude/glaude.sh new file mode 100644 index 00000000..886b591d --- /dev/null +++ b/modules/programs/glaude/glaude.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +PORT=1738 +if ! lsof -iTCP:$PORT -sTCP:LISTEN >/dev/null 2>&1; then + PORT=1738 bunx antigravity-claude-proxy start > /dev/null 2>&1 & +fi + +export ANTHROPIC_AUTH_TOKEN=test +export ANTHROPIC_BASE_URL="http://localhost:$PORT" +export ANTHROPIC_MODEL=claude-opus-4-5-thinking +export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-4-5-thinking +export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-4-5-thinking +export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-sonnet-4-5 +export CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-4-5-thinking + +claude --dangerously-skip-permissions $@ diff --git a/modules/programs/klaude/default.nix b/modules/programs/klaude/default.nix index f7a10710..901de684 100644 --- a/modules/programs/klaude/default.nix +++ b/modules/programs/klaude/default.nix @@ -1,6 +1,3 @@ -/** -Kimi K2 Claude -*/ { delib, pkgs, diff --git a/modules/programs/klaude/klaude.sh b/modules/programs/klaude/klaude.sh index 46a56ef3..f30b365a 100644 --- a/modules/programs/klaude/klaude.sh +++ b/modules/programs/klaude/klaude.sh @@ -2,7 +2,13 @@ export ANTHROPIC_BASE_URL=https://api.kimi.com/coding/ export ANTHROPIC_AUTH_TOKEN=$(grep '^KIMI_API_KEY=' ~/dotfiles/.env | cut -d '=' -f 2) -export ANTHROPIC_MODEL=kimi-for-coding -export ANTHROPIC_SMALL_FAST_MODEL=kimi-for-coding +# export ANTHROPIC_SMALL_FAST_MODEL=kimi-for-coding +# export ANTHROPIC_MODEL=kimi-for-coding +export ANTHROPIC_MODEL=kimi-k2-thinking-turbo +export ANTHROPIC_SMALL_FAST_MODEL=kimi-k2-thinking-turbo +export ANTHROPIC_DEFAULT_OPUS_MODEL=kimi-k2-thinking-turbo +export ANTHROPIC_DEFAULT_SONNET_MODEL=kimi-k2-thinking-turbo +export ANTHROPIC_DEFAULT_HAIKU_MODEL=kimi-k2-thinking-turbo +export CLAUDE_CODE_SUBAGENT_MODEL=kimi-k2-thinking-turbo -claude $@ +claude --dangerously-skip-permissions $@ diff --git a/modules/programs/nvimf/default.nix b/modules/programs/nvimf/default.nix index 42e9883d..7545f776 100644 --- a/modules/programs/nvimf/default.nix +++ b/modules/programs/nvimf/default.nix @@ -1,212 +1,3 @@ -/** -# Program Module: nvimf (Neovim Fuzzy File Opener) - -## Description -A lightweight interactive fuzzy file finder that provides instant file selection -with syntax-highlighted preview. Opens selected files directly in Neovim with -a streamlined, efficient workflow. - -## Platform Support -- ✅ NixOS -- ✅ Darwin - -## Features -### Core Functionality -- **Fuzzy File Finding**: Fast file search with instant filtering -- **Syntax-Highlighted Preview**: Rich file preview with bat integration -- **Direct Editor Launch**: Opens files immediately in Neovim -- **Smart Filtering**: Automatically excludes common build artifacts -- **Graceful Cancellation**: Clean exit without side effects - -### User Experience -- **Interactive Interface**: Clean fzf-based file selection -- **Colorized Preview**: Syntax highlighting for better readability -- **Help System**: Built-in help with `nvimf --help` -- **Error Handling**: Comprehensive validation and error messages -- **Directory Support**: Works in current or specified directory - -## Implementation -- **Language**: Bash (with strict error handling) -- **Source**: ./nvimf (executable shell script) -- **Type**: Interactive command-line utility -- **Dependencies**: fzf, bat, neovim, fd (optional) -- **Build**: stdenv.mkDerivation with makeWrapper - -## Architecture -### Script Structure -- Clean function-based design -- Strict error handling with `set -euo pipefail` -- Dependency validation before execution -- Support for both fd and find fallback -- Graceful handling of empty selections - -### Integration Method -- Uses `makeWrapper` to bundle dependencies into PATH -- Self-contained executable with all tools available -- No runtime dependency resolution needed -- Works independently of system package management - -## Usage Examples -### Basic Usage -```bash -nvimf # Open file picker in current directory -nvimf ~/projects # Open file picker in specific directory -nvimf --help # Show help information -``` - -### Workflow Integration -```bash -# Quick file editing -nvimf # Select and edit any file - -# Project navigation -cd ~/myproject && nvimf # Browse and edit project files - -# Multi-directory workflow -nvimf ~/configs # Edit config files -nvimf ~/projects/app # Edit application files -``` - -## Interactive Features -### Key Bindings (in fzf) -- **Enter**: Open selected file in Neovim -- **Ctrl-C / ESC**: Exit without opening file -- **Up/Down**: Navigate through file list -- **Ctrl-/**: Toggle preview window visibility -- **Ctrl-U/D**: Scroll preview window up/down -- **Type to filter**: Fuzzy search file names - -### Visual Elements -- **Header Bar**: Shows key bindings and current operation -- **Preview Window**: Syntax-highlighted file content (60% of screen) -- **Border Styling**: Clean borders for visual clarity -- **Prompt**: Clear indication of current action - -## How It Works -### Selection Pipeline -1. **Validation**: Check dependencies and validate directory -2. **File Discovery**: Scan directory with fd or find -3. **Interactive Selection**: Present files in fzf with preview -4. **File Opening**: Launch Neovim with selected file - -### Smart Defaults -- **File Filtering**: Excludes .git/, node_modules/, .cache/, dist/, build/ -- **Preview Limit**: Shows first 500 lines for fast rendering -- **Graceful Exit**: Returns exit code 0 on cancellation -- **Editor Fallback**: Uses Neovim directly (no $EDITOR detection needed) - -## Common Use Cases -### Development Workflows -- **Quick File Access**: Rapidly open any file in a project -- **Configuration Editing**: Navigate dotfiles and config directories -- **Project Exploration**: Browse unfamiliar codebases efficiently -- **Context Switching**: Jump between different file types quickly - -### Daily Operations -- **Note Taking**: Quick access to markdown notes -- **Log Review**: Find and open log files with preview -- **Documentation**: Navigate documentation directories -- **Script Editing**: Select and edit shell scripts - -## Configuration & Integration -### Module Enablement -```nix -# Direct enablement -myconfig.programs.nvimf.enable = true; - -# Automatic with engineer feature -myconfig.features.engineer.enable = true; # includes nvimf -``` - -### Shell Integration -```bash -# Create convenient aliases -alias nf="nvimf" # Short alias -alias edit="nvimf" # Descriptive alias -alias fe="nvimf" # File edit - -# Project-specific shortcuts -alias editdot="nvimf ~/.config" -alias editproj="nvimf ~/projects" -``` - -## Performance & Optimization -### File Discovery -- **Fast Scanning**: Uses fd when available for parallel scanning -- **Fallback Support**: Uses find when fd is not available -- **Smart Exclusions**: Skips common build directories -- **No Hidden Cost**: Respects .gitignore patterns with fd - -### UI Responsiveness -- **Instant Preview**: Real-time preview as you navigate -- **Efficient Rendering**: Limited preview lines for fast display -- **Smooth Navigation**: Optimized fzf configuration -- **Fast Filtering**: Fuzzy search without lag - -## Dependencies & Requirements -### Required Tools -- **fzf**: Command-line fuzzy finder for file selection -- **bat**: Syntax highlighting for file preview -- **neovim**: Text editor for opening files - -### Optional Enhancements -- **fd**: Fast file finder (fallback to find if not available) -- **git**: For repository-aware file filtering - -## Error Handling & Troubleshooting -### Common Scenarios -- **No File Selected**: Exits gracefully with informative message -- **Invalid Directory**: Clear error message with directory path -- **Missing Dependencies**: Validates all tools before execution -- **Permission Errors**: Readable error messages for access issues - -### Debug Information -- **Dependency Check**: Validates fzf, bat, nvim before running -- **Path Validation**: Ensures directory exists and is accessible -- **Clear Messages**: All errors include context and suggestions -- **Exit Codes**: Proper exit codes for script integration - -## Security Considerations -- **Path Safety**: Validates directory existence before access -- **Permission Respect**: Honors file system permissions -- **No Execution**: Only opens files for editing, doesn't execute -- **User Control**: Requires explicit file selection - -## Tips & Best Practices -### Effective Usage -- Use in project root directories for quick file access -- Combine with cd for multi-directory workflows -- Create shell aliases for frequently accessed directories -- Leverage preview to verify file contents before opening - -### Integration Ideas -- Add to shell aliases for common directories -- Use in git hooks for selecting files to review -- Integrate with tmux for quick pane-based editing -- Combine with other CLI tools in custom scripts - -## Comparison with Alternatives -### vs. Direct nvim -- **Faster**: No manual path typing or tab completion -- **Preview**: See file contents before opening -- **Fuzzy**: Find files without exact names - -### vs. nvim with telescope/fzf plugin -- **Simpler**: Works from shell, no Neovim configuration needed -- **Universal**: Same interface across all projects -- **Lightweight**: No plugin overhead or configuration - -### vs. nviml (live grep) -- **Complementary**: nvimf for file names, nviml for content search -- **Faster**: When you know the file name (or part of it) -- **Simpler**: Fewer options, focused on file selection - -## Related Tools -- **nviml**: Live grep search with Neovim integration -- **fzf**: Underlying fuzzy finder technology -- **bat**: Syntax highlighting for preview -- **fd**: Fast file discovery (optional) -*/ { delib, pkgs, diff --git a/modules/programs/nviml/default.nix b/modules/programs/nviml/default.nix index a63a7310..d95fe70e 100644 --- a/modules/programs/nviml/default.nix +++ b/modules/programs/nviml/default.nix @@ -1,215 +1,3 @@ -/** -# Program Module: nviml (Neovim Live Search) - -## Description -A sophisticated terminal-based live grep tool that provides real-time search -through codebases with enhanced preview functionality. Combines the speed of -ripgrep with the interactivity of fzf and the syntax highlighting of bat. -Opens selected files directly in your editor at the exact line location. - -## Platform Support -- ✅ NixOS -- ✅ Darwin - -## Features -### Core Functionality -- **Live Search**: Real-time text search with instant results -- **Enhanced Preview**: Syntax-highlighted file preview with context -- **Editor Integration**: Opens files at exact line in your preferred editor -- **Smart Filtering**: Excludes common build artifacts and dependency folders -- **Directory Validation**: Comprehensive error checking and user feedback - -### User Experience -- **Colorized Output**: Rich terminal colors for better readability -- **Interactive Help**: Built-in help system (`nviml --help`) -- **Progress Indicators**: Clear search status and navigation hints -- **Error Handling**: Graceful failure with informative error messages -- **Dependency Checking**: Validates all required tools before execution - -### Advanced Options -- **Flexible Arguments**: Full ripgrep argument passthrough -- **Custom File Types**: Support for custom file type definitions -- **Hidden Files**: Optional search through hidden files -- **Symlink Following**: Automatic symlink resolution -- **Live Reload**: Dynamic search updating with Ctrl-R - -## Implementation -- **Language**: Bash (with strict error handling) -- **Source**: ./nviml (executable shell script) -- **Type**: Interactive command-line utility -- **Dependencies**: ripgrep, fzf, bat, neovim (system) -- **Build**: stdenv.mkDerivation with makeWrapper - -## Architecture -### Script Structure -- Modular function-based design -- Comprehensive error handling with `set -euo pipefail` -- Color-coded output for different message types -- Dependency validation before execution -- Argument parsing with directory detection - -### Integration Method -- Uses `makeWrapper` to bundle dependencies into PATH -- Self-contained executable with all tools available -- No runtime dependency resolution needed -- Works independently of system package management - -## Usage Examples -### Basic Search -```bash -nviml # Search current directory -nviml ~/projects # Search specific directory -nviml --help # Show comprehensive help -``` - -### Advanced Filtering -```bash -nviml -t py # Search only Python files -nviml -g "*.js" # Search only JavaScript files -nviml -g "*.{ts,tsx}" # Search TypeScript files -nviml --type-add 'web:*.{html,css,js}' -t web - # Define and use custom file types -``` - -### Search Patterns -```bash -nviml "function.*render" # Regex search for render functions -nviml -i "ERROR" # Case-insensitive search -nviml -w "TODO" # Whole word search -nviml -A 3 -B 3 "import" # Search with context lines -``` - -## Interactive Features -### Key Bindings (in fzf) -- **Enter**: Open file at matching line in editor -- **Ctrl-C / Esc**: Exit without opening file -- **Up/Down**: Navigate through search results -- **Page Up/Down**: Fast navigation through results -- **Ctrl-/**: Toggle preview window visibility -- **Ctrl-U/D**: Scroll preview window up/down -- **Ctrl-R**: Reload search with current parameters - -### Visual Elements -- **Header Bar**: Shows current operation and key bindings -- **Search Prompt**: Customized prompt with visual indicators -- **Preview Window**: Syntax-highlighted file content with line highlighting -- **Progress Info**: Inline information about search state -- **Border Styling**: Attractive borders and visual separation - -## How It Works -### Search Pipeline -1. **Validation**: Check dependencies and validate search directory -2. **Configuration**: Parse arguments and configure ripgrep options -3. **Search Execution**: Run ripgrep with optimized parameters -4. **Interactive Selection**: Pipe results to fzf with enhanced UI -5. **File Opening**: Launch editor with file and line number - -### Smart Defaults -- **File Filtering**: Automatically excludes `.git/`, `node_modules/`, minified files -- **Search Options**: Enables smart case, hidden files, symlink following -- **Editor Detection**: Uses `$EDITOR` environment variable with nvim fallback -- **Error Recovery**: Graceful handling of cancelled searches and missing files - -## Common Use Cases -### Development Workflows -- **Function Discovery**: Find function definitions across large codebases -- **Error Investigation**: Search for error messages and stack traces -- **Code Exploration**: Navigate unfamiliar codebases efficiently -- **Refactoring Support**: Locate all instances of variables/functions -- **Documentation Search**: Find comments and documentation strings - -### Code Review & Debugging -- **Pattern Analysis**: Search for specific code patterns or anti-patterns -- **Dependency Tracking**: Find import/require statements -- **Configuration Hunting**: Locate configuration files and settings -- **Log Analysis**: Search through log files with syntax highlighting -- **Migration Tasks**: Find deprecated API usage across projects - -## Configuration & Integration -### Module Enablement -```nix -# Direct enablement -myconfig.programs.nviml.enable = true; - -# Automatic with engineer feature -myconfig.features.engineer.enable = true; # includes nviml -``` - -### Environment Configuration -```bash -# Set preferred editor (defaults to nvim) -export EDITOR="code" # VS Code -export EDITOR="vim" # Vim -export EDITOR="emacs" # Emacs - -# Create shell alias for convenience -alias lg="nviml" # Short alias -alias search="nviml" # Descriptive alias -``` - -## Performance & Optimization -### Search Performance -- **Ripgrep Speed**: Leverages ripgrep's high-performance text search -- **Smart Exclusions**: Skips binary files and common build artifacts -- **Parallel Processing**: Multi-threaded search across file tree -- **Memory Efficiency**: Streams results without loading entire files - -### UI Responsiveness -- **Instant Preview**: Real-time preview updates as you navigate -- **Lazy Loading**: Previews only render when needed -- **Efficient Rendering**: Optimized fzf configuration for large result sets -- **Progressive Search**: Results appear as they're found - -## Dependencies & Requirements -### Required Tools -- **ripgrep (rg)**: Fast text search engine -- **fzf**: Command-line fuzzy finder -- **bat**: Syntax highlighting for file preview -- **neovim**: Text editor (system installation, not provided) - -### Optional Enhancements -- **git**: For repository-aware searching -- **fd**: Alternative file finder (ripgrep can use git ignore) -- **delta**: Enhanced diff highlighting in git repositories - -## Error Handling & Troubleshooting -### Common Issues -- **Missing Dependencies**: Clear error messages with installation hints -- **Permission Errors**: Readable error messages for directory access -- **Editor Not Found**: Automatic fallback with warning messages -- **Empty Results**: Graceful handling of no-match scenarios - -### Debug Information -- **Verbose Mode**: Shows search parameters and configuration -- **Dependency Check**: Validates all required tools before execution -- **Path Resolution**: Displays absolute paths for clarity -- **Exit Codes**: Proper exit codes for script integration - -## Security Considerations -- **Path Validation**: Prevents directory traversal attacks -- **Argument Sanitization**: Safe handling of user-provided arguments -- **Permission Respect**: Honors file system permissions -- **No Privilege Escalation**: Runs with user permissions only - -## Tips & Best Practices -### Effective Searching -- Use file type filters (`-t`) for faster, more relevant results -- Combine with git for repository-aware searching -- Set `$EDITOR` environment variable for seamless editor integration -- Use regex patterns for complex search requirements - -### Performance Tips -- Search specific directories rather than entire filesystem -- Use appropriate file type filters to reduce search scope -- Exclude large binary directories with glob patterns -- Consider using ripgrep's built-in parallelism settings - -### Integration Ideas -- Create shell aliases for common search patterns -- Integrate with git hooks for pre-commit searches -- Use in CI/CD pipelines for code quality checks -- Combine with other terminal tools in custom workflows -*/ { delib, pkgs, diff --git a/modules/programs/xlaude/default.nix b/modules/programs/xlaude/default.nix index 1546a358..cc47d3aa 100644 --- a/modules/programs/xlaude/default.nix +++ b/modules/programs/xlaude/default.nix @@ -1,6 +1,3 @@ -/** -Z.AI Claude -*/ { delib, pkgs, diff --git a/modules/programs/zlaude/default.nix b/modules/programs/zlaude/default.nix index 0b25856e..2b4e2bda 100644 --- a/modules/programs/zlaude/default.nix +++ b/modules/programs/zlaude/default.nix @@ -1,6 +1,3 @@ -/** -Z.AI Claude -*/ { delib, pkgs, diff --git a/rices/dark/default.nix b/rices/dark/default.nix index 4111adde..026962a8 100644 --- a/rices/dark/default.nix +++ b/rices/dark/default.nix @@ -1,93 +1,3 @@ -/** -# Rice Configuration: Dark Theme - -## Description -A sophisticated dark theme configuration using Tokyo Dark color scheme -with comprehensive application theming through Stylix. Provides consistent -dark mode across all applications with carefully selected colors for -optimal readability and reduced eye strain. - -## Theme Details -- **Color Scheme**: Tokyo Dark (Base16) -- **Wallpaper**: Klaus desktop image -- **Polarity**: Dark mode -- **Cursor**: Rose Pine Hyprcursor theme - -## Platform Support -- ✅ NixOS (full Stylix integration) -- ✅ Darwin (limited to Home Manager apps) - -## What Gets Themed -### NixOS -- Window managers (Hyprland, KDE Plasma, etc.) -- GTK applications -- Qt applications -- Terminal emulators (including Konsole) -- Text editors (Neovim, Kate, etc.) -- Spotify (via Spicetify) -- GNOME applications -- KDE Plasma desktop and applications -- System notifications - -### Darwin -- Terminal applications -- Zathura PDF reader -- Home Manager managed apps -- Limited system integration - -## Color Palette -Tokyo Dark provides: -- Deep background colors -- High contrast text -- Vibrant accent colors -- Syntax highlighting optimization -- Reduced blue light emission - -## Cursor Configuration (NixOS) -- Size: 12 pixels -- Theme: Rose Pine Hyprcursor -- Smooth animations -- High visibility - -## Application Targets -### Enabled -- Qt toolkit theming -- GTK toolkit theming -- GNOME app integration -- Spotify custom theme -- Zathura PDF viewer - -### Disabled -- GRUB bootloader (keep default) -- Plymouth boot screen (keep default) - -## Visual Consistency -- Unified color scheme across all apps -- Consistent spacing and padding -- Harmonized fonts and sizes -- Coordinated highlight colors - -## Benefits -- Reduced eye strain -- Better night-time usage -- Professional appearance -- Improved focus -- Battery savings (OLED screens) - -## Customization -The rice system allows: -- Easy theme switching -- Per-application overrides -- Custom color adjustments -- Wallpaper changes - -## Integration -Works seamlessly with: -- Hyprland window manager -- Engineer development tools -- All GUI applications -- Terminal environments -*/ { delib, inputs, diff --git a/rices/empty.nix b/rices/empty.nix index 74d6ca0f..e7a59f10 100644 --- a/rices/empty.nix +++ b/rices/empty.nix @@ -1,27 +1,3 @@ -/** -# Rice Configuration: Empty Theme - -## Description -Minimal theme configuration with no styling applied. Serves as a base template -for creating new themes or for systems where custom theming is not desired. -Provides the rice structure without any Stylix or color scheme configuration. - -## Platform Support -- ✅ NixOS -- ✅ Darwin (macOS) -- ✅ Home Manager - -## What This Provides -- **No Styling**: Clean slate without any theme modifications -- **Template Base**: Foundation for building custom rice configurations -- **Minimal Overhead**: No additional packages or configurations loaded - -## Usage Notes -- Ideal for testing configurations without theming interference -- Can be extended by adding home/nixos configuration blocks -- System will use default application themes and colors -- Useful as a fallback when other themes encounter issues -*/ { delib, inputs, diff --git a/templates/cpp-shell/flake.nix b/templates/cpp-shell/flake.nix index 441f4e5e..8474f21d 100644 --- a/templates/cpp-shell/flake.nix +++ b/templates/cpp-shell/flake.nix @@ -1,62 +1,3 @@ -/** -# C++ Development Shell Template - -## Description -Comprehensive C++ development environment with modern tooling for building -high-performance C++ applications. Features the latest C++ standards, multiple -compilers, advanced debugging tools, static analysis, and package management -for productive C++ development. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **Multiple Compilers**: GCC, Clang, with C++23 support -- **Build Systems**: CMake, Meson, Ninja, Make -- **Package Management**: Conan, vcpkg integration -- **Static Analysis**: clang-tidy, cppcheck, include-what-you-use -- **Debugging**: GDB, LLDB with pretty printers -- **Testing**: Google Test, Catch2, Doctest -- **Profiling**: Valgrind, perf tools -- **Documentation**: Doxygen for API documentation - -## Key Features -- **Modern C++ Standards**: C++17, C++20, C++23 support -- **Cross-compiler Support**: Easy switching between GCC and Clang -- **Advanced Tooling**: Comprehensive static analysis and debugging -- **Multiple Build Systems**: Choose the best tool for your project -- **Package Management**: Modern C++ dependency management -- **IDE Integration**: Language servers and development tools - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#cpp-shell - -# Enter development shell -nix develop - -# Initialize CMake project -init-cmake - -# Build with different compilers -build-gcc -build-clang - -# Format code -nix fmt -``` - -## Development Workflow -- Use CMake or Meson for build configuration -- Multiple compiler support for compatibility testing -- Comprehensive static analysis and linting -- Advanced debugging with GDB/LLDB -- Modern package management with Conan/vcpkg -*/ { description = "A development shell for C++"; inputs = { diff --git a/templates/devshell/flake.nix b/templates/devshell/flake.nix index 3a9719c3..3872d575 100644 --- a/templates/devshell/flake.nix +++ b/templates/devshell/flake.nix @@ -1,41 +1,3 @@ -/** -# Development Shell Template - -## Description -Generic development environment template with essential tools and formatting setup. -Provides a foundation for creating project-specific development environments with -Nix flakes. Includes treefmt for code formatting and a basic shell structure. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **Development Shell**: Basic shell environment with just (task runner) -- **Code Formatting**: treefmt with Alejandra for Nix code formatting -- **Multi-platform**: Support for all major architectures -- **Flake Structure**: Modern flake.nix template using flake-parts - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#devshell - -# Enter development shell -nix develop - -# Format code -nix fmt -``` - -## Customization -- Add packages to buildInputs array -- Modify shellHook for custom initialization -- Add language-specific formatters to treefmtModule -- Extend with additional development tools as needed -*/ { description = "A development shell"; inputs = { diff --git a/templates/go-shell/flake.nix b/templates/go-shell/flake.nix index 47e02858..43efcf7e 100644 --- a/templates/go-shell/flake.nix +++ b/templates/go-shell/flake.nix @@ -1,49 +1,3 @@ -/** -# Go Development Shell Template - -## Description -Complete Go development environment with modern tooling for building, testing, -and maintaining Go applications. Includes the Go toolchain, linting, formatting, -live reloading, and testing utilities for productive Go development. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **Go Toolchain**: Go 1.25 compiler and runtime -- **Development Tools**: air (live reload), delve (debugger), gopls (language server) -- **Code Quality**: golangci-lint, revive, gofmt, goimports -- **Testing**: gotestfmt for enhanced test output -- **Documentation**: gomarkdoc for generating markdown from Go code -- **Formatting**: gofumpt for stricter Go formatting - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#go-shell - -# Enter development shell -nix develop - -# Start live reload development -air - -# Run tests with formatting -go test ./... | gotestfmt - -# Format code -nix fmt -``` - -## Development Workflow -- Use air for automatic recompilation during development -- golangci-lint provides comprehensive linting -- gopls enables rich IDE integration -- All tools configured for optimal Go development experience -*/ { description = "A development shell for go"; inputs = { diff --git a/templates/python-shell/flake.nix b/templates/python-shell/flake.nix index 7c051051..58e8dc5f 100644 --- a/templates/python-shell/flake.nix +++ b/templates/python-shell/flake.nix @@ -1,57 +1,3 @@ -/** -# Python Development Shell Template - -## Description -Comprehensive Python development environment with modern tooling for building -high-quality Python applications. Features the latest Python versions, advanced -type checking, linting, formatting, testing frameworks, and package management -for productive Python development. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **Python Versions**: Python 3.11, 3.12 with pip, venv support -- **Type Checking**: basedpyright (Pylance), mypy for static analysis -- **Linting & Formatting**: ruff (fast linter), black (formatter), isort (import sorting) -- **Package Management**: pip, pipenv, poetry, uv (fast package manager) -- **Testing**: pytest, coverage, hypothesis for property-based testing -- **Development Tools**: IPython, Jupyter, pre-commit hooks -- **Profiling**: py-spy, memory-profiler, line-profiler - -## Key Features -- **Modern Type Checking**: basedpyright for advanced type analysis -- **Lightning Fast Linting**: ruff for ultra-fast Python linting -- **Multiple Package Managers**: Choose between pip, poetry, pipenv, or uv -- **Comprehensive Testing**: pytest with plugins and coverage -- **Interactive Development**: IPython and Jupyter notebook support -- **Performance Analysis**: Multiple profiling tools included - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#python-shell - -# Enter development shell -nix develop - -# Run development server -dev - -# Run tests -test -``` - -## Development Workflow -- Use poetry or pip for dependency management -- basedpyright for advanced type checking -- ruff for lightning-fast linting -- black + isort for consistent formatting -- pytest for comprehensive testing -*/ { description = "A development shell for Python"; diff --git a/templates/rust-shell/flake.nix b/templates/rust-shell/flake.nix index 2345a004..587d84e1 100644 --- a/templates/rust-shell/flake.nix +++ b/templates/rust-shell/flake.nix @@ -1,57 +1,3 @@ -/** -# Rust Development Shell Template - -## Description -Comprehensive Rust development environment with modern tooling and optimized -build configuration. Features the latest stable Rust toolchain, advanced -caching with crane, and complete development workflow support for building -high-performance Rust applications. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **Rust Toolchain**: Latest stable Rust with rustup integration -- **Build Tools**: Crane for optimized Nix builds with incremental compilation -- **Development Tools**: rust-analyzer, clippy, rustfmt, cargo-watch -- **Testing**: cargo-nextest for faster test execution -- **Documentation**: Built-in doc generation and viewing -- **Code Quality**: clippy linting and rustfmt formatting - -## Key Features -- **Rust Overlay**: Access to multiple Rust versions and components -- **Incremental Builds**: Crane-based caching for faster rebuilds -- **IDE Integration**: rust-analyzer for rich editor support -- **Cross-compilation**: Support for multiple target architectures -- **Modern Formatting**: rustfmt with treefmt integration - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#rust-shell - -# Enter development shell -nix develop - -# Build with caching -nix build - -# Run tests -cargo test - -# Format code -nix fmt -``` - -## Development Workflow -- Use cargo-watch for automatic recompilation -- clippy provides comprehensive linting -- rust-analyzer enables rich IDE features -- crane optimizes build times with intelligent caching -*/ { description = "A development shell for rust"; inputs = { diff --git a/templates/templ-shell/flake.nix b/templates/templ-shell/flake.nix index baf8f4af..788d5487 100644 --- a/templates/templ-shell/flake.nix +++ b/templates/templ-shell/flake.nix @@ -1,49 +1,3 @@ -/** -# Go + Templ Development Shell Template - -## Description -Development environment for Go applications using the Templ template engine. -Provides Go toolchain with Templ-specific tools for building modern web -applications with type-safe HTML templating in Go. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **Go Toolchain**: Go 1.24 compiler and runtime -- **Templ Tools**: Templ compiler for Go HTML templates -- **Development Tools**: air (live reload), gopls (language server) -- **Code Quality**: golangci-lint, revive, gofmt formatting -- **Testing**: Go testing tools and gotests for test generation -- **Documentation**: gomarkdoc for generating documentation - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#templ-shell - -# Enter development shell -nix develop - -# Generate templ files -templ generate - -# Start live reload development -air - -# Format code -nix fmt -``` - -## Development Workflow -- Use templ for type-safe HTML templates -- air provides automatic recompilation -- Rich IDE integration with gopls -- Comprehensive linting with golangci-lint -*/ { description = "A development shell for go + templ"; inputs = { diff --git a/templates/typescript-shell/flake.nix b/templates/typescript-shell/flake.nix index 68bf78ea..f785d4fe 100644 --- a/templates/typescript-shell/flake.nix +++ b/templates/typescript-shell/flake.nix @@ -1,56 +1,3 @@ -/** -# TypeScript Development Shell Template - -## Description -Comprehensive TypeScript development environment with modern tooling for building -high-quality TypeScript applications. Features multiple linters, formatters, -language servers, and development tools for productive TypeScript development. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **TypeScript Toolchain**: Latest TypeScript compiler and runtime -- **Multiple Linters**: ESLint, oxlint, and Biome for comprehensive code analysis -- **Language Servers**: TypeScript LSP, Tailwind CSS LSP for rich IDE integration -- **Package Managers**: npm, yarn, pnpm, and bun for flexible dependency management -- **Development Tools**: Prettier, tsx for TypeScript execution, and more -- **Testing**: Vitest for modern TypeScript testing - -## Key Features -- **Multi-linter Setup**: Choose between ESLint, oxlint, or Biome based on project needs -- **IDE Integration**: Rich language server support for editors -- **Modern Runtime**: bun and tsx for fast TypeScript execution -- **CSS Framework Support**: Tailwind CSS language server included -- **Formatting**: Prettier and Biome for consistent code style - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#typescript-shell - -# Enter development shell -nix develop - -# Initialize TypeScript project -tsc --init - -# Run TypeScript with tsx -tsx src/index.ts - -# Format code -nix fmt -``` - -## Development Workflow -- Use tsx for rapid TypeScript development -- Multiple linting options for different project requirements -- Rich IDE support with language servers -- Modern package management with multiple options -*/ { description = "A development shell for TypeScript"; inputs = { diff --git a/templates/zig-shell/flake.nix b/templates/zig-shell/flake.nix index b1ede561..4285312f 100644 --- a/templates/zig-shell/flake.nix +++ b/templates/zig-shell/flake.nix @@ -1,49 +1,3 @@ -/** -# Zig Development Shell Template - -## Description -Complete Zig development environment with modern tooling for building, testing, -and maintaining Zig applications. Includes the Zig compiler, ZLS language server, -formatting utilities, and development scripts for productive Zig development. - -## Platform Support -- ✅ x86_64-linux -- ✅ aarch64-linux (ARM64 Linux) -- ✅ x86_64-darwin (Intel macOS) -- ✅ aarch64-darwin (Apple Silicon macOS) - -## What This Provides -- **Zig Toolchain**: Latest Zig master compiler and runtime -- **Language Server**: ZLS for rich IDE integration -- **Development Tools**: Build automation and project management -- **Code Quality**: Formatting with zig fmt integration -- **Documentation**: Built-in documentation generation -- **Nix Tools**: Formatting and linting for Nix files - -## Usage -```bash -# Create new project from template -nix flake init -t github:connerohnesorge/dotfiles#zig-shell - -# Enter development shell -nix develop - -# Build project -zig build - -# Run tests -zig test src/main.zig - -# Format code -nix fmt -``` - -## Development Workflow -- Use `zig build` for compilation and linking -- ZLS provides comprehensive IDE integration -- Built-in formatter ensures consistent code style -- All tools configured for optimal Zig development experience -*/ { description = "A development shell for zig"; inputs = {