* Re: Help-Guix Digest, Vol 88, Issue 4 [not found] <mailman.81.1677776445.12246.help-guix@gnu.org> @ 2023-03-05 8:44 ` Gottfried 2023-03-05 10:07 ` Wojtek Kosior via 2023-03-06 1:35 ` Gary Johnson 0 siblings, 2 replies; 11+ messages in thread From: Gottfried @ 2023-03-05 8:44 UTC (permalink / raw) To: help-guix, Gary Johnson [-- Attachment #1.1.1: Type: text/plain, Size: 2897 bytes --] Hi Gary, thank you very much for sharing your Emacs manifest. I tried to do what you said. I created a manifest for Emacs only. After doing it, Guix asked me to set the PATH. I did it and after that this Emacs Manifest changed my general profile. It became my general profile. I couldn’t use my other programmes any more. So I had to do a rollback. 1. I don’t know what I did wrong. 2. AFAIK to create a manifest is not yet a profile. I have to create a manifest and then to create a profile with it. Am I right? 2. If so, after creating a manifest, which commands do I have to use to make it a separate profile? Probably to generate a manifest and make it a separate profile goes together, but I don’t know how to do it. Kind regards Gottfried > Message: 1 > Date: Thu, 02 Mar 2023 10:10:38 -0500 > From: Gary Johnson <lambdatronic@disroot.org> > To: Rodrigo Morales <moralesrodrigo1100@gmail.com> > I do manage all of my Emacs packages with Guix. I list `emacs` and all > of its packages in a manifest file (emacs.scm). It looks like this with > my custom packages elided: > > ``` > (use-modules ((gnu packages) #:select (specifications->manifest))) > > (specifications->manifest > (list "emacs" > "emacs-adoc-mode" > "emacs-alsamixer-el" > "emacs-async" > "emacs-calibredb" > "emacs-cider" > "emacs-clojure-mode" > "emacs-company" > "emacs-crdt" > "emacs-csv-mode" > "emacs-elpher" > "emacs-emms" > "emacs-eww-lnum" > "emacs-exwm" > "emacs-flycheck" > "emacs-flymake-kondor" > "emacs-flyspell-correct" > "emacs-forge" > "emacs-geiser" > "emacs-geiser-guile" > "emacs-gnuplot" > "emacs-google-translate" > "emacs-helm" > "emacs-helm-ag" > "emacs-helm-descbinds" > "emacs-helm-swoop" > "emacs-htmlize" > "emacs-magit" > "emacs-markdown-mode" > "emacs-nov-el" > "emacs-ob-async" > "emacs-org" > "emacs-org-pomodoro" > "emacs-ox-gfm" > "emacs-paredit" > "emacs-pdf-tools" > "emacs-pinentry" > "emacs-rjsx-mode" > "emacs-shroud" > "emacs-telephone-line" > "emacs-treemacs" > "emacs-vterm" > "emacs-web-mode" > "emacs-which-key" > "mu")) > ``` > > I actually split up all the user packages on my system into manifests > and isntall each one into its own profile, which I then activate on > startup. However, that's not really necessary for this example. You can > install the manifest packages above into your user profile with this > command: > > ``` > guix package -m emacs.scm > ``` > ~Gary > -- [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3191 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-05 8:44 ` Help-Guix Digest, Vol 88, Issue 4 Gottfried @ 2023-03-05 10:07 ` Wojtek Kosior via 2023-03-05 13:27 ` Gottfried 2023-03-06 1:35 ` Gary Johnson 1 sibling, 1 reply; 11+ messages in thread From: Wojtek Kosior via @ 2023-03-05 10:07 UTC (permalink / raw) To: Gottfried; +Cc: help-guix, Gary Johnson [-- Attachment #1: Type: text/plain, Size: 4191 bytes --] Hi Gottfried > I created a manifest for Emacs only. > > After doing it, Guix asked me to set the PATH. > > I did it and after that this Emacs Manifest changed my general profile. > It became my general profile. > I couldn’t use my other programmes any more. > So I had to do a rollback. When you do guix package -m path/to/manifest.scm It shall *replace* the packages in your default profile (~/.guix-profile) with those specified by the manifest. But if you instead do guix package -p path/to/some/profile -m path/to/manifest.scm It shall modify/initialize the profile you specified :) Best, Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ== ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8= -- (sig_end) On Sun, 5 Mar 2023 08:44:15 +0000 Gottfried <gottfried@posteo.de> wrote: > Hi Gary, > > thank you very much for sharing your Emacs manifest. > > I tried to do what you said. > > I created a manifest for Emacs only. > > After doing it, Guix asked me to set the PATH. > > I did it and after that this Emacs Manifest changed my general profile. > It became my general profile. > I couldn’t use my other programmes any more. > So I had to do a rollback. > > 1. > I don’t know what I did wrong. > > 2. > AFAIK to create a manifest is not yet a profile. > I have to create a manifest and then to create a profile with it. > Am I right? > > > 2. > If so, after creating a manifest, which commands do I have to use to > make it a separate profile? > > Probably to generate a manifest and make it a separate profile goes > together, but I don’t know how to do it. > > > Kind regards > > Gottfried > > > > Message: 1 > > Date: Thu, 02 Mar 2023 10:10:38 -0500 > > From: Gary Johnson <lambdatronic@disroot.org> > > To: Rodrigo Morales <moralesrodrigo1100@gmail.com> > > > > I do manage all of my Emacs packages with Guix. I list `emacs` and all > > of its packages in a manifest file (emacs.scm). It looks like this with > > my custom packages elided: > > > > ``` > > (use-modules ((gnu packages) #:select (specifications->manifest))) > > > > (specifications->manifest > > (list "emacs" > > "emacs-adoc-mode" > > "emacs-alsamixer-el" > > "emacs-async" > > "emacs-calibredb" > > "emacs-cider" > > "emacs-clojure-mode" > > "emacs-company" > > "emacs-crdt" > > "emacs-csv-mode" > > "emacs-elpher" > > "emacs-emms" > > "emacs-eww-lnum" > > "emacs-exwm" > > "emacs-flycheck" > > "emacs-flymake-kondor" > > "emacs-flyspell-correct" > > "emacs-forge" > > "emacs-geiser" > > "emacs-geiser-guile" > > "emacs-gnuplot" > > "emacs-google-translate" > > "emacs-helm" > > "emacs-helm-ag" > > "emacs-helm-descbinds" > > "emacs-helm-swoop" > > "emacs-htmlize" > > "emacs-magit" > > "emacs-markdown-mode" > > "emacs-nov-el" > > "emacs-ob-async" > > "emacs-org" > > "emacs-org-pomodoro" > > "emacs-ox-gfm" > > "emacs-paredit" > > "emacs-pdf-tools" > > "emacs-pinentry" > > "emacs-rjsx-mode" > > "emacs-shroud" > > "emacs-telephone-line" > > "emacs-treemacs" > > "emacs-vterm" > > "emacs-web-mode" > > "emacs-which-key" > > "mu")) > > ``` > > > > I actually split up all the user packages on my system into manifests > > and isntall each one into its own profile, which I then activate on > > startup. However, that's not really necessary for this example. You can > > install the manifest packages above into your user profile with this > > command: > > > > ``` > > guix package -m emacs.scm > > ``` > > > ~Gary > > > [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-05 10:07 ` Wojtek Kosior via @ 2023-03-05 13:27 ` Gottfried 0 siblings, 0 replies; 11+ messages in thread From: Gottfried @ 2023-03-05 13:27 UTC (permalink / raw) To: Wojtek Kosior; +Cc: help-guix, Gary Johnson [-- Attachment #1.1.1: Type: text/plain, Size: 1104 bytes --] Hi Wojtek, thanks very much. With your help I managed to create the Emacs Profile. I had to add still a name: "guix-profile" for it, than it worked. gfp@Tuxedo ~$ gfp@Tuxedo ~$ guix package -p /home/gfp/Projekte/EmacsManifest/guix-profil -m /home/gfp/Projekte/EmacsManifest/emacs.scm ----------------------------------------------------------------------- If I do a: gfp@Tuxedo ~$ guix shell -p /home/gfp/Projekte/EmacsManifest/guix-profil than I am in the profile: gfp@Tuxedo ~ (env) $ but writing: "emacs" it opens my emacs in the main profile and not the emacs in this newly created profile. Which command do I have to use to open emacs in this profile? Kind regards Gottfried > When you do > > guix package -m path/to/manifest.scm > > It shall *replace* the packages in your default profile > (~/.guix-profile) with those specified by the manifest. > > But if you instead do > > guix package -p path/to/some/profile -m path/to/manifest.scm > > It shall modify/initialize the profile you specified :) > > Best, > Wojtek [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3191 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-05 8:44 ` Help-Guix Digest, Vol 88, Issue 4 Gottfried 2023-03-05 10:07 ` Wojtek Kosior via @ 2023-03-06 1:35 ` Gary Johnson 2023-03-07 16:15 ` Gottfried 2023-03-20 7:04 ` Gottfried 1 sibling, 2 replies; 11+ messages in thread From: Gary Johnson @ 2023-03-06 1:35 UTC (permalink / raw) To: Gottfried; +Cc: help-guix Gottfried <gottfried@posteo.de> writes: > thank you very much for sharing your Emacs manifest. > > I tried to do what you said. > > I created a manifest for Emacs only. > > After doing it, Guix asked me to set the PATH. > > I did it and after that this Emacs Manifest changed my general profile. > It became my general profile. > I couldn’t use my other programmes any more. > So I had to do a rollback. > > 1. I don’t know what I did wrong. You didn't do anything wrong. The command I provided will create the next generation of your profile from the manifest file. Any packages not included in the manifest will be missing from that generation. It sounds like that's what happened in this case. If you want other packages installed into your profile as well, you could add them to your manifest file. > 2. AFAIK to create a manifest is not yet a profile. > I have to create a manifest and then to create a profile with it. > Am I right? Correct. A manifest is a file of Scheme code that lists the packages which you would like to install into a profile (or environment). (Well, technically the manifest is the Scheme object produced by that code, but in practice we can think of the file as the manifest with little loss of information.) You can create a temporary environment which contains the packages in a manifest with this command: ``` guix shell -m manifest.scm ``` To make this environment persistent, you have to create a profile like so: ``` guix package -m manifest.scm ``` > 2. If so, after creating a manifest, which commands do I have to use to > make it a separate profile? > > Probably to generate a manifest and make it a separate profile goes > together, but I don’t know how to do it. Note that `guix package` will create a new profile generation in your user profile by default. To override this, you can specify a different profile that you want the generation added to instead: ``` guix package -m manifest.scm -p $YOUR_NEW_PROFILE_DIR ``` One of the perhaps slightly odd things to remember with this command is that $YOUR_NEW_PROFILE_DIR should repeat its final directory name twice. Here's an example for creating a new emacs profile. In this setup, we assume that you have the following directory structure in your home directory: ~/ ├── guix-manifests/ │ ├── emacs.scm ├── guix-profiles/ │ ├── emacs/ You would issue the following command to install a new profile generation under the ~/guix-profiles/emacs/ directory, containing all the packages defined in ~/guix-manifests/emacs.scm: ``` guix package -m ~/guix-manifests/emacs.scm -p ~/guix-profiles/emacs/emacs ``` To activate this profile (thereby making its contents available in your shell environment), you would issue these commands: ``` GUIX_PROFILE="~/guix-profiles/emacs/emacs" . "$GUIX_PROFILE"/etc/profile export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" ``` For ease of use, you should place this code in your ~/.bash_profile. In this way, the profile will be activated at login time (for example, through GDM) and will then be available in all of your shells as well as any other programs that respect the environment variables you set (e.g., emacs). Have fun and happy hacking! ~Gary -- Protect yourself from surveillance: https://emailselfdefense.fsf.org ======================================================================= () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments Why is HTML email a security nightmare? See https://useplaintext.email/ Please avoid sending me MS-Office attachments. See http://www.gnu.org/philosophy/no-word-attachments.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-06 1:35 ` Gary Johnson @ 2023-03-07 16:15 ` Gottfried 2023-03-08 1:58 ` 宋文武 2023-03-20 7:04 ` Gottfried 1 sibling, 1 reply; 11+ messages in thread From: Gottfried @ 2023-03-07 16:15 UTC (permalink / raw) To: Gary Johnson; +Cc: help-guix [-- Attachment #1.1.1: Type: text/plain, Size: 5937 bytes --] Hi, 1. > GUIX_PROFILE="~/guix-profiles/emacs/emacs" >> . "$GUIX_PROFILE"/etc/profile As unexperienced in Scheme I am asking if the second line beginning with the "dot" is separated for easier read, but everything is one command? 2. I have got already many packages in my profile and updating takes a long time. So I am thinking of splitting of some packages to create several profiles and AFAIU updating with sudo guix system reconfigure /etc/config.scm it will take less time because it will not automatically update all my profiles at once. (Is this right?) 3. I was creating a profile with "Musescore" and a profile with "Emacs". I want to create still other profiles. 4. Now I still don’t understand everything concerning profiles. If I enable all profiles at login time how will it work? How can I enter the different profiles? How do I know in which profile I am and to switch to an other? e.g. I have emacs installed in my main profile. I have got a manifest with emacs with additional emacs packages. When entering this separate profile with guix shell I get to guix shell (env)... but when I entered: "emacs" it opened emacs with the package "Icicles" which I don’t have in my emacs manifest, only in my emacs in the main profile. So I concluded, it is the emacs in my main profile and not the one in my emacs manifest profile. How are both connected? Are they separated? (I understood it like this, because it is a different profile). But this emacs manifest doesn’t have a init.el file etc. May be profiles are not completely separated in Guix like I understood until now. My aim was to have a separate emacs profile then I can delete the emacs in my main profile. But If the separate Emacs profile uses the init.el file etc. from the emacs in my main profile, I can’t delete this emacs. So how are both connected? I wanted to create several profiles with certain packages and then delete/uninstall those packages in my main profile to get less packages. But I don’t know if this works, because it’s unclear to me how they are connected. I hope you understand me ( I can’t describe my problems in terms of a developer’s language) Kind regards, Gottfried Am 06.03.23 um 02:35 schrieb Gary Johnson: > Gottfried <gottfried@posteo.de> writes: > >> thank you very much for sharing your Emacs manifest. >> >> I tried to do what you said. >> >> I created a manifest for Emacs only. >> >> After doing it, Guix asked me to set the PATH. >> >> I did it and after that this Emacs Manifest changed my general profile. >> It became my general profile. >> I couldn’t use my other programmes any more. >> So I had to do a rollback. >> >> 1. I don’t know what I did wrong. > > You didn't do anything wrong. The command I provided will create the > next generation of your profile from the manifest file. Any packages not > included in the manifest will be missing from that generation. It sounds > like that's what happened in this case. If you want other packages > installed into your profile as well, you could add them to your manifest > file. > >> 2. AFAIK to create a manifest is not yet a profile. >> I have to create a manifest and then to create a profile with it. >> Am I right? > > Correct. A manifest is a file of Scheme code that lists the packages > which you would like to install into a profile (or environment). > > (Well, technically the manifest is the Scheme object produced by that > code, but in practice we can think of the file as the manifest with > little loss of information.) > > You can create a temporary environment which contains the packages in a > manifest with this command: > > ``` > guix shell -m manifest.scm > ``` > > To make this environment persistent, you have to create a profile like > so: > > ``` > guix package -m manifest.scm > ``` > >> 2. If so, after creating a manifest, which commands do I have to use to >> make it a separate profile? >> >> Probably to generate a manifest and make it a separate profile goes >> together, but I don’t know how to do it. > > Note that `guix package` will create a new profile generation in your > user profile by default. To override this, you can specify a different > profile that you want the generation added to instead: > > ``` > guix package -m manifest.scm -p $YOUR_NEW_PROFILE_DIR > ``` > > One of the perhaps slightly odd things to remember with this command is > that $YOUR_NEW_PROFILE_DIR should repeat its final directory name twice. > > Here's an example for creating a new emacs profile. In this setup, we > assume that you have the following directory structure in your home > directory: > > ~/ > ├── guix-manifests/ > │ ├── emacs.scm > ├── guix-profiles/ > │ ├── emacs/ > > You would issue the following command to install a new profile > generation under the ~/guix-profiles/emacs/ directory, containing all > the packages defined in ~/guix-manifests/emacs.scm: > > ``` > guix package -m ~/guix-manifests/emacs.scm -p ~/guix-profiles/emacs/emacs > ``` > > To activate this profile (thereby making its contents available in your > shell environment), you would issue these commands: > > ``` > GUIX_PROFILE="~/guix-profiles/emacs/emacs" > . "$GUIX_PROFILE"/etc/profile > export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" > export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" > ``` > > For ease of use, you should place this code in your ~/.bash_profile. In > this way, the profile will be activated at login time (for example, > through GDM) and will then be available in all of your shells as well as > any other programs that respect the environment variables you set (e.g., > emacs). > > Have fun and happy hacking! > ~Gary > -- [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3191 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-07 16:15 ` Gottfried @ 2023-03-08 1:58 ` 宋文武 0 siblings, 0 replies; 11+ messages in thread From: 宋文武 @ 2023-03-08 1:58 UTC (permalink / raw) To: Gottfried; +Cc: Gary Johnson, help-guix Gottfried <gottfried@posteo.de> writes: > Hi, Hello! > 1. >> GUIX_PROFILE="~/guix-profiles/emacs/emacs" >>> . "$GUIX_PROFILE"/etc/profile > > As unexperienced in Scheme I am asking > if the second line beginning with the "dot" is separated for easier > read, but everything is one command? Those 2 line are bash commands, GUIX_PROFILE="~/guix-profiles/emacs/emacs" will set a shell variable GUIX_PROFILE with a value of "$HOME/guix-profiles/emacs/emacs". . "$GUIX_PROFILE"/etc/profile will 'source' the /etc/profile in the $GUIX_PROFILE directory. You can find them in 'info bash' at: "5 Shell Variables" and "4.1 Bash Shell Builtins". > > 2. > I have got already many packages in my profile and > updating takes a long time. > > So I am thinking of splitting of some packages to create several > profiles and AFAIU updating with > sudo guix system reconfigure /etc/config.scm > it will take less time because it will not automatically update all my > profiles at once. (Is this right?) Yes, the system profile (via config.scm) and user profile already do a split, and you can split the user profile into multiple profiles for more control. See 'info guix-cookbook' for "Guix Profiles in Practice". > > 3. > I was creating a profile with "Musescore" > and a profile with "Emacs". > I want to create still other profiles. No problem. > > 4. > Now I still don’t understand everything concerning profiles. > If I enable all profiles at login time > how will it work? Enable a profile mean source ('.' command in your first question) its profile file to add its search-paths to the current shell environment: PATH for making binaries from profiles's bin directory available to the current shell. MANPATH for making manpages from profile's share/man dinectory available to the current shell's 'man' command. XDG_DATA_DIRS for making desktop applicatinons available to the current desktop environment (launcher, etc). And so on... > How can I enter the different profiles? If you enable all at login time (via ~/.bash_profile), there is no need to switch. If you didn't enable a profile, you can switch it with 'guix shell -p' or '.' its profile. > How do I know in which profile I am and to switch to an other? You can run 'env' find out what profiles are activated now. > > e.g. I have emacs installed in my main profile. > I have got a manifest with emacs with additional emacs packages. > When entering this separate profile with guix shell > I get to guix shell (env)... > but when I entered: "emacs" > it opened emacs with the package "Icicles" which I don’t have in my > emacs manifest, only in my emacs in the main profile. > So I concluded, it is the emacs in my main profile and not the one in > my emacs manifest profile. > How are both connected? Are they separated? Run 'which emacs' return the emacs executable location, it maybe the one in your main profile or the emacs profile. There are some environment variables / search-paths (EMACSLOADPATH) for emacs, emacs will load its packages from this EMACSLOADPATH. When combine profiles via source ('.') the search-paths are merged (see 'export' in the 'profile' bash script), so they're connected via those search-paths. They can also be separated if you don't combine those search-paths. eg: via 'guix shell --pure -p ...' > But this emacs manifest doesn’t have a init.el file etc. Emacs's init.el are at ~/.emacs.d/init.el (or ~/.emacs), it's out of guix's control, so shared with every emacs. > May be profiles are not completely separated in Guix like I understood > until now. Well, you can combine them (by default the system profile and user profile are combined), or use them in a separated way. Basic are shell, environment variables, and the effects of environment variables. Hope this helps! ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-06 1:35 ` Gary Johnson 2023-03-07 16:15 ` Gottfried @ 2023-03-20 7:04 ` Gottfried 2023-03-21 14:42 ` Gary Johnson 1 sibling, 1 reply; 11+ messages in thread From: Gottfried @ 2023-03-20 7:04 UTC (permalink / raw) To: Gary Johnson, help-guix [-- Attachment #1.1.1: Type: text/plain, Size: 4974 bytes --] Hi, thanks very much for your help. I have got now 3 profiles: EmacsManifest, Musescore, Musik in: home/gfp/Projekte/ Now I want them to be activated at login time. I still am not sure how to do that. You wrote: I should place this code (?) in my /bash profile. 1. How to do that? underneath is the profile: EmacsManifest > GUIX_PROFILE="~/guix-profiles/emacs/emacs" >> . "$GUIX_PROFILE"/etc/profile >> export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" >> export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" >> ``` >> >> For ease of use, you should place this code in your ~/.bash_profile. In >> this way, the profile will be activated at login time (for example, >> through GDM) and will then be available in all of your shells as well as >> any other programs that respect the environment variables you set (e.g., >> emacs). 2. after that, could I uninstall the package emacs in my main profile? Will my Emacs-manifest profile still be usable/is it independent, or it will suffer through uninstalling emacs in my main profile? My aim was to uninstall packages in my main profile and put them in separate profiles, so in updating my main profile with less packages it doesn’t take so much time. Kind regards Gottfried Am 06.03.23 um 02:35 schrieb Gary Johnson: > Gottfried <gottfried@posteo.de> writes: > >> thank you very much for sharing your Emacs manifest. >> >> I tried to do what you said. >> >> I created a manifest for Emacs only. >> >> After doing it, Guix asked me to set the PATH. >> >> I did it and after that this Emacs Manifest changed my general profile. >> It became my general profile. >> I couldn’t use my other programmes any more. >> So I had to do a rollback. >> >> 1. I don’t know what I did wrong. > > You didn't do anything wrong. The command I provided will create the > next generation of your profile from the manifest file. Any packages not > included in the manifest will be missing from that generation. It sounds > like that's what happened in this case. If you want other packages > installed into your profile as well, you could add them to your manifest > file. > >> 2. AFAIK to create a manifest is not yet a profile. >> I have to create a manifest and then to create a profile with it. >> Am I right? > > Correct. A manifest is a file of Scheme code that lists the packages > which you would like to install into a profile (or environment). > > (Well, technically the manifest is the Scheme object produced by that > code, but in practice we can think of the file as the manifest with > little loss of information.) > > You can create a temporary environment which contains the packages in a > manifest with this command: > > ``` > guix shell -m manifest.scm > ``` > > To make this environment persistent, you have to create a profile like > so: > > ``` > guix package -m manifest.scm > ``` > >> 2. If so, after creating a manifest, which commands do I have to use to >> make it a separate profile? >> >> Probably to generate a manifest and make it a separate profile goes >> together, but I don’t know how to do it. > > Note that `guix package` will create a new profile generation in your > user profile by default. To override this, you can specify a different > profile that you want the generation added to instead: > > ``` > guix package -m manifest.scm -p $YOUR_NEW_PROFILE_DIR > ``` > > One of the perhaps slightly odd things to remember with this command is > that $YOUR_NEW_PROFILE_DIR should repeat its final directory name twice. > > Here's an example for creating a new emacs profile. In this setup, we > assume that you have the following directory structure in your home > directory: > > ~/ > ├── guix-manifests/ > │ ├── emacs.scm > ├── guix-profiles/ > │ ├── emacs/ > > You would issue the following command to install a new profile > generation under the ~/guix-profiles/emacs/ directory, containing all > the packages defined in ~/guix-manifests/emacs.scm: > > ``` > guix package -m ~/guix-manifests/emacs.scm -p ~/guix-profiles/emacs/emacs > ``` > > To activate this profile (thereby making its contents available in your > shell environment), you would issue these commands: > > ``` > GUIX_PROFILE="~/guix-profiles/emacs/emacs" > . "$GUIX_PROFILE"/etc/profile > export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" > export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" > ``` > > For ease of use, you should place this code in your ~/.bash_profile. In > this way, the profile will be activated at login time (for example, > through GDM) and will then be available in all of your shells as well as > any other programs that respect the environment variables you set (e.g., > emacs). > > Have fun and happy hacking! > ~Gary > -- [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3191 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-20 7:04 ` Gottfried @ 2023-03-21 14:42 ` Gary Johnson 2023-04-07 13:02 ` Gottfried 0 siblings, 1 reply; 11+ messages in thread From: Gary Johnson @ 2023-03-21 14:42 UTC (permalink / raw) To: Gottfried; +Cc: help-guix Gottfried <gottfried@posteo.de> writes: > I have got now 3 profiles: EmacsManifest, Musescore, Musik > in: home/gfp/Projekte/ > > Now I want them to be activated at login time. > > I still am not sure how to do that. To activate multiple profiles at login time, I created a shell script called `~/sys/scripts/activate-profiles.sh`, containing the following code: ``` #!/bin/sh GUIX_PROFILES=/home/gjohnson/sys/guix/profiles for dir in $GUIX_PROFILES/* do name=$(basename "$dir") profile=$dir/$name if [ -f "$profile"/etc/profile ] then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" fi unset profile unset name done ``` Next, I added a `source` line to my `~/.bash_profile` file, which loads the `activate-profiles.sh` script when I enter a login shell. This script is also run when you log in to your graphical desktop session in Guix. ``` # Activate all of my Guix profiles source ~/sys/scripts/activate-profiles.sh ``` For you to use this approach, you should do the following: 1. Replace `GUIX_PROFILES=/home/gjohnson/sys/guix/profiles` in my `activate-profiles.sh` script with your profile directory, which seems to be this: `GUIX_PROFILES=/home/gfp/Projekte` 2. Place the `activate-profiles.sh` script somewhere in your home directory. 3. Replace `~/sys/scripts/activate-profiles.sh` in `~/.bash_profile` with the path to `activate-profiles.sh` on your system. If you use `guix home`, you can certainly add the `source` line to `~/.bash_profile` that way. > 2. after that, could I uninstall the package emacs in my main profile? > Will my Emacs-manifest profile still be usable/is it independent, or > it will suffer through uninstalling emacs in my main profile? With this code in place, whenever you log in to your machine, you will have access to all the packages in your main user profile as well as all the packages in your /home/gfp/Projekte profiles. Note that this may lead to unpredictable behavior if you have the same package installed into multiple profiles that are all activated simultaneously. My recommendation is that you install each package into only one profile when using this approach. > My aim was to uninstall packages in my main profile and put them in > separate profiles, so in updating my main profile with less packages > it doesn’t take so much time. Yes, that is precisely the purpose of this approach. Happy hacking! Gary -- Protect yourself from surveillance: https://emailselfdefense.fsf.org ======================================================================= () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments Why is HTML email a security nightmare? See https://useplaintext.email/ Please avoid sending me MS-Office attachments. See http://www.gnu.org/philosophy/no-word-attachments.html ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: Help-Guix Digest, Vol 88, Issue 4 2023-03-21 14:42 ` Gary Johnson @ 2023-04-07 13:02 ` Gottfried 2023-04-07 14:31 ` I am sorry " Gottfried 0 siblings, 1 reply; 11+ messages in thread From: Gottfried @ 2023-04-07 13:02 UTC (permalink / raw) To: Gary Johnson; +Cc: help-guix [-- Attachment #1.1.1: Type: text/plain, Size: 5237 bytes --] Hi, thanks a lot for sharing. This helps a lot. Without help of you and other hackers I would be lost. ............................................................ Those profiles I have got at the moment gfp@Tuxedo ~$ guix package --list-profiles /home/gfp/Projekte/Calibre/guix-profil with one package Calibre /home/gfp/Projekte/EmacsManifest/guix-profil with one package Emacs /home/gfp/Projekte/GNUCash/guix-profil, with 2 packages: Gnucash homebank /home/gfp/Projekte/Lilypond/guix-profil with many packages: lilypond, mercurial, timidity, frescobaldi, audio-to-midi, libsmf, ctrlr, muse-sequencer, fluidsynth, fluida-lv2, qsynth /home/gfp/Projekte/Musescore/guix-profil with one package Musescore 4.0.2 (current version) /home/gfp/Projekte/Musik/guix-profil with many packages: ardour, audacious, audacity, obs, vlc Musescore 3.6.2 (old version) /home/gfp/Projekte/Photoflare/guix-profil with 2 packages photoflare imagemagick (later converseen, which is now in a own profile: prefabricated by Csepp) /home/gfp/Projekte/Scribus/guix-profil with 2 packages: scribus, xournal /home/gfp/.config/guix/current /home/gfp/.guix-profile ----------------------------------------------------------- > Note that this may >> lead to unpredictable behavior if you have the same package installed >> into multiple profiles that are all activated simultaneously. My >> recommendation is that you install each package into only one profile >> when using this approach. Now I have several problems with your approach. 1. I have more packages in one profile 2. Musescore has got an own profile, but Musescore 3.6.2 (old version) is in the profile "Musik" together with other packages, which should be upgraded. But Musescore 3.6.2 should not be upgraded. .................................................................. What can I now do, that I can activate multiple profiles at login time? Is there a way to exclude the profile "Musik" because this profile I have to upgrade with: guix package -p /home/gfp/Projekte/Musik/guix-profil -m /home/gfp/Projekte/Musik/musik.scm or to add it in the script .................................................................... Kind regards Gottfried Am 21.03.23 um 15:42 schrieb Gary Johnson: > Gottfried <gottfried@posteo.de> writes: > >> I have got now 3 profiles: EmacsManifest, Musescore, Musik >> in: home/gfp/Projekte/ >> >> Now I want them to be activated at login time. >> >> I still am not sure how to do that. > > To activate multiple profiles at login time, I created a shell script > called `~/sys/scripts/activate-profiles.sh`, containing the following code: > > ``` > #!/bin/sh > > GUIX_PROFILES=/home/gjohnson/sys/guix/profiles > > for dir in $GUIX_PROFILES/* > do > name=$(basename "$dir") > profile=$dir/$name > if [ -f "$profile"/etc/profile ] > then > GUIX_PROFILE="$profile" > . "$GUIX_PROFILE"/etc/profile > export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" > export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" > fi > unset profile > unset name > done > ``` > > Next, I added a `source` line to my `~/.bash_profile` file, which loads > the `activate-profiles.sh` script when I enter a login shell. This > script is also run when you log in to your graphical desktop session in > Guix. > > ``` > # Activate all of my Guix profiles > source ~/sys/scripts/activate-profiles.sh > ``` > > For you to use this approach, you should do the following: > > 1. Replace `GUIX_PROFILES=/home/gjohnson/sys/guix/profiles` in my > `activate-profiles.sh` script with your profile directory, which > seems to be this: > > `GUIX_PROFILES=/home/gfp/Projekte` > > 2. Place the `activate-profiles.sh` script somewhere in your home > directory. > > 3. Replace `~/sys/scripts/activate-profiles.sh` in `~/.bash_profile` > with the path to `activate-profiles.sh` on your system. > > If you use `guix home`, you can certainly add the `source` line to > `~/.bash_profile` that way. > >> 2. after that, could I uninstall the package emacs in my main profile? >> Will my Emacs-manifest profile still be usable/is it independent, or >> it will suffer through uninstalling emacs in my main profile? > > With this code in place, whenever you log in to your machine, you will > have access to all the packages in your main user profile as well as all > the packages in your /home/gfp/Projekte profiles. Note that this may > lead to unpredictable behavior if you have the same package installed > into multiple profiles that are all activated simultaneously. My > recommendation is that you install each package into only one profile > when using this approach. > >> My aim was to uninstall packages in my main profile and put them in >> separate profiles, so in updating my main profile with less packages >> it doesn’t take so much time. > > Yes, that is precisely the purpose of this approach. > > Happy hacking! > Gary > -- [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3191 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* I am sorry Re: Help-Guix Digest, Vol 88, Issue 4 2023-04-07 13:02 ` Gottfried @ 2023-04-07 14:31 ` Gottfried 2023-04-15 2:08 ` Tracker 0 siblings, 1 reply; 11+ messages in thread From: Gottfried @ 2023-04-07 14:31 UTC (permalink / raw) To: Gary Johnson; +Cc: help-guix [-- Attachment #1.1.1: Type: text/plain, Size: 6894 bytes --] Hi, I am sorry, I mixed up two questions. I was already one thought ahead. 1. Question about activating all profiles at login time 2. Question updating all profiles at once. 1. to avtivate all profiles at once You wrote that it would be better to have only one package in one profil. So I would have to use each package in a separate profil Musescore version 4.0.2 and Musescore version 3.6.2 are in different profiles, so I guess it shouldn’t be a problem What do you say? 2. To update all profiles at once this is a different question, which I have to deal as well. Is there a way to do it? Is there a way to exclude the profile "Musik" because this profile I have to upgrade with: guix package -p /home/gfp/Projekte/Musik/guix-profil -m /home/gfp/Projekte/Musik/musik.scm or put Musescore 3.6.2 in a separate profil, but still the question remains, that this profil should then not be included in the update process. Kind regards Gottfried Am 07.04.23 um 15:02 schrieb Gottfried: > Hi, > > thanks a lot for sharing. > This helps a lot. > Without help of you and other hackers I would be lost. > ............................................................ > > Those profiles I have got at the moment > > gfp@Tuxedo ~$ guix package --list-profiles > > /home/gfp/Projekte/Calibre/guix-profil > with one package Calibre > > /home/gfp/Projekte/EmacsManifest/guix-profil > with one package Emacs > > /home/gfp/Projekte/GNUCash/guix-profil, > with 2 packages: > Gnucash > homebank > > /home/gfp/Projekte/Lilypond/guix-profil > with many packages: > lilypond, > mercurial, > timidity, > frescobaldi, > audio-to-midi, > libsmf, > ctrlr, > muse-sequencer, > fluidsynth, > fluida-lv2, > qsynth > > /home/gfp/Projekte/Musescore/guix-profil > with one package Musescore 4.0.2 (current version) > > /home/gfp/Projekte/Musik/guix-profil > with many packages: > ardour, > audacious, > audacity, > obs, > vlc > Musescore 3.6.2 (old version) > > /home/gfp/Projekte/Photoflare/guix-profil > with 2 packages > photoflare > imagemagick > (later converseen, which is now in a own profile: > prefabricated by Csepp) > > /home/gfp/Projekte/Scribus/guix-profil > with 2 packages: > scribus, > xournal > > /home/gfp/.config/guix/current > > /home/gfp/.guix-profile > > ----------------------------------------------------------- >> Note that this may >>> lead to unpredictable behavior if you have the same package installed >>> into multiple profiles that are all activated simultaneously. My >>> recommendation is that you install each package into only one profile >>> when using this approach. > > Now I have several problems with your approach. > 1. I have more packages in one profile > 2. Musescore has got an own profile, > but Musescore 3.6.2 (old version) is in the profile "Musik" > together with other packages, which should be upgraded. > But Musescore 3.6.2 should not be upgraded. > > .................................................................. > What can I now do, that I can activate multiple profiles at login time? > Is there a way to exclude the profile "Musik" because this profile I > have to upgrade with: > > guix package -p /home/gfp/Projekte/Musik/guix-profil -m > /home/gfp/Projekte/Musik/musik.scm > > or to add it in the script > .................................................................... > > Kind regards > > Gottfried > > > Am 21.03.23 um 15:42 schrieb Gary Johnson: >> Gottfried <gottfried@posteo.de> writes: >> >>> I have got now 3 profiles: EmacsManifest, Musescore, Musik >>> in: home/gfp/Projekte/ >>> >>> Now I want them to be activated at login time. >>> >>> I still am not sure how to do that. >> >> To activate multiple profiles at login time, I created a shell script >> called `~/sys/scripts/activate-profiles.sh`, containing the following >> code: >> >> ``` >> #!/bin/sh >> >> GUIX_PROFILES=/home/gjohnson/sys/guix/profiles >> >> for dir in $GUIX_PROFILES/* >> do >> name=$(basename "$dir") >> profile=$dir/$name >> if [ -f "$profile"/etc/profile ] >> then >> GUIX_PROFILE="$profile" >> . "$GUIX_PROFILE"/etc/profile >> export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" >> export >> INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" >> fi >> unset profile >> unset name >> done >> ``` >> >> Next, I added a `source` line to my `~/.bash_profile` file, which loads >> the `activate-profiles.sh` script when I enter a login shell. This >> script is also run when you log in to your graphical desktop session in >> Guix. >> >> ``` >> # Activate all of my Guix profiles >> source ~/sys/scripts/activate-profiles.sh >> ``` >> >> For you to use this approach, you should do the following: >> >> 1. Replace `GUIX_PROFILES=/home/gjohnson/sys/guix/profiles` in my >> `activate-profiles.sh` script with your profile directory, which >> seems to be this: >> >> `GUIX_PROFILES=/home/gfp/Projekte` >> >> 2. Place the `activate-profiles.sh` script somewhere in your home >> directory. >> >> 3. Replace `~/sys/scripts/activate-profiles.sh` in `~/.bash_profile` >> with the path to `activate-profiles.sh` on your system. >> >> If you use `guix home`, you can certainly add the `source` line to >> `~/.bash_profile` that way. >> >>> 2. after that, could I uninstall the package emacs in my main profile? >>> Will my Emacs-manifest profile still be usable/is it independent, or >>> it will suffer through uninstalling emacs in my main profile? >> >> With this code in place, whenever you log in to your machine, you will >> have access to all the packages in your main user profile as well as all >> the packages in your /home/gfp/Projekte profiles. Note that this may >> lead to unpredictable behavior if you have the same package installed >> into multiple profiles that are all activated simultaneously. My >> recommendation is that you install each package into only one profile >> when using this approach. >> >>> My aim was to uninstall packages in my main profile and put them in >>> separate profiles, so in updating my main profile with less packages >>> it doesn’t take so much time. >> >> Yes, that is precisely the purpose of this approach. >> >> Happy hacking! >> Gary [-- Attachment #1.1.2: OpenPGP public key --] [-- Type: application/pgp-keys, Size: 3191 bytes --] [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 840 bytes --] ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: I am sorry Re: Help-Guix Digest, Vol 88, Issue 4 2023-04-07 14:31 ` I am sorry " Gottfried @ 2023-04-15 2:08 ` Tracker 0 siblings, 0 replies; 11+ messages in thread From: Tracker @ 2023-04-15 2:08 UTC (permalink / raw) To: Gottfried; +Cc: help-guix Gottfried <gottfried@posteo.de> writes: > Hi, > I am sorry, I mixed up two questions. > I was already one thought ahead. > > 1. Question about activating all profiles at login time > 2. Question updating all profiles at once. > > 1. > to avtivate all profiles at once > You wrote that it would be better to have only one package in one profil. > So I would have to use each package in a separate profil > > Musescore version 4.0.2 > and Musescore version 3.6.2 > are in different profiles, > so I guess it shouldn’t be a problem > What do you say? No, I think you misunderstood me. I have multiple packages in each of my profiles. This is fine. I would not make one profile per package. That seems like an abuse of the system somehow. The point of a profile is to create an environment in which a particular group of packages is installed. That's it. By default, each user on Guix System has one user profile. All packages that they install are placed into it. This is easy to manage. Some people (like myself) choose to create additional profiles. Many people do this in order to separate out a group of packages that they don't want installed (or upgraded) all the time. I do it because occasionally one of my packages breaks when I am upgrading my system. By splitting all of my packages up into a few different profiles by category, if one package fails to upgrade, then that profile doesn't upgrade, but all of my other profiles do. This allows me to install the newest software for everything outside of the broken profile. Then I focus on fixing the broken package and just upgrade the broken profile. Easy peasy. > 2. > To update all profiles at once > this is a different question, which I have to deal as well. > > Is there a way to do it? > > Is there a way to exclude the profile "Musik" because this profile I > have to upgrade with: > > guix package -p /home/gfp/Projekte/Musik/guix-profil -m > /home/gfp/Projekte/Musik/musik.scm > > or put Musescore 3.6.2 in a separate profil, > but still the question remains, that this profil should then not be > included in the update process. I believe I already provided you with the code for updating profiles and activating them, but here it is again for reference: ```update-profiles.sh #!/bin/sh GUIX_MANIFESTS=$HOME/sys/guix/manifests GUIX_PROFILES=$HOME/sys/guix/profiles for dir in $GUIX_PROFILES/* do name=$(basename "$dir") manifest=$GUIX_MANIFESTS/$name.scm profile=$dir/$name if [ -r $manifest ] then guix package --manifest="$manifest" --profile="$profile" fi unset profile unset manifest unset name done ``` ```activate-profiles.sh #!/bin/sh GUIX_PROFILES=$HOME/sys/guix/profiles for dir in $GUIX_PROFILES/* do name=$(basename "$dir") profile=$dir/$name if [ -f "$profile"/etc/profile ] then GUIX_PROFILE="$profile" . "$GUIX_PROFILE"/etc/profile export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH" export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH" fi unset profile unset name done ``` These scripts both loop over my manifests or profiles directories, running the upgrade or activate commands on each one. If you want to exclude a profile from being upgraded with this script, you can just take away its manifest's read permissons like so: ``` chmod -r $HOME/sys/guix/manifests/my-excluded-manifest.scm ``` Good luck, Gary -- GPG Key ID: C4FBEDBD Use `gpg --search-keys tracker@disroot.org' to find me Protect yourself from surveillance: https://emailselfdefense.fsf.org ======================================================================= () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments Why is HTML email a security nightmare? See https://useplaintext.email/ Please avoid sending me MS-Office attachments. See http://www.gnu.org/philosophy/no-word-attachments.html ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2023-04-24 5:10 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <mailman.81.1677776445.12246.help-guix@gnu.org> 2023-03-05 8:44 ` Help-Guix Digest, Vol 88, Issue 4 Gottfried 2023-03-05 10:07 ` Wojtek Kosior via 2023-03-05 13:27 ` Gottfried 2023-03-06 1:35 ` Gary Johnson 2023-03-07 16:15 ` Gottfried 2023-03-08 1:58 ` 宋文武 2023-03-20 7:04 ` Gottfried 2023-03-21 14:42 ` Gary Johnson 2023-04-07 13:02 ` Gottfried 2023-04-07 14:31 ` I am sorry " Gottfried 2023-04-15 2:08 ` Tracker
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.