inputs: { config, pkgs, ... }: let inherit (pkgs.unstable) clang-tools elixir_ls rust-analyzer-unwrapped vimPlugins; inherit (pkgs.unstable.python3Packages) python-language-server; in { users.extraUsers.minijackson.packages = with pkgs; [ clang clang-tools elixir gcc gdb man-pages rr rtags ]; vim = { extraPlugins = with vimPlugins; [ nvim-lspconfig rust-tools-nvim ]; luaConfig = builtins.readFile ../../dotfiles/vim-dev.lua; variables = { clangd_path = "'${clang-tools}/bin/clangd'"; elixirls_path = "'${elixir_ls}/bin/elixir-ls'"; pyls_path = "'${python-language-server}/bin/pyls'"; rust_analyzer_path = "'${rust-analyzer-unwrapped}/bin/rust-analyzer'"; }; }; programs.zsh.interactiveShellInit = '' (( $+commands[rustc] )) && fpath+="$(rustc --print sysroot)/share/zsh/site-functions" ''; documentation.dev.enable = true; boot.kernel.sysctl = { # For RR "kernel.perf_event_paranoid" = 1; }; home-manager.users.minijackson = { config, ... }: { home.file.".clang-format".source = (pkgs.formats.yaml { }).generate "clang-format.yml" { BasedOnStyle = "Mozilla"; ColumnLimit = 100; TabWidth = 4; IndentWidth = 4; UseTab = "ForIndentation"; AccessModifierOffset = -4; AlwaysBreakAfterDefinitionReturnType = "None"; AlwaysBreakAfterReturnType = "None"; AlwaysBreakTemplateDeclarations = true; BinPackArguments = false; BinPackParameters = false; BreakConstructorInitializers = "BeforeComma"; Cpp11BracedListStyle = true; DerivePointerAlignment = false; NamespaceIndentation = "Inner"; PenaltyBreakBeforeFirstCallParameter = 2; PointerAlignment = "Left"; Standard = "Latest"; }; programs.direnv = { enable = true; enableBashIntegration = true; enableZshIntegration = true; }; }; services.lorri.enable = true; }