From 2aacfeaa9073ba0442e7067f0a38c70ff0c3fa21 Mon Sep 17 00:00:00 2001 From: nzbr Date: Thu, 11 Jan 2024 18:17:35 +0100 Subject: [PATCH] Add DistroLauncher --- .editorconfig | 7 +- .github/actions/setup-msbuild/action.yml | 7 ++ .github/actions/version/action.yml | 21 ++++ .github/workflows/on_push.yml | 13 ++- .github/workflows/on_release.yml | 24 ++++- .github/workflows/run_build.yml | 47 +++++--- .github/workflows/run_package.yml | 91 ++++++++++++++++ Launcher/.editorconfig | 8 ++ Launcher/.gitignore | 12 +++ .../Images/LockScreenLogo.scale-200.png | Bin 0 -> 4980 bytes .../Images/SplashScreen.scale-200.png | Bin 0 -> 81284 bytes .../Images/Square150x150Logo.scale-200.png | Bin 0 -> 32102 bytes .../Images/Square44x44Logo.scale-200.png | Bin 0 -> 9290 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 2843 bytes Launcher/Launcher-Appx/Images/StoreLogo.png | Bin 0 -> 5232 bytes .../Images/Wide310x150Logo.scale-200.png | Bin 0 -> 37852 bytes Launcher/Launcher-Appx/Launcher-Appx.wapproj | 66 ++++++++++++ .../Launcher-Appx/Launcher-Appx.wapproj.user | 24 +++++ Launcher/Launcher-Appx/Package.appxmanifest | 59 ++++++++++ Launcher/Launcher.sln | 52 +++++++++ Launcher/Launcher.sln.DotSettings | 8 ++ Launcher/Launcher/Launcher.csproj | 23 ++++ Launcher/Launcher/nixos.ico | Bin 0 -> 68607 bytes Launcher/Launcher/src/Commands/Install.cs | 30 ++++++ Launcher/Launcher/src/Commands/Registered.cs | 31 ++++++ Launcher/Launcher/src/Commands/Run.cs | 40 +++++++ Launcher/Launcher/src/Commands/Uninstall.cs | 16 +++ Launcher/Launcher/src/DistributionInfo.cs | 9 ++ .../src/Helpers/InstallationHelper.cs | 92 ++++++++++++++++ .../Launcher/src/Helpers/StartupHelper.cs | 29 +++++ .../Launcher/src/Helpers/VersionHelper.cs | 60 +++++++++++ Launcher/Launcher/src/Program.cs | 102 ++++++++++++++++++ .../Launcher/src/WSL/Kernel32/CloseHandle.cs | 12 +++ .../Launcher/src/WSL/Kernel32/CreatePipe.cs | 13 +++ .../src/WSL/Kernel32/GetExitCodeProcess.cs | 9 ++ .../Launcher/src/WSL/Kernel32/GetProcessId.cs | 8 ++ .../Launcher/src/WSL/Kernel32/GetStdHandle.cs | 12 +++ .../Launcher/src/WSL/Kernel32/ReadFile.cs | 14 +++ .../src/WSL/Kernel32/SecurityAttributes.cs | 12 +++ .../src/WSL/Kernel32/WaitForSingleObject.cs | 28 +++++ Launcher/Launcher/src/WSL/WslApiException.cs | 17 +++ .../src/WSL/WslConfigureDistribution.cs | 20 ++++ .../Launcher/src/WSL/WslDistributionFlags.cs | 21 ++++ .../WSL/WslGetDistributionConfiguration.cs | 63 +++++++++++ .../src/WSL/WslIsDistributionRegistered.cs | 8 ++ Launcher/Launcher/src/WSL/WslLaunch.cs | 41 +++++++ .../Launcher/src/WSL/WslLaunchGetOutput.cs | 84 +++++++++++++++ .../Launcher/src/WSL/WslLaunchInteractive.cs | 31 ++++++ .../src/WSL/WslRegisterDistribution.cs | 24 +++++ .../src/WSL/WslUnregisterDistribution.cs | 19 ++++ Launcher/default.nix | 95 ++++++++++++++++ checks/dotnet-format.nix | 8 ++ flake.nix | 1 + modules/version.nix | 2 +- 54 files changed, 1393 insertions(+), 20 deletions(-) create mode 100644 .github/actions/setup-msbuild/action.yml create mode 100644 .github/actions/version/action.yml create mode 100644 .github/workflows/run_package.yml create mode 100644 Launcher/.editorconfig create mode 100644 Launcher/.gitignore create mode 100644 Launcher/Launcher-Appx/Images/LockScreenLogo.scale-200.png create mode 100644 Launcher/Launcher-Appx/Images/SplashScreen.scale-200.png create mode 100644 Launcher/Launcher-Appx/Images/Square150x150Logo.scale-200.png create mode 100644 Launcher/Launcher-Appx/Images/Square44x44Logo.scale-200.png create mode 100644 Launcher/Launcher-Appx/Images/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 Launcher/Launcher-Appx/Images/StoreLogo.png create mode 100644 Launcher/Launcher-Appx/Images/Wide310x150Logo.scale-200.png create mode 100644 Launcher/Launcher-Appx/Launcher-Appx.wapproj create mode 100644 Launcher/Launcher-Appx/Launcher-Appx.wapproj.user create mode 100644 Launcher/Launcher-Appx/Package.appxmanifest create mode 100644 Launcher/Launcher.sln create mode 100644 Launcher/Launcher.sln.DotSettings create mode 100644 Launcher/Launcher/Launcher.csproj create mode 100644 Launcher/Launcher/nixos.ico create mode 100644 Launcher/Launcher/src/Commands/Install.cs create mode 100644 Launcher/Launcher/src/Commands/Registered.cs create mode 100644 Launcher/Launcher/src/Commands/Run.cs create mode 100644 Launcher/Launcher/src/Commands/Uninstall.cs create mode 100644 Launcher/Launcher/src/DistributionInfo.cs create mode 100644 Launcher/Launcher/src/Helpers/InstallationHelper.cs create mode 100644 Launcher/Launcher/src/Helpers/StartupHelper.cs create mode 100644 Launcher/Launcher/src/Helpers/VersionHelper.cs create mode 100644 Launcher/Launcher/src/Program.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/CloseHandle.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/CreatePipe.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/GetExitCodeProcess.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/GetProcessId.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/GetStdHandle.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/ReadFile.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/SecurityAttributes.cs create mode 100644 Launcher/Launcher/src/WSL/Kernel32/WaitForSingleObject.cs create mode 100644 Launcher/Launcher/src/WSL/WslApiException.cs create mode 100644 Launcher/Launcher/src/WSL/WslConfigureDistribution.cs create mode 100644 Launcher/Launcher/src/WSL/WslDistributionFlags.cs create mode 100644 Launcher/Launcher/src/WSL/WslGetDistributionConfiguration.cs create mode 100644 Launcher/Launcher/src/WSL/WslIsDistributionRegistered.cs create mode 100644 Launcher/Launcher/src/WSL/WslLaunch.cs create mode 100644 Launcher/Launcher/src/WSL/WslLaunchGetOutput.cs create mode 100644 Launcher/Launcher/src/WSL/WslLaunchInteractive.cs create mode 100644 Launcher/Launcher/src/WSL/WslRegisterDistribution.cs create mode 100644 Launcher/Launcher/src/WSL/WslUnregisterDistribution.cs create mode 100644 Launcher/default.nix create mode 100644 checks/dotnet-format.nix diff --git a/.editorconfig b/.editorconfig index beffa30..4039ff1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,11 +1,12 @@ root = true [*] -indent_style = space -indent_size = 2 charset = utf-8 -trim_trailing_whitespace = true +end_of_line = lf +indent_size = 2 +indent_style = space insert_final_newline = true +trim_trailing_whitespace = true [*.md] trim_trailing_whitespace = false diff --git a/.github/actions/setup-msbuild/action.yml b/.github/actions/setup-msbuild/action.yml new file mode 100644 index 0000000..84aa311 --- /dev/null +++ b/.github/actions/setup-msbuild/action.yml @@ -0,0 +1,7 @@ +runs: + using: 'composite' + steps: + - name: Setup MSBuild 🧰 + uses: microsoft/setup-msbuild@v1.1 + with: + vs-version: '[17.2,' diff --git a/.github/actions/version/action.yml b/.github/actions/version/action.yml new file mode 100644 index 0000000..a00cffe --- /dev/null +++ b/.github/actions/version/action.yml @@ -0,0 +1,21 @@ +outputs: + version: + description: 'The generated version number' + value: ${{ steps.version.outputs.version }} + +runs: + using: 'composite' + steps: + - name: Generate/Set Version 🏷️ + id: version + shell: pwsh + run: | + $LATEST_TAG = git describe --tags --abbrev=0 # Get the latest tag name + $COMMIT_COUNT = git rev-list --use-bitmap-index --count "$(git rev-list --tags --no-walk --max-count=1)..HEAD" # Count all commits since the last tag + $NIXOS_WSL_VERSION = "$($LATEST_TAG -replace '(.+)\.(.+)\.(.+)\..+', '$1.$2.$3').${COMMIT_COUNT}" # Compose the NixOS-WSL version number + Write-Output "version=${NIXOS_WSL_VERSION}" >> $env:GITHUB_OUTPUT + + Write-Output $NIXOS_WSL_VERSION > ./VERSION + Write-Output $(git rev-parse HEAD) >> ./VERSION + ((Get-Content -path ./Launcher/Launcher/Launcher.csproj -Raw) -replace '1.3.3.7',$NIXOS_WSL_VERSION) | Set-Content -Path ./Launcher/Launcher/Launcher.csproj + ((Get-Content -path ./Launcher/Launcher-Appx/Package.appxmanifest -Raw) -replace '1.3.3.7',$NIXOS_WSL_VERSION) | Set-Content -Path ./Launcher/Launcher-Appx/Package.appxmanifest diff --git a/.github/workflows/on_push.yml b/.github/workflows/on_push.yml index 8fc3997..e1739db 100644 --- a/.github/workflows/on_push.yml +++ b/.github/workflows/on_push.yml @@ -2,14 +2,23 @@ name: "Push" on: push: - branches: [main] + branches: [main, distro-launcher] pull_request: {} jobs: build: - name: Build Tarballs 🛠️ + name: Build 🛠️ uses: ./.github/workflows/run_build.yml + package: + name: Package 📦 + uses: ./.github/workflows/run_package.yml + needs: + - build + secrets: + APPX_SIGNING_CERT: ${{ secrets.APPX_SIGNING_CERT }} + CERT_ALGORITHM: ${{ secrets.CERT_ALGORITHM }} + checks: name: Flake Checks 📋 uses: ./.github/workflows/run_checks.yml diff --git a/.github/workflows/on_release.yml b/.github/workflows/on_release.yml index 5a6b677..49df902 100644 --- a/.github/workflows/on_release.yml +++ b/.github/workflows/on_release.yml @@ -6,23 +6,41 @@ on: jobs: build: - name: Build Tarballs 🛠️ + name: Build 🛠️ uses: ./.github/workflows/run_build.yml + package: + name: Package 📦 + uses: ./.github/workflows/run_package.yml + needs: + - build + secrets: + APPX_SIGNING_CERT: ${{ secrets.APPX_SIGNING_CERT }} + CERT_ALGORITHM: ${{ secrets.CERT_ALGORITHM }} + release: needs: - build + - package name: Create Release 📢 runs-on: ubuntu-latest steps: - name: Download Tarball 📥 uses: actions/download-artifact@v4 + - name: Download appx 📥 + uses: actions/download-artifact@v4 + with: + name: appx + + - name: Rename appx ✏️ + run: mv */*.msixbundle NixOS-WSL.msixbundle + - name: Generate Checksums 🔑 run: | mv tarball-modern/nixos-wsl.tar.gz nixos-wsl.tar.gz mv tarball-legacy/nixos-wsl.tar.gz nixos-wsl-legacy.tar.gz - for x in *.tar.gz; do + for x in *.{tar.gz,msixbundle}; do sha256sum $x > ${x}.sha256 done @@ -34,5 +52,7 @@ jobs: nixos-wsl.tar.gz.sha256 nixos-wsl-legacy.tar.gz nixos-wsl-legacy.tar.gz.sha256 + NixOS-WSL.msixbundle + NixOS-WSL.msixbundle.sha256 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/run_build.yml b/.github/workflows/run_build.yml index 0c9d90b..f30441e 100644 --- a/.github/workflows/run_build.yml +++ b/.github/workflows/run_build.yml @@ -1,11 +1,11 @@ -name: Build Tarballs +name: Build Tarball on: workflow_call: {} jobs: - build: - name: Build 🛠️ + tar: + name: Tarball 🛠️ runs-on: ubuntu-latest strategy: matrix: @@ -22,17 +22,12 @@ jobs: - name: Install Nix ❄️ uses: ./.github/actions/install-nix - - name: Generate Version 🏷️ + - name: Set Version 🏷️ + uses: ./.github/actions/version id: version - shell: pwsh - run: | - $LATEST_TAG = git describe --tags --abbrev=0 # Get the latest tag name - $COMMIT_COUNT = git rev-list --use-bitmap-index --count "$(git rev-list --tags --no-walk --max-count=1)..HEAD" # Count all commits since the last tag - $NIXOS_WSL_VERSION = "$($LATEST_TAG -replace '(.+)\.(.+)\.(.+)\..+', '$1.$2.$3').${COMMIT_COUNT}" # Compose the NixOS-WSL version number - echo "version=$NIXOS_WSL_VERSION" >> $env:GITHUB_OUTPUT - echo $NIXOS_WSL_VERSION > ./VERSION - echo $(git rev-parse HEAD) >> ./VERSION + - name: Summary Headline 📝 + run: echo '## NixOS-WSL ${{ steps.version.outputs.version }}' >> $GITHUB_STEP_SUMMARY - name: Build Tarball 🛠️ uses: ./.github/actions/build-wsl-tarball @@ -45,3 +40,31 @@ jobs: with: name: tarball-${{ matrix.config }} path: nixos-wsl.tar.gz + + launcher: + name: Launcher 🛠️ + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup MSBuild 🧰 + uses: ./.github/actions/setup-msbuild + + - name: Set Versions 🏷️ + uses: ./.github/actions/version + + - name: Build Launcher + run: | + cd Launcher + dotnet publish --self-contained -r win-x64 -c Release -p:ContinuousIntegrationBuild=true -p:Deterministic=true --output Launcher\pkg Launcher + + - name: Upload Launcher 📤 + uses: actions/upload-artifact@v4 + with: + name: launcher-bin + path: | + Launcher/Launcher/obj + Launcher/Launcher/pkg diff --git a/.github/workflows/run_package.yml b/.github/workflows/run_package.yml new file mode 100644 index 0000000..f30430f --- /dev/null +++ b/.github/workflows/run_package.yml @@ -0,0 +1,91 @@ +name: Build Tarball + +on: + workflow_call: + secrets: + APPX_SIGNING_CERT: {} + CERT_ALGORITHM: {} + +jobs: + launcher-bundle: + name: ZIP 📦 + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Download tarball 📥 + uses: actions/download-artifact@v4 + with: + name: tarball-modern + + - name: Download launcher binaries 📥 + uses: actions/download-artifact@v4 + with: + name: launcher-bin + path: Launcher/Launcher/ + + - name: Bundle tarball with launcher 📦 + run: | + Copy-Item nixos-wsl.tar.gz Launcher\Launcher\pkg\ + + - name: Upload Launcher 📤 + uses: actions/upload-artifact@v4 + with: + name: launcher-bundle + path: Launcher/Launcher/pkg + + launcher-msix: + name: MSIX 📦 + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Download tarball 📥 + uses: actions/download-artifact@v4 + with: + name: tarball-modern + + - name: Download launcher binaries 📥 + uses: actions/download-artifact@v4 + with: + name: launcher-bin + path: Launcher/Launcher/ + + - name: Bundle tarball with launcher 📦 + run: | + Copy-Item nixos-wsl.tar.gz Launcher\Launcher-Appx\ + + - name: Setup MSBuild 🧰 + uses: ./.github/actions/setup-msbuild + + - name: Set Versions 🏷️ + uses: ./.github/actions/version + + - name: Build MSIX package 📦 + run: | + cd Launcher + nuget restore + msbuild Launcher-Appx\Launcher-Appx.wapproj /p:Configuration=Release /p:Platform=x64 /p:ContinuousIntegrationBuild=true /p:Deterministic=true + + - name: Sign package ✒️ + env: + APPX_SIGNING_CERT: ${{ secrets.APPX_SIGNING_CERT }} + CERT_ALGORITHM: ${{ secrets.CERT_ALGORITHM }} + if: env.APPX_SIGNING_CERT != '' + run: | + Write-Output $env:APPX_SIGNING_CERT > appx-cert.b64 + certutil -decode appx-cert.b64 appx-cert.pfx + &"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign /fd $env:CERT_ALGORITHM /a /f appx-cert.pfx $(Get-ChildItem -Recurse -Filter "*.msixbundle")[0].FullName + Get-PfxCertificate appx-cert.pfx | Export-Certificate -FilePath "$($(Get-ChildItem -Recurse -Filter "*.msixbundle")[0].Directory.FullName)\certificate.cer" -Type CERT + + - name: Upload MSIX 📤 + uses: actions/upload-artifact@v4 + with: + name: launcher-msix + path: Launcher/Launcher-Appx/AppPackages/ diff --git a/Launcher/.editorconfig b/Launcher/.editorconfig new file mode 100644 index 0000000..aa814c2 --- /dev/null +++ b/Launcher/.editorconfig @@ -0,0 +1,8 @@ +[*.cs] +indent_size = 4 +csharp_new_line_before_open_brace = none +csharp_style_var_when_type_is_apparent = true +csharp_style_var_for_built_in_types = true +csharp_new_line_before_else = false +csharp_new_line_before_catch = false +csharp_new_line_before_finally = false diff --git a/Launcher/.gitignore b/Launcher/.gitignore new file mode 100644 index 0000000..0bcb07a --- /dev/null +++ b/Launcher/.gitignore @@ -0,0 +1,12 @@ +bin/ +*.dll +*.exe +*.appx +*.cache +.vs/ +.idea/ +*.DotSettings.user +obj/ +AppPackages/ +BundleArtifacts/ +*.pfx diff --git a/Launcher/Launcher-Appx/Images/LockScreenLogo.scale-200.png b/Launcher/Launcher-Appx/Images/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..d96f121f0240d2a61d3aaf1ad7f1035501f12fc6 GIT binary patch literal 4980 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 literal 0 HcmV?d00001 diff --git a/Launcher/Launcher-Appx/Images/Square150x150Logo.scale-200.png b/Launcher/Launcher-Appx/Images/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..3932231eb6dd101c197d6f7e2819acb0fdded4f1 GIT binary patch literal 32102 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 Op3^kcc%*hYHgE# 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

p(av1*@UrXB<828tNEKO=yiMWM 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 _H`d{jWI{feQ(2AN7%5|3OO&SE8u! z?q$PC?d_OM_8P5>E+3cg=|1ZC$G1F}ZQIthgLuM^mT%0Dflho>PPE9Ys>py<7QKwK z(;j033JQ+P4>?%Nv?CFrFUI+WNff-EkH@A*7Bu00|IF|h^SPd#+kFDhZ*lfB#VXHz zm~H(X1ZXf;$V;O2=;hJ&8O6Hu{pz*K?Up>qT}>^pwQ$9g6JR7d&n#Z4 zL}`H&GpiV90gro8*LJR2F3JCB8+zILS0D2CfxuLTUjQwrbyP(VmYqX}I(*ha6bPgy z;A`Knm97HggADy+np&3@U{dL1UwC!>DwC53^?kv!J4@+eY`nP0AS9@+U}8~K z$-I|ik6W7#C=cVG%X_@1Mq4HtAUGmR%lEoj17acrEum-8Bym94Nb1Uzurc*_GjkwO zI%?(nUcMmPJcJkXarMT}?Pv~F{z;^^>q?h>SokuYW+7zl5N;lwNs>Ju0vCfCfRlaR z?=_~io0Su@N_K2~v6GXq>L8TM3x1FITxj~;Evl&W1!XjRt)|f5U}miJ4lTD<->R# z{%g2W#{n8RXH2yyAVU1Kb1J60yBW9tLf7m8dG2IaOJLqqTXA8#ElkQ9VvZc;%Ba%WpT^pS?PmWvOv_RT?6eD;EE-0?0 zTeBx;wRkY^u&QK$OCngdGkro_floRPiWbf1FhRt#2bv=9c}n+ACAV*#Z7HmZzaBYN zO+`6gVVW6ciO!i}T{mKH!qjU|ZT0n*>eE$bfpHb?!U6hd)3lF4{vr(%7(yHS8-*W51qJ*lmzJsGkzQ0NMAEx9y$?Z)tVbASA&8F#a{2wd+F=JE{# z>`gtEvm%B<^L%HX!K0~W4auvWTt}_mUmADvVL@4I&gE^HyU$%_mq+DoFEcsEG=c4Q zzbA;82YdeSZ%bK3S_N>8%@oYtRY%kSC2Jn69X`Zw4EgI5)yqpBDx^T&Ds_W=JRUu? zCMaStpJUze=PIj)RVKW?NsPkHIiT;uYj~W&5^;Fg{(jfO!)nseGo1#$Xv0!>qw1ux zK7=JM5WSL!52b(PQRyDS6V<6dHBMD~w^y4=>Vi6osggSg0`z4!ysxJ=T7Zh7QxG4(;0k#ai9WPTyqD2dD_Z9qazJA)KeqoB4T&^dq*jJiABvOgI<)W z8acV|5m^0rNnjJ1cw!?^HqD(rte1r+lxi4E#}&qUGJN{ zZq&zu8}bG!gbXk}PB)wn#G1Dgly#S?yZ}I7-)p=)4~theeGZBbn5=4c z)lQj`j3Mn=)(1iBc17R9`C{YQtN@XV&xobFD{vcjU~JCk(IeeBUX?-n+^Ecydu222 zStrYJ`;w7JO_-zxT&6~@s|h-l6$~J?vBB7IyD{+Mf>FCoK3f}k__yg;#V>=@-)W+D z=z>^VolB`VeEIVwohHgt9|I)z_6*}M2fM=Z6)Qi*a>et=dRh{qG)=CLxPflwy2*p> zI1{Rs?}h`JIamFRJCMPc&mG9c-Q4BjZ~#;a2Oftl)$75(Yby-WwVj)3<#JoP#qHWr z8vgR1;yo=oY5J;g88P~w?rmBvtnrCM?Ig3&M3#>KsCX3KfRdx54aLqWG)OaE lJcCb-E<(eZk?y}H)Y0`x3|ibo2rr&Y$B5S1QKskg + + + 15.0 + + + + Release + x64 + + + Release + ARM64 + + + + $(MSBuildExtensionsPath)\Microsoft\DesktopBridge\ + + + + b2533ea5-9dd5-41bb-bf00-a1d0fdba58b7 + 10.0.22000.0 + 10.0.18362.0 + de-DE + False + $(NoWarn);NU1702 + Launcher-Appx_TemporaryKey.pfx + False + SHA256 + False + True + x64 + 0 + ..\Launcher\Launcher.csproj + + + en-US + Always + + + en-US + Always + + + + Designer + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Launcher/Launcher-Appx/Launcher-Appx.wapproj.user b/Launcher/Launcher-Appx/Launcher-Appx.wapproj.user new file mode 100644 index 0000000..cfa75ec --- /dev/null +++ b/Launcher/Launcher-Appx/Launcher-Appx.wapproj.user @@ -0,0 +1,24 @@ + + + + AppHostLocalDebugger + False + + + AppHostLocalDebugger + + + SideloadOnly + False + x64 + False + + + AppHostLocalDebugger + + + AppHostLocalDebugger + False + Mixed + + \ No newline at end of file diff --git a/Launcher/Launcher-Appx/Package.appxmanifest b/Launcher/Launcher-Appx/Package.appxmanifest new file mode 100644 index 0000000..705d27d --- /dev/null +++ b/Launcher/Launcher-Appx/Package.appxmanifest @@ -0,0 +1,59 @@ + + + + + + + + NixOS + nzbr + Images\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Launcher/Launcher.sln b/Launcher/Launcher.sln new file mode 100644 index 0000000..ca7c13b --- /dev/null +++ b/Launcher/Launcher.sln @@ -0,0 +1,52 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32407.343 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Launcher", "Launcher\Launcher.csproj", "{8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}" +EndProject +Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "Launcher-Appx", "Launcher-Appx\Launcher-Appx.wapproj", "{B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{86D47DB8-0919-4929-9841-EC9B8FCB282F}" + ProjectSection(SolutionItems) = preProject + .editorconfig = .editorconfig + .gitignore = .gitignore + default.nix = default.nix + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Debug|ARM64.ActiveCfg = Debug|Any CPU + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Debug|ARM64.Build.0 = Debug|Any CPU + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Debug|x64.ActiveCfg = Debug|Any CPU + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Debug|x64.Build.0 = Debug|Any CPU + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Release|ARM64.ActiveCfg = Release|Any CPU + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Release|ARM64.Build.0 = Release|Any CPU + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Release|x64.ActiveCfg = Release|Any CPU + {8EB5612C-BFFA-43EF-AAC6-68AB01DA30CA}.Release|x64.Build.0 = Release|Any CPU + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Debug|ARM64.ActiveCfg = Release|ARM64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Debug|ARM64.Build.0 = Release|ARM64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Debug|ARM64.Deploy.0 = Release|ARM64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Debug|x64.ActiveCfg = Release|x64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Debug|x64.Build.0 = Release|x64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Debug|x64.Deploy.0 = Release|x64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Release|ARM64.ActiveCfg = Release|ARM64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Release|ARM64.Build.0 = Release|ARM64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Release|ARM64.Deploy.0 = Release|ARM64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Release|x64.ActiveCfg = Release|x64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Release|x64.Build.0 = Release|x64 + {B2533EA5-9DD5-41BB-BF00-A1D0FDBA58B7}.Release|x64.Deploy.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6515FF51-7BEF-41B2-A3ED-1D5025A3BFA4} + EndGlobalSection +EndGlobal diff --git a/Launcher/Launcher.sln.DotSettings b/Launcher/Launcher.sln.DotSettings new file mode 100644 index 0000000..d7c541a --- /dev/null +++ b/Launcher/Launcher.sln.DotSettings @@ -0,0 +1,8 @@ + + False + False + False + True + True + True + True \ No newline at end of file diff --git a/Launcher/Launcher/Launcher.csproj b/Launcher/Launcher/Launcher.csproj new file mode 100644 index 0000000..770652a --- /dev/null +++ b/Launcher/Launcher/Launcher.csproj @@ -0,0 +1,23 @@ + + + + Exe + net6.0 + enable + enable + win-x64;win-arm64 + NixOS + 1.3.3.7 + nixos.ico + true + + + + + + + + + + + diff --git a/Launcher/Launcher/nixos.ico b/Launcher/Launcher/nixos.ico new file mode 100644 index 0000000000000000000000000000000000000000..9c1db003427294c97cd89e136946cd281f071c4a GIT binary patch literal 68607 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"--reinstall") { + Description = "Delete the existing installation and install a fresh copy" + }; + command.Add(reinstallOpt); + + command.SetHandler((bool reinstall) => { + if (reinstall) { + var result = InstallationHelper.Uninstall(); + if (result != 0) { + Program.result = result; + return; + } + } + + Program.result = InstallationHelper.Install(); + }, reinstallOpt); + + return command; + } +} diff --git a/Launcher/Launcher/src/Commands/Registered.cs b/Launcher/Launcher/src/Commands/Registered.cs new file mode 100644 index 0000000..15a5e9a --- /dev/null +++ b/Launcher/Launcher/src/Commands/Registered.cs @@ -0,0 +1,31 @@ +using System.CommandLine; +using WSL; + +namespace Launcher.Commands; + +public static class Registered { + public static Command GetCommand() { + var command = new Command("registered") { + Description = "Check whether or not the distribution is registered" + }; + var quietOpt = new Option(new[] { "--quiet", "-q" }) { + Description = "Only return the appropriate exit code, dont write to the console" + }; + command.Add(quietOpt); + + command.SetHandler((bool quiet) => { + var registered = WslApiLoader.WslIsDistributionRegistered(DistributionInfo.Name); + + if (!quiet) { + if (registered) + Console.WriteLine($"{DistributionInfo.Name} is registered"); + else + Console.WriteLine($"{DistributionInfo.Name} is not registered"); + } + + Program.result = registered ? 0 : 1; + }, quietOpt); + + return command; + } +} diff --git a/Launcher/Launcher/src/Commands/Run.cs b/Launcher/Launcher/src/Commands/Run.cs new file mode 100644 index 0000000..e4aaf8c --- /dev/null +++ b/Launcher/Launcher/src/Commands/Run.cs @@ -0,0 +1,40 @@ +using System.CommandLine; +using Launcher.Helpers; +using WSL; + +namespace Launcher.Commands; + +public static class Run { + public static Command GetCommand() { + var command = new Command("run") { + Description = + "Run a command in the current directory. If no command is specified, the default shell is launched" + }; + var argCmd = new Argument("command") { + Arity = ArgumentArity.ZeroOrOne + }; + command.AddArgument(argCmd); + + command.SetHandler((string? cmd) => { + uint exitCode; + + if (!WslApiLoader.WslIsDistributionRegistered(DistributionInfo.Name)) { + Console.Error.WriteLine($"{DistributionInfo.DisplayName} is not installed!"); + Program.result = 1; + return; + } + + try { + WslApiLoader.WslLaunchInteractive(DistributionInfo.Name, cmd, true, out exitCode); + } catch (WslApiException e) { + Console.Error.WriteLine("An error occured when starting the command!"); + Program.result = e.HResult; + return; + } + + Program.result = (int)exitCode; + }, argCmd); + + return command; + } +} diff --git a/Launcher/Launcher/src/Commands/Uninstall.cs b/Launcher/Launcher/src/Commands/Uninstall.cs new file mode 100644 index 0000000..a2a4ba3 --- /dev/null +++ b/Launcher/Launcher/src/Commands/Uninstall.cs @@ -0,0 +1,16 @@ +using System.CommandLine; +using Launcher.Helpers; + +namespace Launcher.Commands; + +public static class Uninstall { + public static Command GetCommand() { + var command = new Command("uninstall") { + Description = $"Uninstall {DistributionInfo.DisplayName}" + }; + + command.SetHandler(() => { Program.result = InstallationHelper.Uninstall(); }); + + return command; + } +} diff --git a/Launcher/Launcher/src/DistributionInfo.cs b/Launcher/Launcher/src/DistributionInfo.cs new file mode 100644 index 0000000..84bbda3 --- /dev/null +++ b/Launcher/Launcher/src/DistributionInfo.cs @@ -0,0 +1,9 @@ +namespace Launcher; + +internal static class DistributionInfo { + public const string DisplayName = "NixOS"; + public const string WindowTitle = "NixOS"; + + // Name that the distro is registered as in WSL. Can be overridden with --distro-name + public static string Name = "NixOS"; +} diff --git a/Launcher/Launcher/src/Helpers/InstallationHelper.cs b/Launcher/Launcher/src/Helpers/InstallationHelper.cs new file mode 100644 index 0000000..090aded --- /dev/null +++ b/Launcher/Launcher/src/Helpers/InstallationHelper.cs @@ -0,0 +1,92 @@ +using System.Reflection; +using WSL; + +namespace Launcher.Helpers; + +public static class InstallationHelper { + /// + /// Registers the distribution and runs first-time setup + /// + /// 0 on success, an error code otherwise + public static int Install() { + Console.WriteLine($"Registering {DistributionInfo.DisplayName}..."); + + if (WslApiLoader.WslIsDistributionRegistered(DistributionInfo.Name)) { + Console.Error.WriteLine($"{DistributionInfo.DisplayName} is already installed!"); + return 0; + } + + // Determine tarball location + var tarPath = FindTarball(); + if (tarPath == null) { + Console.Error.WriteLine("Could not find distro tarball"); + return 1; + } + + try { + WslApiLoader.WslRegisterDistribution( + DistributionInfo.Name, + tarPath + ); + } catch (WslApiException e) { + Console.Error.WriteLine("There was an error registering the distribution"); + return e.HResult; + } + + Console.WriteLine("Installation finished successfully"); + return 0; + } + + /// + /// Unregister the distribution + /// + /// 0 on success and an error code otherwise + public static int Uninstall() { + Console.WriteLine($"Uninstalling {DistributionInfo.DisplayName}..."); + if (!WslApiLoader.WslIsDistributionRegistered(DistributionInfo.Name)) { + Console.Error.WriteLine($"{DistributionInfo.DisplayName} is not installed!"); + return 1; + } + + try { + WslApiLoader.WslUnregisterDistribution(DistributionInfo.Name); + } catch (WslApiException e) { + Console.Error.WriteLine("An error occured when unregistering the distribution!"); + return e.HResult; + } + + Console.WriteLine("Uninstall completed"); + return 0; + } + + /// + /// Find the path of the installer tarball + /// + /// the full path to the tarball or null + public static string? FindTarball() { + const string tarFileName = "nixos-wsl.tar.gz"; + + // Accept a tarball in the current directory when running a debug build +#if (DEBUG) + var pwd = Directory.GetCurrentDirectory(); + var debugTarPath = Path.Combine(pwd, tarFileName); + if (File.Exists(debugTarPath)) return debugTarPath; +#endif + + // Look for the tarball in the same directory as the executable + var assemblyPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); + if (assemblyPath == null) return null; + + var tarPath = Path.Combine(assemblyPath, tarFileName); + if (File.Exists(tarPath)) return tarPath; + + // In the APPX package, the tarball is in the parent directory + var parentDirectory = Directory.GetParent(assemblyPath)?.FullName; + if (parentDirectory == null) return null; + + tarPath = Path.Combine(parentDirectory, tarFileName); + return File.Exists(tarPath) + ? tarPath + : null; + } +} diff --git a/Launcher/Launcher/src/Helpers/StartupHelper.cs b/Launcher/Launcher/src/Helpers/StartupHelper.cs new file mode 100644 index 0000000..0c67886 --- /dev/null +++ b/Launcher/Launcher/src/Helpers/StartupHelper.cs @@ -0,0 +1,29 @@ +using WSL; + +namespace Launcher.Helpers; + +public static class StartupHelper { + private static bool booted; + + public static bool BootDistro() { + if (booted) return true; + try { + WslApiLoader.WslLaunchInteractive( + DistributionInfo.Name, + "/bin/sh -c \"exit\"", // Don't run anything, exit after we get a shell + false, + out var exitCode + ); + if (exitCode != 0) { + Console.Error.WriteLine("An error occured during the distro's startup process"); + return false; + } + } catch (WslApiException) { + Console.Error.WriteLine("An error occured while trying to run a command in the distro"); + return false; + } + + booted = true; + return true; + } +} diff --git a/Launcher/Launcher/src/Helpers/VersionHelper.cs b/Launcher/Launcher/src/Helpers/VersionHelper.cs new file mode 100644 index 0000000..3d4422e --- /dev/null +++ b/Launcher/Launcher/src/Helpers/VersionHelper.cs @@ -0,0 +1,60 @@ +using System.Reflection; +using System.Text.Json; +using WSL; + +namespace Launcher.Helpers; + +public static class VersionHelper { + public static Version? LauncherVersion => typeof(VersionHelper).Assembly.GetName().Version; + + public static NixosWslVersion? InstalledVersion { + get { + try { + if (StartupHelper.BootDistro()) { + var output = WslApiLoader.WslLaunchGetOutput( + DistributionInfo.Name, + "/bin/sh --login -c \"nixos-wsl-version --json\"", + false, + out var exitCode, + true + ).Trim(); + + var json = JsonSerializer.Deserialize>(output); + var version = json!["release"]; + + if (exitCode == 0) return new NixosWslVersion(version); + } + } catch (Exception) { + // ignored + } + + return null; + } + } + + public class NixosWslVersion { + private readonly Version _version; + private readonly string _versionString; + + internal NixosWslVersion(string versionString) { + _versionString = versionString; + + if (Version.TryParse(versionString, out var ver)) { + _version = ver; + return; + } + + _version = versionString == "DEV_BUILD" + ? new Version(int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue) + : new Version(0, 0, 0, 0); + } + + public Version AsVersion() { + return _version; + } + + public override string ToString() { + return _versionString; + } + } +} diff --git a/Launcher/Launcher/src/Program.cs b/Launcher/Launcher/src/Program.cs new file mode 100644 index 0000000..2e8609c --- /dev/null +++ b/Launcher/Launcher/src/Program.cs @@ -0,0 +1,102 @@ +using System.CommandLine; +using System.CommandLine.Builder; +using System.CommandLine.Invocation; +using System.CommandLine.IO; +using System.CommandLine.Parsing; +using Launcher.Commands; +using Launcher.Helpers; +using WSL; + +namespace Launcher; + +internal static class Program { + public static int result; + + public static async Task Main(string[] args) { + // Set title of the console + Console.Title = DistributionInfo.WindowTitle; + + // Argparse docs: https://github.com/dotnet/command-line-api + + var rootCommand = new RootCommand( + $"Manage the {DistributionInfo.DisplayName} WSL distribution" + ) { + Run.GetCommand(), + Install.GetCommand(), + Registered.GetCommand(), + Uninstall.GetCommand(), + }; + + var distroNameOption = new Option("--distro-name") { + Description = "WSL distribution name", + Arity = ArgumentArity.ZeroOrOne + }; + distroNameOption.SetDefaultValue(DistributionInfo.Name); + + var versionOption = new Option("--version") { + Description = "Show version information" + }; + + // Add the global options to the root command and all subcommands + rootCommand.AddOption(distroNameOption); + rootCommand.AddOption(versionOption); + foreach (var subcommand in rootCommand.Subcommands) { + subcommand.AddOption(distroNameOption); + subcommand.AddOption(versionOption); + } + + rootCommand.SetHandler(() => { + if (!WslApiLoader.WslIsDistributionRegistered(DistributionInfo.Name)) { + result = InstallationHelper.Install(); + if (result != 0) return; + } + + try { + WslApiLoader.WslLaunchInteractive(DistributionInfo.Name, null, true, out var exitCode); + result = (int)exitCode; + } catch (WslApiException e) { + Console.Error.WriteLine("An error occured when starting the shell"); + result = e.HResult; + } + }); + + var commandLineBuilder = new CommandLineBuilder(rootCommand) + .UseHelp() + .UseEnvironmentVariableDirective() + .UseParseDirective() + .UseSuggestDirective() + .RegisterWithDotnetSuggest() + .UseTypoCorrections() + .UseParseErrorReporting() + .UseExceptionHandler() + .CancelOnProcessTermination(); + + // Implement --distro-name option + commandLineBuilder.AddMiddleware(async (context, next) => { + var distroNameResult = context.ParseResult.FindResultFor(distroNameOption); + + if (distroNameResult is { Tokens.Count: > 0 }) DistributionInfo.Name = distroNameResult.Tokens[0].ToString(); + + await next(context); + }, (MiddlewareOrder)(-1300)); // Run before --version + + // Implement --version option + commandLineBuilder.AddMiddleware(async (context, next) => { + var versionResult = context.ParseResult.FindResultFor(versionOption); + + if (versionResult != null) { + var vl = VersionHelper.LauncherVersion?.ToString(); + var vi = VersionHelper.InstalledVersion?.ToString() ?? "UNKNOWN"; + + context.Console.Out.WriteLine($"Launcher: {vl}"); + context.Console.Out.WriteLine($"Module: {vi}"); + } else { + await next(context); + } + }, (MiddlewareOrder)(-1200)); // Internal value for the builtin version option + + await commandLineBuilder.Build().InvokeAsync(args); + + return result; + } +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/CloseHandle.cs b/Launcher/Launcher/src/WSL/Kernel32/CloseHandle.cs new file mode 100644 index 0000000..f4e3fb5 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/CloseHandle.cs @@ -0,0 +1,12 @@ +using System.Runtime.ConstrainedExecution; +using System.Runtime.InteropServices; +using System.Security; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + [DllImport("kernel32.dll", SetLastError = true)] + [SuppressUnmanagedCodeSecurity] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool CloseHandle(IntPtr hObject); +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/CreatePipe.cs b/Launcher/Launcher/src/WSL/Kernel32/CreatePipe.cs new file mode 100644 index 0000000..3b21417 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/CreatePipe.cs @@ -0,0 +1,13 @@ +using System.Runtime.InteropServices; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + [DllImport("kernel32.dll")] + public static extern bool CreatePipe( + out IntPtr hReadPipe, + out IntPtr hWritePipe, + ref SECURITY_ATTRIBUTES lpPipeAttributes, + uint nSize + ); +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/GetExitCodeProcess.cs b/Launcher/Launcher/src/WSL/Kernel32/GetExitCodeProcess.cs new file mode 100644 index 0000000..2e56d79 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/GetExitCodeProcess.cs @@ -0,0 +1,9 @@ +using System.Runtime.InteropServices; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool GetExitCodeProcess(IntPtr hProcess, out uint lpExitCode); +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/GetProcessId.cs b/Launcher/Launcher/src/WSL/Kernel32/GetProcessId.cs new file mode 100644 index 0000000..fdcef68 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/GetProcessId.cs @@ -0,0 +1,8 @@ +using System.Runtime.InteropServices; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + [DllImport("kernel32.dll")] + public static extern int GetProcessId(IntPtr handle); +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/GetStdHandle.cs b/Launcher/Launcher/src/WSL/Kernel32/GetStdHandle.cs new file mode 100644 index 0000000..1633235 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/GetStdHandle.cs @@ -0,0 +1,12 @@ +using System.Runtime.InteropServices; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + public static int STD_INPUT_HANDLE = -10; + public static int STD_OUTPUT_HANDLE = -11; + public static int STD_ERROR_HANDLE = -12; + + [DllImport("kernel32.dll", SetLastError = true)] + public static extern IntPtr GetStdHandle(int nStdHandle); +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/ReadFile.cs b/Launcher/Launcher/src/WSL/Kernel32/ReadFile.cs new file mode 100644 index 0000000..dff4485 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/ReadFile.cs @@ -0,0 +1,14 @@ +using System.Runtime.InteropServices; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + [DllImport(@"kernel32.dll", SetLastError = true)] + public static extern unsafe bool ReadFile( + IntPtr hFile, + IntPtr pBuffer, + int NumberOfBytesToRead, + out int pNumberOfBytesRead, + IntPtr lpOverlapped + ); +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/SecurityAttributes.cs b/Launcher/Launcher/src/WSL/Kernel32/SecurityAttributes.cs new file mode 100644 index 0000000..dab4d00 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/SecurityAttributes.cs @@ -0,0 +1,12 @@ +using System.Runtime.InteropServices; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + [StructLayout(LayoutKind.Sequential)] + public struct SECURITY_ATTRIBUTES { + public int nLength; + public IntPtr lpSecurityDescriptor; + public bool bInheritHandle; + } +} diff --git a/Launcher/Launcher/src/WSL/Kernel32/WaitForSingleObject.cs b/Launcher/Launcher/src/WSL/Kernel32/WaitForSingleObject.cs new file mode 100644 index 0000000..ce43674 --- /dev/null +++ b/Launcher/Launcher/src/WSL/Kernel32/WaitForSingleObject.cs @@ -0,0 +1,28 @@ +using System.Runtime.InteropServices; + +namespace WSL.Kernel32; + +public static partial class Kernel32Loader { + public const UInt32 INFINITE = 0xFFFFFFFF; + const UInt32 WAIT_ABANDONED = 0x00000080; + const UInt32 WAIT_OBJECT_0 = 0x00000000; + const UInt32 WAIT_TIMEOUT = 0x00000102; + + public static void WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds) { + [DllImport("kernel32.dll", SetLastError = true)] + // ReSharper disable once LocalFunctionHidesMethod + static extern UInt32 WaitForSingleObject(IntPtr hHandle, UInt32 dwMilliseconds); + + var result = WaitForSingleObject(hHandle, dwMilliseconds); + if (result == WAIT_OBJECT_0) { + return; + } + if (result == WAIT_TIMEOUT) { + throw new TimeoutException(); + } + if (result == WAIT_ABANDONED) { + throw new AbandonedMutexException(); + } + throw new Exception("WaitForSingleObject failed"); + } +} diff --git a/Launcher/Launcher/src/WSL/WslApiException.cs b/Launcher/Launcher/src/WSL/WslApiException.cs new file mode 100644 index 0000000..2cfaceb --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslApiException.cs @@ -0,0 +1,17 @@ +namespace WSL; + +public class WslApiException : Exception { + + private long hresult; + WslApiException(long hresult) { + this.hresult = hresult; + } + + public static void checkResult(long hresult) { + if (hresult != 0) { + throw new WslApiException(hresult); + } + } + + public override string Message => $"WSL API Error {hresult}"; +} diff --git a/Launcher/Launcher/src/WSL/WslConfigureDistribution.cs b/Launcher/Launcher/src/WSL/WslConfigureDistribution.cs new file mode 100644 index 0000000..dcf0cff --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslConfigureDistribution.cs @@ -0,0 +1,20 @@ +using System.Runtime.InteropServices; + +namespace WSL; + +public static partial class WslApiLoader { + public static void WslConfigureDistribution( + string distributionName, + ulong defaultUID, + WSL_DISTRIBUTION_FLAGS wslDistributionFlags + ) { + [DllImport("wslapi.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + // ReSharper disable once LocalFunctionHidesMethod + static extern long WslConfigureDistribution( + string distributionName, + ulong defaultUID, + WSL_DISTRIBUTION_FLAGS wslDistributionFlags + ); + WslApiException.checkResult(WslConfigureDistribution(distributionName, defaultUID, wslDistributionFlags)); + } +} diff --git a/Launcher/Launcher/src/WSL/WslDistributionFlags.cs b/Launcher/Launcher/src/WSL/WslDistributionFlags.cs new file mode 100644 index 0000000..83c06e3 --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslDistributionFlags.cs @@ -0,0 +1,21 @@ +namespace WSL; + +public static partial class WslApiLoader { + [Flags] + public enum WSL_DISTRIBUTION_FLAGS { + WSL_DISTRIBUTION_FLAGS_NONE = 0x0, + WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP = 0x1, + WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH = 0x2, + WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING = 0x4 + } + + public static WSL_DISTRIBUTION_FLAGS WSL_DISTRIBUTION_FLAGS_VALID = + WSL_DISTRIBUTION_FLAGS.WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | + WSL_DISTRIBUTION_FLAGS.WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | + WSL_DISTRIBUTION_FLAGS.WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING; + + public static WSL_DISTRIBUTION_FLAGS WSL_DISTRIBUTION_FLAGS_DEFAULT = + WSL_DISTRIBUTION_FLAGS.WSL_DISTRIBUTION_FLAGS_ENABLE_INTEROP | + WSL_DISTRIBUTION_FLAGS.WSL_DISTRIBUTION_FLAGS_APPEND_NT_PATH | + WSL_DISTRIBUTION_FLAGS.WSL_DISTRIBUTION_FLAGS_ENABLE_DRIVE_MOUNTING; +} diff --git a/Launcher/Launcher/src/WSL/WslGetDistributionConfiguration.cs b/Launcher/Launcher/src/WSL/WslGetDistributionConfiguration.cs new file mode 100644 index 0000000..222270e --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslGetDistributionConfiguration.cs @@ -0,0 +1,63 @@ +using System.Data; +using System.Runtime.InteropServices; + +namespace WSL; + +public static partial class WslApiLoader { + // Wrap this method, so that we can get a managed string array out of it instead of char*** + public static unsafe void WslGetDistributionConfiguration( + string distributionName, + out ulong distributionVersion, + out ulong defaultUID, + out WslApiLoader.WSL_DISTRIBUTION_FLAGS wslDistributionFlags, + out string[] defaultEnvironmentVariables + ) { + [DllImport("wslapi.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + // ReSharper disable once LocalFunctionHidesMethod + static extern long WslGetDistributionConfiguration( + string distributionName, + out ulong distributionVersion, + out ulong defaultUID, + out WslApiLoader.WSL_DISTRIBUTION_FLAGS wslDistributionFlags, + out byte** defaultEnvironmentVariables, + out ulong defaultEnvironmentVariableCount + ); + + byte** envv; + ulong envc; + + WslApiException.checkResult( + WslGetDistributionConfiguration( + distributionName, + out distributionVersion, + out defaultUID, + out wslDistributionFlags, + out envv, + out envc) + ); + + defaultEnvironmentVariables = new string[envc]; + + var anyNull = false; + for (ulong i = 0; i < envc; i++) { + var ptr = new IntPtr(*(envv + i)); // Get the pointer to the string at offset i and dereference it + var str = Marshal + .PtrToStringAnsi(ptr); // Create a managed string from the char* pointer (_needs_ to be ANSI) + + if (str == null) { + anyNull = true; + continue; + } + + Marshal.FreeHGlobal(ptr); // Free the string + + defaultEnvironmentVariables[i] = str; + } + + Marshal.FreeHGlobal(new IntPtr(envv)); // Free the array + + if (anyNull) + throw new NoNullAllowedException( + "One of the strings in the environment array returned by wslapi.dll is null"); + } +} diff --git a/Launcher/Launcher/src/WSL/WslIsDistributionRegistered.cs b/Launcher/Launcher/src/WSL/WslIsDistributionRegistered.cs new file mode 100644 index 0000000..daf9d86 --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslIsDistributionRegistered.cs @@ -0,0 +1,8 @@ +using System.Runtime.InteropServices; + +namespace WSL; + +public static partial class WslApiLoader { + [DllImport("wslapi.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + public static extern bool WslIsDistributionRegistered(string distributionName); +} diff --git a/Launcher/Launcher/src/WSL/WslLaunch.cs b/Launcher/Launcher/src/WSL/WslLaunch.cs new file mode 100644 index 0000000..63cd6cd --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslLaunch.cs @@ -0,0 +1,41 @@ +using System.Diagnostics; +using System.Runtime.InteropServices; +using WSL.Kernel32; + +namespace WSL; + +public static partial class WslApiLoader { + public static void WslLaunch( + string distributionName, + string? command, + bool useCurrentWorkingDirectory, + IntPtr stdIn, + IntPtr stdOut, + IntPtr stdErr, + out IntPtr process + ) { + [DllImport("wslapi.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + // ReSharper disable once LocalFunctionHidesMethod + static extern long WslLaunch( + string distributionName, + string? command, + bool useCurrentWorkingDirectory, + IntPtr stdIn, + IntPtr stdOut, + IntPtr stdErr, + out IntPtr process + ); + + WslApiException.checkResult( + WslLaunch( + distributionName, + command, + useCurrentWorkingDirectory, + stdIn, + stdOut, + stdErr, + out process + ) + ); + } +} diff --git a/Launcher/Launcher/src/WSL/WslLaunchGetOutput.cs b/Launcher/Launcher/src/WSL/WslLaunchGetOutput.cs new file mode 100644 index 0000000..b3a78ba --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslLaunchGetOutput.cs @@ -0,0 +1,84 @@ +using System.Runtime.InteropServices; +using System.Text; +using WSL.Kernel32; + +namespace WSL; + +public static partial class WslApiLoader { + + // Contains code from https://github.com/wslhub/wsl-sdk-dotnet/blob/892e8b5564170eae9944649cf8ab424ce0fbce52/src/Wslhub.Sdk/Wsl.cs#L364 + public static unsafe string WslLaunchGetOutput( + string distributionName, + string command, + bool useCurrentWorkingDirectory, + out uint exitCode, + bool noStderr = false + ) { + var stdin = Kernel32Loader.GetStdHandle(Kernel32Loader.STD_INPUT_HANDLE); + var stderr = Kernel32Loader.GetStdHandle(Kernel32Loader.STD_ERROR_HANDLE); + + var attributes = new Kernel32Loader.SECURITY_ATTRIBUTES { + lpSecurityDescriptor = IntPtr.Zero, + bInheritHandle = true, + }; + attributes.nLength = Marshal.SizeOf(attributes); + + if (!Kernel32Loader.CreatePipe(out IntPtr readPipe, out IntPtr writePipe, ref attributes, 0)) + throw new Exception("Cannot create stdout pipe"); + + var stderrRead = IntPtr.Zero; + var stderrWrite = IntPtr.Zero; + if (noStderr) { + if (!Kernel32Loader.CreatePipe(out stderrRead, out stderrWrite, ref attributes, 0)) + throw new Exception("Cannot create stderr pipe"); + stderr = stderrWrite; + } + + try { + WslLaunch(distributionName, command, useCurrentWorkingDirectory, stdin, writePipe, stderr, + out var hProcess); + Kernel32Loader.WaitForSingleObject(hProcess, Kernel32Loader.INFINITE); + + if (!Kernel32Loader.GetExitCodeProcess(hProcess, out exitCode)) { + Kernel32Loader.CloseHandle(hProcess); + throw new Exception("Could not get exit code of WSL process"); + } + + Kernel32Loader.CloseHandle(hProcess); + Kernel32Loader.CloseHandle(writePipe); // Make sure the pipe is closed if the spawned process has not done that + + const int bufferLength = 65536; + var bufferPointer = Marshal.AllocHGlobal(bufferLength); + var outputContents = new StringBuilder(); + var encoding = new UTF8Encoding(false); + var read = 0; + + do { + if (!Kernel32Loader.ReadFile(readPipe, bufferPointer, bufferLength, out read, IntPtr.Zero)) { + var lastError = Marshal.GetLastWin32Error(); + + if (lastError != 0) { + Marshal.FreeHGlobal(bufferPointer); + throw new Exception("Could not read from pipe"); + } + + break; + } + + outputContents.Append(encoding.GetString((byte*)bufferPointer.ToPointer(), read)); + } while (read == bufferLength); + + Marshal.FreeHGlobal(bufferPointer); + + return outputContents.ToString(); + } finally { + Kernel32Loader.CloseHandle(readPipe); + Kernel32Loader.CloseHandle(writePipe); + if (noStderr) { + Kernel32Loader.CloseHandle(stderrRead); + Kernel32Loader.CloseHandle(stderrWrite); + } + } + } + +} diff --git a/Launcher/Launcher/src/WSL/WslLaunchInteractive.cs b/Launcher/Launcher/src/WSL/WslLaunchInteractive.cs new file mode 100644 index 0000000..5c85aab --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslLaunchInteractive.cs @@ -0,0 +1,31 @@ +using System.Runtime.InteropServices; + +namespace WSL; + +public static partial class WslApiLoader { + public static unsafe void WslLaunchInteractive( + string distributionName, + string? command, + bool useCurrentWorkingDirectory, + out uint exitCode + ) { + [DllImport("wslapi.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode, ExactSpelling = true, PreserveSig = true)] + // ReSharper disable once LocalFunctionHidesMethod + static extern long WslLaunchInteractive( + [In] string distributionName, + [In] string? command, + [In] bool useCurrentWorkingDirectory, + [Out, MarshalAs(UnmanagedType.U4)] out uint exitCode + ); + + WslApiException.checkResult( + WslLaunchInteractive( + distributionName, + command, + useCurrentWorkingDirectory, + out exitCode + ) + ); + Console.WriteLine(exitCode); + } +} diff --git a/Launcher/Launcher/src/WSL/WslRegisterDistribution.cs b/Launcher/Launcher/src/WSL/WslRegisterDistribution.cs new file mode 100644 index 0000000..d40e55c --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslRegisterDistribution.cs @@ -0,0 +1,24 @@ +using System.Runtime.InteropServices; + +namespace WSL; + +public static partial class WslApiLoader { + public static void WslRegisterDistribution( + string distributionName, + string tarGzFilename + ) { + [DllImport("wslapi.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + // ReSharper disable once LocalFunctionHidesMethod + static extern long WslRegisterDistribution( + string distributionName, + string tarGzFilename + ); + + WslApiException.checkResult( + WslRegisterDistribution( + distributionName, + tarGzFilename + ) + ); + } +} diff --git a/Launcher/Launcher/src/WSL/WslUnregisterDistribution.cs b/Launcher/Launcher/src/WSL/WslUnregisterDistribution.cs new file mode 100644 index 0000000..e66950e --- /dev/null +++ b/Launcher/Launcher/src/WSL/WslUnregisterDistribution.cs @@ -0,0 +1,19 @@ +using System.Runtime.InteropServices; + +namespace WSL; + +public static partial class WslApiLoader { + public static void WslUnregisterDistribution( + string distributionName + ) { + [DllImport("wslapi.dll", CallingConvention = CallingConvention.Winapi, CharSet = CharSet.Unicode)] + // ReSharper disable once LocalFunctionHidesMethod + static extern long WslUnregisterDistribution(string distributionName); + + WslApiException.checkResult( + WslUnregisterDistribution( + distributionName + ) + ); + } +} diff --git a/Launcher/default.nix b/Launcher/default.nix new file mode 100644 index 0000000..781a611 --- /dev/null +++ b/Launcher/default.nix @@ -0,0 +1,95 @@ +{ pkgs ? import { } +, stdenv ? pkgs.stdenv +, lib ? pkgs.lib +, dotnet-sdk ? pkgs.dotnet-sdk +, dotnetPackages ? pkgs.dotnetPackages +, fetchurl ? pkgs.fetchurl +, linkFarmFromDrvs ? pkgs.linkFarmFromDrvs +}: + +let + fetchNuGet = { pname, version, hash }: fetchurl { + name = "${pname}-${version}.nupkg"; + url = "https://www.nuget.org/api/v2/package/${pname}/${version}"; + inherit hash; + }; +in +stdenv.mkDerivation rec { + name = "NixOS-WSL-Launcher"; + + src = ./.; + + nativeBuildInputs = [ + dotnet-sdk + dotnetPackages.Nuget + ]; + + nugetDeps = linkFarmFromDrvs "${name}-nuget-deps" (map fetchNuGet [ + { pname = "Microsoft.AspNetCore.App.Runtime.win-x64"; version = "6.0.25"; hash = "sha256-njOrSWL+YJJvnywJ0clMzYdaANYl3rcVaZeZAki1erk="; } + { pname = "Microsoft.AspNetCore.App.Runtime.win-arm64"; version = "6.0.25"; hash = "sha256-Jnt9WIxGvvejtBW5mjWCXlYmsUj6fxVI4Xs3WWsr8YE="; } + { pname = "Microsoft.NETCore.App.Host.win-x64"; version = "6.0.25"; hash = "sha256-ATiO6e8xcDPrRngmT9k//7Z2Mx07hJhxgmdwUvMYJA0="; } + { pname = "Microsoft.NETCore.App.Host.win-arm64"; version = "6.0.25"; hash = "sha256-xvj8CZHY4PyXKroniWj0JIoksKf4pcbberfMf5XZYaE="; } + { pname = "Microsoft.NETCore.App.Runtime.win-x64"; version = "6.0.25"; hash = "sha256-Lk6cn0cSQVp4QVf6IznE7UnZ9tYxZmRMYrsTIHq9Vg8="; } + { pname = "Microsoft.NETCore.App.Runtime.win-arm64"; version = "6.0.25"; hash = "sha256-eCoXKCHkrteypFVOUctV3ReQk/lFjJ7cI/CVk2tNrZY="; } + { pname = "System.CommandLine"; version = "2.0.0-beta3.22114.1"; hash = "sha256-lcqMVesbt2E189e6KfG8HVmJc3hjo2ht48WnH1UaMkY="; } + ]); + + unpackPhase = '' + cp -r --no-preserve=mode $src/. . + ''; + + configurePhase = '' + runHook preConfigure + + mkdir .home + export HOME=$PWD/.home + + export DOTNET_NOLOGO=1 + export DOTNET_CLI_TELEMETRY_OPTOUT=1 + + nuget sources Add -Name nix -Source "$PWD/nix" + nuget init "$nugetDeps" "$PWD/nix" + dotnet nuget disable source nuget.org + + mkdir -p $HOME/.nuget/NuGet + cp $HOME/.config/NuGet/NuGet.Config $HOME/.nuget/NuGet + + dotnet restore --ignore-failed-sources + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + + mkdir -p $out + + ${lib.concatStringsSep "\n" ( + map (runtime: '' + dotnet publish \ + --self-contained \ + -p:ContinuousIntegrationBuild=true \ + -p:Deterministic=true \ + --packages "$HOME/nuget_pkgs" \ + -r ${runtime} \ + -c Release \ + --output $out/${runtime} \ + Launcher + '') [ "win-x64" "win-arm64" ] + )} + + runHook postBuild + ''; + + dontInstall = true; + + dontStrip = true; # strip breaks the assemblies + + meta = with lib; { + description = "WSL Distribution Launcher for NixOS-WSL"; + homepage = "https://github.com/nix-community/NixOS-WSL"; + license = licenses.asl20; + maintainers = with maintainers; [ nzbr ]; + platforms = [ "x86_64-linux" "x86_64-windows" ]; + }; +} diff --git a/checks/dotnet-format.nix b/checks/dotnet-format.nix new file mode 100644 index 0000000..9a4bf60 --- /dev/null +++ b/checks/dotnet-format.nix @@ -0,0 +1,8 @@ +{ runCommand +, dotnet-sdk +, ... +}: +runCommand "check-dotnet-format" { nativeBuildInputs = [ dotnet-sdk ]; } '' + cd "${./../Launcher}" + dotnet format --verbosity detailed --no-restore --verify-no-changes && touch $out +'' diff --git a/flake.nix b/flake.nix index d5c3b31..104960e 100644 --- a/flake.nix +++ b/flake.nix @@ -89,6 +89,7 @@ args = { inherit inputs; }; in { + dotnet-format = pkgs.callPackage ./checks/dotnet-format.nix args; nixpkgs-fmt = pkgs.callPackage ./checks/nixpkgs-fmt.nix args; shfmt = pkgs.callPackage ./checks/shfmt.nix args; rustfmt = pkgs.callPackage ./checks/rustfmt.nix args; diff --git a/modules/version.nix b/modules/version.nix index 7968318..c287741 100644 --- a/modules/version.nix +++ b/modules/version.nix @@ -63,7 +63,7 @@ with lib; '') config.wsl.version )} --json) - echo '${generators.toJSON {} config.wsl.version}' | ${pkgs.jq}/bin/jq # Use jq to pretty-print the JSON + echo '${generators.toJSON {} config.wsl.version}' | ${pkgs.jq}/bin/jq -M # Use jq to pretty-print the JSON exit 0 ;; *)