summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorMaciej Krüger <mkg20001@gmail.com>2021-10-11 15:03:03 +0200
committerMaciej Krüger <mkg20001@gmail.com>2021-10-11 17:56:33 +0200
commitc84b55bbe6866e714ed3bb6de77e0acefb8e2eff (patch)
treea90d60ddfe05a916c84d4f274b5d0afec2790e13 /nixos
parent28b259bbb4d464bd5378fc21116ecdf71b50435e (diff)
downloadnixpkgs-c84b55bbe6866e714ed3bb6de77e0acefb8e2eff.tar
nixpkgs-c84b55bbe6866e714ed3bb6de77e0acefb8e2eff.tar.gz
nixpkgs-c84b55bbe6866e714ed3bb6de77e0acefb8e2eff.tar.bz2
nixpkgs-c84b55bbe6866e714ed3bb6de77e0acefb8e2eff.tar.lz
nixpkgs-c84b55bbe6866e714ed3bb6de77e0acefb8e2eff.tar.xz
nixpkgs-c84b55bbe6866e714ed3bb6de77e0acefb8e2eff.tar.zst
nixpkgs-c84b55bbe6866e714ed3bb6de77e0acefb8e2eff.zip
nixos/git: add lfs option to allow enabling and installing lfs easily
Co-authored-by: figsoda <figsoda@pm.me>
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/programs/git.nix36
1 files changed, 30 insertions, 6 deletions
diff --git a/nixos/modules/programs/git.nix b/nixos/modules/programs/git.nix
index 461207a6cd3..6c60daf21f9 100644
--- a/nixos/modules/programs/git.nix
+++ b/nixos/modules/programs/git.nix
@@ -31,15 +31,39 @@ in
           section of git-config(1) for more information.
         '';
       };
-    };
-  };
 
-  config = mkIf cfg.enable {
-    environment.systemPackages = [ cfg.package ];
-    environment.etc.gitconfig = mkIf (cfg.config != {}) {
-      text = generators.toGitINI cfg.config;
+      lfs = {
+        enable = mkEnableOption "git-lfs";
+
+        package = mkOption {
+          type = types.package;
+          default = pkgs.git-lfs;
+          defaultText = literalExpression "pkgs.git-lfs";
+          description = "The git-lfs package to use";
+        };
+      };
     };
   };
 
+  config = mkMerge [
+    (mkIf cfg.enable {
+      environment.systemPackages = [ cfg.package ];
+      environment.etc.gitconfig = mkIf (cfg.config != {}) {
+        text = generators.toGitINI cfg.config;
+      };
+    })
+    (mkIf (cfg.enable && cfg.lfs.enable) {
+      environment.systemPackages = [ cfg.lfs.package ];
+      programs.git.config = {
+        filter.lfs = {
+          clean = "git-lfs clean -- %f";
+          smudge = "git-lfs smudge -- %f";
+          process = "git-lfs filter-process";
+          required = true;
+        };
+      };
+    })
+  ];
+
   meta.maintainers = with maintainers; [ figsoda ];
 }