depot/ops/nixos/lib/hgrc.nix

59 lines
2.2 KiB
Nix

{ pkgs, lib, ... }:
let
hgrcPkg = pkgs.writeText "lukegb-hgrc" ''
[ui]
username = Luke Granger-Brown <hg@lukegb.com>
interface = curses
tweakdefaults = True
merge = internal:merge3
[alias]
log = log --template lukegblogshort --graph
xl = log -r 'smartlog()'
[revsetalias]
# We're interested in the current commit, and any non-extinct commits in the draft or secret phases.
smartlogstart() = . | ((draft() | secret()) - extinct())
# Now expand smartlogstart to go up to the parent public commit.
publichead(r1) = ancestors(r1) - (descendants(public(), 1) and public())
smartlogstart() = (parents(not public()) or not public() or . or head()) and (not obsolete() or unstable()^) and not closed()
smartlog() = publichead(smartlogstart())::smartlogstart() | smartlogstart()
[color]
mode = terminfo
custom.rev = green bold
custom.revprefix = green bold inverse
custom.author = red
custom.currentcommit_message = magenta
custom.bookmarks = bold orange
custom.date = lightyellow
color.orange = 202
color.lightyellow = 191
[templates]
lukegblogshort = {label('custom.rev', lukegbnode)} {label('custom.date', lukegbdate)} {label('custom.author', lukegbauthor)} {label(ifcontains(rev, revset('.'), 'custom.currentcommit_message', 'custom.message'), lukegbmsg)} {label('custom.bookmarks', bookmarks)}\n
lukegbdate = {date|age}
lukegbmsg = {desc|firstline}
lukegbcopybarain = {sub('^noreply\+([^@]+)@lukegb.com$', 'copybara:\\1', author|email)}
lukegbcopybara = {ifcontains(lukegbcopybarain, '@', "", lukegbcopybarain)}
lukegbauthor = {ifeq('hg@lukegb.com', author|email, 'lukegb', if(lukegbcopybara, lukegbcopybara, author|email))}
lukegbnode = {label('custom.revprefix', lukegbnodesh)}{lukegbnodelng}
lukegbnodesh = {node|shortest}
lukegbnodelng = {sub('^{lukegbnodesh}', "", '{node|short}')}
[extensions]
histedit =
rebase =
strip =
remotenames =
amend =
evolve =
'';
in
{
system.activationScripts.lukegb-hgrc = lib.stringAfter [ "users" "groups" ] ''
ln -sfn ${hgrcPkg} /home/lukegb/.hgrc
'';
}