home

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 002befb915f019eeb6f26a69fe143edf05f0ba8f
parent 207823d93158a5bf8a6f929f9e6dc048c79f4c04
Author: Vincent Demeester <vincent@sbr.pm>
Date:   Thu,  1 Nov 2018 14:12:15 +0100

profiles: add dev, git and emacs profiles…

… right now it's just moving stuff around, some rework is required (on
emacs profiles for example)

Signed-off-by: Vincent Demeester <vincent@sbr.pm>

Diffstat:
Mdev.go.nix | 2+-
Mdev.haskell.nix | 2+-
Mdev.java.nix | 2+-
Mdev.js.nix | 2+-
Ddev.nix | 18------------------
Mdev.python.nix | 2+-
Mdev.rust.nix | 2+-
Demacs.nix | 229-------------------------------------------------------------------------------
Mmodules/module-list.nix | 5++++-
Rgit/redhat.gitconfig -> modules/profiles/assets/git/redhat.gitconfig | 0
Amodules/profiles/dev.nix | 38++++++++++++++++++++++++++++++++++++++
Amodules/profiles/emacs.nix | 242+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amodules/profiles/git.nix | 162+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
13 files changed, 452 insertions(+), 254 deletions(-)

diff --git a/dev.go.nix b/dev.go.nix @@ -1,7 +1,7 @@ { pkgs, prefix, ... }: { - imports = [ ./dev.nix ]; + profiles.dev.enable = true; xdg.configFile."fish/conf.d/go.fish".source = ./modules/profiles/assets/fish/go.fish; programs.fish.shellAbbrs = { got = "go test -v"; diff --git a/dev.haskell.nix b/dev.haskell.nix @@ -1,7 +1,7 @@ { pkgs, prefix, ... }: { - imports = [ ./dev.nix ]; + profiles.dev.enable = true; home.packages = with pkgs; [ ghc stack diff --git a/dev.java.nix b/dev.java.nix @@ -1,7 +1,7 @@ { pkgs, prefix, ... }: { - imports = [ ./dev.nix ]; + profiles.dev.enable = true; home.packages = with pkgs; [ jdk gradle diff --git a/dev.js.nix b/dev.js.nix @@ -1,7 +1,7 @@ { pkgs, prefix, ... }: { - imports = [ ./dev.nix ]; + profiles.dev.enable = true; home.file.".npmrc".text = '' prefix = ~/.local/npm ''; diff --git a/dev.nix b/dev.nix @@ -1,18 +0,0 @@ -{ pkgs, prefix, ... }: - -{ - imports = [ ./git.nix ./emacs.nix ]; - programs.fish.shellAbbrs = { - m = "make"; - }; - home.packages = with pkgs; [ - binutils-unwrapped - cmake - fswatch - gnumake - lnav - mercurial - ripgrep - shfmt - ]; -} diff --git a/dev.python.nix b/dev.python.nix @@ -1,7 +1,7 @@ { pkgs, prefix, ... }: { - imports = [ ./dev.nix ]; + profiles.dev.enable = true; home.packages = with pkgs; [ python3 python36Packages.virtualenv diff --git a/dev.rust.nix b/dev.rust.nix @@ -1,7 +1,7 @@ { pkgs, prefix, ... }: { - imports = [ ./dev.nix ]; + profiles.dev.enable = true; home.packages = with pkgs; [ rustup ]; diff --git a/emacs.nix b/emacs.nix @@ -1,229 +0,0 @@ -{ pkgs, config, lib, ... }: - -{ - # FIXME update this - home.file.".local/share/applications/org-protocol.desktop".source = ./modules/profiles/assets/xorg/org-protocol.desktop; - systemd.user.services.emacs = { - Unit = { - Description = "Emacs: the extensible, self-documenting text editor"; - }; - Service = { - Environment = '' - PATH=/home/vincent/bin:/home/vincent/.local/npm/bin:/run/wrappers/bin:/etc/profiles/per-user/vincent/bin:${config.home.profileDirectory}/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin GOPATH=/home/vincent ASPELL_CONF=dict-dir=/home/vincent/.nix-profile/lib/aspell - ''; - Type = "forking"; - ExecStart = "${pkgs.bash}/bin/bash -c 'source /etc/profile; exec /home/vincent/.nix-profile/bin/emacs --daemon'"; - ExecStop = "/home/vincent/.nix-profile/bin/emacsclient --eval (kill-emacs)"; - Restart = "always"; - }; - Install = { - WantedBy = [ "default.target" ]; - }; - }; - systemd.user.services.emacs-org = { - Unit = { - Description = "Emacs: the extensible, self-documenting text editor"; - }; - Service = { - Environment = '' - PATH=/home/vincent/bin:/home/vincent/.local/npm/bin:/run/wrappers/bin:/etc/profiles/per-user/vincent/bin:${config.home.profileDirectory}/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin GOPATH=/home/vincent ASPELL_CONF=dict-dir=/home/vincent/.nix-profile/lib/aspell - ''; - Type = "forking"; - ExecStart = "${pkgs.bash}/bin/bash -c 'source /etc/profile; exec /home/vincent/.nix-profile/bin/emacs --daemon=org'"; - ExecStop = "/home/vincent/.nix-profile/bin/emacsclient --socket-name=org --eval (kill-emacs)"; - Restart = "always"; - }; - Install = { - WantedBy = [ "default.target" ]; - }; - }; - programs.emacs = { - enable = true; - # package = pkgs.myEmacs; - extraPackages = epkgs: with epkgs; [ - ace-window - aggressive-indent - # alert - async - # auto-yasnippet - avy - bm - command-log-mode - company - company-emoji - company-ghc - company-go - company-lsp - (with melpaPackages; [ company-nixos-options ]) - #company-restclient - #company-shell - counsel - #counsel-gtags - counsel-projectile - # counsel-spotify - #counsel-tramp - #crux - dash - delight - diff-hl - diffview - dired-collapse - dired-sidebar - direnv - docker - docker-compose-mode - dockerfile-mode - doom-themes - #dumb-jump - #elpy - eshell-bookmark - (with melpaPackages; [ - eshell-prompt-extras - esh-autosuggest - ]) - exec-path-from-shell - expand-region - eyebrowse - (with melpaPackages; [ ez-query-replace ]) - fancy-narrow - fish-mode - (with melpaPackages; [ fish-completion ]) - flycheck - #flycheck-clojure - #flycheck-haskell - #flycheck-inline - #flycheck-gometalinter - flycheck-popup-tip - focus - fullframe - #ggtags - #ghub - #ghub-plus - git-commit - #git-timemachine - gitattributes-mode - gitconfig-mode - gitignore-mode - (with melpaPackages; [ - go-add-tags - # go-dlv - go-eldoc - go-errcheck - go-fill-struct - go-guru - # go-impl - go-mode - #gorepl-mode - go-tag - gotest - ]) - groovy-mode - hardhat - #haskell-mode - helpful - highlight - #highlight-escape-sequences - #highlight-leading-spaces - highlight-numbers - highlight-symbol - hydra - #ialign - ibuffer-vc - iedit - (with melpaPackages; [ imenu-list ]) - ivy - ivy-hydra - ivy-pass - ivy-rich - #jedi - #jq-mode - js-import - js2-mode - js2-refactor - json-mode - json-reformat - json-snatcher - (with melpaPackages; [ - key-chord - lsp-haskell - lsp-javascript-typescript - lsp-go - lsp-mode - lsp-python - lsp-rust - lsp-ui - ]) - magit - magit-gitflow - magit-popup - magit-todos - markdown-mode - (with melpaPackages; [ minions moody ]) - multiple-cursors - (with melpaPackages; [ - nix-buffer - nix-mode - nix-sandbox - nixos-options - ]) - no-littering - ob-async - ob-go - #ob-restclient - ob-rust - ob-typescript - org-plus-contrib - org-ref - #org-super-agenda - #org-web-tools - (with melpaPackages; [ org-projectile ]) - ox-epub - ox-hugo - ox-ioslide - ox-pandoc - ox-tufte - ox-twbs - pandoc-mode - pass - password-store - password-store-otp - # persistent-scratch - pinentry - popup - projectile - projectile-ripgrep - (with melpaPackages; [ pulseaudio-control ]) - python-mode - rainbow-delimiters - rainbow-mode - ripgrep - (with melpaPackages; [ rjsx-mode ]) - shift-number - shackle - shx - smart-jump - (with melpaPackages; [ smartparens ]) - solaire-mode - string-edit - #tide - toml-mode - typescript-mode - (with melpaPackages; [ undo-tree ]) - # (with melpaPackages; [ use-package use-package-chords use-package-ensure-system-package ]) - (with melpaPackages; [ use-package ]) - # vdiff - visual-fill-column - visual-regexp - #visual-regexp-steroids - #vlf - web-mode - wgrep - which-key - # window-purpose - with-editor - yasnippet - yaml-mode - ]; - }; -} - diff --git a/modules/module-list.nix b/modules/module-list.nix @@ -4,10 +4,13 @@ imports = [ ./profiles/bash.nix ./profiles/desktop.nix - ./profiles/ssh.nix + ./profiles/dev.nix + ./profiles/emacs.nix ./profiles/fish.nix + ./profiles/git.nix ./profiles/i3.nix ./profiles/laptop.nix + ./profiles/ssh.nix ./profiles/tmux.nix ./services/shairport-sync.nix ]; diff --git a/git/redhat.gitconfig b/modules/profiles/assets/git/redhat.gitconfig diff --git a/modules/profiles/dev.nix b/modules/profiles/dev.nix @@ -0,0 +1,38 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.profiles.dev; +in +{ + options = { + profiles.dev = { + enable = mkOption { + default = false; + description = "Enable development profile"; + type = types.bool; + }; + }; + }; + config = mkIf cfg.enable (mkMerge [ + { + profiles.git.enable = true; + profiles.emacs.enable = true; + home.packages = with pkgs; [ + binutils-unwrapped + cmake + fswatch + gnumake + lnav + mercurial + ripgrep + shfmt + ]; + } + (mkIf config.profiles.fish.enable { + programs.fish.shellAbbrs = { + m = "make"; + }; + }) + ]); +} diff --git a/modules/profiles/emacs.nix b/modules/profiles/emacs.nix @@ -0,0 +1,242 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.profiles.emacs; +in +{ + options = { + profiles.emacs = { + enable = mkOption { + default = false; + description = "Enable emacs profile"; + type = types.bool; + }; + }; + }; + config = mkIf cfg.enable { + home.file.".local/share/applications/org-protocol.desktop".source = ./assets/xorg/org-protocol.desktop; + systemd.user.services.emacs = { + Unit = { + Description = "Emacs: the extensible, self-documenting text editor"; + }; + Service = { + Environment = '' + PATH=/home/vincent/bin:/home/vincent/.local/npm/bin:/run/wrappers/bin:/etc/profiles/per-user/vincent/bin:${config.home.profileDirectory}/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin GOPATH=/home/vincent ASPELL_CONF=dict-dir=/home/vincent/.nix-profile/lib/aspell + ''; + Type = "forking"; + ExecStart = "${pkgs.bash}/bin/bash -c 'source /etc/profile; exec /home/vincent/.nix-profile/bin/emacs --daemon'"; + ExecStop = "/home/vincent/.nix-profile/bin/emacsclient --eval (kill-emacs)"; + Restart = "always"; + }; + Install = { + WantedBy = [ "default.target" ]; + }; + }; + systemd.user.services.emacs-org = { + Unit = { + Description = "Emacs: the extensible, self-documenting text editor"; + }; + Service = { + Environment = '' + PATH=/home/vincent/bin:/home/vincent/.local/npm/bin:/run/wrappers/bin:/etc/profiles/per-user/vincent/bin:${config.home.profileDirectory}/bin:/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin GOPATH=/home/vincent ASPELL_CONF=dict-dir=/home/vincent/.nix-profile/lib/aspell + ''; + Type = "forking"; + ExecStart = "${pkgs.bash}/bin/bash -c 'source /etc/profile; exec /home/vincent/.nix-profile/bin/emacs --daemon=org'"; + ExecStop = "/home/vincent/.nix-profile/bin/emacsclient --socket-name=org --eval (kill-emacs)"; + Restart = "always"; + }; + Install = { + WantedBy = [ "default.target" ]; + }; + }; + programs.emacs = { + enable = true; + # package = pkgs.myEmacs; + extraPackages = epkgs: with epkgs; [ + ace-window + aggressive-indent + # alert + async + # auto-yasnippet + avy + bm + command-log-mode + company + company-emoji + company-ghc + company-go + company-lsp + (with melpaPackages; [ company-nixos-options ]) + #company-restclient + #company-shell + counsel + #counsel-gtags + counsel-projectile + # counsel-spotify + #counsel-tramp + #crux + dash + delight + diff-hl + diffview + dired-collapse + dired-sidebar + direnv + docker + docker-compose-mode + dockerfile-mode + doom-themes + #dumb-jump + #elpy + eshell-bookmark + (with melpaPackages; [ + eshell-prompt-extras + esh-autosuggest + ]) + exec-path-from-shell + expand-region + eyebrowse + (with melpaPackages; [ ez-query-replace ]) + fancy-narrow + fish-mode + (with melpaPackages; [ fish-completion ]) + flycheck + #flycheck-clojure + #flycheck-haskell + #flycheck-inline + #flycheck-gometalinter + flycheck-popup-tip + focus + fullframe + #ggtags + #ghub + #ghub-plus + git-commit + #git-timemachine + gitattributes-mode + gitconfig-mode + gitignore-mode + (with melpaPackages; [ + go-add-tags + # go-dlv + go-eldoc + go-errcheck + go-fill-struct + go-guru + # go-impl + go-mode + #gorepl-mode + go-tag + gotest + ]) + groovy-mode + hardhat + #haskell-mode + helpful + highlight + #highlight-escape-sequences + #highlight-leading-spaces + highlight-numbers + highlight-symbol + hydra + #ialign + ibuffer-vc + iedit + (with melpaPackages; [ imenu-list ]) + ivy + ivy-hydra + ivy-pass + ivy-rich + #jedi + #jq-mode + js-import + js2-mode + js2-refactor + json-mode + json-reformat + json-snatcher + (with melpaPackages; [ + key-chord + lsp-haskell + lsp-javascript-typescript + lsp-go + lsp-mode + lsp-python + lsp-rust + lsp-ui + ]) + magit + magit-gitflow + magit-popup + magit-todos + markdown-mode + (with melpaPackages; [ minions moody ]) + multiple-cursors + (with melpaPackages; [ + nix-buffer + nix-mode + nix-sandbox + nixos-options + ]) + no-littering + ob-async + ob-go + #ob-restclient + ob-rust + ob-typescript + org-plus-contrib + org-ref + #org-super-agenda + #org-web-tools + (with melpaPackages; [ org-projectile ]) + ox-epub + ox-hugo + ox-ioslide + ox-pandoc + ox-tufte + ox-twbs + pandoc-mode + pass + password-store + password-store-otp + # persistent-scratch + pinentry + popup + projectile + projectile-ripgrep + (with melpaPackages; [ pulseaudio-control ]) + python-mode + rainbow-delimiters + rainbow-mode + ripgrep + (with melpaPackages; [ rjsx-mode ]) + shift-number + shackle + shx + smart-jump + (with melpaPackages; [ smartparens ]) + solaire-mode + string-edit + #tide + toml-mode + typescript-mode + (with melpaPackages; [ undo-tree ]) + # (with melpaPackages; [ use-package use-package-chords use-package-ensure-system-package ]) + (with melpaPackages; [ use-package ]) + # vdiff + visual-fill-column + visual-regexp + #visual-regexp-steroids + #vlf + web-mode + wgrep + which-key + # window-purpose + with-editor + yasnippet + yaml-mode + ]; + }; + }; +} diff --git a/modules/profiles/git.nix b/modules/profiles/git.nix @@ -0,0 +1,162 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.profiles.git; + ca-bundle_crt = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; +in +{ + options = { + profiles.git = { + enable = mkOption { + default = false; + description = "Enable git profile"; + type = types.bool; + }; + }; + }; + config = mkIf cfg.enable (mkMerge [ + { + home.packages = with pkgs; [ + gist + git-lfs + gitAndTools.gitflow + gitAndTools.hub + gitAndTools.tig + prm + ]; + programs.git = { + enable = true; + + userName = "Vincent Demeester"; + userEmail = "vincent@sbr.pm"; + + signing = { + key = "6EB699A3"; + signByDefault = false; + }; + + aliases = { + b = "branch --color -v"; + br = "branch"; + ci = "commit --signoff"; + co = "checkout"; + conflicts = "!git ls-files --unmerged | cut -c51- | sort -u | xargs $EDITOR"; + ca = "commit --amend"; + wdiff = "diff --color-words"; + unstage = "reset HEAD"; + lg = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative"; + lga = "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative --branches --remotes"; + lol = "log --pretty=oneline --abbrev-commit --graph --decorate"; + ls-ignored = "ls-files --exclude-standard --ignored --others"; + resolve = "!git ls-files --unmerged | cut -c51- | sort -u | xargs git add"; + su = "submodule update --init --recursive"; + st = "status"; + w = "status -sb"; + }; + extraConfig = { + core = { + editor = "${pkgs.emacs}/bin/emacsclient -t"; + }; + color = { + status = "auto"; + diff = "auto"; + branch = "auto"; + interactive = "auto"; + ui = "auto"; + sh = "auto"; + }; + "color \"branch\"" = { + current = "cyan reverse"; + local = "cyan"; + remote = "green"; + }; + "color \"diff\"" = { + current = "white reverse"; + frag = "magenta reverse"; + old = "red"; + new = "green"; + }; + "color \"status\"" = { + added = "green"; + changed = "yellow"; + untracked = "red"; + }; + hub = { + protocol = true; + }; + pull = { + rebase = true; + }; + push = { + default = "upstream"; + recurseSubmodules = "check"; + }; + rebase = { + autosquash = true; + }; + advice = { + statusHints = false; + pushNonFastForward = false; + }; + http = { + sslCAinfo = "${ca-bundle_crt}"; + sslverify = true; + }; + github.user = "vdemeester"; + "filter \"lfs\"" = { + clean = "${pkgs.git-lfs}/bin/git-lfs clean -- %f"; + smudge = "${pkgs.git-lfs}/bin/git-lfs smudge --skip -- %f"; + required = true; + }; + "url \"git@github.com:\"".insteadOf = "git://github.com/"; + }; + + includes = [ + { + path = "~/.config/git/config.d/redhat.gitconfig"; + condition = "gitdir:~/src/github.com/knative/"; + } + { + path = "~/.config/git/config.d/redhat.gitconfig"; + condition = "gitdir:~/src/k8s.io/"; + } + { + path = "~/.config/git/config.d/redhat.gitconfig"; + condition = "gitdir:~/src/github.com/minishift/"; + } + { + path = "~/.config/git/config.d/redhat.gitconfig"; + condition = "gitdir:~/src/github.com/operator-framework/"; + } + { + path = "~/.config/git/config.d/redhat.gitconfig"; + condition = "gitdir:~/src/github.com/openshift/"; + } + { + path = "~/.config/git/config.d/redhat.gitconfig"; + condition = "gitdir:~/src/github.com/redhat-developer/"; + } + { + path = "~/.config/git/config.d/redhat.gitconfig"; + condition = "gitdir:~/src/github.com/containers/"; + } + ]; + ignores = [ + "*.elc" "*.vo" "*.aux" "*.v.d" "*.o" "*.a" "*.la" "*.so" "*.dylib" + "*.pyc" "*.pyo" ".idea" "*.iml" + "*~" "#*#" ".makefile" ".clean" + ]; + }; + xdg.configFile."git/config.d/redhat.gitconfig".source = ./assets/git/redhat.gitconfig; + } + (mkIf config.profiles.fish.enable{ + xdg.configFile."fish/conf.d/git.fish".source = ./assets/fish/git.fish; + programs.fish.shellAbbrs = { + gs = "git status"; + gb = "git b"; + gfr = "git fetch -p --all;and git rebase -S --autostash"; + }; + }) + ]); +}