dotfiles/home-manager/no-gui.nix

246 lines
4.2 KiB
Nix

{
pkgs,
inputs,
lib,
homeDirectory,
config,
username,
stateVersion,
...
}:
let
rust_pkgs = with pkgs; [
(rust-bin.stable.latest.default.override ({
extensions = [
"rust-src"
"rust-analyzer"
"clippy"
"rustfmt"
"rust-std"
"cargo"
];
# thumbv7m-none-eabi target for stm32
targets = [ "thumbv7m-none-eabi" ];
}))
cargo-expand
cargo-edit # cargo upgrade and stuff
cargo-pgo
rust-script
bolt_19
libllvm # llvm-profdata
cargo-show-asm
cargo-flamegraph
];
lsps = with pkgs; [
# java
jdt-language-server
# HTML/CSS/JSON/ESLint language servers
vscode-langservers-extracted
nil # nix lsp
yaml-language-server # yaml lsp
marksman # markdown lsp
typescript-language-server # typescript lsp
cmake-language-server # cmake lsp
];
java_tools = with pkgs; [
# java development
google-java-format # formatter
jdk # java
# java assembler
jasmin
];
common_tools = with pkgs; [
# hex viewer
hexyl
# find typos in code
typos
# replacements for common posix tools
eza # ls replacement
bat # pretty `cat` clone
delta # viewer for `git` and `diff` output
dust # pretty `du` version
duf # better `df` clone
gping # `ping`... but with a graph!!
tldr # `man` but more straight-forward and simpler
ripgrep # grep, but written in rust, respects .gitignore, and very very fast, command is `rg`
fd # alternative to `find`
# status tools
htop
bottom
# other tools
unzip
wget
killall
file
b3sum
# "A hexadecimal, binary, and ASCII dump utility with color support"
tinyxxd
# networking tool
lsof
# view SMART status of drives
smartmontools
# adds `sensors` command
lm_sensors
# lspci
pciutils
# convert between various units
units
jq
];
in
{
imports = [
./progs/fish.nix
./progs/helix.nix
(
{ ... }:
{
nixpkgs.overlays = [
inputs.rust-overlay.overlays.default
];
}
)
];
home.stateVersion = stateVersion;
home.packages =
with pkgs;
lib.concatLists [
[
# python formatter
ruff
# for website generation
hugo
go
# for benchmaking stuff
hyperfine
pfetch-rs
waypipe
sshfs
# nix formatter
nixfmt-rfc-style
# serial viewer
minicom
# "~~matt's~~ my trace route"
mtr
ffmpeg-full
# microcontroller tooling
probe-rs
(python312.withPackages (
ps: with ps; [
mypy # type checking
python-lsp-server # lsp
python-lsp-ruff # ruff integration
pyserial
numpy
matplotlib
notebook
pandas
]
))
binwalk
# clang-format and clang-tidy
clang-tools
clang
gdb
git-crypt
imagemagick
nixpkgs-review
nmap
# terminal image viewer
timg
tcpdump
borgbackup
# used to deploy nix system to server
# (and in the future, desktop)
deploy-rs
# power stuff
powerstat
nodePackages_latest.nodejs
yt-dlp
]
rust_pkgs
lsps
java_tools
common_tools
];
# https://github.com/flamegraph-rs/flamegraph
home.file.".cargo/config.toml".text = ''
[target.${lib.strings.removeSuffix "-linux" pkgs.system}-unknown-linux-gnu]
linker = "${lib.getExe pkgs.clang}"
rustflags = ["-Clink-arg=-Wl,--no-rosegment"]
'';
# git (self explanatory)
programs.git = {
enable = true;
package = pkgs.git;
userName = "Simon Gardling";
userEmail = "titaniumtown@proton.me";
# better way to view diffs
delta.enable = true;
lfs.enable = true;
extraConfig = {
init = {
# master -> main
defaultBranch = "main";
};
push.autoSetupRemote = true;
};
# gpg signing keys
signing = {
key = "9AB28AC10ECE533D";
signByDefault = true;
};
};
}