about summary refs log blame commit diff
path: root/flake.nix
blob: 757dccbb502d0aa25484873d14c87647a7d50f53 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
 
                                                       

            
                                                        
 
                    
                                                       

                                         
 




                                         

                                                 

                                                           




                                         
                                         
 

                                              



                                                      
 




                                       




                                      




                                                    




                                      



                                        

    



































































                                                            
                       




                          

                                                         

                        
                      
                          
                                        
         
 

                                                       
                        
                        
                      
                           
         
 

                                                      
                       
                        
                     
                           
                       
         
 

                                                                  
                       
                        

                           
         
 















                                                                                                        
 

                                                                                                            
 

                                   
 
{
  description = "My Nix(\"OS\" or \"\") configuration";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";

    home-manager = {
      url = "github:nix-community/home-manager/master";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nix-darwin = {
      url = "github:LnL7/nix-darwin";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    hardware.url = "github:NixOS/nixos-hardware";

    impermanence.url = "github:nix-community/impermanence";

    deploy-rs = {
      url = "github:serokell/deploy-rs";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    nur.url = "github:nix-community/NUR";

    nixtest.url = "github:jetpack-io/nixtest";

    nix-index = {
      url = "github:nix-community/nix-index-database";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    hosts = {
      url = "github:StevenBlack/hosts";
      flake = false;
    };

    tpm = {
      url = "github:tmux-plugins/tpm";
      flake = false;
    };

    zen-browser = {
      url = "github:0xc000022070/zen-browser-flake";
      inputs.nixpkgs.follows = "nixpkgs";
    };

    arkenfox-userjs = {
      url = "github:arkenfox/user.js";
      flake = false;
    };

    wallpapers = {
      url = "github:Baitinq/Wallpapers";
      flake = false;
    };
  };

  outputs = inputs @ {
    self,
    nixpkgs,
    home-manager,
    nix-darwin,
    ...
  }: let
    user = "baitinq";

    secrets = import ./secrets;

    dotfiles = ./dotfiles;

    hosts = [
      {
        host = "phobos";
        extraOverlays = [];
        extraModules = [];
        timezone = secrets.main_timezone;
        location = secrets.main_location;
      }
      {
        host = "luna";
        extraOverlays = [];
        extraModules = [];
        timezone = secrets.main_timezone;
        location = secrets.main_location;
      }
    ];

    hardwares = [
      {
        hardware = "pc";
        stateVersion = "22.05";
      }
      {
        hardware = "laptop";
        stateVersion = "22.05";
      }
      {
        hardware = "chromebook";
        stateVersion = "22.05";
      }
      {
        hardware = "thinkpad";
        stateVersion = "22.05";
      }
      {
        hardware = "virtualbox";
        stateVersion = "22.05";
      }
    ];

    systems = [
      {system = "x86_64-linux";}
      {system = "x86_64-darwin";}
      {system = "aarch64-linux";}
      {system = "aarch64-darwin";}
    ];

    commonInherits = {
      inherit (nixpkgs) lib;
      inherit inputs nixpkgs home-manager nix-darwin;
      inherit user secrets dotfiles hosts hardwares systems;
    };
  in {
    nixosConfigurations = import ./hosts (commonInherits
      // {
        isNixOS = true;
        isMacOS = false;
        isIso = false;
        isHardware = true;
      });

    darwinConfigurations = import ./hosts (commonInherits
      // {
        isNixOS = false;
        isMacOS = true;
        isIso = false;
        isHardware = true;
        user = "${secrets.darwin_user}";
      });

    homeConfigurations = import ./hosts (commonInherits
      // {
        isNixOS = false;
        isMacOS = false;
        isIso = false;
        isHardware = false;
      });

    isoConfigurations = import ./hosts (commonInherits
      // {
        isNixOS = true;
        isMacOS = false;
        isIso = true;
        isHardware = false;
        user = "nixos";
      });

    nixosNoHardwareConfigurations = import ./hosts (commonInherits
      // {
        isNixOS = true;
        isMacOS = false;
        isIso = false;
        isHardware = false;
      });

    deploy = {
      magicRollback = true;
      autoRollback = true;

      nodes =
        builtins.mapAttrs
        (_: nixosConfig: {
          hostname = "${nixosConfig.config.networking.hostName}";

          profiles.system = {
            user = "root";
            path = inputs.deploy-rs.lib.${nixosConfig.config.nixpkgs.system}.activate.nixos nixosConfig;
          };
        })
        self.nixosConfigurations;
    };

    # This is highly advised, and will prevent many possible mistakes
    checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) inputs.deploy-rs.lib;

    tests = inputs.nixtest.run ./.;
  };
}