From 6846fc3eec95168083a7583150bc56f3f7a5c343 Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Tue, 25 Mar 2025 01:26:35 -0600 Subject: [PATCH] emacs support for new languages + dependencies --- dotfiles/doom/init.el | 2 +- hosts/workstation/toggles.nix | 4 ++++ modules/dev/cc.nix | 22 ++++++++++++++++++++++ modules/dev/haskell.nix | 8 ++++++-- modules/dev/julia.nix | 15 +++++++++++++++ modules/dev/python.nix | 1 + modules/dev/rust.nix | 19 +++++++++++++++++++ 7 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 modules/dev/cc.nix create mode 100644 modules/dev/julia.nix create mode 100644 modules/dev/rust.nix diff --git a/dotfiles/doom/init.el b/dotfiles/doom/init.el index b8f8533..33219cd 100755 --- a/dotfiles/doom/init.el +++ b/dotfiles/doom/init.el @@ -118,7 +118,7 @@ ;;common-lisp ; if you've seen one lisp, you've seen them all ;;coq ; proofs-as-programs ;;crystal ; ruby at the speed of c - (csharp +lsp) ; unity, .NET, and mono shenanigans + ;; (csharp +lsp) ; unity, .NET, and mono shenanigans ;;data ; config/data formats ;;(dart +flutter) ; paint ui and not much else ;;dhall diff --git a/hosts/workstation/toggles.nix b/hosts/workstation/toggles.nix index 05edfd8..82f9ca2 100644 --- a/hosts/workstation/toggles.nix +++ b/hosts/workstation/toggles.nix @@ -14,6 +14,10 @@ misc.enable = true; }; dev = { + cc.enable = true; + docker.enable = true; + julia.enable = true; + rust.enable = true; haskell.enable = true; nix.enable = true; python.enable = true; diff --git a/modules/dev/cc.nix b/modules/dev/cc.nix new file mode 100644 index 0000000..11c0e90 --- /dev/null +++ b/modules/dev/cc.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + options.my.dev.cc.enable = lib.mkEnableOption "enable"; + + config = lib.mkIf config.my.dev.cc.enable { + users.users.jawz.packages = builtins.attrValues { + inherit (pkgs) + clang # C/C++ compiler frontend (part of LLVM) + clang-tools # Extra LLVM tools (e.g. clang-tidy, clang-apply-replacements) + gcc # GNU Compiler Collection (C, C++, etc.) + gdb # GNU Debugger + valgrind # Memory leak detector and performance profiler + ; + }; + }; +} diff --git a/modules/dev/haskell.nix b/modules/dev/haskell.nix index 86365b5..44efa5b 100644 --- a/modules/dev/haskell.nix +++ b/modules/dev/haskell.nix @@ -9,8 +9,12 @@ config = lib.mkIf config.my.dev.haskell.enable { users.users.jawz.packages = builtins.attrValues { inherit (pkgs) - ghc # compiler - haskell-language-server # lsp + haskell-language-server # LSP server for Haskell + cabal-install # Standard Haskell build tool + hlint # Linter for Haskell source code + ; + inherit (pkgs.haskellPackages) + hoogle # Haskell API search engine ; }; environment.variables = { diff --git a/modules/dev/julia.nix b/modules/dev/julia.nix new file mode 100644 index 0000000..8a323e7 --- /dev/null +++ b/modules/dev/julia.nix @@ -0,0 +1,15 @@ +{ + lib, + pkgs, + config, + ... +}: +{ + options.my.dev.julia.enable = lib.mkEnableOption "enable"; + + config = lib.mkIf config.my.dev.julia.enable { + users.users.jawz.packages = builtins.attrValues { + inherit (pkgs) julia; + }; + }; +} diff --git a/modules/dev/python.nix b/modules/dev/python.nix index d0b61cc..304bb87 100644 --- a/modules/dev/python.nix +++ b/modules/dev/python.nix @@ -27,6 +27,7 @@ isort # sort Python imports pyflakes # checks source code for errors pylint # bug and style checker for python + pytest # tests speedtest-cli # check internet speed from the comand line ; } diff --git a/modules/dev/rust.nix b/modules/dev/rust.nix new file mode 100644 index 0000000..0b0c9b1 --- /dev/null +++ b/modules/dev/rust.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: +{ + options.my.dev.rust.enable = lib.mkEnableOption "enable"; + config = lib.mkIf config.my.dev.rust.enable { + users.users.jawz.packages = builtins.attrValues { + inherit (pkgs) + cargo # Rust package manager + rust-analyzer # Language server for Rust + clippy # Linter for Rust + rustfmt # Formatter for Rust code + ; + }; + }; +}