yep, more dotfiles
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 { inherit (pkgs) system config; }; 24 # indicates if system is darwin 25 isDarwin = pkgs.stdenv.isDarwin; 26 }; 27 28 # NixOS related 29 nixos = { 30 createSystem = pkgs: modules: lib.nixosSystem { 31 inherit pkgs; 32 modules = modules ++ [ 33 ../../nixos/fragments/default.nix 34 ]; 35 specialArgs = specialModuleArgs pkgs; 36 }; 37 38 # `createSystem` modules 39 system = hostName: profile: { 40 imports = [ 41 ../../nixos/hardware/${hostName}.nix 42 ../../nixos/profiles/${profile}.nix 43 ]; 44 networking.hostName = hostName; 45 }; 46 user = import ./user.nix; 47 managedDiskLayout = import ./managedDiskLayout.nix; 48 }; 49 50 # Darwin related 51 darwin = { 52 createSystem = pkgs: modules: darwinSystem { 53 inherit pkgs; 54 modules = modules ++ [ 55 ../../nixos/fragments/default.nix 56 ]; 57 specialArgs = specialModuleArgs pkgs; 58 }; 59 60 # `darwin.createSystem` modules 61 user = import ./user.nix; 62 }; 63 64 # Home Manager related 65 home-manager = { 66 createHome = pkgs: modules: homeManagerConfiguration { 67 inherit pkgs; 68 modules = modules ++ [ 69 ../../home-manager/fragments/default.nix 70 ../../home-manager/options.nix 71 ]; 72 extraSpecialArgs = (specialModuleArgs pkgs) // { osConfig = null; }; 73 }; 74 75 # `home-manager.createHome` modules 76 home = username: home-dir: profile: { 77 imports = [ ../../home-manager/profiles/${profile}.nix ]; 78 79 config = { 80 home.username = username; 81 home.homeDirectory = home-dir; 82 }; 83 }; 84 }; 85}