aboutsummaryrefslogtreecommitdiffstats
path: root/home
diff options
context:
space:
mode:
Diffstat (limited to 'home')
-rw-r--r--home/core/default.nix66
-rw-r--r--home/core/fzf.nix6
-rw-r--r--home/core/git.nix32
-rw-r--r--home/core/keychain.nix14
-rw-r--r--home/core/starship.nix23
-rw-r--r--home/core/tmux.nix22
-rw-r--r--home/core/zsh.nix89
-rw-r--r--home/default.nix16
-rw-r--r--home/desktop/alacritty.nix34
-rw-r--r--home/desktop/default.nix34
-rw-r--r--home/desktop/games.nix6
-rw-r--r--home/desktop/ghostty.nix10
-rw-r--r--home/desktop/internet.nix13
-rw-r--r--home/desktop/multimedia.nix33
-rw-r--r--home/desktop/productivity.nix15
-rw-r--r--home/dev/ai.nix9
-rw-r--r--home/dev/db.nix13
-rw-r--r--home/dev/default.nix39
-rw-r--r--home/dev/direnv.nix6
-rw-r--r--home/dev/docker.nix9
-rw-r--r--home/dev/go.nix15
-rw-r--r--home/dev/js.nix5
-rw-r--r--home/dev/k8s.nix19
-rw-r--r--home/dev/k9s.nix182
-rw-r--r--home/dev/neovim.nix82
-rw-r--r--home/dev/php.nix53
-rw-r--r--home/dev/virt-manager.nix8
-rw-r--r--home/dev/zed-editor.nix76
28 files changed, 929 insertions, 0 deletions
diff --git a/home/core/default.nix b/home/core/default.nix
new file mode 100644
index 0000000..575bef0
--- /dev/null
+++ b/home/core/default.nix
@@ -0,0 +1,66 @@
+{pkgs, ...}: {
+ imports = [
+ ./fzf.nix
+ ./git.nix
+ ./keychain.nix
+ ./starship.nix
+ ./tmux.nix
+ ./zsh.nix
+ ];
+
+ programs = {
+ atuin = {
+ enable = true;
+ settings = {
+ enter_accept = false;
+ };
+ flags = [
+ "--disable-up-arrow"
+ ];
+ };
+ nix-index.enable = true;
+ zoxide = {
+ enable = true;
+ options = [
+ "--cmd cd"
+ ];
+ };
+ };
+
+ home.packages = with pkgs; [
+ bat
+ btop
+ comma
+ dnsutils
+ dogdns
+ dua
+ duf
+ exfatprogs
+ eza
+ fd
+ fortune
+ gocryptfs
+ htop
+ inetutils
+ jnv
+ jq
+ iperf
+ lm_sensors
+ ncdu
+ nmap
+ ntfy-sh
+ nvd
+ pwgen
+ rclone
+ restic
+ ripgrep
+ sshfs
+ tldr
+ unzip
+ unrar
+ wget
+ wol
+ zip
+ zstd
+ ];
+}
diff --git a/home/core/fzf.nix b/home/core/fzf.nix
new file mode 100644
index 0000000..2278cef
--- /dev/null
+++ b/home/core/fzf.nix
@@ -0,0 +1,6 @@
+{
+ programs.fzf = {
+ enable = true;
+ defaultCommand = "rg --files --no-ignore-vcs --hidden";
+ };
+}
diff --git a/home/core/git.nix b/home/core/git.nix
new file mode 100644
index 0000000..89ed25c
--- /dev/null
+++ b/home/core/git.nix
@@ -0,0 +1,32 @@
+{
+ programs.git = {
+ enable = true;
+ userName = "Anastasis Grammenos";
+ userEmail = "anastasis@learnworlds.com";
+ aliases = {
+ retag = "!f() { git tag -f -a \"$1\" -m \"$1\" && git push origin \"$1\" -f; }; f";
+ deltag = "!f() { git tag -d \"$1\" && git push --delete origin \"$1\"; }; f";
+ };
+ extraConfig = {
+ init = {
+ defaultBranch = "main";
+ };
+ diff = {
+ colorMoved = "zebra";
+ #tool = "nvim -d";
+ };
+ fetch = {
+ prune = true;
+ };
+ log = {
+ date = "iso8601";
+ };
+ #merge = {
+ # tool = "nvimdiff";
+ #};
+ pull = {
+ rebase = false;
+ };
+ };
+ };
+}
diff --git a/home/core/keychain.nix b/home/core/keychain.nix
new file mode 100644
index 0000000..2dcced1
--- /dev/null
+++ b/home/core/keychain.nix
@@ -0,0 +1,14 @@
+{
+ programs.keychain = {
+ enable = true;
+ keys = [
+ "github_ed25519"
+ "id_ed25519"
+ "id_rsa"
+ ];
+ extraFlags = [
+ "--quiet"
+ "--timeout 120"
+ ];
+ };
+}
diff --git a/home/core/starship.nix b/home/core/starship.nix
new file mode 100644
index 0000000..8465f54
--- /dev/null
+++ b/home/core/starship.nix
@@ -0,0 +1,23 @@
+{
+ programs.starship = {
+ enable = true;
+
+ settings = {
+ directory = {
+ truncate_to_repo = false;
+ truncation_symbol = "…";
+ };
+
+ command_timeout = 2000;
+
+ gcloud = {
+ disabled = true;
+ };
+
+ kubernetes = {
+ disabled = false;
+ format = "[$symbol$context(/$namespace)]($style) in ";
+ };
+ };
+ };
+}
diff --git a/home/core/tmux.nix b/home/core/tmux.nix
new file mode 100644
index 0000000..6f591b8
--- /dev/null
+++ b/home/core/tmux.nix
@@ -0,0 +1,22 @@
+{
+ programs.tmux = {
+ enable = true;
+ keyMode = "vi";
+ historyLimit = 5000;
+ mouse = true;
+ terminal = "screen-256color";
+ extraConfig = ''
+ set -as terminal-features ",*:RGB"
+ set-option -g status-style fg=yellow,bg=black
+ set-window-option -g window-status-style fg=brightblue,bg=default
+ set-window-option -g window-status-current-style fg=brightred,bg=default
+ set-option -g pane-border-style fg=black
+ set-option -g pane-active-border-style fg=brightgreen
+ set-option -g message-style fg=brightred,bg=black
+ set-option -g display-panes-active-colour blue
+ set-option -g display-panes-colour brightred
+ set-window-option -g clock-mode-colour green
+ set-window-option -g window-status-bell-style fg=black,bg=red
+ '';
+ };
+}
diff --git a/home/core/zsh.nix b/home/core/zsh.nix
new file mode 100644
index 0000000..e95ac5c
--- /dev/null
+++ b/home/core/zsh.nix
@@ -0,0 +1,89 @@
+{pkgs, ...}: {
+ home.sessionVariables = {
+ ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=60";
+ NTFY_TOPIC = "generic";
+ };
+
+ programs.zsh = {
+ enable = true;
+ autosuggestion.enable = true;
+ autocd = true;
+ oh-my-zsh = {
+ enable = true;
+ plugins = [
+ "docker"
+ "docker-compose"
+ "git"
+ "golang"
+ "kubectl"
+ "nmap"
+ "vi-mode"
+ ];
+ };
+
+ initContent = ''
+ # run getnixindexdb first
+ source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
+
+ function getnixindexdb {
+ local _index="index-$(uname -m | sed 's/^arm64$/aarch64/')-$(uname | tr A-Z a-z)"
+ local _cache=~/.cache/nix-index
+ local _file=''${_cache}/files
+ test -d ''${_cache} || mkdir -p ''${_cache}
+ curl -s -L -R -o ''${_file} -z ''${_file} \
+ "https://github.com/Mic92/nix-index-database/releases/latest/download/''${_index}"
+ }
+
+ function kwide {
+ kubectl $@ -o wide
+ }
+
+ function ktail {
+ local _app=$1; shift
+ kubectl logs --prefix -f -l app=''${_app} $@ | \
+ grep -E -v 'health|metrics'
+ }
+
+ function weather {
+ local _city=Cholargos
+ [[ "$1" ]] && _city="$1"
+ curl -s "https://wttr.in/''${_city}?format=3"
+ }
+
+ function rsb {
+ local _rsb=$HOME/.rsbackup
+ if [[ -z "$1" ]]; then
+ echo "available options: $(cd ''${_rsb}; echo *)"
+ return 2
+ fi
+ cd "''${_rsb}/$1"
+ }
+
+ echo -e "\n$(fortune -s)"
+ '';
+
+ shellAliases = {
+ ls = "eza --header --git --icons --long";
+ l = "ls";
+ la = "ls -a";
+ cp = "nocorrect cp -i";
+ rm = "nocorrect rm -i";
+ mv = "nocorrect mv -i";
+ df = "df -h";
+ dmesg = "sudo dmesg -HTP";
+ dpss = "docker ps --format 'table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}'";
+ du = "du -hsc";
+ gti = "git";
+ gdet = "git deltag";
+ gret = "git retag";
+ mkdir = "nocorrect mkdir";
+ whatsmyip = "dig -4 +short myip.opendns.com @resolver1.opendns.com";
+ whatsmyip-curl = "curl -4 -s https://ifconfig.co";
+ kns = "kubens";
+ kctx = "kubectx";
+ kingtail = "kubectl logs -f -n default daemonsets.apps/nginx-ingress-nginx-controller";
+ lwdc = "docker-compose -f docker-compose.yml -f extra/account.yml -f extra/adminer.yml -f extra/website.yml -f extra/marketplace.yml -f extra/cameraman.yml -f extra/pubsub-emulator.yml -f extra/cloner.yml -f extra/lwdemomaker.yml -f extra/iplocate.yml -f extra/mailpit.yml -f docker-compose.override.yml";
+ lwdctail = "lwdc logs --no-log-prefix --no-color -f";
+ };
+ };
+}
diff --git a/home/default.nix b/home/default.nix
new file mode 100644
index 0000000..df80943
--- /dev/null
+++ b/home/default.nix
@@ -0,0 +1,16 @@
+{ config, pkgs, lib, ... }:
+{
+ home.username = "grm";
+ home.homeDirectory = lib.mkForce "/home/grm";
+
+ programs.home-manager.enable = true;
+
+ # This value determines the Home Manager release that your configuration is
+ # compatible with. This helps avoid breakage when a new Home Manager release
+ # introduces backwards incompatible changes.
+ #
+ # You should not change this value, even if you update Home Manager. If you do
+ # want to update the value, then make sure to first check the Home Manager
+ # release notes.
+ home.stateVersion = "23.05"; # Please read the comment before changing.
+}
diff --git a/home/desktop/alacritty.nix b/home/desktop/alacritty.nix
new file mode 100644
index 0000000..6c31e68
--- /dev/null
+++ b/home/desktop/alacritty.nix
@@ -0,0 +1,34 @@
+{
+ programs.alacritty = {
+ enable = true;
+ settings = {
+ colors = {
+ primary = {
+ background = "0x002b36";
+ foreground = "0x839496";
+ };
+ normal = {
+ black = "0x073642";
+ red = "0xdc322f";
+ green = "0x859900";
+ yellow = "0xb58900";
+ blue = "0x268bd2";
+ magenta = "0xd33682";
+ cyan = "0x2aa198";
+ white = "0xeee8d5";
+ };
+
+ bright = {
+ black = "0x002b36";
+ red = "0xcb4b16";
+ green = "0x586e75";
+ yellow = "0x657b83";
+ blue = "0x839496";
+ magenta = "0x6c71c4";
+ cyan = "0x93a1a1";
+ white = "0xfdf6e3";
+ };
+ };
+ };
+ };
+}
diff --git a/home/desktop/default.nix b/home/desktop/default.nix
new file mode 100644
index 0000000..1012454
--- /dev/null
+++ b/home/desktop/default.nix
@@ -0,0 +1,34 @@
+{
+ config,
+ pkgs,
+ ...
+}: {
+ imports = [
+ ./alacritty.nix
+ ./games.nix
+ ./ghostty.nix
+ ./internet.nix
+ ./multimedia.nix
+ ./productivity.nix
+ ];
+
+ home.sessionVariables.NIXOS_OZONE_WL = "1";
+
+ home.packages = with pkgs; [
+ wl-clipboard
+ xorg.xhost
+ ];
+
+ home.file.pw-pa-conf = {
+ text = ''
+ pulse.properties = {
+ server.address = [
+ "unix:native"
+ "unix:/tmp/pulseaudio.socket"
+ ]
+ }
+ '';
+
+ target = "${config.xdg.configHome}/pipewire/pipewire-pulse.conf.d/socket.conf";
+ };
+}
diff --git a/home/desktop/games.nix b/home/desktop/games.nix
new file mode 100644
index 0000000..eb0bc4a
--- /dev/null
+++ b/home/desktop/games.nix
@@ -0,0 +1,6 @@
+{pkgs, ...}: {
+ home.packages = with pkgs; [
+ protonup-qt
+ steam-run
+ ];
+}
diff --git a/home/desktop/ghostty.nix b/home/desktop/ghostty.nix
new file mode 100644
index 0000000..7de8af8
--- /dev/null
+++ b/home/desktop/ghostty.nix
@@ -0,0 +1,10 @@
+{
+ programs.ghostty = {
+ enable = true;
+ enableZshIntegration = true;
+ settings = {
+ theme = "Solarized Dark - Patched";
+ font-size = 12;
+ };
+ };
+}
diff --git a/home/desktop/internet.nix b/home/desktop/internet.nix
new file mode 100644
index 0000000..9c7f3e8
--- /dev/null
+++ b/home/desktop/internet.nix
@@ -0,0 +1,13 @@
+{pkgs, ...}: {
+ home.packages = with pkgs; [
+ discord
+ firefox
+ google-chrome
+ monolith
+ nextcloud-client
+ signal-desktop
+ slack
+ transmission_3-qt
+ yt-dlp
+ ];
+}
diff --git a/home/desktop/multimedia.nix b/home/desktop/multimedia.nix
new file mode 100644
index 0000000..bbb7fc2
--- /dev/null
+++ b/home/desktop/multimedia.nix
@@ -0,0 +1,33 @@
+{pkgs, ...}: {
+ home.packages = with pkgs; [
+ audacity
+ curtail
+ darktable
+ feishin
+ ffmpeg
+ gimp3
+ glaxnimate
+ handbrake
+ imagemagick
+ inkscape
+ jellyfin-media-player
+ mousai
+ obs-studio
+ picard
+ scribus
+ tidal-dl
+ vhs
+ vlc
+ ];
+
+ programs.mpv = {
+ enable = true;
+ config = {
+ gpu-context = "wayland";
+ hwdec = "auto-safe";
+ profile = "gpu-hq";
+ ytdl-format = "bestvideo+bestaudio";
+ vo = "gpu";
+ };
+ };
+}
diff --git a/home/desktop/productivity.nix b/home/desktop/productivity.nix
new file mode 100644
index 0000000..b972b43
--- /dev/null
+++ b/home/desktop/productivity.nix
@@ -0,0 +1,15 @@
+{pkgs, ...}: {
+ home.packages = with pkgs; [
+ bitwarden
+ bitwarden-cli
+ calibre
+ fastfetch
+ gnome-frog
+ hunspell
+ libreoffice-qt
+ obsidian
+ pdfcpu
+ tradingview
+ trezor-suite
+ ];
+}
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";
+ };
+ };
+ };
+ };
+ };
+}