{ inputs = { nixos-hardware.url = github:IvanMalison/nixos-hardware; nix = { url = github:IvanMalison/nix/master; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs = { url = path:./nixpkgs; }; home-manager = { url = path:./home-manager; inputs.nixpkgs.follows = "nixpkgs"; }; xmonad-contrib = { url = path:../dotfiles/config/xmonad/xmonad-contrib; inputs.nixpkgs.follows = "nixpkgs"; }; xmonad = { url = path:../dotfiles/config/xmonad/xmonad; inputs.nixpkgs.follows = "nixpkgs"; }; taffybar = { url = path:../dotfiles/config/taffybar/taffybar; inputs.nixpkgs.follows = "nixpkgs"; }; notifications-tray-icon = { url = github:IvanMalison/notifications-tray-icon/master; }; }; outputs = inputs@{ self, nix, nixpkgs, nixos-hardware, home-manager, taffybar, xmonad, xmonad-contrib, notifications-tray-icon }: let forAll = ({ ... }: { nix = { extraOptions = '' experimental-features = nix-command flakes ca-references ''; registry.nixpkgs.flake = nixpkgs; }; nixpkgs.overlays = [ nix.overlay xmonad.overlay xmonad-contrib.overlay notifications-tray-icon.overlay (import ../dotfiles/config/taffybar/overlay.nix) (import ./overlay.nix) ] ++ taffybar.overlays; imports = [ home-manager.nixosModule ]; home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.users.imalison = import ./home-manager.nix; }); mkNixosConfig = args@{ system ? "x86_64-linux", baseModules ? [ forAll ], modules ? [], specialArgs ? {}, ... }: nixpkgs.lib.nixosSystem (args // { inherit system; modules = baseModules ++ modules; specialArgs = { inherit inputs; } // specialArgs; }); in { nixosConfigurations = { ivanm-dfinity-razer = mkNixosConfig { modules = [ ./machines/ivanm-dfinity-razer.nix ]; }; ryzen-shine = mkNixosConfig { modules = [ ./machines/ryzen-shine.nix ]; }; adele = mkNixosConfig { modules = [ ./machines/adele.nix ]; }; biskcomp = mkNixosConfig { system = "aarch64-linux"; modules = [ ./machines/biskcomp.nix ]; }; air-gapped-pi = mkNixosConfig { system = "aarch64-linux"; modules = [ ./machines/air-gapped-pi.nix ]; }; }; }; }