2022-06-18 01:26:53 -07:00
|
|
|
{
|
|
|
|
description = "An album of the day chooser";
|
|
|
|
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.url = "github:nixos/nixpkgs";
|
|
|
|
};
|
|
|
|
|
|
|
|
outputs = { self, nixpkgs }:
|
|
|
|
let
|
|
|
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
|
|
in
|
|
|
|
{
|
2022-07-10 22:51:32 -07:00
|
|
|
|
|
|
|
packages.x86_64-linux.dhyan = pkgs.stdenv.mkDerivation {
|
|
|
|
name = "dhyan";
|
|
|
|
src = ./.;
|
|
|
|
installPhase = ''
|
|
|
|
mkdir -p $out
|
|
|
|
cp -r src/ $out/
|
|
|
|
cp bb.edn $out/
|
|
|
|
cp deps.edn $out/
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
defaultPackage.x86_64-linux = self.packages.x86_64-linux.dhyan;
|
2022-07-09 03:17:04 -07:00
|
|
|
nixosModule = { options, lib, config, pkgs, ... }:
|
|
|
|
let
|
|
|
|
serviceConfig = config.services.mossnet.dhyan;
|
|
|
|
options.enable = lib.mkEnableOption "Dhyan daily runner";
|
|
|
|
in
|
|
|
|
{
|
2022-08-30 04:33:53 -07:00
|
|
|
# TODO This won't work either because secrets aren't passed
|
2022-07-09 03:17:04 -07:00
|
|
|
options.services.mossnet.dhyan = options;
|
|
|
|
config = lib.mkIf serviceConfig.enable {
|
|
|
|
systemd.services."dhyan" = {
|
|
|
|
description = ''
|
|
|
|
Various matrix bot integrations
|
|
|
|
'';
|
|
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig = { Type = "oneshot"; };
|
2022-07-10 22:51:32 -07:00
|
|
|
startAt = "*08:00:00";
|
|
|
|
path = with pkgs; [ babashka jdk11 self.packages.x86_64-linux.dhyan ];
|
2022-07-09 03:17:04 -07:00
|
|
|
script = ''
|
|
|
|
set -ex
|
2022-07-10 22:51:32 -07:00
|
|
|
cd ${self.packages.x86_64-linux.dhyan}
|
2022-07-09 03:17:04 -07:00
|
|
|
bb -m dhyan.main
|
|
|
|
'';
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2022-07-10 22:51:32 -07:00
|
|
|
|
|
|
|
nixosConfigurations."test" = nixpkgs.lib.nixosSystem {
|
|
|
|
system = "x86_64-linux";
|
|
|
|
modules = [
|
|
|
|
self.nixosModule
|
|
|
|
({ pkgs, ... }: {
|
|
|
|
boot.isContainer = true;
|
|
|
|
networking.hostName = "dhyan";
|
|
|
|
services.mossnet.dhyan.enable = true;
|
|
|
|
# we need network to download java deps handled by bb
|
|
|
|
# but we also need to tell network manager locally not to manage this interface
|
|
|
|
# TODO
|
|
|
|
# networking.nat.enable = true;
|
|
|
|
# networking.nat.internalInterfaces = [ "ve-+" ];
|
|
|
|
# networking.nat.externalInterface = "wlp3s0"; # Change this if it changes
|
|
|
|
})
|
|
|
|
];
|
|
|
|
};
|
2022-06-18 01:26:53 -07:00
|
|
|
devShell.x86_64-linux = pkgs.mkShell {
|
|
|
|
buildInputs = with pkgs; [
|
2022-07-09 03:17:04 -07:00
|
|
|
jdk11
|
2022-06-18 01:26:53 -07:00
|
|
|
babashka
|
|
|
|
];
|
2022-06-19 05:44:50 -07:00
|
|
|
shellHook = ''
|
2022-07-09 03:17:04 -07:00
|
|
|
[[ -z $SHAARLI_TOKEN ]] && echo "::dhyan:: Necessary Env Var missing: SHAARLI_TOKEN"
|
|
|
|
[[ -z $MATRIX_PASSWORD ]] && echo "::dhyan:: Necessary Env Var missing: MATRIX_PASSWORD"
|
2022-09-02 19:31:22 -07:00
|
|
|
[[ -z $WALLABAG_CLIENT_ID ]] && echo "::dhyan:: Necessary Env Var missing: WALLABAG_CLIENT_ID"
|
|
|
|
[[ -z $WALLABAG_CLIENT_SECRET ]] && echo "::dhyan:: Necessary Env Var missing: WALLABAG_CLIENT_SECRET"
|
|
|
|
[[ -z $WALLABAG_USERNAME ]] && echo "::dhyan:: Necessary Env Var missing: WALLABAG_USERNAME"
|
|
|
|
[[ -z $WALLABAG_PASSWORD ]] && echo "::dhyan:: Necessary Env Var missing: WALLABAG_PASSWORD"
|
|
|
|
# [[ -z $folder ]] && echo "::dhyan:: Necessary Env Var missing: folder"
|
2022-06-19 05:45:34 -07:00
|
|
|
'';
|
2022-06-18 01:26:53 -07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|