Files
capytal.cc/flake.nix

122 lines
2.8 KiB
Nix

{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = {
nixpkgs,
self,
...
}: 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
f pkgs);
in {
devShells = forAllSystems (pkgs: {
default = pkgs.mkShell {
CGO_ENABLED = "0";
hardeningDisable = ["all"];
buildInputs = with pkgs; [
# Go tools
go
golangci-lint
gofumpt
gotools
delve
# TailwindCSS
tailwindcss_4
];
};
});
packages = forAllSystems (pkgs: {
default = self.packages.${pkgs.system}.capytalcc;
capytalcc = pkgs.buildGoModule {
name = "capytal.cc";
pname = "capytal.cc";
version = "0.1.0";
src = ./.;
nativeBuildInputs = with pkgs; [
tailwindcss_4
];
vendorHash = "sha256-s3SMlsbDMCr8npIJDd4G5tcg8MVBnyVZY4TCoVA6mvQ=";
preBuild = ''
tailwindcss \
-i ./assets/stylesheets/tailwind.css \
-o ./assets/stylesheets/out.css \
--minify
'';
meta = {
mainProgram = "capytal.cc";
};
};
});
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;
ExecStart = "${lib.escapeShellArg (lib.getExe cfg.package)} -port ${toString cfg.port}";
Restart = "on-success";
};
};
users.users."${cfg.user}" = {
isSystemUser = true;
group = cfg.group;
};
users.groups."${cfg.group}" = {};
};
};
};
};
}