128 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{inputs}: let
 | 
						|
  util = (import ./default.nix) {inherit inputs;};
 | 
						|
  outputs = inputs.self.outputs;
 | 
						|
 | 
						|
  lib = inputs.lib;
 | 
						|
  nixpkgs = inputs.nixpkgs;
 | 
						|
  home-manager = inputs.home-manager;
 | 
						|
  nix-darwin = inputs.nix-darwin;
 | 
						|
  sops-nix = inputs.sops-nix;
 | 
						|
  nix-syncthing = inputs.nix-syncthing;
 | 
						|
  disko = inputs.disko;
 | 
						|
  impermanence = inputs.impermanence;
 | 
						|
  # lix-module = inputs.lix-module;
 | 
						|
 | 
						|
  systems = [
 | 
						|
    "aarch64-darwin"
 | 
						|
    "aarch64-linux"
 | 
						|
    "x86_64-darwin"
 | 
						|
    "x86_64-linux"
 | 
						|
  ];
 | 
						|
  forEachSystem = nixpkgs.lib.genAttrs systems;
 | 
						|
  pkgsFor = system: nixpkgs.legacyPackages.${system};
 | 
						|
 | 
						|
  common-modules = [
 | 
						|
    ../modules/common-modules
 | 
						|
  ];
 | 
						|
 | 
						|
  home-manager-modules =
 | 
						|
    common-modules
 | 
						|
    ++ [
 | 
						|
      sops-nix.homeManagerModules.sops
 | 
						|
      impermanence.homeManagerModules.impermanence
 | 
						|
      ../modules/home-manager-modules
 | 
						|
    ];
 | 
						|
 | 
						|
  home-manager-config = nixpkgs: {
 | 
						|
    home-manager.useUserPackages = true;
 | 
						|
    home-manager.backupFileExtension = "backup";
 | 
						|
    home-manager.extraSpecialArgs = {
 | 
						|
      inherit inputs outputs util;
 | 
						|
    };
 | 
						|
    home-manager.users = import ../configurations/home-manager (nixpkgs
 | 
						|
      // {
 | 
						|
        osConfig = nixpkgs.config;
 | 
						|
      });
 | 
						|
    home-manager.sharedModules = home-manager-modules;
 | 
						|
  };
 | 
						|
 | 
						|
  system-modules =
 | 
						|
    common-modules
 | 
						|
    ++ [
 | 
						|
      home-manager-config
 | 
						|
      ../modules/system-modules
 | 
						|
    ];
 | 
						|
in {
 | 
						|
  forEachPkgs = lambda: forEachSystem (system: lambda system (pkgsFor system));
 | 
						|
 | 
						|
  mkUnless = condition: yes: (lib.mkIf (!condition) yes);
 | 
						|
  mkIfElse = condition: yes: no:
 | 
						|
    lib.mkMerge [
 | 
						|
      (lib.mkIf condition yes)
 | 
						|
      (lib.mkUnless condition no)
 | 
						|
    ];
 | 
						|
 | 
						|
  mkNixosInstaller = host: userKeys:
 | 
						|
    nixpkgs.lib.nixosSystem {
 | 
						|
      modules = [
 | 
						|
        {
 | 
						|
          # TODO: authorized keys for all users and hosts
 | 
						|
        }
 | 
						|
        ../configurations/nixos/${host}
 | 
						|
      ];
 | 
						|
    };
 | 
						|
 | 
						|
  mkNixosSystem = host:
 | 
						|
    nixpkgs.lib.nixosSystem {
 | 
						|
      specialArgs = {inherit inputs outputs util;};
 | 
						|
      modules =
 | 
						|
        system-modules
 | 
						|
        ++ [
 | 
						|
          sops-nix.nixosModules.sops
 | 
						|
          nix-syncthing.nixosModules.syncthing
 | 
						|
          impermanence.nixosModules.impermanence
 | 
						|
          home-manager.nixosModules.home-manager
 | 
						|
          disko.nixosModules.disko
 | 
						|
          # lix-module.nixosModules.default
 | 
						|
          ../modules/nixos-modules
 | 
						|
          ../configurations/nixos/${host}
 | 
						|
        ];
 | 
						|
    };
 | 
						|
 | 
						|
  mkDarwinSystem = host:
 | 
						|
    nix-darwin.lib.darwinSystem {
 | 
						|
      specialArgs = {inherit inputs outputs util;};
 | 
						|
      modules =
 | 
						|
        system-modules
 | 
						|
        ++ [
 | 
						|
          sops-nix.darwinModules.sops
 | 
						|
          home-manager.darwinModules.home-manager
 | 
						|
          ../modules/darwin-modules
 | 
						|
          ../configurations/darwin/${host}
 | 
						|
        ];
 | 
						|
    };
 | 
						|
 | 
						|
  mkHome = {
 | 
						|
    user,
 | 
						|
    host,
 | 
						|
    system,
 | 
						|
    osConfig,
 | 
						|
  }:
 | 
						|
    home-manager.lib.homeManagerConfiguration {
 | 
						|
      pkgs = pkgsFor system;
 | 
						|
      extraSpecialArgs = {
 | 
						|
        inherit inputs util outputs osConfig;
 | 
						|
      };
 | 
						|
      modules =
 | 
						|
        home-manager-modules
 | 
						|
        ++ [
 | 
						|
          ../configurations/home-manager/${user}
 | 
						|
        ];
 | 
						|
    };
 | 
						|
 | 
						|
  syncthingConfiguration = nix-syncthing.lib.syncthingConfiguration {
 | 
						|
    modules = [
 | 
						|
      (import ../configurations/syncthing)
 | 
						|
    ];
 | 
						|
  };
 | 
						|
}
 |