diff --git a/default.nix b/default.nix index 91f414e0ee10044b7d926781a105cddc781a1db5..29e68779f3982e44987fa1315618ecb5b44be0a9 100644 --- a/default.nix +++ b/default.nix @@ -1,10 +1,6 @@ -{ - pkgs ? import , -}: -let - pkg = pkgs.callPackage ./pkg { inherit pkgs; }; -in -{ +{pkgs ? import }: let + pkg = pkgs.callPackage ./pkg {inherit pkgs;}; +in { git-pr = pkg; default = pkg; } diff --git a/flake.nix b/flake.nix index 74bc5777604fe556c0b486928117028cef913588..32219644e283d3dde05b892bb79f9f3bf64e9729 100644 --- a/flake.nix +++ b/flake.nix @@ -1,25 +1,26 @@ { description = "git-pr package and module"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - outputs = - { self, nixpkgs }: - let - systems = [ - "x86_64-linux" - "i686-linux" - "x86_64-darwin" - "aarch64-linux" - "armv6l-linux" - "armv7l-linux" - ]; - forAllSystems = f: nixpkgs.lib.genAttrs systems f; - in - { - overlays.default = import ./overlay; - nixosModules.git-pr = import ./module; - nixosModules.default = self.nixosModules.git-pr; - packages = forAllSystems ( - system: import ./default.nix { pkgs = import nixpkgs { inherit system; }; } - ); - }; + outputs = { + self, + nixpkgs, + }: let + systems = [ + "x86_64-linux" + "i686-linux" + "x86_64-darwin" + "aarch64-linux" + "armv6l-linux" + "armv7l-linux" + ]; + forAllSystems = f: nixpkgs.lib.genAttrs systems f; + in { + overlays.default = import ./overlay; + nixosModules.git-pr = import ./module; + nixosModules.default = self.nixosModules.git-pr; + packages = forAllSystems ( + system: + import ./default.nix {pkgs = import nixpkgs {inherit system;};} + ); + }; } diff --git a/module/default.nix b/module/default.nix index f183a9d217ccd6b665721906ecdc5ebe46ccd90e..7fd054329c1190cb1434b6d547ac5b4f64377e1b 100644 --- a/module/default.nix +++ b/module/default.nix @@ -3,31 +3,25 @@ config, lib, pkgs, ... -}: -let +}: let cfg = config.services.git-pr; - pkg = pkgs.callPackage ../pkg { inherit pkgs; }; - tomlFormat = pkgs.formats.toml { }; - configFile = tomlFormat.generate "git-pr-config" ( - lib.recursiveUpdate { - inherit (cfg) - url - admins - host - theme - ; + pkg = pkgs.callPackage ../pkg {inherit pkgs;}; + tomlFormat = pkgs.formats.toml {}; + configFile = tomlFormat.generate "git-pr-config" (lib.recursiveUpdate { + inherit (cfg) url admins host theme; data_dir = cfg.dataDir; ssh_port = cfg.sshPort; web_port = cfg.webPort; time_format = cfg.timeFormat; - repo = builtins.map (repo: { - inherit (repo) id desc; - clone_addr = repo.cloneAddr; - }) cfg.repos; - } cfg.extraConfig - ); -in -{ + repo = + builtins.map (repo: { + inherit (repo) id desc; + clone_addr = repo.cloneAddr; + }) + cfg.repos; + } + cfg.extraConfig); +in { options.services.git-pr = { enable = lib.mkEnableOption "Git PR service"; @@ -51,7 +45,7 @@ }; admins = lib.mkOption { type = lib.types.listOf lib.types.str; - default = [ ]; + default = []; description = "List of admin SSH public keys"; }; @@ -82,25 +76,23 @@ description = "Theme for the web interface"; }; repos = lib.mkOption { - type = lib.types.listOf ( - lib.types.submodule { - options = { - id = lib.mkOption { - type = lib.types.str; - description = "Repository ID"; - }; - cloneAddr = lib.mkOption { - type = lib.types.str; - description = "Git clone address"; - }; - desc = lib.mkOption { - type = lib.types.str; - description = "Repository description"; - }; + type = lib.types.listOf (lib.types.submodule { + options = { + id = lib.mkOption { + type = lib.types.str; + description = "Repository ID"; + }; + cloneAddr = lib.mkOption { + type = lib.types.str; + description = "Git clone address"; + }; + desc = lib.mkOption { + type = lib.types.str; + description = "Repository description"; }; - } - ); - default = [ ]; + }; + }); + default = []; description = "List of repositories to manage"; }; @@ -112,7 +104,7 @@ }; extraConfig = lib.mkOption { type = lib.types.attrs; - default = { }; + default = {}; description = "Additional configuration options to be added to the TOML file"; }; @@ -127,8 +119,8 @@ config = lib.mkIf cfg.enable { # SSH service systemd.services.git-pr-ssh = { description = "Git PR SSH Service"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; + after = ["network.target"]; + wantedBy = ["multi-user.target"]; serviceConfig = { ExecStart = "${cfg.package}/bin/ssh --config ${configFile}"; @@ -141,8 +133,8 @@ # Web service systemd.services.git-pr-web = { description = "Git PR Web Service"; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; + after = ["network.target"]; + wantedBy = ["multi-user.target"]; serviceConfig = { ExecStart = "${cfg.package}/bin/web --config ${configFile}"; @@ -160,13 +152,10 @@ home = cfg.dataDir; createHome = true; }; - users.groups.git-pr = { }; + users.groups.git-pr = {}; networking.firewall = lib.mkIf cfg.openFirewall { - allowedTCPPorts = [ - cfg.webPort - cfg.sshPort - ]; + allowedTCPPorts = [cfg.webPort cfg.sshPort]; }; }; } diff --git a/overlay/default.nix b/overlay/default.nix index 0b8fc9fd5b7b7369d25e4c1dd1cece066d7dde26..b78adb301d3f1b42bab7a3b503da289f32256a2f 100644 --- a/overlay/default.nix +++ b/overlay/default.nix @@ -1,5 +1,8 @@ final: prev: { - nixosModules = prev.nixosModules or { } // { - git-pr = import ../module; - }; + nixosModules = + prev.nixosModules + or {} + // { + git-pr = import ../module; + }; } diff --git a/pkg/default.nix b/pkg/default.nix index fa569c263549ce663a78f0c26979378c7275c7c5..e063fb60572ef43d2b9bbbb195ddb34acff97772 100644 --- a/pkg/default.nix +++ b/pkg/default.nix @@ -1,6 +1,4 @@ -{ - pkgs ? import , -}: +{pkgs ? import }: pkgs.buildGoModule rec { pname = "git-pr"; version = "d15bf3ca0f2b9222c59bc2c180f681e0c2b6cd39"; @@ -14,10 +12,7 @@ }; vendorHash = "sha256-yoEITVoM6Dbf7QRVxxjsGKTmllDlMwRsqGevbM6AJ+w="; - subPackages = [ - "cmd/ssh" - "cmd/web" - ]; + subPackages = ["cmd/ssh" "cmd/web"]; CGO_ENABLED = 0;