(define-module (jd features math) #:use-module (rde features) #:use-module (gnu services) #:use-module (rde features emacs) #:use-module (gnu home services) #:use-module (rde packages) #:use-module (rde exceptions) #:use-module (rde predicates) #:use-module (rde features mail) #:use-module ((rde features mail providers) #:prefix mail-providers:) #:use-module (gnu packages mail) #:use-module (gnu packages emacs-xyz) #:use-module (rde packages emacs-xyz) #:use-module (rde packages mail) #:use-module (rde serializers elisp) #:use-module (rde home services mail) #:use-module (gnu services configuration) #:use-module (gnu home-services mail) #:use-module (gnu home services mcron) #:use-module (gnu home-services version-control) #:use-module (gnu home services xdg) #:use-module (ice-9 match) #:use-module (srfi srfi-1) #:use-module (guix gexp) #:use-module (guix deprecation) #:use-module (guix diagnostics) #:use-module (guix i18n) #:export (feature-octave)) (define* (feature-octave #:key (octave (@ (gnu packages maths) octave-cli))) (define f-name 'octave) (define (get-home-services config) (list (rde-elisp-configuration-service f-name config `((with-eval-after-load 'org (require 'ob-octave) (add-to-list 'org-structure-template-alist '("octave" . "src octave")) (org-babel-do-load-languages 'org-babel-load-languages '((octave . t))) (setq org-babel-default-header-args:octave '((:results . "output") (:session . "octave") (:exports . "both") (:eval . "no-export")))))) (simple-service 'octave-packages home-profile-service-type (append (or (and (get-value 'python config) (list (@ (gnu packages python-xyz) python-sympy))) '()) (list octave))))) (feature (name f-name) (values `((,f-name . #t))) (home-services-getter get-home-services)))