diff --git a/README.md b/README.md index 5a52d25..0bc2c89 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ Flake module which allows generating a `.gitlab-ci.yml` from Nix. This allows easily using any Nix package in CI. -Also makes it possible to split CI parts in a separate module +Also makes it possible to split CI parts in a separate module which can be imported in multiple projects. - ## Usage + ```nix # flake.nix { @@ -37,6 +37,7 @@ which can be imported in multiple projects. } } ``` + ```yaml # .gitlab-ci.yml include: diff --git a/flake.lock b/flake.lock index c08280e..f1d2356 100644 --- a/flake.lock +++ b/flake.lock @@ -149,24 +149,6 @@ "type": "github" } }, - "flake-utils_2": { - "inputs": { - "systems": "systems" - }, - "locked": { - "lastModified": 1701680307, - "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ @@ -175,11 +157,11 @@ ] }, "locked": { - "lastModified": 1703887061, - "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", "type": "github" }, "original": { @@ -296,16 +278,16 @@ }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1704874635, - "narHash": "sha256-YWuCrtsty5vVZvu+7BchAxmcYzTMfolSPP5io8+WYCg=", + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3dc440faeee9e889fe2d1b4d25ad0f430d449356", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } @@ -328,11 +310,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1704842529, - "narHash": "sha256-OTeQA+F8d/Evad33JMfuXC89VMetQbsU4qcaePchGr4=", + "lastModified": 1719082008, + "narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "eabe8d3eface69f5bb16c18f8662a702f50c20d5", + "rev": "9693852a2070b398ee123a329e68f0dab5526681", "type": "github" }, "original": { @@ -342,20 +324,35 @@ "type": "github" } }, + "nixpkgs_4": { + "locked": { + "lastModified": 1725103162, + "narHash": "sha256-Ym04C5+qovuQDYL/rKWSR+WESseQBbNAe5DsXNx5trY=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "12228ff1752d7b7624a54e9c1af4b222b3c1073b", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat_3", - "flake-utils": "flake-utils_2", "gitignore": "gitignore", "nixpkgs": "nixpkgs_3", "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1705229514, - "narHash": "sha256-itILy0zimR/iyUGq5Dgg0fiW8plRDyxF153LWGsg3Cw=", + "lastModified": 1725513492, + "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "ffa9a5b90b0acfaa03b1533b83eaf5dead819a05", + "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "type": "github" }, "original": { @@ -371,25 +368,11 @@ "flake-parts": "flake-parts", "nixpkgs": "nixpkgs_2", "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems_2" + "systems": "systems", + "treefmt-nix": "treefmt-nix" } }, "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_2": { "locked": { "lastModified": 1689347949, "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", @@ -403,6 +386,24 @@ "repo": "default-linux", "type": "github" } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1725271838, + "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 973b4ff..3eaa120 100644 --- a/flake.nix +++ b/flake.nix @@ -7,6 +7,7 @@ flake-parts.lib.mkFlake {inherit inputs;} { imports = [ inputs.devenv.flakeModule + inputs.treefmt-nix.flakeModule ./lib/flakeModule.nix ]; systems = import systems; @@ -14,16 +15,27 @@ perSystem = { pkgs, inputs', + config, ... }: rec { - formatter = pkgs.alejandra; + treefmt = { + projectRootFile = "flake.nix"; + programs = { + alejandra.enable = true; + mdformat.enable = true; + yamlfmt.enable = true; + }; + }; devenv.shells.default = { containers = pkgs.lib.mkForce {}; packages = with pkgs; [dive skopeo]; pre-commit = { hooks = { - alejandra.enable = true; + treefmt = { + enable = true; + packageOverrides.treefmt = config.treefmt.build.wrapper; + }; }; }; }; @@ -157,6 +169,7 @@ inputs.pre-commit-hooks.follows = "pre-commit-hooks"; }; pre-commit-hooks.url = "github:cachix/pre-commit-hooks.nix"; + treefmt-nix.url = "github:numtide/treefmt-nix"; attic = { url = "gitlab:TECHNOFAB/attic"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/gitlab-ci.yml b/gitlab-ci.yml index 71dc45c..f1cb469 100644 --- a/gitlab-ci.yml +++ b/gitlab-ci.yml @@ -4,11 +4,9 @@ variables: # latest | latest-cachix | latest-attic etc. NIX_CI_IMAGE_TAG: latest - stages: - build - trigger - nix-ci:build: stage: build image: registry.gitlab.com/technofab/nix-gitlab-ci/nix-ci:${NIX_CI_IMAGE_TAG} @@ -24,7 +22,6 @@ nix-ci:build: artifacts: paths: - generated-gitlab-ci.yml - nix-ci:trigger: stage: trigger needs: