diff options
15 files changed, 446 insertions, 330 deletions
diff --git a/nixos/modules/services/continuous-integration/github-runner/service.nix b/nixos/modules/services/continuous-integration/github-runner/service.nix index 3d11728ebfdd..55df83362cb6 100644 --- a/nixos/modules/services/continuous-integration/github-runner/service.nix +++ b/nixos/modules/services/continuous-integration/github-runner/service.nix @@ -149,7 +149,7 @@ in else args+=(--token "$token") fi - ${cfg.package}/bin/config.sh "''${args[@]}" + ${cfg.package}/bin/Runner.Listener configure "''${args[@]}" # Move the automatically created _diag dir to the logs dir mkdir -p "$STATE_DIRECTORY/_diag" cp -r "$STATE_DIRECTORY/_diag/." "$LOGS_DIRECTORY/" diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 5aeb68fdef0c..a7206aba0a5a 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -244,6 +244,7 @@ in { ghostunnel = handleTest ./ghostunnel.nix {}; gitdaemon = handleTest ./gitdaemon.nix {}; gitea = handleTest ./gitea.nix { giteaPackage = pkgs.gitea; }; + github-runner = handleTest ./github-runner.nix {}; gitlab = handleTest ./gitlab.nix {}; gitolite = handleTest ./gitolite.nix {}; gitolite-fcgiwrap = handleTest ./gitolite-fcgiwrap.nix {}; diff --git a/nixos/tests/github-runner.nix b/nixos/tests/github-runner.nix new file mode 100644 index 000000000000..033365d6925c --- /dev/null +++ b/nixos/tests/github-runner.nix @@ -0,0 +1,37 @@ +import ./make-test-python.nix ({ pkgs, ... }: +{ + name = "github-runner"; + meta = with pkgs.lib.maintainers; { + maintainers = [ veehaitch ]; + }; + nodes.machine = { pkgs, ... }: { + services.github-runners.test = { + enable = true; + url = "https://github.com/yaxitech"; + tokenFile = builtins.toFile "github-runner.token" "not-so-secret"; + }; + + systemd.services.dummy-github-com = { + wantedBy = [ "multi-user.target" ]; + before = [ "github-runner-test.service" ]; + script = "${pkgs.netcat}/bin/nc -Fl 443 | true && touch /tmp/registration-connect"; + }; + networking.hosts."127.0.0.1" = [ "api.github.com" ]; + }; + + testScript = '' + start_all() + + machine.wait_for_unit("dummy-github-com") + + try: + machine.wait_for_unit("github-runner-test") + except Exception: + pass + + out = machine.succeed("journalctl -u github-runner-test") + assert "Self-hosted runner registration" in out, "did not read runner registration header" + + machine.wait_until_succeeds("test -f /tmp/registration-connect") + ''; +}) diff --git a/pkgs/applications/display-managers/greetd/regreet.nix b/pkgs/applications/display-managers/greetd/regreet.nix new file mode 100644 index 000000000000..e989d9782b1a --- /dev/null +++ b/pkgs/applications/display-managers/greetd/regreet.nix @@ -0,0 +1,35 @@ +{ lib +, rustPlatform +, fetchFromGitHub +, pkg-config +, glib +, gtk4 +, pango +}: + +rustPlatform.buildRustPackage { + pname = "regreet"; + version = "unstable-2023-02-27"; + + src = fetchFromGitHub { + owner = "rharish101"; + repo = "ReGreet"; + rev = "2bbabe90f112b4feeb0aea516c265daaec8ccf2a"; + hash = "sha256-71ji4x/NUE4qmBuO5PkWTPE1a0uPXqJSwW1Ai1amPJE="; + }; + + cargoHash = "sha256-rz2eMMhoMtzBXCH6ZJOvGuYLeHSWga+Ebc4+ZO8Kk1g="; + + buildFeatures = [ "gtk4_8" ]; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ glib gtk4 pango ]; + + meta = with lib; { + description = "Clean and customizable greeter for greetd"; + homepage = "https://github.com/rharish101/ReGreet"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ fufexan ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/networking/cluster/acorn/default.nix b/pkgs/applications/networking/cluster/acorn/default.nix index cc79ae5d59fe..a1f9eb227aba 100644 --- a/pkgs/applications/networking/cluster/acorn/default.nix +++ b/pkgs/applications/networking/cluster/acorn/default.nix @@ -2,16 +2,16 @@ buildGoModule rec { pname = "acorn"; - version = "0.5.1"; + version = "0.6.0"; src = fetchFromGitHub { owner = "acorn-io"; repo = pname; rev = "v${version}"; - hash = "sha256-9+jI3GBRuX06+aN8C8C3K72kKtQVwmfAwhYLViuERxk="; + hash = "sha256-X4EXF6t6RzjHCbo2+oB69sFoqeRc5blSmB7x1iQCYIA="; }; - vendorHash = "sha256-t/q94B+ihcHh/XFHs1Z9yQTwoFKv/nkhIDykymGNA2w="; + vendorHash = "sha256-cx+7vbVpoeNwE4mNaQKuguALObyCrEA7EQPdnJ0H9mM="; ldflags = [ "-s" diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix index 5d69667f1bfb..14f8db6a7e84 100644 --- a/pkgs/applications/networking/sniffers/wireshark/default.nix +++ b/pkgs/applications/networking/sniffers/wireshark/default.nix @@ -1,25 +1,67 @@ -{ lib, stdenv, buildPackages, fetchurl, pkg-config, pcre2, perl, flex, bison -, gettext, libpcap, libnl, c-ares, gnutls, libgcrypt, libgpg-error, geoip, openssl -, lua5, python3, libcap, glib, libssh, nghttp2, zlib, cmake, makeWrapper, wrapGAppsHook -, withQt ? true, qt5 ? null -, ApplicationServices, SystemConfiguration, gmp +{ lib +, stdenv +, buildPackages +, fetchFromGitLab +, pkg-config +, pcre2 +, perl +, flex +, bison +, gettext +, libpcap +, libnl +, c-ares +, gnutls +, libgcrypt +, libgpg-error +, libmaxminddb +, libopus +, bcg729 +, spandsp3 +, libkrb5 +, speexdsp +, libsmi +, lz4 +, snappy +, zstd +, minizip +, sbc +, openssl +, lua5 +, python3 +, libcap +, glib +, libssh +, nghttp2 +, zlib +, cmake +, ninja +, makeWrapper +, wrapGAppsHook +, withQt ? true +, qt5 ? null +, ApplicationServices +, SystemConfiguration +, gmp , asciidoctor }: -assert withQt -> qt5 != null; +assert withQt -> qt5 != null; let - version = "4.0.3"; + version = "4.0.4"; variant = if withQt then "qt" else "cli"; - -in stdenv.mkDerivation { +in +stdenv.mkDerivation { pname = "wireshark-${variant}"; inherit version; outputs = [ "out" "dev" ]; - src = fetchurl { - url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz"; - sha256 = "sha256-bFHhW8wK+5NzTmhtv/NU/9FZ9XC9KQS8u61vP+t+lRE="; + src = fetchFromGitLab { + repo = "wireshark"; + owner = "wireshark"; + rev = "v${version}"; + hash = "sha256-x7McplQVdLczTov+u9eqmT1Ons22KqRsCN65pUuwYGw="; }; cmakeFlags = [ @@ -36,18 +78,41 @@ in stdenv.mkDerivation { # Avoid referencing -dev paths because of debug assertions. env.NIX_CFLAGS_COMPILE = toString [ "-DQT_NO_DEBUG" ]; - nativeBuildInputs = [ asciidoctor bison cmake flex makeWrapper pkg-config python3 perl ] + nativeBuildInputs = [ asciidoctor bison cmake ninja flex makeWrapper pkg-config python3 perl ] ++ lib.optionals withQt [ qt5.wrapQtAppsHook wrapGAppsHook ]; depsBuildBuild = [ buildPackages.stdenv.cc ]; buildInputs = [ - gettext pcre2 libpcap lua5 libssh nghttp2 openssl libgcrypt - libgpg-error gnutls geoip c-ares glib zlib - ] ++ lib.optionals withQt (with qt5; [ qtbase qtmultimedia qtsvg qttools qtwayland ]) - ++ lib.optionals stdenv.isLinux [ libcap libnl ] - ++ lib.optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ] - ++ lib.optionals (withQt && stdenv.isDarwin) (with qt5; [ qtmacextras ]); + gettext + pcre2 + libpcap + lua5 + libssh + nghttp2 + openssl + libgcrypt + libgpg-error + gnutls + libmaxminddb + libopus + bcg729 + spandsp3 + libkrb5 + speexdsp + libsmi + lz4 + snappy + zstd + minizip + c-ares + glib + zlib + ] ++ lib.optionals withQt (with qt5; [ qtbase qtmultimedia qtsvg qttools ]) + ++ lib.optionals (withQt && stdenv.isLinux) [ qt5.qtwayland ] + ++ lib.optionals stdenv.isLinux [ libcap libnl sbc ] + ++ lib.optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ] + ++ lib.optionals (withQt && stdenv.isDarwin) (with qt5; [ qtmacextras ]); strictDeps = true; @@ -70,22 +135,23 @@ in stdenv.mkDerivation { install_name_tool -change "$dylib" "$out/lib/$dylib" "$f" done done - '' else lib.optionalString withQt '' - pwd - install -Dm644 -t $out/share/applications ../resources/freedesktop/org.wireshark.Wireshark.desktop - - install -Dm644 ../resources/icons/wsicon.svg $out/share/icons/wireshark.svg - mkdir -pv $dev/include/{epan/{wmem,ftypes,dfilter},wsutil/wmem,wiretap} - - cp config.h $dev/include/wireshark/ - cp ../epan/*.h $dev/include/epan/ - cp ../epan/ftypes/*.h $dev/include/epan/ftypes/ - cp ../epan/dfilter/*.h $dev/include/epan/dfilter/ - cp ../include/ws_*.h $dev/include/ - cp ../wiretap/*.h $dev/include/wiretap/ - cp ../wsutil/*.h $dev/include/wsutil/ - cp ../wsutil/wmem/*.h $dev/include/wsutil/wmem/ - ''); + '' else + lib.optionalString withQt '' + pwd + install -Dm644 -t $out/share/applications ../resources/freedesktop/org.wireshark.Wireshark.desktop + + install -Dm644 ../resources/icons/wsicon.svg $out/share/icons/wireshark.svg + mkdir -pv $dev/include/{epan/{wmem,ftypes,dfilter},wsutil/wmem,wiretap} + + cp config.h $dev/include/wireshark/ + cp ../epan/*.h $dev/include/epan/ + cp ../epan/ftypes/*.h $dev/include/epan/ftypes/ + cp ../epan/dfilter/*.h $dev/include/epan/dfilter/ + cp ../include/ws_*.h $dev/include/ + cp ../wiretap/*.h $dev/include/wiretap/ + cp ../wsutil/*.h $dev/include/wsutil/ + cp ../wsutil/wmem/*.h $dev/include/wsutil/wmem/ + ''); dontFixCmake = true; diff --git a/pkgs/data/themes/orchis-theme/default.nix b/pkgs/data/themes/orchis-theme/default.nix index 840072295aa7..bb196b26fb57 100644 --- a/pkgs/data/themes/orchis-theme/default.nix +++ b/pkgs/data/themes/orchis-theme/default.nix @@ -6,29 +6,33 @@ , gtk-engine-murrine , sassc , border-radius ? null # Suggested: 2 < value < 16 -, tweaks ? [ ] # can be "solid" "compact" "black" "primary" +, tweaks ? [ ] # can be "solid" "compact" "black" "primary" "macos" "submenu" "nord|dracula" , withWallpapers ? false }: let - validTweaks = [ "solid" "compact" "black" "primary" ]; - unknownTweaks = lib.subtractLists validTweaks tweaks; + pname = "orchis-theme"; + + validTweaks = [ "solid" "compact" "black" "primary" "macos" "submenu" "nord" "dracula" ]; + + nordXorDracula = with builtins; lib.assertMsg (!(elem "nord" tweaks) || !(elem "dracula" tweaks)) '' + ${pname}: dracula and nord cannot be mixed. Tweaks ${toString tweaks} + ''; in -assert lib.assertMsg (unknownTweaks == [ ]) '' - You entered wrong tweaks: ${toString unknownTweaks} - Valid tweaks are: ${toString validTweaks} -''; + +assert nordXorDracula; +lib.checkListOfEnum "${pname}: theme tweaks" validTweaks tweaks stdenvNoCC.mkDerivation rec { - pname = "orchis-theme"; - version = "2022-10-19"; + inherit pname; + version = "2023-02-26"; src = fetchFromGitHub { repo = "Orchis-theme"; owner = "vinceliuice"; rev = version; - sha256 = "sha256-1lJUrWkb8IoUyCMn8J4Lwvs/pWsibrY0pSXrepuQcug="; + sha256 = "sha256-Qk5MK8S8rIcwO7Kmze6eAl5qcwnrGsiWbn0WNIPjRnA="; }; nativeBuildInputs = [ gtk3 sassc ]; diff --git a/pkgs/development/python-modules/bpycv/default.nix b/pkgs/development/python-modules/bpycv/default.nix index c4c4d725dd52..03aef9fd6dfe 100644 --- a/pkgs/development/python-modules/bpycv/default.nix +++ b/pkgs/development/python-modules/bpycv/default.nix @@ -15,11 +15,12 @@ buildPythonPackage rec { pname = "bpycv"; - version = "0.2.43"; + version = "0.3.6"; + format = "setuptools"; src = fetchPypi { inherit pname version; - hash = "sha256-6LXhKuNkX3yKeZARLXmOVNAUQhJghtzKhnszJ1G/a8U="; + hash = "sha256-4N4rCVhbfJx7H7jS88QR3EcRupISIhnLuZ+cgfwIzg4="; }; propagatedBuildInputs = [ diff --git a/pkgs/development/tools/continuous-integration/github-runner/default.nix b/pkgs/development/tools/continuous-integration/github-runner/default.nix index b1ff6a76f541..e6b22a99bd17 100644 --- a/pkgs/development/tools/continuous-integration/github-runner/default.nix +++ b/pkgs/development/tools/continuous-integration/github-runner/default.nix @@ -1,49 +1,19 @@ { autoPatchelfHook , autoSignDarwinBinariesHook -, coreutils -, curl +, buildDotnetModule , dotnetCorePackages -, dotnetPackages , fetchFromGitHub -, fetchurl +, fetchpatch , git , glibc -, icu -, libkrb5 +, glibcLocales , lib -, linkFarmFromDrvs -, lttng-ust -, makeWrapper +, nixosTests , nodejs-16_x -, openssl , stdenv -, zlib -, writeShellApplication -, nuget-to-nix +, which }: -let - fetchNuGet = { pname, version, sha256 }: fetchurl { - name = "${pname}.${version}.nupkg"; - url = "https://www.nuget.org/api/v2/package/${pname}/${version}"; - inherit sha256; - }; - - nugetSource = linkFarmFromDrvs "nuget-packages" ( - import ./deps.nix { inherit fetchNuGet; } - ); - - dotnetSdk = dotnetCorePackages.sdk_6_0; - # Map Nix systems to .NET runtime ids - runtimeIds = { - "x86_64-linux" = "linux-x64"; - "aarch64-linux" = "linux-arm64"; - "x86_64-darwin" = "osx-x64"; - "aarch64-darwin" = "osx-arm64"; - }; - runtimeId = runtimeIds.${stdenv.system}; - fakeSha1 = "0000000000000000000000000000000000000000"; -in -stdenv.mkDerivation rec { +buildDotnetModule rec { pname = "github-runner"; version = "2.302.1"; @@ -51,92 +21,77 @@ stdenv.mkDerivation rec { owner = "actions"; repo = "runner"; rev = "v${version}"; - hash = "sha256-l7kGKhHpE5kEo8QMmwZKnG4cctj2INhnko7KfAXfrQ8="; + hash = "sha256-hPZzqTJGwcBxajLjU0TuIQ2KLnDl9E66seuutm9JWDo="; + # Required to obtain HEAD's Git commit hash + leaveDotGit = true; }; - nativeBuildInputs = [ - dotnetSdk - dotnetPackages.Nuget - makeWrapper - ] ++ lib.optionals stdenv.isLinux [ - autoPatchelfHook - ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ - autoSignDarwinBinariesHook - ]; - - buildInputs = [ - curl # libcurl.so.4 - libkrb5 # libgssapi_krb5.so.2 - stdenv.cc.cc.lib # libstdc++.so.6 - zlib # libz.so.1 - icu - ] ++ lib.optionals stdenv.isLinux [ - lttng-ust # liblttng-ust.so.0 - ]; patches = [ - # Don't run Git, no restore on build/test - ./patches/dir-proj.patch # Replace some paths that originally point to Nix's read-only store ./patches/host-context-dirs.patch # Use GetDirectory() to obtain "diag" dir ./patches/use-get-directory-for-diag.patch - # Don't try to install systemd service - ./patches/dont-install-systemd-service.patch + # Don't try to install service + ./patches/dont-install-service.patch + # Access `.env` and `.path` relative to `$RUNNER_ROOT`, if set + ./patches/env-sh-use-runner-root.patch + # Fix FHS path: https://github.com/actions/runner/pull/2464 + (fetchpatch { + name = "ln-fhs.patch"; + url = "https://github.com/actions/runner/commit/5ff0ce1.patch"; + hash = "sha256-2Vg3cKZK3cE/OcPDZkdN2Ro2WgvduYTTwvNGxwCfXas="; + }) ]; postPatch = '' - # Relax the version requirement - substituteInPlace src/global.json \ - --replace '6.0.300' '${dotnetSdk.version}' - - # Disable specific tests - substituteInPlace src/dir.proj \ - --replace 'dotnet test Test/Test.csproj' \ - "dotnet test Test/Test.csproj --filter '${lib.concatStringsSep "&" (map (x: "FullyQualifiedName!=${x}") disabledTests)}'" - - # We don't use a Git checkout + # Ignore changes to src/Runner.Sdk/BuildConstants.cs substituteInPlace src/dir.proj \ --replace 'git update-index --assume-unchanged ./Runner.Sdk/BuildConstants.cs' \ - 'echo Patched out.' - - # Fix FHS path - substituteInPlace src/Test/L0/Util/IOUtilL0.cs \ - --replace '/bin/ln' '${coreutils}/bin/ln' + 'true' ''; - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = stdenv.isDarwin; - - configurePhase = '' - runHook preConfigure + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT = isNull glibcLocales; + LOCALE_ARCHIVE = lib.optionalString (!DOTNET_SYSTEM_GLOBALIZATION_INVARIANT) "${glibcLocales}/lib/locale/locale-archive"; - export HOME=$(mktemp -d) - - # Never use nuget.org - nuget sources Disable -Name "nuget.org" + postConfigure = '' + # Generate src/Runner.Sdk/BuildConstants.cs + dotnet msbuild \ + -t:GenerateConstant \ + -p:ContinuousIntegrationBuild=true \ + -p:Deterministic=true \ + -p:PackageRuntime="${dotnetCorePackages.systemToDotnetRid stdenv.hostPlatform.system}" \ + -p:RunnerVersion="${version}" \ + src/dir.proj + ''; - # Restore the dependencies - dotnet restore src/ActionsRunner.sln \ - --runtime "${runtimeId}" \ - --source "${dotnetSdk.packages}" \ - --source "${nugetSource}" + nativeBuildInputs = [ + git + which + ] ++ lib.optionals stdenv.isLinux [ + autoPatchelfHook + ] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ + autoSignDarwinBinariesHook + ]; - runHook postConfigure - ''; + buildInputs = [ stdenv.cc.cc.lib ]; - buildPhase = '' - runHook preBuild + dotnet-sdk = dotnetCorePackages.sdk_6_0; + dotnet-runtime = dotnetCorePackages.runtime_6_0; - dotnet msbuild \ - -t:Build \ - -p:PackageRuntime="${runtimeId}" \ - -p:BUILDCONFIG="Release" \ - -p:RunnerVersion="${version}" \ - -p:GitInfoCommitHash="${fakeSha1}" \ - src/dir.proj + dotnetFlags = [ "-p:PackageRuntime=${dotnetCorePackages.systemToDotnetRid stdenv.hostPlatform.system}" ]; - runHook postBuild - ''; + # As given here: https://github.com/actions/runner/blob/0befa62/src/dir.proj#L33-L41 + projectFile = [ + "src/Sdk/Sdk.csproj" + "src/Runner.Common/Runner.Common.csproj" + "src/Runner.Listener/Runner.Listener.csproj" + "src/Runner.Worker/Runner.Worker.csproj" + "src/Runner.PluginHost/Runner.PluginHost.csproj" + "src/Runner.Sdk/Runner.Sdk.csproj" + "src/Runner.Plugins/Runner.Plugins.csproj" + ]; + nugetDeps = ./deps.nix; doCheck = true; @@ -162,30 +117,18 @@ stdenv.mkDerivation rec { "CompositeActionWithActionfile_MaxLimit" "CompositeActionWithActionfile_Node" "DownloadActionFromGraph" - "DownloadActionFromGraph_Legacy" "NotPullOrBuildImagesMultipleTimes" - "NotPullOrBuildImagesMultipleTimes_Legacy" "RepositoryActionWithActionYamlFile_DockerHubImage" - "RepositoryActionWithActionYamlFile_DockerHubImage_Legacy" "RepositoryActionWithActionfileAndDockerfile" - "RepositoryActionWithActionfileAndDockerfile_Legacy" "RepositoryActionWithActionfile_DockerHubImage" - "RepositoryActionWithActionfile_DockerHubImage_Legacy" "RepositoryActionWithActionfile_Dockerfile" - "RepositoryActionWithActionfile_Dockerfile_Legacy" "RepositoryActionWithActionfile_DockerfileRelativePath" - "RepositoryActionWithActionfile_DockerfileRelativePath_Legacy" "RepositoryActionWithActionfile_Node" - "RepositoryActionWithActionfile_Node_Legacy" "RepositoryActionWithDockerfile" - "RepositoryActionWithDockerfile_Legacy" "RepositoryActionWithDockerfileInRelativePath" - "RepositoryActionWithDockerfileInRelativePath_Legacy" "RepositoryActionWithDockerfilePrepareActions_Repository" "RepositoryActionWithInvalidWrapperActionfile_Node" - "RepositoryActionWithInvalidWrapperActionfile_Node_Legacy" "RepositoryActionWithWrapperActionfile_PreSteps" - "RepositoryActionWithWrapperActionfile_PreSteps_Legacy" ] ++ map (x: "GitHub.Runner.Common.Tests.DotnetsdkDownloadScriptL0.${x}") [ "EnsureDotnetsdkBashDownloadScriptUpToDate" @@ -208,156 +151,118 @@ stdenv.mkDerivation rec { "GitHub.Runner.Common.Tests.Worker.WorkerL0.DispatchCancellation" "GitHub.Runner.Common.Tests.Worker.WorkerL0.DispatchRunNewJob" ]; - nativeCheckInputs = [ git ]; - checkPhase = '' - runHook preCheck + testProjectFile = [ "src/Test/Test.csproj" ]; + preCheck = '' mkdir -p _layout/externals ln -s ${nodejs-16_x} _layout/externals/node16 - - printf 'Disabled tests:\n%s\n' '${lib.concatMapStringsSep "\n" (x: " - ${x}") disabledTests}' - - # BUILDCONFIG needs to be "Debug" - dotnet msbuild \ - -t:test \ - -p:PackageRuntime="${runtimeId}" \ - -p:BUILDCONFIG="Debug" \ - -p:RunnerVersion="${version}" \ - -p:GitInfoCommitHash="${fakeSha1}" \ - src/dir.proj - - runHook postCheck ''; - installPhase = '' - runHook preInstall + postInstall = '' + mkdir -p $out/bin - # Copy the built binaries to lib/ instead of bin/ as they - # have to be wrapped in the fixup phase to work - mkdir -p $out/lib - cp -r _layout/bin/. $out/lib/ + install -m755 src/Misc/layoutbin/runsvc.sh $out/lib/github-runner + install -m755 src/Misc/layoutbin/RunnerService.js $out/lib/github-runner + install -m755 src/Misc/layoutroot/run.sh $out/lib/github-runner + install -m755 src/Misc/layoutroot/run-helper.sh.template $out/lib/github-runner/run-helper.sh + install -m755 src/Misc/layoutroot/config.sh $out/lib/github-runner + install -m755 src/Misc/layoutroot/env.sh $out/lib/github-runner - # Delete debugging files - find "$out/lib" -type f -name '*.pdb' -delete + # env.sh is patched to not require any wrapping + ln -sr "$out/lib/github-runner/env.sh" "$out/bin/" - # Install the helper scripts to bin/ to resemble the upstream package - mkdir -p $out/bin - install -m755 src/Misc/layoutbin/runsvc.sh $out/bin/ - install -m755 src/Misc/layoutbin/RunnerService.js $out/lib/ - install -m755 src/Misc/layoutroot/run.sh $out/lib/ - install -m755 src/Misc/layoutroot/run-helper.sh.template $out/lib/run-helper.sh - install -m755 src/Misc/layoutroot/config.sh $out/lib/ - install -m755 src/Misc/layoutroot/env.sh $out/lib/ - - # Rewrite reference in helper scripts from bin/ to lib/ - substituteInPlace $out/lib/run.sh --replace '"$DIR"/bin' '"$DIR"/lib' - substituteInPlace $out/lib/config.sh --replace './bin' $out'/lib' \ - --replace 'source ./env.sh' $out/bin/env.sh + substituteInPlace $out/lib/github-runner/config.sh \ + --replace './bin/Runner.Listener' "$out/bin/Runner.Listener" '' + lib.optionalString stdenv.isLinux '' - # Make binary paths absolute - substituteInPlace $out/lib/config.sh \ - --replace 'ldd' '${glibc.bin}/bin/ldd' \ + substituteInPlace $out/lib/github-runner/config.sh \ + --replace 'command -v ldd' 'command -v ${glibc.bin}/bin/ldd' \ + --replace 'ldd ./bin' '${glibc.bin}/bin/ldd ${dotnet-runtime}/shared/Microsoft.NETCore.App/${dotnet-runtime.version}/' \ --replace '/sbin/ldconfig' '${glibc.bin}/bin/ldconfig' '' + '' # Remove uneeded copy for run-helper template - substituteInPlace $out/lib/run.sh --replace 'cp -f "$DIR"/run-helper.sh.template "$DIR"/run-helper.sh' ' ' - substituteInPlace $out/lib/run-helper.sh --replace '"$DIR"/bin/' '"$DIR"/' + substituteInPlace $out/lib/github-runner/run.sh --replace 'cp -f "$DIR"/run-helper.sh.template "$DIR"/run-helper.sh' ' ' + substituteInPlace $out/lib/github-runner/run-helper.sh --replace '"$DIR"/bin/' '"$DIR"/' # Make paths absolute - substituteInPlace $out/bin/runsvc.sh \ - --replace './externals' "$out/externals" \ - --replace './bin' "$out/lib" + substituteInPlace $out/lib/github-runner/runsvc.sh \ + --replace './externals' "$out/lib/externals" \ + --replace './bin/RunnerService.js' "$out/lib/github-runner/RunnerService.js" - # The upstream package includes Node {12,16} and expects it at the path - # externals/node{12,16}. As opposed to the official releases, we don't + # The upstream package includes Node 16 and expects it at the path + # externals/node16. As opposed to the official releases, we don't # link the Alpine Node flavors. - mkdir -p $out/externals - ln -s ${nodejs-16_x} $out/externals/node16 + mkdir -p $out/lib/externals + ln -s ${nodejs-16_x} $out/lib/externals/node16 # Install Nodejs scripts called from workflows - install -D src/Misc/layoutbin/hashFiles/index.js $out/lib/hashFiles/index.js - mkdir -p $out/lib/checkScripts - install src/Misc/layoutbin/checkScripts/* $out/lib/checkScripts/ + install -D src/Misc/layoutbin/hashFiles/index.js $out/lib/github-runner/hashFiles/index.js + mkdir -p $out/lib/github-runner/checkScripts + install src/Misc/layoutbin/checkScripts/* $out/lib/github-runner/checkScripts/ + '' + lib.optionalString stdenv.isLinux '' + # Wrap explicitly to, e.g., prevent extra entries for LD_LIBRARY_PATH + makeWrapperArgs=() - runHook postInstall + # We don't wrap with libicu + substituteInPlace $out/lib/github-runner/config.sh \ + --replace '$LDCONFIG_COMMAND -NXv ''${libpath//:/ }' 'echo libicu' + '' + '' + # XXX: Using the corresponding Nix argument does not work as expected: + # https://github.com/NixOS/nixpkgs/issues/218449 + # Common wrapper args for `executables` + makeWrapperArgs+=( + --run 'export RUNNER_ROOT="''${RUNNER_ROOT:-"$HOME/.github-runner"}"' + --run 'mkdir -p "$RUNNER_ROOT"' + --chdir "$out" + ) ''; - # Stripping breaks the binaries - dontStrip = true; + # List of files to wrap + executables = [ + "config.sh" + "Runner.Listener" + "Runner.PluginHost" + "Runner.Worker" + "run.sh" + "runsvc.sh" + ]; - preFixup = lib.optionalString stdenv.isLinux '' - patchelf --replace-needed liblttng-ust.so.0 liblttng-ust.so $out/lib/libcoreclrtraceptprovider.so - ''; + doInstallCheck = true; + installCheckPhase = '' + runHook preInstallCheck - postFixup = '' - fix_rpath() { - patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/lib/$1 - } - wrap() { - makeWrapper $out/lib/$1 $out/bin/$1 \ - --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath (buildInputs ++ [ openssl ])} \ - "''${@:2}" - } - '' + lib.optionalString stdenv.isLinux '' - fix_rpath Runner.Listener - fix_rpath Runner.PluginHost - fix_rpath Runner.Worker - '' + '' - wrap Runner.Listener - wrap Runner.PluginHost - wrap Runner.Worker - wrap run.sh --run 'export RUNNER_ROOT=''${RUNNER_ROOT:-$HOME/.github-runner}' - wrap env.sh --run 'cd $RUNNER_ROOT' - - wrap config.sh --run 'export RUNNER_ROOT=''${RUNNER_ROOT:-$HOME/.github-runner}' \ - --run 'mkdir -p $RUNNER_ROOT' \ - --prefix PATH : ${lib.makeBinPath [ stdenv.cc ]} \ - --chdir $out + export RUNNER_ROOT="$TMPDIR" + + $out/bin/config.sh --help >/dev/null + $out/bin/Runner.Listener --help >/dev/null + + version=$($out/bin/Runner.Listener --version) + if [[ "$version" != "${version}" ]]; then + printf 'Unexpected version %s' "$version" + exit 1 + fi + + commit=$($out/bin/Runner.Listener --commit) + if [[ "$commit" != "$(git rev-parse HEAD)" ]]; then + printf 'Unexpected commit %s' "$commit" + exit 1 + fi + + runHook postInstallCheck ''; - # Script to create deps.nix file for dotnet dependencies. Run it with - # $(nix-build -A github-runner.passthru.createDepsFile)/bin/create-deps-file - # - # Default output path is /tmp/${pname}-deps.nix, but can be overridden with cli argument. - # - # Inspired by passthru.fetch-deps in pkgs/build-support/build-dotnet-module/default.nix - passthru.createDepsFile = writeShellApplication { - name = "create-deps-file"; - runtimeInputs = [ coreutils dotnetSdk (nuget-to-nix.override { dotnet-sdk = dotnetSdk; }) ]; - text = '' - # Disable telemetry data - export DOTNET_CLI_TELEMETRY_OPTOUT=1 - - deps_file="$(realpath "''${1:-$(mktemp -t "${pname}-deps-XXXXXX.nix")}")" - - printf "\n* Setup workdir\n" - workdir="$(mktemp -d /tmp/${pname}.XXX)" - HOME="$workdir"/.fake-home - cp -rT "${src}" "$workdir" - chmod -R +w "$workdir" - trap 'rm -rf "$workdir"' EXIT - - pushd "$workdir" - - mkdir nuget_pkgs - - ${lib.concatMapStrings (rid: '' - printf "\n* Restore ${pname} (${rid}) dotnet project\n" - dotnet restore src/ActionsRunner.sln --packages nuget_pkgs --no-cache --force --runtime "${rid}" - '') (lib.attrValues runtimeIds)} - - printf "\n* Make %s file\n" "$(basename "$deps_file")" - nuget-to-nix "$workdir/nuget_pkgs" "${dotnetSdk.packages}" > "$deps_file" - printf "\n* Dependency file writen to %s" "$deps_file" - ''; + passthru = { + tests.smoke-test = nixosTests.github-runner; + updateScript = ./update.sh; }; meta = with lib; { + changelog = "https://github.com/actions/runner/releases/tag/v${version}"; description = "Self-hosted runner for GitHub Actions"; homepage = "https://github.com/actions/runner"; license = licenses.mit; maintainers = with maintainers; [ veehaitch newam kfollesdal aanderse zimbatm ]; - platforms = attrNames runtimeIds; + platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; + sourceProvenance = with sourceTypes; [ binaryNativeCode ]; }; } diff --git a/pkgs/development/tools/continuous-integration/github-runner/deps.nix b/pkgs/development/tools/continuous-integration/github-runner/deps.nix index 8a6fb8de943c..caa00cad9af2 100644 --- a/pkgs/development/tools/continuous-integration/github-runner/deps.nix +++ b/pkgs/development/tools/continuous-integration/github-runner/deps.nix @@ -1,3 +1,6 @@ +# This file was automatically generated by passthru.fetch-deps. +# Please dont edit it manually, your changes might get overwritten! + { fetchNuGet }: [ (fetchNuGet { pname = "Castle.Core"; version = "4.4.0"; sha256 = "0rpcbmyhckvlvp6vbzpj03c1gqz56ixc6f15vgmxmyf1g40c24pf"; }) (fetchNuGet { pname = "Microsoft.AspNet.WebApi.Client"; version = "5.2.4"; sha256 = "00fkczf69z2rwarcd8kjjdp47517a0ca6lggn72qbilsp03a5scj"; }) diff --git a/pkgs/development/tools/continuous-integration/github-runner/patches/dir-proj.patch b/pkgs/development/tools/continuous-integration/github-runner/patches/dir-proj.patch deleted file mode 100644 index a2599afe4471..000000000000 --- a/pkgs/development/tools/continuous-integration/github-runner/patches/dir-proj.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 5a850bb7946ce5c0620ac5f072d93a77cc064219 Mon Sep 17 00:00:00 2001 -From: Aaron Andersen <aaron@fosslib.net> -Date: Thu, 29 Sep 2022 10:12:28 -0400 -Subject: [PATCH] [PATCH] Patch dir.proj - -Don't execute Git for GitInfoCommitHash property -Don't restore for build target -Don't restore for test target ---- - src/dir.proj | 8 ++------ - 1 file changed, 2 insertions(+), 6 deletions(-) - -diff --git a/src/dir.proj b/src/dir.proj -index 056a312..f029720 100644 ---- a/src/dir.proj -+++ b/src/dir.proj -@@ -2,9 +2,6 @@ - <Project ToolsVersion="14.0" DefaultTargets="Build" - xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Target Name="GenerateConstant"> -- <Exec Command="git rev-parse HEAD" ConsoleToMSBuild="true"> -- <Output TaskParameter="ConsoleOutput" PropertyName="GitInfoCommitHash" /> -- </Exec> - <Message Text="Building $(Product): $(GitInfoCommitHash) --- $(PackageRuntime)" Importance="high"/> - - <ItemGroup> -@@ -41,14 +38,13 @@ - </ItemGroup> - - <Target Name="Build" DependsOnTargets="GenerateConstant"> -- <MSBuild Targets="Restore" Projects="@(ProjectFiles)" StopOnFirstFailure="true" /> - <MSBuild Targets="Publish" Projects="@(ProjectFiles)" BuildInParallel="false" StopOnFirstFailure="true" Properties="Configuration=$(BUILDCONFIG);PackageRuntime=$(PackageRuntime);Version=$(RunnerVersion);RuntimeIdentifier=$(PackageRuntime);PublishDir=$(MSBuildProjectDirectory)/../_layout/bin" /> - <Exec Command="%22$(DesktopMSBuild)%22 Runner.Service/Windows/RunnerService.csproj /p:Configuration=$(BUILDCONFIG) /p:PackageRuntime=$(PackageRuntime) /p:OutputPath=%22$(MSBuildProjectDirectory)/../_layout/bin%22" ConsoleToMSBuild="true" Condition="'$(PackageRuntime)' == 'win-x64' Or '$(PackageRuntime)' == 'win-x86' Or '$(PackageRuntime)' == 'win-arm64'" /> - </Target> - - <Target Name="Test" DependsOnTargets="GenerateConstant"> -- <Exec Command="dotnet build Test/Test.csproj -c $(BUILDCONFIG) /p:PackageRuntime=$(PackageRuntime)" ConsoleToMSBuild="true" /> -- <Exec Command="dotnet test Test/Test.csproj -c $(BUILDCONFIG) --no-build --logger:trx" ConsoleToMSBuild="true" /> -+ <Exec Command="dotnet build Test/Test.csproj --no-restore -c $(BUILDCONFIG) /p:PackageRuntime=$(PackageRuntime)" ConsoleToMSBuild="true" /> -+ <Exec Command="dotnet test Test/Test.csproj --no-restore -c $(BUILDCONFIG) --no-build --logger:trx" ConsoleToMSBuild="true" /> - </Target> - - <Target Name="Layout" DependsOnTargets="Clean;Build"> --- -2.36.2 diff --git a/pkgs/development/tools/continuous-integration/github-runner/patches/dont-install-systemd-service.patch b/pkgs/development/tools/continuous-integration/github-runner/patches/dont-install-service.patch index 6279a4ecb4b9..5590fa3df027 100644 --- a/pkgs/development/tools/continuous-integration/github-runner/patches/dont-install-systemd-service.patch +++ b/pkgs/development/tools/continuous-integration/github-runner/patches/dont-install-service.patch @@ -1,11 +1,21 @@ +From 369b3d98b44abbf061080ab1b17b22f99706ef69 Mon Sep 17 00:00:00 2001 +From: Vincent Haupert <mail@vincent-haupert.de> +Date: Sun, 26 Feb 2023 12:55:38 +0100 +Subject: [PATCH] Don't generate service config on Linux and OSX + +--- + src/Runner.Listener/Configuration/ConfigurationManager.cs | 5 ----- + 1 file changed, 5 deletions(-) + diff --git a/src/Runner.Listener/Configuration/ConfigurationManager.cs b/src/Runner.Listener/Configuration/ConfigurationManager.cs -index 8d08b06..bdfa3a2 100644 +index 392eb0e..4c75324 100644 --- a/src/Runner.Listener/Configuration/ConfigurationManager.cs +++ b/src/Runner.Listener/Configuration/ConfigurationManager.cs -@@ -320,10 +320,6 @@ namespace GitHub.Runner.Listener.Configuration +@@ -367,11 +367,6 @@ namespace GitHub.Runner.Listener.Configuration + var serviceControlManager = HostContext.GetService<IWindowsServiceControlManager>(); serviceControlManager.ConfigureService(runnerSettings, command); } - +- -#elif OS_LINUX || OS_OSX - // generate service config script for OSX and Linux, GenerateScripts() will no-opt on windows. - var serviceControlManager = HostContext.GetService<ILinuxServiceControlManager>(); @@ -13,3 +23,6 @@ index 8d08b06..bdfa3a2 100644 #endif } +-- +2.38.1 + diff --git a/pkgs/development/tools/continuous-integration/github-runner/patches/env-sh-use-runner-root.patch b/pkgs/development/tools/continuous-integration/github-runner/patches/env-sh-use-runner-root.patch new file mode 100644 index 000000000000..d87e00d0f349 --- /dev/null +++ b/pkgs/development/tools/continuous-integration/github-runner/patches/env-sh-use-runner-root.patch @@ -0,0 +1,76 @@ +From 84b2fcdf042771ae8adc0f59f1a3ecd9788a808d Mon Sep 17 00:00:00 2001 +From: Vincent Haupert <mail@vincent-haupert.de> +Date: Sun, 26 Feb 2023 11:37:01 +0100 +Subject: [PATCH] Access `.env` and `.path` relative to `$RUNNER_ROOT`, if set + +--- + src/Misc/layoutbin/runsvc.sh | 4 ++-- + src/Misc/layoutroot/env.sh | 10 +++++----- + src/Runner.Listener/Program.cs | 2 +- + 3 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/src/Misc/layoutbin/runsvc.sh b/src/Misc/layoutbin/runsvc.sh +index c135645..bb0fbf6 100755 +--- a/src/Misc/layoutbin/runsvc.sh ++++ b/src/Misc/layoutbin/runsvc.sh +@@ -4,9 +4,9 @@ + # for more info on how to propagate SIGTERM to a child process see: http://veithen.github.io/2014/11/16/sigterm-propagation.html + trap 'kill -INT $PID' TERM INT + +-if [ -f ".path" ]; then ++if [ -f "${RUNNER_ROOT:-"."}/.path" ]; then + # configure +- export PATH=`cat .path` ++ export PATH=`cat "${RUNNER_ROOT:-"."}/.path"` + echo ".path=${PATH}" + fi + +diff --git a/src/Misc/layoutroot/env.sh b/src/Misc/layoutroot/env.sh +index 641d244..85379bf 100755 +--- a/src/Misc/layoutroot/env.sh ++++ b/src/Misc/layoutroot/env.sh +@@ -16,10 +16,10 @@ varCheckList=( + + envContents="" + +-if [ -f ".env" ]; then +- envContents=`cat .env` ++if [ -f "${RUNNER_ROOT:-"."}/.env" ]; then ++ envContents=`cat "${RUNNER_ROOT:-"."}/.env"` + else +- touch .env ++ touch "${RUNNER_ROOT:-"."}/.env" + fi + + function writeVar() +@@ -29,12 +29,12 @@ function writeVar() + if test "${envContents#*$checkDelim}" = "$envContents" + then + if [ ! -z "${!checkVar}" ]; then +- echo "${checkVar}=${!checkVar}">>.env ++ echo "${checkVar}=${!checkVar}">>"${RUNNER_ROOT:-"."}/.env" + fi + fi + } + +-echo $PATH>.path ++echo $PATH>"${RUNNER_ROOT:-"."}/.path" + + for var_name in ${varCheckList[@]} + do +diff --git a/src/Runner.Listener/Program.cs b/src/Runner.Listener/Program.cs +index d4d5e43..beacc9d 100644 +--- a/src/Runner.Listener/Program.cs ++++ b/src/Runner.Listener/Program.cs +@@ -148,7 +148,7 @@ namespace GitHub.Runner.Listener + private static void LoadAndSetEnv() + { + var binDir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); +- var rootDir = new DirectoryInfo(binDir).Parent.FullName; ++ var rootDir = Environment.GetEnvironmentVariable("RUNNER_ROOT") ?? new DirectoryInfo(binDir).Parent.FullName; + string envFile = Path.Combine(rootDir, ".env"); + if (File.Exists(envFile)) + { +-- +2.38.1 + diff --git a/pkgs/development/tools/continuous-integration/github-runner/update.sh b/pkgs/development/tools/continuous-integration/github-runner/update.sh new file mode 100755 index 000000000000..3ebbfa9f507c --- /dev/null +++ b/pkgs/development/tools/continuous-integration/github-runner/update.sh @@ -0,0 +1,19 @@ +#! /usr/bin/env nix-shell +#! nix-shell -I nixpkgs=./. -i bash -p coreutils common-updater-scripts jq curl + +set -euo pipefail + +currentVersion="$(nix --extra-experimental-features nix-command eval -f . github-runner.version --raw)" +latestVersion="$(curl -s -H "Accept: application/vnd.github.v3+json" \ + ${GITHUB_TOKEN:+ -H "Authorization: bearer $GITHUB_TOKEN"} \ + "https://api.github.com/repos/actions/runner/releases/latest" | jq -r ".tag_name")" +latestVersion="${latestVersion#?}" # v2.296.2 -> 2.296.2 + +if [[ "$latestVersion" == "$currentVersion" ]]; then + echo "github-runner is already up to date: $currentVersion" + exit +fi + +update-source-version github-runner "$latestVersion" +$(nix-build -A github-runner.fetch-deps --no-out-link) "$(dirname "$BASH_SOURCE")/deps.nix" + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 850e639276f5..8c6da5ced7c4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -29748,6 +29748,7 @@ with pkgs; dlm = callPackage ../applications/display-managers/greetd/dlm.nix { }; greetd = callPackage ../applications/display-managers/greetd { }; gtkgreet = callPackage ../applications/display-managers/greetd/gtkgreet.nix { }; + regreet = callPackage ../applications/display-managers/greetd/regreet.nix { }; tuigreet = callPackage ../applications/display-managers/greetd/tuigreet.nix { }; wlgreet = callPackage ../applications/display-managers/greetd/wlgreet.nix { }; }; |