From 3db349cb09844e2770be3d0dee4e990f1228c2b6 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Wed, 26 Nov 2014 01:32:24 +0300 Subject: 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. --- emacs/guix-profiles.el.in | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 emacs/guix-profiles.el.in (limited to 'emacs/guix-profiles.el.in') 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 + +;; 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 . + +;;; 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 -- cgit v1.2.3