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.05";
6 unixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
7
8 home-manager.url = "github:nix-community/home-manager/release-25.05";
9 home-manager.inputs.nixpkgs.follows = "nixpkgs";
10
11 nix-darwin.url = "github:LnL7/nix-darwin";
12 nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
13
14 agenix.url = "github:ryantm/agenix";
15 agenix.inputs.nixpkgs.follows = "nixpkgs";
16 agenix.inputs.home-manager.follows = "home-manager";
17
18 disko.url = "github:nix-community/disko";
19 disko.inputs.nixpkgs.follows = "nixpkgs";
20
21 nixos-hardware.url = "github:nixos/nixos-hardware";
22
23 srvos.url = "github:nix-community/srvos";
24 # srvos.inputs.nixpkgs.follows = "srvos/nixpkgs";
25 srvos.inputs.nixpkgs.follows = "nixpkgs";
26
27 # ——— Packages
28 git-leave.url = "github:mrnossiom/git-leave";
29 git-leave.inputs.nixpkgs.follows = "nixpkgs";
30
31 helix.url = "github:helix-editor/helix";
32 helix.inputs.nixpkgs.follows = "unixpkgs";
33
34 jujutsu.url = "github:jj-vcs/jj";
35 jujutsu.inputs.nixpkgs.follows = "unixpkgs";
36
37 tangled.url = "git+https://tangled.org/@tangled.org/core";
38 tangled.inputs.nixpkgs.follows = "unixpkgs";
39
40 wakatime-ls.url = "github:mrnossiom/wakatime-ls";
41 wakatime-ls.inputs.nixpkgs.follows = "nixpkgs";
42 };
43
44 outputs = { self, nixpkgs, ... }:
45 let
46 inherit (self) outputs;
47 inherit (flake-lib) forAllSystems;
48
49 flake-lib = import ./lib/flake (nixpkgs // { inherit self; });
50
51 forAllPkgs = func: forAllSystems (system: func pkgs.${system});
52
53 # This should be the only constructed nixpkgs instances in this flake
54 pkgs = forAllSystems (system: (import nixpkgs {
55 inherit system;
56 config.allowUnfreePredicate = import ./lib/unfree.nix { lib = nixpkgs.lib; };
57 overlays = [ outputs.overlays.all ];
58 }));
59 in
60 {
61 formatter = forAllPkgs (pkgs: pkgs.nixpkgs-fmt);
62
63 inherit flake-lib; # Nonstandard
64 lib = forAllPkgs (import ./lib);
65 templates = import ./templates;
66
67 apps = forAllPkgs (import ./apps { pkgs-per-system = pkgs; });
68 devShells = forAllPkgs (import ./shells.nix);
69 overlays = import ./overlays (nixpkgs // { inherit self; });
70 packages = forAllPkgs (import ./pkgs);
71
72 homeManagerModules = import ./modules/home-manager;
73 nixosModules = import ./modules/nixos;
74
75 # `nixos`, `home-manager` and `nix-darwin` configs are generic over `pkgs` and placed in `configurations.nix`
76 # `legacyPackages` tree structure is not checked by `nix flake check` but picked up by all rebuild tools
77 legacyPackages = forAllPkgs (import ./configurations.nix flake-lib);
78 };
79}