{ 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; }; }; }