inputs: { config, pkgs, ... }: let inherit (pkgs.unstable) clang 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 vim-grammarous ]; luaConfig = builtins.readFile ../../dotfiles/vim-dev.lua; # TODO: make this a NixOS module variables = { clangd_cmd = "{ '${clang-tools}/bin/clangd', '--resource-dir=${clang}/resource-root' }"; elixirls_cmd = "{ '${elixir_ls}/bin/elixir-ls' }"; pyls_cmd = "{ '${python-language-server}/bin/pyls' }"; rust_analyzer_cmd = "{ '${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; }