summaryrefslogtreecommitdiffstats
path: root/bin/activate-profiles
blob: a4373cfedbc083bdf46485e06d18335622fc12e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/sh
# Source: https://github.com/daviwil/dotfiles/blob/master/Systems.org#profile-management

GREEN='\033[1;32m'
RED='\033[1;30m'
NC='\033[0m'
GUIX_EXTRA_PROFILES=$HOME/.guix-extra-profiles

profiles=$*
if [[ $# -eq 0 ]]; then
    profiles="$HOME/.config/guix/manifests/*.scm";
fi

for profile in $profiles; do
    # Remove the path and file extension, if any
    profileName=$(basename $profile)
    profileName="${profileName%.*}"
    profilePath="$GUIX_EXTRA_PROFILES/$profileName"
    manifestPath=$HOME/.config/guix/manifests/$profileName.scm

    if [ -f $manifestPath ]; then
        echo
        echo -e "${GREEN}Activating profile:" $manifestPath "${NC}"
        echo

        mkdir -p $profilePath
        guix package --manifest=$manifestPath --profile="$profilePath/$profileName"

        # Source the new profile
        GUIX_PROFILE="$profilePath/$profileName"
        if [ -f $GUIX_PROFILE/etc/profile ]; then
            . "$GUIX_PROFILE"/etc/profile
        else
            echo -e "${RED}Couldn't find profile:" $GUIX_PROFILE/etc/profile "${NC}"
        fi
    else
        echo "No profile found at path" $profilePath
    fi
done