yep, more dotfiles
1{
2 description = "NixOS and Home Manager configuration for Milo's laptops";
3
4 inputs = {
5 nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
6 unixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
7
8 home-manager.url = "github:nix-community/home-manager/release-25.11";
9 home-manager.inputs.nixpkgs.follows = "nixpkgs";
10
11 # nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.11";
12 nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.05";
13 nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
14
15 stylix.url = "github:nix-community/stylix/release-25.11";
16 stylix.inputs.nixpkgs.follows = "nixpkgs";
17
18 ## Miscellaneous
19
20 # agenix.url = "github:ryantm/agenix/0.15.0";
21 agenix.url = "github:mrnossiom/agenix";
22 agenix.inputs.nixpkgs.follows = "nixpkgs";
23 agenix.inputs.home-manager.follows = "home-manager";
24
25 disko.url = "github:nix-community/disko/v1.11.0";
26 disko.inputs.nixpkgs.follows = "nixpkgs";
27
28 nixos-hardware.url = "github:nixos/nixos-hardware";
29
30 lanzaboote.url = "github:nix-community/lanzaboote/v0.4.3";
31 lanzaboote.inputs.nixpkgs.follows = "unixpkgs";
32
33 srvos.url = "github:nix-community/srvos";
34 srvos.inputs.nixpkgs.follows = "nixpkgs";
35
36 ## Packages
37
38 git-leave.url = "github:mrnossiom/git-leave";
39 git-leave.inputs.nixpkgs.follows = "nixpkgs";
40
41 hypixel-bank-tracker.url = "github:pixilie/hypixel-bank-tracker";
42 hypixel-bank-tracker.inputs.nixpkgs.follows = "nixpkgs";
43
44 tangled.url = "git+https://tangled.org/tangled.org/core";
45 tangled.inputs.nixpkgs.follows = "unixpkgs";
46
47 wakatime-ls.url = "github:mrnossiom/wakatime-ls";
48 wakatime-ls.inputs.nixpkgs.follows = "nixpkgs";
49
50 zen-browser.url = "github:0xc000022070/zen-browser-flake";
51 zen-browser.inputs.nixpkgs.follows = "unixpkgs";
52 zen-browser.inputs.home-manager.follows = "home-manager";
53 };
54
55 outputs = { self, nixpkgs, ... }:
56 let
57 inherit (self) outputs;
58 inherit (flake-lib) forAllSystems;
59
60 flake-lib = import ./lib/flake (nixpkgs // { inherit self; });
61
62 # This should be the only constructed nixpkgs instances in this flake
63 allPkgs = forAllSystems (system: (import nixpkgs {
64 inherit system;
65 config.allowUnfreePredicate = import ./lib/unfree.nix { lib = nixpkgs.lib; };
66 overlays = [ outputs.overlays.all ];
67 }));
68
69 forAllPkgs = func: forAllSystems (system: func allPkgs.${system});
70 in
71 {
72 formatter = forAllPkgs (pkgs: pkgs.nixpkgs-fmt);
73
74 inherit flake-lib; # Nonstandard
75 lib = forAllPkgs (import ./lib);
76 templates = import ./templates;
77
78 apps = forAllPkgs (import ./apps { pkgs-per-system = allPkgs; });
79 devShells = forAllPkgs (import ./shells.nix);
80 overlays = import ./overlays (nixpkgs // { inherit self; });
81 packages = forAllPkgs (import ./pkgs);
82
83 homeManagerModules = import ./modules/home-manager;
84 nixosModules = import ./modules/nixos;
85
86 # `nixos`, `home-manager` and `nix-darwin` configs are generic over `pkgs` and placed in `configurations.nix`
87 # `legacyPackages` tree structure is not checked by `nix flake check` but picked up by all rebuild tools
88 legacyPackages = forAllPkgs (import ./configurations.nix flake-lib);
89 };
90}