From 8ddad3e1ebb69c6c66da43463d8cef4351bc9a84 Mon Sep 17 00:00:00 2001 From: Greg Hellings Date: Sat, 15 Oct 2022 00:19:38 -0500 Subject: [PATCH] Add copier and deps --- home/direnv.nix | 4 -- home/home.nix | 7 ++-- modules-all/automatic/programs.nix | 2 +- overlays/copier.nix | 57 +++++++++++++++++++++++++++++ overlays/default.nix | 29 ++++++++++----- overlays/hms.nix | 2 +- overlays/iteration-utilities.nix | 23 ++++++++++++ overlays/jinja2-ansible-filters.nix | 34 +++++++++++++++++ overlays/pydantic.nix | 33 +++++++++++++++++ overlays/pyyaml-include.nix | 42 +++++++++++++++++++++ 10 files changed, 215 insertions(+), 18 deletions(-) create mode 100644 overlays/copier.nix create mode 100644 overlays/iteration-utilities.nix create mode 100644 overlays/jinja2-ansible-filters.nix create mode 100644 overlays/pydantic.nix create mode 100644 overlays/pyyaml-include.nix diff --git a/home/direnv.nix b/home/direnv.nix index b6d26ad..c4bf504 100644 --- a/home/direnv.nix +++ b/home/direnv.nix @@ -5,8 +5,4 @@ enable = true; nix-direnv.enable = true; }; - - home.packages = [ - pkgs.xonsh-direnv - ]; } diff --git a/home/home.nix b/home/home.nix index 1e5760f..2e0523f 100644 --- a/home/home.nix +++ b/home/home.nix @@ -4,11 +4,11 @@ let guiImports = if gui then [ ./gui ] else []; - myPackages = pypackages: with pypackages; [ - pkgs.datadog-api-client - pkgs.xonsh-direnv + myPackages = pypackages: with pypackages; with pkgs.my-py-addons; [ black + copier datadog + datadog-api-client dateutil flake8 ipython @@ -18,6 +18,7 @@ let tox typing-extensions virtualenv + xonsh-direnv ]; myPython = pkgs.python3.withPackages myPackages; diff --git a/modules-all/automatic/programs.nix b/modules-all/automatic/programs.nix index 7207086..e1418a6 100644 --- a/modules-all/automatic/programs.nix +++ b/modules-all/automatic/programs.nix @@ -2,7 +2,7 @@ let myPackages = pypackages: with pypackages; [ - pkgs.xonsh-direnv + pkgs.my-py-addons.xonsh-direnv virtualenv ]; diff --git a/overlays/copier.nix b/overlays/copier.nix new file mode 100644 index 0000000..82fa817 --- /dev/null +++ b/overlays/copier.nix @@ -0,0 +1,57 @@ +{ lib, buildPythonPackage, fetchPypi, pkgs, +colorama, +dunamai, +iteration-utilities, +jinja2, +jinja2-ansible-filters, +packaging, +pathspec, +plumbum, +pydantic, +pygments, +pyyaml, +pyyaml-include, +questionary, +setuptools, +wheel}: + +let + pydeps = [ + colorama + dunamai + iteration-utilities + jinja2 + jinja2-ansible-filters + packaging + pathspec + plumbum + pydantic + pygments + pyyaml + pyyaml-include + questionary + setuptools + wheel + ]; +in buildPythonPackage rec { + pname = "copier"; + version = "6.2.0"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-eSxm7Rpu3dhWkLoSA1/b8IemWxjIsHwlJ+NYEpbilkk="; + }; + + meta = with lib; { + description = "A library and CLI app for rendering templates"; + homepage = "https://github.com/copier-org/copier"; + license = licenses.mit; + maintainers = []; + }; + + doCheck = false; + + propagatedBuildInputs = pydeps; + + buildInputs = []; +} diff --git a/overlays/default.nix b/overlays/default.nix index 2296b82..ec2ae79 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,8 +1,23 @@ self: super: -{ - datadog-api-client = super.callPackage ./datadog-api-client.nix { - buildPythonPackage = self.python3.pkgs.buildPythonPackage; - fetchPypi = self.python.pkgs.fetchPypi; + +let + cp = super.python3.pkgs.callPackage; + +in rec { + my-py-addons = rec { + copier = cp ./copier.nix { + inherit iteration-utilities + jinja2-ansible-filters + pydantic + pyyaml-include + ; + }; + datadog-api-client = cp ./datadog-api-client.nix {}; + iteration-utilities = cp ./iteration-utilities.nix {}; + jinja2-ansible-filters = cp ./jinja2-ansible-filters.nix {}; + pydantic = cp ./pydantic.nix {}; + pyyaml-include = cp ./pyyaml-include.nix {}; + xonsh-direnv = cp ./xonsh-direnv.nix {}; }; hms = super.callPackage ./hms.nix { @@ -10,11 +25,7 @@ self: super: }; xonsh = super.xonsh.overridePythonAttrs (old: rec{ - propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.xonsh-direnv ]; + propagatedBuildInputs = old.propagatedBuildInputs ++ [ my-py-addons.xonsh-direnv ]; }); - xonsh-direnv = super.callPackage ./xonsh-direnv.nix { - buildPythonPackage = self.python3.pkgs.buildPythonPackage; - fetchPypi = self.python.pkgs.fetchPypi; - }; } diff --git a/overlays/hms.nix b/overlays/hms.nix index 4f47acc..f0dc2fd 100644 --- a/overlays/hms.nix +++ b/overlays/hms.nix @@ -20,7 +20,7 @@ else fi # Build and switch -echo "Building $(uname -m)-$target" +echo "Building $target" dest=$(mktemp -d) pushd "$dest" > /dev/null nix build --impure "$src#homeConfigurations.$target.activationPackage" diff --git a/overlays/iteration-utilities.nix b/overlays/iteration-utilities.nix new file mode 100644 index 0000000..cb272ca --- /dev/null +++ b/overlays/iteration-utilities.nix @@ -0,0 +1,23 @@ +{ lib, buildPythonPackage, fetchPypi, pkgs}: + +buildPythonPackage rec { + pname = "iteration-utilities"; + version = "0.11.0"; + + src = fetchPypi { + inherit version; + pname = "iteration_utilities"; + sha256 = "sha256-+R9BolSemn5A/1Rg/fkDO27lswXZvneUO2OlVFNMKnc="; + }; + + meta = with lib; { + description = "Utilities based on Pythons iterators and generators."; + homepage = "https://github.com/MSeifert04/iteration_utilities"; + license = licenses.afl20; + maintainers = []; + }; + + propagatedBuildInputs = []; + + doCheck = false; +} diff --git a/overlays/jinja2-ansible-filters.nix b/overlays/jinja2-ansible-filters.nix new file mode 100644 index 0000000..c6eacad --- /dev/null +++ b/overlays/jinja2-ansible-filters.nix @@ -0,0 +1,34 @@ +{ lib, buildPythonPackage, fetchPypi, pkgs}: + +let + pydeps = pypkgs: with pypkgs; [ + ansible-core + setuptools + wheel + ]; +in buildPythonPackage rec { + pname = "jinja2-ansible-filters"; + version = "1.3.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-B8EM9E1wc/TwEQLKEtmi3DG0HUfkxh7ZLvam0mabNWs="; + }; + + meta = with lib; { + description = "A port of the Jinja2 filters from Ansible"; + homepage = "https://gitlab.com/dreamer-labs/libraries/jinja2-ansible-filters"; + license = licenses.gpl3; + maintainers = []; + }; + + doCheck = false; + + buildInputs = with pkgs; [ + (python3.withPackages pydeps) + ]; + + nativeBuildInputs = with pkgs; [ + (python3.withPackages pydeps) + ]; +} diff --git a/overlays/pydantic.nix b/overlays/pydantic.nix new file mode 100644 index 0000000..9e97e0b --- /dev/null +++ b/overlays/pydantic.nix @@ -0,0 +1,33 @@ +{ lib, buildPythonPackage, fetchPypi, pkgs, +typing-extensions +}: + +let + pydeps = [ + typing-extensions + ]; +in buildPythonPackage rec { + pname = "pydantic"; + version = "1.10.2"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-kbjiGIUu9gB8K5jNhhYBxqCfGqMru7dPq1scM9Sh5BA="; + }; + + meta = with lib; { + description = "Data validation and settings management using Python type hints."; + homepage = "https://github.com/pydantic/pydantic"; + license = licenses.mit; + maintainers = []; + }; + + doCheck = false; + + propagatedBuildInputs = pydeps; + + buildInputs = []; + + nativeBuildInputs = with pkgs; [ + ]; +} diff --git a/overlays/pyyaml-include.nix b/overlays/pyyaml-include.nix new file mode 100644 index 0000000..4a6213f --- /dev/null +++ b/overlays/pyyaml-include.nix @@ -0,0 +1,42 @@ +{ lib, buildPythonPackage, fetchPypi, pkgs, +pyyaml, +setuptools, +setuptools-scm, +setuptools-scm-git-archive, +wheel +}: + +let + pydeps = [ + pyyaml + ]; +in buildPythonPackage rec { + pname = "pyyaml-include"; + version = "1.3"; + + src = fetchPypi { + inherit pname version; + sha256 = "sha256-9/vrjnG1C+Dm4HRy98edv7GhW63pyToHg2n/SeV+Z3E="; + }; + + meta = with lib; { + description = "A PyYAML extension to allow includes."; + homepage = "https://github.com/tanbro/pyyaml-include"; + license = licenses.gpl3; + maintainers = []; + }; + + doCheck = false; + + propagatedBuildInputs = pydeps; + + buildInputs = [ + setuptools + setuptools-scm + setuptools-scm-git-archive + wheel + ]; + + nativeBuildInputs = with pkgs; [ + ]; +}