users/foo-dogsquared/setups/development: init

This commit is contained in:
Gabriel Arazas 2023-12-18 08:58:34 +08:00
parent a26aa49614
commit 3a49474a5f
No known key found for this signature in database
GPG Key ID: ADE0C41DAB221FCC
3 changed files with 59 additions and 3 deletions

View File

@ -14,17 +14,15 @@
doom-emacs.enable = true;
email.enable = true;
email.thunderbird.enable = true;
git.enable = true;
keys.gpg.enable = true;
keys.ssh.enable = true;
research.enable = true;
shell.enable = true;
terminal-multiplexer.enable = true;
vs-code.enable = true;
};
setups = {
desktop.enable = true;
development.enable = true;
fonts.enable = true;
music.enable = true;
};

View File

@ -14,6 +14,7 @@
./programs/vs-code.nix
./setups/desktop.nix
./setups/development.nix
./setups/fonts.nix
./setups/music.nix
];

View File

@ -0,0 +1,57 @@
{ config, lib, pkgs, ... }:
let
userCfg = config.users.foo-dogsquared;
cfg = userCfg.setups.development;
in
{
options.users.foo-dogsquared.setups.development.enable =
lib.mkEnableOption "foo-dogsquared's software development setup";
config = lib.mkIf cfg.enable (lib.mkMerge [
{
users.foo-dogsquared.programs = {
shell.enable = lib.mkDefault true;
git.enable = lib.mkDefault true;
terminal-multiplexer.enable = lib.mkDefault true;
};
profiles.dev = {
enable = true;
extras.enable = true;
coreutils-replacement.enable = true;
shell.enable = true;
servers.enable = true;
};
home.packages = with pkgs; [
cachix # Compile no more by using someone's binary cache!
diffoscope # Oversized caffeine grinder.
regex-cli # Save some face of confusion for yourself.
dt # Get that functional gawk.
recode # Convert between different encodings.
];
}
(lib.mkIf userCfg.programs.git.enable {
home.packages = with pkgs; [
diffoscope
];
programs.git.settings = {
config.difftool.prompt = false;
# Yeah, let's use this oversized diff tool, shall we?
# Also, this config is based from this tip.
# https://lists.reproducible-builds.org/pipermail/diffoscope/2016-April/000193.html
config.difftool."diffoscope".cmd = ''
"if [ $LOCAL = /dev/null ]; then diffoscope --new-file $REMOTE; else diffoscope $LOCAL $REMOTE; fi"
'';
config.difftool."diffoscope-html".cmd = ''
"if [ $LOCAL = /dev/null ]; then diffoscope --new-file $REMOTE --html - | cat; else diffoscope $LOCAL $REMOTE --html - | cat; fi"
'';
};
})
]);
}