{ description = "NixOS configuration"; inputs = { # nixpkgs nixpkgs.url = "github:nixos/nixpkgs/91e56b8907108960a13bb79ba6587524348b679c"; # 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"; # apple-fonts apple-fonts.url = "github:Lyndeno/apple-fonts.nix"; apple-fonts.inputs.nixpkgs.follows = "nixpkgs"; # nixos-wsl nixos-wsl.url = "github:nix-community/nixos-wsl"; nixos-wsl.inputs.nixpkgs.follows = "nixpkgs"; # rose-pine-hyprcursor rose-pine-hyprcursor.url = "github:ndom91/rose-pine-hyprcursor"; rose-pine-hyprcursor.inputs.nixpkgs.follows = "nixpkgs"; rose-pine-hyprcursor.inputs.hyprlang.follows = "hyprland/hyprlang"; }; outputs = { self, 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 self inputs system;}; 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"; wsl = buildSystem ./hosts/wsl "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 {} ); }; }