Reorganize repository

This commit is contained in:
Charlotte Van Petegem 2021-07-10 09:03:38 +02:00
parent da1824edb6
commit 0fc6c32a47
No known key found for this signature in database
GPG key ID: 019E764B7184435A
124 changed files with 16295 additions and 1229 deletions

View file

@ -0,0 +1,27 @@
{ config, lib, ... }:
{
options.chvp.development.android.enable = lib.mkOption {
default = false;
example = true;
};
config = lib.mkIf config.chvp.development.android.enable {
chvp.base = {
emacs.extraConfig = [
''
;; Groovy (gradle) language support
(use-package groovy-mode
:mode "\\.gradle\\'")
;; Kotlin language support
(use-package kotlin-mode
:mode "\\.kt\\'")
''
];
zfs.homeLinks = [{ path = ".android"; type = "cache"; }];
};
programs.adb.enable = true;
users.users.charlotte.extraGroups = [ "adbusers" ];
};
}

View file

@ -0,0 +1,79 @@
{ config, lib, ... }:
{
imports = [
./android
./docker
./git
];
options.chvp.development.enable = lib.mkOption {
default = false;
example = true;
};
config = lib.mkIf config.chvp.development.enable {
chvp = {
base.emacs.extraConfig = [
''
;; Editorconfig
(use-package editorconfig
:diminish (editorconfig-mode)
:custom (editorconfig-get-properties-function 'editorconfig-get-properties)
:config (editorconfig-mode 1)
)
;; Language server support
(use-package lsp-mode :commands (lsp))
;; Markdown syntax support
(use-package markdown-mode
:commands (markdown-mode gfm-mode)
:mode ("README\\.md\\'" . gfm-mode)
:mode ("\\.md\\'" . markdown-mode)
:mode ("\\.markdown\\'" . markdown-mode)
)
;; YAML syntax support
(use-package yaml-mode
:mode "\\.yml\\'"
:mode "\\.yaml\\'"
)
;; R language support
(use-package ess)
;; Haskell language support
(use-package haskell-mode
:mode "\\.hs\\'")
;; Python syntax support
(use-package python-mode :mode "\\.py\\'")
;; Ruby language support
(use-package ruby-mode
:ensure nil ;; Included with emacs
:custom
(ruby-insert-encoding-magic-comment nil "Don't insert encoding magic comment")
)
;; TypeScript language support
(use-package typescript-mode
:mode "\\.ts\\'")
;; HTML (and HTML template) support
(use-package web-mode
:mode "\\.html\\'"
:mode "\\.html\\.erb\\'"
)
''
];
development = {
docker.enable = lib.mkDefault true;
git.enable = lib.mkDefault true;
};
};
boot.kernel.sysctl."fs.inotify.max_user_watches" = 524288;
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
{
options.chvp.development.docker.enable = lib.mkOption {
default = false;
example = true;
};
config = lib.mkIf config.chvp.development.docker.enable {
virtualisation.docker = {
enable = true;
extraOptions = "--data-root ${config.chvp.dataPrefix}/var/lib/docker";
storageDriver = "zfs";
};
environment.systemPackages = [ pkgs.docker-compose ];
users.users.charlotte.extraGroups = [ "docker" ];
};
}

View file

@ -0,0 +1,92 @@
{ config, lib, pkgs, ... }:
{
options.chvp.development.git = {
enable = lib.mkOption {
default = false;
example = true;
};
email = lib.mkOption {
type = lib.types.str;
default = "charlotte@vanpetegem.me";
example = "charlotte@vanpetegem.me";
description = ''
Default email set in global git config.
'';
};
};
config =
let
base = {
home.packages = with pkgs; [
gitAndTools.gitflow
git-crypt
];
programs.git = {
enable = true;
extraConfig = {
branch.autosetuprebase = "always";
pull.rebase = true;
github.user = "chvp";
};
ignores = [
".direnv"
".envrc"
"shell.nix"
# Ruby dependencies in source tree
"/vendor/bundle"
];
signing = {
key = "charlotte@vanpetegem.me";
signByDefault = config.chvp.graphical.enable;
};
userEmail = config.chvp.development.git.email;
userName = "Charlotte Van Petegem";
};
};
in
lib.mkIf config.chvp.development.git.enable {
chvp.base.emacs.extraConfig = [
''
;; Magit GitHub/GitLab integration
(use-package forge
:after magit)
;; Git integration
(use-package magit
:demand t
:general
(lmap
"g" '(:ignore t :which-key "git")
"gs" '(magit-status :which-key "status")
)
)
;; Project management
(use-package projectile
:after (ripgrep selectrum)
:demand t
:diminish (projectile-mode)
:config (projectile-mode 1)
:general
(lmap
"p" '(:ignore t :which-key "project")
"pf" '(projectile-find-file :which-key "find")
"pp" '(projectile-switch-project :which-key "switch")
"pr" '(projectile-replace :which-key "replace")
"ps" '(consult-ripgrep :search "incsearch")
"pS" '(projectile-ripgrep :which-key "search")
"p!" '(projectile-run-shell-command-in-root :which-key "command")
"p&" '(projectile-run-async-shell-command-in-root :which-key "task")
)
)
;; Ripgrep support (needed for `projectile-ripgrep')
(use-package ripgrep)
''
];
home-manager.users.charlotte = { ... }: base;
home-manager.users.root = { ... }: base;
};
}