diff options
| -rw-r--r-- | modules/devenv/languages/nix.nix | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/modules/devenv/languages/nix.nix b/modules/devenv/languages/nix.nix index c692b42..5089b7c 100644 --- a/modules/devenv/languages/nix.nix +++ b/modules/devenv/languages/nix.nix @@ -5,28 +5,46 @@ pkgs, devenv, ... -}: let +}: +let cfg = config.languages.nix; -in { - disabledModules = [(devenv.modules + "/languages/nix.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"]; - }; + formatter = lib.mkPackageOption pkgs "nix formatter" { default = [ "nixfmt" ]; }; 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]; - - git-hooks.hooks = { - deadnix.enable = lib.mkDefault true; - "${cfg.formatter.pname}".enable = lib.mkDefault true; - }; + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + packages = + with pkgs; + [ + cfg.formatter + deadnix + ] + ++ lib.optionals cfg.packaging.enable [ + nix-prefetch-scripts + nix-prefetch-github + ]; - 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"''; - }; + git-hooks.hooks = + let + formatterHookname = with cfg.formatter; if pname == "nixfmt" then "nixfmt-rfc-style" else pname; + in + { + deadnix.enable = lib.mkDefault true; + "${formatterHookname}".enable = lib.mkDefault true; + }; + } + (lib.mkIf (cfg.formatter.pname == "alejandra") { + scripts."alejandra-emacs".exec = "alejandra --quiet $@"; + emacs.dirLocals.nix-mode.nix-nixfmt-bin = ''"alejandra-emacs"''; + }) + ] + ); } |
