* Variables Here we set some important variables that are used by other parts of the configuration. ** Guix Set up my Guix profile so that I can use all the right tools. #+begin_src sh export GUIX_PROFILE="/home/chelys/.guix-profile" source "$GUIX_PROFILE/etc/profile" #+end_src Add the system's data directories to =XDG_DATA_DIRS=. Guix will set the =XDG_DATA_DIRS= environment variable, but this will prevent the rest of the system from using the default ones. This causes a crash in Firefox when I try to upload or download files (well, open a file dialog). According to the [[https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html][XDG Base Directory Specification]]: #+begin_quote If =$XDG_DATA_DIRS= is either not set or empty, a value equal to =/usr/local/share/:/usr/share/= should be used. #+end_quote #+begin_src sh export XDG_DATA_DIRS="${XDG_DATA_DIRS}${XDG_DATA_DIRS:+:}/usr/local/share/:/usr/share/" #+end_src ** XDG I keep my XDG files in the normal place, but specifying them in an environment variable makes things a little easier/clearer. Set the config home. #+BEGIN_SRC sh export XDG_CONFIG_HOME="${HOME}/.config" #+END_SRC Set the data home. #+BEGIN_SRC sh export XDG_DATA_HOME="${HOME}/.local/share" #+END_SRC ** PATH Add composer binaries to PATH. #+BEGIN_SRC sh PATH="${XDG_CONFIG_HOME}/composer/vendor/bin:${PATH}" #+END_SRC Add =$HOME/usr/bin= to =$PATH= because that is where I keep all of my personal utilities and helper commands. #+BEGIN_SRC sh PATH="${HOME}/usr/bin:${PATH}" #+END_SRC Export it so programs and subshells know about it. #+BEGIN_SRC sh export PATH #+END_SRC ** Dbus Make the session bus address fixed so other processes can know where to find it. #+BEGIN_SRC sh DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u)/bus" #+END_SRC Export it so programs and subshells know about it. #+BEGIN_SRC sh export DBUS_SESSION_BUS_ADDRESS #+END_SRC ** .Net I don't want to send any telemetry to Microsoft about my usage of the ~dotnet~ tool. #+begin_src sh export DOTNET_CLI_TELEMETRY_OPTOUT=1 #+end_src ** SCSH Add a directory in my home to the list where scsh will try to load libraries from when using =-ll=. This variable is treated as a list of s-exps, so each element needs to be quoted. And =#f= means to insert the default list of directories there. scsh doesn't understand what =~/= means, so we need to use escaped quotes instead of wrapping everything in single quotes. #+begin_src sh export SCSH_LIB_DIRS="#f \"${HOME}/usr/share/scsh/\"" #+end_src ** Askpass #+begin_src sh export SUDO_ASKPASS="${HOME}/usr/bin/askpass-rofi" #+end_src * Systemd Import some variables into the systemd environment so that services started after this know about them. #+BEGIN_SRC sh systemctl --user import-environment PATH #+END_SRC