2024-07-03 00:27:44 -03:00
|
|
|
{
|
|
|
|
|
inputs = {
|
|
|
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
|
|
|
};
|
2024-10-31 10:12:38 -03:00
|
|
|
outputs = {
|
|
|
|
|
nixpkgs,
|
2025-03-31 16:45:51 -03:00
|
|
|
self,
|
2024-10-31 10:12:38 -03:00
|
|
|
...
|
2025-03-31 16:45:51 -03:00
|
|
|
}: let
|
2024-10-31 10:12:38 -03:00
|
|
|
systems = [
|
|
|
|
|
"x86_64-linux"
|
|
|
|
|
"aarch64-linux"
|
|
|
|
|
"x86_64-darwin"
|
|
|
|
|
"aarch64-darwin"
|
|
|
|
|
];
|
|
|
|
|
forAllSystems = f:
|
|
|
|
|
nixpkgs.lib.genAttrs systems (system: let
|
|
|
|
|
pkgs = import nixpkgs {inherit system;};
|
|
|
|
|
in
|
2025-03-31 16:45:51 -03:00
|
|
|
f pkgs);
|
2024-10-31 10:12:38 -03:00
|
|
|
in {
|
2025-03-31 16:45:51 -03:00
|
|
|
devShells = forAllSystems (pkgs: {
|
2024-10-31 10:12:38 -03:00
|
|
|
default = pkgs.mkShell {
|
2025-03-31 17:42:46 -03:00
|
|
|
CGO_ENABLED = "0";
|
2024-10-31 10:12:38 -03:00
|
|
|
hardeningDisable = ["all"];
|
|
|
|
|
|
|
|
|
|
buildInputs = with pkgs; [
|
|
|
|
|
# Go tools
|
|
|
|
|
go
|
|
|
|
|
golangci-lint
|
2025-03-31 16:45:51 -03:00
|
|
|
gofumpt
|
2024-10-31 10:12:38 -03:00
|
|
|
gotools
|
|
|
|
|
delve
|
2025-03-31 16:45:51 -03:00
|
|
|
|
|
|
|
|
# TailwindCSS
|
|
|
|
|
tailwindcss_4
|
2025-03-31 17:42:46 -03:00
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
});
|
|
|
|
|
packages = forAllSystems (pkgs: {
|
|
|
|
|
default = self.packages.${pkgs.system}.capytalcc;
|
|
|
|
|
capytalcc = pkgs.buildGoModule {
|
|
|
|
|
name = "capytal.cc";
|
|
|
|
|
pname = "capytal.cc";
|
|
|
|
|
|
|
|
|
|
version = "0.1.0";
|
2024-10-31 10:12:38 -03:00
|
|
|
|
2025-03-31 17:42:46 -03:00
|
|
|
src = ./.;
|
2025-03-31 16:45:51 -03:00
|
|
|
|
2025-03-31 17:42:46 -03:00
|
|
|
nativeBuildInputs = with pkgs; [
|
|
|
|
|
tailwindcss_4
|
2024-10-31 10:12:38 -03:00
|
|
|
];
|
2025-03-31 17:42:46 -03:00
|
|
|
|
2025-04-24 14:35:49 -03:00
|
|
|
vendorHash = "sha256-s3SMlsbDMCr8npIJDd4G5tcg8MVBnyVZY4TCoVA6mvQ=";
|
2025-03-31 17:42:46 -03:00
|
|
|
|
|
|
|
|
preBuild = ''
|
|
|
|
|
tailwindcss \
|
|
|
|
|
-i ./assets/stylesheets/tailwind.css \
|
|
|
|
|
-o ./assets/stylesheets/out.css \
|
|
|
|
|
--minify
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
meta = {
|
|
|
|
|
mainProgram = "capytal.cc";
|
|
|
|
|
};
|
2024-10-31 10:12:38 -03:00
|
|
|
};
|
|
|
|
|
});
|
2025-03-31 17:42:53 -03:00
|
|
|
nixosModules = {
|
|
|
|
|
default = self.nixosModules.capytalcc;
|
|
|
|
|
capytalcc = {
|
|
|
|
|
config,
|
|
|
|
|
lib,
|
|
|
|
|
pkgs,
|
|
|
|
|
...
|
|
|
|
|
}: let
|
|
|
|
|
cfg = config.services.capytalcc.web;
|
|
|
|
|
in {
|
|
|
|
|
options.services.capytalcc.web = with lib;
|
|
|
|
|
with lib.types; {
|
|
|
|
|
enable = mkEnableOption "";
|
|
|
|
|
port = mkOption {
|
|
|
|
|
type = port;
|
|
|
|
|
default = 7332;
|
|
|
|
|
};
|
|
|
|
|
package = mkOption {
|
|
|
|
|
type = package;
|
|
|
|
|
default = self.packages.${pkgs.system}.default;
|
|
|
|
|
};
|
|
|
|
|
user = mkOption {
|
|
|
|
|
type = str;
|
|
|
|
|
default = "capytalcc-web";
|
|
|
|
|
};
|
|
|
|
|
group = mkOption {
|
|
|
|
|
type = str;
|
|
|
|
|
default = cfg.user;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
config = with lib;
|
|
|
|
|
mkIf cfg.enable {
|
|
|
|
|
systemd.services."capytalcc-web" = {
|
|
|
|
|
after = ["network.target"];
|
|
|
|
|
wantedBy = ["multi-user.target"];
|
|
|
|
|
serviceConfig = {
|
|
|
|
|
Type = "simple";
|
|
|
|
|
User = cfg.user;
|
|
|
|
|
Group = cfg.group;
|
2025-04-01 08:45:18 -03:00
|
|
|
ExecStart = "${lib.escapeShellArg (lib.getExe cfg.package)} -port ${toString cfg.port}";
|
2025-03-31 17:42:53 -03:00
|
|
|
Restart = "on-success";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
users.users."${cfg.user}" = {
|
|
|
|
|
isSystemUser = true;
|
|
|
|
|
group = cfg.group;
|
|
|
|
|
};
|
|
|
|
|
users.groups."${cfg.group}" = {};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-10-31 10:12:38 -03:00
|
|
|
};
|
2024-07-03 00:27:44 -03:00
|
|
|
}
|