diff options
author | Alex Kost <alezost@gmail.com> | 2014-11-26 01:32:24 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2014-12-02 22:09:22 +0300 |
commit | 3db349cb09844e2770be3d0dee4e990f1228c2b6 (patch) | |
tree | e9bfd03cdb38b69ed4146eae5589a53cd2c7e509 /emacs/guix-profiles.el.in | |
parent | ece9b4173b3e1d266e6171d3af656fbc93b51a8b (diff) |
emacs: Move profiles code to "guix-profiles.el.in".
* emacs/guix-base.el (guix-user-profile, guix-default-profile,
guix-current-profile, guix-profile-prompt, guix-set-current-profile): Move
to...
* emacs/guix-init.el.in (guix-default-profile): Move to...
* emacs/guix-profiles.el.in: ... here. New file.
* configure.ac (AC_CONFIG_FILES): Add "emacs/guix-profiles.el".
* emacs.am (nodist_lisp_DATA): Likewise.
Diffstat (limited to 'emacs/guix-profiles.el.in')
-rw-r--r-- | emacs/guix-profiles.el.in | 62 |
1 files changed, 62 insertions, 0 deletions
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 |