nix all the things
1{
2 withSystem,
3 self,
4 nixpkgs,
5 inputs,
6 ...
7}:
8{
9 systems = [
10 "x86_64-linux"
11 "aarch64-linux"
12 ];
13
14 imports = [ ../systems/default.nix ];
15
16 perSystem =
17 { pkgs, ... }:
18 {
19 packages = {
20 pokego = pkgs.callPackage ./pkgs/pokego.nix { };
21 http-nu = pkgs.callPackage ./pkgs/http-nu.nix { };
22 topiary-nu = pkgs.callPackage ./pkgs/topiary-nu.nix { };
23 atproto-lastfm-importer = pkgs.callPackage ./pkgs/atproto-lastfm-importer.nix { };
24 multi-scrobbler = pkgs.callPackage ./pkgs/multi-scrobbler.nix { };
25
26 wakuna-image = self.lib.sdImageFromSystem self.nixosConfigurations.wakuna;
27 };
28 checks = {
29 pds-simple = pkgs.callPackage ./pds/pds-recovery-simple.nix { inherit (inputs) nixpkgs; };
30 pds-full = pkgs.callPackage ./pds/pds-recovery-full.nix { inherit (inputs) nixpkgs; };
31 };
32 formatter = pkgs.nixfmt;
33 devShells.default = pkgs.mkShell { packages = with pkgs; [ sops ]; };
34 };
35
36 flake =
37 let
38 inherit (nixpkgs) lib;
39 in
40 {
41 lib = {
42 sdImageFromSystem = system: system.config.system.build.sdImage;
43
44 mkSystem' =
45 system: hostname:
46 withSystem system (
47 { inputs', self', ... }:
48 lib.nixosSystem {
49 specialArgs = {
50 inherit
51 inputs
52 inputs'
53 self
54 self'
55 ;
56 };
57 modules = [
58 { networking.hostName = hostname; }
59 ./core.nix
60 ./systems/${hostname}
61 ];
62 }
63 );
64
65 mkSystem = system: hostname: { ${hostname} = self.lib.mkSystem' system hostname; };
66 mkSystems = system: hosts: lib.mergeAttrsList (map (self.lib.mkSystem system) hosts);
67 };
68
69 overlays.default = import ./overlays;
70
71 homeModules = {
72 dev = import ./dev/home.nix;
73 desktop = import ./desktop/home.nix;
74 };
75
76 nixosModules = {
77 dev = import ./dev/nixos.nix;
78 desktop = import ./desktop/nixos.nix;
79 multi-scrobbler = import ./services/multi-scrobbler.nix;
80 pds = import ./pds/nixos.nix;
81 };
82 };
83}