From 51bc0cc922a625026968e358c3dc1a865b00e7f8 Mon Sep 17 00:00:00 2001 From: "Wyatt J. Miller" Date: Tue, 25 Aug 2026 22:09:24 -0400 Subject: [PATCH] mod: added container build option, formatted flake --- flake.nix | 185 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 108 insertions(+), 77 deletions(-) diff --git a/flake.nix b/flake.nix index b5b47fd..277e9e0 100644 --- a/flake.nix +++ b/flake.nix @@ -1,4 +1,3 @@ -# This flake was initially generated by fh, the CLI for FlakeHub (version 0.1.18) { description = "A dice roller bot"; @@ -11,87 +10,119 @@ }; }; - outputs = { - self, - flake-schemas, - nixpkgs, - rust-overlay, - }: let - overlays = [ - rust-overlay.overlays.default - (final: _: { - rustToolchain = final.rust-bin.stable.latest.default.override {extensions = ["rust-src"];}; - }) - ]; + outputs = + { + self, + flake-schemas, + nixpkgs, + rust-overlay, + }: + let + overlays = [ + rust-overlay.overlays.default + (final: _: { + rustToolchain = final.rust-bin.stable.latest.default.override { extensions = [ "rust-src" ]; }; + }) + ]; - supportedSystems = ["x86_64-linux" "aarch64-darwin" "aarch64-linux"]; - forEachSupportedSystem = f: - nixpkgs.lib.genAttrs supportedSystems (system: - f { - pkgs = import nixpkgs {inherit overlays system;}; - }); - in { - schemas = flake-schemas.schemas; + supportedSystems = [ + "x86_64-linux" + "aarch64-darwin" + "aarch64-linux" + ]; + forEachSupportedSystem = + f: + nixpkgs.lib.genAttrs supportedSystems ( + system: + f { + pkgs = import nixpkgs { inherit overlays system; }; + } + ); + in + { + schemas = flake-schemas.schemas; + formatter = forEachSupportedSystem ({ pkgs }: pkgs.nixfmt-rfc-style); + devShells = forEachSupportedSystem ( + { pkgs }: + { + default = pkgs.mkShell { + packages = with pkgs; [ + rustToolchain + cargo-bloat + cargo-edit + cargo-outdated + cargo-udeps + cargo-watch + rust-analyzer + curl + git + jq + wget + nixfmt-rfc-style + pkg-config-unwrapped + openssl.dev + ]; - devShells = forEachSupportedSystem ({pkgs}: { - default = pkgs.mkShell { - packages = with pkgs; [ - rustToolchain - cargo-bloat - cargo-edit - cargo-outdated - cargo-udeps - cargo-watch - rust-analyzer - curl - git - jq - wget - nixpkgs-fmt - pkg-config-unwrapped - openssl.dev - ]; + env = { + RUST_BACKTRACE = "1"; + RUST_SRC_PATH = "${pkgs.rustToolchain}/lib/rustlib/src/rust/library"; + PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; + }; + }; + } + ); - env = { - RUST_BACKTRACE = "1"; - RUST_SRC_PATH = "${pkgs.rustToolchain}/lib/rustlib/src/rust/library"; - PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; - }; - }; - }); + packages = forEachSupportedSystem ( + { pkgs }: + let + pname = "caitsith"; + version = "master"; - packages = forEachSupportedSystem ({ pkgs }: { - default = let - pname = "caitsith"; - version = "master"; + bot = pkgs.rustPlatform.buildRustPackage { + inherit pname version; + src = self; + cargoLock = { + lockFile = ./Cargo.lock; + }; + nativeBuildInputs = with pkgs; [ + pkg-config-unwrapped + openssl.dev + ]; - src = pkgs.fetchFromGitea { - domain = "scm.wyattjmiller.com"; - owner = "wymiller"; - repo = "caitsith"; - rev = "${version}"; - sha256 = "sha256-bNIzb57qPzzgwGVTjk2N59P7Rtt0MdyJY12sTAH05/s="; - }; - in pkgs.rustPlatform.buildRustPackage { - inherit pname version src; - cargoLock = { lockFile = "${src}/Cargo.lock"; }; - nativeBuildInputs = with pkgs; [ - pkg-config-unwrapped - openssl.dev - ]; + meta = { + description = "A dice roller bot"; + mainProgram = "caitsith"; + homepage = "https://scm.wyattjmiller.com/wymiller/caitsith"; + maintainers = [ "wymillerlinux" ]; + platforms = [ "x86_64-linux" ]; + }; - meta = { - description = "A Discord/Matrix bot that deathrolls"; - mainProgram = "caitsith"; - homepage = "https://scm.wyattjmiller.com/wymiller/caitsith"; - maintainers = [ "wymillerlinux" ]; - platforms = [ "x86_64-linux" ]; - }; + env = { + PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; + }; + }; + in + { + default = bot; + docker = pkgs.dockerTools.buildLayeredImage { + name = pname; + tag = "latest"; + contents = [ + bot + pkgs.cacert + ]; - env = { - PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; - }; - }; - }); - }; + config = { + Entrypoint = [ "${bot}/bin/${pname}" ]; + Env = [ "SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" ]; + Labels = { + "org.opencontainers.image.title" = pname; + "org.opencontainers.image.description" = "A dice roller bot"; + "org.opencontainers.image.source" = "https://scm.wyattjmiller.com/wymiller/caitsith"; + }; + }; + }; + } + ); + }; }