···7788on:
99 schedule:
1010- - cron: '37 * * * *'
1010+ - cron: '07,17,27,37,47,57 * * * *'
1111 workflow_call:
1212 workflow_dispatch:
1313 inputs:
···3636 labels:
3737 name: label-pr
3838 runs-on: ubuntu-24.04-arm
3939- if: "!contains(github.event.pull_request.title, '[skip treewide]')"
3939+ if: github.event_name != 'schedule' || github.repository_owner == 'NixOS'
4040 steps:
4141 - name: Install dependencies
4242 run: npm install @actions/artifact
···105105106106 log('Last updated at', pull_request.updated_at)
107107 if (new Date(pull_request.updated_at) < cutoff) return done()
108108+ log('URL', pull_request.html_url)
108109109110 const run_id = (await github.rest.actions.listWorkflowRuns({
110111 ...context.repo,
···118119119120 // Newer PRs might not have run Eval to completion, yet. We can skip them, because this
120121 // job will be run as part of that Eval run anyway.
121121- log('Last eval run', run_id)
122122+ log('Last eval run', run_id ?? '<pending>')
122123 if (!run_id) return;
123124124125 const artifact = (await github.rest.actions.listWorkflowRunArtifacts({
···129130130131 // Instead of checking the boolean artifact.expired, we will give us a minute to
131132 // actually download the artifact in the next step and avoid that race condition.
132132- log('Artifact expires at', artifact.expires_at)
133133- if (new Date(artifact.expires_at) < new Date(new Date().getTime() + 60 * 1000)) return;
133133+ // Older PRs, where the workflow run was already eval.yml, but the artifact was not
134134+ // called "comparison", yet, will be skipped as well.
135135+ log('Artifact expires at', artifact?.expires_at ?? '<not found>')
136136+ if (new Date(artifact?.expires_at ?? 0) < new Date(new Date().getTime() + 60 * 1000)) return;
134137135138 await artifactClient.downloadArtifact(artifact.id, {
136139 findBy: {
···163166164167 const maintainers = new Set(Object.keys(
165168 JSON.parse(await readFile(`${pull_request.number}/maintainers.json`, 'utf-8'))
166166- ))
169169+ ).map(m => Number.parseInt(m, 10)))
167170168171 // And the labels that should be there
169172 const after = JSON.parse(await readFile(`${pull_request.number}/changed-paths.json`, 'utf-8')).labels
···2121 services.postgresql.package = pkgs.postgresql_15;
2222}
2323```
2424-Note that you are required to specify the desired version of PostgreSQL (e.g. `pkgs.postgresql_15`). Since upgrading your PostgreSQL version requires a database dump and reload (see below), NixOS cannot provide a default value for [](#opt-services.postgresql.package) such as the most recent release of PostgreSQL.
2424+2525+The default PostgreSQL version is approximately the latest major version available on the NixOS release matching your [`system.stateVersion`](#opt-system.stateVersion).
2626+This is because PostgreSQL upgrades require a manual migration process (see below).
2727+Hence, upgrades must happen by setting [`services.postgresql.package`](#opt-services.postgresql.package) explicitly.
25282629<!--
2730After running {command}`nixos-rebuild`, you can verify
+17-2
nixos/modules/services/databases/postgresql.nix
···120120121121 enableJIT = mkEnableOption "JIT support";
122122123123- package = mkPackageOption pkgs "postgresql" {
124124- example = "postgresql_15";
123123+ package = mkOption {
124124+ type = types.package;
125125+ example = literalExpression "pkgs.postgresql_15";
126126+ defaultText = literalExpression ''
127127+ if versionAtLeast config.system.stateVersion "24.11" then
128128+ pkgs.postgresql_16
129129+ else if versionAtLeast config.system.stateVersion "23.11" then
130130+ pkgs.postgresql_15
131131+ else if versionAtLeast config.system.stateVersion "22.05" then
132132+ pkgs.postgresql_14
133133+ else
134134+ pkgs.postgresql_13
135135+ '';
136136+ description = ''
137137+ The package being used by postgresql.
138138+ '';
125139 };
126140127141 finalPackage = mkOption {
···656670 See also https://endoflife.date/postgresql
657671 '';
658672 base =
673673+ # XXX Don't forget to keep `defaultText` of `services.postgresql.package` up to date!
659674 if versionAtLeast config.system.stateVersion "24.11" then
660675 pkgs.postgresql_16
661676 else if versionAtLeast config.system.stateVersion "23.11" then
+33-8
nixos/modules/services/misc/renovate.nix
···6161 };
6262 default = { };
6363 };
6464+ environment = mkOption {
6565+ type =
6666+ with types;
6767+ attrsOf (
6868+ nullOr (oneOf [
6969+ str
7070+ path
7171+ package
7272+ ])
7373+ );
7474+ description = ''
7575+ Extra environment variables to export to the Renovate process
7676+ from the systemd unit configuration.
7777+7878+ See https://docs.renovatebot.com/config-overview for available environment variables.
7979+ '';
8080+ example = {
8181+ LOG_LEVEL = "debug";
8282+ };
8383+ default = { };
8484+ };
6485 runtimePackages = mkOption {
6586 type = with types; listOf package;
6687 description = "Packages available to renovate.";
···82103 description = ''
83104 Renovate's global configuration.
84105 If you want to pass secrets to renovate, please use {option}`services.renovate.credentials` for that.
106106+107107+ See https://docs.renovatebot.com/config-overview for available settings.
85108 '';
86109 };
87110 };
8811189112 config = mkIf cfg.enable {
9090- services.renovate.settings = {
9191- cacheDir = "/var/cache/renovate";
9292- baseDir = "/var/lib/renovate";
113113+ services.renovate = {
114114+ settings = {
115115+ cacheDir = "/var/cache/renovate";
116116+ baseDir = "/var/lib/renovate";
117117+ };
118118+ environment = {
119119+ RENOVATE_CONFIG_FILE = generateConfig "renovate-config.json" cfg.settings;
120120+ HOME = "/var/lib/renovate";
121121+ };
93122 };
9412395124 systemd.services.renovate = {
···101130 config.systemd.package
102131 pkgs.git
103132 ] ++ cfg.runtimePackages;
133133+ inherit (cfg) environment;
104134105135 serviceConfig = {
106136 User = "renovate";
···145175 )}
146176 exec ${lib.escapeShellArg (lib.getExe cfg.package)}
147177 '';
148148-149149- environment = {
150150- RENOVATE_CONFIG_FILE = generateConfig "renovate-config.json" cfg.settings;
151151- HOME = "/var/lib/renovate";
152152- };
153178 };
154179 };
155180}
-1
nixos/tests/mongodb.nix
···1212{
1313 name = "mongodb";
1414 meta.maintainers = with pkgs.lib.maintainers; [
1515- bluescreen303
1615 offline
1716 phile314
1817 niklaskorz
···2828in
2929stdenv.mkDerivation rec {
3030 pname = "clightning";
3131- version = "25.02.2";
3131+ version = "25.05";
32323333 src = fetchurl {
3434 url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
3535- hash = "sha256-2wp9o1paWJWfxIvm9BDnsKX3GDUXKaPkpB89cwb6Oj8=";
3535+ hash = "sha256-ANYzpjVw9kGdsNvXW1A7sEug9utGmJTab87SqJSdgAc=";
3636 };
37373838 # when building on darwin we need cctools to provide the correct libtool
···2222 zlib,
2323}:
24242525-stdenv.mkDerivation rec {
2525+stdenv.mkDerivation (finalAttrs: rec {
2626 pname = "ida-free";
2727 version = "9.1";
2828···84848585 # IDA depends on quite some things extracted by the runfile, so first extract everything
8686 # into $out/opt, then remove the unnecessary files and directories.
8787- IDADIR=$out/opt
8787+ IDADIR=$out/opt/${finalAttrs.pname}-${finalAttrs.version}
88888989 # The installer doesn't honor `--prefix` in all places,
9090 # thus needing to set `HOME` here.
···127127 platforms = [ "x86_64-linux" ]; # Right now, the installation script only supports Linux.
128128 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
129129 };
130130-}
130130+})