From a01437d01eadfa914e992de4a465d51a3be835bd Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Fri, 18 Apr 2025 15:46:11 +0200 Subject: [PATCH] pkgs(vars-generator): init new package to generate vars --- pkgs/flake-module.nix | 1 + pkgs/vars-generate/cli/__init_.py | 0 .../cli/main.py} | 6 +++- pkgs/vars-generate/default.nix | 14 ++++++++ pkgs/vars-generate/flake-module.nix | 17 ++++++++++ pkgs/vars-generate/pyproject.toml | 34 +++++++++++++++++++ pkgs/vars-generate/test/vars.nix | 21 ++++++++++++ 7 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 pkgs/vars-generate/cli/__init_.py rename pkgs/{scripts/update-vars.py => vars-generate/cli/main.py} (99%) create mode 100644 pkgs/vars-generate/default.nix create mode 100644 pkgs/vars-generate/flake-module.nix create mode 100644 pkgs/vars-generate/pyproject.toml create mode 100644 pkgs/vars-generate/test/vars.nix diff --git a/pkgs/flake-module.nix b/pkgs/flake-module.nix index 4c2c82e89..027ca14a1 100644 --- a/pkgs/flake-module.nix +++ b/pkgs/flake-module.nix @@ -9,6 +9,7 @@ ./webview-ui/flake-module.nix ./distro-packages/flake-module.nix ./icon-update/flake-module.nix + ./vars-generate/flake-module.nix ]; flake.packages.x86_64-linux = diff --git a/pkgs/vars-generate/cli/__init_.py b/pkgs/vars-generate/cli/__init_.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/scripts/update-vars.py b/pkgs/vars-generate/cli/main.py similarity index 99% rename from pkgs/scripts/update-vars.py rename to pkgs/vars-generate/cli/main.py index f7bfd298c..85747a834 100755 --- a/pkgs/scripts/update-vars.py +++ b/pkgs/vars-generate/cli/main.py @@ -148,7 +148,7 @@ def parse_args() -> argparse.Namespace: return parser.parse_args() -if __name__ == "__main__": +def main() -> None: os.environ["CLAN_NO_COMMIT"] = "1" args = parse_args() test_dir = args.repo_root / args.test_dir @@ -181,3 +181,7 @@ if __name__ == "__main__": f.seek(0) os.environ["SOPS_AGE_KEY_FILE"] = f.name generate_vars(list(machines)) + + +if __name__ == "__main__": + main() diff --git a/pkgs/vars-generate/default.nix b/pkgs/vars-generate/default.nix new file mode 100644 index 000000000..620f9a44c --- /dev/null +++ b/pkgs/vars-generate/default.nix @@ -0,0 +1,14 @@ +{ + buildPythonApplication, + python, + clan-cli, +}: +buildPythonApplication { + name = "vars-generate"; + src = ./.; + format = "pyproject"; + buildInputs = [ (python.pkgs.toPythonModule clan-cli) ]; + nativeBuildInputs = [ + (python.withPackages (ps: [ ps.setuptools ])) + ]; +} diff --git a/pkgs/vars-generate/flake-module.nix b/pkgs/vars-generate/flake-module.nix new file mode 100644 index 000000000..206275352 --- /dev/null +++ b/pkgs/vars-generate/flake-module.nix @@ -0,0 +1,17 @@ +{ ... }: +{ + perSystem = + { + config, + pkgs, + ... + }: + { + # devShells.vars-generator = pkgs.callPackage ./shell.nix { + + # }; + packages.vars-generator = pkgs.python3.pkgs.callPackage ./default.nix { + inherit (config.packages) clan-cli; + }; + }; +} diff --git a/pkgs/vars-generate/pyproject.toml b/pkgs/vars-generate/pyproject.toml new file mode 100644 index 000000000..c0cb62f6c --- /dev/null +++ b/pkgs/vars-generate/pyproject.toml @@ -0,0 +1,34 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + + +[project] +name = "vars-generate" +description = "vars generate" +dynamic = ["version"] +scripts = { vars-generate = "cli:main.main" } + +[project.urls] +Homepage = "https://clan.lol/" +Documentation = "https://docs.clan.lol/" +Repository = "https://git.clan.lol/clan/clan-core" + +[tool.setuptools.packages.find] +exclude = ["result", "**/__pycache__"] + +[tool.pytest.ini_options] +testpaths = "tests" +faulthandler_timeout = 60 +log_level = "DEBUG" +log_format = "%(levelname)s: %(message)s\n %(pathname)s:%(lineno)d::%(funcName)s" +addopts = "--cov . --cov-report term --cov-report html:.reports/html --no-cov-on-fail --durations 5 --color=yes --new-first" # Add --pdb for debugging +norecursedirs = "tests/helpers" + +[tool.mypy] +python_version = "3.12" +warn_redundant_casts = true +disallow_untyped_calls = true +disallow_untyped_defs = true +no_implicit_optional = true + diff --git a/pkgs/vars-generate/test/vars.nix b/pkgs/vars-generate/test/vars.nix new file mode 100644 index 000000000..48d1d063f --- /dev/null +++ b/pkgs/vars-generate/test/vars.nix @@ -0,0 +1,21 @@ +# Test that we can generate vars +{ + vars.generators = { + test_generator_1 = { + files.hello = { + secret = false; + }; + script = '' + echo "hello world 1" > $out/hello + ''; + }; + test_generator_2 = { + files.hello = { + secret = false; + }; + script = '' + echo "hello world 2" > $out/hello + ''; + }; + }; +}