nixos-config/modules/dev/lisp.nix

46 lines
1.1 KiB
Nix
Raw Normal View History

2020-08-06 15:35:49 +00:00
# Lisp is great, easy to learn, and weird.
# I've been using it to study creating languages and the famous SICP book.
# FUN FACT: Lisp is a family of languages with those parenthesis representing the mouth lisp, demonstrating how genetics work.
{ config, options, lib, pkgs, ... }:
with lib;
2020-11-05 06:39:02 +00:00
let
cfg = config.modules.dev.lisp;
2020-10-25 15:49:14 +00:00
in {
options.modules.dev.lisp = let
mkBoolDefault = bool:
mkOption {
type = types.bool;
default = bool;
};
in {
clojure.enable = mkBoolDefault false;
guile.enable = mkBoolDefault false;
racket.enable = mkBoolDefault false;
2020-08-06 15:35:49 +00:00
};
config = {
2020-08-16 08:33:44 +00:00
my.packages = with pkgs;
2020-08-06 15:35:49 +00:00
(if cfg.clojure.enable then [
2020-10-25 15:49:14 +00:00
clojure # Improved Java version.
leiningen # Install Clojure projects without pulling your hair.
] else
[ ]) ++
2020-08-06 15:35:49 +00:00
2020-10-25 15:49:14 +00:00
(if cfg.guile.enable then
[
guile # A general-purpose language for stuff, named after a certain pop culture icon from an iconic fighting game.
]
else
[ ]) ++
2020-08-06 15:35:49 +00:00
2020-10-25 15:49:14 +00:00
(if cfg.racket.enable then
[
racket # A DSL for DSLs.
]
else
[ ]);
2020-08-06 15:35:49 +00:00
};
}