diff --git a/flake.lock b/flake.lock index 165fd81..4f5bce7 100644 --- a/flake.lock +++ b/flake.lock @@ -1,12 +1,32 @@ { "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": 1730531603, - "narHash": "sha256-Dqg6si5CqIzm87sp57j5nTaeBbWhHFaVyG7V6L8k3lY=", + "lastModified": 1728492678, + "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "7ffd9ae656aec493492b44d0ddfb28e79a1ea25d", + "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", "type": "github" }, "original": { @@ -18,6 +38,7 @@ }, "root": { "inputs": { + "flake-parts": "flake-parts", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index de50258..2f57e12 100644 --- a/flake.nix +++ b/flake.nix @@ -3,35 +3,44 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; }; outputs = { self, - nixpkgs, - }: let - inherit (nixpkgs) lib; + flake-parts, + ... + } @ inputs: + flake-parts.lib.mkFlake {inherit inputs;} { + systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; - systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + perSystem = { + lib, + pkgs, + system, + ... + }: { + # output packages only if they are available on the system + packages = let + isAvailable = name: drv: lib.meta.availableOn {inherit system;} drv; + flakePkgs = self.overlays.default {} pkgs; + in + lib.filterAttrs isAvailable flakePkgs; - pkgsFor = system: import nixpkgs {inherit system;}; - forEachSystem = lib.genAttrs systems; - in { - packages = forEachSystem ( - system: let - pkgs = pkgsFor system; - isAvailable = name: drv: lib.meta.availableOn {inherit system;} drv; - flakePkgs = self.overlays.default {} pkgs; - in - lib.filterAttrs isAvailable flakePkgs - ); + formatter = pkgs.alejandra; + }; - overlays.default = import ./pkgs/all-packages.nix; + flake = { + overlays.default = import ./pkgs/all-packages.nix; - nixosModules = { - reposilite = import ./modules/reposilite.nix; - asus-numpad = import ./modules/asus-numpad.nix self; + nixosModules = { + reposilite = import ./modules/reposilite.nix; + asus-numpad = import ./modules/asus-numpad.nix self; + }; + }; }; - - formatter = forEachSystem (system: (pkgsFor system).alejandra); - }; }