{ description = "A very basic flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; plasma-manager = { url = "github:nix-community/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; google-cookie-retrieval = { url = "git+https://git.johnogle.info/johno/google-cookie-retrieval.git"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixos-wsl, ... } @ inputs: let baseModules = [ ./roles inputs.home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ]; home-manager.extraSpecialArgs = { globalInputs = inputs; }; } ]; in { nixosConfigurations.nix-book = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = baseModules ++ [ ./machines/nix-book/configuration.nix { home-manager.users.johno = { imports = [ ./home/home-laptop-compact.nix ]; # Machine-specific overrides home.i3_sway.extraSwayConfig = { output.eDP-1.scale = "1.75"; }; }; home-manager.extraSpecialArgs = { inherit system; }; } ]; }; nixosConfigurations.boxy = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = baseModules ++ [ ./machines/boxy/configuration.nix inputs.home-manager.nixosModules.home-manager { home-manager.users.johno = import ./home/home-media-center.nix; home-manager.extraSpecialArgs = { inherit system; }; } ]; }; nixosConfigurations.wixos = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = baseModules ++ [ nixos-wsl.nixosModules.default ./machines/wixos/configuration.nix inputs.home-manager.nixosModules.home-manager { home-manager.users.johno = import ./home/home-desktop.nix; home-manager.extraSpecialArgs = { inherit system; }; } ]; }; nixosConfigurations.zix790prors = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = baseModules ++ [ ./machines/zix790prors/configuration.nix inputs.home-manager.nixosModules.home-manager { home-manager.users.johno = import ./home/home-desktop.nix; home-manager.extraSpecialArgs = { inherit system; }; } ]; }; # Live USB ISO configuration nixosConfigurations.live-usb = nixpkgs.lib.nixosSystem rec { system = "x86_64-linux"; modules = baseModules ++ [ ./machines/live-usb/configuration.nix { home-manager.users.nixos = import ./home/home-live-usb.nix; home-manager.extraSpecialArgs = { inherit system; }; } ]; }; # Standalone home-manager configurations for non-NixOS systems homeConfigurations."johno@desktop" = inputs.home-manager.lib.homeManagerConfiguration { pkgs = inputs.nixpkgs.legacyPackages."x86_64-linux"; modules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ./home/home-desktop.nix ]; extraSpecialArgs = { system = "x86_64-linux"; globalInputs = inputs; }; }; homeConfigurations."johno@laptop-compact" = inputs.home-manager.lib.homeManagerConfiguration { pkgs = inputs.nixpkgs.legacyPackages."x86_64-linux"; modules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ./home/home-laptop-compact.nix ]; extraSpecialArgs = { system = "x86_64-linux"; globalInputs = inputs; }; }; # Legacy configuration for backward compatibility homeConfigurations."johno" = inputs.home-manager.lib.homeManagerConfiguration { pkgs = inputs.nixpkgs.legacyPackages."x86_64-linux"; modules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ./home/home-desktop.nix ]; extraSpecialArgs = { system = "x86_64-linux"; globalInputs = inputs; }; }; }; }