diff options
author | grm@eyesin.space <grm@eyesin.space> | 2025-09-02 23:04:24 +0000 |
---|---|---|
committer | grm@eyesin.space <grm@eyesin.space> | 2025-09-02 23:04:24 +0000 |
commit | 47ef05ab310bb466300e93d1459370450414fbc4 (patch) | |
tree | 808f155d2871f831af743509de982c4c9789357c /home/dev | |
download | nixos-config-47ef05ab310bb466300e93d1459370450414fbc4.tar.gz nixos-config-47ef05ab310bb466300e93d1459370450414fbc4.tar.bz2 nixos-config-47ef05ab310bb466300e93d1459370450414fbc4.zip |
Diffstat (limited to 'home/dev')
-rw-r--r-- | home/dev/ai.nix | 9 | ||||
-rw-r--r-- | home/dev/db.nix | 13 | ||||
-rw-r--r-- | home/dev/default.nix | 39 | ||||
-rw-r--r-- | home/dev/direnv.nix | 6 | ||||
-rw-r--r-- | home/dev/docker.nix | 9 | ||||
-rw-r--r-- | home/dev/go.nix | 15 | ||||
-rw-r--r-- | home/dev/js.nix | 5 | ||||
-rw-r--r-- | home/dev/k8s.nix | 19 | ||||
-rw-r--r-- | home/dev/k9s.nix | 182 | ||||
-rw-r--r-- | home/dev/neovim.nix | 82 | ||||
-rw-r--r-- | home/dev/php.nix | 53 | ||||
-rw-r--r-- | home/dev/virt-manager.nix | 8 | ||||
-rw-r--r-- | home/dev/zed-editor.nix | 76 |
13 files changed, 516 insertions, 0 deletions
diff --git a/home/dev/ai.nix b/home/dev/ai.nix new file mode 100644 index 0000000..da7d9e0 --- /dev/null +++ b/home/dev/ai.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + claude-code + codex + fabric-ai + gemini-cli + warp-terminal + ]; +} diff --git a/home/dev/db.nix b/home/dev/db.nix new file mode 100644 index 0000000..bf7398a --- /dev/null +++ b/home/dev/db.nix @@ -0,0 +1,13 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + dbgate + go-migrate + mongodb-compass + mongodb-tools + mongosh + mycli + pg_activity + pgcli + sqlite + ]; +} diff --git a/home/dev/default.nix b/home/dev/default.nix new file mode 100644 index 0000000..e1c9a5c --- /dev/null +++ b/home/dev/default.nix @@ -0,0 +1,39 @@ +{pkgs, ...}: { + imports = [ + ./ai.nix + ./db.nix + ./direnv.nix + ./docker.nix + ./go.nix + ./js.nix + ./k8s.nix + ./neovim.nix + ./php.nix + ./virt-manager.nix + ./zed-editor.nix + ]; + + home.packages = with pkgs; [ + backblaze-b2 + ddosify + dos2unix + fx + gh + glab + glow + go-task + graphviz + httpie + hyperfine + jd-diff-patch + just + mkcert + nfpm + nssTools + scc + speedtest-go + testssl + upx + yq + ]; +} diff --git a/home/dev/direnv.nix b/home/dev/direnv.nix new file mode 100644 index 0000000..2b51c9d --- /dev/null +++ b/home/dev/direnv.nix @@ -0,0 +1,6 @@ +{ + programs.direnv = { + enable = true; + nix-direnv.enable = true; + }; +} diff --git a/home/dev/docker.nix b/home/dev/docker.nix new file mode 100644 index 0000000..dfb8054 --- /dev/null +++ b/home/dev/docker.nix @@ -0,0 +1,9 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + diffoci + dive + docker-buildx + docker-compose + docker-ls + ]; +} diff --git a/home/dev/go.nix b/home/dev/go.nix new file mode 100644 index 0000000..0b27b06 --- /dev/null +++ b/home/dev/go.nix @@ -0,0 +1,15 @@ +{pkgs, ...}: { + programs.go = { + enable = true; + }; + + home.packages = with pkgs; [ + delve + gdlv + gofumpt + golangci-lint + gopls + gotools + go-tools + ]; +} diff --git a/home/dev/js.nix b/home/dev/js.nix new file mode 100644 index 0000000..fed6dd9 --- /dev/null +++ b/home/dev/js.nix @@ -0,0 +1,5 @@ +{pkgs, ...}: { + home.packages = with pkgs; [ + bun + ]; +} diff --git a/home/dev/k8s.nix b/home/dev/k8s.nix new file mode 100644 index 0000000..457e43b --- /dev/null +++ b/home/dev/k8s.nix @@ -0,0 +1,19 @@ +{pkgs, ...}: { + imports = [ + ./k9s.nix + ]; + + home.packages = with pkgs; [ + (google-cloud-sdk.withExtraComponents [google-cloud-sdk.components.gke-gcloud-auth-plugin]) + helmfile + kubectl + kubectx + kubent + stern + (wrapHelm kubernetes-helm { + plugins = with pkgs.kubernetes-helmPlugins; [ + helm-diff + ]; + }) + ]; +} diff --git a/home/dev/k9s.nix b/home/dev/k9s.nix new file mode 100644 index 0000000..6c90e92 --- /dev/null +++ b/home/dev/k9s.nix @@ -0,0 +1,182 @@ +{ + programs.k9s = { + enable = true; + + views = { + "v1/pods" = { + sortColumn = "NAME:asc"; + columns = [ + "NAME" + "VERSION:.metadata.labels.version" + "READY" + "STATUS" + "RESTARTS" + "CPU" + "MEM" + "PF" + "IP" + "NODE|W" + "AGE" + "LAST RESTART|W" + "%CPU/R|H" + "%CPU/L|H" + "%MEM/R|H" + "%MEM/L|H" + "CPU/RL|H" + "MEM/RL|H" + "SERVICE-ACCOUNT|H" + "NOMINATED NODE|H" + "READINESS GATES|H" + "QOS|H" + "LABELS|H" + "VALID|H" + ]; + }; + }; + + plugins = { + stern = { + shortCut = "Ctrl-L"; + confirm = false; + description = "Logs <Stern>"; + scopes = [ "pods" ]; + command = "stern"; + background = false; + args = [ + "--tail" + "50" + "$FILTER" + "-n" + "$NAMESPACE" + "--context" + "$CONTEXT" + ]; + }; + }; + + settings = { + k9s = { + skipLatestRevCheck = true; + ui = { + logoless = true; + enableMouse = true; + skin = "solarized"; + }; + }; + }; + + skins = { + solarized = { + foreground = "#839495"; + background = "#002833"; + "current_line" = "#003440"; + selection = "#003440"; + comment = "#6272a4"; + cyan = "#2aa197"; + green = "#859901"; + orange = "#cb4a16"; + magenta = "#d33582"; + blue = "#2aa198"; + red = "#dc312e"; + k9s = { + body = { + fgColor = "#839495"; + bgColor = "#002833"; + logoColor = "#2aa198"; + }; + prompt = { + fgColor = "#839495"; + bgColor = "#002833"; + suggestColor = "#cb4a16"; + }; + info = { + fgColor = "#d33582"; + sectionColor = "#839495"; + }; + dialog = { + fgColor = "#839495"; + bgColor = "#002833"; + buttonFgColor = "#839495"; + buttonBgColor = "#d33582"; + buttonFocusFgColor = "white"; + buttonFocusBgColor = "#2aa197"; + labelFgColor = "#cb4a16"; + fieldFgColor = "#839495"; + }; + frame = { + border = { + fgColor = "#003440"; + focusColor = "#003440"; + }; + menu = { + fgColor = "#839495"; + keyColor = "#d33582"; + numKeyColor = "#d33582"; + }; + crumbs = { + fgColor = "#839495"; + bgColor = "#003440"; + activeColor = "#003440"; + }; + status = { + newColor = "#2aa197"; + modifyColor = "#2aa198"; + addColor = "#859901"; + errorColor = "#dc312e"; + highlightColor = "#cb4a16"; + killColor = "#6272a4"; + completedColor = "#6272a4"; + }; + title = { + fgColor = "#839495"; + bgColor = "#003440"; + highlightColor = "#cb4a16"; + counterColor = "#2aa198"; + filterColor = "#d33582"; + }; + }; + views = { + charts = { + bgColor = "default"; + defaultDialColors = ["#2aa198" "#dc312e"]; + defaultChartColors = ["#2aa198" "#dc312e"]; + }; + table = { + fgColor = "#839495"; + bgColor = "#002833"; + cursorFgColor = "#003440"; + cursorBgColor = "#003440"; + header = { + fgColor = "#839495"; + bgColor = "#002833"; + sorterColor = "#2aa197"; + }; + }; + xray = { + fgColor = "#839495"; + bgColor = "#002833"; + cursorColor = "#003440"; + graphicColor = "#2aa198"; + showIcons = false; + }; + yaml = { + keyColor = "#d33582"; + colonColor = "#2aa198"; + valueColor = "#839495"; + }; + logs = { + fgColor = "#839495"; + bgColor = "#002833"; + indicator = { + fgColor = "#839495"; + bgColor = "#003440"; + toggleOnColor = "#d33582"; + toggleOffColor = "#2aa198"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/home/dev/neovim.nix b/home/dev/neovim.nix new file mode 100644 index 0000000..37bdaea --- /dev/null +++ b/home/dev/neovim.nix @@ -0,0 +1,82 @@ +{pkgs, ...}: { + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + coc.enable = true; + plugins = with pkgs.vimPlugins; [ + NeoSolarized + copilot-vim + fzf-vim + nerdcommenter + vim-airline + vim-airline-themes + vim-go + vim-sleuth + vim-surround + { + plugin = undotree; + config = '' + nnoremap <F5> :UndotreeToggle<CR> + if has("persistent_undo") + let target_path = expand('~/.local/nvim-undo') + if !isdirectory(target_path) + call mkdir(target_path, "p", 0700) + endif + let &undodir=target_path + set undofile + endif + ''; + } + ]; + extraConfig = '' + filetype off + set nocompatible + set modelines=0 + set encoding=utf-8 + set scrolloff=3 + set wildmode=list:longest + set visualbell + set backspace=indent,eol,start + set laststatus=2 + set number + set history=1000 + set title + set ignorecase + set smartcase + set gdefault + set incsearch + set showmatch + set hlsearch + + let mapleader = "," + nmap <silent> <leader><space> :silent :nohlsearch<CR> + + set wrap + set textwidth=0 + set list + set listchars=tab:▸\ ,eol:¬ + set mousehide + set mouse=a + set cursorline + set cursorcolumn + + au VimResized * exe "normal! \<c-w>=" + + augroup vimrc_autocmd + autocmd! + + " jump to the last position when reopening a file + autocmd BufReadPost * + \ if line("'\"") > 1 && line("'\"") <= line("$") | + \ exe "normal! g`\"" | + \ endif + augroup END + + syn on + set background=dark + colorscheme NeoSolarized + ''; + }; +} diff --git a/home/dev/php.nix b/home/dev/php.nix new file mode 100644 index 0000000..a8a49a9 --- /dev/null +++ b/home/dev/php.nix @@ -0,0 +1,53 @@ +{pkgs, ...}: { + home.packages = [ + (pkgs.php82.buildEnv { + extensions = { + enabled, + all, + }: + enabled + ++ (with all; [ + bcmath + bz2 + calendar + dom + ctype + curl + enchant + exif + ffi + fileinfo + gd + gettext + grpc + iconv + intl + imagick + mbstring + mongodb + opcache + openssl + pdo_pgsql + pcntl + posix + pspell + rdkafka + redis + session + shmop + simplexml + sockets + sodium + sysvmsg + sysvsem + sysvshm + tidy + tokenizer + xmlreader + xmlwriter + xsl + zip + ]); + }) + ]; +} diff --git a/home/dev/virt-manager.nix b/home/dev/virt-manager.nix new file mode 100644 index 0000000..5aa991a --- /dev/null +++ b/home/dev/virt-manager.nix @@ -0,0 +1,8 @@ +{ + dconf.settings = { + "org/virt-manager/virt-manager/connections" = { + autoconnect = ["qemu:///system"]; + uris = ["qemu:///system"]; + }; + }; +} diff --git a/home/dev/zed-editor.nix b/home/dev/zed-editor.nix new file mode 100644 index 0000000..79bde2c --- /dev/null +++ b/home/dev/zed-editor.nix @@ -0,0 +1,76 @@ +{pkgs, ...}: { + programs.zed-editor = { + enable = true; + + extensions = [ + "dockerfile" + "docker-compose" + "git-firefly" + "golangci_lint" + "helm" + "html" + "make" + "nix" + "php" + ]; + + extraPackages = with pkgs; [ + alejandra + nil + ]; + + userSettings = { + vim_mode = true; + load_direnv = "shell_hook"; + show_whitespaces = "all"; + ui_font_size = 18; + buffer_font_size = 16; + buffer_font_family = "JetBrainsMono Nerd Font"; + hour_format = "hour24"; + assistant = { + default_model = { + # provider = "ollama"; + # model = "qwen2.5-coder:latest"; + provider = "copilot_chat"; + #model = "gpt-4o"; + model = "claude-3-5-sonnet"; + }; + version = "2"; + }; + theme = { + mode = "system"; + light = "Solarized Light"; + dark = "Solarized Dark"; + }; + languages = { + Nix = { + language_servers = [ + "nil" + "!nixd" + ]; + formatter = { + external = { + command = "alejandra"; + }; + }; + }; + }; + telemetry = { + metrics = false; + diagnostics = false; + }; + terminal = { + blinking = "off"; + env = { + TERM = "alacritty"; + }; + detect_venv = { + on = { + directories = [".env" "env" ".venv" "venv"]; + activate_script = "default"; + }; + }; + }; + }; + }; +} |