From e316ec56cebada458a871a39bdcc27192ace5330 Mon Sep 17 00:00:00 2001 From: kurogeek Date: Wed, 5 Aug 2026 10:19:32 +0700 Subject: [PATCH] flake: use flake-parts --- flake.lock | 4 ++++ flake.nix | 49 +++++++++++++++++++++++++------------------------ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/flake.lock b/flake.lock index 396d45a..3092441 100644 --- a/flake.lock +++ b/flake.lock @@ -247,6 +247,10 @@ "root": { "inputs": { "clan-core": "clan-core", + "flake-parts": [ + "clan-core", + "flake-parts" + ], "nixos-mailserver": "nixos-mailserver", "nixpkgs": [ "clan-core", diff --git a/flake.nix b/flake.nix index 9025c96..7e1c717 100644 --- a/flake.nix +++ b/flake.nix @@ -7,13 +7,16 @@ inputs.nixos-mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-26.05"; inputs.nixos-mailserver.inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-parts.follows = "clan-core/flake-parts"; + outputs = - { + inputs@{ self, clan-core, nixpkgs, + flake-parts, ... - }@inputs: + }: let # Usage see: https://docs.clan.lol clan = clan-core.lib.clan { @@ -36,38 +39,31 @@ "age-plugin-fido2-hmac" ]; }; - + in + flake-parts.lib.mkFlake { inherit inputs; } { systems = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" "x86_64-darwin" ]; - forAllSystems = nixpkgs.lib.genAttrs systems; - pkgsFor = system: clan-core.inputs.nixpkgs.legacyPackages.${system}; - treefmtFor = system: inputs.treefmt-nix.lib.evalModule (pkgsFor system) ./fmt.nix; - in - { - inherit (clan.config) nixosConfigurations nixosModules clanInternals; - clan = clan.config; - # `nix fmt` and the `nix flake check` formatting gate. - formatter = forAllSystems (system: (treefmtFor system).config.build.wrapper); - checks = forAllSystems (system: { - formatting = (treefmtFor system).config.build.check self; - }); + flake = { + inherit (clan.config) nixosConfigurations nixosModules clanInternals; + clan = clan.config; + }; - # Add the Clan cli tool to the dev shell. - # Use "nix develop" to enter the dev shell. - devShells = forAllSystems ( - system: + perSystem = + { system, ... }: let + pkgs = clan-core.inputs.nixpkgs.legacyPackages.${system}; + treefmtEval = inputs.treefmt-nix.lib.evalModule pkgs ./fmt.nix; clanCli = clan-core.packages.${system}.clan-cli; # `clan machines update a b c` normally runs machines in parallel, # which interleaves their output and buries the YubiKey PIN prompts. # This wrapper (first in PATH) runs them one at a time instead; any # flags fall through to the real CLI untouched. - clanSequential = (pkgsFor system).writeShellScriptBin "clan" '' + clanSequential = pkgs.writeShellScriptBin "clan" '' if [ "$#" -gt 3 ] && [ "$1" = machines ] && [ "$2" = update ]; then shift 2 for arg in "$@"; do @@ -84,14 +80,19 @@ ''; in { - default = (pkgsFor system).mkShell { + # `nix fmt` and the `nix flake check` formatting gate. + formatter = treefmtEval.config.build.wrapper; + checks.formatting = treefmtEval.config.build.check self; + + # Add the Clan cli tool to the dev shell. + # Use "nix develop" to enter the dev shell. + devShells.default = pkgs.mkShell { packages = [ clanSequential clanCli - (treefmtFor system).config.build.wrapper + treefmtEval.config.build.wrapper ]; }; - } - ); + }; }; }