System/home-manager/common/programs/devel.nix

124 lines
3.6 KiB
Nix
Raw Normal View History

2022-06-23 02:57:41 -04:00
{ 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;
2022-06-23 02:57:41 -04:00
in with lib;
with nLib; {
2022-07-02 02:44:43 -04:00
config = mkMerge [
2022-06-23 02:57:41 -04:00
# Core development utilites
(mkIf devel.core {
home.packages = with pkgs;
# General packages
2022-09-04 03:33:35 -04:00
[
# Git addons
git-secret
delta
# General development requirements
cmake
libtool
gnumake
2023-04-17 00:48:25 -04:00
# nix utilites
2022-09-04 03:33:35 -04:00
nixpkgs-fmt
2023-04-17 00:48:25 -04:00
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.comma
nix-du
nix-index
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.nix-init
nix-prefetch
2023-07-11 07:18:03 -04:00
nix-prefetch-git
2023-04-17 00:48:25 -04:00
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.nurl
2022-09-04 03:33:35 -04:00
# sops for secrets management
sops
2023-01-15 01:02:36 -05:00
# Hut for sourcehut
inputs.nixpkgs-unstable.legacyPackages.${pkgs.system}.hut
2022-09-04 03:33:35 -04:00
];
2022-06-23 02:57:41 -04:00
programs = {
direnv = { enable = true; };
2022-06-23 02:57:41 -04:00
# Neovim
# (I'm not abonding emacs I just want the tutor)
neovim = { enable = true; };
2022-06-23 02:57:41 -04:00
};
})
# Rust development
2022-07-02 02:44:43 -04:00
(mkIf devel.rust {
2022-06-23 02:57:41 -04:00
home.packages = with pkgs; [
# Rustup for having the compiler around
rustup
# 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
2022-07-06 01:14:56 -04:00
# For faster builds
sccache
2022-06-23 02:57:41 -04:00
];
})
# Python Development
2022-07-02 02:44:43 -04:00
(mkIf devel.python {
2023-04-20 20:33:26 -04:00
home.packages = with pkgs; [
2023-06-17 02:22:48 -04:00
(python311Full.withPackages (ps: with ps; [ pip ]))
2023-04-20 20:33:26 -04:00
nodePackages.pyright
];
2022-06-23 02:57:41 -04:00
})
# JavaScript/TypeScript Development
2022-07-02 02:44:43 -04:00
(mkIf devel.js {
2023-03-09 05:41:04 -05:00
home.packages = with unstable;
with nodePackages; [
nodejs
yarn
typescript
deno
2023-06-19 03:52:55 -04:00
# TODO reenable
# vscode-langservers-extracted
2023-03-09 05:41:04 -05:00
];
2022-06-23 02:57:41 -04:00
})
# Raku Development
(mkIf devel.raku { home.packages = with pkgs; [ rakudo zef ]; })
2022-10-23 09:52:34 -04:00
# Idris 2 Development
(mkIf devel.idris2 {
2023-07-08 22:38:15 -04:00
home.packages = with pkgs;
let
is = inputs.idris2.packages."${pkgs.system}".idris2.buildInputs;
chz = findSingle
(drv: let name = drv.pname; in (lib.strings.hasPrefix "chez" name))
{ } { } is;
in [
inputs.idris2.packages."${pkgs.system}".idris2
# chez
chz
gmp
rlwrap
];
2022-10-23 09:52:34 -04:00
})
2022-10-31 11:53:04 -04:00
# Haskell Development
(mkIf devel.haskell {
home.packages = with pkgs; [
(haskellPackages.ghcWithPackages
2023-05-30 09:18:20 -04:00
# TODO: readd brittany when its not broken
(p: with p; [ turtle cabal-install stack hoogle ]))
2022-10-31 11:53:04 -04:00
haskell-language-server
hlint
];
})
2023-08-25 13:31:08 -04:00
# RPi Pico Development
2023-08-25 14:44:39 -04:00
(mkIf devel.pico {
home.packages = with unstable; [ pico-sdk picotool gcc-arm-embedded ];
})
2022-07-02 02:44:43 -04:00
];
2022-06-23 02:57:41 -04:00
}