diff --git a/computers/shared/git.nix b/computers/shared/git.nix index e0e03e4..e4f9551 100644 --- a/computers/shared/git.nix +++ b/computers/shared/git.nix @@ -13,10 +13,104 @@ in { programs.git = { enable = true; config = { + alias = { + a = "add"; + aa = "add ."; + aliases = "! f(){ TOP=$(expr $(grep -n \"^\\\\\\\\[alias\" /etc/gitconfig | sed -e 's|:.*||') + 1) && for LINE_NUMBER in $(grep -n \"^\\\\\\\\[\" /etc/gitconfig | sed -e 's|:.*||'); do [ $TOP -lt $LINE_NUMBER ] && BOTTOM=$(expr $LINE_NUMBER - 2 ) && break; done; sed -n \"\${TOP},\${BOTTOM}p\" /etc/gitconfig; }; f | sed -e 's|^ ||'"; + ap = "add -p"; + b = "! git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's|refs/heads/||'"; + bD = "branch -D"; + ba = "branch -a"; + bc = "branch -c"; + bd = "branch -d"; + br = "branch -r"; + c = "! git commit --verbose; git push"; + ca = "! git c --amend"; + cf = "! git commit --verbose; git push --force"; + ch = "switch -C"; + change = "switch -C"; + cl = "clone"; + cm = "commit -m"; + co = "checkout "; # old/bad practice - switches branch and can modify worktree + cp = "cherry-pick ; usually abusive; sometimes necessary"; + create = "! git bc"; + d = "diff"; + dc = "diff --cached"; + ds = "diff --stat"; + expire = "! git fsck --unreachable --dangling --no-reflogs; git reflog expire --expire=now --all; git gc --prune=now"; + f = "fetch"; + fe = "fetch"; + filelog = "log --patch"; + find = "! git ls-files | grep -i"; + fl = "log --patch"; + fp = "fetch --prune ; removes branches not in upstream"; + gr = "grep -Ii"; + grep = "grep -Ii"; + greproot = "! git grr"; + grr = "! f() { ROOT=$(git rev-parse --show-toplevel) && cd $ROOT && git grep --full-name -In $1 | xargs -I{} echo $ROOT/{}; }; f"; + invert = "revert"; + l = "log --oneline --graph --decorate --parents"; + lasttag = "describe --tags --abbrev=0"; + ll = "log --pretty=format:\"%C(yellow)%h%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --numstat"; + lref = "log --oneline --graph --decorate --parents --reflog"; + ls = "log --pretty=format:\"%C(yellow)%h\\\\ %ad%Cred%d\\\\ %Creset%s%Cblue\\\\ [%cn]\" --decorate --date=short"; + lt = "describe --tags --abbrev=0"; + mailmap = "! f(){ printf \\\"$(git config user.name) <$(git config user.email)> <\${1}>\\\" > mailmap; git filter-repo --force --mailmap mailmap; }; f"; + one = "log -1 ; no input displays HEAD"; + pd = "push -d"; + pf = "push --force"; + pl = "pull"; + pp = "pull --prune ; removes branches not in upstream"; + pr = "pull --rebase ; rebases commits onto upstream"; + ps = "push"; + pt = "! f(){ git push $1 tag $2; }; f"; + r = "rebase"; + ra = "rebase --skip"; + rc = "rebase --continue"; + re = "restore"; + ref = "reflog"; + ri = "rebase --interactive"; + rm = "rm -r"; + rmf = "! git rm --force"; + rq = "rebase --quit"; + rs = "rebase --abort"; + sh = "show"; + st = "status"; + sw = "switch ; new checkout - only switching branch w/o restoring worktree"; + sync = "! git fe upstream; git rebase upstream/main; git push"; + t = "tag"; + td = "tag --delete"; + un = "restore --staged --worktree"; + uncommit = "switch -C"; + undo = "restore --staged --worktree"; + undo-specific = "! f(){ git restore --source=\\\"$1\\\" $2; }; f"; + undo-stage = "restore"; + undo-unstaged = "restore"; + undo-work = "restore --staged --worktree"; + undo-wt = "restore --staged --worktree"; + unstage = "restore --staged"; + wa = "! f(){ git worktree add ../$1 $1; }; f"; + wc = "! f(){ PROJ=$(printf $1 | sed -e 's|.*/||' | sed -e 's|.git||'); mkdir $PROJ; cd $PROJ; if git ls-remote $1 | grep -q \"main\"; then BRANCH=\"main\"; elif git ls-remote $1 | grep -q \"master\"; then BRANCH=\"master\"; elif git ls-remote $1 | grep -q \"trunk\"; then BRANCH=\"trunk\"; fi; git clone $1 $BRANCH; }; f"; + wcreate = "! git wc"; + wmv = "worktree move"; + wnew = "! f(){ git worktree add ../$1; cd ../$1; git push --set-upstream origin $1; }; f"; + wr = "worktree remove"; + wrm = "! git wr"; + wsc = "! f(){ PROJ=$(printf $1 | sed -e 's|.*/||' | sed -e 's|.git||'); mkdir $PROJ; cd $PROJ; if git ls-remote $1 | grep -q \"main\"; then BRANCH=\"main\"; elif git ls-remote $1 | grep -q \"master\"; then BRANCH=\"master\"; elif git ls-remote $1 | grep -q \"trunk\"; then BRANCH=\"trunk\"; fi; git clone --depth=1 --single-branch $1 $BRANCH; }; f"; + wshallow = "! git wsc"; + }; + branch = { + autosetuprebase = "always"; + }; + color = { + branch = "auto"; + diff = "auto"; + status = "auto"; + }; user = { - name = "Artur Manuel"; email = "balkenix@outlook.com"; - signingKey = "~/.ssh/id_ed25519"; + name = "Artur Manuel"; + signingKey = "~/.ssh/id_ed25519.pub"; }; }; }; diff --git a/computers/waddledee/default.nix b/computers/waddledee/default.nix index f925b24..3a16a2a 100644 --- a/computers/waddledee/default.nix +++ b/computers/waddledee/default.nix @@ -23,6 +23,10 @@ options = "eurosign:e,ctrl:nocaps"; }; + udev.packages = [ + pkgs.android-udev-rules + ]; + libinput.enable = true; openssh.enable = true; };