home: add helix editor
This commit is contained in:
parent
5b0728d163
commit
21b1f3a93c
5 changed files with 199 additions and 0 deletions
|
@ -32,6 +32,9 @@
|
||||||
agenix.url = "github:ryantm/agenix";
|
agenix.url = "github:ryantm/agenix";
|
||||||
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
agenix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
helix.url = "github:helix-editor/helix";
|
||||||
|
helix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
kernel-clr = { url = "github:clearlinux-pkgs/linux"; flake = false; };
|
kernel-clr = { url = "github:clearlinux-pkgs/linux"; flake = false; };
|
||||||
};
|
};
|
||||||
outputs = { self, nixpkgs, home-manager, nixos-hardware, ... }@inputs:
|
outputs = { self, nixpkgs, home-manager, nixos-hardware, ... }@inputs:
|
||||||
|
|
|
@ -64,6 +64,7 @@ in
|
||||||
# general program config
|
# general program config
|
||||||
imports = [
|
imports = [
|
||||||
./home/bat.nix
|
./home/bat.nix
|
||||||
|
./home/editor
|
||||||
./home/fzf.nix
|
./home/fzf.nix
|
||||||
./home/lsd.nix
|
./home/lsd.nix
|
||||||
./home/git.nix
|
./home/git.nix
|
||||||
|
|
35
users/max/home/editor/default.nix
Normal file
35
users/max/home/editor/default.nix
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
{ inputs, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
hx = {
|
||||||
|
config = {
|
||||||
|
theme = "custom";
|
||||||
|
editor = {
|
||||||
|
line-number = "relative";
|
||||||
|
cursor-shape = {
|
||||||
|
insert = "bar";
|
||||||
|
normal = "block";
|
||||||
|
select = "underline";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
languages = import ./languages.nix pkgs;
|
||||||
|
theme = import ./theme.nix;
|
||||||
|
};
|
||||||
|
|
||||||
|
mkTOML = name: value: let
|
||||||
|
json = pkgs.writeText "helix-${name}.json" (builtins.toJSON value);
|
||||||
|
in pkgs.runCommandNoCC "helix-${name}.toml" {} "${pkgs.remarshal}/bin/remarshal --if json --of toml -i ${json} -o $out";
|
||||||
|
|
||||||
|
in {
|
||||||
|
home.packages = [
|
||||||
|
inputs.helix.defaultPackage.${pkgs.system}
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
"helix/config.toml".source = mkTOML "config" hx.config;
|
||||||
|
"helix/languages.toml".source = mkTOML "languages" hx.languages;
|
||||||
|
"helix/themes/custom.toml".source = mkTOML "theme" hx.theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.shellAliases.vim = "hx";
|
||||||
|
}
|
32
users/max/home/editor/languages.nix
Normal file
32
users/max/home/editor/languages.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
pkgs: {
|
||||||
|
language = with pkgs; [
|
||||||
|
{
|
||||||
|
language-server = {command = "${rust-analyzer}/bin/rust-analyer";};
|
||||||
|
name = "rust";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
language-server = {command = "${clang-tools}/bin/clangd";};
|
||||||
|
name = "c";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
language-server = {command = "${clang-tools}/bin/clangd";};
|
||||||
|
name = "cpp";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
language-server = {command = "${gopls}/bin/gopls";};
|
||||||
|
name = "go";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
language-server = {command = "${python39Packages.python-lsp-server}/bin/pylsp";};
|
||||||
|
name = "python";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
language-server = {command = "${rnix-lsp}/bin/rnix-lsp";};
|
||||||
|
name = "nix";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
language-server = {command = "${haskell-language-server}/bin/haskell-language-server-wrapper";};
|
||||||
|
name = "haskell";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
128
users/max/home/editor/theme.nix
Normal file
128
users/max/home/editor/theme.nix
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
{
|
||||||
|
palette = {
|
||||||
|
base0 = "#131313";
|
||||||
|
base1 = "#191919";
|
||||||
|
base2 = "#222222";
|
||||||
|
base3 = "#363537";
|
||||||
|
base4 = "#525053";
|
||||||
|
base5 = "#69676c";
|
||||||
|
base6 = "#8b888f";
|
||||||
|
base7 = "#bab6c0";
|
||||||
|
base8 = "#f7f1ff";
|
||||||
|
base8x0c = "#2b2b2b";
|
||||||
|
blue = "#5ad4e6";
|
||||||
|
green = "#7bd88f";
|
||||||
|
orange = "#fd9353";
|
||||||
|
purple = "#948ae3";
|
||||||
|
red = "#fc618d";
|
||||||
|
yellow = "#fce566";
|
||||||
|
};
|
||||||
|
|
||||||
|
error = "red";
|
||||||
|
hint = "base8";
|
||||||
|
info = "base8";
|
||||||
|
warning = "orange";
|
||||||
|
|
||||||
|
attribute = "blue";
|
||||||
|
|
||||||
|
comment = {
|
||||||
|
fg = "base5";
|
||||||
|
modifiers = ["italic"];
|
||||||
|
};
|
||||||
|
|
||||||
|
constant = "orange";
|
||||||
|
"constant.builtin" = "red";
|
||||||
|
"constant.character.escape" = {fg = "base8";};
|
||||||
|
"constant.numeric" = "purple";
|
||||||
|
|
||||||
|
constructor = "blue";
|
||||||
|
|
||||||
|
diagnostic = {modifiers = ["underlined"];};
|
||||||
|
|
||||||
|
"diff.delta" = "orange";
|
||||||
|
"diff.minus" = "red";
|
||||||
|
"diff.plus" = "green";
|
||||||
|
|
||||||
|
function = "green";
|
||||||
|
"function.builtin" = {fg = "cyan";};
|
||||||
|
"function.macro" = {fg = "blue";};
|
||||||
|
|
||||||
|
|
||||||
|
keyword = {fg = "red";};
|
||||||
|
"keyword.directive" = "blue";
|
||||||
|
|
||||||
|
label = "base8";
|
||||||
|
|
||||||
|
"markup.bold" = {
|
||||||
|
fg = "orange";
|
||||||
|
modifiers = ["bold"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"markup.heading" = "green";
|
||||||
|
"markup.italic" = {
|
||||||
|
fg = "orange";
|
||||||
|
modifiers = ["italic"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"markup.link.text" = "yellow";
|
||||||
|
"markup.link.url" = {
|
||||||
|
fg = "orange";
|
||||||
|
modifiers = ["underlined"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"markup.quote" = "green";
|
||||||
|
|
||||||
|
module = "#f59762";
|
||||||
|
|
||||||
|
namespace = "base8";
|
||||||
|
|
||||||
|
operator = "red";
|
||||||
|
|
||||||
|
punctuation = "base6";
|
||||||
|
|
||||||
|
special = "#f59762";
|
||||||
|
|
||||||
|
string = "yellow";
|
||||||
|
|
||||||
|
type = "green";
|
||||||
|
"type.builtin" = {fg = "red";};
|
||||||
|
|
||||||
|
"ui.background" = {bg = "1a1a1a";};
|
||||||
|
|
||||||
|
"ui.cursor.match" = {bg = "base4";};
|
||||||
|
"ui.cursor.primary" = {
|
||||||
|
fg = "base7";
|
||||||
|
modifiers = ["reversed"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.help" = {bg = "base3";};
|
||||||
|
|
||||||
|
"ui.linenr" = {fg = "base5";};
|
||||||
|
"ui.linenr.selected" = {bg = "base3";};
|
||||||
|
|
||||||
|
"ui.menu.selected" = {
|
||||||
|
bg = "yellow";
|
||||||
|
fg = "base2";
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.popup" = {bg = "base3";};
|
||||||
|
"ui.selection" = {bg = "base4";};
|
||||||
|
"ui.statusline" = {bg = "base4";};
|
||||||
|
"ui.statusline.inactive" = {
|
||||||
|
bg = "base8x0c";
|
||||||
|
fg = "base8";
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.text" = {fg = "base8";};
|
||||||
|
"ui.text.focus" = {
|
||||||
|
fg = "yellow";
|
||||||
|
modifiers = ["bold"];
|
||||||
|
};
|
||||||
|
|
||||||
|
"ui.window" = {bg = "base3";};
|
||||||
|
|
||||||
|
variable = "base8";
|
||||||
|
"variable.builtin" = "red";
|
||||||
|
"variable.other.member" = "base8";
|
||||||
|
"variable.parameter" = "#f59762";
|
||||||
|
}
|
Loading…
Reference in a new issue