Personal NixOS flake
1{
2 description = "m1emi1em NixOS Flake";
3
4 inputs = {
5 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
6
7 home-manager = {
8 url = "github:nix-community/home-manager";
9 inputs.nixpkgs.follows = "nixpkgs";
10 };
11
12 flake-parts = {
13 url = "github:hercules-ci/flake-parts";
14 inputs.nixpkgs-lib.follows = "nixpkgs";
15 };
16
17 easy-hosts.url = "github:tgirlcloud/easy-hosts";
18
19 agenix.url = "github:ryantm/agenix";
20
21 bb-scripts = {
22 url ="github:m1emi1em/bb-scripts";
23 inputs.nixpkgs.follows = "nixpkgs";
24 inputs.flake-parts.follows = "flake-parts";
25 };
26 emacs-overlay = {
27 url = "github:nix-community/emacs-overlay";
28 inputs.nixpkgs.follows = "nixpkgs";
29 };
30 catppuccin.url = "github:catppuccin/nix";
31
32 nix-index-database = {
33 url = "github:nix-community/nix-index-database";
34 inputs.nixpkgs.follows = "nixpkgs";
35 };
36 };
37
38 outputs = { self, nixpkgs, home-manager, agenix, flake-parts, easy-hosts, catppuccin, ... } @ inputs: let
39 # mkHomeManagerModule = {} : {
40 # home-manager.useGlobalPkgs = true;
41 # home-manager.useUserPackages = true;
42 # home-manager.users.emily = ./home.nix;
43 # };
44
45 baseHost = {
46 arch = "x86_64";
47 class = "nixos";
48 };
49
50 # :3c
51 buildHost = host: baseHost // host;
52
53 myHosts = {
54 emerald = {
55 modules = [
56 ./desktop.nix
57 ./systems/emerald/hardware-configuration.nix
58 ];
59 };
60 quartz = {
61 modules = [
62 ./laptop.nix
63 ./systems/quartz/hardware-configuration.nix
64 ];
65 };
66 };
67
68 in
69 flake-parts.lib.mkFlake {inherit inputs;} ({ withSystem, ...}: {
70 systems = [ "x86_64-linux" ];
71 imports = [ easy-hosts.flakeModule ];
72
73 easy-hosts = {
74 shared = {
75 specialArgs = { inherit inputs; };
76 modules = [
77 ./base-system.nix
78 home-manager.nixosModules.home-manager
79 # (mkHomeManagerModule {})
80 # ({inputs', ...}: {home-manager.extraSpecialArgs = {inherit inputs';};} )
81 # {home-manager.extraSpecialArgs = { inherit inputs; }; }
82 agenix.nixosModules.default
83 catppuccin.nixosModules.catppuccin
84 ./home
85 # {nixpkgs.overlays = [inputs.hyprpanel.overlay];}
86 ];
87 };
88 # >:3c
89 hosts = builtins.mapAttrs (name: buildHost) myHosts;
90 };
91 flake.homeConfigurations."emily" = withSystem "x86_64-linux" ({inputs', system, ...}:
92 home-manager.lib.homeManagerConfiguration
93 {
94 # pkgs = nixpkgs.legacyPackages.x86_64-linux;
95 pkgs = import nixpkgs {
96 inherit system;
97 overlays = with inputs; [
98 emacs-overlay.overlay
99 ];
100 allowUnfree = true;
101 };
102 extraSpecialArgs = {
103 inherit inputs';
104 inherit inputs;
105 };
106 modules = [
107 ./home/emily
108 ];
109 });
110 });
111}