mirror of
https://codeberg.org/muon/home.git
synced 2025-12-06 08:07:45 +00:00
318 lines
7.7 KiB
Nix
318 lines
7.7 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
config,
|
|
inputs,
|
|
...
|
|
}: let
|
|
zellij-muon = pkgs.zellij.overrideAttrs (previousAttrs: {
|
|
patches = previousAttrs.patches ++ [./zellij/floating_fix.patch];
|
|
});
|
|
in {
|
|
options.mods.terminal.development.enable =
|
|
lib.mkEnableOption "enables cli editor";
|
|
|
|
imports = [inputs.nvf.homeManagerModules.default];
|
|
|
|
config = lib.mkIf config.mods.terminal.development.enable {
|
|
home.packages = with pkgs; [
|
|
# Nix
|
|
nil
|
|
|
|
# Rust
|
|
rust-analyzer
|
|
lldb_18
|
|
|
|
# Shaders
|
|
glsl_analyzer
|
|
wgsl-analyzer
|
|
|
|
# Python
|
|
black
|
|
];
|
|
|
|
programs.direnv = {
|
|
enable = true;
|
|
nix-direnv.enable = true;
|
|
enableZshIntegration = lib.mkIf config.mods.terminal.zsh.enable true;
|
|
};
|
|
|
|
programs.zellij = {
|
|
settings = {
|
|
default_mode._args = ["locked"];
|
|
show_startup_tips._args = [false];
|
|
show_release_notes._args = [false];
|
|
};
|
|
|
|
extraConfig = builtins.readFile ./zellij/config.kdl;
|
|
|
|
layouts = {
|
|
dev = {
|
|
layout = {
|
|
_children = [
|
|
{
|
|
default_tab_template = {
|
|
_children = [
|
|
{
|
|
pane = {
|
|
size = 1;
|
|
borderless = true;
|
|
plugin = {
|
|
location = "zellij:tab-bar";
|
|
};
|
|
};
|
|
}
|
|
{"children" = {};}
|
|
{
|
|
pane = {
|
|
size = 1;
|
|
borderless = true;
|
|
plugin = {
|
|
location = "zellij:status-bar";
|
|
};
|
|
};
|
|
}
|
|
];
|
|
};
|
|
}
|
|
{
|
|
tab = {
|
|
_props = {
|
|
name = "project";
|
|
focus = true;
|
|
};
|
|
_children = [
|
|
{
|
|
pane = {
|
|
command = "zsh";
|
|
args = ["-c" "direnv exec . nvim"];
|
|
};
|
|
}
|
|
];
|
|
};
|
|
}
|
|
{
|
|
tab = {
|
|
_props = {
|
|
name = "test";
|
|
};
|
|
_children = [
|
|
{
|
|
pane = {};
|
|
}
|
|
];
|
|
};
|
|
}
|
|
{
|
|
tab = {
|
|
_props = {
|
|
name = "git";
|
|
};
|
|
_children = [
|
|
{
|
|
pane = {
|
|
command = "lazygit";
|
|
};
|
|
}
|
|
];
|
|
};
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
home.sessionVariables.EDITOR = "hx";
|
|
programs.zsh.sessionVariables.EDITOR = "hx";
|
|
|
|
programs.helix = {
|
|
enable = true;
|
|
package = pkgs.evil-helix;
|
|
|
|
settings = {
|
|
keys.normal = {
|
|
"esc" = ["collapse_selection" "keep_primary_selection"];
|
|
"Z" = {
|
|
"Q" = ":quit!";
|
|
"Z" = ":write-quit!";
|
|
};
|
|
"V" = ["select_mode" "extend_to_line_bounds"];
|
|
};
|
|
editor = {
|
|
line-number = "relative";
|
|
completion-replace = true;
|
|
bufferline = "always";
|
|
rulers = [80];
|
|
soft-wrap.enable = true;
|
|
indent-guides.render = true;
|
|
cursor-shape = {
|
|
normal = "block";
|
|
insert = "bar";
|
|
select = "underline";
|
|
};
|
|
};
|
|
};
|
|
|
|
languages.language-server = {
|
|
glsl.command = "${pkgs.glsl_analyzer}/bin/glsl_analyzer";
|
|
wgsl.command = "${pkgs.wgsl-analyzer}/bin/wgsl-analyzer";
|
|
};
|
|
|
|
languages.language = [
|
|
{
|
|
name = "nix";
|
|
auto-format = true;
|
|
formatter.command = "${pkgs.nixfmt-classic}/bin/nixfmt";
|
|
}
|
|
{
|
|
name = "rust";
|
|
auto-format = true;
|
|
formatter.command = "rustfmt";
|
|
}
|
|
{
|
|
name = "glsl";
|
|
language-servers = ["glsl"];
|
|
}
|
|
{
|
|
name = "wgsl";
|
|
language-servers = ["wgsl"];
|
|
}
|
|
{
|
|
name = "python";
|
|
auto-format = true;
|
|
formatter = {
|
|
command = "${pkgs.black}/bin/black";
|
|
args = ["-" "--quiet" "--line-length=79"];
|
|
};
|
|
}
|
|
];
|
|
};
|
|
|
|
programs.nvf = {
|
|
enable = true;
|
|
settings = {
|
|
vim = {
|
|
viAlias = false;
|
|
vimAlias = true;
|
|
lsp = {
|
|
enable = true;
|
|
formatOnSave = true;
|
|
};
|
|
|
|
keymaps = [
|
|
{
|
|
key = "<leader>w";
|
|
mode = ["n"];
|
|
action = ":w<CR>";
|
|
silent = true;
|
|
desc = "Save file";
|
|
}
|
|
{
|
|
key = "gd";
|
|
mode = "n";
|
|
silent = true;
|
|
action = "<cmd>lua vim.lsp.buf.definition()<CR>";
|
|
desc = "Go to Definition";
|
|
}
|
|
];
|
|
|
|
languages = {
|
|
enableFormat = true;
|
|
enableTreesitter = true;
|
|
enableExtraDiagnostics = true;
|
|
|
|
nix.enable = true;
|
|
nix.lsp.server = "nixd";
|
|
|
|
markdown.enable = true;
|
|
bash.enable = true;
|
|
rust.enable = true;
|
|
rust.crates.enable = true;
|
|
|
|
python.enable = true;
|
|
python.lsp.server = "pyright";
|
|
# python.lsp.package = [(lib.getExe pkgs.ruff) "server"];
|
|
python.format.type = "ruff";
|
|
|
|
clang = {
|
|
enable = true;
|
|
cHeader = true;
|
|
};
|
|
};
|
|
|
|
statusline.lualine.enable = true;
|
|
telescope.enable = true;
|
|
autocomplete.nvim-cmp.enable = true;
|
|
autopairs.nvim-autopairs.enable = true;
|
|
tabline.nvimBufferline.enable = true;
|
|
treesitter.context.enable = true;
|
|
dashboard.alpha.enable = true;
|
|
comments.comment-nvim.enable = true;
|
|
|
|
options = {
|
|
tabstop = 2;
|
|
shiftwidth = 0;
|
|
};
|
|
|
|
notes = {
|
|
# orgmode.enable = true;
|
|
todo-comments.enable = true;
|
|
};
|
|
|
|
spellcheck = {enable = true;};
|
|
|
|
binds = {
|
|
whichKey.enable = true;
|
|
cheatsheet.enable = true;
|
|
};
|
|
|
|
git = {
|
|
enable = true;
|
|
gitsigns.enable = true;
|
|
gitsigns.codeActions.enable =
|
|
false; # throws an annoying debug message
|
|
};
|
|
|
|
terminal = {
|
|
toggleterm = {
|
|
enable = true;
|
|
lazygit.enable = true;
|
|
};
|
|
};
|
|
|
|
utility = {
|
|
diffview-nvim.enable = true;
|
|
surround.enable = true;
|
|
# multicursors.enable = true;
|
|
undotree.enable = true;
|
|
|
|
motion = {
|
|
hop.enable = true;
|
|
leap.enable = true;
|
|
};
|
|
};
|
|
|
|
visuals = {
|
|
nvim-web-devicons.enable = true;
|
|
nvim-cursorline.enable = true;
|
|
cinnamon-nvim.enable = true;
|
|
fidget-nvim.enable = true;
|
|
|
|
highlight-undo.enable = true;
|
|
indent-blankline.enable = true;
|
|
};
|
|
|
|
ui = {
|
|
borders.enable = true;
|
|
noice.enable = true;
|
|
colorizer.enable = true;
|
|
illuminate.enable = true;
|
|
smartcolumn.enable = true;
|
|
fastaction.enable = true;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
}
|