From 3bb6e776b9d626cb0dc943ea947721bd439ad89f Mon Sep 17 00:00:00 2001 From: Gabriel Arazas Date: Mon, 11 Nov 2024 16:33:56 +0800 Subject: [PATCH] users/foo-dogsquared/programs/git: add instaweb submodule option --- .../foo-dogsquared/modules/programs/git.nix | 168 ++++++++++-------- .../modules/setups/development.nix | 5 +- 2 files changed, 101 insertions(+), 72 deletions(-) diff --git a/configs/home-manager/foo-dogsquared/modules/programs/git.nix b/configs/home-manager/foo-dogsquared/modules/programs/git.nix index 8df21651..50f144f1 100644 --- a/configs/home-manager/foo-dogsquared/modules/programs/git.nix +++ b/configs/home-manager/foo-dogsquared/modules/programs/git.nix @@ -5,77 +5,103 @@ let cfg = userCfg.programs.git; in { - options.users.foo-dogsquared.programs.git.enable = - lib.mkEnableOption "foo-dogsquared's Git setup"; + options.users.foo-dogsquared.programs.git = { + enable = lib.mkEnableOption "foo-dogsquared's Git setup"; - config = lib.mkIf cfg.enable { - home.packages = with pkgs; [ - tea # So you don't have to see some teas, I guess. - hut # So you don't have to see Sourcehut's brutalist design, I guess. - ]; - - # My Git credentials. - programs.git = { - enable = true; - package = pkgs.gitFull; - lfs.enable = true; - signing.key = "4AA9CDFF7C99DFF9"; - extraConfig = { - core.excludesFile = ../../config/git/ignore; - - user = { - name = config.accounts.email.accounts.personal.realName; - email = config.accounts.email.accounts.personal.address; - }; - - alias = { - unstage = "reset HEAD --"; - quick-rebase = "rebase --interactive --autostash --committer-date-is-author-date"; - quick-clone = "clone --depth=1 --recurse-submodules --shallow-submodules"; - }; - - init.defaultBranch = "main"; - - # Shorthand for popular forges ala-Nix flake URL inputs. It's just a fun - # little part of the config. - url = { - "https://github.com/".insteadOf = [ "gh:" "github:" ]; - "https://gitlab.com/".insteadOf = [ "gl:" "gitlab:" ]; - "https://gitlab.gnome.org/".insteadOf = [ "gnome:" ]; - "https://invent.kde.org/".insteadOf = [ "kde:" ]; - "https://git.sr.ht/".insteadOf = [ "sh:" "sourcehut:" ]; - "https://git.savannah.nongnu.org/git/".insteadOf = [ "sv:" "savannah:" ]; - }; - - pull.rebase = "interactive"; - - status = { - showPatch = true; - showStash = true; - }; - - submodule.fetchJobs = 0; - }; - }; - - # So you don't have to use GitHub, I guess. - programs.gh = { - enable = true; - extensions = with pkgs; [ - gh-eco - gh-dash - gh-actions-cache - ]; - - settings = { - git_protocol = "ssh"; - prompt = "enabled"; - - aliases = { - pc = "pr checkout"; - pv = "pr view"; - }; - }; - }; + instaweb.enable = lib.mkEnableOption "install additional files for instaweb setup"; }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + home.packages = with pkgs; [ + tea # So you don't have to see some teas, I guess. + hut # So you don't have to see Sourcehut's brutalist design, I guess. + ]; + + # My Git credentials. + programs.git = { + enable = true; + package = pkgs.gitFull; + lfs.enable = true; + signing.key = "4AA9CDFF7C99DFF9"; + extraConfig = { + core.excludesFile = ../../config/git/ignore; + + user = { + name = config.accounts.email.accounts.personal.realName; + email = config.accounts.email.accounts.personal.address; + }; + + alias = { + unstage = "reset HEAD --"; + quick-rebase = "rebase --interactive --autostash --committer-date-is-author-date"; + quick-clone = "clone --depth=1 --recurse-submodules --shallow-submodules"; + }; + + init.defaultBranch = "main"; + + # Shorthand for popular forges ala-Nix flake URL inputs. It's just a fun + # little part of the config. + url = { + "https://github.com/".insteadOf = [ "gh:" "github:" ]; + "https://gitlab.com/".insteadOf = [ "gl:" "gitlab:" ]; + "https://gitlab.gnome.org/".insteadOf = [ "gnome:" ]; + "https://invent.kde.org/".insteadOf = [ "kde:" ]; + "https://git.sr.ht/".insteadOf = [ "sh:" "sourcehut:" ]; + "https://git.savannah.nongnu.org/git/".insteadOf = [ "sv:" "savannah:" ]; + }; + + pull.rebase = "interactive"; + + status = { + showPatch = true; + showStash = true; + }; + + submodule.fetchJobs = 0; + }; + }; + + # So you don't have to use GitHub, I guess. + programs.gh = { + enable = true; + extensions = with pkgs; [ + gh-eco + gh-dash + gh-actions-cache + ]; + + settings = { + git_protocol = "ssh"; + prompt = "enabled"; + + aliases = { + pc = "pr checkout"; + pv = "pr view"; + }; + }; + }; + } + + (lib.mkIf cfg.instaweb.enable { + state.ports.git-instaweb.value = 15432; + + home.packages = with pkgs; [ + lighttpd + ]; + + programs.git.extraConfig.instaweb = { + local = true; + httpd = "lighttpd"; + port = config.state.ports.git-instaweb.value; + }; + + users.foo-dogsquared.programs.custom-homepage.sections.quicklinks.links = + lib.mkBefore (lib.singleton { + text = "Current git repo"; + url = "http://localhost:${builtins.toString config.state.ports.git-instaweb.value}"; + }); + }) + ]); } diff --git a/configs/home-manager/foo-dogsquared/modules/setups/development.nix b/configs/home-manager/foo-dogsquared/modules/setups/development.nix index 453bc9b3..4af60cff 100644 --- a/configs/home-manager/foo-dogsquared/modules/setups/development.nix +++ b/configs/home-manager/foo-dogsquared/modules/setups/development.nix @@ -17,7 +17,10 @@ in { users.foo-dogsquared.programs = { shell.enable = lib.mkDefault true; - git.enable = lib.mkDefault true; + git = { + enable = lib.mkDefault true; + instaweb.enable = true; + }; jujutsu.enable = lib.mkDefault true; keys.gpg.enable = true; keys.ssh.enable = true;