{ description = "JawZ NixOS flake setup"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.05"; unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable"; master.url = "github:nixos/nixpkgs?ref=master"; jellyfin.url = "github:nixos/nixpkgs?rev=c82ad1b10b310442e685bc150199747fdee92095"; home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming.url = "github:fufexan/nix-gaming"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, unstable, master, jellyfin, home-manager, sops-nix , ... }@inputs: let inherit (self) outputs; lib = nixpkgs.lib // home-manager.lib; system = "x86_64-linux"; makePkgs = repo: import repo { inherit system; config.allowUnfree = true; }; pkgs = makePkgs nixpkgs; pkgsU = makePkgs unstable; pkgsM = makePkgs master; pkgsJ = makePkgs jellyfin; overlays = [ (import ./overlay.nix { inherit pkgs pkgsU pkgsM pkgsJ; }) ]; in { inherit lib pkgs; formatter = pkgs.alejandra; nixosConfigurations = { workstation = lib.nixosSystem { inherit system; specialArgs = { inherit inputs outputs; }; modules = [ ./hosts/workstation/configuration.nix sops-nix.nixosModules.sops ({ pkgs, ... }: { nixpkgs.overlays = overlays; }) ]; }; miniserver = lib.nixosSystem { inherit system; specialArgs = { inherit inputs outputs; }; modules = [ ./hosts/miniserver/configuration.nix sops-nix.nixosModules.sops ({ pkgs, ... }: { nixpkgs.overlays = overlays; }) ]; }; server = lib.nixosSystem { inherit system; specialArgs = { inherit inputs outputs; }; modules = [ ./hosts/server/configuration.nix sops-nix.nixosModules.sops ({ pkgs, ... }: { nixpkgs.overlays = overlays; }) ]; }; }; }; }