{ inputs = { srvos = { url = "github:nix-community/srvos"; }; nixos-hardware = { url = "github:NixOS/nixos-hardware"; }; vpsadminos.url = "github:vpsfreecz/vpsadminos/staging"; nanopi = { url = "github:alinnow/nixos-nanopi"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs.follows = "srvos/nixpkgs"; darwin = { url = "github:lnl7/nix-darwin/master"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; rosetta-builder = { url = "github:cpick/nix-rosetta-builder"; inputs.nixpkgs.follows = "nixpkgs"; }; nur = { url = "github:nix-community/nur"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:nix-community/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; angrr.url = "github:linyinfeng/angrr"; elgit.url = "git+https://git.alin.ovh/elgit?shallow=0"; mycal.url = "git+https://git.alin.ovh/mycal?shallow=0"; searchix.url = "git+https://git.alin.ovh/searchix?shallow=0"; scriptura = { url = "git+https://git.alin.ovh/scriptura?shallow=0"; inputs.nixpkgs.follows = "nixpkgs"; }; tg-auth.url = "https://codeberg.org/opia/tg-auth/archive/main.tar.gz"; minimal-emacs = { url = "github:jamescherti/minimal-emacs.d"; flake = false; }; nixvim = { url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; agenix = { url = "github:ryantm/agenix"; inputs = { nixpkgs.follows = "srvos/nixpkgs"; darwin.follows = "darwin"; home-manager.follows = "home-manager"; }; }; }; outputs = inputs: with inputs; let # System types to support. supportedSystems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; # Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'. forAllSystems = nixpkgs.lib.genAttrs supportedSystems; mkHomeConfiguration = { modules, system }: home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs { inherit system; overlays = [ agenix.overlays.default nur.overlays.default scriptura.overlays.default (self: super: { personal = import ./packages/overlay.nix self super; }) ]; }; extraSpecialArgs = { inherit inputs; }; modules = [ nixvim.homeModules.nixvim stylix.homeModules.stylix scriptura.homeModules.scriptura ] ++ modules; }; in { # build with `nixos-rebuild build-image --image-variant iso-installer` nixosConfigurations.minimal-iso = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ ./system/hosts/installer.nix ]; }; nixosConfigurations.prefect = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = ( with nixos-hardware.nixosModules; [ ./system/hosts/prefect.nix common-cpu-amd common-cpu-amd-pstate common-pc-ssd common-pc common-gpu-nvidia-nonprime ] ); }; nixosConfigurations.r5 = nixpkgs.lib.nixosSystem { system = "aarch64-linux"; modules = [ agenix.nixosModules.default srvos.nixosModules.server nanopi.nixosModules.r5s ./system/hosts/r5.nix ./system/hosts/r5-hardware.nix ]; }; nixosConfigurations.smrk = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ srvos.nixosModules.server vpsadminos.nixosConfigurations.containerUnstable agenix.nixosModules.default ./packages/modules/nixos/laminar.nix ./system/hosts/smrk.nix ]; }; nixosConfigurations.buk = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = [ srvos.nixosModules.server vpsadminos.nixosConfigurations.containerUnstable agenix.nixosModules.default ./packages/modules/nixos/laminar.nix ./system/roles/remote.nix ./system/roles/server.nix ./system/roles/ci-runner.nix ./system/roles/nix-remote-builder.nix { system.stateVersion = "25.11"; networking.hostName = "buk"; nix.settings.max-jobs = 4; } ]; }; darwinConfigurations.marvin = darwin.lib.darwinSystem { system = "aarch64-darwin"; modules = [ { nixpkgs.overlays = [ angrr.overlays.default ]; } rosetta-builder.darwinModules.default srvos.darwinModules.desktop angrr.darwinModules.angrr ./system/hosts/marvin.nix ./packages/modules/darwin/caddy ]; }; homeConfigurations."alin@marvin" = mkHomeConfiguration { system = "aarch64-darwin"; modules = [ ./user/hosts/marvin.nix ./private/ssh.nix ]; }; homeConfigurations."alin@prefect" = mkHomeConfiguration { system = "x86_64-linux"; modules = [ ./user/hosts/prefect.nix ./private/ssh.nix ]; }; homeConfigurations."alin@r5" = mkHomeConfiguration { system = "aarch64-linux"; modules = [ ./user/hosts/r5.nix ]; }; homeConfigurations."alin@buk" = mkHomeConfiguration { system = "x86_64-linux"; modules = [ ./user/hosts/server.nix { home.stateVersion = "25.11"; } ]; }; devShells = forAllSystems ( system: let pkgs = import nixpkgs { inherit system; }; in { default = pkgs.mkShell { packages = with pkgs; [ nixos-option nixos-rebuild-ng (writeShellScriptBin "nixos-rebuild" '' exec ${lib.getExe nixos-rebuild-ng} "$@" '') vpsfree-client ]; }; secrets = pkgs.mkShell { packages = [ agenix.packages.${system}.default ]; }; } ); }; }