diff --git a/modules/lang/nix/config.el b/modules/lang/nix/config.el new file mode 100644 index 000000000..b03095541 --- /dev/null +++ b/modules/lang/nix/config.el @@ -0,0 +1,21 @@ +;;; lang/nix/config.el -*- lexical-binding: t; -*- + +(after! nix-mode + (set-company-backend! 'nix-mode 'company-nixos-options) + + (map! :map nix-mode-map + :localleader + :n "f" #'nix-update-fetch + :n "p" #'nix-format-buffer + :n "r" #'nix-repl-show + :n "s" #'nix-shell + :n "b" #'nix-build + :n "u" #'nix-unpack + (:when (featurep! :completion helm) + :n "o" #'helm-nixos-options))) + +(def-package! nix-update + :commands (nix-update-fetch)) + +(def-package! nix-repl + :commands (nix-repl-show)) diff --git a/modules/lang/nix/doctor.el b/modules/lang/nix/doctor.el new file mode 100644 index 000000000..93f4de0c3 --- /dev/null +++ b/modules/lang/nix/doctor.el @@ -0,0 +1,9 @@ +;; -*- lexical-binding: t; no-byte-compile: t; -*- +;;; lang/nix/doctor.el + +(unless (executable-find "nix") + (warn! "Couldn't find the nix package manager. nix-mode won't work.")) + +(unless (executable-find "nixfmt") + (warn! "Couldn't find nixfmt. nix-format-buffer won't work.")) + diff --git a/modules/lang/nix/packages.el b/modules/lang/nix/packages.el index 7cbed49e6..47ebff527 100644 --- a/modules/lang/nix/packages.el +++ b/modules/lang/nix/packages.el @@ -2,3 +2,11 @@ ;;; lang/nix/packages.el (package! nix-mode) + +(package! nix-update) + +(when (featurep! :completion company) + (package! company-nixos-options)) + +(when (featurep! :completion helm) + (package! helm-nixos-options))