diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a59231c --- /dev/null +++ b/flake.nix @@ -0,0 +1,62 @@ +{ + description = "boddle, in Anlehnung an bottle"; + + outputs = { self, nixpkgs }: let + module = { pkgs, lib, config, ... }: { + options.services.boddle = { + enable = lib.mkEnableOption "enable"; + # TODO: configurability + }; + + config.nixpkgs.overlays = [ self.overlay ]; + + config.systemd.services.boddle = lib.mkIf config.services.boddle.enable { + script = lib.getExe pkgs.boddle; + }; + }; + + per-system = fn: builtins.mapAttrs (_: fn) nixpkgs.legacyPackages; + + package = pkgs: pkgs.buildGoModule { + meta = { + description = "boddle, in Anlehnung an bottle"; + homepage = "https://git.fbs42.ddnss.de/forgejo/fbs42/boddle"; + name = "boddle"; + }; + pname = "boddle"; + version = "v0.0.1"; + vendorHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + src = pkgs.fetchgit { + url = "https://git.fbs42.ddnss.de/forgejo/fbs42/boddle"; + hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + }; + }; + + devshell = pkgs: pkgs.mkShell { + nativeBuildInputs = with pkgs.buildPackages; [ + go + ]; + }; + + in { + nixosModules = { + default = self.nixosModules.boddle; + boddle = module; + }; + + overlay = final: prev: { + boddle = package final; + }; + + packages = per-system (pkgs: { + default = package pkgs; + boddle = package pkgs; + }); + + apps = self.packages; + + devShells = per-system (pkgs: { + default = devshell pkgs; + }); + }; +}