{ description = "NixOS configuration"; inputs = { # nixpkgs nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # home manager home-manager.url = "github:nix-community/home-manager/master"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; # hyprland hyprland.url = "github:hyprwm/Hyprland"; hyprland.inputs.nixpkgs.follows = "nixpkgs"; # hyprland plugins hyprland-plugins.url = "github:hyprwm/hyprland-plugins"; hyprland-plugins.inputs.hyprland.follows = "hyprland"; # hyprland hy3 hy3.url = "github:outfoxxed/hy3"; hy3.inputs.hyprland.follows = "hyprland"; # sops sops-nix.url = "github:Mic92/sops-nix"; sops-nix.inputs.nixpkgs.follows = "nixpkgs"; # astal astal.url = "github:aylur/astal"; astal.inputs.nixpkgs.follows = "nixpkgs"; # talc talc.url = "git+https://g.trimill.xyz/talc"; talc.inputs.nixpkgs.follows = "nixpkgs"; # unofficial-homestuck-collection unofficial-homestuck-collection.url = "git+https://g.freya.cat/freya/unofficial-homestuck-collection-nix"; unofficial-homestuck-collection.inputs.nixpkgs.follows = "nixpkgs"; # apple-fonts apple-fonts.url = "github:Lyndeno/apple-fonts.nix"; apple-fonts.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = {nixpkgs, ...} @ inputs: let options = import ./options.nix; systems = ["x86_64-linux"]; perSystem = func: builtins.listToAttrs (map ( system: let pkgs = nixpkgs.legacyPackages.${system}; in { name = system; value = func pkgs system; } ) systems); buildSystem = file: system: inputs.nixpkgs.lib.nixosSystem { inherit system; specialArgs = {inherit inputs;}; modules = [ options ./home ./modules ./system file ]; }; in rec { nixosConfigurations = { shinji = buildSystem ./hosts/shinji "x86_64-linux"; kaworu = buildSystem ./hosts/kaworu "x86_64-linux"; thinkpad = buildSystem ./hosts/thinkpad "x86_64-linux"; }; homeConfigurations = { shinji = nixosConfigurations.shinji.config.home-manager.users.${options.user}.home; kaworu = nixosConfigurations.kaworu.config.home-manager.users.${options.user}.home; thinkpad = nixosConfigurations.thinkpad.config.home-manager.users.${options.user}.home; }; lib = import ./lib { inherit inputs options; inherit (nixpkgs) lib; }; packages = perSystem ( pkgs: system: import ./pkgs { inherit pkgs inputs system options; inherit (nixpkgs) lib; } ); legacyPackages = packages; formatter = perSystem ( pkgs: system: pkgs.alejandra ); devShell = perSystem ( pkgs: system: pkgs.mkShell {} ); }; }