-
Notifications
You must be signed in to change notification settings - Fork 58
/
flake.nix
133 lines (115 loc) · 3.76 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
128
129
130
131
132
133
#
# flake.nix *
# ├─ ./hosts
# │ └─ default.nix
# ├─ ./darwin
# │ └─ default.nix
# └─ ./nix
# └─ default.nix
#
{
description = "Nix, NixOS and Nix Darwin System Flake Configuration";
inputs =
{
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; # Nix Packages (Default)
# nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; # Unstable Nix Packages
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05"; # Unstable Nix Packages
nixos-hardware.url = "github:nixos/nixos-hardware/master"; # Hardware Specific Configurations
# User Environment Manager
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# Unstable User Environment Manager
# home-manager-unstable = {
# url = "github:nix-community/home-manager";
# inputs.nixpkgs.follows = "nixpkgs-unstable";
# };
# Stable User Environment Manager
home-manager-stable = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
# MacOS Package Management
darwin = {
url = "github:lnl7/nix-darwin/master";
inputs.nixpkgs.follows = "nixpkgs";
};
# NUR Community Packages
nur = {
url = "github:nix-community/NUR";
# Requires "nur.nixosModules.nur" to be added to the host modules
};
# Fixes OpenGL With Other Distros.
nixgl = {
url = "github:guibou/nixGL";
inputs.nixpkgs.follows = "nixpkgs";
};
# Neovim
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
# Neovim
nixvim-stable = {
url = "github:nix-community/nixvim/nixos-23.11";
inputs.nixpkgs.follows = "nixpkgs-stable";
};
# Emacs Overlays
emacs-overlay = {
url = "github:nix-community/emacs-overlay";
flake = false;
};
# Nix-Community Doom Emacs
doom-emacs = {
url = "github:nix-community/nix-doom-emacs";
inputs.nixpkgs.follows = "nixpkgs";
inputs.emacs-overlay.follows = "emacs-overlay";
};
# Official Hyprland Flake
hyprland = {
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
};
# Hyprspace
hyprspace = {
url = "github:KZDKM/Hyprspace";
inputs.hyprland.follows = "hyprland";
};
# KDE Plasma User Settings Generator
plasma-manager = {
url = "github:pjones/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "nixpkgs";
};
};
outputs = inputs @ { self, nixpkgs, nixpkgs-stable, nixos-hardware, home-manager, home-manager-stable, darwin, nur, nixgl, nixvim, nixvim-stable, doom-emacs, hyprland, hyprspace, plasma-manager, ... }: # Function telling flake which inputs to use
let
# Variables Used In Flake
vars = {
user = "matthias";
location = "$HOME/.setup";
terminal = "kitty";
editor = "nvim";
};
in
{
nixosConfigurations = (
import ./hosts {
inherit (nixpkgs) lib;
inherit inputs nixpkgs nixpkgs-stable nixos-hardware home-manager nur nixvim doom-emacs hyprland hyprspace plasma-manager vars; # Inherit inputs
}
);
darwinConfigurations = (
import ./darwin {
inherit (nixpkgs) lib;
inherit inputs nixpkgs nixpkgs-stable home-manager darwin nixvim vars;
}
);
homeConfigurations = (
import ./nix {
inherit (nixpkgs) lib;
inherit inputs nixpkgs nixpkgs-stable home-manager nixgl vars;
}
);
};
}