summaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
authorseth <[email protected]>2024-12-19 16:26:18 -0500
committerGitHub <[email protected]>2024-12-19 21:26:18 +0000
commit2ae2b978f3fad7a58cb129333b36a210bb200488 (patch)
treeef12b9e1a29462c4de6b787fcf9c34d80b563b9f /nix
parent77309844e6b890544bc4eea7f03bbafe493ba61e (diff)
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] <[email protected]> * 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] <[email protected]> * 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] <[email protected]> * 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] <[email protected]> * 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] <[email protected]> * 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] <[email protected]> * 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] <[email protected]> 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>
Diffstat (limited to 'nix')
-rw-r--r--nix/containerize.nix12
-rw-r--r--nix/derivation.nix71
-rw-r--r--nix/module.nix52
-rw-r--r--nix/package.nix60
-rw-r--r--nix/static.nix20
5 files changed, 113 insertions, 102 deletions
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;
+ };
+ })