From 561dba95286e9bfa1621568cba3fd60eb819bf58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= Date: Tue, 10 Sep 2024 09:39:16 +0200 Subject: [PATCH] switch to lix --- config/nix.nix | 1 - config/services/hydra.nix | 14 +- .../services/hydra/0001-add-gitea-pulls.patch | 77 ++++ .../services/hydra/0002-unrestrict-eval.patch | 27 ++ .../services/hydra/0003-unlimit-output.patch | 28 ++ ...emove-pr-number-from-github-job-name.patch | 65 +++ .../0005-use-pulls-instead-of-issues.patch | 25 ++ .../hydra/0006-only-list-open-prs.patch | 25 ++ config/services/hydra/0007-status-state.patch | 28 ++ flake.lock | 420 ++++++++++-------- flake.nix | 67 ++- 11 files changed, 579 insertions(+), 198 deletions(-) create mode 100644 config/services/hydra/0001-add-gitea-pulls.patch create mode 100644 config/services/hydra/0002-unrestrict-eval.patch create mode 100644 config/services/hydra/0003-unlimit-output.patch create mode 100644 config/services/hydra/0004-remove-pr-number-from-github-job-name.patch create mode 100644 config/services/hydra/0005-use-pulls-instead-of-issues.patch create mode 100644 config/services/hydra/0006-only-list-open-prs.patch create mode 100644 config/services/hydra/0007-status-state.patch diff --git a/config/nix.nix b/config/nix.nix index f6b83098..e976064f 100644 --- a/config/nix.nix +++ b/config/nix.nix @@ -11,7 +11,6 @@ ]; nixpkgs.config.allowUnfree = true; nix = { - package = pkgs.nixVersions.latest; settings = { sandbox = true; trusted-users = ["@wheel" "remote-build"]; diff --git a/config/services/hydra.nix b/config/services/hydra.nix index 95993f1e..bf88581a 100644 --- a/config/services/hydra.nix +++ b/config/services/hydra.nix @@ -56,9 +56,21 @@ in { ]; services.hydra = { enable = true; - package = hydra.packages.${system}.hydra.overrideAttrs (_: { + package = hydra.packages.${system}.hydra.overrideAttrs (super: { doCheck = false; doInstallCheck = false; + patches = + super.patches + or [] + ++ [ + ./hydra/0001-add-gitea-pulls.patch + ./hydra/0002-unrestrict-eval.patch + ./hydra/0003-unlimit-output.patch + ./hydra/0004-remove-pr-number-from-github-job-name.patch + ./hydra/0005-use-pulls-instead-of-issues.patch + ./hydra/0006-only-list-open-prs.patch + ./hydra/0007-status-state.patch + ]; }); hydraURL = "https://hydra.chir.rs/"; notificationSender = "hydra@chir.rs"; diff --git a/config/services/hydra/0001-add-gitea-pulls.patch b/config/services/hydra/0001-add-gitea-pulls.patch new file mode 100644 index 00000000..9cf8ef31 --- /dev/null +++ b/config/services/hydra/0001-add-gitea-pulls.patch @@ -0,0 +1,77 @@ +From 485657f5162cf063a8a6584255e9439b3f1686df Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= +Date: Wed, 4 Sep 2024 08:33:46 +0200 +Subject: [PATCH 1/8] add gitea pulls + +--- + src/lib/Hydra/Plugin/GiteaPulls.pm | 58 ++++++++++++++++++++++++++++++ + 1 file changed, 58 insertions(+) + create mode 100644 src/lib/Hydra/Plugin/GiteaPulls.pm + +diff --git a/src/lib/Hydra/Plugin/GiteaPulls.pm b/src/lib/Hydra/Plugin/GiteaPulls.pm +new file mode 100644 +index 00000000..dda50f8d +--- /dev/null ++++ b/src/lib/Hydra/Plugin/GiteaPulls.pm +@@ -0,0 +1,58 @@ ++package Hydra::Plugin::GiteaPulls; ++ ++use strict; ++use warnings; ++use parent 'Hydra::Plugin'; ++use HTTP::Request; ++use LWP::UserAgent; ++use JSON::MaybeXS; ++use Hydra::Helper::CatalystUtils; ++use File::Temp; ++use POSIX qw(strftime); ++ ++sub supportedInputTypes { ++ my ($self, $inputTypes) = @_; ++ $inputTypes->{'giteapulls'} = 'Open Gitea Pull Requests'; ++} ++ ++sub _iterate { ++ my ($url, $page, $auth, $pulls, $ua) = @_; ++ my $req = HTTP::Request->new('GET', "$url&page=$page"); ++ $req->header('Accept' => 'application/json'); ++ $req->header('Authorization' => $auth) if defined $auth; ++ my $res = $ua->request($req); ++ my $content = $res->decoded_content; ++ die "Error pulling from the gitea pulls API: $content\n" ++ unless $res->is_success; ++ my $pulls_list = decode_json $content; ++ # TODO Stream out the json instead ++ foreach my $pull (@$pulls_list) { ++ $pulls->{$pull->{number}} = $pull; ++ } ++ _iterate($url, $page + 1, $auth, $pulls, $ua) unless !@$pulls_list; ++} ++ ++sub fetchInput { ++ my ($self, $type, $name, $value, $project, $jobset) = @_; ++ return undef if $type ne "giteapulls"; ++ # TODO Allow filtering of some kind here? ++ (my $domain, my $owner, my $repo) = split ' ', $value; ++ my $auth = $self->{config}->{gitea_authorization}->{$owner}; ++ my %pulls; ++ my $ua = LWP::UserAgent->new(); ++ _iterate("https://$domain/api/v1/repos/$owner/$repo/issues?types=pulls&per_page=100", 1, $auth, \%pulls, $ua); ++ my $tempdir = File::Temp->newdir("gitea-pulls" . "XXXXX", TMPDIR => 1); ++ my $filename = "$tempdir/gitea-pulls.json"; ++ ++ open(my $fh, ">", $filename) or die "Cannot open $filename for writing: $!"; ++ print $fh JSON->new->utf8->canonical->encode(\%pulls); ++ close $fh; ++ ++ my $storePath = trim(`nix-store --add "$filename"` ++ or die "cannot copy path $filename to the Nix store.\n"); ++ chomp $storePath; ++ my $timestamp = time; ++ return { storePath => $storePath, revision => strftime "%Y%m%d%H%M%S", gmtime($timestamp) }; ++} ++ ++1; +-- +2.46.0 + diff --git a/config/services/hydra/0002-unrestrict-eval.patch b/config/services/hydra/0002-unrestrict-eval.patch new file mode 100644 index 00000000..a44ab185 --- /dev/null +++ b/config/services/hydra/0002-unrestrict-eval.patch @@ -0,0 +1,27 @@ +From 97e90672d88b5d9fd1d424d3360a36d3763efcc3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= +Date: Sat, 23 Dec 2023 10:43:51 +0100 +Subject: [PATCH 2/8] unrestrict eval + +--- + src/hydra-eval-jobs/hydra-eval-jobs.cc | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/hydra-eval-jobs/hydra-eval-jobs.cc b/src/hydra-eval-jobs/hydra-eval-jobs.cc +index 5adea42b..1b71dddd 100644 +--- a/src/hydra-eval-jobs/hydra-eval-jobs.cc ++++ b/src/hydra-eval-jobs/hydra-eval-jobs.cc +@@ -321,10 +321,6 @@ int main(int argc, char * * argv) + /* FIXME: The build hook in conjunction with import-from-derivation is causing "unexpected EOF" during eval */ + settings.builders = ""; + +- /* Prevent access to paths outside of the Nix search path and +- to the environment. */ +- evalSettings.restrictEval = true; +- + /* When building a flake, use pure evaluation (no access to + 'getEnv', 'currentSystem' etc. */ + evalSettings.pureEval = pureEval; +-- +2.46.0 + diff --git a/config/services/hydra/0003-unlimit-output.patch b/config/services/hydra/0003-unlimit-output.patch new file mode 100644 index 00000000..e8559340 --- /dev/null +++ b/config/services/hydra/0003-unlimit-output.patch @@ -0,0 +1,28 @@ +From bb1a768327582fda0abd28b7272bb03bc8cbdeed Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= +Date: Wed, 4 Sep 2024 09:52:45 +0200 +Subject: [PATCH 3/8] unlimit output + +--- + src/hydra-queue-runner/build-remote.cc | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/src/hydra-queue-runner/build-remote.cc b/src/hydra-queue-runner/build-remote.cc +index 1cabd291..ed737df9 100644 +--- a/src/hydra-queue-runner/build-remote.cc ++++ b/src/hydra-queue-runner/build-remote.cc +@@ -566,11 +566,6 @@ void State::buildRemote(ref destStore, + size_t totalNarSize = 0; + auto infos = build_remote::queryPathInfos(conn, *localStore, outputs, totalNarSize); + +- if (totalNarSize > maxOutputSize) { +- result.stepStatus = bsNarSizeLimitExceeded; +- return; +- } +- + /* Copy each path. */ + printMsg(lvlDebug, "copying outputs of ā€˜%sā€™ from ā€˜%sā€™ (%d bytes)", + localStore->printStorePath(step->drvPath), machine->sshName, totalNarSize); +-- +2.46.0 + diff --git a/config/services/hydra/0004-remove-pr-number-from-github-job-name.patch b/config/services/hydra/0004-remove-pr-number-from-github-job-name.patch new file mode 100644 index 00000000..46ee3710 --- /dev/null +++ b/config/services/hydra/0004-remove-pr-number-from-github-job-name.patch @@ -0,0 +1,65 @@ +From b9622a0dcd4de4e44df4fa8dded0b8c25226c7a5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= +Date: Wed, 4 Sep 2024 09:54:13 +0200 +Subject: [PATCH 4/8] remove pr number from github job name + +--- + src/lib/Hydra/Plugin/GithubStatus.pm | 26 +++++++++++--------------- + 1 file changed, 11 insertions(+), 15 deletions(-) + +diff --git a/src/lib/Hydra/Plugin/GithubStatus.pm b/src/lib/Hydra/Plugin/GithubStatus.pm +index fe791533..075301fd 100644 +--- a/src/lib/Hydra/Plugin/GithubStatus.pm ++++ b/src/lib/Hydra/Plugin/GithubStatus.pm +@@ -38,15 +38,14 @@ sub common { + my $ua = LWP::UserAgent->new(); + + foreach my $conf (@config) { +- next unless $jobName =~ /^$conf->{jobs}$/; + # Don't send out "pending" status updates if the build is already finished + next if !$finished && $build->finished == 1; + +- my $contextTrailer = $conf->{excludeBuildFromContext} ? "" : (":" . $build->id); +- my $github_job_name = $jobName =~ s/-pr-\d+//r; ++ my $contextTrailer = ""; ++ my $github_job_name = $jobName =~ s/-?pr-?\d+//r; + my $extendedContext = $conf->{context} // "continuous-integration/hydra:" . $jobName . $contextTrailer; + my $shortContext = $conf->{context} // "ci/hydra:" . $github_job_name . $contextTrailer; +- my $context = $conf->{useShortContext} ? $shortContext : $extendedContext; ++ my $context = $shortContext; + my $body = encode_json( + { + state => $finished ? toGithubState($build->buildstatus) : "pending", +@@ -103,17 +102,13 @@ sub common { + print STDERR "Can't parse flake, skipping GitHub status update\n"; + } + } else { +- foreach my $input (@inputs) { +- my $i = $eval->jobsetevalinputs->find({ name => $input, altnr => 0 }); +- if (! defined $i) { +- print STDERR "Evaluation $eval doesn't have input $input\n"; +- } +- next unless defined $i; +- my $uri = $i->uri; +- my $rev = $i->revision; +- $uri =~ m![:/]([^/]+)/([^/]+?)(?:.git)?$!; +- $sendStatus->($input, $1, $2, $rev); +- } ++ next unless defined ($eval->jobsetevalinputs->find({ name => "github_input" })); ++ my $input = $eval->jobsetevalinputs->find({ name => "github_input" })->value; ++ my $repoOwner = $eval->jobsetevalinputs->find({ name => "github_repo_owner" })->value; ++ my $repoName = $eval->jobsetevalinputs->find({ name => "github_repo_name" })->value; ++ my $i = $eval->jobsetevalinputs->find({ name => $input, altnr => 0 }); ++ my $rev = $i->revision; ++ $sendStatus->($input, $repoOwner, $repoName, $rev); + } + } + } +@@ -143,3 +138,4 @@ sub cachedBuildFinished { + } + + 1; ++ +-- +2.46.0 + diff --git a/config/services/hydra/0005-use-pulls-instead-of-issues.patch b/config/services/hydra/0005-use-pulls-instead-of-issues.patch new file mode 100644 index 00000000..0e25759d --- /dev/null +++ b/config/services/hydra/0005-use-pulls-instead-of-issues.patch @@ -0,0 +1,25 @@ +From dfb85165f6f4c312a7521564100c6a4166645f32 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= +Date: Wed, 4 Sep 2024 10:19:35 +0200 +Subject: [PATCH 5/8] use pulls instead of issues + +--- + src/lib/Hydra/Plugin/GiteaPulls.pm | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lib/Hydra/Plugin/GiteaPulls.pm b/src/lib/Hydra/Plugin/GiteaPulls.pm +index dda50f8d..48ae6e34 100644 +--- a/src/lib/Hydra/Plugin/GiteaPulls.pm ++++ b/src/lib/Hydra/Plugin/GiteaPulls.pm +@@ -40,7 +40,7 @@ sub fetchInput { + my $auth = $self->{config}->{gitea_authorization}->{$owner}; + my %pulls; + my $ua = LWP::UserAgent->new(); +- _iterate("https://$domain/api/v1/repos/$owner/$repo/issues?types=pulls&per_page=100", 1, $auth, \%pulls, $ua); ++ _iterate("https://$domain/api/v1/repos/$owner/$repo/pulls?types=pulls&per_page=100", 1, $auth, \%pulls, $ua); + my $tempdir = File::Temp->newdir("gitea-pulls" . "XXXXX", TMPDIR => 1); + my $filename = "$tempdir/gitea-pulls.json"; + +-- +2.46.0 + diff --git a/config/services/hydra/0006-only-list-open-prs.patch b/config/services/hydra/0006-only-list-open-prs.patch new file mode 100644 index 00000000..4a4367d6 --- /dev/null +++ b/config/services/hydra/0006-only-list-open-prs.patch @@ -0,0 +1,25 @@ +From 2ddff52ddaae5cf301112581589ddc6df968d2f9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= +Date: Wed, 4 Sep 2024 10:20:22 +0200 +Subject: [PATCH 6/8] only list open prs + +--- + src/lib/Hydra/Plugin/GiteaPulls.pm | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lib/Hydra/Plugin/GiteaPulls.pm b/src/lib/Hydra/Plugin/GiteaPulls.pm +index 48ae6e34..70e88861 100644 +--- a/src/lib/Hydra/Plugin/GiteaPulls.pm ++++ b/src/lib/Hydra/Plugin/GiteaPulls.pm +@@ -40,7 +40,7 @@ sub fetchInput { + my $auth = $self->{config}->{gitea_authorization}->{$owner}; + my %pulls; + my $ua = LWP::UserAgent->new(); +- _iterate("https://$domain/api/v1/repos/$owner/$repo/pulls?types=pulls&per_page=100", 1, $auth, \%pulls, $ua); ++ _iterate("https://$domain/api/v1/repos/$owner/$repo/pulls?status=open&per_page=100", 1, $auth, \%pulls, $ua); + my $tempdir = File::Temp->newdir("gitea-pulls" . "XXXXX", TMPDIR => 1); + my $filename = "$tempdir/gitea-pulls.json"; + +-- +2.46.0 + diff --git a/config/services/hydra/0007-status-state.patch b/config/services/hydra/0007-status-state.patch new file mode 100644 index 00000000..b902bc71 --- /dev/null +++ b/config/services/hydra/0007-status-state.patch @@ -0,0 +1,28 @@ +From 7f2197d5dbe5a576dc5e0478eac08a7bea84f018 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Charlotte=20=F0=9F=A6=9D=20Delenk?= +Date: Wed, 4 Sep 2024 10:21:14 +0200 +Subject: [PATCH 7/8] =?UTF-8?q?status=20=E2=86=92=20state?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + src/lib/Hydra/Plugin/GiteaPulls.pm | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/lib/Hydra/Plugin/GiteaPulls.pm b/src/lib/Hydra/Plugin/GiteaPulls.pm +index 70e88861..3b91fe8c 100644 +--- a/src/lib/Hydra/Plugin/GiteaPulls.pm ++++ b/src/lib/Hydra/Plugin/GiteaPulls.pm +@@ -40,7 +40,7 @@ sub fetchInput { + my $auth = $self->{config}->{gitea_authorization}->{$owner}; + my %pulls; + my $ua = LWP::UserAgent->new(); +- _iterate("https://$domain/api/v1/repos/$owner/$repo/pulls?status=open&per_page=100", 1, $auth, \%pulls, $ua); ++ _iterate("https://$domain/api/v1/repos/$owner/$repo/pulls?state=open&per_page=100", 1, $auth, \%pulls, $ua); + my $tempdir = File::Temp->newdir("gitea-pulls" . "XXXXX", TMPDIR => 1); + my $filename = "$tempdir/gitea-pulls.json"; + +-- +2.46.0 + diff --git a/flake.lock b/flake.lock index 1f20561e..8040f0e7 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,15 @@ "devshell": [ "devshell" ], - "flake-compat": "flake-compat", + "flake-compat": [ + "flake-compat" + ], "flake-parts": [ "flake-parts" ], - "nixpkgs": "nixpkgs" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { "lastModified": 1719818359, @@ -30,7 +34,9 @@ "devshell": [ "devshell" ], - "flake-compat": "flake-compat_2", + "flake-compat": [ + "flake-compat" + ], "flake-parts": [ "flake-parts" ], @@ -57,7 +63,9 @@ "devshell": [ "devshell" ], - "flake-compat": "flake-compat_3", + "flake-compat": [ + "flake-compat" + ], "flake-parts": [ "flake-parts" ], @@ -243,51 +251,6 @@ } }, "flake-compat": { - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_2": { - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_3": { - "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, - "flake-compat_4": { "flake": false, "locked": { "lastModified": 1696426674, @@ -303,22 +266,6 @@ "type": "github" } }, - "flake-compat_5": { - "flake": false, - "locked": { - "lastModified": 1673956053, - "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -339,28 +286,6 @@ "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "hydra", - "nix", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1712014858, - "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "flake-utils": { "inputs": { "systems": [ @@ -381,18 +306,38 @@ "type": "github" } }, - "flake-utils_2": { + "flakey-profile": { "locked": { - "lastModified": 1667395993, - "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "lastModified": 1712898590, + "narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=", + "owner": "lf-", + "repo": "flakey-profile", + "rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "owner": "lf-", + "repo": "flakey-profile", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", "type": "github" } }, @@ -441,21 +386,28 @@ }, "hydra": { "inputs": { - "nix": "nix", - "nixpkgs": "nixpkgs_2" + "lix": [ + "lix" + ], + "nix-eval-jobs": [ + "nix-eval-jobs" + ], + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1725467329, - "narHash": "sha256-hBdmRMlsqPQt9is1gWyPmhEV+faskFl8IcMtA21szCY=", - "owner": "DarkKirb", - "repo": "hydra", - "rev": "bc0aeb9a40ba566473b4b1e90f557d2d42072601", - "type": "github" + "lastModified": 1725317763, + "narHash": "sha256-NofyYPdyo1kKoaOKAI2RE5YmO4XgejuB7nEXKKTi8FQ=", + "ref": "refs/heads/main", + "rev": "ac37e44982802bc6a5558a1de381f7106b25449f", + "revCount": 4213, + "type": "git", + "url": "https://git.lix.systems/lix-project/hydra" }, "original": { - "owner": "DarkKirb", - "repo": "hydra", - "type": "github" + "type": "git", + "url": "https://git.lix.systems/lix-project/hydra" } }, "impermanence": { @@ -496,20 +448,63 @@ "type": "github" } }, - "libgit2": { - "flake": false, + "lix": { + "inputs": { + "flake-compat": [ + "flake-compat" + ], + "nix2container": [ + "nix2container" + ], + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-regression": "nixpkgs-regression", + "pre-commit-hooks": [ + "pre-commit-hooks" + ] + }, "locked": { - "lastModified": 1697646580, - "narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=", - "owner": "libgit2", - "repo": "libgit2", - "rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5", - "type": "github" + "lastModified": 1725927421, + "narHash": "sha256-tiQ9OxiuTb/02xEU2ceo9MIxWBS5Rm/IAhv6QshH8K0=", + "ref": "refs/heads/main", + "rev": "cc183fdbc14ce105a5661d646983f791978b9d5c", + "revCount": 16233, + "type": "git", + "url": "https://git.lix.systems/lix-project/lix" }, "original": { - "owner": "libgit2", - "repo": "libgit2", - "type": "github" + "type": "git", + "url": "https://git.lix.systems/lix-project/lix" + } + }, + "lix-module": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "flakey-profile": [ + "flakey-profile" + ], + "lix": [ + "lix" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1725836728, + "narHash": "sha256-dCbHCwqrzcHlEsRilMX+KM3IfRV46ieGqDyAD3GgCSs=", + "ref": "refs/heads/main", + "rev": "353b25f0b6da5ede15206d416345a2ec4195b5c8", + "revCount": 107, + "type": "git", + "url": "https://git.lix.systems/lix-project/nixos-module" + }, + "original": { + "type": "git", + "url": "https://git.lix.systems/lix-project/nixos-module" } }, "naersk": { @@ -533,31 +528,36 @@ "type": "github" } }, - "nix": { + "nix-eval-jobs": { "inputs": { - "flake-compat": "flake-compat_5", - "flake-parts": "flake-parts_2", - "libgit2": "libgit2", + "flake-parts": [ + "flake-parts" + ], + "lix": [ + "lix" + ], + "nix-github-actions": [ + "nix-github-actions" + ], "nixpkgs": [ - "hydra", "nixpkgs" ], - "nixpkgs-regression": "nixpkgs-regression", - "pre-commit-hooks": "pre-commit-hooks" + "treefmt-nix": [ + "treefmt-nix" + ] }, "locked": { - "lastModified": 1713874370, - "narHash": "sha256-gW1mO/CvsQQ5gvgiwzxsGhPFI/tx30NING+qgF5Do0s=", - "owner": "NixOS", - "repo": "nix", - "rev": "1c8150ac312b5f9ba1b3f6768ff43b09867e5883", - "type": "github" + "lastModified": 1723579251, + "narHash": "sha256-xnHtfw0gRhV+2S9U7hQwvp2klTy1Iv7FlMMO0/WiMVc=", + "ref": "refs/heads/main", + "rev": "42a160bce2fd9ffebc3809746bc80cc7208f9b08", + "revCount": 609, + "type": "git", + "url": "https://git.lix.systems/lix-project/nix-eval-jobs" }, "original": { - "owner": "NixOS", - "ref": "2.22-maintenance", - "repo": "nix", - "type": "github" + "type": "git", + "url": "https://git.lix.systems/lix-project/nix-eval-jobs" } }, "nix-gaming": { @@ -568,7 +568,9 @@ "nixpkgs": [ "nixpkgs" ], - "umu": "umu" + "umu": [ + "umu" + ] }, "locked": { "lastModified": 1725759635, @@ -584,6 +586,49 @@ "type": "github" } }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1720066371, + "narHash": "sha256-uPlLYH2S0ACj0IcgaK9Lsf4spmJoGejR9DotXiXSBZQ=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "622f829f5fe69310a866c8a6cd07e747c44ef820", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix2container": { + "inputs": { + "flake-utils": [ + "flake-utils" + ], + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1724996935, + "narHash": "sha256-njRK9vvZ1JJsP8oV2OgkBrpJhgQezI03S7gzskCcHos=", + "owner": "nlewo", + "repo": "nix2container", + "rev": "fa6bb0a1159f55d071ba99331355955ae30b3401", + "type": "github" + }, + "original": { + "owner": "nlewo", + "repo": "nix2container", + "type": "github" + } + }, "nixos-hardware": { "locked": { "lastModified": 1725885300, @@ -624,11 +669,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1719784303, - "narHash": "sha256-1oFvvCsNrg6fkx6LLFtDlcM7zdOXXKIVERjXHWbBPE4=", + "lastModified": 1725905123, + "narHash": "sha256-NrE4IWGLwfHxYQpb39Z4fMziRjq766Ep7DigGsb+D/s=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "94526f7efe69352df04ad659a5d0327045feeaa9", + "rev": "4b9592ba68ab782014bb2f169ab3c48cd87a0f5a", "type": "github" }, "original": { @@ -653,70 +698,32 @@ "type": "github" } }, - "nixpkgs_2": { - "locked": { - "lastModified": 1712848736, - "narHash": "sha256-CzZwhqyLlebljv1zFS2KWVH/3byHND0LfaO1jKsGuVo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1d6a23f11e44d0fb64b3237569b87658a9eb5643", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-23.11-small", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_3": { - "locked": { - "lastModified": 1725905123, - "narHash": "sha256-NrE4IWGLwfHxYQpb39Z4fMziRjq766Ep7DigGsb+D/s=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "4b9592ba68ab782014bb2f169ab3c48cd87a0f5a", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "type": "github" - } - }, "pre-commit-hooks": { "inputs": { "flake-compat": [ - "hydra", - "nix" + "flake-compat" ], - "flake-utils": "flake-utils_2", "gitignore": [ - "hydra", - "nix" + "gitignore" ], "nixpkgs": [ - "hydra", - "nix", "nixpkgs" ], "nixpkgs-stable": [ - "hydra", - "nix", "nixpkgs" ] }, "locked": { - "lastModified": 1712897695, - "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=", + "lastModified": 1725513492, + "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8", + "repo": "git-hooks.nix", + "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "type": "github" }, "original": { "owner": "cachix", - "repo": "pre-commit-hooks.nix", + "repo": "git-hooks.nix", "type": "github" } }, @@ -751,23 +758,33 @@ "crane": "crane", "devshell": "devshell", "dns": "dns", - "flake-compat": "flake-compat_4", + "flake-compat": "flake-compat", "flake-parts": "flake-parts", "flake-utils": "flake-utils", + "flakey-profile": "flakey-profile", + "gitignore": "gitignore", "gomod2nix": "gomod2nix", "home-manager": "home-manager", "hydra": "hydra", "impermanence": "impermanence", "lib-aggregate": "lib-aggregate", + "lix": "lix", + "lix-module": "lix-module", "naersk": "naersk", + "nix-eval-jobs": "nix-eval-jobs", "nix-gaming": "nix-gaming", + "nix-github-actions": "nix-github-actions", + "nix2container": "nix2container", "nixos-hardware": "nixos-hardware", "nixos-vscode-server": "nixos-vscode-server", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", "riscv-overlay": "riscv-overlay", "rust-overlay": "rust-overlay", "sops-nix": "sops-nix", - "systems": "systems" + "systems": "systems", + "treefmt-nix": "treefmt-nix", + "umu": "umu" } }, "rust-overlay": { @@ -828,27 +845,44 @@ "type": "github" } }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1725271838, + "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "umu": { "inputs": { "nixpkgs": [ - "nix-gaming", "nixpkgs" ] }, "locked": { "dir": "packaging/nix", - "lastModified": 1725408497, - "narHash": "sha256-wyJPWwHzHpFwc9XP9nM/Lpbvahusp2NcUtWXlErGi1g=", + "lastModified": 1725946017, + "narHash": "sha256-9MoUjSWWgXDUqVz/tJo3DqW8WFbsXqO9JuQPzRWnzuI=", "ref": "refs/heads/main", - "rev": "2d3c948a51bc1d2880a90bf985947f9afc89e8d1", - "revCount": 713, - "submodules": true, + "rev": "3af25f44079f4a09ccd618501bb72ab368d033d3", + "revCount": 714, "type": "git", "url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix" }, "original": { "dir": "packaging/nix", - "submodules": true, "type": "git", "url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix" } diff --git a/flake.nix b/flake.nix index 59ad193f..2e569b1b 100644 --- a/flake.nix +++ b/flake.nix @@ -7,18 +7,21 @@ rec { admin-fe = { url = "github:DarkKirb/admin-fe"; inputs.devshell.follows = "devshell"; + inputs.flake-compat.follows = "flake-compat"; inputs.flake-parts.follows = "flake-parts"; - #inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgs"; }; akkoma = { url = "github:DarkKirb/akkoma"; inputs.devshell.follows = "devshell"; + inputs.flake-compat.follows = "flake-compat"; inputs.flake-parts.follows = "flake-parts"; inputs.nixpkgs.follows = "nixpkgs"; }; akkoma-fe = { url = "github:DarkKirb/akkoma-fe"; inputs.devshell.follows = "devshell"; + inputs.flake-compat.follows = "flake-compat"; inputs.flake-parts.follows = "flake-parts"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -72,6 +75,13 @@ rec { url = "github:numtide/flake-utils"; inputs.systems.follows = "systems"; }; + flakey-profile = { + url = "github:lf-/flakey-profile"; + }; + gitignore = { + url = "github:hercules-ci/gitignore.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; gomod2nix = { url = "github:DarkKirb/gomod2nix"; inputs.nixpkgs.follows = "nixpkgs"; @@ -82,8 +92,10 @@ rec { inputs.nixpkgs.follows = "nixpkgs"; }; hydra = { - url = "github:DarkKirb/hydra"; - #inputs.nixpkgs.follows = "nixpkgs"; + url = "git+https://git.lix.systems/lix-project/hydra"; + inputs.lix.follows = "lix"; + inputs.nix-eval-jobs.follows = "nix-eval-jobs"; + inputs.nixpkgs.follows = "nixpkgs"; }; impermanence = { url = "github:nix-community/impermanence"; @@ -93,14 +105,46 @@ rec { inputs.flake-utils.follows = "flake-utils"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; + lix = { + url = "git+https://git.lix.systems/lix-project/lix"; + inputs.flake-compat.follows = "flake-compat"; + inputs.nix2container.follows = "nix2container"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.pre-commit-hooks.follows = "pre-commit-hooks"; + }; + lix-module = { + url = "git+https://git.lix.systems/lix-project/nixos-module"; + inputs.flake-utils.follows = "flake-utils"; + inputs.flakey-profile.follows = "flakey-profile"; + inputs.lix.follows = "lix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; naersk = { url = "github:nix-community/naersk/master"; inputs.nixpkgs.follows = "nixpkgs"; }; + nix-eval-jobs = { + url = "git+https://git.lix.systems/lix-project/nix-eval-jobs"; + inputs.flake-parts.follows = "flake-parts"; + inputs.lix.follows = "lix"; + inputs.nix-github-actions.follows = "nix-github-actions"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.treefmt-nix.follows = "treefmt-nix"; + }; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-parts.follows = "flake-parts"; + inputs.umu.follows = "umu"; + }; + nix-github-actions = { + url = "github:nix-community/nix-github-actions"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix2container = { + url = "github:nlewo/nix2container"; + inputs.flake-utils.follows = "flake-utils"; + inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware.url = "github:NixOS/nixos-hardware"; nixos-vscode-server = { @@ -109,6 +153,13 @@ rec { inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs.url = "github:NixOS/nixpkgs"; + pre-commit-hooks = { + url = "github:cachix/git-hooks.nix"; + inputs.flake-compat.follows = "flake-compat"; + inputs.gitignore.follows = "gitignore"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs-stable.follows = "nixpkgs"; + }; riscv-overlay = { url = "github:DarkKirb/riscv-overlay"; inputs.nixpkgs.follows = "nixpkgs"; @@ -123,6 +174,14 @@ rec { inputs.nixpkgs-stable.follows = "nixpkgs"; }; systems.url = "github:nix-systems/default"; + treefmt-nix = { + url = "github:numtide/treefmt-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + umu = { + url = "git+https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = { @@ -130,6 +189,7 @@ rec { nixpkgs, sops-nix, home-manager, + lix-module, ... } @ args: let systems = [ @@ -271,6 +331,7 @@ rec { home-manager.extraSpecialArgs = args // {inherit system;}; }) (import utils/link-input.nix args) + lix-module.nixosModules.default ]; }; })