From 285e319681dd83e4b6d85622a0a3c56ada1f1e8d Mon Sep 17 00:00:00 2001 From: Anish L Date: Sun, 22 May 2022 21:10:29 +1000 Subject: [PATCH] refactor core into cli so it can be used from hm as well this gives me portable shellAliases and direnv --- flake.nix | 2 +- profiles/core/default.nix | 186 +++++++++----------------------- users/anish/default.nix | 13 +-- users/profiles/cli/default.nix | 156 ++++++++++----------------- users/profiles/git/config | 2 +- users/profiles/git/default.nix | 45 ++++++-- users/profiles/nvim/default.nix | 1 + 7 files changed, 156 insertions(+), 249 deletions(-) diff --git a/flake.nix b/flake.nix index e7c08940..471fc592 100644 --- a/flake.nix +++ b/flake.nix @@ -139,7 +139,7 @@ importables = rec { profiles = digga.lib.rakeLeaves ./users/profiles; suites = with profiles; rec { - hmBase = [ direnv git nvim ]; + hmBase = [ direnv git nvim cli ]; gui = [ hmBase firefox desktop email cal ]; work = [ hmBase firefox ]; }; diff --git a/profiles/core/default.nix b/profiles/core/default.nix index efab0dcf..d32ae379 100644 --- a/profiles/core/default.nix +++ b/profiles/core/default.nix @@ -6,65 +6,57 @@ in nix.systemFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ]; + fonts = { + fonts = with pkgs; [ powerline-fonts dejavu_fonts ]; + fontconfig.defaultFonts = { + monospace = [ "DejaVu Sans Mono for Powerline" ]; + sansSerif = [ "DejaVu Sans" ]; + }; + }; + + nix = { + autoOptimiseStore = true; + gc.automatic = true; + optimise.automatic = true; + useSandbox = true; + allowedUsers = [ "@wheel" ]; + trustedUsers = [ "root" "@wheel" ]; + extraOptions = '' + min-free = 536870912 + keep-outputs = true + keep-derivations = true + fallback = true + ''; + }; + + #programs.bash = { + # promptInit = '' + # eval "$(starship init bash)" + # ''; + # interactiveShellInit = '' + # flakify() { + # if [ ! -e flake.nix ]; then + # nix flake new -t github:nix-community/nix-direnv . + # elif [ ! -e .envrc ]; then + # echo "use flake" > .envrc + # direnv allow + # fi + # vim flake.nix + # } + + # export STARSHIP_CONFIG=${ + # pkgs.writeText "starship.toml" + # (builtins.readFile ./starship.toml) + # } + + # eval "$(${pkgs.direnv}/bin/direnv hook bash)" + # ''; + # enableCompletion = true; + #}; + + programs.zsh.enable = true; + environment = { - systemPackages = with pkgs; [ - binutils - coreutils - dnsutils - dosfstools - git - bottom - gptfdisk - iputils - jq - manix - moreutils - nix-index - cached-nix-shell - nmap - ripgrep - skim - tealdeer - usbutils - utillinux - whois - iftop - wget - curl - exa - bat - fd - ag - tcpdump - mtr - file - lsof - atool - inotify-tools - strace - zip - unzip - rsync - tmux - pwgen - glow - gitAndTools.gitFull - pinentry_gnome - pass - less - gdb - xxd - kitty - taskwarrior - gnupg - syncthing - dijo - #kdeconnect - #ssb-patchwork - libreoffice - fontconfig - pandoc - ]; shellInit = '' export STARSHIP_CONFIG=${ @@ -77,40 +69,6 @@ in let ifSudo = lib.mkIf config.security.sudo.enable; in { - # quick cd - ".." = "cd .."; - "..." = "cd ../.."; - "...." = "cd ../../.."; - "....." = "cd ../../../.."; - - # modern cli tools - ls = "exa"; - l = "ls"; - tree = "ls --tree"; - cat = "bat"; - unzip = "aunpack"; - copy = "xclip -selection clipboard"; - paste = "xclip -selection clipboard -o"; - - # task warrior - t = "task"; - ta = "task add"; - tm = "task modify"; - te = "task edit"; - ts = "task sync"; - - scrot = "scrot ~/screenshots/%b%d::%H%M%S.png"; - - # git - g = "git"; - - # grep - grep = "rg"; - gi = "grep -i"; - - # internet ip - myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; - # nix n = "nix"; np = "n profile"; @@ -128,7 +86,6 @@ in mn = '' manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix ''; - # fix nixos-option nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat"; @@ -158,49 +115,6 @@ in }; }; - fonts = { - fonts = with pkgs; [ powerline-fonts dejavu_fonts ]; - fontconfig.defaultFonts = { - monospace = [ "DejaVu Sans Mono for Powerline" ]; - sansSerif = [ "DejaVu Sans" ]; - }; - }; - - nix = { - autoOptimiseStore = true; - gc.automatic = true; - optimise.automatic = true; - useSandbox = true; - allowedUsers = [ "@wheel" ]; - trustedUsers = [ "root" "@wheel" ]; - extraOptions = '' - min-free = 536870912 - keep-outputs = true - keep-derivations = true - fallback = true - ''; - }; - - programs.bash = { - promptInit = '' - eval "$(${pkgs.starship}/bin/starship init bash)" - ''; - interactiveShellInit = '' - flakify() { - if [ ! -e flake.nix ]; then - nix flake new -t github:nix-community/nix-direnv . - elif [ ! -e .envrc ]; then - echo "use flake" > .envrc - direnv allow - fi - vim flake.nix - } - - eval "$(${pkgs.direnv}/bin/direnv hook bash)" - ''; - enableCompletion = true; - }; - services.devmon.enable = true; # For rage encryption, all hosts need a ssh key pair diff --git a/users/anish/default.nix b/users/anish/default.nix index 682714d4..9477bab4 100644 --- a/users/anish/default.nix +++ b/users/anish/default.nix @@ -1,4 +1,4 @@ -{ hmUsers, ... }: +{ hmUsers, pkgs, ... }: { #home-manager.users = { inherit (hmUsers) anish; }; @@ -6,16 +6,17 @@ users.users.anish = { description = "Personal user for Anish"; hashedPassword = "MVHHpy9gbe3ow"; + shell = pkgs.zsh; isNormalUser = true; extraGroups = [ "wheel" "audio" ]; openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDM0Zvei46x/yZl/IeBCq6+IYQQ0avulzVyBysF9cPigZMCybWRV7IEU+E3k9t6JrbdbdGfJkcZIWmsWDdKS8W8mBnZpVoT0ffLynu8JQ/TKdGm4Qv6bgUeKNrGsNv0ZPs2CDaGSLj0oJfRF7Ko10tcLP0vW+yujrh+y6TH/vVzJioaV4TGvtCUpn+wEQah9ROwPQLUUofsSWdnRsDJ/gp37zXWs4l5wyjSKtP3O9RZUP7kBekbSqEgSXiTk0oUQSVqIWl9NDiP6onk/gSOjXsR/JPqsSN/XI/c/yj6gyY0f51Ru2D7iBxuMJIJcWV+rU6coIj+ULcQWLzt/7TI8jq5AOOzI/ll4zbL24Eo84Rz+TP9tvMMhDZ0VaMN22AJ8qQEjc5P09tWKsX7Jg39XelyV1jHXncE4yvIE9F4RSCHzWCeKeXakizQNuzSaxTxIExRFYHjNW5bR6+3MTGwVrEIXU+qML+0yFTR86MT+tdY5AreAJQLwbog79O1NupeXJE= anish@curve" ]; }; - home-manager.users.anish.programs.git = { - userName = "Anish Lakhwara"; - userEmail = "anish+git@lakhwara.com"; - delta.enable = true; - }; + # home-manager.users.anish.programs.git = { + # userName = "Anish Lakhwara"; + # userEmail = "anish+git@lakhwara.com"; + # delta.enable = true; + # }; #home-manager.users.anish = { suites, ... }: { # imports = suites.gui; diff --git a/users/profiles/cli/default.nix b/users/profiles/cli/default.nix index 8db98432..d20b7012 100644 --- a/users/profiles/cli/default.nix +++ b/users/profiles/cli/default.nix @@ -9,6 +9,7 @@ #git bottom gptfdisk + starship iputils jq manix @@ -28,6 +29,8 @@ exa bat fd + trash-cli + nix-index ag tcpdump mtr @@ -42,7 +45,6 @@ tmux pwgen glow - gitAndTools.gitFull pinentry_gnome pass less @@ -60,113 +62,69 @@ pandoc ]; - programs.bash = { - promptInit = '' - eval "$(${pkgs.starship}/bin/starship init bash)" - ''; - interactiveShellInit = '' - flakify() { - if [ ! -e flake.nix ]; then - nix flake new -t github:nix-community/nix-direnv . - elif [ ! -e .envrc ]; then - echo "use flake" > .envrc - direnv allow - fi - vim flake.nix - } + programs.starship = { + enable = true; + enableZshIntegration = true; + }; - eval "$(${pkgs.direnv}/bin/direnv hook bash)" - ''; + programs.zsh = { + enable = true; + + # interactiveShellInit = '' + # flakify() { + # if [ ! -e flake.nix ]; then + # nix flake new -t github:nix-community/nix-direnv . + # elif [ ! -e .envrc ]; then + # echo "use flake" > .envrc + # direnv allow + # fi + # vim flake.nix + # } + # ''; + sessionVariables = { + EDITOR = "nvim"; + }; enableCompletion = true; - shellInit = '' - export STARSHIP_CONFIG=${ - pkgs.writeText "starship.toml" - (fileContents ./starship.toml) - } - ''; + }; - shellAliases = - let ifSudo = lib.mkIf config.security.sudo.enable; - in - { - # quick cd - ".." = "cd .."; - "..." = "cd ../.."; - "...." = "cd ../../.."; - "....." = "cd ../../../.."; + programs.direnv = { + enable = true; + enableZshIntegration = true; + }; - # modern cli tools - ls = "exa"; - l = "ls"; - tree = "ls --tree"; - cat = "bat"; - unzip = "aunpack"; - copy = "xclip -selection clipboard"; - paste = "xclip -selection clipboard -o"; + home.shellAliases = { + # quick cd + ".." = "cd .."; + "..." = "cd ../.."; + "...." = "cd ../../.."; + "....." = "cd ../../../.."; - # task warrior - t = "task"; - ta = "task add"; - tm = "task modify"; - te = "task edit"; - ts = "task sync"; + # modern cli tools + ls = "exa"; + l = "ls"; + tree = "ls --tree"; + cat = "bat"; + unzip = "aunpack"; + copy = "xclip -selection clipboard"; + paste = "xclip -selection clipboard -o"; - scrot = "scrot ~/screenshots/%b%d::%H%M%S.png"; + # task warrior + t = "task"; + ta = "task add"; + tm = "task modify"; + te = "task edit"; + ts = "task sync"; - # git - g = "git"; + scrot = "scrot ~/screenshots/%b%d::%H%M%S.png"; - # grep - grep = "rg"; - gi = "grep -i"; + # git + g = "git"; - # internet ip - myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; + # grep + grep = "rg"; + gi = "grep -i"; - # nix - n = "nix"; - np = "n profile"; - ni = "np install"; - nr = "np remove"; - ns = "n search --no-update-lock-file"; - nf = "n flake"; - nepl = "n repl ''"; - srch = "ns nixos"; - orch = "ns override"; - nrb = ifSudo "cd /tmp; sudo nixos-rebuild switch --flake '/etc/nixos/#curve'; cd $OLDPWD"; - nrt = ifSudo "sudo nixos-rebuild test --flake '/etc/nixos/#curve'"; - nedit = "cd /etc/nixos; vim"; - ncd = "cd /etc/nixos"; - mn = '' - manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix - ''; - - # fix nixos-option - nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat"; - - # sudo - s = ifSudo "sudo -E "; - pls = ifSudo "s"; - si = ifSudo "sudo -i"; - se = ifSudo "sudoedit"; - - # top - top = "btm"; - - # systemd - ctl = "systemctl"; - stl = ifSudo "s systemctl"; - utl = "systemctl --user"; - ut = "systemctl --user start"; - un = "systemctl --user stop"; - up = ifSudo "s systemctl start"; - dn = ifSudo "s systemctl stop"; - jtl = "journalctl"; - - # quick ssh - sm = "ssh 10.0.69.4"; - ss = "ssh sealight.xyz"; - sc = "ssh lakhwara.com"; # cube - }; + # internet ip + myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; }; } diff --git a/users/profiles/git/config b/users/profiles/git/config index 990e0bba..0704d948 100644 --- a/users/profiles/git/config +++ b/users/profiles/git/config @@ -22,7 +22,7 @@ emails = !git log --format="%aE" | sort -u email-domains = !git log --format="%aE" | awk -F'@' '{print $2}' | sort -u # pretty log - ls = log --graph --abbrev-commit --decorate --color=always --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) - %C(dim red)%an%C(reset)%C(bold yellow)%d%C(reset)' --all + ls = !git log --graph --abbrev-commit --decorate --color=always --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) - %C(dim red)%an%C(reset)%C(bold yellow)%d%C(reset)' --all [filter "lfs"] required = true smudge = git-lfs smudge -- %f diff --git a/users/profiles/git/default.nix b/users/profiles/git/default.nix index c99255da..4f7ef065 100644 --- a/users/profiles/git/default.nix +++ b/users/profiles/git/default.nix @@ -1,14 +1,45 @@ { - xdg.configFile = { - "git/config".source = ./config; - "git/ignore".source = ./ignore; - "git/attributes".source = ./attributes; - }; + #xdg.configFile = { + # "git/config".source = ./config; + # "git/ignore".source = ./ignore; + # "git/attributes".source = ./attributes; + #}; programs.lazygit.enable = true; programs.git = { enable = true; + userName = "Anish Lakhwara"; + userEmail = "anish+git@lakhwara.com"; + delta.enable = true; + + ignores = [ + "*~" + "*.*~" + "\\#*" + ".\\#*" + "*.swp" + ".*.sw[a-z]" + "*.un~" + ".netrwhist" + ".vim/*" + ".DS_Store?" + ".DS_Store" + ".CFUserTextEncoding" + ".Trash" + ".Xauthority" + "thumbs.db" + "Thumbs.db" + "Icon?" + ".ccls-cache/" + ".sass-cache/" + "__pycache__/" + "*.class" + "*.exe" + "*.o" + "*.pyc" + "*.elc" + ]; extraConfig = { pull.rebase = false; @@ -19,7 +50,7 @@ co = "checkout"; cob = "checkout -b"; f = "fetch -p"; - c = "commit"; + c = "commit -v"; p = "push"; ba = "branch -a"; bd = "branch -d"; @@ -45,6 +76,8 @@ tlog = "log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative"; rank = "shortlog -sn --no-merges"; + authors = "authors | sort | uniq -c | sort -n"; + ls = "log --graph --abbrev-commit --decorate --color=always --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) - %C(dim red)%an%C(reset)%C(bold yellow)%d%C(reset)' --all"; # delete merged branches bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d"; diff --git a/users/profiles/nvim/default.nix b/users/profiles/nvim/default.nix index 3e4935ec..d3ce128e 100644 --- a/users/profiles/nvim/default.nix +++ b/users/profiles/nvim/default.nix @@ -180,6 +180,7 @@ in map q :q map r :RainbowParenthesesToggleAll map :noh + map Q nnoremap Y y$ " center moving nnoremap n nzzzv