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}