-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathlib.nix
107 lines (100 loc) · 2.94 KB
/
lib.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
{ self, inputs, config, lib, ... }:
let
specialArgsFor = rec {
common = {
flake = { inherit self inputs config; };
};
nixos = common;
darwin = common // {
rosettaPkgs = import inputs.nixpkgs { system = "x86_64-darwin"; };
};
};
nixosModules = {
# Linux home-manager module
home-manager = {
imports = [
inputs.home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = specialArgsFor.nixos;
}
];
};
# Common and useful setting across all platforms
common = { lib, ... }: {
nix = {
settings = {
# Use all CPU cores
max-jobs = lib.mkDefault "auto";
# Duh
experimental-features = lib.mkDefault "nix-command flakes";
};
};
};
};
homeModules = {
common = { pkgs, ... }: {
home.sessionPath = lib.mkIf pkgs.stdenv.isDarwin [
"/etc/profiles/per-user/$USER/bin" # To access home-manager binaries
"/nix/var/nix/profiles/system/sw/bin" # To access nix-darwin binaries
"/usr/local/bin" # Some macOS GUI programs install here
];
};
};
darwinModules = {
# macOS home-manager module
home-manager = {
imports = [
inputs.home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = specialArgsFor.darwin;
home-manager.sharedModules = [ homeModules.common ];
}
];
};
# nix-darwin module containing necessary configuration
# Required when using the DetSys installer
# cf. https://github.com/srid/nixos-unified/issues/52
nix-darwin = {
nix.useDaemon = true; # Required on multi-user Nix install
};
};
in
{
config = {
flake = {
nixos-unified.lib = {
inherit specialArgsFor;
mkLinuxSystem = { home-manager ? false }: mod: inputs.nixpkgs.lib.nixosSystem {
# Arguments to pass to all modules.
specialArgs = specialArgsFor.nixos;
modules = [
../configurations
nixosModules.common
mod
] ++ lib.optional home-manager nixosModules.home-manager;
};
mkMacosSystem = { home-manager ? false }: mod: inputs.nix-darwin.lib.darwinSystem {
specialArgs = specialArgsFor.darwin;
modules = [
../configurations
nixosModules.common
darwinModules.nix-darwin
mod
] ++ lib.optional home-manager darwinModules.home-manager;
};
mkHomeConfiguration = pkgs: mod: inputs.home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = specialArgsFor.common;
modules = [
homeModules.common
mod
];
};
};
};
};
}