{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.11"; nixos-unstable.url = "github:NixOS/nixpkgs/master"; home-manager = { url = "github:nix-community/home-manager/release-22.11"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, nixos-unstable, home-manager }: let sysLinuxX64 = "x86_64-linux"; sysDarwin = "aarch64-darwin"; sysLinuxAarch = "aarch64-linux"; wrapPkgsSystem = { system }: import nixpkgs rec { inherit system; unstable = wrapUnstablePkgsSystem { inherit system; }; config.allowUnfree = true; overlays = [ (final: prev: { inherit unstable; }) ]; }; wrapUnstablePkgsSystem = { system }: import nixos-unstable { inherit system; config.allowUnfree = true; }; wrapUtils = { pkgs, unstable, system }: import ./lib { inherit nixpkgs nixos-unstable home-manager system pkgs unstable; }; pkgsLinuxX64 = wrapPkgsSystem { system = sysLinuxX64; }; unstableLinuxX64 = wrapUnstablePkgsSystem { system = sysLinuxX64; }; utilsLinuxX64 = wrapUtils { system = sysLinuxX64; pkgs = pkgsLinuxX64; unstable = unstableLinuxX64; }; pkgsLinuxAarch = wrapPkgsSystem { system = sysLinuxAarch; }; unstableLinuxAarch = wrapUnstablePkgsSystem { system = sysLinuxAarch; }; utilsLinuxAarch = wrapUtils { system = sysLinuxAarch; pkgs = pkgsLinuxAarch; unstable = unstableLinuxAarch; }; pkgsDarwin = wrapPkgsSystem { system = sysDarwin; }; unstableDarwin = wrapUnstablePkgsSystem { system = sysDarwin; }; utilsDarwin = wrapUtils { system = sysDarwin; pkgs = pkgsDarwin; unstable = unstableDarwin; }; in { nixosConfigurations = { architect = utilsLinuxX64.host.mkHost { name = "architect"; users = [{ user = "giulio"; roles = [ ]; }]; }; gAluminum = utilsLinuxX64.host.mkHost { name = "gAluminum"; users = [{ user = "giulio"; roles = [ "desktop" "ssh" "git" ]; }]; roles = [ "gnome" ]; }; }; homeConfigurations = { giulioMac = utilsDarwin.user.mkHMUser { name = "giulio"; roles = [ "ssh" ]; }; giulioAarch = utilsLinuxAarch.user.mkHMUser { name = "giulio"; roles = [ "ssh" ]; }; giulioX64 = utilsLinuxX64.user.mkHMUser { name = "giulio"; roles = [ "ssh" ]; }; }; }; }