a dotfile but it's really big
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 {
18 pkgs,
19 lib,
20 self',
21 ...
22 }:
23 {
24 packages = {
25 pokego = pkgs.callPackage ./pkgs/pokego.nix { };
26 http-nu = pkgs.callPackage ./pkgs/http-nu.nix { };
27 topiary-nu = pkgs.callPackage ./pkgs/topiary-nu.nix { };
28 malachite = pkgs.callPackage ./pkgs/malachite.nix { };
29 multi-scrobbler = pkgs.callPackage ./pkgs/multi-scrobbler.nix { };
30
31 wakuna-image = self.lib.sdImageFromSystem self.nixosConfigurations.wakuna;
32
33 strands-agents-sops = pkgs.callPackage ./pkgs/strands-agents-sops.nix { };
34
35 strands-sops-skills = pkgs.runCommand "strands-sops-skills" { } ''
36 mkdir $out
37 ${lib.getExe self'.packages.strands-agents-sops} skills --output-dir $out
38 '';
39
40 strands-sops-commands = pkgs.runCommand "strands-sops-commands" { } ''
41 mkdir $out
42 ${lib.getExe self'.packages.strands-agents-sops} commands --type cursor --output-dir $out
43 for f in $out/*.sop.md; do
44 [ -f "$f" ] && mv "$f" "''${f%.sop.md}.md"
45 done
46 '';
47 };
48 checks = {
49 pds-simple = pkgs.callPackage ./pds/pds-recovery-simple.nix { inherit (inputs) nixpkgs; };
50 pds-full = pkgs.callPackage ./pds/pds-recovery-full.nix { inherit (inputs) nixpkgs; };
51 };
52 formatter = pkgs.nixfmt;
53 devShells.default = pkgs.mkShell { packages = with pkgs; [ sops ]; };
54 };
55
56 flake =
57 let
58 inherit (nixpkgs) lib;
59 in
60 {
61 lib = {
62 sdImageFromSystem = system: system.config.system.build.sdImage;
63
64 mkSystem' =
65 system: hostname:
66 withSystem system (
67 { inputs', self', ... }:
68 lib.nixosSystem {
69 specialArgs = {
70 inherit
71 inputs
72 inputs'
73 self
74 self'
75 ;
76 };
77 modules = [
78 { networking.hostName = hostname; }
79 ./core.nix
80 ./systems/${hostname}
81 ];
82 }
83 );
84
85 mkSystem = system: hostname: { ${hostname} = self.lib.mkSystem' system hostname; };
86 mkSystems = system: hosts: lib.mergeAttrsList (map (self.lib.mkSystem system) hosts);
87 };
88
89 overlays.default = import ./overlays;
90
91 homeModules = {
92 dev = import ./dev/home.nix;
93 desktop = import ./desktop/home.nix;
94 };
95
96 nixosModules = {
97 dev = import ./dev/nixos.nix;
98 desktop = import ./desktop/nixos.nix;
99 multi-scrobbler = import ./services/multi-scrobbler.nix;
100 pds = import ./pds/nixos.nix;
101 };
102 };
103}