Compare commits
2 commits
808cdb3201
...
76e89bf33c
| Author | SHA1 | Date | |
|---|---|---|---|
| 76e89bf33c | |||
| d93bf44ae0 |
12 changed files with 205 additions and 69 deletions
|
|
@ -1,14 +1,9 @@
|
||||||
[default]
|
[settings]
|
||||||
depends = ["nvim"]
|
default_target_type = "automatic"
|
||||||
|
|
||||||
[default.files]
|
[helpers]
|
||||||
"README.md" = ""
|
flatten_table = ".dotter/handlebars_helpers/flatten_table.rhai"
|
||||||
chezmoi = ""
|
header = ".dotter/handlebars_helpers/header.rhai"
|
||||||
config = ""
|
|
||||||
exports = ""
|
|
||||||
scripts = ""
|
|
||||||
|
|
||||||
[default.variables]
|
|
||||||
|
|
||||||
# CLI package
|
# CLI package
|
||||||
[cli]
|
[cli]
|
||||||
|
|
@ -22,6 +17,9 @@ depends = ["nvim", "zsh"]
|
||||||
"config/yazi" = "~/.config/yazi"
|
"config/yazi" = "~/.config/yazi"
|
||||||
"config/zellij" = "~/.config/zellij"
|
"config/zellij" = "~/.config/zellij"
|
||||||
|
|
||||||
|
[dev]
|
||||||
|
depends = ["rust"]
|
||||||
|
|
||||||
[dev.files]
|
[dev.files]
|
||||||
"config/git" = "~/.config/git"
|
"config/git" = "~/.config/git"
|
||||||
"config/lazygit" = { target = "~/.config/lazygit", type = "symbolic"}
|
"config/lazygit" = { target = "~/.config/lazygit", type = "symbolic"}
|
||||||
|
|
@ -38,8 +36,8 @@ depends = ["nvim", "zsh"]
|
||||||
[nushell.files]
|
[nushell.files]
|
||||||
"config/nushell" = "~/.config/nushell"
|
"config/nushell" = "~/.config/nushell"
|
||||||
|
|
||||||
[settings]
|
|
||||||
default_target_type = "automatic"
|
|
||||||
|
|
||||||
[nvim.files]
|
[nvim.files]
|
||||||
"config/nvim" = "~/.config/nvim"
|
"config/nvim" = "~/.config/nvim"
|
||||||
|
|
||||||
|
[rust.variables]
|
||||||
|
cargo.packages = []
|
||||||
|
|
|
||||||
30
.dotter/handlebars_helpers/flatten_table.rhai
Normal file
30
.dotter/handlebars_helpers/flatten_table.rhai
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* Flatten a table into a list of values.
|
||||||
|
* The table has to be in the form of
|
||||||
|
* ```toml
|
||||||
|
* [table.subtable]
|
||||||
|
* variable1 = ["value1", "value2"]
|
||||||
|
*
|
||||||
|
* [table.subtable]
|
||||||
|
* variable2 = ["value3", "value4"]
|
||||||
|
*
|
||||||
|
* then we use it in handlerbars like this:
|
||||||
|
*
|
||||||
|
* {{ flatten_table table.subtable }}
|
||||||
|
*
|
||||||
|
* and it will return an array with all the arrays of subtable
|
||||||
|
*/
|
||||||
|
|
||||||
|
if type_of(params[0]) != "map" {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let table = params[0];
|
||||||
|
|
||||||
|
let result = [];
|
||||||
|
|
||||||
|
for value in table.values() {
|
||||||
|
result.append(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
result
|
||||||
48
.dotter/handlebars_helpers/header.rhai
Normal file
48
.dotter/handlebars_helpers/header.rhai
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
let x_padding = hash["padding"] ?? 50;
|
||||||
|
|
||||||
|
let header = #{
|
||||||
|
x_padding: x_padding,
|
||||||
|
out: "",
|
||||||
|
append: |suffix| {
|
||||||
|
this.out += suffix + "\n";
|
||||||
|
},
|
||||||
|
append_center: |suffix| {
|
||||||
|
|
||||||
|
let suffix_len = suffix.len();
|
||||||
|
let padding = this.x_padding - suffix_len / 2;
|
||||||
|
let fill = "";
|
||||||
|
fill.pad(padding, " ");
|
||||||
|
|
||||||
|
this.out += fill + suffix.to_upper() + fill + "\n";
|
||||||
|
},
|
||||||
|
append_divider: || {
|
||||||
|
let divider = "";
|
||||||
|
divider.pad(this.x_padding * 2, "─");
|
||||||
|
|
||||||
|
this.append(divider);
|
||||||
|
},
|
||||||
|
open_echo: || {
|
||||||
|
this.out += "echo -e '\n";
|
||||||
|
},
|
||||||
|
close_echo: || {
|
||||||
|
this.out += "'";
|
||||||
|
},
|
||||||
|
to_string: || {
|
||||||
|
return this.out;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
header.open_echo();
|
||||||
|
|
||||||
|
header.append_divider();
|
||||||
|
|
||||||
|
|
||||||
|
params.for_each(|idx| {
|
||||||
|
header.append_center(this);
|
||||||
|
});
|
||||||
|
|
||||||
|
header.append_divider();
|
||||||
|
header.close_echo();
|
||||||
|
|
||||||
|
return header.to_string();
|
||||||
|
|
||||||
54
.dotter/machines/fedora.toml
Normal file
54
.dotter/machines/fedora.toml
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Dotter only support merging tables, and put the key-values into the global scope of the tables
|
||||||
|
# If we try to use the same variable name in a package, it will throw an error
|
||||||
|
# if we try to use the same key in a nested table, it will be overriden with the last value
|
||||||
|
#
|
||||||
|
# the fix to this is to have a table with unique keys, this is supported by handlerbars {{#each}} directive
|
||||||
|
# but will give us an array as value, so we need to flatten it
|
||||||
|
|
||||||
|
[utils.variables]
|
||||||
|
pkg-install = "sudo dnf install -y"
|
||||||
|
|
||||||
|
[cli.variables.copr]
|
||||||
|
cli = [
|
||||||
|
"atim/lazygit",
|
||||||
|
"atim/starship"
|
||||||
|
]
|
||||||
|
|
||||||
|
[cli.variables.packages]
|
||||||
|
cli = [
|
||||||
|
"bat",
|
||||||
|
"dnf-plugin-system-upgrade",
|
||||||
|
"duf",
|
||||||
|
"eza",
|
||||||
|
"fd-find",
|
||||||
|
"firefox-dev",
|
||||||
|
"flatpak",
|
||||||
|
"fzf",
|
||||||
|
"git",
|
||||||
|
"lazygit",
|
||||||
|
"neovim",
|
||||||
|
"remove-retired-packages",
|
||||||
|
"ripgrep",
|
||||||
|
"sd",
|
||||||
|
"starship",
|
||||||
|
"tealdeer",
|
||||||
|
"zoxide",
|
||||||
|
"zsh",
|
||||||
|
]
|
||||||
|
|
||||||
|
[dev.variables.packages]
|
||||||
|
dev = [
|
||||||
|
"gcc",
|
||||||
|
"gcc-c++",
|
||||||
|
"nodejs",
|
||||||
|
"openssl",
|
||||||
|
"openssl-devel",
|
||||||
|
"tmux",
|
||||||
|
"tree-sitter-cli",
|
||||||
|
]
|
||||||
|
|
||||||
|
[rust.variables]
|
||||||
|
cargo.packages = [
|
||||||
|
"yazi-fm",
|
||||||
|
"yazi-cli",
|
||||||
|
]
|
||||||
|
|
@ -1 +1,43 @@
|
||||||
sudo dnf install -y {{# each packages }} {{ this }} {{/each}}
|
#!/usr/bin/env bash
|
||||||
|
# shellcheck disable=all
|
||||||
|
# This is a handlerbars template, so ignore issues
|
||||||
|
|
||||||
|
{{!~ Detect the distribution ~}}
|
||||||
|
{{~ assign "distro" (trim (command_output "awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '\"'")) ~}}
|
||||||
|
|
||||||
|
{{ header "Running pre deploy script for distro" (to_title_case distro) }}
|
||||||
|
|
||||||
|
{{#if (eq distro "fedora") ~}}
|
||||||
|
|
||||||
|
{{! extract the copr repositories variable }}
|
||||||
|
{{~ assign "copr" (flatten_table copr) ~}}
|
||||||
|
|
||||||
|
{{#if (ne (len copr) 0) ~}}
|
||||||
|
{{ header "Enabling copr repositories" }}
|
||||||
|
|
||||||
|
{{# each copr }}
|
||||||
|
sudo -B dnf copr enable -y '{{ this }}'
|
||||||
|
{{ /each }}
|
||||||
|
|
||||||
|
{{~ /if }}
|
||||||
|
|
||||||
|
{{ header "Installing dnf packages" }}
|
||||||
|
sudo -B dnf install -y {{~# each (flatten_table packages) }} '{{ this }}' {{~ /each }}
|
||||||
|
|
||||||
|
{{~ /if }}
|
||||||
|
|
||||||
|
{{#if (and dotter.packages.rust (not (is_executable "cargo"))) }}
|
||||||
|
|
||||||
|
{{ header "Installing rust" }}
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable
|
||||||
|
|
||||||
|
{{ /if }}
|
||||||
|
|
||||||
|
{{#if (and dotter.packages.rust (ne (len cargo.packages) 0)) }}
|
||||||
|
|
||||||
|
{{ header "Installing crates" }}
|
||||||
|
cargo install --locked {{# each cargo.packages }} "{{ this }}" {{ /each }}
|
||||||
|
|
||||||
|
{{ /if }}
|
||||||
|
|
||||||
|
{{ header "Done :3" }}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
includes = []
|
includes = [".dotter/machines/fedora.toml"]
|
||||||
packages = ["default", "cli", "dev"]
|
packages = ["cli", "dev"]
|
||||||
|
|
||||||
[files]
|
[files]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,3 +8,7 @@
|
||||||
|
|
||||||
[includeIf "gitdir:~/Repos/Work/"]
|
[includeIf "gitdir:~/Repos/Work/"]
|
||||||
path = ~/.config/git/config-work
|
path = ~/.config/git/config-work
|
||||||
|
[merge]
|
||||||
|
autoStash = true
|
||||||
|
[rebase]
|
||||||
|
autoStash = true
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
"mikavilpas/yazi.nvim",
|
"mikavilpas/yazi.nvim",
|
||||||
event = "VeryLazy",
|
-- event = "VeryLazy",
|
||||||
keys = {
|
keys = {
|
||||||
-- 👇 in this section, choose your own keymappings!
|
-- 👇 in this section, choose your own keymappings!
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -35,41 +35,6 @@ return {
|
||||||
{ "<leader>uC", "<CMD>CccHighlighterToggle<CR>", desc = "Toggle Color highlight" },
|
{ "<leader>uC", "<CMD>CccHighlighterToggle<CR>", desc = "Toggle Color highlight" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
-- Dotfiles management
|
|
||||||
{
|
|
||||||
"xvzc/chezmoi.nvim",
|
|
||||||
dependencies = { "nvim-lua/plenary.nvim", "alker0/chezmoi.vim" },
|
|
||||||
config = function()
|
|
||||||
require("chezmoi").setup({
|
|
||||||
{
|
|
||||||
edit = {
|
|
||||||
watch = false,
|
|
||||||
force = false,
|
|
||||||
},
|
|
||||||
notification = {
|
|
||||||
on_open = true,
|
|
||||||
on_apply = true,
|
|
||||||
on_watch = false,
|
|
||||||
},
|
|
||||||
telescope = {
|
|
||||||
select = { "<CR>" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
|
|
||||||
-- INFO: this should be the same as $(chezmoi source-path)
|
|
||||||
pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/chezmoi/*" },
|
|
||||||
callback = function()
|
|
||||||
vim.schedule(require("chezmoi.commands.__edit").watch)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
local telescope = require("telescope")
|
|
||||||
|
|
||||||
telescope.load_extension("chezmoi")
|
|
||||||
vim.keymap.set("n", "<leader>fz", telescope.extensions.chezmoi.find_files, { desc = "Find dotfile" })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"pmizio/typescript-tools.nvim",
|
"pmizio/typescript-tools.nvim",
|
||||||
dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" },
|
dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" },
|
||||||
|
|
@ -88,12 +53,4 @@ return {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
"olexsmir/gopher.nvim",
|
|
||||||
ft = "go",
|
|
||||||
build = function()
|
|
||||||
vim.cmd([[silent! GoInstallDeps]])
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -175,6 +175,9 @@ return {
|
||||||
}),
|
}),
|
||||||
["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
|
["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
|
||||||
border = _border,
|
border = _border,
|
||||||
|
max_width = 200,
|
||||||
|
max_height = 200,
|
||||||
|
focus = true,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,11 +45,11 @@ keymap = [
|
||||||
{ on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" },
|
{ on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" },
|
||||||
|
|
||||||
# Selection
|
# Selection
|
||||||
{ on = [ "<Space>" ], run = [ "select --state=none", "arrow 1" ], desc = "Toggle the current selection state" },
|
{ on = [ "<Space>" ], run = [ "toggle", "arrow 1" ], desc = "Toggle the current selection state" },
|
||||||
{ on = [ "v" ], run = "visual_mode", desc = "Enter visual mode (selection mode)" },
|
{ on = [ "v" ], run = "visual_mode", desc = "Enter visual mode (selection mode)" },
|
||||||
{ on = [ "V" ], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" },
|
{ on = [ "V" ], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" },
|
||||||
{ on = [ "<C-a>" ], run = "select_all --state=true", desc = "Select all files" },
|
{ on = [ "<C-a>" ], run = "toggle_all", desc = "Select all files" },
|
||||||
{ on = [ "<C-r>" ], run = "select_all --state=none", desc = "Inverse selection of all files" },
|
{ on = [ "<C-r>" ], run = "toggle_all on", desc = "Inverse selection of all files" },
|
||||||
|
|
||||||
# Operation
|
# Operation
|
||||||
{ on = [ "o" ], run = "open", desc = "Open the selected files" },
|
{ on = [ "o" ], run = "open", desc = "Open the selected files" },
|
||||||
|
|
@ -98,10 +98,10 @@ keymap = [
|
||||||
{ on = [ "N" ], run = "find_arrow --previous", desc = "Go to previous found file" },
|
{ on = [ "N" ], run = "find_arrow --previous", desc = "Go to previous found file" },
|
||||||
|
|
||||||
# Sorting
|
# Sorting
|
||||||
{ on = [ ",", "m" ], run = "sort modified --reverse=no", desc = "Sort by modified time" },
|
{ on = [ ",", "m" ], run = "sort mtime --reverse=no", desc = "Sort by modified time" },
|
||||||
{ on = [ ",", "M" ], run = "sort modified --reverse", desc = "Sort by modified time (reverse)" },
|
{ on = [ ",", "M" ], run = "sort mtime --reverse", desc = "Sort by modified time (reverse)" },
|
||||||
{ on = [ ",", "c" ], run = "sort created --reverse=no", desc = "Sort by created time" },
|
{ on = [ ",", "c" ], run = "sort btime --reverse=no", desc = "Sort by created time" },
|
||||||
{ on = [ ",", "C" ], run = "sort created --reverse", desc = "Sort by created time (reverse)" },
|
{ on = [ ",", "C" ], run = "sort btime --reverse", desc = "Sort by created time (reverse)" },
|
||||||
{ on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" },
|
{ on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" },
|
||||||
{ on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" },
|
{ on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" },
|
||||||
{ on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" },
|
{ on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" },
|
||||||
|
|
@ -162,7 +162,7 @@ keymap = [
|
||||||
{ on = [ "~" ], run = "help", desc = "Open help" }
|
{ on = [ "~" ], run = "help", desc = "Open help" }
|
||||||
]
|
]
|
||||||
|
|
||||||
[select]
|
[pick]
|
||||||
|
|
||||||
keymap = [
|
keymap = [
|
||||||
{ on = [ "<C-q>" ], run = "close", desc = "Cancel selection" },
|
{ on = [ "<C-q>" ], run = "close", desc = "Cancel selection" },
|
||||||
|
|
|
||||||
|
|
@ -188,7 +188,7 @@ quit_title = "{n} task{s} running, sure to quit? (y/N)"
|
||||||
quit_origin = "center"
|
quit_origin = "center"
|
||||||
quit_offset = [ 0, 2, 50, 3 ]
|
quit_offset = [ 0, 2, 50, 3 ]
|
||||||
|
|
||||||
[select]
|
[pick]
|
||||||
open_title = "Open with:"
|
open_title = "Open with:"
|
||||||
open_origin = "hovered"
|
open_origin = "hovered"
|
||||||
open_offset = [ 0, 1, 50, 7 ]
|
open_offset = [ 0, 1, 50, 7 ]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue