diff --git a/flake.nix b/flake.nix index 136e773..5eb8539 100644 --- a/flake.nix +++ b/flake.nix @@ -9,8 +9,7 @@ { description = "Kabbone's peronal NixOS Flake config"; - inputs = # All flake references used to build my NixOS setup. These are dependencies. - { + inputs = { nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; # Nix Packages nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; @@ -47,28 +46,64 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + }; + + outputs = { + self, + nixpkgs, + nixpkgs-unstable, + nixos-hardware, + home-manager, + home-manager-unstable, + agenix, + jovian-nixos, + microvm, + impermanence, + lanzaboote, + ... + } @ inputs: rec { + inherit (self) outputs; + systems = [ + "aarch64-linux" + "x86_64-linux" + ]; + + forAllSystems = nixpkgs.lib.genAttrs systems; + #in { + # Your custom packages + # Accessible through 'nix build', 'nix shell', etc + packages = forAllSystems (system: import ./packages nixpkgs.legacyPackages.${system}); + # Formatter for your nix files, available through 'nix fmt' + # Other options beside 'alejandra' include 'nixpkgs-fmt' + formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra); + + # Your custom packages and modifications, exported as overlays + overlays = import ./overlays {inherit inputs;}; + # Reusable nixos modules you might want to export + # These are usually stuff you would upstream into nixpkgs + #nixosModules = import ./modules/kabbone; + # Reusable home-manager modules you might want to export + # These are usually stuff you would upstream into home-manager + #homeManagerModules = import ./modules/home-manager; + + + nixosConfigurations = ( # NixOS configurations + import ./hosts { # Imports ./hosts/default.nix + inherit (nixpkgs) lib; + inherit inputs nixpkgs nixpkgs-unstable nixos-hardware home-manager home-manager-unstable agenix jovian-nixos microvm impermanence lanzaboote; # Also inherit home-manager so it does not need to be defined here. + nix.allowedUsers = [ "@wheel" ]; + security.sudo.execWheelOnly = true; + } + ); + + hydraJobs = { + "steamdeck" = nixosConfigurations.steamdeck.config.system.build.toplevel; + "hades" = nixosConfigurations.hades.config.system.build.toplevel; + "nasbak" = nixosConfigurations.nasbak.config.system.build.toplevel; + "jupiter" = nixosConfigurations.jupiter.config.system.build.toplevel; + "lifebook" = nixosConfigurations.lifebook.config.system.build.toplevel; + "kabtop" = nixosConfigurations.kabtop.config.system.build.toplevel; + "dmz" = nixosConfigurations.dmz.config.system.build.toplevel; }; - - outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, nixos-hardware, home-manager, home-manager-unstable, agenix, jovian-nixos, microvm, impermanence, lanzaboote, ... }: # Function that tells my flake which to use and what do what to do with the dependencies. - rec { - nixosConfigurations = ( # NixOS configurations - import ./hosts { # Imports ./hosts/default.nix - inherit (nixpkgs) lib; - inherit inputs nixpkgs nixpkgs-unstable nixos-hardware home-manager home-manager-unstable agenix jovian-nixos microvm impermanence lanzaboote; # Also inherit home-manager so it does not need to be defined here. - nix.allowedUsers = [ "@wheel" ]; - security.sudo.execWheelOnly = true; - } - ); - hydraJobs = { - "steamdeck" = nixosConfigurations.steamdeck.config.system.build.toplevel; - "hades" = nixosConfigurations.hades.config.system.build.toplevel; - "nasbak" = nixosConfigurations.nasbak.config.system.build.toplevel; - "jupiter" = nixosConfigurations.jupiter.config.system.build.toplevel; - "lifebook" = nixosConfigurations.lifebook.config.system.build.toplevel; - "kabtop" = nixosConfigurations.kabtop.config.system.build.toplevel; - "dmz" = nixosConfigurations.dmz.config.system.build.toplevel; - }; - }; - - + }; } diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..7061401 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,19 @@ +{inputs, ...}: { + # This one brings our custom packages from the 'pkgs' directory + additions = final: _prev: import ../packages {pkgs = final;}; + + modifications = final: prev: { + mealie = final.unstable.mealie; + }; + + + # When applied, the unstable nixpkgs set (declared in the flake inputs) will + # be accessible through 'pkgs.unstable' + unstable-packages = final: _prev: { + unstable = import inputs.nixpkgs-unstable { + system = final.system; + config.allowUnfree = true; + }; + }; +} +