-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
127 lines (104 loc) · 3.12 KB
/
flake.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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
{
description = "Bobbbay's ~. Nix all the things!";
inputs = {
digga.url = "github:divnix/digga";
digga.inputs.nixpkgs.follows = "nixos";
digga.inputs.home-manager.follows = "home";
nixos.url = "github:nixos/nixpkgs/nixos-23.05";
latest.url = "github:nixos/nixpkgs/nixos-unstable";
nur.url = "github:nix-community/NUR";
home.url = "github:nix-community/home-manager/release-23.05";
home.inputs.nixpkgs.follows = "nixos";
agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixos";
nvfetcher.url = "github:berberman/nvfetcher";
nvfetcher.inputs.nixpkgs.follows = "nixos";
doom.url = "github:nix-community/nix-doom-emacs";
impermanence.url = "github:nix-community/impermanence";
};
outputs = {
self,
digga,
nixos,
latest,
nur,
home,
agenix,
nvfetcher,
doom,
impermanence,
...
} @ inputs:
digga.lib.mkFlake {
inherit self inputs;
channelsConfig = {allowUnfree = true;};
channels.nixos = {};
channels.latest = {};
lib = import ./lib {lib = digga.lib // nixos.lib;};
sharedOverlays = [
(final: prev: {
__dontExport = true;
lib = prev.lib.extend (lfinal: lprev: {
our = self.lib;
});
})
nur.overlay
# agenix.overlay
# nvfetcher.overlay
(import ./pkgs)
];
nixos = {
hostDefaults = {
system = "x86_64-linux";
channelName = "nixos";
imports = [(digga.lib.importExportableModules ./modules)];
modules = [
{lib.our = self.lib;}
digga.nixosModules.bootstrapIso
digga.nixosModules.nixConfig
home.nixosModules.home-manager
agenix.nixosModules.age
impermanence.nixosModules.impermanence
];
};
imports = [(digga.lib.importHosts ./hosts/nixos)];
hosts.NotYourLaptop = {};
importables = rec {
profiles =
digga.lib.rakeLeaves ./profiles
// {
users = digga.lib.rakeLeaves ./users;
};
suites = with profiles; rec {
base = [core.nixos users.bob users.root];
};
};
};
home = {
imports = [(digga.lib.importExportableModules ./home/modules)];
modules = [
doom.hmModule
];
importables = rec {
profiles = digga.lib.rakeLeaves ./home/profiles;
suites = with profiles; rec {
base = [git gpg bash fonts];
tools = [zoxide exa wezterm tokei];
development = [emacs nvim];
work = [teams];
writing = [latex zathura];
all = base ++ tools ++ development ++ work ++ writing;
};
};
users = {
bob = {suites, ...}: {
imports = suites.all;
home.stateVersion = "23.05";
};
};
};
homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations;
devshell = ./shell;
};
nixConfig.extra-experimental-features = "nix-command flakes";
}