You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: modules/brew/README.md
+18-23Lines changed: 18 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,35 +3,30 @@
3
3
The brew module installs [Homebrew / Linuxbrew](https://brew.sh/) on your system and ensures the package manager remains updated and maintained. This module also sets up systemd services to periodically update the installed Brew packages.
4
4
5
5
## Features
6
-
-Installs Brew at build-time.
6
+
-Downloads Brew in build-time & installs it in run-time.
7
7
- Sets up systemd services to automatically update Brew to the latest version.
8
8
- Sets up systemd services to automatically upgrade Brew packages.
9
9
- Sets up bash and fish completions for Brew.
10
10
11
11
## How it works
12
12
13
-
### Directory paths glossary:
14
-
-`/home/` is a symlink to `/var/home/`
15
-
-`/root/` is a symlink to `/var/roothome/`
16
-
17
13
### Build-time:
18
14
19
-
- Necessary Brew package dependency `gcc` is installed if not present in the base image
20
-
- Directories `/home/` & `/root/` are created
21
-
- Empty `.dockerenv` file is created in the root of the image-builder, to convince official Brew installation script that we are **not** running as root
22
-
- Official brew installation script is downloaded & executed
23
-
- Brew is extracted to `/home/linuxbrew/` by the official script (`/root/` is needed, since image-builds are running as root)
24
-
- Brew in `/home/linuxbrew/` is compressed in tar, copied to `/usr/share/homebrew/` & permissions to it are set to default user (UID 1000)
25
-
-`brew-update` & `brew-upgrade` SystemD service timers are enabled (by default)
15
+
- Necessary Brew package dependency `gcc` & `zstd` is installed if not present in the base image.
16
+
- Brew tarball is downloaded from [Universal Blue 'packages' GitHub releases](https://github.com/ublue-os/packages/releases).
17
+
- Brew tarball is extracted to `/usr/share/homebrew/`.
18
+
-`/usr/share/homebrew/` permissions are set to the default user (UID/GID 1000).
19
+
-`brew-update` & `brew-upgrade` SystemD service timers are enabled (by default).
26
20
- A fix for path conflicts between system & brew packages with the same name is applied by adding Brew to path only in interactive shells, unlike what Brew does by default.
27
-
- Brew bash & fish shell completions are copied to `/etc/profile.d/brew-bash-completions.sh` & `/usr/share/fish/vendor_conf.d/brew-fish-completions.fish`
21
+
- Set option that Brew's shell environment can't be ran as root, respecting Homebrew's recommendation that only user with UID/GID 1000 can manage Brew.
22
+
- Brew bash & fish shell completions are copied to `/etc/profile.d/brew-bash-completions.sh` & `/usr/share/fish/vendor_conf.d/brew-fish-completions.fish`.
28
23
-`tmpfiles.d` configuration `homebrew.conf` is written with these directory locations:
29
24
-`/var/lib/homebrew/`
30
25
-`/var/cache/homebrew/`
31
26
-`/home/linuxbrew/`
32
-
-`brew-setup` service is enabled
27
+
-`brew-setup` service is enabled.
33
28
34
-
### Boot-time:
29
+
### Run-time:
35
30
36
31
**`tmpfiles.d homebrew.conf`:**
37
32
- This configuration is telling SystemD to: automatically create these necessary directories on every system boot if not available & to give them permissions of the default user (UID 1000):
@@ -40,16 +35,16 @@ The brew module installs [Homebrew / Linuxbrew](https://brew.sh/) on your system
40
35
-`/home/linuxbrew/`
41
36
42
37
**`brew-setup`:**
43
-
-`brew-setup` SystemD service checks if main directory used by Brew exists (`/home/linuxbrew/.linuxbrew/`)
44
-
& if `brew-setup` state file exists (`/etc/.linuxbrew`)
45
-
- If one of those paths don't exist, then Homebrew tar is extracted from `/usr/share/homebrew/homebrew.tar.zst` to `/tmp/homebrew/`
46
-
- Extracted Homebrew is then copied from `/tmp/homebrew/` to `/home/linuxbrew/` & permissions to it are set to default user (UID 1000)
47
-
- Temporary directory `/tmp/homebrew/` is removed
48
-
- Empty file `/etc/.linuxbrew` is created, which indicates that brew-setup (installation) is successful & which allows setup to run again on next boot when removed
38
+
-`brew-setup` installs `brew` in runtime.
39
+
SystemD service checks if main directory used by Brew exists (`/home/linuxbrew/.linuxbrew/`) & if `brew-setup` state file exists (`/etc/.linuxbrew`).
40
+
- If one of those paths don't exist, then extracted Brew tarball is copied from `/usr/share/homebrew/` to `/home/linuxbrew/`.
41
+
- Permissions to `/home/linuxbrew/` are set to the default user (UID/GID 1000).
42
+
- Empty file `/etc/.linuxbrew` is created, which indicates that brew-setup (installation) is successful & which allows setup to run again on next boot when removed.
49
43
50
44
**Rest of the setup:**
51
-
-`brew-update` runs at the specified time to update Brew to the latest version
52
-
-`brew-upgrade` runs at the specified time to upgrade Brew packages
45
+
-`brew-update` runs at the specified time to update Brew to the latest version.
46
+
-`brew-upgrade` runs at the specified time to upgrade Brew packages.
47
+
It additionally unlinks conflicting Brew dependencies if installed, like systemd & dbus, to prevent crucial system programs being preferred by Brew.
53
48
54
49
## Development
55
50
Setting `DEBUG=true` inside `brew.sh` will enable additional output for debugging purposes during development.
Copy file name to clipboardExpand all lines: modules/gnome-extensions/gnome-extensions.sh
+12-6Lines changed: 12 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -115,10 +115,13 @@ if [[ ${#INSTALL[@]} -gt 0 ]]; then
115
115
# Locale is not crucial for extensions to work, as they will fallback to gschema.xml
116
116
# Some of them might not have any locale at the moment
117
117
# So that's why I made a check for directory
118
+
# I made an additional check if language files are available, in case if extension is packaged with an empty folder, like with Default Workspace extension
118
119
if [[ -d"${TMP_DIR}/locale" ]];then
119
-
echo"Installing language extension files"
120
-
install -d -m 0755 "/usr/share/locale/"
121
-
cp -r "${TMP_DIR}/locale"/*"/usr/share/locale/"
120
+
if ls "${TMP_DIR}/locale/"*.mo 1> /dev/null 2>&1;then
121
+
echo"Installing language extension files"
122
+
install -d -m 0755 "/usr/share/locale/"
123
+
cp -r "${TMP_DIR}/locale"/*"/usr/share/locale/"
124
+
fi
122
125
fi
123
126
# Delete the temporary directory
124
127
echo"Cleaning up the temporary directory"
@@ -221,10 +224,13 @@ if [[ ${#INSTALL[@]} -gt 0 ]] && ! "${LEGACY}"; then
221
224
# Locale is not crucial for extensions to work, as they will fallback to gschema.xml
222
225
# Some of them might not have any locale at the moment
223
226
# So that's why I made a check for directory
227
+
# I made an additional check if language files are available, in case if extension is packaged with an empty folder, like with Default Workspace extension
224
228
if [[ -d"${TMP_DIR}/locale" ]];then
225
-
echo"Installing language extension files"
226
-
install -d -m 0755 "/usr/share/locale/"
227
-
cp -r "${TMP_DIR}/locale"/*"/usr/share/locale/"
229
+
if ls "${TMP_DIR}/locale/"*.mo 1> /dev/null 2>&1;then
Copy file name to clipboardExpand all lines: modules/yafti/README.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,3 +7,12 @@ Also Yafti's dependencies, `python3-pip` and `libadwaita` are installed.
7
7
Optionally, a list of Flatpak names and IDs can be included under `custom-flatpaks:`. These will be enabled by default under their own section on the Flatpak installation screen of `yafti`.
8
8
9
9
A default version of the `yafti` configuration file, `yafti.yml`, is supplied by this module. To make your own, create the file at `/usr/share/ublue-os/firstboot/yafti.yml`. The default version of the file can be found [here](https://github.com/blue-build/modules/blob/main/modules/yafti/yafti.yml).
10
+
11
+
## Known issues
12
+
13
+
Yafti autostart doesn't work on WMs (Window Managers) like Sway or Hyprland due to them not implementing XDG-Autostart specification.
14
+
15
+
https://github.com/swaywm/sway/issues/1423
16
+
https://github.com/hyprwm/Hyprland/issues/5169
17
+
18
+
Usage of [dex](https://github.com/jceb/dex) in the affected WMs can be considered to mitigate this issue.
0 commit comments