From a1e9c3700faa9bb25015db32047c13fa09c0935e Mon Sep 17 00:00:00 2001 From: Lunarix <3759687+Skarlett@users.noreply.github.com> Date: Mon, 20 Mar 2023 09:17:52 -0500 Subject: [PATCH] Systemd fix (#56) * fix: systemd is not a drv * vbump --------- Co-authored-by: Skarlett --- Cargo.lock | 131 +--------------------------------- Cargo.toml | 5 +- flake.nix | 22 +++--- iac/coggiebot/default.nix | 18 +++-- iac/coggiebot/meta.nix | 8 +-- iac/vanilla-linux/default.nix | 64 +++++++++-------- iac/vanilla-linux/systemd.nix | 30 ++++---- src/config.rs | 46 +++++++++++- 8 files changed, 127 insertions(+), 197 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d8f544a..078f731 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -180,19 +180,19 @@ dependencies = [ [[package]] name = "coggiebot" -version = "1.3.8" +version = "1.4.1" dependencies = [ "anyhow", - "confique", "derive_builder", "serde", "serde_derive", + "serde_json", "serenity", "songbird", "structopt", "thiserror", "tokio", - "toml 0.7.2", + "toml", ] [[package]] @@ -206,31 +206,6 @@ dependencies = [ "syn", ] -[[package]] -name = "confique" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37aba03b8e0c657f2abd2bb65846be5a87d49c103c2cca02d43e5fa80efda9db" -dependencies = [ - "confique-macro", - "json5", - "serde", - "serde_yaml", - "toml 0.5.11", -] - -[[package]] -name = "confique-macro" -version = "0.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b4ee9b1074181c0a22bdb812f9e8862ee8592089dcd57d5e00b05777594ccd7" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "cpufeatures" version = "0.2.5" @@ -721,17 +696,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "json5" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" -dependencies = [ - "pest", - "pest_derive", - "serde", -] - [[package]] name = "lazy_static" version = "1.4.0" @@ -948,50 +912,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" -[[package]] -name = "pest" -version = "2.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028accff104c4e513bad663bbcd2ad7cfd5304144404c31ed0a77ac103d00660" -dependencies = [ - "thiserror", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ac3922aac69a40733080f53c1ce7f91dcf57e1a5f6c52f421fadec7fbdc4b69" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06646e185566b5961b4058dd107e0a7f56e77c3f484549fb119867773c0f202" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f60b2ba541577e2a0c307c8f39d1439108120eb7903adeb6497fa880c59616" -dependencies = [ - "once_cell", - "pest", - "sha2", -] - [[package]] name = "pin-project" version = "1.0.12" @@ -1375,19 +1295,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yaml" -version = "0.9.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb06d4b6cdaef0e0c51fa881acb721bed3c924cfaa71d9c94a3b771dfdf6567" -dependencies = [ - "indexmap", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - [[package]] name = "serenity" version = "0.11.5" @@ -1446,17 +1353,6 @@ dependencies = [ "digest", ] -[[package]] -name = "sha2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sharded-slab" version = "0.1.4" @@ -1745,15 +1641,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.2" @@ -1906,12 +1793,6 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" -[[package]] -name = "ucd-trie" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" - [[package]] name = "unicase" version = "2.6.0" @@ -1964,12 +1845,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "unsafe-libyaml" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc7ed8ba44ca06be78ea1ad2c3682a43349126c8818054231ee6f4748012aed2" - [[package]] name = "untrusted" version = "0.7.1" diff --git a/Cargo.toml b/Cargo.toml index 277ab81..954e009 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "coggiebot" -version = "1.3.8" +version = "1.4.1" edition = "2021" [dependencies] @@ -13,8 +13,7 @@ anyhow = "1.0" toml = "0.7" serde = "1.0" serde_derive = "*" -confique = "0.2.2" - +serde_json = "*" songbird = { version = "0.3.0", optional=true, features=["builtin-queue"] } diff --git a/flake.nix b/flake.nix index 357d789..84a9e8e 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,7 @@ outputs = { self, nixpkgs, flake-utils, naersk, crane }: + rec { inherit (flake-utils.lib.eachDefaultSystem (system: let @@ -31,20 +32,22 @@ mockingbird ]; + coggiebot-stable = cogpkgs.mkCoggiebot { + features-list = features; + # version = "1.4.0"; + }; + config = { prefixes = []; - dj_room = [ 123456789 ]; bookmark_emoji = "\u{1F516}"; - rebuild-time = 1500; - }; - - coggiebot-stable = cogpkgs.mkCoggiebot { - features-list = features; + dj_room = [ 123456789 ]; + features = (cogpkgs.which-features coggiebot-stable); }; - vanilla-linux = (pkgs.callPackage ./iac/vanilla-linux/default.nix { + vanilla-linux = (pkgs.callPackage ./iac/vanilla-linux/default.nix) { inherit installDir; - }); + coggiebot = coggiebot-stable; + } ; # Automatically adds a pre-release if able to # beta-features is hard coded with the purpose of @@ -60,9 +63,10 @@ else {} // rec { + # packages.systemd = vanilla-linux.systemd; packages.default = coggiebot-stable; packages.coggiebot-stable = coggiebot-stable; - packages.deploy = (vanilla-linux coggiebot-stable); + packages.deploy = vanilla-linux.deploy; }))) packages; nixosModules.coggiebot = {pkgs, lib, config, ...}: diff --git a/iac/coggiebot/default.nix b/iac/coggiebot/default.nix index 3b85206..a91b838 100644 --- a/iac/coggiebot/default.nix +++ b/iac/coggiebot/default.nix @@ -42,11 +42,16 @@ let # list of strings in the features , dependencies ? [] , commands ? [] + , config ? {} }: { ${name} = { + inherit dependencies + pkg-override + commands + maintainers + config; featureName = "${name}"; - inherit dependencies pkg-override commands maintainers; }; }; @@ -63,10 +68,10 @@ let name = "basic-cmds"; commands = [ mkCommand { - aliases = [ "help" ]; - doc = "Displays this help message"; - examples = [ "help" ]; - }]; + aliases = [ "rev" ]; + doc = "display the current revision"; + default = "canary build"; + }]; } { name = "pre-release"; @@ -127,7 +132,7 @@ let { aliases = ["stop"]; doc = "stops the current song"; } { aliases = ["mute"]; - doc = "self mutes the bot (discord action)"; } + doc = "self mutes the bot (discord vc action)"; } { aliases = ["deafen"]; doc = "self deafens the bot (discord action)"; } { aliases = ["unmute"]; @@ -182,7 +187,6 @@ let }; }]; } - # { name = "fake"; dependencies = [ "nonexist" ]; } ]) ); diff --git a/iac/coggiebot/meta.nix b/iac/coggiebot/meta.nix index e078563..b228a2f 100644 --- a/iac/coggiebot/meta.nix +++ b/iac/coggiebot/meta.nix @@ -1,21 +1,19 @@ { config, lib, pkgs, ... }: let mkDeveloper = { - discord-id + discordid , github ? null - , desc ? "NA" , languages ? [] }: { - inherit github discord-id desc languages; + inherit github discordid languages; }; in { maintainers = { lunarix = (mkDeveloper { github = "Skarlett"; - discord-id = 10293123910391039; - desc = "leading shipwreck"; + discordid = 10293123910391039; languages = ["nix" "rust" "python"]; }); }; diff --git a/iac/vanilla-linux/default.nix b/iac/vanilla-linux/default.nix index fb529ac..4f99716 100644 --- a/iac/vanilla-linux/default.nix +++ b/iac/vanilla-linux/default.nix @@ -1,30 +1,36 @@ -{ config, lib, pkgs, stdenv, installDir }: - coggiebot: - let - systemd = pkgs.callPackage ./systemd.nix { inherit coggiebot installDir; }; - in - stdenv.mkDerivation rec { - name = "coggie-deploy"; - phases = "buildPhase"; - nativeBuildInputs = [ - coggiebot - pkgs.coreutils - systemd.starter - systemd.updater - systemd.systemd-start - systemd.systemd-stop - systemd.systemd-restart - ]; +{ config, lib, pkgs, stdenv, installDir, coggiebot }: + let + systemd = pkgs.callPackage ./systemd.nix { inherit coggiebot installDir; }; + in + { + inherit systemd; - builder = pkgs.writeShellScript "builder.sh" '' - mkdir -p $out - ln -s ${systemd.starter}/bin/start $out/start-bin - ln -s ${systemd.updater}/bin/update $out/update - ln -s ${coggiebot}/bin/coggiebot $out/coggiebot - ln -s ${systemd.systemd-enable}/bin/systemd-enable $out/enable - ln -s ${systemd.systemd-disable}/bin/systemd-disable $out/disable - ln -s ${systemd.systemd-start}/bin/systemd-start $out/start - ln -s ${systemd.systemd-stop}/bin/systemd-stop $out/stop - ln -s ${systemd.systemd-restart}/bin/systemd-restart $out/restart - ''; - } + deploy = stdenv.mkDerivation rec { + name = "coggie-deploy"; + phases = "buildPhase"; + nativeBuildInputs = [ + coggiebot + pkgs.coreutils + systemd.starter + systemd.updater + systemd.systemd-start + systemd.systemd-stop + systemd.systemd-restart + ]; + + PATH = lib.makeBinPath nativeBuildInputs; + buildPhase = '' + mkdir -p $out + ln -s ${systemd.starter}/bin/start $out/start-bin + ln -s ${systemd.updater}/bin/update $out/update + ln -s ${coggiebot}/bin/coggiebot $out/coggiebot + ln -s ${systemd.systemd-enable}/bin/systemd-enable $out/enable + ln -s ${systemd.systemd-disable}/bin/systemd-disable $out/disable + ln -s ${systemd.systemd-start}/bin/systemd-start $out/start + ln -s ${systemd.systemd-stop}/bin/systemd-stop $out/stop + ln -s ${systemd.systemd-restart}/bin/systemd-restart $out/restart + ''; + }; + + + } diff --git a/iac/vanilla-linux/systemd.nix b/iac/vanilla-linux/systemd.nix index df2c0b7..5f0b703 100644 --- a/iac/vanilla-linux/systemd.nix +++ b/iac/vanilla-linux/systemd.nix @@ -9,9 +9,9 @@ rec { coggiebotd = pkgs.stdenv.mkDerivation rec { name = "coggiebotd.service"; - phases = "buildPhase"; - builder = pkgs.writeShellScript name '' + phases = "buildPhase"; + buildPhase = '' #!/bin/sh mkdir -p $out/etc/ @@ -47,9 +47,9 @@ rec { coggiebotd-update = pkgs.stdenv.mkDerivation rec { name = "coggiebotd-update.service"; - phases = "buildPhase"; - builder = pkgs.writeShellScript name '' + phases = "buildPhase"; + buildPhase = '' #!/bin/sh mkdir -p $out/etc cat >> $out/etc/$name <> $out/etc/$name <> $out/bin/$name <> $out/bin/$name <> $out/bin/$name <, + repo: String, + commit: String, + + maintainers: Vec, + #[cfg(feature = "bookmark-emoji")] - #[config(default = "\u{1F516}")] - bookmark_emoji: String, + bookmark: Bookmark, #[cfg(feature = "dj-room")] dj_room: Vec, #[cfg(feature="list-feature-cmd")] - features: HashMap, + features: Vec, +} + +#[derive(Debug, Deserialize)] +struct Maintainer { + discordid: u64, + github: Option, + languages : Vec, +} + +#[derive(Debug, Deserialize)] +struct Feature { + name: String, + dependencies: Vec, + enabled: bool, + maintainers: Vec, +} + +struct Command { + aliases: Vec, + description: String, + example: String, + owner_only: bool, + hidden: bool, + guild_only: bool, + dm_only: bool, + nsfw: bool, + cooldown: u64, + sub_commands: Vec, + config: serde_json::Value, }