nix all the things
1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 cfg = config.dev;
9 inherit (lib) mkIf mkEnableOption mkDefault;
10in
11{
12 options.dev = {
13 enable = mkEnableOption "all development tools";
14
15 shell.enable = mkEnableOption "shell-related tools";
16 editor.enable = mkEnableOption "editor tools";
17 vcs.enable = mkEnableOption "version control tools";
18 tools.enable = mkEnableOption "development utilities";
19 docker.enable = mkEnableOption "Docker";
20 };
21
22 config = {
23 dev.shell.enable = mkIf cfg.enable true;
24 dev.editor.enable = mkIf cfg.enable true;
25 dev.vcs.enable = mkIf cfg.enable true;
26 dev.tools.enable = mkIf cfg.enable true;
27 dev.docker.enable = mkIf cfg.enable true;
28
29 users.defaultUserShell = mkIf (cfg.enable || cfg.shell.enable) pkgs.nushell;
30 environment.shells = mkIf (cfg.enable || cfg.shell.enable) [ pkgs.nushell ];
31
32 programs.nano.enable = mkDefault (!(cfg.enable || cfg.editor.enable));
33 environment.sessionVariables.EDITOR = mkIf cfg.editor.enable "hx";
34 };
35
36 imports = [ ./docker ];
37}