about summary refs log blame commit diff
path: root/flake.nix
blob: f77b46e84ca399110b985224e5371ab9d44660d5 (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";
    };

    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:Mic92/nix-index-database";

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

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

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

  outputs = inputs @ { self, nixpkgs, home-manager, ... }:
    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 = "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;
        inherit user secrets dotfiles hosts hardwares systems;
      };
    in
    {
      nixosConfigurations = import ./hosts (commonInherits // {
        isNixOS = true;
        isIso = false;
        isHardware = true;
      });

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

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

      nixosNoHardwareConfigurations = import ./hosts (commonInherits // {
        isNixOS = true;
        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 ./.;
    };
}