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 {
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}