{ description = "Julian's system configuration"; inputs = { nixpkgs.url = "nixpkgs/nixos-24.05"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; plasma-manager = { url = "github:nix-community/plasma-manager"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; }; outputs = { self, nixpkgs, nixpkgs-unstable, nixos-hardware, home-manager, plasma-manager }: let system = "x86_64-linux"; # Common specialArgs for all systems commonSpecialArgs = { pkgs-unstable = import nixpkgs-unstable { inherit system; config.allowUnfree = true; }; }; # Helper function to create a system configuration mkSystem = { modules, hardware ? [] }: nixpkgs.lib.nixosSystem { inherit system; specialArgs = commonSpecialArgs; modules = [ home-manager.nixosModules.home-manager ] ++ hardware ++ modules; }; # Common desktop modules commonDesktopModules = [ ./systems/common.nix ./users/jsutter.nix ./desktop/plasma.nix ./desktop/dev.nix ./desktop/office.nix ./desktop/gaming.nix ./desktop/virtualization.nix ./desktop/crypto.nix ]; in { nixosConfigurations = { framework = mkSystem { hardware = [ nixos-hardware.nixosModules.framework-16-7040-amd ]; modules = commonDesktopModules ++ [ ./systems/framework.nix ./desktop/daw.nix ]; }; aurora = mkSystem { modules = commonDesktopModules ++ [ ./systems/aurora.nix ]; }; labrizor = mkSystem { modules = [ ./systems/common.nix ./systems/labrizor.nix ./users/jsutter.nix ./users/isutter.nix ./users/aksutter.nix ./desktop/plasma.nix ./desktop/3dprinting.nix ./desktop/2dprinting.nix ./desktop/office.nix ]; }; skip01 = mkSystem { modules = [ ./systems/common.nix ./systems/skip01.nix ./users/jsutter.nix ./servers/common.nix ]; }; }; }; }