diff --git a/docs/modules/ROOT/pages/deployment.adoc b/docs/modules/ROOT/pages/deployment.adoc index ea8f12c..5e27d58 100644 --- a/docs/modules/ROOT/pages/deployment.adoc +++ b/docs/modules/ROOT/pages/deployment.adoc @@ -45,10 +45,10 @@ NOTE: This deployment method does NOT use an `arion-pkgs.nix` file, but reuses # Pick one of: # - niv ((import ./nix/sources.nix).arion + "/nixos-module.nix") - # - flakes (where arion is a flake input) + # - or flakes (where arion is a flake input) arion.nixosModules.arion - # - other - arionPath + "/nixos-module.nix") + # - or other: copy commit hash of arion and replace HASH in: + (builtins.fetchTarball "https://github.com/hercules-ci/arion/archive/HASH.tar.gz") + "/nixos-module.nix") ]; virtualisation.arion = { diff --git a/flake.lock b/flake.lock index f80a4d6..71d6019 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1675933616, - "narHash": "sha256-/rczJkJHtx16IFxMmAWu5nNYcSXNg1YYXTHoGjLrLUA=", + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "47478a4a003e745402acf63be7f9a092d51b83d7", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", "type": "github" }, "original": { @@ -20,6 +20,26 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "hercules-ci-effects", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, "haskell-flake": { "locked": { "lastModified": 1675296942, @@ -36,13 +56,34 @@ "type": "github" } }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1701009247, + "narHash": "sha256-GuX16rzRze2y7CsewJLTV6qXkXWyEwp6VCZXi8HLruU=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "31b6cd7569191bfcd0a548575b0e2ef953ed7d09", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1676300157, - "narHash": "sha256-1HjRzfp6LOLfcj/HJHdVKWAkX9QRAouoh6AjzJiIerU=", + "lastModified": 1701436327, + "narHash": "sha256-tRHbnoNI8SIM5O5xuxOmtSLnswEByzmnQcGGyNRjxsE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "545c7a31e5dedea4a6d372712a18e00ce097d462", + "rev": "91050ea1e57e50388fa87a3302ba12d188ef723a", "type": "github" }, "original": { @@ -56,6 +97,7 @@ "inputs": { "flake-parts": "flake-parts", "haskell-flake": "haskell-flake", + "hercules-ci-effects": "hercules-ci-effects", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index c623eb2..0fad924 100644 --- a/flake.nix +++ b/flake.nix @@ -6,12 +6,15 @@ haskell-flake.url = "github:srid/haskell-flake/0.1.0"; flake-parts.url = "github:hercules-ci/flake-parts"; flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs"; + hercules-ci-effects.url = "github:hercules-ci/hercules-ci-effects"; + hercules-ci-effects.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs@{ self, flake-parts, ... }: flake-parts.lib.mkFlake { inherit inputs; } ({ config, lib, extendModules, ... }: { imports = [ inputs.haskell-flake.flakeModule + inputs.hercules-ci-effects.flakeModule inputs.flake-parts.flakeModules.easyOverlay ./docs/flake-module.nix ./tests/flake-module.nix @@ -63,6 +66,23 @@ ]; }); }; + + hercules-ci.flake-update = { + enable = true; + autoMergeMethod = "merge"; + when = { + hour = [ 2 ]; + dayOfMonth = [ 5 ]; + }; + }; + + herculesCI.ciSystems = [ + # "aarch64-darwin" + # "aarch64-linux" + "x86_64-darwin" + "x86_64-linux" + ]; + flake = { debug = { inherit inputs config lib; }; @@ -79,12 +99,6 @@ in composition.config.out.dockerComposeYaml; }; nixosModules.arion = ./nixos-module.nix; - herculesCI.ciSystems = [ - # "aarch64-darwin" - # "aarch64-linux" - "x86_64-darwin" - "x86_64-linux" - ]; }; }); } diff --git a/src/nix/modules/service/docker-compose-service.nix b/src/nix/modules/service/docker-compose-service.nix index c038ac6..3c60ee3 100644 --- a/src/nix/modules/service/docker-compose-service.nix +++ b/src/nix/modules/service/docker-compose-service.nix @@ -297,6 +297,11 @@ in default = null; description = serviceRef "stop_signal"; }; + service.stop_grace_period = mkOption { + type = nullOr str; + default = null; + description = serviceRef "stop_grace_period"; + }; service.sysctls = mkOption { type = attrsOf (either str int); default = {}; @@ -380,6 +385,8 @@ in inherit (config.service) restart; } // lib.optionalAttrs (config.service.stop_signal != null) { inherit (config.service) stop_signal; + } // lib.optionalAttrs (config.service.stop_grace_period != null) { + inherit (config.service) stop_grace_period; } // lib.optionalAttrs (config.service.tmpfs != []) { inherit (config.service) tmpfs; } // lib.optionalAttrs (config.service.tty != null) {