-
Notifications
You must be signed in to change notification settings - Fork 0
/
flake.nix
112 lines (95 loc) · 3 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
# Credit to hlissner
# Definetly not stolen
{
inputs = {
# Nixpkgs branches
master.url = "github:nixos/nixpkgs/master";
unstable.url = "github:nixos/nixpkgs/nixpkgs-unstable";
stable.url = "github:nixos/nixpkgs/nixos-23.05";
# Flake inputs
home-manager.url = "github:nix-community/home-manager";
agenix.url = "github:ryantm/agenix";
nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland";
neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay";
nixvim.url = "github:BattleCh1cken/nixvim";
eww.url = "github:elkowar/eww";
catppuccin.url = "github:catppuccin/nix";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
anyrun.url = "github:Kirottu/anyrun";
ags.url = "github:Aylur/ags";
disko.url = "github:nix-community/disko";
sops-nix.url = "github:Mic92/sops-nix";
# Default Nixpkgs for packages and modules
nixpkgs.follows = "unstable";
# Minimize duplicate instances of inputs
agenix.inputs.nixpkgs.follows = "nixpkgs";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
eww.inputs.nixpkgs.follows = "nixpkgs";
neovim-nightly-overlay.inputs.nixpkgs.follows = "nixpkgs";
nixvim.inputs.nixpkgs.follows = "nixpkgs";
anyrun.inputs.nixpkgs.follows = "nixpkgs";
nixpkgs-wayland.inputs.nixpkgs.follows = "nixpkgs";
nix.inputs.nixpkgs.follows = "nixpkgs";
ags.inputs.nixpkgs.follows = "nixpkgs";
disko.inputs.nixpkgs.follows = "nixpkgs";
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
};
outputs =
inputs @ { self
, nixpkgs
, stable
, master
, ...
}:
let
inherit (lib.my) mapModules mapModulesRec mapHosts;
system = "x86_64-linux";
mkPkgs = pkgs: extraOverlays:
import pkgs {
inherit system;
config.allowUnfree = true; # forgive me Stallman senpai
overlays = extraOverlays;
};
pkgs = mkPkgs nixpkgs [ self.overlay ];
pkgs-stable = mkPkgs stable [ self.overlay ];
pkgs-master = mkPkgs master [ self.overlay ];
lib =
nixpkgs.lib.extend
(self: super: {
my = import ./lib {
inherit pkgs inputs;
lib = self;
};
});
in
{
overlay = final: prev: {
master = pkgs-master;
stable = pkgs-stable;
my = self.packages."${system}";
};
# Export packages for other flakes to use
packages."${system}" =
mapModules ./pkgs (p: pkgs.callPackage p { });
nixosConfigurations =
mapHosts ./hosts { };
devShell.${system} = pkgs.mkShell {
packages = with pkgs; [
nixpkgs-fmt
cachix
deadnix
];
};
formatter.${system} = pkgs.nixpkgs-fmt;
templates = {
basic = {
path = ./templates/basic;
description = "A very basic flake";
};
rust = {
path = ./templates/rust;
description = "rust moment";
};
};
};
}