nixos-config/modules/cli.nix
2021-06-28 13:20:20 -04:00

124 lines
2.9 KiB
Nix

{ config, pkgs, lib, ... }:
let
powerlineOpts = [
"-mode=flat"
"-colorize-hostname"
"-cwd-mode=dironly"
"-modules=user,host,cwd,nix-shell,git,jobs"
"-git-assume-unchanged-size 0"
];
system-rev = toString config.system.nixos.revision;
in
{
environment.systemPackages = with pkgs; [
pwgen
pv
tree
psmisc
ncdu
git
file
sqlite
usbutils
entr
gcc
python3
openssl
wget
lm_sensors
htop
jq
zip
unzip
dnsutils
whois
tcpdump
rsync
nixpkgs-fmt
nix-index
nix-top
(writeShellScriptBin "dirt" "while sleep 1; do grep '^Dirty:' /proc/meminfo ; done")
(writeShellScriptBin "nix-roots" "nix-store --gc --print-roots | grep -v ^/proc/")
(writeShellScriptBin "ns" ''
exec nix shell "nixpkgs/${system-rev}#$@"
'')
(writeShellScriptBin "pip_install" ''
exec nix shell 'nixpkgs/${system-rev}#python3.pkgs.pip' --command pip install --user -UI pip setuptools
'')
(writeShellScriptBin "nixos-check-reboot" ''
set -e
booted="$(readlink /run/booted-system/{initrd,kernel,kernel-modules})"
built="$(readlink /nix/var/nix/profiles/system/{initrd,kernel,kernel-modules})"
if [ "$booted" = "$built" ]
then
echo OK
exit 0
else
echo REBOOT NEEDED
exit 1
fi
'')
(writeScriptBin "zfsram" ''
#!${pkgs.python3}/bin/python
for ln in open('/proc/spl/kstat/zfs/arcstats').readlines():
if ln.startswith('size '):
print(str(int(ln.split(' ')[-1])/(1024*1024*1024))[:5],'GB')
'')
(writeShellScriptBin "channel" ''
echo
echo "NixOS ${config.system.nixos.release} (${config.system.defaultChannel})"
echo
echo "${system-rev} current local"
echo "$(curl --silent -L ${config.system.defaultChannel}/git-revision) latest available"
echo
'')
];
environment.etc."pip.conf".text = ''
[install]
no-warn-script-location = false
'';
environment.variables.PLGO_HOSTNAMEFG = "0";
environment.variables.PLGO_HOSTNAMEBG = "114";
programs.tmux = {
enable = true;
terminal = "screen-256color";
};
programs.bash.interactiveShellInit = ''
stty -ixon
alias p=python3
alias tmp='cd "$(TMPDIR=$XDG_RUNTIME_DIR mktemp -d)"'
alias catc='${pkgs.vimpager-latest}/bin/vimpager --force-passthrough'
alias nix-env="echo nix-env is disabled #"
function _update_ps1() {
PS1="\n$(${pkgs.powerline-go}/bin/powerline-go ${lib.concatStringsSep " " powerlineOpts})$ "
}
[ "$TERM" = "linux" ] || PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
'';
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
configure = {
packages.sconfig.start = [ pkgs.vimPlugins.vim-nix ];
customRC = ''
set nowrap scrolloff=9
'';
};
};
}