nix-config/modules/shell.nix
Donovan Glover 22e31ff60b
chore: Format with nixpkgs-fmt
Note that we will continue to use nixpkgs-fmt for the time being here
since nixfmt-rfc-style breaks string syntax highlighting and comments
like `/* this */` get turned into `# this`.

The conversion from lisp-like formatting to something else in flake.nix
is a bit unfortunate, but I'd rather have a singular style for the
entire code base to make things easier.
2024-04-05 11:40:23 -04:00

341 lines
9.1 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ pkgs, config, lib, ... }:
let
inherit (pkgs) fish htop-vim;
inherit (lib) mkEnableOption mkIf mkMerge singleton;
inherit (builtins) attrValues;
inherit (cfg) postgres;
inherit (config.modules.system) username;
cfg = config.modules.shell;
in
{
options.modules.shell = {
postgres = mkEnableOption "postgres database and pgcli for containers";
};
config = {
users.defaultUserShell = fish;
environment.shells = [ fish ];
environment.sessionVariables = {
GIT_DISCOVERY_ACROSS_FILESYSTEM = "1";
FZF_DEFAULT_OPTS = "--height 40% --reverse --border --color=16";
NODE_OPTIONS = "--max_old_space_size=16384";
BAT_THEME = "base16";
GATSBY_TELEMETRY_DISABLED = "1";
EDITOR = "nvim";
VISUAL = "nvim";
};
environment.systemPackages = mkMerge [
(attrValues {
inherit (pkgs) wget jq eza fd fzf ripgrep;
})
(attrValues {
inherit (pkgs) treefmt;
})
(attrValues {
inherit (pkgs)
neofetch
onefetch
scc
genact
dwt1-shell-color-scripts
colorpanes
sanctity
cmatrix
;
})
(attrValues {
inherit (pkgs)
gdu
hexyl
visidata
zellij
;
})
(attrValues {
inherit (pkgs)
p7zip
unar
rsync
rclone
;
})
(mkIf postgres (attrValues {
inherit (pkgs) pgcli;
}))
];
services.postgresql = mkIf postgres {
enable = true;
ensureUsers = singleton {
name = username;
};
ensureDatabases = [ username ];
};
programs = {
fish = {
enable = true;
shellAliases = {
ls = "${pkgs.eza}/bin/eza --icons --group-directories-first --no-quotes -I 'lost+found'";
tree = "${pkgs.eza}/bin/eza --icons --group-directories-first --no-quotes --all --long --tree -I 'node_modules|.git|public|lost+found|target|.next|.cache|.nuxt|themes|.direnv|.wrangler|.vercel|dist'";
mv = "mv -i";
cp = "cp -ia";
rg = "${pkgs.ripgrep}/bin/rg --max-columns=2000 --smart-case";
ncu = "${pkgs.npm-check-updates}/bin/ncu --interactive --format group";
};
shellAbbrs = {
g = "git";
ga = "git add";
gaa = "git add --all";
gap = "git add --patch";
gapp = "git apply";
gb = "git branch --verbose";
gbr = "git branch --verbose --remotes";
gbd = "git branch --delete";
gbD = "git branch --delete --force";
gc = "git commit -m";
gca = "git commit --amend";
gcl = "git clone";
gco = "git checkout";
gcot = "git checkout --theirs";
gcp = "git cherry-pick --strategy-option theirs";
gcpx = "git cherry-pick --strategy-option theirs -x";
gd = "git diff";
gds = "git diff --staged";
gf = "git fetch";
gi = "git init";
gl = "git log --oneline --decorate --graph -n 10";
gm = "git merge";
gp = "git push";
gpu = "git pull";
gr = "git reset HEAD~";
gR = "git restore";
gRs = "git restore --staged";
gra = "git remote add";
gre = "git remote --verbose";
grh = "git reset HEAD";
grr = "git reset --hard HEAD~";
grb = "git rebase --interactive";
grbc = "git rebase --continue";
gs = "git status";
gsma = "git submodule add";
gsmu = "git submodule update --init --remote --recursive";
gst = "git stash";
gstp = "git stash pop";
gsw = "git switch";
gt = "git tag";
gts = "git tag -s";
y = "yarn";
ya = "yarn add";
yb = "yarn build";
yar = "yarn remove";
yd = "yarn dev";
yi = "yarn init";
yin = "yarn install";
yu = "yarn upgrade-interactive";
tp = "trash put";
tl = "trash list";
tr = "trash restore";
te = "trash empty";
nf = "nix flake";
nfc = "nix flake check";
nfu = "nix flake update";
npr = "nixpkgs-review pr --run fish --print-result";
nd = "nix develop --command fish";
nb = "nix build";
ns = "nix shell";
nr = "nix run";
ncg = "sudo nix-collect-garbage -d && nix-collect-garbage -d";
nvd = "nvd --color always diff /run/current-system result | less -R";
b = "bun";
br = "bun run";
bt = "bun test";
bi = "bun init";
bc = "bun create";
bin = "bun install";
ba = "bun add";
brm = "bun remove";
bu = "bun update";
bb = "bun build";
ci = "cargo init";
cin = "cargo info";
cu = "cargo update";
ca = "cargo add";
cab = "cargo add --build";
cad = "cargo add --dev";
cb = "cargo build";
cr = "cargo run";
cs = "cargo search";
ct = "cargo test";
cT = "cargo tree --depth 1";
cn = "cargo new";
crm = "cargo remove";
crmb = "cargo remove --build";
crmd = "cargo remove --dev";
cc = "cargo clippy";
cf = "cargo fmt";
dc = "deno compile";
dr = "deno run";
di = "deno install";
dt = "deno task";
dT = "deno test --watch";
p = "pnpm";
pa = "pnpm add";
pr = "pnpm remove";
pd = "pnpm dev";
pt = "pnpm test";
pb = "pnpm build";
pbs = "pnpm build && pnpm start";
dl = "yt-dlp";
vol = "wpctl set-volume '@DEFAULT_AUDIO_SINK@'"; # Change the volume, e.g. vol 10%+, vol 10%-, vol 100%
df = "df --human-readable --total";
du = "du --human-readable --summarize";
jis = "recode shift_jis..utf8"; # Easily convert shift_jis-encoded files to utf8
utf16 = "recode utf16..utf8"; # Rarely, some files from Japan are utf16 instead
jp = "LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8";
vm = "nixos-rebuild build-vm --flake . && ./result/bin/run-nixos-vm && trash put result nixos.qcow2";
sw = "sudo nixos-rebuild switch --flake .";
tf = "treefmt";
mgs = "mgitstatus";
c = "clear";
e = "exit";
k = "kitty @ set-background-opacity";
l = "ls -l";
n = "nvim";
j = "yazi";
t = "tree";
z = "zathura";
};
};
neovim.enable = true;
direnv.enable = true;
starship = {
enable = true;
settings = {
add_newline = false;
directory = {
style = "purple";
read_only = " ro";
};
git_branch = {
style = "yellow";
symbol = "";
};
character = {
success_symbol = "[>](red)[>](green)[>](blue)";
error_symbol = "[>](cyan)[>](purple)[>](yellow)";
vicmd_symbol = "[<](bold green)";
};
line_break.disabled = true;
nodejs = {
format = "with [$symbol($version )]($style)";
symbol = "node ";
version_format = "\${major}";
disabled = true;
};
git_commit.tag_symbol = " tag ";
git_status = {
ahead = ">";
behind = "<";
diverged = "<>";
renamed = "r";
deleted = "x";
};
aws.symbol = "aws ";
cobol.symbol = "cobol ";
conda.symbol = "conda ";
crystal.symbol = "cr ";
cmake.symbol = "cmake ";
dart.symbol = "dart ";
deno.symbol = "deno ";
dotnet.symbol = ".NET ";
docker_context.symbol = "docker ";
elixir.symbol = "exs ";
elm.symbol = "elm ";
golang.symbol = "go ";
hg_branch.symbol = "hg ";
java.symbol = "java ";
julia.symbol = "jl ";
kotlin.symbol = "kt ";
memory_usage.symbol = "memory ";
nim.symbol = "nim ";
nix_shell = {
format = " ";
symbol = "nix ";
};
ocaml.symbol = "ml ";
package.symbol = "pkg ";
perl.symbol = "pl ";
php.symbol = "php ";
purescript.symbol = "purs ";
python.symbol = "python ";
ruby.symbol = "ruby ";
rust = {
symbol = "rust ";
disabled = true;
};
bun = {
symbol = "bun ";
disabled = true;
};
scala.symbol = "scala ";
swift.symbol = "swift ";
};
};
htop = {
enable = true;
package = htop-vim;
settings = {
tree_view = true;
hide_userland_threads = true;
highlight_changes = true;
show_cpu_frequency = true;
show_cpu_temperature = true;
highlight_base_name = true;
show_program_path = false;
};
};
};
};
}