Nix Options โ A set of useful Emacs modes and functions for users of Nix and Nix OS.
nixos-options | helm-nixos-options | ivy-nixos-options | company-nixos-options | nix-sandbox |
Usage
helm-nixos-options
The function helm-nixos-options
is the one that you want to bind. You are free
to choose where and if you want it global you can have this.
(global-set-key (kbd "C-c C-S-n") 'helm-nixos-options)
It looks like this
The description of the option is shown in the minibuffer
If you want more information, there is a detailed buffer when you press return
There are also other actions like inserting the current match into the buffer
ivy-nixos-options
Use this if you donโt want the rather heavy helm
dependency.
The function ivy-nixos-options
is the one that you want to bind. You are free
to choose where and if you want it global you can have this.
(global-set-key (kbd "C-c C-S-n") 'ivy-nixos-options)
(setq ivy-nixos-options-default 1)
; defines what function is being called when pressing return. I like to have it set to 2
; All of the actions can always be called when pressing M-o
; 1 = show the docs buffer (default)
; 2 = insert the string
; 3 = only show the description of the command
It looks like this
If you want more information, there is a detailed buffer when you press return
There are also other actions like inserting the current match into the buffer.
The builtin help menu from ivy (display with M-o
) shows all possible options. e.g. M-o i
will insert the option
company-nixos-options
Add company-nixos-options to allowed company-mode backends list
(add-to-list 'company-backends 'company-nixos-options)
For now it shows the documentation of the option in a popup-buffer.
nix-sandbox
Utility functions to work with nix sandboxes.
nix-shell-command
composes command that can be executed in the given sandboxnix-shell
executes a command in the given sandboxnix-compile
compiles a program in the given sandboxnix-find-sandbox
searches from the given path upwards until it finds ashell.nix
ordefault.nix
file.nix-current-sandbox
searches for a sandbox file starting from the current working directory.nix-executable-find
a replacement for the built-inexecutable-find
. The function searches in the given sandbox for executables.
Flycheck
With this configuration flycheck can find executables of checkers that would be only accessible via nix-shell
:
(setq flycheck-command-wrapper-function
(lambda (command) (apply 'nix-shell-command (nix-current-sandbox) command))
flycheck-executable-find
(lambda (cmd) (nix-executable-find (nix-current-sandbox) cmd)))
Haskell Mode
Add these lines to your configuration to allow haskell-mode to look for ghc
in the current sandbox.
(setq haskell-process-wrapper-function
(lambda (args) (apply 'nix-shell-command (nix-current-sandbox) args)))