help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: update-profiles.sh


From: Wojtek Kosior
Subject: Re: update-profiles.sh
Date: Mon, 24 Apr 2023 14:05:48 +0200

Hi Gottfried,

I see several problems with `update-profiles.sh`.
- You wrote `GUIX_PROFILES=home/gfp/Projekte`, without leading slash.
  This makes the shell treat this path as a relative one. You need to
  use either `/home/gfp/Projekte` or just '$HOME/Projekte'.
- This script assumes manifests to be stored in a completely different
  place than they really are in your case.
- There's no need to `unset` the loop variables at every iteration. At
  least as long as this script is executed and not sourced. I'm
  mentioning this although a few extraneous `unset`s are not going to
  cause problems. Don't worry too much about this.

I edited the script. Try with this version

```
#!/bin/sh

GUIX_PROFILES=$HOME/Projekte

for dir in $GUIX_PROFILES/*
do
     name=$(basename "$dir" | tr '[:upper:]' '[:lower:]')
     manifest="$dir"/$name.scm
     profile=$dir/$name
     if [ -r $manifest ]
     then
         guix package --manifest="$manifest" --profile="$profile"
     fi
done
```

-- (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 Mon, 24 Apr 2023 11:22:46 +0000
Gottfried <gottfried@posteo.de> wrote:

> Hi,
> 
> Sorry,
> you provided me already with a script for activating all profiles at login,
> I don’t know at the moment, why I have mixed it up with other things
> and  I didn’t use it.
> ------------------------------------------------------------
> in the meantime all packages are available at login
> through the help of Martin
> ------------------------------------------------------------
> 
> so I tried to use your "update-profiles.sh"
> I placed it in my home directory: ~/gfp
> and changed one sentence, my the place of the profiles:
> 
> update-profiles.sh
> 
> #!/bin/sh
> 
> GUIX_MANIFESTS=$HOME/sys/guix/manifests
> GUIX_PROFILES=home/gfp/Projekte
> 
> 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
> 
> -------------------------------------------------
> 
> but running it, it seems not doing anything.
> 
> sometimes it’s difficult for me, to know so little, not knowing what I 
> have to do, not knowing the basics ...
> 
> Is it connected with the other script to activate the profiles at login?
> so that it doesn’t work?
> I guess both scripts are independent.
> 
> or is the path to it wrong?
> I have the directory
> ~/gfp/Projekte
> 
> and in it many directories/which are the different profiles, e.g: 
> Musescore, Musik, Emacs, Calibre, Gnucash, Icecat, Libreoffice, 
> Photoflare, Lilypond
> 
> and in each of these directories a scm.file with the same name but in 
> small letters like: musescore.scm, musik.scm, emacs.scm ...
> 
> 
> 
> Kind regards
> 
> Gottfried
> 
> > 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  
> 
> 


Attachment: pgpZILF8UbdMf.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]