diff options
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/nix-mode-20180908.2240/nix.el')
-rw-r--r-- | configs/shared/emacs/.emacs.d/elpa/nix-mode-20180908.2240/nix.el | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180908.2240/nix.el b/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180908.2240/nix.el new file mode 100644 index 000000000000..3261e075b4e7 --- /dev/null +++ b/configs/shared/emacs/.emacs.d/elpa/nix-mode-20180908.2240/nix.el @@ -0,0 +1,289 @@ +;;; nix.el -- run nix commands in Emacs -*- lexical-binding: t -*- + +;; Author: Matthew Bauer <mjbauer95@gmail.com> +;; Homepage: https://github.com/NixOS/nix-mode +;; Keywords: nix + +;; This file is NOT part of GNU Emacs. + +;;; Commentary: + +;; To use this just run: + +;; M-x RET nix-shell RET + +;; This will give you some + +;;; Code: + +(require 'pcomplete) + +(defgroup nix nil + "Nix-related customizations" + :group 'languages) + +(defcustom nix-executable (executable-find "nix") + "Nix executable location." + :group 'nix + :type 'string) + +(defcustom nix-build-executable (executable-find "nix-build") + "Nix-build executable location." + :group 'nix + :type 'string) + +(defcustom nix-instantiate-executable (executable-find "nix-instantiate") + "Nix executable location." + :group 'nix + :type 'string) + +(defcustom nix-store-executable (executable-find "nix-store") + "Nix executable location." + :group 'nix + :type 'string) + +(defcustom nix-shell-executable (executable-find "nix-shell") + "Location of ‘nix-shell’ executable." + :group 'nix + :type 'string) + +(defcustom nix-store-dir "/nix/store" + "Nix store directory." + :group 'nix + :type 'string) + +(defcustom nix-state-dir "/nix/var" + "Nix store directory." + :group 'nix + :type 'string) + +(defun nix-system () + "Get the current system tuple." + (let ((stdout (generate-new-buffer "nix eval")) + result) + (call-process nix-executable nil (list stdout nil) nil + "eval" "--raw" "(builtins.currentSystem)") + (with-current-buffer stdout (setq result (buffer-string))) + (kill-buffer stdout) + result)) + +(defvar nix-commands + '("add-to-store" + "build" + "cat-nar" + "cat-store" + "copy" + "copy-sigs" + "dump-path" + "edit" + "eval" + "hash-file" + "hash-path" + "log" + "ls-nar" + "ls-store" + "optimise-store" + "path-info" + "ping-store" + "repl" + "run" + "search" + "show-config" + "show-derivation" + "sign-paths" + "to-base16" + "to-base32" + "to-base64" + "upgrade-nix" + "verify" + "why-depends")) + +(defvar nix-toplevel-options + '("-v" + "--verbose" + "-h" + "--help" + "--debug" + "--help-config" + "--option" + "--version")) + +(defvar nix-config-options + '("allowed-uris" + "allow-import-from-derivation" + "allow-new-priveleges" + "allowed-users" + "auto-optimise-store" + "builders" + "builders-use-substitutes" + "build-users-group" + "compress-build-log" + "connect-timeout" + "cores" + "extra-sandbox-paths" + "extra-substituters" + "fallback" + "fsync-metadata" + "hashed-mirrors" + "http-connections" + "keep-build-log" + "keep-derivations" + "keep-env-derivations" + "keep-outputs" + "max-build-log-size" + "max-jobs" + "max-silent-time" + "netrc-file" + "plugin-files" + "pre-build-hook" + "repeat" + "require-sigs" + "restrict-eval" + "sandbox" + "sandbox-dev-shm-size" + "sandbox-paths" + "secret-key-files" + "show-trace" + "substitute" + "substituters" + "system" + "timeout" + "trusted-public-keys" + "trusted-subtituters" + "trusted-users")) + +(defun nix--pcomplete-flags (options) + "Complete flags to the Nix command. +OPTIONS a list of options to accept." + (while (pcomplete-match "^-" 0) + (pcomplete-here options) + (let ((last-arg (nth (1- pcomplete-index) pcomplete-args))) + (cond + ((string= "--option" last-arg) + (pcomplete-here nix-config-options) + (pcomplete-here)) + ((or (string= "-f" last-arg) (string= "--file" last-arg)) + (pcomplete-here (pcomplete-entries nil 'file-exists-p))) + ((or (string= "--arg" last-arg) (string= "--argstr" last-arg)) + (pcomplete-here) + (pcomplete-here)) + ((or (string= "-I" last-arg) (string= "--include" last-arg)) + (pcomplete-here (pcomplete-entries nil 'file-exists-p))) + ((or (string= "-k" last-arg) (string= "--keep" last-arg)) + (pcomplete-here)) + ((or (string= "-u" last-arg) (string= "--unset" last-arg)) + (pcomplete-here)) + ((or (string= "-s" last-arg) (string= "--substituter" last-arg)) + (pcomplete-here)))))) + +;;;###autoload +(defun pcomplete/nix () + "Completion for the nix command." + (nix--pcomplete-flags nix-toplevel-options) + (pcomplete-here nix-commands) + (pcase (nth (1- pcomplete-index) pcomplete-args) + ("run" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" "-c" "--command" + "-f" "--file" "-i" "-I" "--include" + "-k" "--keep" "-u" "--unset")))) + ("build" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" "--dry-run" + "-f" "--file" "-I" "--include" + "--no-link" "-o" "--out-link")))) + ("add-to-store" + (nix--pcomplete-flags + (append nix-toplevel-options '("--dry-run" "-n" "--name")))) + ("copy" + (nix--pcomplete-flags + (append nix-toplevel-options '("--all" "--arg" "--argstr" + "-f" "--file" "--from" + "-I" "--include" "--no-check-sigs" + "--no-recursive" "-s" "--substitute" + "--to")))) + ("copy-sigs" + (nix--pcomplete-flags + (append nix-toplevel-options '("--all" "--arg" "--argstr" + "-f" "--file" "-I" "--include" + "-r" "--recursive" "-s" "--substituter")))) + ("dump-path" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" + "-f" "--file" "-I" "--include")))) + ("edit" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" + "-f" "--file" "-I" "--include")))) + ("eval" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" + "-f" "--file" "-I" "--include" + "--json" "--raw")))) + ("hash-file" + (nix--pcomplete-flags + (append nix-toplevel-options '("--base16" "--base32" + "--base64" "--type")))) + ("hash-path" + (nix--pcomplete-flags + (append nix-toplevel-options '("--base16" "--base32" + "--base64" "--type")))) + ("log" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" + "-f" "--file" "-I" "--include" + "--json" "--raw")))) + ("ls-nar" + (nix--pcomplete-flags + (append nix-toplevel-options '("-d" "--directory" + "--json" "-l" "--long" + "-R" "--recursive")))) + ("ls-store" + (nix--pcomplete-flags + (append nix-toplevel-options '("-d" "--directory" + "--json" "-l" "--long" + "-R" "--recursive")))) + ("repl" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" + "-I" "--include")))) + ("search" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" + "-f" "--file" + "-I" "--include" + "--json" "--no-cache" + "-u" "--update-cache")))) + ("show-config" + (nix--pcomplete-flags + (append nix-toplevel-options '("--json")))) + ("show-derivation" + (nix--pcomplete-flags + (append nix-toplevel-options '("--arg" "--argstr" + "-f" "--file" + "-I" "--include" + "-r" "--recursive")))) + ("sign-paths" + (nix--pcomplete-flags + (append nix-toplevel-options '("--all" "--arg" "--argstr" + "-f" "--file" "-I" "--include" + "-k" "--key-file" "-r" "--recursive")))) + ("upgrade-nix" + (nix--pcomplete-flags + (append nix-toplevel-options '("-p" "--profile")))) + ("verify" + (nix--pcomplete-flags + (append nix-toplevel-options '("--all" "--arg" "--argstr" + "-f" "--file" "-I" "--include" + "--no-contents" "--no-trust" + "-r" "--recursive" "-n" "--sigs-needed" + "-s" "--substuter")))) + ("why-depends" + (nix--pcomplete-flags + (append nix-toplevel-options '("-a" "--all" "--arg" "--argstr" + "-f" "--file" "-I" "--include")))) + (_ (nix--pcomplete-flags nix-toplevel-options))) + (pcomplete-here (pcomplete-entries))) + +(provide 'nix) +;;; nix.el ends here |