dotfiles/home-manager/no-gui.nix

197 lines
3.4 KiB
Nix

{
pkgs,
inputs,
lib,
homeDirectory,
config,
...
}:
{
imports = [
./progs/fish.nix
./progs/helix.nix
];
home.stateVersion = "24.11";
home.packages = with pkgs; [
#hex viewer
hexyl
#rust stuff
(rust-bin.selectLatestNightlyWith (
toolchain:
toolchain.default.override {
extensions = [
"rust-src"
"rust-analyzer"
"clippy"
"rustfmt"
"rust-std"
"cargo"
];
#thumbv7m-none-eabi target for stm32
targets = [ "thumbv7m-none-eabi" ];
}
))
#find typos in code
typos
#python formatter
ruff
#for website generation
hugo
#java development
google-java-format # formatter
jdk # java
jdt-language-server # lsp server
#for benchmaking stuff
hyperfine
#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`
#adds `sensors` command
lm_sensors
#rssfeed
newsboat
#HTML/CSS/JSON/ESLint language servers
vscode-langservers-extracted
just
pfetch-rs
waypipe
htop
bottom
wget
unzip
mold
gcc
compsize
killall
gnumake
sshfs
#nix formatter
nixfmt-rfc-style
#serial viewer
minicom
#"~~matt's~~ my trace route"
mtr
file
b3sum
ffmpeg-full
#microcontroller tooling
probe-rs
(python312.withPackages (
ps: with ps; [
python-lsp-server # lsp
python-lsp-ruff # ruff integration
]
))
binwalk
smartmontools
nil # nix lsp
yaml-language-server # yaml lsp
marksman # markdown lsp
#clang-format and clang-tidy
clang-tools
# inputs.binsider.packages.${pkgs.system}.binsider
lldb
fio
age
git-crypt
];
home.file.".cargo/config.toml".text = ''
[target.${lib.strings.removeSuffix "-linux" pkgs.system}-unknown-linux-gnu]
linker = "${pkgs.clang}/bin/clang"
rustflags = ["-C", "link-arg=-fuse-ld=${pkgs.mold}/bin/mold"]
'';
#default applications
home.sessionVariables = {
EDITOR = "hx";
};
#feed reader
programs.newsboat = {
enable = true;
#store rss feeds in a separate file because it's *a lot*
urls = import ./progs/rss.nix;
};
#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;
#master -> main
extraConfig = {
init = {
defaultBranch = "main";
};
push.autoSetupRemote = true;
};
#gpg signing keys
signing = {
key = "9AB28AC10ECE533D";
signByDefault = true;
};
};
age.secrets.serverpass = {
file = ./secrets/server-password.age;
path = "${homeDirectory}/.secrets/serverpass";
};
age.secrets.gnupg = {
file = ./secrets/my-gpg.age;
path = "${homeDirectory}/.secrets/my-gpg.asc";
};
home.activation.extractGnuPG = ''
${pkgs.gnupg}/bin/gpg --import ${config.age.secrets.gnupg.path}
'';
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
}