diff --git a/packages/devkit/default.nix b/packages/devkit/default.nix deleted file mode 100644 index 8edd26c..0000000 --- a/packages/devkit/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - pkgs, - pkgs-unstable, - inputs, -}: rec { - ghostty = pkgs.callPackage ./ghostty {}; - git = pkgs.callPackage ./git {}; - lazygit = pkgs.callPackage ./lazygit {}; - starship = pkgs.callPackage ./starship {}; - tmux = pkgs.callPackage ./tmux {shell = zsh;}; - yazi = pkgs.callPackage ./yazi {}; - # CURRENTLY BORKED https://github.com/zellij-org/zellij/issues/3970 - zellij = pkgs.callPackage ./zellij { - shell = zsh; - zellij = pkgs-unstable.zellij; - }; - zsh = pkgs.callPackage ./zsh {}; -} diff --git a/packages/devkit/ghostty/default.nix b/packages/devkit/ghostty.nix similarity index 66% rename from packages/devkit/ghostty/default.nix rename to packages/devkit/ghostty.nix index f971f76..eb07638 100644 --- a/packages/devkit/ghostty/default.nix +++ b/packages/devkit/ghostty.nix @@ -6,7 +6,7 @@ ghostty ? pkgs.ghostty, command ? null, }: let - colors = import ../colors.nix; + colors = import ./colors.nix; theme = pkgs.writeText "theme" '' palette = 0=${colors.base00} palette = 1=${colors.base08} @@ -31,7 +31,8 @@ selection-background = ${colors.base02} selection-foreground = ${colors.base07} ''; - drv = symlinkJoin ({ +in + symlinkJoin ({ paths = [ghostty]; nativeBuildInputs = [makeWrapper]; @@ -45,24 +46,4 @@ } ''; } - // {inherit (ghostty) name pname meta shell_integration terminfo;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (ghostty) meta shell_integration terminfo;}) + // {inherit (ghostty) name pname meta shell_integration terminfo;}) diff --git a/packages/devkit/git.nix b/packages/devkit/git.nix new file mode 100644 index 0000000..14899e6 --- /dev/null +++ b/packages/devkit/git.nix @@ -0,0 +1,30 @@ +{ + symlinkJoin, + makeWrapper, + pkgs, + lib, + git ? pkgs.git, +}: +symlinkJoin ({ + paths = [git]; + nativeBuildInputs = [makeWrapper]; + postBuild = '' + wrapProgram $out/bin/git \ + --set-default 'GIT_CONFIG_COUNT' 7 \ + --set-default 'GIT_CONFIG_KEY_0' 'core.pager' \ + --set-default 'GIT_CONFIG_VALUE_0' '${lib.getExe pkgs.delta}' \ + --set-default 'GIT_CONFIG_KEY_1' 'credentials.helper' \ + --set-default 'GIT_CONFIG_VALUE_1' 'store' \ + --set-default 'GIT_CONFIG_KEY_2' 'interactive.diffFilter' \ + --set-default 'GIT_CONFIG_VALUE_2' '${lib.getExe pkgs.delta} --color-only' \ + --set-default 'GIT_CONFIG_KEY_3' 'signing.signByDefault' \ + --set-default 'GIT_CONFIG_VALUE_3' 'true' \ + --set-default 'GIT_CONFIG_KEY_4' 'user.email' \ + --set-default 'GIT_CONFIG_VALUE_4' 'contact@guz.one' \ + --set-default 'GIT_CONFIG_KEY_5' 'user.name' \ + --set-default 'GIT_CONFIG_VALUE_5' 'Gustavo "Guz" L de Mello' \ + --set-default 'GIT_CONFIG_KEY_6' 'commit.gpgsign' \ + --set-default 'GIT_CONFIG_VALUE_6' 'true' + ''; + } + // {inherit (git) name pname meta;}) diff --git a/packages/devkit/git/default.nix b/packages/devkit/git/default.nix deleted file mode 100644 index cd09ce2..0000000 --- a/packages/devkit/git/default.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ - symlinkJoin, - makeWrapper, - pkgs, - lib, - git ? pkgs.git, -}: let - drv = symlinkJoin ({ - paths = [git]; - - nativeBuildInputs = [makeWrapper]; - - postBuild = '' - wrapProgram $out/bin/git \ - --set-default 'GIT_CONFIG_COUNT' 7 \ - --set-default 'GIT_CONFIG_KEY_0' 'core.pager' \ - --set-default 'GIT_CONFIG_VALUE_0' '${lib.getExe pkgs.delta}' \ - --set-default 'GIT_CONFIG_KEY_1' 'credentials.helper' \ - --set-default 'GIT_CONFIG_VALUE_1' 'store' \ - --set-default 'GIT_CONFIG_KEY_2' 'interactive.diffFilter' \ - --set-default 'GIT_CONFIG_VALUE_2' '${lib.getExe pkgs.delta} --color-only' \ - --set-default 'GIT_CONFIG_KEY_3' 'signing.signByDefault' \ - --set-default 'GIT_CONFIG_VALUE_3' 'true' \ - --set-default 'GIT_CONFIG_KEY_4' 'user.email' \ - --set-default 'GIT_CONFIG_VALUE_4' 'contact@guz.one' \ - --set-default 'GIT_CONFIG_KEY_5' 'user.name' \ - --set-default 'GIT_CONFIG_VALUE_5' 'Gustavo "Guz" L de Mello' \ - --set-default 'GIT_CONFIG_KEY_6' 'commit.gpgsign' \ - --set-default 'GIT_CONFIG_VALUE_6' 'true' - ''; - } - // {inherit (git) name pname meta;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - terminal = true; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (git) meta;}) diff --git a/packages/devkit/lazygit.nix b/packages/devkit/lazygit.nix new file mode 100644 index 0000000..a265d41 --- /dev/null +++ b/packages/devkit/lazygit.nix @@ -0,0 +1,39 @@ +{ + symlinkJoin, + makeWrapper, + pkgs, + lib, + lazygit ? pkgs.lazygit, + settings ? {}, +}: +symlinkJoin ({ + paths = [lazygit]; + nativeBuildInputs = [makeWrapper]; + postBuild = '' + wrapProgram $out/bin/lazygit \ + --add-flags '--use-config-file' \ + --add-flags '${pkgs.writeText "config.yml" (builtins.toJSON ({ + git.pagers = [ + { + colorArg = "always"; + pager = "${lib.getExe pkgs.delta} --dark --paging=never"; + } + ]; + gui.theme = let + colors = import ./colors.nix; + in { + activeBorderColor = [colors.base07 "bold"]; + inactiveBorderColor = [colors.base04]; + searchingActiveBorderColor = [colors.base02 "bold"]; + optionsTextColor = [colors.base06]; + selectedLineBgColor = [colors.base03]; + cherryPickedCommitBgColor = [colors.base02]; + cherryPickedCommitFgColor = [colors.base03]; + unstagedChangesColor = [colors.base08]; + defaultFgColor = [colors.base05]; + }; + } + // settings))}' + ''; + } + // {inherit (lazygit) name pname meta;}) diff --git a/packages/devkit/lazygit/default.nix b/packages/devkit/lazygit/default.nix deleted file mode 100644 index 9afc836..0000000 --- a/packages/devkit/lazygit/default.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - symlinkJoin, - makeWrapper, - pkgs, - lib, - lazygit ? pkgs.lazygit, - settings ? {}, -}: let - # YAML is a superset of JSON, so any JSON is valid YAML. - colors = import ../colors.nix; - cfg = pkgs.writeText "config.yml" (builtins.toJSON ({ - git.pagers = [ - { - colorArg = "always"; - pager = "${lib.getExe pkgs.delta} --dark --paging=never"; - } - ]; - - gui.theme = { - activeBorderColor = [colors.base07 "bold"]; - inactiveBorderColor = [colors.base04]; - searchingActiveBorderColor = [colors.base02 "bold"]; - optionsTextColor = [colors.base06]; - selectedLineBgColor = [colors.base03]; - cherryPickedCommitBgColor = [colors.base02]; - cherryPickedCommitFgColor = [colors.base03]; - unstagedChangesColor = [colors.base08]; - defaultFgColor = [colors.base05]; - }; - } - // settings)); - - drv = symlinkJoin ({ - paths = [lazygit]; - - nativeBuildInputs = [makeWrapper]; - - postBuild = '' - wrapProgram $out/bin/lazygit \ - --add-flags '--use-config-file' --add-flags '${cfg}' - ''; - } - // {inherit (lazygit) name pname meta;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - terminal = true; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (lazygit) meta;}) diff --git a/packages/devkit/starship/default.nix b/packages/devkit/starship/default.nix index 52b3a72..4a9a2a3 100644 --- a/packages/devkit/starship/default.nix +++ b/packages/devkit/starship/default.nix @@ -4,36 +4,13 @@ pkgs, lib, starship ? pkgs.starship, -}: let - drv = symlinkJoin ({ - paths = [starship]; - - nativeBuildInputs = [makeWrapper]; - - postBuild = '' - wrapProgram $out/bin/starship \ - --set-default 'STARSHIP_CONFIG' '${./config.toml}' - ''; - } - // {inherit (starship) name pname meta;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - terminal = true; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (starship) meta;}) +}: +symlinkJoin ({ + paths = [starship]; + nativeBuildInputs = [makeWrapper]; + postBuild = '' + wrapProgram $out/bin/starship \ + --set-default 'STARSHIP_CONFIG' '${./config.toml}' + ''; + } + // {inherit (starship) name pname meta;}) diff --git a/packages/devkit/tmux/default.nix b/packages/devkit/tmux/default.nix index 7572f0d..e03b06f 100644 --- a/packages/devkit/tmux/default.nix +++ b/packages/devkit/tmux/default.nix @@ -45,36 +45,13 @@ bind -T prefix g run-shell "tmux neww ${lib.getExe sessionizer}" ''; - - drv = symlinkJoin ({ +in + symlinkJoin ({ paths = [tmux]; - nativeBuildInputs = [makeWrapper]; - postBuild = '' wrapProgram $out/bin/tmux \ --add-flags '-f' --add-flags '${cfg}' ''; } - // {inherit (tmux) name pname man meta;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - terminal = true; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (tmux) man meta;}) + // {inherit (tmux) name pname man meta;}) diff --git a/packages/devkit/yazi/default.nix b/packages/devkit/yazi/default.nix index 49ccea6..86b734f 100644 --- a/packages/devkit/yazi/default.nix +++ b/packages/devkit/yazi/default.nix @@ -1,39 +1,74 @@ { - symlinkJoin, + formats, + lib, makeWrapper, pkgs, - lib, + stdenv, + symlinkJoin, yazi ? pkgs.yazi, -}: let - drv = symlinkJoin ({ +}: +with lib; let + toml = formats.toml {}; + + init = pkgs.writeText "init.lua" '' + ${builtins.readFile ./init.lua} + ''; + keymapsToml = toml.generate "keymaps.toml" { + mgr.prepend_keymap = map (v: { + on = [(toString v)]; + run = "plugin relative-motions ${(toString v)}"; + }) (range 1 9); + manager.keymap = [ + { + on = ""; + run = "shell -- dragon -x -i -T %s1"; + } + ]; + }; + themeToml = toml.generate "theme.toml" {}; + yaziToml = toml.generate "yazi.toml" { + manager = { + linemode = "size"; + + show_hidden = true; + show_symlink = true; + + sort_by = "natural"; + sort_dir_first = true; + sort_sensitive = false; + sort_translit = true; + }; + }; + plugins = {}; +in + symlinkJoin ({ paths = [yazi]; - nativeBuildInputs = [makeWrapper]; - postBuild = '' wrapProgram $out/bin/yazi \ - --set-default YAZI_CONFIG_HOME ${./.} + --set YAZI_CONFIG_HOME ${stdenv.mkDerivation { + name = "config-home"; + src = ./.; + installPhase = '' + mkdir -p $out + cp ${init} $out/init.lua + cp ${keymapsToml} $out/keymaps.toml + cp ${themeToml} $out/theme.toml + cp ${yaziToml} $out/yazi.toml + + ${join "\n" (mapAttrsToList (n: v: '' + mkdir -p $out/plugins/${n} + cp -r ${v}/* $out/plugins/${n} + '') + plugins)} + ''; + }} \ + --set PATH ${with pkgs; + makeBinPath [ + dragon-drop + jq + poppler + ]} ''; } - // {inherit (yazi) name pname meta;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - terminal = true; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (yazi) meta;}) + // {inherit (yazi) name pname meta;}) diff --git a/packages/devkit/yazi/keymaps.toml b/packages/devkit/yazi/keymaps.toml deleted file mode 100644 index e69de29..0000000 diff --git a/packages/devkit/yazi/theme.toml b/packages/devkit/yazi/theme.toml deleted file mode 100644 index e69de29..0000000 diff --git a/packages/devkit/yazi/yazi.toml b/packages/devkit/yazi/yazi.toml deleted file mode 100644 index d821e15..0000000 --- a/packages/devkit/yazi/yazi.toml +++ /dev/null @@ -1,10 +0,0 @@ -[manager] -show_hidden = true -show_symlink = true - -sort_by = "natural" -sort_dir_first = true -sort_sensitive = false -sort_translit = true - -linemode = "size" diff --git a/packages/devkit/zellij/default.nix b/packages/devkit/zellij/default.nix index 87ea8d7..919acc7 100644 --- a/packages/devkit/zellij/default.nix +++ b/packages/devkit/zellij/default.nix @@ -5,78 +5,51 @@ lib, zellij ? pkgs.zellij, shell ? pkgs.zsh, -}: let - colors = import ../colors.nix; +}: +symlinkJoin ({ + paths = [zellij]; + nativeBuildInputs = [makeWrapper]; + postBuild = '' + wrapProgram $out/bin/zellij \ + --set-default ZELLIJ_CONFIG_FILE ${ + let + colors = import ../colors.nix; + in + pkgs.writeText "config.kdl" '' + plugins { + zellij-sessionizer location="file:${builtins.fetchurl { + url = "https://github.com/laperlej/zellij-sessionizer/releases/download/v0.4.3/zellij-sessionizer.wasm"; + sha256 = "0d43jhlhm7p8pvd8kcylfbfy3dahr8q4yngpnjyqivapwip9csq0"; + }}" - config = let - plugins = { - sessionizer = builtins.fetchurl { - url = "https://github.com/laperlej/zellij-sessionizer/releases/download/v0.4.3/zellij-sessionizer.wasm"; - sha256 = "0d43jhlhm7p8pvd8kcylfbfy3dahr8q4yngpnjyqivapwip9csq0"; - }; - }; - in - pkgs.writeText "config.kdl" '' - plugins { - zellij-sessionizer location="file:${plugins.sessionizer}" + tab-bar location="zellij:tab-bar" + status-bar location="zellij:status-bar" + compact-bar location="zellij:compact-bar" + session-manager location="zellij:session-manager" + } - tab-bar location="zellij:tab-bar" - status-bar location="zellij:status-bar" - compact-bar location="zellij:compact-bar" - session-manager location="zellij:session-manager" + default_shell "${lib.getExe shell}" + + themes { + defautl { + bg "${colors.base03}"; + fg "${colors.base05}"; + red "${colors.base01}"; + green "${colors.base0B}"; + blue "${colors.base0D}"; + yellow "${colors.base0A}"; + magenta "${colors.base0E}"; + orange "${colors.base09}"; + cyan "${colors.base0C}"; + black "${colors.base00}"; + white "${colors.base07}"; + } + } + theme "default" + + ${builtins.readFile ./config.kdl} + '' } - - default_shell "${lib.getExe shell}" - - themes { - defautl { - bg "${colors.base03}"; - fg "${colors.base05}"; - red "${colors.base01}"; - green "${colors.base0B}"; - blue "${colors.base0D}"; - yellow "${colors.base0A}"; - magenta "${colors.base0E}"; - orange "${colors.base09}"; - cyan "${colors.base0C}"; - black "${colors.base00}"; - white "${colors.base07}"; - } - } - theme "default" - - ${builtins.readFile ./config.kdl} ''; - - drv = symlinkJoin ({ - paths = [zellij]; - - nativeBuildInputs = [makeWrapper]; - - postBuild = '' - wrapProgram $out/bin/zellij \ - --set-default ZELLIJ_CONFIG_FILE ${config} - ''; - } - // {inherit (zellij) name pname meta;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - terminal = true; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (zellij) meta version;}) + } + // {inherit (zellij) name pname meta;}) diff --git a/packages/devkit/zsh/.zshrc b/packages/devkit/zsh/.zshrc index 5f13006..4884247 100644 --- a/packages/devkit/zsh/.zshrc +++ b/packages/devkit/zsh/.zshrc @@ -82,3 +82,10 @@ alias -- yy='yazi' if [ -f "$ZSHRC_APPEND" ]; then source "$ZSHRC_APPEND" fi + +# Fetch intro +if command -v "fastfetch" >/dev/null 2>&1; then + if [[ "$TERM" != "dump" ]]; then + fastfetch + fi +fi diff --git a/packages/devkit/zsh/default.nix b/packages/devkit/zsh/default.nix index 56e08f2..0e806c9 100644 --- a/packages/devkit/zsh/default.nix +++ b/packages/devkit/zsh/default.nix @@ -2,7 +2,6 @@ symlinkJoin, makeWrapper, pkgs, - lib, zsh ? pkgs.zsh, # .zshrc zshrc-prepend ? "", @@ -10,15 +9,12 @@ }: let zsh-syntax-highlighting = "${pkgs.zsh-syntax-highlighting}/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh"; zsh-autosuggestions = "${pkgs.zsh-autosuggestions}/share/zsh-autosuggestions/zsh-autosuggestions.zsh"; - zshrc-prepend-file = pkgs.writeText ".zshrc_prepend" zshrc-prepend; zshrc-append-file = pkgs.writeText ".zshrc_append" zshrc-append; - - drv = symlinkJoin ({ +in + symlinkJoin ({ paths = [zsh]; - nativeBuildInputs = [makeWrapper]; - postBuild = '' wrapProgram $out/bin/zsh \ --set-default 'ZSH_PLUGIN_SYNTAXHIGHLIGHING' '${zsh-syntax-highlighting}' \ @@ -28,25 +24,4 @@ --set-default 'ZDOTDIR' '${./.}' ''; } - // {inherit (zsh) name pname meta man;}); -in - pkgs.stdenv.mkDerivation (rec { - name = drv.name; - pname = drv.pname; - - buildCommand = let - desktopEntry = pkgs.makeDesktopItem { - name = pname; - desktopName = name; - exec = "${lib.getExe drv}"; - terminal = true; - }; - in '' - mkdir -p $out/bin - cp ${lib.getExe drv} $out/bin - - mkdir -p $out/share/applications - cp ${desktopEntry}/share/applications/${pname}.desktop $out/share/applications/${pname}.desktop - ''; - } - // {inherit (zsh) meta man;}) + // {inherit (zsh) man meta name passthru pname version;})