Initial Handy Helper

This commit is contained in:
2023-03-15 22:04:25 -04:00
parent 22c8203ecd
commit ffea0b04bb
11 changed files with 1334 additions and 0 deletions

2
.gitignore vendored
View File

@@ -165,3 +165,5 @@ cython_debug/
result result
result-* result-*
/.direnv/
/.envrc

9
.sops.yaml Normal file
View File

@@ -0,0 +1,9 @@
keys:
- &hydra age18c3v89md4yjc9exjgfmk42csn8yqr9fvumsqjm8rnku5ac3q6gqs6s5un9
- &universedesk age1apajqje4zvah0n2dzds3kstlsakqr2ntk64xl7xc4erzedsuy9jqqk7cd7
creation_rules:
- path_regex: secrets/[^/]+$
key_groups:
- age:
- *hydra
- *universedesk

34
deploy/flake.nix Normal file
View File

@@ -0,0 +1,34 @@
{
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
inputs.handyhelper.url = "../";
outputs = { self, nixpkgs, handyhelper }: let
handy_overlay = (final: prev: {
handy_helper = handyhelper.packages."x86_64-linux".default;
});
in {
nixosConfigurations."staging" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
../secrets/config.nix
({ config, pkgs, ... }: {
nixpkgs.overlays = [
handy_overlay
];
})
({lib, config, pkgs, ...}: {
systemd.services.handyhelper = {
wantedBy = ["networking-online.target"];
enable = true;
path = [
pkgs.handy_helper
];
script = ''
${pkgs.handy_helper}/bin/handyhelper.py
'';
};
})
];
};
};
}

80
flake.lock generated Normal file
View File

@@ -0,0 +1,80 @@
{
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1678901627,
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"locked": {
"lastModified": 1678901627,
"narHash": "sha256-U02riOqrKKzwjsxc/400XnElV+UtPUQWpANPlyazjH0=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "93a2b84fc4b70d9e089d029deacc3583435c2ed6",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1678913024,
"narHash": "sha256-vFEaD3S6LZ7ubm4vPIj4DbznM7yDEG4kris3c0evXWs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "8830b75264dc8255d7e8ed85afc56e6a574b1bd2",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-22.11",
"repo": "nixpkgs",
"type": "github"
}
},
"poetry2nix": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1678851068,
"narHash": "sha256-xiBA1KshEXeu9OzGIoqYFf/OfGp17YvQPRXks6jMkts=",
"owner": "nix-community",
"repo": "poetry2nix",
"rev": "9ce22528035da8f36ea579559b32a37d38668425",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "poetry2nix",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs",
"poetry2nix": "poetry2nix"
}
}
},
"root": "root",
"version": 7
}

33
flake.nix Normal file
View File

@@ -0,0 +1,33 @@
{
description = "Application packaged using poetry2nix";
inputs.flake-utils.url = "github:numtide/flake-utils";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/release-22.11";
inputs.poetry2nix = {
url = "github:nix-community/poetry2nix";
inputs.nixpkgs.follows = "nixpkgs";
};
outputs = { self, nixpkgs, flake-utils, poetry2nix }:
flake-utils.lib.eachDefaultSystem (system:
let
# see https://github.com/nix-community/poetry2nix/tree/master#api for more functions and examples.
inherit (poetry2nix.legacyPackages.${system}) mkPoetryApplication mkPoetryEnv;
pkgs = nixpkgs.legacyPackages.${system};
in {
packages = {
handyhelper = mkPoetryApplication { projectDir = self; };
default = self.packages.${system}.myapp;
};
devShells.default = pkgs.mkShell {
packages = [
poetry2nix.packages.${system}.poetry
(mkPoetryEnv {
projectDir = self;
})
];
};
}
);
}

1
handyhelper/__init__.py Normal file
View File

@@ -0,0 +1 @@
# Handle major modules of package

23
handyhelper/__main__.py Normal file
View File

@@ -0,0 +1,23 @@
import nextcord
from nextcord.ext import commands
import os
bot = commands.Bot()
@bot.event
async def on_ready():
print(f'We have logged in as {bot.user}')
@bot.slash_command(name="summarize", description="Summarize all or part of an article", dm_permission=True)
async def summarize(
interaction: nextcord.Interaction,
article: str,
part: Optional[str] = SlashOption(required=False)
):
print("Will summarize article.")
# TODO: Import bot token from env
bot.run(os.environ["DISCORD_TOKEN"],)
if __name__ == "__main__":
print("Handy Helper has Begun!")

1084
poetry.lock generated Normal file

File diff suppressed because it is too large Load Diff

20
pyproject.toml Normal file
View File

@@ -0,0 +1,20 @@
[tool.poetry]
name = "handyhelper"
version = "0.0.1"
description = "Handy Helper for interacting with things such as research articles"
authors = ["David Crompton"]
license = "MIT"
readme = "README.md"
[tool.poetry.dependencies]
python = "^3.10"
requests = "^2.28.2"
nextcord = "^2.4.1"
[tool.poetry.group.dev.dependencies]
ipython = "^8.11.0"
python-lsp-server = "^1.7.1"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

24
secrets/deploy.nix Normal file
View File

@@ -0,0 +1,24 @@
{
"data": "ENC[AES256_GCM,data:8YOc0g12Wq25MvgPN0jAvGQObdmmPs9ipchVjChr0DfnD724mpuMgiaLEiQti4RFLHDM7rg0jNJq8zileFxSTdC8MND0i0tEMM81oIV6p+L+5yf6vQqQ/aDTFRs0NdbPLMYjd5meVzUy6x5PhbBznJfdf7ZOxpri0s6PKtdCNV88Soxukwzp8Mf4MPUFtvYrvqjq+GrM7aVJU/nj9ZUzlmHsz32gpLhoO9AYXSJ2W3Se9zuP+S3QDS5RtRLTCLgzXF7n9KidGRRZrpI+lNA9J9Di80DDJ9Nd+AGO7/8W8UZYlQMVkKRXtNt+AWtXalzKaHl8ftIEfsgWe3Z6VtboaxJZ5EFweSxgjXjLdLtDUA9wnhHN7nAFaCBdE/91o/zhKjtzAisXBvf7kMStWkyxsBmEqjnNelDVLtqKAkOBNcq8cRr8YOF3Vyt1vBAXPz32h3mXTQXO8UNzE/pyl7Anny/eHXWT2tZXxxA=,iv:c3fb4wkWkqCfFthX+tYuWhVjSvIve3A5/5p1znI1164=,tag:pXtwwJnr9hvXOIwB9Wt99w==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age18c3v89md4yjc9exjgfmk42csn8yqr9fvumsqjm8rnku5ac3q6gqs6s5un9",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPcTlWRHdYTGpMNWQ3NFVE\nUUUyNmpVaFlUSVVvOEJsMC9EdnlKNGZBL0g0CnZ3a3J6YjQ2MFRFTk5SbytIYnFE\nQWVNNHJYa29RUnErdUtkUGcxVFZvdU0KLS0tIGpqYzVJTDRidkhDSTBmWVZ0SHhZ\nWmJTTzlMbW5uY2Q4RUo5UUhOWWRJZ2sKVih0sXelupu7ZNUlx4i/1uwnC0J2dZRK\nNcuGpuxHACwu3mZsJuw+WYXIw3mxm9FicJzc7qCvPwKN3OKOQ4cUWw==\n-----END AGE ENCRYPTED FILE-----\n"
},
{
"recipient": "age1apajqje4zvah0n2dzds3kstlsakqr2ntk64xl7xc4erzedsuy9jqqk7cd7",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVWpxVTB3N2xpcXpDWlhI\naHM1TW9LL1FnT2lkRGF2bFM5VEVkNzRCV1djCkFqcmRLeWhYRkE0NzkvU00xcGdG\nYlpFOTlzWm9GS1BERi93QkxzOTJVN0EKLS0tIHpOYnlqMW9zaFpWaTJza2EzV1Jx\nOE1CUENlZlVKbGt6dUJUdUJuL1JmclkKFXf8F6bNDNDRpo+0X2MJKxAFls1vp/tr\n09dMExuNCHwJayKXlIL5+3OMDFTrjz49gZFQpWaOgQUbCVpI2Tff/A==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2023-03-15T23:27:35Z",
"mac": "ENC[AES256_GCM,data:kIWZqNDaAp0jxyFpVUzncM7AAm3u05V+FZrinZ95ftjV3ja9aLp8Ha1BVjg4csI8Yqk8Uc6IFXv9pnm6CnD2nWwPe2+W28hnIwP4B8SkiAoXj9dOT8gw5S+Vw0w8NoLFEGZ90xaiDdG5kfQCep9g4zWbqBHg397h1fxrTGJw5B8=,iv:An/IWRopuQ1RRSMgeXJcJuoL81SUtI8IsvY8asR984k=,tag:pLqRzKMv2VGWNCR8iOeskQ==,type:str]",
"pgp": null,
"unencrypted_suffix": "_unencrypted",
"version": "3.7.3"
}
}

24
secrets/deploy.sh Normal file
View File

@@ -0,0 +1,24 @@
{
"data": "ENC[AES256_GCM,data:fZK+wqPhRkieJmIbZncx5Mw6tot6k4fFYYNT6rvHFr7hsfclqGjsq8PDaBQrbeue75EgQ5eIUZqKrb/u2IZYTLQgG7xKXBDnR4DRnQsh/xiI5UK7POCxOFz/HhErGH7fZqpQ/PhyWHc=,iv:pD2AfYIsjzwHzFligZ5q6c9uxIEVRIZV/XNiXtREJow=,tag:kgdRD6GsChYHoC9YRsooOQ==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age18c3v89md4yjc9exjgfmk42csn8yqr9fvumsqjm8rnku5ac3q6gqs6s5un9",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxemdxUzZ6YUJnaGRJbjdt\neC9TWk5aWFF6VlVqTm9zSEhzdE1JYm5VL2dNCmdsT2hPWmFBenFGY0dZRW9QR2Nw\nNkVlNTIvRExqUFFTM2xoMHdnY1VzaWsKLS0tIFJYaWdVblIyZjBpZ0xiTHdJMmtN\nR3IyL1FpdWNnSzJnZTliSWhDSEFBT2cKa74MuO6mN1y3Lp6XEtT57rzbIRoGtU37\nk8U9cNokLJGDMpO4i/ar98YkLR6Jjp0sGNdU4ICW/Vj5ay8Ajrf96w==\n-----END AGE ENCRYPTED FILE-----\n"
},
{
"recipient": "age1apajqje4zvah0n2dzds3kstlsakqr2ntk64xl7xc4erzedsuy9jqqk7cd7",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiREVHOUN3aEh4OVBrSUIy\nR2VIZUYwYWg5YWZ1djFzbTdFYmtRL1BldlRFClI4WFdsalZjdkpZbGFDWHcwdkxv\nNjFrQzc2Rmc4VnFJQXNHbUtUd2s1Wm8KLS0tIGRON3FMYkZSNDdDcXVBODlmR0pR\nOVFzdS9RTlBQQlppOE4vS3g4U0ttN1kK9Zx8YPqoC8nYrtafOK4ckrdIr+qB9MgA\nDIbAUK4tgr6DsgUhGr5ELLDyQYP9OL+Pk3D43qEjtBOKH9EK9AMgKQ==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2023-03-15T23:28:30Z",
"mac": "ENC[AES256_GCM,data:cFpYHiY6evuj6Z2PaTo0LLGPKNPUL1CkxsUfz3km+++zAIGnkBQ1fzPlUaWjxAqPFyWeem84DXKoTTzQzyDo3A7fLhUpDIrFDG5a3GBiE/sBPViZexpUXyouYLCnpg33p3TBfFrXLjcIvXPlJcwUcQKxmOz/H57qd6QV4VPyWwI=,iv:mgOdK7xVcyJHORDJZLe05WfU4ViavQD0Z+J2y9L71CY=,tag:0Dj8pGib7i14SQVM3Axx+Q==,type:str]",
"pgp": null,
"unencrypted_suffix": "_unencrypted",
"version": "3.7.3"
}
}