public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/fedora-release] f45: Add a WSL variant
@ 2026-08-10  9:36 Jeremy Cline
  0 siblings, 0 replies; only message in thread
From: Jeremy Cline @ 2026-08-10  9:36 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/fedora-release
            Branch : f45
            Commit : c1cc4369b69d575147e7d9d1a479f5d470adfafb
            Author : Jeremy Cline <jeremycline@linux.microsoft.com>
            Date   : 2025-01-21T22:49:23+00:00
            Stats  : +110/-0 in 4 file(s)
            URL    : https://src.fedoraproject.org/rpms/fedora-release/c/c1cc4369b69d575147e7d9d1a479f5d470adfafb?branch=f45

            Log:
            Add a WSL variant

Introduce a new WSL release for Windows Subsystem for Linux images. This
includes the distribution configuration and first-time setup script, as
well.

See https://bugzilla.redhat.com/show_bug.cgi?id=2338441

---
diff --git a/fedora-release.spec b/fedora-release.spec
index d378fd7..a49294e 100644
--- a/fedora-release.spec
+++ b/fedora-release.spec
@@ -58,6 +58,7 @@
 %bcond miraclewm_atomic %[%{undefined eln}]
 %bcond cosmic %[%{undefined eln}]
 %bcond cosmic_atomic %[%{undefined eln}]
+%bcond wsl %[%{undefined eln}]
 
 %if %{with silverblue} || %{with kinoite} || %{with kinoite_mobile} || %{with sway_atomic} || %{with budgie_atomic} || %{with miraclewm_atomic} || %{with cosmic_atomic}
 %global with_ostree_desktop 1
@@ -107,6 +108,9 @@ Source33:       plasma-mobile.conf
 Source34:       80-kde-mobile.preset
 Source35:       fedora-miraclewm.conf
 Source36:       fedora-cosmic.conf
+Source37:       wsl.conf
+Source38:       wsl-distribution.conf
+Source39:       wsl-oobe.sh
 
 BuildArch:      noarch
 
@@ -1447,6 +1451,42 @@ Provides the necessary files for a Fedora installation that is identifying
 itself as Fedora COSMIC Atomic.
 %endif
 
+%if %{with wsl}
+%package wsl
+Summary:        Base package for Fedora WSL specific default configurations
+
+RemovePathPostfixes: .wsl
+Provides:       fedora-release = %{version}-%{release}
+Provides:       fedora-release-variant = %{version}-%{release}
+Provides:       system-release
+Provides:       system-release(%{version})
+Requires:       fedora-release-common = %{version}-%{release}
+
+# fedora-release-common Requires: fedora-release-identity, so at least one
+# package must provide it. This Recommends: pulls in
+# fedora-release-identity-wsl if nothing else is already doing so.
+Recommends:     fedora-release-identity-wsl
+
+
+%description wsl
+Provides a base package for Fedora WSL specific configuration files to
+depend on as well as WSL system defaults.
+
+
+%package identity-wsl
+Summary:        Package providing the identity for Fedora WSL.
+
+RemovePathPostfixes: .wsl
+Provides:       fedora-release-identity = %{version}-%{release}
+Conflicts:      fedora-release-identity
+Requires(meta): fedora-release-container = %{version}-%{release}
+
+
+%description identity-wsl
+Provides the necessary files for a Fedora installation that is identifying
+itself as Fedora WSL.
+%endif
+
 %prep
 mkdir -p licenses
 sed 's|@@VERSION@@|%{dist_version}|g' %{SOURCE2} >licenses/Fedora-Legal-README.txt
@@ -1949,6 +1989,16 @@ sed -i -e 's|BUG_REPORT_URL=.*|BUG_REPORT_URL="https://pagure.io/fedora-cosmic/S
 sed -e "s#\$version#%{bug_version}#g" -e 's/$edition/COSMICAtomic/;s/<!--.*-->//;/^$/d' %{SOURCE20} > %{buildroot}%{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.cosmic-atomic
 %endif
 
+%if %{with wsl}
+install -pm0644 -t %{buildroot}%{_sysconfdir}/ %{SOURCE37} %{SOURCE38}
+install -Dpm0755 -T %{SOURCE39} %{buildroot}%{_libexecdir}/wsl/oobe.sh
+cp -p os-release %{buildroot}%{_prefix}/lib/os-release.wsl
+echo "VARIANT=\"WSL\"" >> %{buildroot}%{_prefix}/lib/os-release.wsl
+echo "VARIANT_ID=wsl" >> %{buildroot}%{_prefix}/lib/os-release.wsl
+sed -i -e "s|(%{release_name}%{?prerelease})|(WSL%{?prerelease})|g" %{buildroot}%{_prefix}/lib/os-release.wsl
+sed -e "s#\$version#%{bug_version}#g" -e 's/$edition/WSL/;s/<!--.*-->//;/^$/d' %{SOURCE20} > %{buildroot}%{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.wsl
+%endif
+
 # Create the symlink for /etc/os-release
 ln -s ../usr/lib/os-release %{buildroot}%{_sysconfdir}/os-release
 
@@ -2340,6 +2390,16 @@ install -Dm0644 %{SOURCE31} -t %{buildroot}%{_prefix}/share/dnf5/libdnf.conf.d/
 %{_prefix}/lib/systemd/system-preset/81-desktop.preset
 %endif
 
+%if %{with wsl}
+%files wsl
+%{_sysconfdir}/wsl.conf
+%{_sysconfdir}/wsl-distribution.conf
+%{_libexecdir}/wsl/oobe.sh
+%files identity-wsl
+%{_prefix}/lib/os-release.wsl
+%attr(0644,root,root) %{_swidtagdir}/org.fedoraproject.Fedora-edition.swidtag.wsl
+%endif
+
 
 %changelog
 %autochangelog

diff --git a/wsl-distribution.conf b/wsl-distribution.conf
new file mode 100644
index 0000000..d071d33
--- /dev/null
+++ b/wsl-distribution.conf
@@ -0,0 +1,16 @@
+# The /etc/wsl-distribution.conf configuration file.
+#
+# Available configuration options are documented at
+# https://learn.microsoft.com/en-us/windows/wsl/build-custom-distro
+
+[oobe]
+# Command run the first time the user opens an interactive shell.
+# If the command returns non-zero, it is considered unsuccessful and the
+# user won't be able to open a shell.
+command = /usr/libexec/wsl/oobe.sh
+# Default UID for user the distribution starts with.
+defaultUid = 1000
+# Default name the distribution is registered under.
+# This is used when the user double-clicks to install, or uses
+# wsl --install --from-file ./Fedora.wsl
+defaultName = Fedora

diff --git a/wsl-oobe.sh b/wsl-oobe.sh
new file mode 100644
index 0000000..a14b79f
--- /dev/null
+++ b/wsl-oobe.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# The Fedora WSL out of box experience script.
+#
+# This command runs the first time the user opens an interactive shell.
+#
+# A non-zero exit code indicates to WSL that setup failed.
+
+set -ueo pipefail
+
+DEFAULT_USER_ID=1000
+
+echo 'Please create a default Fedora user account. The username does not need to match your Windows username.'
+echo 'For more information visit: https://aka.ms/wslusers'
+
+if getent passwd $DEFAULT_USER_ID > /dev/null ; then
+  echo 'User account already exists, skipping creation'
+  exit 0
+fi
+
+# Prompt from the username
+read -r -p 'Enter new UNIX username: ' username
+
+# Create the user
+/usr/sbin/useradd -m -G wheel --uid $DEFAULT_USER_ID "$username"
+
+cat > /etc/sudoers.d/wsluser << EOF
+# Ensure the WSL initial user can use sudo
+$username ALL=(ALL) NOPASSWD: ALL
+EOF

diff --git a/wsl.conf b/wsl.conf
new file mode 100644
index 0000000..1a92e7c
--- /dev/null
+++ b/wsl.conf
@@ -0,0 +1,4 @@
+# Refer to https://learn.microsoft.com/en-us/windows/wsl/wsl-config#wslconf
+# for the full set of configuration options.
+[boot]
+systemd=true

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-10  9:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-10  9:36 [rpms/fedora-release] f45: Add a WSL variant Jeremy Cline

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox