yep, more dotfiles
at main 2.3 kB view raw
1{ self 2, lib 3, ... 4}: 5 6let 7 inherit (self.inputs) home-manager unixpkgs nix-darwin; 8 9 inherit (nix-darwin.lib) darwinSystem; 10 inherit (home-manager.lib) homeManagerConfiguration; 11in 12rec { 13 forAllSystems = lib.genAttrs [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ]; 14 15 specialModuleArgs = pkgs: { 16 # this flake 17 inherit self; 18 # local flake library 19 llib = import ../. pkgs; 20 # local packages set 21 lpkgs = import ../../pkgs pkgs; 22 # unstable nixpkgs set 23 upkgs = import unixpkgs { 24 config = pkgs.config; 25 system = pkgs.stdenv.hostPlatform.system; 26 }; 27 # indicates if system is darwin 28 isDarwin = pkgs.stdenv.isDarwin; 29 }; 30 31 # NixOS related 32 nixos = { 33 createSystem = pkgs: modules: lib.nixosSystem { 34 inherit pkgs; 35 modules = modules ++ [ 36 ../../nixos/fragments/default.nix 37 ]; 38 specialArgs = specialModuleArgs pkgs; 39 }; 40 41 # `createSystem` modules 42 system = hostName: profile: { 43 imports = [ 44 ../../nixos/hardware/${hostName}.nix 45 ../../nixos/profiles/${profile}.nix 46 ]; 47 config.networking.hostName = hostName; 48 }; 49 host = hostName: { 50 imports = [ 51 ../../nixos/hardware/${hostName}.nix 52 ../../hosts/${hostName}/default.nix 53 ]; 54 config.networking.hostName = hostName; 55 }; 56 user = import ./user.nix; 57 managedDiskLayout = import ./managedDiskLayout.nix; 58 }; 59 60 # Darwin related 61 darwin = { 62 createSystem = pkgs: modules: darwinSystem { 63 inherit pkgs; 64 modules = modules ++ [ 65 ../../nixos/fragments/default.nix 66 ]; 67 specialArgs = specialModuleArgs pkgs; 68 }; 69 70 # `darwin.createSystem` modules 71 user = import ./user.nix; 72 }; 73 74 # Home Manager related 75 home-manager = { 76 createHome = pkgs: modules: homeManagerConfiguration { 77 inherit pkgs; 78 modules = modules ++ [ 79 ../../home-manager/fragments/default.nix 80 ../../home-manager/options.nix 81 ]; 82 extraSpecialArgs = (specialModuleArgs pkgs) // { osConfig = null; }; 83 }; 84 85 # `home-manager.createHome` modules 86 home = username: home-dir: profile: { 87 imports = [ ../../home-manager/profiles/${profile}.nix ]; 88 89 config = { 90 home.username = username; 91 home.homeDirectory = home-dir; 92 }; 93 }; 94 }; 95}