{ lib, pkgs, inputs, ... }: { imports = [ ./compositor/hyprland.nix ]; home.packages = [ pkgs.gnumake pkgs.git-crypt pkgs.maim pkgs.xkcdpass pkgs.speedtest-cli pkgs.bitwarden-cli # Language servers pkgs.nixfmt-rfc-style inputs.nil.packages."${pkgs.system}".nil pkgs.pyright pkgs.gopls pkgs.lua-language-server pkgs.ansible-language-server pkgs.ansible-lint # --- pkgs.fd pkgs.glow pkgs.eza pkgs.openssh pkgs.cobra-cli pkgs.yq-go # Programming languages pkgs.gleam pkgs.erlang_26 pkgs.elixir_1_15 pkgs.elixir_ls # Python formatted and linter pkgs.python313 pkgs.black pkgs.ruff pkgs.font-awesome pkgs.pinentry-gnome3 ]; home.sessionVariables = { EDITOR = "hx"; }; home.sessionPath = [ "$GOBIN" ]; programs.ripgrep.enable = true; programs.bat.enable = true; programs.btop.enable = true; programs.go = { enable = true; goPath = "go"; goBin = "go/bin"; }; programs.rbw.enable = true; programs.rbw.settings = { email = "jaspert.ras@gmail.com"; pinentry = pkgs.pinentry-gnome3; }; programs.zoxide = { enable = true; options = [ "--cmd cd" ]; }; programs.fzf.enable = true; programs.direnv = { enable = true; nix-direnv.enable = true; }; programs.zsh = { enable = true; defaultKeymap = "emacs"; envExtra = '' export ZVM_VI_INSERT_ESCAPE_BINDKEY="jk" ''; initExtra = '' # https://github.com/jeffreytse/zsh-vi-mode source ${pkgs.zsh-vi-mode}/share/zsh-vi-mode/zsh-vi-mode.plugin.zsh ''; shellAliases = { g = "git"; }; }; programs.git = { enable = true; aliases = { b = "branch"; f = "fetch"; p = "pull"; s = "status"; co = "checkout"; pu = "push"; nb = "checkout -b"; db = "branch -D"; lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; praise = "blame"; bump = "!git bump"; ae = "!git add -A && git commit --amend"; ad = "commit --amend"; ac = "!git add -A && git commit"; rmbs = "!git branch | grep -wv master | grep -wv main | xargs git branch -D"; }; extraConfig = { pull.rebase = false; init.defaultBranch = "main"; }; }; programs.starship = { enable = true; settings = { directory.style = "blue"; format = lib.concatStrings [ "$username" "$hostname" "$directory" "$git_branch" "$git_state" "$git_status" "$cmd_duration" "$line_break" "$python" "$openstack" "$character" ]; character = { success_symbol = "[❯](purple)"; error_symbol = "[❯](red)"; vimcmd_symbol = "[❮](green)"; }; git_branch = { format = "[$branch]($style)"; style = "bright-black"; }; git_status = { format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218) ($ahead_behind$stashed)]($style)"; style = "cyan"; conflicted = "​"; untracked = "​"; modified = "​"; staged = "​"; renamed = "​"; deleted = "​"; stashed = "≡"; }; git_state = { format = "'([$state( $progress_current/$progress_total)]($style))' "; style = "bright-black"; }; cmd_duration = { format = "[$duration]($style) "; style = "yellow"; }; python = { format = "[$virtualenv]($style) "; style = "bright-black"; }; }; }; home.file = { helix-ferra = { source = ./static/helix-wavez.toml; target = ".config/helix/themes/wavez.toml"; }; }; programs.helix = { enable = true; package = inputs.helix.packages."${pkgs.system}".helix; defaultEditor = true; languages = { language = [ { name = "python"; language-servers = [ "pyright" "ruff" ]; formatter = { command = "black"; args = ["--line-length" "88" "--quiet" "-"]; }; auto-format = true; } { name = "elixir"; language-servers = [ "elixir-ls" ]; formatter = { command = "mix format"; }; auto-format = true; } ]; language-server.pyright.config.python.analysis = { typeCheckingMode = "basic"; }; language-server.ruff = { command = "ruff"; }; language-server.ruff.config.setting = { args = ["--ignore" "E501" ]; }; language-server.intelephense = with pkgs.nodePackages; { command = "${intelephense}/bin/intelephense"; }; }; settings = { theme = "wavez"; keys.normal = { space.F = "file_picker_in_current_buffer_directory"; }; editor = { line-number = "relative"; bufferline = "always"; lsp = { enable = true; display-messages = true; }; indent-guides = { render = true; skip-levels = 1; }; auto-save = false; }; }; }; services.ssh-agent.enable = true; programs.ssh = { enable = true; package = "${pkgs.openssh}"; addKeysToAgent = "yes"; }; programs.alacritty = { enable = true; settings = { window = { padding = { x = 5; y = 2; }; }; env = { TERM = "alacritty-direct"; }; shell = { program = "${pkgs.zsh}/bin/zsh"; args = [ "-l" ]; }; } // builtins.fromJSON (builtins.readFile ./static/alacritty-wavez.json); }; programs.taskwarrior = { enable = true; package = "${pkgs.taskwarrior3}"; }; xdg.mimeApps = { enable = true; defaultApplications = { "x-scheme-handler/http" = "firefox.desktop"; "x-scheme-handler/https" = "firefox.desktop"; "x-scheme-handler/chrome" = "firefox.desktop"; "text/html" = "firefox.desktop"; "application/x-extension-htm" = "firefox.desktop"; "application/x-extension-html" = "firefox.desktop"; "application/x-extension-shtml" = "firefox.desktop"; "application/xhtml+xml" = "firefox.desktop"; "application/x-extension-xhtml" = "firefox.desktop"; "application/x-extension-xht" = "firefox.desktop"; }; associations.added = { "x-scheme-handler/http" = "firefox.desktop"; "x-scheme-handler/https" = "firefox.desktop"; "x-scheme-handler/chrome" = "firefox.desktop"; "text/html" = "firefox.desktop"; "application/x-extension-htm" = "firefox.desktop"; "application/x-extension-html" = "firefox.desktop"; "application/x-extension-shtml" = "firefox.desktop"; "application/xhtml+xml" = "firefox.desktop"; "application/x-extension-xhtml" = "firefox.desktop"; "application/x-extension-xht" = "firefox.desktop"; }; }; }