From 2ae2b978f3fad7a58cb129333b36a210bb200488 Mon Sep 17 00:00:00 2001 From: seth Date: Thu, 19 Dec 2024 16:26:18 -0500 Subject: jolly winter cleanup (#251) * ci: bump DeterminateSystems/nix-installer-action from 13 to 16 Bumps [DeterminateSystems/nix-installer-action](https://github.com/determinatesystems/nix-installer-action) from 13 to 16. - [Release notes](https://github.com/determinatesystems/nix-installer-action/releases) - [Commits](https://github.com/determinatesystems/nix-installer-action/compare/v13...v16) --- updated-dependencies: - dependency-name: DeterminateSystems/nix-installer-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * crates: bump serde from 1.0.209 to 1.0.215 Bumps [serde](https://github.com/serde-rs/serde) from 1.0.209 to 1.0.215. - [Release notes](https://github.com/serde-rs/serde/releases) - [Commits](https://github.com/serde-rs/serde/compare/v1.0.209...v1.0.215) --- updated-dependencies: - dependency-name: serde dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * crates: bump serde_json from 1.0.127 to 1.0.133 Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.127 to 1.0.133. - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.127...v1.0.133) --- updated-dependencies: - dependency-name: serde_json dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * crates: bump tokio from 1.40.0 to 1.41.1 Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.40.0 to 1.41.1. - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.40.0...tokio-1.41.1) --- updated-dependencies: - dependency-name: tokio dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * crates: bump reqwest from 0.12.7 to 0.12.9 Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.12.7 to 0.12.9. - [Release notes](https://github.com/seanmonstar/reqwest/releases) - [Changelog](https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md) - [Commits](https://github.com/seanmonstar/reqwest/compare/v0.12.7...v0.12.9) --- updated-dependencies: - dependency-name: reqwest dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * nix: update flake.lock * ci: bump DeterminateSystems/magic-nix-cache-action from 7 to 8 Bumps [DeterminateSystems/magic-nix-cache-action](https://github.com/determinatesystems/magic-nix-cache-action) from 7 to 8. - [Release notes](https://github.com/determinatesystems/magic-nix-cache-action/releases) - [Commits](https://github.com/determinatesystems/magic-nix-cache-action/compare/v7...v8) --- updated-dependencies: - dependency-name: DeterminateSystems/magic-nix-cache-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * treewide: debrand * nix: adopt new darwin sdk * nix: drop treefmt * nix: misc formatting changes * ci: cleanup * nix: pass version info to static builds * nix: mv {derivation,package}.nix * eyre -> anyhow * remove 2024 edition warnings * format with rustfmt * remove optional commands * ci: don't include internal variables in job names * nix: enable for lto builds --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: getchoo-bot[bot] <183349775+getchoo-bot[bot]@users.noreply.github.com> --- nix/containerize.nix | 12 ++++++--- nix/derivation.nix | 71 ---------------------------------------------------- nix/module.nix | 52 ++++++++++++++++++++++---------------- nix/package.nix | 60 ++++++++++++++++++++++++++++++++++++++++++++ nix/static.nix | 20 ++++++++++----- 5 files changed, 113 insertions(+), 102 deletions(-) delete mode 100644 nix/derivation.nix create mode 100644 nix/package.nix (limited to 'nix') diff --git a/nix/containerize.nix b/nix/containerize.nix index 8175e17..b936b90 100644 --- a/nix/containerize.nix +++ b/nix/containerize.nix @@ -1,17 +1,21 @@ { lib, dockerTools }: + let containerize = - teawie-bot: + chill-discord-bot: + let - inherit (teawie-bot.passthru) crossPkgs; + inherit (chill-discord-bot.passthru) crossPkgs; architecture = crossPkgs.go.GOARCH; in + dockerTools.buildLayeredImage { - name = "teawie-bot"; + name = "chill-discord-bot"; tag = "latest-${architecture}"; contents = [ dockerTools.caCertificates ]; - config.Cmd = [ (lib.getExe teawie-bot) ]; + config.Cmd = [ (lib.getExe chill-discord-bot) ]; inherit architecture; }; in + containerize diff --git a/nix/derivation.nix b/nix/derivation.nix deleted file mode 100644 index 955f601..0000000 --- a/nix/derivation.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - lib, - stdenv, - rustPlatform, - darwin, - self ? { }, - lto ? true, - optimizeSize ? false, -}: -let - fs = lib.fileset; -in -rustPlatform.buildRustPackage { - pname = "teawie-bot"; - version = (lib.importTOML ../Cargo.toml).package.version or "unknown"; - - src = fs.toSource { - root = ../.; - fileset = fs.intersection (fs.gitTracked ../.) ( - lib.fileset.unions [ - ../src - ../Cargo.toml - ../Cargo.lock - ] - ); - }; - - cargoLock = { - lockFile = ../Cargo.lock; - }; - - buildInputs = lib.optionals stdenv.isDarwin ( - with darwin.apple_sdk.frameworks; - [ - CoreFoundation - Security - SystemConfiguration - darwin.libiconv - ] - ); - - env = - let - toRustFlags = lib.mapAttrs' ( - name: - lib.nameValuePair "CARGO_BUILD_RELEASE_${ - lib.toUpper (builtins.replaceStrings [ "-" ] [ "_" ] name) - }" - ); - in - { - GIT_SHA = self.shortRev or self.dirtyShortRev or "unknown"; - } - // lib.optionalAttrs lto (toRustFlags { - lto = "thin"; - }) - // lib.optionalAttrs optimizeSize (toRustFlags { - codegen-units = 1; - opt-level = "s"; - panic = "abort"; - strip = "symbols"; - }); - - meta = { - description = "funni bot"; - homepage = "https://github.com/getchoo/teawiebot"; - license = lib.licenses.mit; - maintainers = with lib.maintainers; [ getchoo ]; - mainProgram = "teawie-bot"; - }; -} diff --git a/nix/module.nix b/nix/module.nix index 4e3b683..8220e3f 100644 --- a/nix/module.nix +++ b/nix/module.nix @@ -5,14 +5,11 @@ self: pkgs, ... }: -let - cfg = config.services.teawiebot; - defaultUser = "teawiebot"; +let inherit (lib) getExe literalExpression - mdDoc mkEnableOption mkIf mkOption @@ -20,17 +17,22 @@ let optionals types ; - inherit (pkgs.stdenv.hostPlatform) system; + + cfg = config.services.chill-discord-bot; + + defaultUser = "chill-discord-bot"; + flakePackages = self.packages.${system} or (throw "getchoo/chill: ${system} is not supported"); in + { - options.services.teawiebot = { - enable = mkEnableOption "teawieBot"; - package = mkPackageOption (self.packages.${system} or (builtins.throw "${system} is not supported!") - ) "teawie-bot" { }; + options.services.chill-discord-bot = { + enable = mkEnableOption "chill"; + + package = mkPackageOption flakePackages "chill-discord-bot" { }; user = mkOption { - description = mdDoc '' + description = '' User under which the service should run. If this is the default value, the user will be created, with the specified group as the primary group. @@ -43,7 +45,7 @@ in }; group = mkOption { - description = mdDoc '' + description = '' Group under which the service should run. If this is the default value, the group will be created. ''; @@ -55,7 +57,7 @@ in }; redisUrl = mkOption { - description = mdDoc '' + description = '' Connection to a redis server. If this needs to include credentials that shouldn't be world-readable in the Nix store, set environmentFile and override the `REDIS_URL` entry. @@ -69,28 +71,36 @@ in }; environmentFile = mkOption { - description = mdDoc '' + description = '' Environment file as defined in {manpage}`systemd.exec(5)` ''; type = types.nullOr types.path; default = null; example = literalExpression '' - "/run/agenix.d/1/teawieBot" + "/run/agenix.d/1/chillDiscordBot" ''; }; }; + imports = [ + (lib.mkRenamedOptionModule [ "services" "teawiebot" ] [ "services" "chill-discord-bot" ]) + ]; + config = mkIf cfg.enable { - services.redis.servers.teawiebot = mkIf (cfg.redisUrl == "local") { - enable = true; - inherit (cfg) user; - port = 0; # disable tcp listener + services.redis.servers = mkIf (cfg.redisUrl == "local") { + chill-discord-bot = { + enable = true; + inherit (cfg) user; + port = 0; # disable tcp listener + }; }; - systemd.services."teawiebot" = { + systemd.services.chill-discord-bot = { enable = true; wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ] ++ optionals (cfg.redisUrl == "local") [ "redis-teawiebot.service" ]; + after = [ + "network.target" + ] ++ optionals (cfg.redisUrl == "local") [ "redis-chill-discord-bot.service" ]; script = '' ${getExe cfg.package} @@ -99,7 +109,7 @@ in environment = { REDIS_URL = if cfg.redisUrl == "local" then - "unix:${config.services.redis.servers.teawiebot.unixSocket}" + "unix:${config.services.redis.servers.chill-discord-bot.unixSocket}" else cfg.redisUrl; }; diff --git a/nix/package.nix b/nix/package.nix new file mode 100644 index 0000000..abb3129 --- /dev/null +++ b/nix/package.nix @@ -0,0 +1,60 @@ +{ + lib, + rustPlatform, + self ? { }, + lto ? true, + optimizeSize ? false, +}: + +let + fs = lib.fileset; +in + +rustPlatform.buildRustPackage { + pname = "chill-discord-bot"; + version = (lib.importTOML ../Cargo.toml).package.version or "unknown"; + + src = fs.toSource { + root = ../.; + fileset = fs.intersection (fs.gitTracked ../.) ( + lib.fileset.unions [ + ../src + ../Cargo.toml + ../Cargo.lock + ] + ); + }; + + cargoLock.lockFile = ../Cargo.lock; + + # `-C panic="abort"` breaks checks + doCheck = !optimizeSize; + + RUSTFLAGS = + lib.optionals lto [ + "-C" + "embed-bitcode=yes" + "-C" + "lto=thin" + ] + ++ lib.optionals optimizeSize [ + "-C" + "codegen-units=1" + "-C" + "opt-level=s" + "-C" + "panic=abort" + "-C" + "strip=symbols" + ]; + + GIT_SHA = self.shortRev or self.dirtyShortRev or "unknown"; + + meta = { + description = "funni bot"; + homepage = "https://github.com/getchoo/chill"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ getchoo ]; + mainProgram = "chill"; + }; +} diff --git a/nix/static.nix b/nix/static.nix index 5a5606f..1c9ac42 100644 --- a/nix/static.nix +++ b/nix/static.nix @@ -1,20 +1,28 @@ { lib, pkgsCross, - teawie-bot, + self, }: + let crossPkgsFor = with pkgsCross; { x86_64 = musl64.pkgsStatic; aarch64 = aarch64-multiplatform.pkgsStatic; }; in + { arch }: + let crossPkgs = crossPkgsFor.${arch}; in -(crossPkgs.callPackage ./derivation.nix { optimizeSize = true; }).overrideAttrs (old: { - passthru = old.passthru or { } // { - inherit crossPkgs; - }; -}) + +(crossPkgs.callPackage ./package.nix { + inherit self; + optimizeSize = true; +}).overrideAttrs + (old: { + passthru = old.passthru or { } // { + inherit crossPkgs; + }; + }) -- cgit v1.2.3