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}";
|
2022-10-13 22:13:43 -04:00
|
|
|
inherit (import ../../../modules/lib.nix {
|
|
|
|
inherit lib;
|
|
|
|
inherit pkgs;
|
|
|
|
})
|
|
|
|
nLib;
|
2022-06-23 02:57:41 -04:00
|
|
|
|
2022-10-13 22:13:43 -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;
|
2022-10-13 22:13:43 -04:00
|
|
|
# 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 = {
|
2022-10-13 22:13:43 -04:00
|
|
|
direnv = { enable = true; };
|
2022-06-23 02:57:41 -04:00
|
|
|
# Neovim
|
|
|
|
# (I'm not abonding emacs I just want the tutor)
|
2022-10-13 22:13:43 -04:00
|
|
|
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
|
2022-10-13 22:13:43 -04:00
|
|
|
(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 {
|
2023-08-25 14:51:23 -04:00
|
|
|
home.packages = with unstable; [
|
|
|
|
pico-sdk
|
|
|
|
picotool
|
|
|
|
gcc-arm-embedded
|
|
|
|
minicom
|
|
|
|
];
|
2023-08-25 14:44:39 -04:00
|
|
|
})
|
2022-07-02 02:44:43 -04:00
|
|
|
];
|
2022-06-23 02:57:41 -04:00
|
|
|
}
|