my terrible dotfiles
1{
2 description = "monke's configs";
3
4 inputs = {
5 disko = {
6 url = "github:nix-community/disko/latest";
7 inputs.nixpkgs.follows = "nixpkgs";
8 };
9 finge = {
10 url = "github:monke0192/nixos-06cb-009a-fingerprint-sensor?ref=unstable";
11 inputs.nixpkgs.follows = "nixpkgs";
12 };
13 home-manager = {
14 url = "github:nix-community/home-manager/master";
15 inputs.nixpkgs.follows = "nixpkgs";
16 };
17 niri = {
18 url = "github:sodiboo/niri-flake";
19 inputs.nixpkgs.follows = "nixpkgs";
20 };
21 nixos-apple-silicon = {
22 url = "github:nix-community/nixos-apple-silicon/main";
23 inputs.nixpkgs.follows = "nixpkgs";
24 };
25 nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable-small";
26 nixvim = {
27 url = "github:nix-community/nixvim";
28 inputs.nixpkgs.follows = "nixpkgs";
29 };
30 sops-nix = {
31 url = "github:Mic92/sops-nix";
32 inputs.nixpkgs.follows = "nixpkgs";
33 };
34 libinput-jyutping = {
35 url = "git+https://tangled.org/auri.ee/libime-jyutping-flake";
36 inputs.nixpkgs.follows = "nixpkgs";
37 };
38 tangled.url = "git+https://tangled.org/@tangled.org/core?ref=refs/tags/v1.11.0-alpha";
39 };
40
41 outputs =
42 inputs@{ nixpkgs, ... }:
43 let
44 forArchs = nixpkgs.lib.genAttrs [
45 "aarch64-linux"
46 "x86_64-linux"
47 ];
48 systems = {
49 bathtub = {
50 extraModules = [
51 inputs.nixos-apple-silicon.nixosModules.apple-silicon-support
52 inputs.niri.nixosModules.niri
53 ];
54 system = "aarch64-linux";
55 };
56 forest = {
57 extraModules = [
58 inputs.tangled.nixosModules.knot
59 ];
60 system = "x86_64-linux";
61 };
62 tundra = {
63 extraModules = [
64 inputs.niri.nixosModules.niri
65 inputs.finge.nixosModules."06cb-009a-fingerprint-sensor"
66 ];
67 system = "x86_64-linux";
68 };
69 };
70 in
71 {
72 formatter = forArchs (a: nixpkgs.legacyPackages.${a}.nixfmt-tree);
73 devShell = forArchs (
74 a:
75 let
76 pkgs = nixpkgs.legacyPackages.${a};
77 in
78 pkgs.mkShell {
79 packages = with pkgs; [
80 sops
81 age
82 just
83 ];
84 }
85 );
86
87 nixosConfigurations = nixpkgs.lib.mapAttrs (
88 hostname: config:
89 nixpkgs.lib.nixosSystem {
90 system = config.system;
91 specialArgs = { inherit inputs; };
92 modules = [
93 ./${hostname}
94 inputs.disko.nixosModules.disko
95 inputs.home-manager.nixosModules.home-manager
96 inputs.sops-nix.nixosModules.sops
97 {
98 home-manager = {
99 backupFileExtension = ".old";
100 extraSpecialArgs = inputs;
101 useGlobalPkgs = true;
102 useUserPackages = true;
103 users."monke" = import ./${hostname}/home.nix;
104 sharedModules = [
105 inputs.sops-nix.homeManagerModules.sops
106 inputs.nixvim.homeModules.nixvim
107 ];
108 };
109 }
110 ]
111 ++ config.extraModules;
112 }
113 ) systems;
114 };
115}