diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | emacs.am | 3 | ||||
-rw-r--r-- | emacs/guix-base.el | 42 | ||||
-rw-r--r-- | emacs/guix-init.el.in | 7 | ||||
-rw-r--r-- | emacs/guix-profiles.el.in | 62 |
6 files changed, 67 insertions, 49 deletions
diff --git a/.gitignore b/.gitignore index a424a397c4..bcb82aa26d 100644 --- a/.gitignore +++ b/.gitignore @@ -110,3 +110,4 @@ GTAGS /emacs/guix-autoloads.el /emacs/guix-helper.scm /emacs/guix-init.el +/emacs/guix-profiles.el diff --git a/configure.ac b/configure.ac index 9380f75767..235990edc3 100644 --- a/configure.ac +++ b/configure.ac @@ -185,6 +185,7 @@ AM_CONDITIONAL([HAVE_EMACS], [test "x$EMACS" != "xno"]) emacsuidir="${guilemoduledir}/guix/emacs" AC_SUBST([emacsuidir]) AC_CONFIG_FILES([emacs/guix-init.el + emacs/guix-profiles.el emacs/guix-helper.scm]) AC_OUTPUT diff --git a/emacs.am b/emacs.am index be7e77ecd8..d1f4d84243 100644 --- a/emacs.am +++ b/emacs.am @@ -36,7 +36,8 @@ dist_lisp_DATA = \ $(AUTOLOADS) nodist_lisp_DATA = \ - emacs/guix-init.el + emacs/guix-init.el \ + emacs/guix-profiles.el $(AUTOLOADS): $(ELFILES) $(EMACS) --batch --eval \ diff --git a/emacs/guix-base.el b/emacs/guix-base.el index 23575ac2bf..5129c87a5d 100644 --- a/emacs/guix-base.el +++ b/emacs/guix-base.el @@ -28,53 +28,13 @@ ;;; Code: (require 'cl-lib) +(require 'guix-profiles) (require 'guix-backend) (require 'guix-utils) (require 'guix-history) (require 'guix-messages) -;;; Profiles - -(defvar guix-user-profile - (expand-file-name "~/.guix-profile") - "User profile.") - -(defvar guix-default-profile - (concat (or (getenv "NIX_STATE_DIR") "/var/guix") - "/profiles/per-user/" - (getenv "USER") - "/guix-profile") - "Default Guix profile.") - -(defvar guix-current-profile guix-default-profile - "Current profile.") - -(defun guix-profile-prompt (&optional default) - "Prompt for profile and return it. -Use DEFAULT as a start directory. If it is nil, use -`guix-current-profile'." - (let* ((path (read-file-name "Profile: " - (file-name-directory - (or default guix-current-profile)))) - (path (directory-file-name (expand-file-name path)))) - (if (string= path guix-user-profile) - guix-default-profile - path))) - -(defun guix-set-current-profile (path) - "Set `guix-current-profile' to PATH. -Interactively, prompt for PATH. With prefix, use -`guix-default-profile'." - (interactive - (list (if current-prefix-arg - guix-default-profile - (guix-profile-prompt)))) - (setq guix-current-profile path) - (message "Current profile has been set to '%s'." - guix-current-profile)) - - ;;; Parameters of the entries (defvar guix-param-titles diff --git a/emacs/guix-init.el.in b/emacs/guix-init.el.in index 4e62728187..775c90fef9 100644 --- a/emacs/guix-init.el.in +++ b/emacs/guix-init.el.in @@ -4,11 +4,4 @@ (replace-regexp-in-string "${prefix}" "@prefix@" "@emacsuidir@") "Directory with scheme files for \"guix.el\" package.") -(defvar guix-default-profile - (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix") - "/profiles/per-user/" - (getenv "USER") - "/guix-profile") - "Default Guix profile.") - (provide 'guix-init) diff --git a/emacs/guix-profiles.el.in b/emacs/guix-profiles.el.in new file mode 100644 index 0000000000..1e43707b68 --- /dev/null +++ b/emacs/guix-profiles.el.in @@ -0,0 +1,62 @@ +;;; guix-profiles.el --- Guix profiles + +;; Copyright © 2014 Alex Kost <alezost@gmail.com> + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <http://www.gnu.org/licenses/>. + +;;; Code: + +(defvar guix-user-profile + (expand-file-name "~/.guix-profile") + "User profile.") + +(defvar guix-default-profile + (concat (or (getenv "NIX_STATE_DIR") "@guix_localstatedir@/guix") + "/profiles/per-user/" + (getenv "USER") + "/guix-profile") + "Default Guix profile.") + +(defvar guix-current-profile guix-default-profile + "Current profile.") + +(defun guix-profile-prompt (&optional default) + "Prompt for profile and return it. +Use DEFAULT as a start directory. If it is nil, use +`guix-current-profile'." + (let* ((path (read-file-name "Profile: " + (file-name-directory + (or default guix-current-profile)))) + (path (directory-file-name (expand-file-name path)))) + (if (string= path guix-user-profile) + guix-default-profile + path))) + +(defun guix-set-current-profile (path) + "Set `guix-current-profile' to PATH. +Interactively, prompt for PATH. With prefix, use +`guix-default-profile'." + (interactive + (list (if current-prefix-arg + guix-default-profile + (guix-profile-prompt)))) + (setq guix-current-profile path) + (message "Current profile has been set to '%s'." + guix-current-profile)) + +(provide 'guix-profiles) + +;;; guix-profiles.el ends here |