;;; guix-profiles.el --- Guix profiles ;; Copyright © 2014, 2015, 2016 Alex Kost ;; Copyright © 2015 Mathieu Lirzin ;; 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: (require 'guix-config) (defvar guix-user-profile (expand-file-name "~/.guix-profile") "User profile.") (defvar guix-system-profile (concat guix-config-state-directory "/profiles/system") "System profile.") (defvar guix-default-profile (concat guix-config-state-directory "/profiles/per-user/" (getenv "USER") "/guix-profile") "Default Guix profile.") (defvar guix-current-profile guix-default-profile "Current profile.") (defvar guix-system-profile-regexp (concat "\\`" (regexp-quote guix-system-profile)) "Regexp matching system profiles.") (defun guix-system-profile? (profile) "Return non-nil, if PROFILE is a system one." (string-match-p guix-system-profile-regexp 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 '2019-09-08 11:49:24 +0200'>2019-09-08daemon: Run 'guix substitute' directly and assume a single substituter....Ludovic Courtès 2019-09-08daemon: Run 'guix offload' directly....Ludovic Courtès 2019-09-08daemon: Run 'guix perform-download' directly....Ludovic Courtès 2019-09-08daemon: Run 'guix authenticate' directly....Ludovic Courtès 2019-09-08daemon: Invoke 'guix gc --list-busy' instead of 'list-runtime-roots'....Ludovic Courtès 2019-05-01build: Change default substitute server to "ci.guix.gnu.org"....Ludovic Courtès 2018-12-04build: Default to https://ci.guix.info for substitutes....Ludovic Courtès 2018-11-14daemon: Install 'authenticate' script under LIBEXECDIR/guix....Ludovic Courtès 2018-09-06build: Remove -L flag when $LIBGCRYPT_LIBDIR is empty....Ludovic Courtès 2018-03-05build: Default to berlin.guixsd.org substitutes on aarch64....Ludovic Courtès 2018-03-05build: Always use https substitute URLs....Ludovic Courtès 2018-02-27build: Really build 'guix offload' when possible....Ludovic Courtès 2018-02-26build: Require Guile >= 2.0.13....Ludovic Courtès 2018-01-07daemon: Make libbz2 an optional dependency....Ludovic Courtès 2018-01-07daemon: Add gzip log compression....Ludovic Courtès