{ description = "NixOS configuration"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, home-manager, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; inherit (self) outputs; common = import ./common.nix; theme = import ../shared/theme.nix; in { defaultPackage.${system} = home-manager.defaultPackage.${system}; # Adds the nix fmt command to format nix files formatter.${system} = pkgs.nixfmt-rfc-style; nixosConfigurations.${common.hostname} = nixpkgs.lib.nixosSystem { system = system; specialArgs = { inherit outputs inputs common theme ; }; # Pass args to modules modules = [ ./configuration.nix home-manager.nixosModules.home-manager { home-manager = { # Backups conflicting files in case of error backupFileExtension = "bkp"; useGlobalPkgs = true; useUserPackages = true; # Passes inputs as an argument to home-manager extraSpecialArgs = { inherit inputs common theme; }; users.${common.username} = import ./home-manager; }; } ./overlays.nix ]; }; overlays = { # Gives access to unstable packages everywhere unstable-packages = final: _prev: { unstable = import nixpkgs-unstable { system = final.system; config.allowUnfree = true; }; }; }; }; }