forked from richen604/richendots
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflake.nix
More file actions
executable file
·100 lines (84 loc) · 2.88 KB
/
flake.nix
File metadata and controls
executable file
·100 lines (84 loc) · 2.88 KB
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
{
description = "template for hydenix";
inputs = {
# User's nixpkgs - for user packages
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixpkgs-stable.url = "github:nixos/nixpkgs/release-25.05";
nix-gaming.url = "github:fufexan/nix-gaming";
sops-nix.url = "github:Mic92/sops-nix";
# Hydenix and its nixpkgs - kept separate to avoid conflicts
hydenix.url = "github:richen604/hydenix/v5.0.0";
nixos-hardware.url = "github:nixos/nixos-hardware/master";
nix-podman-stacks = {
url = "github:Tarow/nix-podman-stacks";
inputs.nixpkgs.follows = "nixpkgs";
};
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
zen-browser = {
url = "github:youwen5/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, ... }@inputs:
let
vars = {
user = "mirage";
};
system = "x86_64-linux";
# Create a function to generate host configurations
mkHost = hostname: extraVars: inputs.nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs system;
vars = vars // extraVars;
hostname = hostname;
};
modules = [
./hosts/${hostname}
];
};
# Create VM variant function
mkVm = hostname:
(import ./hosts/vm.nix {
inherit inputs hostname vars;
nixosConfiguration = mkHost hostname;
}).config.system.build.vm;
isoConfig = inputs.hydenix.lib.iso {
hydenix-inputs = inputs.hydenix.inputs // inputs.hydenix.lib // inputs.hydenix;
flake = inputs.self.outPath;
};
pkgs = import inputs.nixpkgs { inherit system; };
in
{
nixosConfigurations = {
fern = mkHost "fern" {};
oak = mkHost "oak" {};
pine = mkHost "pine" {};
cedar = mkHost "cedar" {};
# Override vars for birch-seed specifically
birch-seed = mkHost "birch-seed" { user = "fanny"; };
default = mkHost "oak" {};
};
packages.${system} = {
cedar-vm = mkVm "cedar";
fern-vm = mkVm "fern";
pine-vm = mkVm "pine";
birch-seed-vm = mkVm "birch-seed";
oak-vm = mkVm "oak";
fern = self.nixosConfigurations.fern.config.system.build.toplevel;
birch-seed = self.nixosConfigurations.birch-seed.config.system.build.toplevel;
pine = self.nixosConfigurations.pine.config.system.build.toplevel;
oak = self.nixosConfigurations.oak.config.system.build.toplevel;
cedar = self.nixosConfigurations.cedar.config.system.build.toplevel;
};
nixosModules = {
common = import ./modules/system/common;
hm = import ./modules/hm/common;
wrapper = import ./modules/wrapper;
};
};
}