From 83e777828fc6d6edab1aea5a9f5027db3e268b9d Mon Sep 17 00:00:00 2001 From: LordGrimmauld Date: Sat, 16 Mar 2024 13:49:20 +0100 Subject: [PATCH] add tooling --- default.nix | 17 +++++++ modules/toolchains.nix | 112 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 modules/toolchains.nix diff --git a/default.nix b/default.nix index 8190f35..afa52a5 100644 --- a/default.nix +++ b/default.nix @@ -29,6 +29,22 @@ in { default = false; description = "Enables network manager, wifi and bluetooth"; }; + + options.tooling = { + enable = mkEnableOption "grimm-tooling"; + + git_user = mkOption { + type = types.str; + default = "Grimmauld"; + description = "Username for git to use"; + }; + + git_email = mkOption { + type = types.str; + default = "${config.grimmShared.tooling.git_user}@grimmauld.de"; + description = "Email for git to use"; + }; + }; }; imports = [ @@ -36,5 +52,6 @@ in { ./modules/printing.nix ./modules/portals.nix ./modules/networking.nix + ./modules/toolchains.nix ]; } diff --git a/modules/toolchains.nix b/modules/toolchains.nix new file mode 100644 index 0000000..5a73e15 --- /dev/null +++ b/modules/toolchains.nix @@ -0,0 +1,112 @@ +{ pkgs, config, lib, ... }: let + cfg = config.grimmShared; +in { + config = with cfg; lib.mkIf (enable && tooling.enable) { + invironment.systemPackages = with pkgs; [ + (writeShellScriptBin "silent-add" "git add --intent-to-add $@ ; git update-index --assume-unchanged $@") + (writeShellScriptBin "systemd-owner" "systemctl show -pUser,UID $@") + (writeShellScriptBin "nix-referrers" "nix-store --query --referrers $@") + mkpasswd + gcc + jdk17 + python3 + pkg-config + + pinentry + pass + libsecret + tea + acpi + (writeShellScriptBin "passw" "pass $@") + + fbcat + gomuks + gotop + ranger + nix-search-cli + + wget + tree + file + util-linux + gnupg + visualvm + ffmpeg-full + lm_sensors + imagemagick + pypy3 + + hyfetch + qdirstat + acpi + lshw + pciutils + usbutils + powertop + ]; + + programs.git = { + enable = true; + lfs.enable = true; + config = { + init.defaultBranch = "main"; + credential.username = git_user; + core.editor = "${pkgs.neovim}/bin/nvim"; + user.name = cfg.tooling.git_user; + user.email = cfg.tooling.git_email; + }; + }; + + programs.tmux = { + enable = true; + historyLimit = 42000; + #keyMode = "vi"; + }; + + virtualisation.docker.enable = true; + + + programs.neovim = { + enable = true; + viAlias = true; + defaultEditor = true; + configure = { + customRC = '' + set number + set hidden + set fileencodings=utf-8 + set nocompatible + set clipboard+=unnamedplus + if filereadable($HOME . "/.vimrc") + source ~/.vimrc + endif +''; + packages.myVimPackage = with pkgs.vimPlugins; { + # loaded on launch + start = [ + vim-nix + vim-scala + fugitive + ]; + + # manually loadable by calling `:packadd $plugin-name` + opt = [ ]; + }; + }; + }; + + services.passSecretService.enable = true; + services.pcscd.enable = true; + programs.xonsh.enable = true; + programs.ssh.startAgent = true; + programs.thefuck.enable = true; + programs.gnupg.agent = { + settings = { +# default-cache-ttl = 6000; + }; + pinentryPackage = pkgs.pinentry; + enable = true; + # enableSSHSupport = true; + }; + }; +}