Files
capytal.cc/flake.nix

122 lines
2.8 KiB
Nix
Raw Normal View History

2024-07-03 00:27:44 -03:00
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = {
nixpkgs,
2025-03-31 16:45:51 -03:00
self,
...
2025-03-31 16:45:51 -03:00
}: let
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);
in {
2025-03-31 16:45:51 -03:00
devShells = forAllSystems (pkgs: {
default = pkgs.mkShell {
2025-03-31 17:42:46 -03:00
CGO_ENABLED = "0";
hardeningDisable = ["all"];
buildInputs = with pkgs; [
# Go tools
go
golangci-lint
2025-03-31 16:45:51 -03:00
gofumpt
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";
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
];
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";
};
};
});
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-07-03 00:27:44 -03:00
}