{ config, lib, pkgs, inputs, ... }: let devel = config.nathan.programs.devel; unstable = inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}"; inherit (import ../../../modules/lib.nix { inherit lib; inherit pkgs; }) nLib; in with lib; with nLib; { config = mkMerge [ # Core development utilites (mkIf devel.core { home.packages = with pkgs; # General packages [ # Git addons git-secret delta # General development requirements cmake libtool gnumake nixpkgs-fmt # sops for secrets management sops # Hut for sourcehut inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.hut ]; programs = { direnv = { enable = true; }; # Neovim # (I'm not abonding emacs I just want the tutor) neovim = { enable = true; }; }; }) # Rust development (mkIf devel.rust { home.packages = with pkgs; [ # Rustup for having the compiler around rustup # Install the latest rust analyzer inputs.fenix.packages."${pkgs.system}".rust-analyzer # Misc cargo utilites cargo-binutils # Allow invoking the llvm tools included with the toolchain cargo-edit # Command line Cargo.toml manipulation cargo-asm # Dump the generated assembly cargo-fuzz # front end for fuzz testing rust cargo-license # Audit the licenses of dependencies cargo-criterion # Benchmarking front end cargo-audit # Check dependencies for known CVEs cargo-bloat # Find out what's taking up space in the executable cargo-udeps # Find unused dependencies cargo-expand # Dump expanded macros cargo-play # Quickly execute code outside of a crate # For building stuff that uses protocol buffers protobuf # For faster builds sccache ]; }) # Python Development (mkIf devel.python { home.packages = with pkgs; [ python3Full nodePackages.pyright ]; }) # JavaScript/TypeScript Development (mkIf devel.js { home.packages = with unstable; with nodePackages; [ nodejs yarn typescript deno vscode-langservers-extracted ]; }) # Raku Development (mkIf devel.raku { home.packages = with pkgs; [ rakudo zef ]; }) # Idris 2 Development (mkIf devel.idris2 { home.packages = with pkgs; [ inputs.idris2.packages."${pkgs.system}".idris2 # chez gmp rlwrap ]; }) # Haskell Development (mkIf devel.haskell { home.packages = with pkgs; [ (haskellPackages.ghcWithPackages (p: with p; [ turtle cabal-install stack brittany hoogle ])) haskell-language-server hlint ]; }) ]; }