summaryrefslogtreecommitdiff
path: root/modules/devenv/languages/nix.nix
blob: 081d8c63839d4a889375fe5c45d29845463c43e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
  config,
  options,
  lib,
  pkgs,
  devenv,
  ...
}: let
  cfg = config.languages.nix;
in {
  disabledModules = [(devenv.modules + "/languages/nix.nix")];

  options.languages.nix = {
    enable = lib.mkEnableOption "tools for nix development";
    formatter = lib.mkPackageOption pkgs "nix formatter" {
      default = ["alejandra"];
    };
    packaging.enable = lib.mkEnableOption "tools for writing nix derivations";
  };

  config = lib.mkIf cfg.enable {
    packages = with pkgs; [cfg.formatter deadnix] ++ lib.optionals cfg.packaging.enable [nix-prefetch-scripts nix-prefetch-github];

    pre-commit.hooks = {
      deadnix.enable = lib.mkDefault true;
      "${cfg.formatter.pname}".enable = lib.mkDefault true;
    };

    scripts."${cfg.formatter.pname}-emacs".exec = "${cfg.formatter.pname} " + lib.optionalString (cfg.formatter.pname == "alejandra") "--quiet" + " $@";
    emacs.dirLocals.nix-mode.nix-nixfmt-bin = ''"${cfg.formatter.pname}-emacs"'';
  };
}