From 2970e7d12be54db6ef1b7340dfd903db372fba4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jalil=20David=20Salam=C3=A9=20Messina?= Date: Sat, 12 Oct 2024 22:29:38 +0200 Subject: [PATCH] refactor(flake): use flake-parts This makes it easier to split up the flake in the future. --- flake.lock | 21 +++++++++ flake.nix | 126 +++++++++++++++++++++++++---------------------------- 2 files changed, 80 insertions(+), 67 deletions(-) diff --git a/flake.lock b/flake.lock index 5e655a0..746dba0 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,25 @@ { "nodes": { + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1727348695, @@ -17,6 +37,7 @@ }, "root": { "inputs": { + "flake-parts": "flake-parts", "nixpkgs": "nixpkgs", "systems": "systems" } diff --git a/flake.nix b/flake.nix index 5f271d0..4a4fa3d 100644 --- a/flake.nix +++ b/flake.nix @@ -3,85 +3,77 @@ inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; systems.url = "github:nix-systems/default"; + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; }; outputs = - { - self, - nixpkgs, - systems, - }: - let - forEachSupportedSystem = nixpkgs.lib.genAttrs (import systems); - in - { - checks = forEachSupportedSystem ( - system: - let - pkgs = nixpkgs.legacyPackages.${system}; - inherit (nixpkgs) lib; - in + inputs: + inputs.flake-parts.mkFlake { + systems = import inputs.system; + perSystem = { - fmtRust = pkgs.callPackage ./run-cmd.nix { - src = self; - name = "fmt-rust"; - extraNativeBuildInputs = [ pkgs.rustfmt ]; - cmd = "${lib.getExe pkgs.cargo} fmt --all --check --verbose"; - }; - fmtNix = pkgs.callPackage ./run-cmd.nix { - src = self; - name = "fmt-nix"; - cmd = "${lib.getExe self.formatter.${system}} --check ."; - }; - lintNix = pkgs.callPackage ./run-cmd.nix { - src = self; - name = "lint-nix"; - cmd = "${lib.getExe pkgs.statix} check ."; - }; - } - ); - formatter = forEachSupportedSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style); - - packages = forEachSupportedSystem ( - system: - let - pkgs = nixpkgs.legacyPackages.${system}; - webnsupdate = pkgs.callPackage ./default.nix { }; - in + lib, + pkgs, + self', + ... + }: { - inherit webnsupdate; - default = webnsupdate; - cargo-update = pkgs.writeShellApplication { - name = "cargo-update-lockfile"; - runtimeInputs = with pkgs; [ - cargo - gnused - ]; - text = '' - CARGO_TERM_COLOR=never cargo update 2>&1 | sed '/crates.io index/d' | tee -a cargo_update.log - ''; + packages = + let + webnsupdate = pkgs.callPackage ./default.nix { }; + in + { + inherit webnsupdate; + default = webnsupdate; + cargo-update = pkgs.writeShellApplication { + name = "cargo-update-lockfile"; + runtimeInputs = with pkgs; [ + cargo + gnused + ]; + text = '' + CARGO_TERM_COLOR=never cargo update 2>&1 | sed '/crates.io index/d' | tee -a cargo_update.log + ''; + }; + }; + + formatter = pkgs.nixfmt-rfc-style; + + checks = { + fmtRust = pkgs.callPackage ./run-cmd.nix { + src = inputs.self; + name = "fmt-rust"; + extraNativeBuildInputs = [ pkgs.rustfmt ]; + cmd = "${lib.getExe pkgs.cargo} fmt --all --check --verbose"; + }; + fmtNix = pkgs.callPackage ./run-cmd.nix { + src = inputs.self; + name = "fmt-nix"; + cmd = "${lib.getExe self'.formatter} --check ."; + }; + lintNix = pkgs.callPackage ./run-cmd.nix { + src = inputs.self; + name = "lint-nix"; + cmd = "${lib.getExe pkgs.statix} check ."; + }; }; - } - ); - overlays.default = final: prev: { webnsupdate = final.callPackage ./default.nix { }; }; - - nixosModules.default = ./module.nix; - - devShells = forEachSupportedSystem ( - system: - let - pkgs = nixpkgs.legacyPackages.${system}; - in - { - default = pkgs.mkShell { + devShells.default = pkgs.mkShell { packages = [ pkgs.cargo-insta pkgs.cargo-udeps pkgs.mold ]; }; - } - ); + }; + + flake = { + overlays.default = final: prev: { webnsupdate = final.callPackage ./default.nix { }; }; + + nixosModules.default = ./module.nix; + }; }; }