From f9a8ce41ddd78a70f3a8829a2b4533f9f4b5dff5 Mon Sep 17 00:00:00 2001 From: 4o1x5 <4o1x5@4o1x5.dev> Date: Mon, 20 May 2024 04:02:53 +0200 Subject: [PATCH] flake update fixed the module with options switched to naersk for building --- flake.nix | 261 ++++++++++++---------------------------------------- service.nix | 66 ------------- 2 files changed, 58 insertions(+), 269 deletions(-) delete mode 100644 service.nix diff --git a/flake.nix b/flake.nix index 523364e..791e6e0 100644 --- a/flake.nix +++ b/flake.nix @@ -1,217 +1,72 @@ { - description = "Build a cargo project"; - inputs = { + naersk.url = "github:nix-community/naersk/master"; nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - - crane = { - url = "github:ipetkov/crane"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - fenix = { - url = "github:nix-community/fenix"; - inputs.nixpkgs.follows = "nixpkgs"; - inputs.rust-analyzer-src.follows = ""; - }; - - flake-utils.url = "github:numtide/flake-utils"; - - advisory-db = { - url = "github:rustsec/advisory-db"; - flake = false; - }; - + utils.url = "github:numtide/flake-utils"; }; - outputs = - { self - , nixpkgs - , crane - , fenix - , flake-utils - , advisory-db - , ... - }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = nixpkgs.legacyPackages.${system}; - - inherit (pkgs) lib; - - craneLib = crane.mkLib pkgs; - src = craneLib.cleanCargoSource (craneLib.path ./.); - - # Common arguments can be set here to avoid repeating them later - commonArgs = { - inherit src; - strictDeps = true; - - buildInputs = with pkgs; [ - pkg-config - openssl - ] ++ lib.optionals pkgs.stdenv.isDarwin [ - pkgs.libiconv - ]; - - }; - - craneLibLLvmTools = craneLib.overrideToolchain - (fenix.packages.${system}.complete.withComponents [ - "cargo" - "llvm-tools" - "rustc" - ]); - - # Build *just* the cargo dependencies, so we can reuse - # all of that work (e.g. via cachix) when running in CI - cargoArtifacts = craneLib.buildDepsOnly commonArgs; - - # Build the actual crate itself, reusing the dependency - # artifacts from above. - i2pd-exporter = craneLib.buildPackage (commonArgs // { - inherit cargoArtifacts; - }); - in - { - checks = { - # Build the crate as part of `nix flake check` for convenience - inherit i2pd-exporter; - - # Run clippy (and deny all warnings) on the crate source, - # again, reusing the dependency artifacts from above. - # - # Note that this is done as a separate derivation so that - # we can block the CI if there are issues here, but not - # prevent downstream consumers from building our crate by itself. - i2pd-exporter-clippy = craneLib.cargoClippy (commonArgs // { - inherit cargoArtifacts; - cargoClippyExtraArgs = "--all-targets -- --deny warnings"; - }); - - i2pd-exporter-doc = craneLib.cargoDoc (commonArgs // { - inherit cargoArtifacts; - }); - - # Check formatting - i2pd-exporter-fmt = craneLib.cargoFmt { - inherit src; - }; - - # Audit dependencies - i2pd-exporter-audit = craneLib.cargoAudit { - inherit src advisory-db; - }; - - # Audit licenses - i2pd-exporter-deny = craneLib.cargoDeny { - inherit src; - }; - - # Run tests with cargo-nextest - # Consider setting `doCheck = false` on `i2pd-exporter` if you do not want - # the tests to run twice - i2pd-exporter-nextest = craneLib.cargoNextest (commonArgs // { - inherit cargoArtifacts; - partitions = 1; - partitionType = "count"; - }); - }; - - packages = { - default = i2pd-exporter; - } // lib.optionalAttrs (!pkgs.stdenv.isDarwin) { - i2pd-exporter-llvm-coverage = craneLibLLvmTools.cargoLlvmCov (commonArgs // { - inherit cargoArtifacts; - }); - }; - - - apps.default = flake-utils.lib.mkApp { - drv = i2pd-exporter; - }; - - devShells.default = craneLib.devShell { - # Inherit inputs from checks. - checks = self.checks.${system}; - - LIBCLANG_PATH = "${pkgs.llvmPackages_17.libclang.lib}/lib"; - RUST_BACKTRACE = 1; - RUST_SRC_PATH = "${pkgs.rust.packages.stable.rustPlatform.rustLibSrc}"; - - packages = with pkgs; [ - rustfmt - rust-analyzer - clippy - openssl - sqlite - ]; - - }; - }); - nixosModules.default = - { config - , lib - , pkgs - , ... - }: - let - cfg = config.services.prometheus.exporters.i2pd-exporter; - in - { - options.services.prometheus.exporters.i2pd-exporter = { - - enable = mkEnableOption (lib.mdDoc "lemmy a federated alternative to reddit in rust"); - - listenAddress = mkOption { - type = with types; nullOr str; - default = "127.0.0.1"; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; - }; - - port = mkOption { - type = types.port; - default = 5733; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; - }; - - routerAddress = mkOption { - type = with types; nullOr str; - default = "http://127.0.0.1:7650"; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; - }; - - routerPassword = mkOption { - type = with types; nullOr str; - default = "itoopie"; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; + outputs = { self, nixpkgs, utils, naersk }: + utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + naersk-lib = pkgs.callPackage naersk { }; + in + { + defaultPackage = naersk-lib.buildPackage ./.; + devShell = with pkgs; mkShell { + buildInputs = [ cargo rustc rustfmt pre-commit rustPackages.clippy ]; + RUST_SRC_PATH = rustPlatform.rustLibSrc; + # todo add rust for vscodium }; - - systemd.services.i2pd-exporter = + nixosModules.default = + { pkgs, config, lib, ... }: { - description = "I2PD prometheus exporter"; + options = { + services.i2pd-exporter = with lib; { - environment = { - IP = cfg.services.prometheus.exporters.i2pd-exporter.listenAddress; - PORT = cfg.services.prometheus.exporters.i2pd-exporter.port; - ADDRESS = cfg.services.prometheus.exporters.i2pd-exporter.routerAddress; - PASSWORD = cfg.services.prometheus.exporters.i2pd-exporter.routerPassword; + enable = mkEnableOption "i2pd-exporter"; + + listenAddress = mkOption { + type = with types; nullOr str; + default = "127.0.0.1"; + }; + + port = mkOption { + type = types.port; + default = 5733; + }; + + routerAddress = mkOption { + type = with types; nullOr str; + default = "http://127.0.0.1:7650"; + }; + + routerPassword = mkOption { + type = with types; nullOr str; + default = "itoopie"; + }; + }; }; - wantedBy = [ "multi-user.target" ]; - - - serviceConfig = { - DynamicUser = true; - RuntimeDirectory = "i2pd-exporter"; - ExecStart = "${cfg.server.package}/bin/i2pdexporter"; - PrivateTmp = true; - MemoryDenyWriteExecute = true; - NoNewPrivileges = true; - }; + config = + let + cfg = config.services.i2pd-exporter; + in + lib.mkIf cfg.enable { + systemd.services.i2pd-exporter = { + environment = { + IP = cfg.listenAddress; + PORT = cfg.port; + ADDRESS = cfg.routerAddress; + PASSWORD = cfg.routerPassword; + }; + wantedBy = [ "multi-user.target" ]; + serviceConfig.ExecStart = "${pkgs.i2pd-exporter}/bin/i2pdexporter"; + }; + }; }; - }; - }; + } + ); } diff --git a/service.nix b/service.nix deleted file mode 100644 index 50230d9..0000000 --- a/service.nix +++ /dev/null @@ -1,66 +0,0 @@ -{ lib, pkgs, config, utils, ... }: -with lib; -let - cfg = config.services.prometheus.exporters.i2pd-exporter; - settingsFormat = pkgs.formats.json { }; -in -{ - - - options.services.prometheus.exporters.i2pd-exporter = { - - enable = mkEnableOption (lib.mdDoc "lemmy a federated alternative to reddit in rust"); - - listenAddress = mkOption { - type = with types; nullOr str; - default = "127.0.0.1"; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; - }; - - port = mkOption { - type = types.port; - default = 5733; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; - }; - - routerAddress = mkOption { - type = with types; nullOr str; - default = "http://127.0.0.1:7650"; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; - }; - - routerPassword = mkOption { - type = with types; nullOr str; - default = "itoopie"; - description = lib.mdDoc "The connection URI to use. Takes priority over the configuration file if set."; - }; - - - - systemd.services.i2pd-exporter = - { - description = "I2PD prometheus exporter"; - - environment = { - IP = cfg.services.prometheus.exporters.i2pd-exporter.listenAddress; - PORT = cfg.services.prometheus.exporters.i2pd-exporter.port; - ADDRESS = cfg.services.prometheus.exporters.i2pd-exporter.routerAddress; - PASSWORD = cfg.services.prometheus.exporters.i2pd-exporter.routerPassword; - }; - - wantedBy = [ "multi-user.target" ]; - - - serviceConfig = { - DynamicUser = true; - RuntimeDirectory = "i2pd-exporter"; - ExecStart = "${cfg.server.package}/bin/i2pdexporter"; - PrivateTmp = true; - MemoryDenyWriteExecute = true; - NoNewPrivileges = true; - }; - }; - - - }; -}