{ description = "Geoffrey Frogeye's base configurations"; inputs = { nixpkgs.url = "nixpkgs/nixos-23.11"; # OS disko = { url = "disko"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-hardware.url = "nixos-hardware"; # NOD nix-on-droid = { url = "github:nix-community/nix-on-droid/release-23.05"; # No 23.11 :( inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; # HM home-manager = { url = "home-manager/release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; }; stylix = { url = "github:danth/stylix"; inputs.nixpkgs.follows = "nixpkgs"; }; nixvim = { url = "github:GeoffreyFrogeye/nixvim/frogeye-23.11"; # 24.05 Ensure merged: https://github.com/nix-community/nixvim/pull/953 # url = "github:nix-community/nixvim"; inputs.nixpkgs.follows = "nixpkgs"; }; nixgl = { url = "github:guibou/nixGL"; inputs.nixpkgs.follows = "nixpkgs"; }; nur.url = "github:nix-community/NUR"; }; outputs = { self, nixpkgs, disko, nixos-hardware, nix-on-droid, home-manager, stylix, nixvim, nixgl, nur, ... }: let nixpkgsConfig = { overlays = [ nixgl.overlay ]; config.allowUnfree = true; }; lib = { nixosSystem = { system, modules ? [ ] }: nixpkgs.lib.nixosSystem { inherit system; modules = modules ++ [ self.nixosModules.dotfiles { nixpkgs = nixpkgsConfig; home-manager.sharedModules = [ self.homeManagerModules.dotfiles ]; } ]; }; nixOnDroidConfiguration = { modules ? [ ] }: nix-on-droid.lib.nixOnDroidConfiguration { pkgs = import nixpkgs (nixpkgsConfig // { system = "aarch64-linux"; # nod doesn't support anything else }); modules = modules ++ [ self.nixOnDroidModules.dotfiles { home-manager.sharedModules = [ self.homeManagerModules.dotfiles ]; } ]; }; homeManagerConfiguration = { system, modules ? [ ] }: home-manager.lib.homeManagerConfiguration { pkgs = import nixpkgs (nixpkgsConfig // { inherit system; }); modules = modules ++ [ self.homeManagerModules.dotfiles ]; }; }; in { lib = lib; nixosModules.dotfiles = { imports = [ ./os disko.nixosModules.disko home-manager.nixosModules.home-manager stylix.nixosModules.stylix ]; }; nixOnDroidModules.dotfiles = { imports = [ ./nod # home-manager is included ]; }; homeManagerModules.dotfiles = { imports = [ ./hm stylix.homeManagerModules.stylix nixvim.homeManagerModules.nixvim nur.hmModules.nur ]; }; nixosConfigurations.curacao = lib.nixosSystem { system = "x86_64-linux"; modules = [ ./curacao nixos-hardware.nixosModules.dell-g3-3779 ]; }; nixosConfigurations.curacao_usb = lib.nixosSystem { system = "x86_64-linux"; modules = [ ./curacao/usb.nix nixos-hardware.nixosModules.dell-g3-3779 ]; }; nixosConfigurations.pindakaas = lib.nixosSystem { system = "aarch64-linux"; modules = [ ./pindakaas nixos-hardware.nixosModules.pine64-pinebook-pro ]; }; nixosConfigurations.pindakaas-sd = lib.nixosSystem { system = "aarch64-linux"; modules = [ ./pindakaas/sd.nix nixos-hardware.nixosModules.pine64-pinebook-pro ]; }; nixOnDroidConfigurations.sprinkles = lib.nixOnDroidConfiguration { }; }; }