-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
137 lines (113 loc) · 3.79 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
134
135
136
137
{
description = "HDW Linux";
inputs = {
# unstable packages are used by default
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
# also provide stable packages if unstable are breaking
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-23.11";
# zoom broke screen sharing on nixos, so going to an earlier version.
nixpkgs-old-zoom.url = "github:NixOS/nixpkgs/06031e8a5d9d5293c725a50acf01242193635022";
# nix user repository provides additional packages.
nur.url = "github:nix-community/NUR";
# Generate System Images
nixos-generators.url = "github:nix-community/nixos-generators";
nixos-generators.inputs.nixpkgs.follows = "nixpkgs";
# disko handles partitioning and applying disk configurations
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
# home manager for config files and user installs
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
# kolide is a device management application for work.
kolide-launcher = {
url = "github:/kolide/nix-agent/main";
inputs.nixpkgs.follows = "nixpkgs";
};
# musnix optimizes audio for realtime/production.
musnix.url = "github:musnix/musnix";
# nix-flatpak provides declaritive flatpak installation.
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.1.0";
# cosmic is a DE from system76.
nixos-cosmic = {
url = "github:lilyinstarlight/nixos-cosmic";
inputs.nixpkgs.follows = "nixpkgs";
};
# nix-hardware helps set up machine configs
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
# rust-overlay provides the latest rust packages
rust-overlay.url = "github:oxalica/rust-overlay";
# secrets is a private repository.
secrets.url = "github:divnix/blank";
# snowfall-lib provides structure to the flake
snowfall-lib = {
url = "github:snowfallorg/lib";
inputs.nixpkgs.follows = "nixpkgs";
};
# theming for spotify.
spicetify-nix = {
url = "github:Gerg-L/spicetify-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
inputs:
let
lib = inputs.snowfall-lib.mkLib {
inherit inputs;
src = ./.;
snowfall = {
# access through the modules will be done through hdwlinux and lib.hdwlinux
namespace = "hdwlinux";
meta = {
name = "hdwlinux";
title = "Half-Dozen Wilsons Linux";
};
};
};
in
lib.mkFlake {
channels-config = {
allowUnfree = true;
permittedInsecurePackages = [ "electron-25.9.0" ];
};
formatter.x86_64-linux = inputs.nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style;
overlays = with inputs; [
nur.overlays.default
rust-overlay.overlays.default
(final: prev: {
old-zoom = import nixpkgs-old-zoom {
system = prev.system;
config.allowUnfree = true;
};
})
(final: prev: {
stable = import nixpkgs-stable {
system = prev.system;
config.allowUnfree = true;
};
})
(final: prev: {
unstable = import nixpkgs {
system = prev.system;
config.allowUnfree = true;
};
})
];
homes.modules = with inputs; [
nix-flatpak.homeManagerModules.nix-flatpak
spicetify-nix.homeManagerModules.default
];
systems.modules.nixos = with inputs; [
disko.nixosModules.disko
home-manager.nixosModules.home-manager
nixos-cosmic.nixosModules.default
musnix.nixosModules.musnix
kolide-launcher.nixosModules.kolide-launcher
./nixos/craig
];
};
}