summaryrefslogtreecommitdiff
path: root/meta/nix
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:43:51 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 18:43:51 +0300
commitb85e90fc3480da0e6a48da73201a0b22488cc650 (patch)
tree42b2e083e7d268747b01a03c0bedb48a9394585e /meta/nix
parent5c7048091e3a191e8a34f26852a8976b254e339b (diff)
parentf88d1f18953f9619444d56756702c7eb54580ab1 (diff)
downloadProject-Tick-b85e90fc3480da0e6a48da73201a0b22488cc650.tar.gz
Project-Tick-b85e90fc3480da0e6a48da73201a0b22488cc650.zip
Add 'meta/' from commit 'f88d1f18953f9619444d56756702c7eb54580ab1'
git-subtree-dir: meta git-subtree-mainline: 5c7048091e3a191e8a34f26852a8976b254e339b git-subtree-split: f88d1f18953f9619444d56756702c7eb54580ab1
Diffstat (limited to 'meta/nix')
-rw-r--r--meta/nix/dev.nix35
-rw-r--r--meta/nix/nixos/default.nix10
-rw-r--r--meta/nix/nixos/meta.nix70
-rw-r--r--meta/nix/packages.nix18
-rw-r--r--meta/nix/pkgs/blockgame-meta.nix70
5 files changed, 203 insertions, 0 deletions
diff --git a/meta/nix/dev.nix b/meta/nix/dev.nix
new file mode 100644
index 0000000000..1ca4edfc91
--- /dev/null
+++ b/meta/nix/dev.nix
@@ -0,0 +1,35 @@
+{
+ perSystem = {
+ config,
+ pkgs,
+ self',
+ ...
+ }: {
+ pre-commit.settings = {
+ excludes = ["flake.lock"];
+ hooks = {
+ markdownlint.enable = true;
+
+ alejandra.enable = true;
+ deadnix.enable = true;
+ nil.enable = true;
+
+ black.enable = true;
+ };
+ };
+
+ devShells.default = pkgs.mkShell {
+ shellHook = ''
+ ${config.pre-commit.installationScript}
+ '';
+
+ buildInputs = with pkgs; [
+ poetry
+ ];
+
+ inputsFrom = [self'.packages.default];
+ };
+
+ formatter = pkgs.alejandra;
+ };
+}
diff --git a/meta/nix/nixos/default.nix b/meta/nix/nixos/default.nix
new file mode 100644
index 0000000000..c4aa24174b
--- /dev/null
+++ b/meta/nix/nixos/default.nix
@@ -0,0 +1,10 @@
+{self, ...}: {
+ flake.nixosModules = {
+ default = self.nixosModules.meta;
+ meta = {
+ imports = [self.nixosModules.metaBare];
+ nixpkgs.overlays = [self.overlays.default];
+ };
+ metaBare = ./meta.nix;
+ };
+}
diff --git a/meta/nix/nixos/meta.nix b/meta/nix/nixos/meta.nix
new file mode 100644
index 0000000000..c03d4e6e01
--- /dev/null
+++ b/meta/nix/nixos/meta.nix
@@ -0,0 +1,70 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ inherit (lib) getExe getExe' mkEnableOption mkIf mkOption mkPackageOption types;
+
+ settingsFormat = pkgs.formats.keyValue {};
+
+ cfg = config.services.blockgame-meta;
+in {
+ options.services.blockgame-meta = {
+ enable = mkEnableOption "blockgame-meta service";
+
+ package = mkPackageOption pkgs "blockgame-meta" {};
+
+ settings = mkOption {
+ type = types.submodule {
+ freeformType = settingsFormat.type;
+ options = {
+ DEPLOY_TO_S3 = mkOption {
+ type = types.str;
+ default = "false";
+ };
+ DEPLOY_TO_FOLDER = mkOption {
+ type = types.str;
+ default = "false";
+ };
+ DEPLOY_TO_GIT = mkOption {
+ type = types.str;
+ default = "false";
+ };
+ };
+ };
+ };
+ };
+ config = mkIf cfg.enable {
+ users.users."blockgame-meta" = {
+ isSystemUser = true;
+ group = "blockgame-meta";
+ };
+
+ users.groups."blockgame-meta" = {};
+
+ systemd = {
+ services."blockgame-meta" = {
+ description = "blockgame metadata generator";
+ after = ["network-online.target"];
+ wants = ["network-online.target"];
+ serviceConfig = {
+ EnvironmentFile = [(settingsFormat.generate "blockgame-meta.env" cfg.settings)];
+ ExecStartPre = getExe' cfg.package "init";
+ ExecStart = getExe cfg.package;
+ StateDirectory = "blockgame-meta";
+ CacheDirectory = "blockgame-meta";
+ User = "blockgame-meta";
+ };
+ };
+
+ timers."blockgame-meta" = {
+ timerConfig = {
+ OnCalendar = "hourly";
+ RandomizedDelaySec = "5m";
+ };
+ wantedBy = ["timers.target"];
+ };
+ };
+ };
+}
diff --git a/meta/nix/packages.nix b/meta/nix/packages.nix
new file mode 100644
index 0000000000..4af7b97e5b
--- /dev/null
+++ b/meta/nix/packages.nix
@@ -0,0 +1,18 @@
+{inputs, ...}: {
+ imports = [inputs.flake-parts.flakeModules.easyOverlay];
+
+ perSystem = {
+ config,
+ final,
+ ...
+ }: {
+ packages = {
+ blockgame-meta = final.python3.pkgs.callPackage ./pkgs/blockgame-meta.nix {};
+ default = config.packages.blockgame-meta;
+ };
+
+ overlayAttrs = {
+ inherit (config.packages) blockgame-meta;
+ };
+ };
+}
diff --git a/meta/nix/pkgs/blockgame-meta.nix b/meta/nix/pkgs/blockgame-meta.nix
new file mode 100644
index 0000000000..8409c37cb4
--- /dev/null
+++ b/meta/nix/pkgs/blockgame-meta.nix
@@ -0,0 +1,70 @@
+{
+ lib,
+ buildPythonApplication,
+ poetry-core,
+ bash,
+ cachecontrol,
+ requests,
+ filelock,
+ git,
+ openssh,
+ packaging,
+ pydantic_1,
+ python,
+ rsync,
+}:
+buildPythonApplication {
+ pname = "blockgame-meta";
+ version = "unstable";
+
+ pyproject = true;
+
+ src = with lib.fileset;
+ toSource {
+ root = ../../.;
+ fileset = unions (map (fileName: ../../${fileName}) [
+ "meta"
+ "init.sh"
+ "pyproject.toml"
+ "poetry.lock"
+ "README.md"
+ "update.sh"
+ ]);
+ };
+
+ nativeBuildInputs = [
+ poetry-core
+ ];
+
+ buildInputs = [
+ bash
+ ];
+
+ propagatedBuildInputs = [
+ cachecontrol
+ requests
+ filelock
+ packaging
+ pydantic_1
+ ];
+
+ postInstall = ''
+ install -Dm755 $src/update.sh $out/bin/update
+ install -Dm755 $src/init.sh $out/bin/init
+
+ wrapProgram $out/bin/update \
+ --prefix PYTHONPATH : "$PYTHONPATH" \
+ --prefix PATH : ${lib.makeBinPath [git openssh python rsync]}
+
+ wrapProgram $out/bin/init \
+ --prefix PATH : ${lib.makeBinPath [git openssh]}
+ '';
+
+ meta = with lib; {
+ description = "Metadata generator for blockgame launcher.";
+ platforms = platforms.linux;
+ license = licenses.mspl;
+ maintainers = with maintainers; [Scrumplex];
+ mainProgram = "update";
+ };
+}