Skip to content

Instantly share code, notes, and snippets.

@axelquack
Last active December 21, 2025 15:10
Show Gist options
  • Select an option

  • Save axelquack/76fe24f0f82273d99b0b834bbc2c5271 to your computer and use it in GitHub Desktop.

Select an option

Save axelquack/76fe24f0f82273d99b0b834bbc2c5271 to your computer and use it in GitHub Desktop.
Automount SMB under Bazzite by using systemd

Automount SMB under Bazzite

Make sure that you replace whatever is in "<>" with your own data.

Setup authentication configuration file

Generate a file that defines the login data to mount the volume. The file will be called credentials located at /var/home/<username>/.smb/credentials. Make sure you first generate the folder mkdir /var/home/<username>/.smb.

username=<username>
password=<password>
  • Ensure the credentials file is readable only by the owner: chmod u=rw,go= /var/home/<username>/.smb/credentials
  • Create a mount folder on your local machine: mkdir /var/home/<username>/retrodeck
  • Create a file called var-home-<username>-retrodeck.mount located at /etc/systemd/system. sudo touch /etc/systemd/system/var-home-<username>-retrodeck.mount.

Create mount unit

[Unit]
Description=Mount SMB Retrodeck Share
# A human-readable description of this mount unit.

# Ensures the network is available before trying to mount.
Requires=network-online.target
# This unit will only start if 'network-online.target' is available.
After=network-online.target systemd-resolved.service
# Waits until network and DNS resolution are ready.
Wants=network-online.target systemd-resolved.service
# Suggests that these services should be running, but does not fail if they aren't.

[Mount]
# Defines what to mount and where.

# The network share (SMB/CIFS) that will be mounted.
What=//<yourRemoteServerIP>/<yourRemoteFolder>
# Replace with actual IP and share name, e.g., //192.168.1.100/retrodeck.

# Local mount point where the share will be attached.
Where=/var/home/<username>/retrodeck
# Replace <username> and <retrodeck> with actual values. Make sure that it matches with the folder you create as mount folder.

# Specifies the filesystem type.
Type=cifs
# This is necessary for mounting a Windows SMB/CIFS share.

# Mount options:
Options=rw,uid=1000,gid=1000,nofail,credentials=/var/home/<username>/.smb/credentials,vers=3.0
# `rw`          → Read/write access.
# `uid=1000`    → Ensures that the mounted files are owned by user ID 1000 (your main user).
# `gid=1000`    → Ensures group ownership by group ID 1000.
# `nofail`      → Prevents boot failure if the SMB share is unavailable.
# `credentials=/var/home/<username>/.smb/credentials` → Specifies the file storing the SMB username & password.
# `vers=3.0`    → Forces SMB version 3.0 for security and performance.

# Sets a timeout to stop trying if the mount hangs.
TimeoutSec=30
# If the mount attempt takes longer than 30 seconds, it will give up.

[Install]
# Ensures this mount is activated at boot.
WantedBy=multi-user.target
# Mounts the share when the system reaches multi-user mode (normal operation).

Set mount unit file permissions

  • Make sure you have set the correct permissions and ownership for systemd mount files.
  • Correct Owner and Group: sudo chown root:root /etc/systemd/system/var-home-<username>-retrodeck.mount
  • Correct File Permissions: sudo chmod u=rw,g=r,o=r /etc/systemd/system/var-home-<username>-retrodeck.mount (u=rw → User (root) gets read & write; g=r → Group (root) gets read-only.; o=r → Others get read-only)

Fixing SELinux Denial (under Bazzite)

By default Systemd is being denied access to the mount unit file due to SELinux policies.

Check Current SELinux Mode

Run:

getenforce
  • If it returns Enforcing, SELinux is actively blocking access.
  • If it returns Permissive, it logs issues but doesn’t enforce them.

Relabel the Mount Unit File

Since the file is in /etc/systemd/system/, it should have the correct SELinux label. To fix it:

sudo restorecon -v /etc/systemd/system/var-home-<username>-retrodeck.mount

Now reload Systemd, enable Auto-Start, and start the SMB mount immediately

  • Reload Systemd to recognize New or modified units: sudo systemctl daemon-reload
    • Forces systemd to reload all unit files (services, mounts, timers, etc.).
    • Necessary when adding, modifying, or deleting .mount files, since systemd does not automatically detect changes.
    • Without this, systemd might not recognize new or modified units, leading to errors when enabling or starting them.
  • Enable the mount to Auto-Start at boot: sudo systemctl enable var-home-<username>-retrodeck.mount
    • Creates a symbolic link in /etc/systemd/system/multi-user.target.wants/ pointing to your mount file.
    • Ensures that systemd automatically mounts the SMB share every time the system boots.
    • This does not immediately mount it—it just sets it up for future boots.
  • Start (mount) the SMB share immediately: sudo systemctl start var-home-<username>-retrodeck.mount
    • Manually triggers the mounting of the SMB share right now, without waiting for a reboot.
    • If successful, the mount point (/var/home/<username>/retrodeck) should now show the contents of the SMB share.
    • If there are errors (e.g., wrong credentials, network issues), it will fail, but logs can be checked using journalctl -xe.
@McBaconator5000
Copy link

Is the username and password the credentials for the shared file or for the bazzite user you are using?

Do you have to change 'getenforce' from Enforcing for Permissive to get this to work?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment