1
1
Fork 0

ide: migrate to zed-editor

This commit is contained in:
Myned 2025-03-17 22:36:35 -05:00
parent 25fe9f94fe
commit 794b7604bd
Signed by: Myned
GPG key ID: C7224454F7881A34
14 changed files with 556 additions and 252 deletions

View file

@ -36,6 +36,7 @@ with lib; let
vrr = hm.home.file.".local/bin/vrr".source;
waydroid = getExe pkgs.waydroid;
window = hm.home.file.".local/bin/window".source;
zeditor = getExe hm.programs.zed-editor.package;
zoom = hm.home.file.".local/bin/zoom".source;
command = command: "${uwsm} app -- ${command}";
@ -198,7 +199,7 @@ in {
(key "G" "Super" "togglespecialworkspace" "game")
(key "G" "Super+Ctrl" "exec" steam)
(key "G" "Super+Shift" "movetoworkspacesilent" "special:game")
(key "I" "Super" "exec" codium)
(key "I" "Super" "exec" zeditor)
(key "K" "Super" "exec" obsidian)
(key "M" "Super" "togglespecialworkspace" "music")
(key "M" "Super+Shift" "movetoworkspacesilent" "special:music")

View file

@ -230,6 +230,7 @@ in {
editor = rules: [
(class "codium" rules) # VSCode
(class "dev\\.zed\\.Zed" rules)
(class "obsidian" rules)
];

View file

@ -34,6 +34,7 @@ with lib; let
virt-manager = "${config.programs.virt-manager.package}/bin/virt-manager";
waydroid = "${pkgs.waydroid}/bin/waydroid";
youtube-music = "${pkgs.youtube-music}/bin/youtube-music";
zeditor = getExe hm.programs.zed-editor.package;
in {
options.custom.desktops.niri.binds = {
enable = mkOption {default = false;};
@ -145,8 +146,8 @@ in {
(key "F" "Mod" (spawn [nautilus "--new-window"]))
(key "G" "Ctrl+Alt" (spawn [pkill "steam"]))
(key "G" "Mod" (spawn steam))
(key "I" "Ctrl+Alt" (spawn [pkill "codium"]))
(key "I" "Mod" (spawn codium))
(key "I" "Ctrl+Alt" (spawn [pkill "zed"]))
(key "I" "Mod" (spawn zeditor))
(key "K" "Ctrl+Alt" (spawn [pkill "obsidian"]))
(key "K" "Mod" (spawn obsidian))
(key "L" "Mod" (spawn [bash "-c" "${hyprlock} --immediate & ${niri} msg action power-off-monitors"]))

View file

@ -149,6 +149,7 @@ in {
# IDEs
matches = [
{app-id = "^codium$";}
{app-id = "^dev\.zed\.Zed$";}
];
default-column-width.proportion =

View file

@ -54,6 +54,7 @@ with lib; let
wlfreerdp = "${pkgs.freerdp}/bin/wlfreerdp";
wofi = "${config.home-manager.users.${config.custom.username}.programs.wofi.package}/bin/wofi";
xfreerdp = "${pkgs.freerdp}/bin/xfreerdp";
zeditor = getExe hm.programs.zed-editor.package;
cfg = config.custom.desktops.sway.binds;
in {
@ -153,7 +154,7 @@ in {
"backspace+${super}+${shift}" = "floating toggle";
"bracketleft+${super}" = "layout toggle tabbed stacking";
"bracketright+${super}" = "layout toggle split";
"c+${super}" = "exec ${codium}";
"c+${super}" = "exec ${zeditor}";
"delete+${super}" = "exec inhibit";
"delete+${super}+${shift}" = "exec vrr";
"down+${super}" = "move down";

View file

@ -254,6 +254,12 @@ case "$1" in
url="https://www.youtube.com/results?search_query="
query="${1:2}"
;;
'zi '*)
label="Zed Issues"
icon="com.github.zren.bugzilla"
url="https://github.com/zed-industries/zed/issues?q=is%3Aissue+is%3Aopen+"
query="${1:3}"
;;
*)
exit
# label="Search"

View file

@ -315,6 +315,12 @@ in {
shortcut = "y";
url = "https://www.youtube.com/results?search_query={searchTerms}";
}
{
name = "Zed Issues";
shortcut = "zi";
url = "https://github.com/zed-industries/zed/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";
}
];
};
};

View file

@ -522,6 +522,12 @@ with lib; {
iconUpdateURL = "https://www.youtube.com/s/desktop/f8c8418d/img/favicon.ico";
urls = [{template = "https://www.youtube.com/results?search_query={searchTerms}";}];
};
"Zed Issues" = {
definedAliases = ["zi"];
iconUpdateURL = "https://github.com/favicon.ico";
urls = [{template = "https://github.com/zed-industries/zed/issues?q=is%3Aissue+is%3Aopen+{searchTerms}";}];
};
};
};
};

View file

@ -17,21 +17,9 @@ in {
# https://github.com/nix-community/nix-vscode-extensions
nixpkgs.overlays = [inputs.nix-vscode-extensions.overlays.default];
environment = {
sessionVariables = {
# https://github.com/nix-community/nixd/blob/main/nixd/docs/features.md
NIXD_FLAGS = "--inlay-hints=false"; # Disable package versions in the editor
};
# Extension dependencies
systemPackages = with pkgs; [
alejandra # nix-ide
blueprint-compiler # blueprint-gtk
caddy # caddyfile-support
nixd # nix-ide
powershell # powershell
shfmt # shell-format
];
environment.sessionVariables = {
# https://github.com/nix-community/nixd/blob/main/nixd/docs/features.md
NIXD_FLAGS = "--inlay-hints=false"; # Disable package versions in the editor
};
home-manager.sharedModules = mkIf cfg.enable [

View file

@ -1,233 +0,0 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
cfg = config.custom.programs.zed;
in {
options.custom.programs.zed = {
enable = mkOption {default = false;};
};
config = mkIf cfg.enable {
home-manager.sharedModules = [
{
# https://zed.dev/
# https://github.com/zed-industries/zed
programs.zed-editor = {
enable = true;
extraPackages = with pkgs; [
alejandra # nix
nixd # nix
shellcheck # basher
shfmt # basher
];
# https://zed.dev/docs/extensions
# https://github.com/zed-industries/extensions/tree/main/extensions
extensions = [
"basher" # https://github.com/d1y/bash.zed
"git-firefly" # https://github.com/d1y/git_firefly
"nix" # https://github.com/zed-extensions/nix
];
# https://zed.dev/docs/key-bindings
userKeymaps = [
{
bindings = {
"alt-space" = "command_palette::Toggle";
};
}
{
context = "Editor";
bindings = {
"alt-enter" = "editor::DuplicateLineDown";
"alt-left" = "editor::MoveToBeginningOfLine";
"alt-right" = "editor::MoveToEndOfLine";
};
}
];
# https://zed.dev/docs/configuring-zed
userSettings = {
always_treat_brackets_as_autoclosed = true;
assistant = {
default_model = {
model = "claude-3-5-sonnet-latest";
provider = "zed.dev";
};
version = 2;
};
auto_install_extensions = false;
auto_signature_help = true;
# BUG: Font variations are not currently supported
# https://github.com/zed-industries/zed/issues/5028
#// buffer_font_family = "monospace";
buffer_font_family = "IosevkaTermSlab Nerd Font Propo";
buffer_font_size = 18;
buffer_line_height.custom = 1.5;
collaboration_panel = {
button = false;
dock = "right";
};
cursor_blink = false;
features = {
inline_completion_provider = "none";
};
git = {
inline_blame.enabled = false;
};
indent_guides = {
active_line_width = 2;
};
load_direnv = "shell_hook";
middle_click_paste = false;
outline_panel = {
dock = "right";
indent_size = 10;
};
preferred_line_length = 120;
project_panel = {
default_width = 200;
indent_guides.show = "never";
indent_size = 10;
};
seed_search_query_from_cursor = "selection";
show_user_picture = false;
# TODO: Show trailing whitespace when supported
# https://github.com/zed-industries/zed/issues/5237
show_whitespaces = "selection";
soft_wrap = "preferred_line_length";
tab_size = 2;
tabs = {
file_icons = true;
git_status = true;
show_diagnostics = "all";
};
telemetry = {
metrics = true;
diagnostics = true;
};
theme = {
mode = "system";
light = "NeoSolarized Light";
dark = "NeoSolarized Dark";
};
ui_font_family = config.stylix.fonts.sansSerif.name;
ui_font_size = 20;
# Language-specific
# https://zed.dev/docs/configuring-languages
languages = {
Nix = {
formatter.external.command = "alejandra";
language_servers = ["nixd" "!nil"];
};
};
# TODO: Add missing syntax in highlights.scm
# Theme overrides
# https://zed.dev/docs/themes#theme-overrides
# https://zed.dev/docs/extensions/languages#syntax-highlighting
# https://github.com/zed-industries/zed/blob/main/assets/themes/solarized/solarized.json
# https://github.com/zed-industries/zed/issues/20525
#?? editor: copy highlight json
"experimental.theme_overrides" = {
# https://github.com/zed-industries/zed/issues/4655
players = [
{
cursor = "#93a1a1";
background = "#93a1a1";
selection = "#93a1a11a"; # 10%
}
];
"scrollbar.thumb.background" = "#073642";
"scrollbar.thumb.border" = "#00000000";
syntax = {
"_expr".color = "#b58900";
"_id".color = "#93a1a1";
"attribute".color = "#93a1a1";
"boolean".color = "#cb4b16";
"comment".color = "#586e75";
"comment.doc".color = "#586e75";
"constant".color = "#93a1a1";
"constant.builtin".color = "#93a1a1";
"constructor".color = "#b58900";
"embedded".color = "#657b83";
"emphasis".color = "#93a1a1";
"emphasis.strong".color = "#93a1a1";
"enum".color = "#b58900";
"function".color = "#268bd2";
"function.builtin".color = "#268bd2";
"function.call".color = "#268bd2";
"hint".color = "#657b83";
"keyword".color = "#d33682";
"keyword.exception".color = "#d33682";
"label".color = "#93a1a1";
"link_text".color = "#93a1a1";
"link_uri".color = "#93a1a1";
"number".color = "#2aa198";
"operator".color = "#657b83";
"predictive".color = "#657b83";
"preproc".color = "#93a1a1";
"primary".color = "#93a1a1";
"property".color = "#93a1a1";
"punctuation".color = "#657b83";
"punctuation.bracket".color = "#657b83";
"punctuation.delimiter".color = "#657b83";
"punctuation.list_marker".color = "#657b83";
"punctuation.special".color = "#657b83";
"string".color = "#859900";
"string.escape".color = "#cb4b16";
"string.regex".color = "#cb4b16";
"string.special".color = "#cb4b16";
"string.special.symbol".color = "#cb4b16";
"tag".color = "#93a1a1";
"tag.doctype".color = "#93a1a1";
"text.literal".color = "#93a1a1";
"title".color = "#93a1a1";
"type".color = "#b58900";
"variable".color = "#93a1a1";
"variable.member".color = "#93a1a1";
"variable.parameter".color = "#6c71c4";
"variable.special".color = "#93a1a1";
"variant".color = "#93a1a1";
};
};
};
};
# TODO: Use stylix
# https://stylix.danth.me/options/modules/zed.html
stylix.targets.zed.enable = false;
}
];
};
}

View file

@ -0,0 +1,365 @@
{
config,
lib,
...
}:
with lib; let
cfg = config.custom.programs.zed;
in {
options.custom.programs.zed = {
enable = mkOption {default = false;};
};
config = mkIf cfg.enable {
home-manager.sharedModules = [
{
# https://zed.dev/
# https://github.com/zed-industries/zed
programs.zed-editor = {
enable = true;
# https://zed.dev/docs/extensions
# https://github.com/zed-industries/extensions/tree/main/extensions
extensions = [
#// "basedpyright" # https://github.com/m1guer/basedpyright-zed
"basher" # https://github.com/d1y/bash.zed
"caddyfile" # https://github.com/nusnewob/caddyfile-zed
"colored-zed-icons-theme" # https://github.com/TheRedXD/zed-icons-colored-theme
"csv" # https://github.com/huacnlee/zed-csv
"discord-presence" # https://github.com/xhyrom/zed-discord-presence
"docker-compose" # https://github.com/eth0net/zed-docker-compose
"dockerfile" # https://github.com/d1y/dockerfile.zed
"env" # https://github.com/zarifpour/zed-env
"fish" # https://github.com/hasit/zed-fish
"git-firefly" # https://github.com/d1y/git_firefly
"html" # https://github.com/zed-industries/zed/tree/main/extensions/html
"ini" # https://github.com/bajrangCoder/zed-ini
"java" # https://github.com/zed-extensions/java
"jinja2" # https://github.com/ArcherHume/jinja2-support
"make" # https://github.com/caius/zed-make
"material-icon-theme" # https://github.com/zed-extensions/material-icon-theme
"nginx" # https://github.com/d1y/nginx-zed
"nix" # https://github.com/zed-extensions/nix
"nu" # https://github.com/zed-extensions/nu
"php" # https://github.com/zed-extensions/php
"powershell" # https://github.com/wingyplus/zed-powershell
"pylsp" # https://github.com/rgbkrk/python-lsp-zed-extension
"scss" # https://github.com/bajrangCoder/zed-scss
"sql" # https://github.com/zed-extensions/sql
"svelte" # https://github.com/zed-extensions/svelte
"tmux" # https://github.com/dangh/zed-tmux
"unocss" # https://github.com/bajrangCoder/zed-unocss
"xml" # https://github.com/sweetppro/zed-xml
];
# https://zed.dev/docs/key-bindings
userKeymaps = [
{
# Global keybinds
bindings = {
"alt-\\" = "workspace::ToggleBottomDock";
"alt-a" = "assistant::ToggleFocus";
"alt-c" = "collab_panel::ToggleFocus";
"alt-f" = "project_search::ToggleFocus";
"alt-g" = "git_panel::ToggleFocus";
"alt-p" = "project_panel::ToggleFocus";
"alt-t" = "terminal_panel::ToggleFocus";
"alt-escape" = "workspace::CloseAllDocks";
"alt-space" = "command_palette::Toggle";
"alt-tab" = "workspace::ToggleLeftDock";
"alt-shift-tab" = "workspace::ToggleRightDock";
};
}
{
# Editor keybinds
context = "Editor";
bindings = {
"alt-backspace" = "editor::DeleteLine";
"alt-enter" = "editor::DuplicateLineDown";
"alt-left" = "editor::MoveToBeginningOfLine";
"alt-right" = "editor::MoveToEndOfLine";
"ctrl-enter" = "editor::NewlineBelow";
"alt-shift-enter" = "editor::DuplicateLineUp";
};
}
{
# Terminal keybinds
# https://zed.dev/docs/key-bindings#forward-keys-to-terminal
context = "Terminal";
bindings = {
"ctrl-s" = ["terminal::SendKeystroke" "ctrl-s"];
};
}
];
# https://zed.dev/docs/configuring-zed
userSettings = {
always_treat_brackets_as_autoclosed = true;
assistant = {
default_model = {
model = "gemma3:1b";
provider = "ollama";
};
default_width = 500;
version = "2";
};
auto_install_extensions = false;
auto_signature_help = true;
base_keymap = "VSCode";
# BUG: Font variations are not currently supported
# https://github.com/zed-industries/zed/issues/5028
#// buffer_font_family = "monospace";
buffer_font_family = mkForce "IosevkaTermSlab Nerd Font Propo";
buffer_line_height.custom = 1.5;
chat_panel = {
default_width = 300;
};
collaboration_panel = {
button = false;
default_width = 300;
dock = "right";
};
cursor_blink = false;
features = {
inline_completion_provider = "none";
};
git = {
inline_blame.enabled = false;
};
git_panel = {
default_width = 300;
};
icon_theme = "Colored Zed Icons Theme Dark";
indent_guides = {
active_line_width = 2;
};
load_direnv = "shell_hook";
middle_click_paste = false;
notification_panel = {
default_width = 300;
};
outline_panel = {
default_width = 300;
dock = "right";
indent_size = 10;
};
preferred_line_length = 120;
project_panel = {
auto_reveal_entries = false;
default_width = 300;
entry_spacing = "standard";
indent_guides.show = "never";
indent_size = 10;
scrollbar.show = "never";
};
seed_search_query_from_cursor = "selection";
show_user_picture = false;
# TODO: Show trailing whitespace when supported
# https://github.com/zed-industries/zed/issues/5237
show_whitespaces = "selection";
#// soft_wrap = "preferred_line_length";
tab_size = 2;
tabs = {
git_status = true;
show_diagnostics = "all";
};
telemetry = {
metrics = true;
diagnostics = true;
};
terminal = {
line_height = "standard";
};
ui_font_size = mkForce 18;
# Language-specific
# https://zed.dev/docs/configuring-languages
languages = {
Nix = {
formatter.external.command = "alejandra";
language_servers = ["nil" "!nixd"];
};
};
# https://zed.dev/docs/configuring-languages#configuring-language-servers
lsp = {
nil.initialization_options = {
nix.flake.autoArchive = true;
};
};
# TODO: Add missing syntax in highlights.scm
# Theme overrides
# https://zed.dev/docs/themes#theme-overrides
# https://zed.dev/docs/extensions/languages#syntax-highlighting
# https://github.com/zed-industries/zed/issues/20525
# https://github.com/zed-industries/zed/blob/main/assets/themes/one/one.json
# https://github.com/zed-industries/zed/blob/main/assets/themes/solarized/solarized.json
# https://github.com/tinted-theming/schemes/blob/spec-0.11/base16/solarized-dark.yaml
#?? editor: copy highlight json
"experimental.theme_overrides" = with config.lib.stylix.colors; {
### Styles
"background" = "#${base01}";
"border" = "#${base00}";
"border.variant" = "#${base00}";
"editor.active_wrap_guide" = "#${base01}";
"editor.document_highlight.read_background" = "#${base01}";
"editor.document_highlight.write_background" = "#${base01}";
"editor.invisible" = "#${base03}";
"editor.wrap_guide" = "#${base01}";
# TODO: Submit PR to fix
# BUG: (ghost_)element is incorrectly defined as nested objects instead of strings
# https://github.com/tinted-theming/base16-zed/blob/main/templates/default.mustache
"element.active" = "#${base03}20";
"element.background" = "#${base00}00";
"element.disabled" = "#${base03}";
"element.hover" = "#${base03}10";
"element.selected" = "#${base03}40";
"ghost_element.active" = "#${base03}20";
"ghost_element.background" = "#${base00}00";
"ghost_element.disabled" = "#${base03}";
"ghost_element.hover" = "#${base03}10";
"ghost_element.selected" = "#${base03}40";
"icon.accent" = "#${base0F}";
"panel.background" = "#${base01}";
"panel.focused_border" = "#${base0F}";
"scrollbar.thumb.background" = "#${base03}40";
"scrollbar.thumb.border" = "#${base03}00";
"scrollbar.thumb.hover_background" = "#${base03}";
"search.match_background" = "#${base03}40";
"status_bar.background" = "#${base00}";
"tab.active_background" = "#${base00}";
"tab.inactive_background" = "#${base01}";
"tab_bar.background" = "#${base01}";
"text.accent" = "#${base0F}";
"title_bar.background" = "#${base00}";
"title_bar.inactive_background" = "#${base00}";
### Status
"conflict" = "#${base09}";
"conflict.background" = "#${base09}d3";
"conflict.border" = "#${base09}";
### Cursors
"players" = [
{
"cursor" = "#${base05}";
"background" = "#${base05}40";
"selection" = "#${base05}20";
}
];
### Syntax highlighting
"syntax" = {
"_expr".color = "#${base0A}";
"_id".color = "#${base05}";
"attribute".color = "#${base05}";
"boolean".color = "#${base09}";
"comment".color = "#${base02}";
"comment.doc".color = "#${base02}";
"constant".color = "#${base05}";
"constant.builtin".color = "#${base05}";
"constructor".color = "#${base0A}";
"directive".color = "#${base05}";
"embedded".color = "#${base03}";
"emphasis".color = "#${base05}";
"emphasis.strong".color = "#${base05}";
"enum".color = "#${base0A}";
"escape".color = "#${base09}";
"function".color = "#${base0D}";
"function.builtin".color = "#${base0D}";
"function.call".color = "#${base0D}";
"function.decorator".color = "#${base0D}";
"function.magic".color = "#${base0D}";
"hint".color = "#${base03}";
"keyword".color = "#${base0F}";
"keyword.exception".color = "#${base0F}";
"label".color = "#${base05}";
"link_text".color = "#${base05}";
"link_uri".color = "#${base05}";
"local".color = "#${base05}";
"markup".color = "#${base05}";
"meta".color = "#${base05}";
"modifier".color = "#${base05}";
"namespace".color = "#${base05}";
"number".color = "#${base0C}";
"operator".color = "#${base03}";
"parameter".color = "#${base0E}";
"predictive".color = "#${base03}";
"preproc".color = "#${base05}";
"primary".color = "#${base05}";
"property".color = "#${base05}";
"punctuation".color = "#${base03}";
"punctuation.bracket".color = "#${base03}";
"punctuation.delimiter".color = "#${base03}";
"punctuation.list_marker".color = "#${base03}";
"punctuation.special".color = "#${base03}";
"regexp".color = "#${base09}";
"self".color = "#${base05}";
"string".color = "#${base0B}";
"string.escape".color = "#${base09}";
"string.regex".color = "#${base09}";
"string.special".color = "#${base09}";
"string.special.symbol".color = "#${base09}";
"strong".color = "#${base05}";
"support".color = "#${base05}";
"symbol".color = "#${base05}";
"tag".color = "#${base05}";
"tag.doctype".color = "#${base05}";
"text".color = "#${base05}";
"text.literal".color = "#${base05}";
"title".color = "#${base05}";
"type".color = "#${base0A}";
"variable".color = "#${base05}";
"variable.member".color = "#${base05}";
"variable.parameter".color = "#${base0E}";
"variable.special".color = "#${base05}";
"variant".color = "#${base05}";
};
};
};
};
# BUG: Language-specific snippets break with certain files, so use global snippets.json
# https://github.com/zed-industries/zed/issues/22726
# https://zed.dev/docs/snippets
#?? snippets: configure snippets
xdg.configFile = {
"zed/snippets/".source = ./snippets;
};
}
];
};
}

View file

@ -0,0 +1,135 @@
{
"Home Manager Option": {
"prefix": "ho",
"body": [
"{",
" config,",
" lib,",
" ...",
"}:",
"with lib; let",
" cfg = config.custom.$1;",
" hm = config.home-manager.users.\\${config.custom.username};",
"in {",
" options.custom.$1 = {",
" enable = mkOption {default = false;};",
" };",
"",
" config = mkIf cfg.enable {",
" home-manager.sharedModules = [",
" {",
" $0",
" }",
" ];",
" };",
"}"
]
},
"NixOS Agenix": {
"prefix": "na",
"body": [
"age.secrets =",
" let",
" secret = filename: {",
" file = \"\\${inputs.self}/secrets/\\${filename}\";",
" };",
" in",
" {",
" \"$1\" = secret \"$1\";",
" };"
]
},
"NixOS Container Arion": {
"prefix": "nca",
"body": [
"{",
" config,",
" inputs,",
" lib,",
" ...",
"}:",
"with lib; let",
" cfg = config.custom.containers.$1;",
"in {",
" options.custom.containers.$1 = {",
" enable = mkOption {default = false;};",
" };",
"",
" config = mkIf cfg.enable {",
" age.secrets = let",
" secret = filename: {",
" file = \"\\${inputs.self}/secrets/\\${filename}\";",
" };",
" in {",
" \"\\${config.custom.profile}/$1/.env\" = secret \"\\${config.custom.profile}/$1/.env\";",
" };",
"",
" #?? arion-$1 pull",
" environment.shellAliases.arion-$1 = \"sudo arion --prebuilt-file \\${config.virtualisation.arion.projects.$1.settings.out.dockerComposeYaml}\";",
"",
" virtualisation.arion.projects.$1.settings.services = {",
" $1.service = {",
" container_name = \"$1\";",
" depends_on = [\"\"];",
" env_file = [config.age.secrets.\"\\${config.custom.profile}/$1/.env\".path];",
" image = \"$1\";",
" ports = [\"\"];",
" restart = \"unless-stopped\";",
" volumes = [\"\\${config.custom.containers.directory}/$1/data:/data\"];",
" };",
" };",
" };",
"}"
]
},
"Nix Develop": {
"prefix": "nd",
"body": [
"{",
" inputs = {",
" nixpkgs.url = \"github:NixOS/nixpkgs/nixos-24.05\";",
" };",
"",
" outputs =",
" inputs:",
" let",
" system = \"x86_64-linux\";",
" pkgs = inputs.nixpkgs.legacyPackages.\\${system};",
" in",
" {",
" #?? nix develop",
" devShells.\\${system}.default = pkgs.mkShell {",
" inputsFrom = [ ];",
" packages = [ ];",
" shellHook = '''';",
" };",
" };",
"}"
]
},
"NixOS Option": {
"prefix": "no",
"body": [
"{",
" config,",
" lib,",
" ...",
"}:",
"with lib; let",
" cfg = config.custom.$1;",
"in {",
" options.custom.$1 = {",
" enable = mkOption {default = false;};",
" };",
"",
" config = mkIf cfg.enable {",
" $0",
" };",
"}"
]
}
}

View file

@ -0,0 +1,18 @@
{
"Shell Bash Argc": {
"prefix": "sba",
"body": [
"#! /usr/bin/env bash",
"",
"# @describe $1",
"#",
"# https://github.com/sigoden/argc",
"",
"# @meta combine-shorts",
"",
"$0",
"",
"eval \"\\$(argc --argc-eval \"\\$0\" \"\\$@\")\""
]
}
}

View file

@ -24,6 +24,8 @@ in {
])
++ optionals config.custom.default [
alejandra # Nix formatter
blueprint-compiler # GTK markup language
caddy # Reverse proxy
fd # File finder
fzf # Fuzzy search
inetutils # Network utilities
@ -32,14 +34,20 @@ in {
lf # Terminal file manager
lm_sensors # System sensors
lz4 # Compression utility
nil # Nix language server
nix-output-monitor # Nix build parser
nix-tree # Nix store explorer
nixd # Nix language server
nmap # Network scanner
nvd # Nix diff viewer
openssl # Certificate utility
powershell # Windows shell
progress # Coreutils progress viewer
q # DNS tester
rclone # File sync
shellcheck # Script analysis tool
shfmt # Script formatter
simple-completion-language-server # Snippet language server
sshpass # SSH automation
stress # CPU stress tester
testdisk # Data recovery tool