diff --git a/apps/gui/default.nix b/apps/gui/default.nix index ffb0a61d400785ec8f677fc1a924d9e32c2c28ea..ad6da8ff9e7e90ced415cc22a9786ccc7720f665 100644 --- a/apps/gui/default.nix +++ b/apps/gui/default.nix @@ -12,9 +12,17 @@ ./zed.nix ]; home = { packages = with pkgs; [ + # Tools + #cinny-desktop + delve discord obsidian { pkgs, ... }: + ./ghostty.nix + + # LSPs + marksman +{ ./ghostty.nix ]; }; diff --git a/apps/nogui/default.nix b/apps/nogui/default.nix index 61355e1f26d57877e778c8e1b868744b3c92d36e..17f4019e032b95b3e3bc764eabf5798517f24a49 100644 --- a/apps/nogui/default.nix +++ b/apps/nogui/default.nix @@ -10,10 +10,11 @@ ./fzf.nix ./git.nix ./go.nix ./gpg.nix + #./helix.nix ./jj.nix + ./jq.nix ./lazygit.nix ./llm.nix - ./lsp.nix ./nushell.nix ./oh-my-posh.nix ./senpai.nix @@ -23,16 +24,37 @@ ./zoxide.nix ]; home = { packages = with pkgs; [ + # Tools age bitwarden-cli cachix duf du-dust fd + git-absorb just ripgrep usql imports = [ + ./atuin.nix + # Dhall + dhall + dhall-nix + dhall-lsp-server + + # LSPs + gopls + nil + + # Jsonnet + go-jsonnet + jsonnet-language-server + + # Formatters + nixfmt-rfc-style + gofumpt + + ./bottom.nix ./atuin.nix jolheiser.gist jolheiser.git-age diff --git a/apps/nogui/helix.nix b/apps/nogui/helix.nix new file mode 100644 index 0000000000000000000000000000000000000000..3397587fb5bce40670b60bfc484e340b52ab2e2d --- /dev/null +++ b/apps/nogui/helix.nix @@ -0,0 +1,349 @@ +# This entire file is superceded by https://git.jolheiser.com/helix.drv +{ pkgs, ... }: +let + query = + scm: + builtins.readFile ( + pkgs.fetchFromGitea { + domain = "git.jojodev.com"; + owner = "jolheiser"; + repo = "templ-helix"; + rev = "2a47b9c5af0fd9ae8bba8198fd66abc6d07fdf10"; + sha256 = "sha256-pTdOX9bPup626t+ko6k3Xq/tprAMAZCUBl+xeIBkhfs="; + } + + "/queries/templ/${scm}.scm" + ); +in +{ + programs.helix = { + enable = true; + defaultEditor = true; + settings = { + theme = "catppuccin_mocha_transparent"; + editor = { + line-number = "relative"; + mouse = false; + bufferline = "always"; + color-modes = true; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + file-picker = { + hidden = false; + }; + indent-guides = { + render = true; + skip-levels = 1; + }; + soft-wrap = { + enable = true; + }; + statusline = { + right = [ + "version-control" + "diagnostics" + "selections" + "position" + "file-encoding" + ]; + }; + lsp = { + display-messages = true; + }; + }; + keys = { + normal = { + space = { + q = ":quit"; + Q = ":quit!"; + w = ":write"; + W = ":write!"; + }; + C-c = ":config-open"; + C-r = ":config-reload"; + "C-/" = "toggle_comments"; + S-right = "goto_next_buffer"; + S-left = "goto_previous_buffer"; + C-b = ":buffer-close"; + C-s = [ + "select_all" + "select_regex" + ]; + + C-j = "shrink_selection"; + C-k = "expand_selection"; + C-l = "select_next_sibling"; + C-a = "select_all"; + C-u = [ + "half_page_up" + "align_view_center" + ]; + C-d = [ + "half_page_down" + "align_view_center" + ]; + + "{" = [ + "goto_prev_paragraph" + "collapse_selection" + ]; + "}" = [ + "goto_next_paragraph" + "collapse_selection" + ]; + "0" = "goto_line_start"; + "$" = "goto_line_end"; + "^" = "goto_first_nonwhitespace"; + G = "goto_file_end"; + "%" = "match_brackets"; + V = [ + "select_mode" + "extend_to_line_bounds" + ]; + C = [ + "collapse_selection" + "extend_to_line_end" + "change_selection" + ]; + D = [ + "extend_to_line_end" + "delete_selection" + ]; + S = "surround_add"; + + d = { + d = [ + "extend_to_line_bounds" + "delete_selection" + ]; + t = [ "extend_till_char" ]; + s = [ "surround_delete" ]; + i = [ "select_textobject_inner" ]; + a = [ "select_textobject_around" ]; + }; + + x = "delete_selection"; + p = "paste_clipboard_after"; + P = "paste_clipboard_before"; + y = [ + "yank_main_selection_to_clipboard" + "normal_mode" + "flip_selections" + "collapse_selection" + ]; + Y = [ + "extend_to_line_bounds" + "yank_main_selection_to_clipboard" + "goto_line_start" + "collapse_selection" + ]; + + w = [ + "move_next_word_start" + "move_char_right" + "collapse_selection" + ]; + e = [ + "move_next_word_end" + "collapse_selection" + ]; + b = [ + "move_prev_word_start" + "collapse_selection" + ]; + + i = [ + "insert_mode" + "collapse_selection" + ]; + a = [ + "append_mode" + "collapse_selection" + ]; + + esc = [ + "collapse_selection" + "keep_primary_selection" + ]; + }; + insert = { + esc = [ + "collapse_selection" + "normal_mode" + ]; + }; + select = { + space = { + j = { + e = ":pipe jq"; + c = ":pipe jq -c"; + }; + }; + "{" = [ + "extend_to_line_bounds" + "goto_prev_paragraph" + ]; + "}" = [ + "extend_to_line_bounds" + "goto_next_paragraph" + ]; + "0" = "goto_line_start"; + "$" = "goto_line_end"; + "^" = "goto_first_nonwhitespace"; + G = "goto_file_end"; + D = [ + "extend_to_line_bounds" + "delete_selection" + "normal_mode" + ]; + C = [ + "goto_line_start" + "extend_to_line_bounds" + "change_selection" + ]; + "%" = "match_brackets"; + S = "surround_add"; + + i = "select_textobject_inner"; + a = "select_textobject_around"; + + tab = [ + "insert_mode" + "collapse_selection" + ]; + C-a = [ + "append_mode" + "collapse_selection" + ]; + + k = [ + "extend_line_up" + "extend_to_line_bounds" + ]; + j = [ + "extend_line_down" + "extend_to_line_bounds" + ]; + + d = [ + "yank_main_selection_to_clipboard" + "delete_selection" + ]; + x = [ + "yank_main_selection_to_clipboard" + "delete_selection" + ]; + y = [ + "yank_main_selection_to_clipboard" + "normal_mode" + "flip_selections" + "collapse_selection" + ]; + Y = [ + "extend_to_line_bounds" + "yank_main_selection_to_clipboard" + "goto_line_start" + "collapse_selection" + "normal_mode" + ]; + p = "replace_selections_with_clipboard"; + P = "paste_clipboard_before"; + + esc = [ + "collapse_selection" + "keep_primary_selection" + "normal_mode" + ]; + }; + }; + }; + languages = { + language = [ + { + name = "go"; + formatter = { + command = "gofumpt"; + }; + } + { + name = "lua"; + formatter = { + command = "luafmt"; + args = [ "--stdin" ]; + }; + } + { + name = "python"; + auto-format = true; + formatter = { + command = "black"; + args = [ + "--quiet" + "-" + ]; + }; + } + { + name = "nix"; + auto-format = true; + formatter = { + command = "alejandra"; + args = [ "-qq" ]; + }; + } + { + name = "templ"; + auto-format = true; + scope = "source.templ"; + injection-regex = "templ"; + file-types = [ "templ" ]; + roots = [ "go.mod" ]; + comment-token = "//"; + language-server = { + command = "templ"; + args = [ "lsp" ]; + }; + formatter = { + command = "templ"; + args = [ "fmt" ]; + }; + } + ]; + grammar = [ + { + name = "templ"; + source = { + git = "https://github.com/vrischmann/tree-sitter-templ"; + rev = "9f63037ad08a58050d0582ef1ae0009bd0fbf2f1"; + }; + } + ]; + }; + themes = { + catppuccin_frappe_transparent = { + inherits = "catppuccin_frappe"; + "ui.background" = { }; + }; + catppuccin_latte_transparent = { + inherits = "catppuccin_latte"; + "ui.background" = { }; + }; + catppuccin_macchiato_transparent = { + inherits = "catppuccin_macchiato"; + "ui.background" = { }; + }; + catppuccin_mocha_transparent = { + inherits = "catppuccin_mocha"; + "ui.background" = { }; + }; + }; + }; + xdg.configFile = { + "helix/runtime/queries/templ/highlights.scm".text = query "highlights"; + "helix/runtime/queries/templ/indents.scm".text = query "indents"; + "helix/runtime/queries/templ/injections.scm".text = query "injections"; + "helix/runtime/queries/templ/structure.scm".text = query "structure"; + }; +} diff --git a/apps/nogui/jq.nix b/apps/nogui/jq.nix new file mode 100644 index 0000000000000000000000000000000000000000..3c01c415d9a2bd365f83f4ec6a57f64eb6a40692 --- /dev/null +++ b/apps/nogui/jq.nix @@ -0,0 +1 @@ +{ programs.jq.enable = true; } diff --git a/apps/nogui/lsp.nix b/apps/nogui/lsp.nix deleted file mode 100644 index fb2b4c7864969d2813b36e2844e4269742891447..0000000000000000000000000000000000000000 --- a/apps/nogui/lsp.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: -{ - home.packages = with pkgs; [ - gopls # Go - nil # Nix - jsonnet-language-server # Jsonnet - marksman # Markdown - nodePackages.yaml-language-server # YAML - vscode-langservers-extracted # HTML/CSS/JSON - ]; -} diff --git a/apps/nogui/senpai.nix b/apps/nogui/senpai.nix index a5f52c809911ad472dc453d38ba2e01fbf4f9cc8..2cdf4540d756434c1473bafd66fc04a9e7d0f320 100644 --- a/apps/nogui/senpai.nix +++ b/apps/nogui/senpai.nix @@ -10,6 +10,8 @@ "cat" "${config.age.secrets.irc-pw.path}" ]; { config, ... }: + address = "ircs+insecure://irc.jolheiser.com:6697"; +{ config, ... }: { }; }; diff --git a/machines/dragonwell/restic.nix b/machines/dragonwell/restic.nix index 26e025424f33c896120eb701c18c940acdff9c7c..81b7ee09c9870ae871cdda0f9641060e879741f7 100644 --- a/machines/dragonwell/restic.nix +++ b/machines/dragonwell/restic.nix @@ -10,12 +10,7 @@ initialize = true; environmentFile = config.age.secrets.restic-env.path; passwordFile = config.age.secrets.restic-pass.path; repositoryFile = config.age.secrets.restic-repo.path; - paths = [ - "/var/lib/ugit/repos" - "/var/lib/miniserve" - "/var/lib/foundryvtt/Data" - "/var/lib/foundryvtt/Config" -{ config, ... }: +{ services.restic.backups.dragonwell = { pruneOpts = [ "--keep-daily 7"