From 3e6a7391dfe8779106deedeb748d40d1727c2f05 Mon Sep 17 00:00:00 2001 From: kolkman Date: Tue, 15 Sep 2026 20:46:52 +0200 Subject: [PATCH] Architecture split. --- flake.nix | 97 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 71 insertions(+), 26 deletions(-) diff --git a/flake.nix b/flake.nix index c035aa0..732a4bc 100644 --- a/flake.nix +++ b/flake.nix @@ -2,23 +2,36 @@ description = "Starter configuration for macOS with nix-darwin"; inputs = { - nixpkgs = { - url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin"; - # url = "github:nixos/nixpkgs/nixpkgs-unstable"; + nixpkgsAarch64 = { + url = "github:nixos/nixpkgs/nixpkgs-unstable"; }; - home-manager = { + nixpkgsX86 = { + url = "github:nixos/nixpkgs//nixpkgs-26.05-darwin"; + }; + + homeManagerAarch64 = { url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgsAarch64"; + }; + + homeManagerX86 = { + url = "github:nix-community/home-manager/release-26.05"; + inputs.nixpkgs.follows = "nixpkgsX86"; }; nixd = { url = "github:nix-community/nixd"; }; - darwin = { - # url = "github:nix-darwin/nix-darwin"; + darwinAarch64 = { + url = "github:nix-darwin/nix-darwin"; + inputs.nixpkgs.follows = "nixpkgsAarch64"; + }; + + darwinX86 = { url = "github:nix-darwin/nix-darwin/nix-darwin-26.05"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgsX86"; }; brew-src = { @@ -43,7 +56,7 @@ sops-nix = { url = "github:Mic92/sops-nix"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs.nixpkgs.follows = "nixpkgsAarch64"; }; nix-vscode-extensions = { @@ -67,12 +80,15 @@ outputs = { self, - darwin, + darwinAarch64, + darwinX86, nix-homebrew, homebrew-core, homebrew-cask, - home-manager, - nixpkgs, + homeManagerAarch64, + homeManagerX86, + nixpkgsAarch64, + nixpkgsX86, nixd, sops-nix, nix-vscode-extensions, @@ -82,17 +98,33 @@ }@inputs: let user = "olaf"; + lib = nixpkgsAarch64.lib; darwinSystems = [ "aarch64-darwin" "x86_64-darwin" ]; - forAllSystems = f: nixpkgs.lib.genAttrs darwinSystems f; + perSystem = { + aarch64-darwin = { + nixpkgs = nixpkgsAarch64; + darwin = darwinAarch64; + home-manager = homeManagerAarch64; + pkgs = nixpkgsAarch64.legacyPackages.aarch64-darwin; + }; + x86_64-darwin = { + nixpkgs = nixpkgsX86; + darwin = darwinX86; + home-manager = homeManagerX86; + pkgs = nixpkgsX86.legacyPackages.x86_64-darwin; + }; + }; + + forAllSystems = f: lib.genAttrs darwinSystems f; devShell = system: let - pkgs = nixpkgs.legacyPackages.${system}; + pkgs = perSystem.${system}.pkgs; in { default = @@ -125,18 +157,23 @@ }; }; - mkApp = scriptName: system: { - type = "app"; - program = "${ - (nixpkgs.legacyPackages.${system}.writeScriptBin scriptName '' + mkApp = + scriptName: system: + let + pkgs = perSystem.${system}.pkgs; + in + { + type = "app"; + program = "${ + (pkgs.writeScriptBin scriptName '' #!/usr/bin/env bash - PATH=${nixpkgs.legacyPackages.${system}.git}/bin:$PATH + PATH=${pkgs.git}/bin:$PATH echo "Running ${scriptName} for ${system}" sudo chmod +x ${self}/apps/${system}/${scriptName} exec ${self}/apps/${system}/${scriptName} '') - }/bin/${scriptName}"; - }; + }/bin/${scriptName}"; + }; mkDarwinApps = system: { "apply" = mkApp "apply" system; @@ -147,15 +184,23 @@ in { devShells = forAllSystems devShell; - apps = nixpkgs.lib.genAttrs darwinSystems mkDarwinApps; + apps = lib.genAttrs darwinSystems mkDarwinApps; - darwinConfigurations = nixpkgs.lib.genAttrs darwinSystems ( + darwinConfigurations = lib.genAttrs darwinSystems ( system: - darwin.lib.darwinSystem { + let + systemConfig = perSystem.${system}; + in + systemConfig.darwin.lib.darwinSystem { inherit system; - specialArgs = inputs // { inherit system; }; + specialArgs = inputs // { + inherit system; + nixpkgs = systemConfig.nixpkgs; + darwin = systemConfig.darwin; + home-manager = systemConfig.home-manager; + }; modules = [ - home-manager.darwinModules.home-manager + systemConfig.home-manager.darwinModules.home-manager nix-homebrew.darwinModules.nix-homebrew { nix-homebrew = { @@ -170,7 +215,7 @@ }; home-manager.sharedModules = - nixpkgs.lib.optionals (system != "x86_64-darwin") [ + lib.optionals (system != "x86_64-darwin") [ catppuccin.homeModules.catppuccin ]; }