{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05"; nixos-unstable.url = "github:NixOS/nixpkgs/master"; home-manager = { url = "github:rycee/home-manager/release-22.05"; inputs.nixpkgs.follows = "nixpkgs"; }; vim-extra-plugins.url = "github:m15a/nixpkgs-vim-extra-plugins"; }; outputs = inputs@{ self, nixpkgs, nixos-unstable, home-manager, vim-extra-plugins }: let x64System = "x86_64-linux"; darwinSystem = "aarch64-darwin"; wrapPkgsSystem = { system }: import nixpkgs rec { inherit system; unstable = wrapUnstablePkgsSystem { inherit system; }; config.allowUnfree = true; overlays = [ (final: prev: { inherit unstable; }) vim-extra-plugins.overlays.default ]; }; wrapUnstablePkgsSystem = { system }: import nixos-unstable { inherit system; config.allowUnfree = true; }; pkgsX64 = wrapPkgsSystem { system = x64System; }; unstableX64 = wrapUnstablePkgsSystem { system = x64System; }; utilsX64 = import ./lib { inherit nixpkgs nixos-unstable home-manager; pkgs = pkgsX64; unstable = unstableX64; system = x64System; }; pkgsDarwin = wrapPkgsSystem { system = darwinSystem; }; unstableDarwin = wrapUnstablePkgsSystem { system = darwinSystem; }; utilsDarwin = import ./lib { inherit nixpkgs nixos-unstable home-manager; pkgs = pkgsDarwin; unstable = unstableDarwin; system = darwinSystem; }; in { nixosConfigurations = { architect = utilsX64.host.mkHost { name = "architect"; users = [{ user = "giulio"; roles = [ ]; }]; }; gAluminum = utilsX64.host.mkHost { name = "gAluminum"; users = [{ user = "giulio"; roles = [ "desktop" "ssh" "git" ]; }]; roles = [ "gnome" ]; }; proxy = utilsX64.host.mkHost { name = "proxy"; users = [ ]; }; }; }; }