diff --git a/radix/home/services/gnupg.scm b/radix/home/services/gnupg.scm index 10dc14b..8bff985 100644 --- a/radix/home/services/gnupg.scm +++ b/radix/home/services/gnupg.scm @@ -191,7 +191,7 @@ enabled, @command{gpg-agent} acts as a drop-in replacement for OpenSSH's (verbose? (boolean #f) "Provide extra output to the log file.") - (gnupg-aleady-torified? + (gnupg-already-torified? (boolean #f) "GnuPG is already configured to use tor and parcimonie won't attempt to use tor directly.") @@ -205,7 +205,7 @@ tor directly.") (define (home-parcimonie-shepherd-service config) "Return a user service to run parcimonie." (match-record config - (parcimonie verbose? gnupg-aleady-torified? + (parcimonie verbose? gnupg-already-torified? refresh-guix-keyrings? extra-content) (let ((log-file #~(string-append %user-log-dir "/parcimonie.log"))) (list (shepherd-service @@ -219,7 +219,7 @@ tor directly.") #$@(if verbose? '("--verbose") '()) - #$@(if gnupg-aleady-torified? + #$@(if gnupg-already-torified? '("--gnupg_already_torified") '()) #$@(if (not (string=? extra-content "")) diff --git a/radix/home/services/shells.scm b/radix/home/services/shells.scm index 278992b..1a57d2e 100644 --- a/radix/home/services/shells.scm +++ b/radix/home/services/shells.scm @@ -21,16 +21,74 @@ home-fish-extension abbreviation - abbreviation-expansion - abbreviation-marker - abbreviation-position - abbreviation-pattern - abbreviation-name - abbreviation? - fish-function - fish-function-name - fish-function?)) + fish-function)) + +;;; +;;; Shell profile. +;;; + +(define path? string?) +(define (serialize-path field-name val) val) + +(define-configuration home-shell-profile-configuration + (location + (path ".config/profile") + #f) + (profile + (text-config '()) + "\ +@code{home-shell-profile} is instantiated automatically by +@code{home-environment}, DO NOT create this service manually, it can +only be extended. + +@code{profile} is a list of file-like objects, which will go in +@code{location}, which is relative to the users @env{HOME}, and +defaults to @file{~/.profile}. By default @code{profile} contains +the initialization code, which have to be evaluated by login shell +to make home-environment's profile available to the user, but other +commands can be added to the file if it is really necessary. + +In most cases shell's configuration files are preferred places for +user's customizations. Extend home-shell-profile service only if you +really know what you do.")) + +(define (add-shell-profile-file config) + `((,(home-shell-profile-configuration-location config) + ,(mixed-text-file + "shell-profile" + "\ +HOME_ENVIRONMENT=$HOME/.guix-home +. $HOME_ENVIRONMENT/setup-environment +$HOME_ENVIRONMENT/on-first-login\n" + (serialize-configuration + config + (filter-configuration-fields + home-shell-profile-configuration-fields '(profile))))))) + +(define (add-profile-extensions config extensions) + (home-shell-profile-configuration + (inherit config) + (profile + (append (home-shell-profile-configuration-profile config) + extensions)))) + +(define home-shell-profile-service-type + (service-type (name 'home-shell-profile) + (extensions + (list (service-extension + home-files-service-type + add-shell-profile-file))) + (compose concatenate) + (extend add-profile-extensions) + (default-value (home-shell-profile-configuration)) + (description "Create a shell profile file, which is used +for environment initialization of POSIX compliant login shells. This +service type can be extended with a list of file-like objects."))) + +(define (serialize-boolean field-name val) "") +(define (serialize-posix-env-vars field-name val) + (environment-variable-shell-definitions val)) ;;; ;;; Fish. @@ -151,7 +209,10 @@ and begin set --prepend fish_function_path " #$fish-foreign-env "/share/fish/functions - fenv source $HOME/.profile + if test -f $HOME/.config/profile + fenv source $HOME/.config/profile + else + fenv source $HOME/.profile set -e fish_function_path[1] set -g __fish_login_config_sourced 1 @@ -177,7 +238,7 @@ end\n\n") "Association list of Fish aliases.") (abbreviations (fish-abbreviations '()) - "Association list of Fish abbreviations.") + "List of Fish abbreviations.") (plugins (fish-plugins '()) "List of plugins for Fish."))