From 8cca51063639aa9dc5dd4ac4e8dc583bde25ab93 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L de Mello" Date: Wed, 12 Feb 2025 11:22:09 -0300 Subject: [PATCH] feat(devkit): git wrapper --- packages/devkit/default.nix | 1 + packages/devkit/git/default.nix | 56 +++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 packages/devkit/git/default.nix diff --git a/packages/devkit/default.nix b/packages/devkit/default.nix index 6c89f0c..5ec07fc 100644 --- a/packages/devkit/default.nix +++ b/packages/devkit/default.nix @@ -1,3 +1,4 @@ {pkgs}: rec { ghostty = pkgs.callPackage ./ghostty {}; + git = pkgs.callPackage ./git {}; } diff --git a/packages/devkit/git/default.nix b/packages/devkit/git/default.nix new file mode 100644 index 0000000..67e41b6 --- /dev/null +++ b/packages/devkit/git/default.nix @@ -0,0 +1,56 @@ +{ + symlinkJoin, + makeWrapper, + pkgs, + lib, + git ? pkgs.git, + paths ? [], +}: let + drv = symlinkJoin ({ + paths = git; + + nativeBuildInputs = [makeWrapper]; + + postBuild = '' + wrapProgram $out/bin/git ${ + if (builtins.length paths) > 0 + then "$PATH:${lib.makeBinPath paths}" + else "" + } \ + --set-default 'GIT_CONFIG_COUNT' 6 \ + --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' + ''; + } + // {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;})