{ description = "JawZ NixOS flake setup"; inputs = { nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-25.05"; nixpkgs-small.url = "github:nixos/nixpkgs?ref=nixos-25.05-small"; nixpkgs-unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable"; ucodenix.url = "github:e-tho/ucodenix"; doom-emacs = { url = "github:marienz/nix-doom-emacs-unstraightened"; inputs.nixpkgs.follows = ""; }; jawz-scripts = { url = "git+https://git.servidos.lat/lebubu/scripts.git"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { url = "github:nix-community/nur"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-gaming = { url = "github:fufexan/nix-gaming"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland = { url = "github:hyprwm/Hyprland"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager?ref=release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:danth/stylix/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; }; nixtendo-switch = { url = "github:nyawox/nixtendo-switch"; inputs.nixpkgs.follows = "nixpkgs"; }; zen-browser = { url = "github:0xc000022070/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, jawz-scripts, ... }@inputs: let inherit (self) outputs; system = "x86_64-linux"; mkpkgs = repo: import repo { inherit system; config.allowUnfree = true; }; langList = builtins.filter (name: name != "emacs.nix") ( builtins.map (file: builtins.replaceStrings [ ".nix" ] [ "" ] (baseNameOf file)) ( builtins.attrNames (builtins.readDir ./modules/dev) ) ); createConfig = name: local-nixpkgs: let lib = local-nixpkgs.lib // inputs.home-manager.lib; in lib.nixosSystem { inherit system; specialArgs = { inherit inputs outputs; }; modules = [ { nixpkgs.overlays = [ (import ./config/overlay.nix { inherit mkpkgs inputs; }) inputs.doom-emacs.overlays.default ]; } { nix.registry = { jawz.flake = self; unstable.flake = inputs.nixpkgs-unstable; }; } ./hosts/${name}/configuration.nix inputs.nur.modules.nixos.default inputs.sops-nix.nixosModules.sops inputs.stylix.nixosModules.stylix inputs.nixtendo-switch.nixosModules.nixtendo-switch ]; }; in { nixosConfigurations = { workstation = createConfig "workstation" inputs.nixpkgs; miniserver = createConfig "miniserver" inputs.nixpkgs-small; server = createConfig "server" inputs.nixpkgs-small; }; packages.${system} = (jawz-scripts.packages.${system} or { }); devShells.${system} = builtins.listToAttrs ( map (lang: { name = lang; value = self.nixosConfigurations.shell.config.devShells.${lang}; }) langList ); }; }