diff --git a/flake.lock b/flake.lock deleted file mode 100644 index 7666840..0000000 --- a/flake.lock +++ /dev/null @@ -1,27 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1756754095, - "narHash": "sha256-9Rsn9XEWINExosFkKEqdp8EI6Mujr1gmQiyrEcts2ls=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "7c815e513adbf03c9098b2bd230c1e0525c8a7f9", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-25.05", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/flake.nix b/flake.nix index 823fcda..25d7357 100644 --- a/flake.nix +++ b/flake.nix @@ -1,34 +1,85 @@ { description = "Your Nix Cloud Simplified"; - inputs = { + inputs = let + follows = following: { + inputs = builtins.listToAttrs (builtins.map (x: { + name = x; + value = {follows = x;}; + }) + following); + }; + in { + systems.url = "github:nix-systems/default"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; - systems.url = "github:nix-systems/default"; - }; - - outputs = inputs @ { - self, - systems, - nixpkgs, - ... - }: let - defaultSystems = ["aarch64-darwin" "aarch64-linux" "i686-linux" "x86_64-darwin" "x86_64-linux"]; - - forAllSystems = f: - nixpkgs.lib.genAttrs defaultSystems (system: - f system (import nixpkgs { - inherit system; - overlays = builtins.attrValues self.overlays; - })); - in { - overlays.default = final: prev: { + nib = { + url = "github:emileclarkb/nib"; + inputs = follows ["systems"]; }; - checks = self.packages; - packages = - forAllSystems (system: pkgs: rec { + deploy-rs.url = "github:serokell/deploy-rs"; + }; + + outputs = { + self, + nixpkgs, + nixpkgs-unstable, + nib, + deploy-rs, + ... + } @ inputs: let + lib = nixpkgs.lib; + + sys = with nib; + mkUSys { + pkgs = withPkgs nixpkgs { + config.allowUnfree = false; + overlays = builtins.attrValues self.overlays; + }; + upkgs = withPkgs nixpkgs-unstable { + config.allowUnfree = false; + }; + }; + in rec { + # overlays.default = final: prev: { + # }; + + # checks = self.packages; + # packages = + # forAllSystems (system: pkgs: rec { + # }); + + mkNexusConfig = config: let + mapNodes = f: lib.mapAttrs f config.nexus.nodes; + in rec { + nixosConfigurations = mapNodes ( + name: node: + lib.nixosSystem { + system = node.system; + modules = node.modules; + } + ); + + deploy.nodes = mapNodes (name: node: { + hostname = name; + profiles.system = { + user = "root"; + path = let + system = node.system; + in + deploy-rs.lib.${system}.activate.nixos nixosConfigurations.${system}; + }; }); + + checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks deploy) deploy-rs.lib; + }; + + mkNexus = outputs: let + config = outputs.cerulean; + in + (mkNexusConfig config) // (builtins.removeAttrs outputs ["cerulean"]); }; }