Restructure as monorepo and add flake packages/apps

- Move Elixir code to server/ subdirectory for monorepo structure
- Update flake.nix to provide packages and apps outputs for nix run support
- Update nix/package.nix to accept src parameter instead of fetchgit
- Add NixOS module export for easy consumption

Now supports: nix run, nix build, and nix develop from git repo

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
ryan 2025-08-02 19:54:17 -07:00
parent 46e585ec92
commit b6769abbe9
197 changed files with 9555 additions and 7 deletions

View File

@ -41,6 +41,23 @@
elixir --version
'';
};
packages = {
default = pkgs.callPackage ./nix/package.nix {
src = ./server;
};
systant = pkgs.callPackage ./nix/package.nix {
src = ./server;
};
};
apps = {
default = {
type = "app";
program = "${self.packages.${system}.default}/bin/systant";
};
};
}
);
) // {
nixosModules.default = import ./nix/nixos-module.nix;
};
}

View File

@ -1,18 +1,14 @@
{
lib,
beamPackages,
fetchgit,
src,
}:
beamPackages.mixRelease rec {
pname = "systant";
version = "0.1.0";
src = fetchgit {
url = "https://git.ryanpandya.com/ryan/systant.git";
rev = "54f8d23945bcea17127631a81f8ac318bf7047a6";
sha256 = "sha256-1cRfSoH+JdO4a7q4hRZSkoDMk2wMCYRIyCIN56FSUgg=";
};
inherit src;
# Mix dependencies will be automatically fetched and cached by Nix
mixFodDeps = beamPackages.fetchMixDeps {

View File

@ -0,0 +1,10 @@
{application,gen_state_machine,
[{modules,['Elixir.GenStateMachine',
'Elixir.GenStateMachine.Application',
'Elixir.GenStateMachine.Translator']},
{optional_applications,[]},
{applications,[kernel,stdlib,elixir,logger]},
{description,"An Elixir wrapper for gen_statem."},
{registered,[]},
{vsn,"3.0.0"},
{mod,{'Elixir.GenStateMachine.Application',[]}}]}.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,26 @@
{application,jason,
[{modules,['Elixir.Enumerable.Jason.OrderedObject',
'Elixir.Jason','Elixir.Jason.Codegen',
'Elixir.Jason.DecodeError','Elixir.Jason.Decoder',
'Elixir.Jason.Decoder.Unescape','Elixir.Jason.Encode',
'Elixir.Jason.EncodeError','Elixir.Jason.Encoder',
'Elixir.Jason.Encoder.Any',
'Elixir.Jason.Encoder.Atom',
'Elixir.Jason.Encoder.BitString',
'Elixir.Jason.Encoder.Date',
'Elixir.Jason.Encoder.DateTime',
'Elixir.Jason.Encoder.Float',
'Elixir.Jason.Encoder.Integer',
'Elixir.Jason.Encoder.Jason.Fragment',
'Elixir.Jason.Encoder.Jason.OrderedObject',
'Elixir.Jason.Encoder.List',
'Elixir.Jason.Encoder.Map',
'Elixir.Jason.Encoder.NaiveDateTime',
'Elixir.Jason.Encoder.Time','Elixir.Jason.Formatter',
'Elixir.Jason.Fragment','Elixir.Jason.Helpers',
'Elixir.Jason.OrderedObject','Elixir.Jason.Sigil']},
{optional_applications,[decimal]},
{applications,[kernel,stdlib,elixir,decimal]},
{description,"A blazing fast JSON parser and generator in pure Elixir.\n"},
{registered,[]},
{vsn,"1.4.4"}]}.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,9 @@
{application,systant,
[{modules,['Elixir.Systant','Elixir.Systant.Application',
'Elixir.Systant.MqttClient']},
{optional_applications,[]},
{applications,[kernel,stdlib,elixir,logger,tortoise,jason]},
{description,"systant"},
{registered,[]},
{vsn,"0.1.0"},
{mod,{'Elixir.Systant.Application',[]}}]}.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More