From 418ec7b94aa8202e5f5f0a59f2bb97a7c0510068 Mon Sep 17 00:00:00 2001 From: Kenny Ballou Date: Wed, 14 Oct 2020 10:05:44 -0600 Subject: dots: now for something completely different Use home-manager to configure user packages, dotfiles, and various other configurations. Add home-manager configuration for installing and managing user packages and profiles. Convert nearly all configuration to use home-manager to install and link configuration files. In no particular order of reference, I've used and/or referenced the following configurations and posts for this homeification: [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10]]. [0]: https://gitlab.com/NobbZ/nix-home-manager-dotfiles [1]: https://www.malloc47.com/migrating-to-nixos/ [2]: https://lucperkins.dev/blog/home-manager/ [3]: https://github.com/jwiegley/nix-config [4]: https://www.thedroneely.com/posts/declarative-user-package-management-in-nixos/ [5]: https://hugoreeves.com/posts/2019/nix-home/ [6]: https://rycee.gitlab.io/home-manager/ [7]: https://rycee.net/posts/2017-07-02-manage-your-home-with-nix.html [8]: https://github.com/abcdw/rde [9]: https://github.com/ryantm/dotfiles [10]: https://git.sr.ht/~vdemeester/home Signed-off-by: Kenny Ballou --- overlays/beam/default.nix | 11 ++ overlays/clang/default.nix | 12 ++ overlays/cpp/default.nix | 14 +++ overlays/development/default.nix | 26 +++++ overlays/dlang/default.nix | 10 ++ overlays/elm/default.nix | 12 ++ overlays/emacs/builders/elisp.nix | 30 +++++ overlays/emacs/default.nix | 29 +++++ overlays/emacs/packages.nix | 238 ++++++++++++++++++++++++++++++++++++++ overlays/fonts/default.nix | 17 +++ overlays/git/default.nix | 16 +++ overlays/golang/default.nix | 19 +++ overlays/haskell/default.nix | 12 ++ overlays/js/default.nix | 14 +++ overlays/jvm/default.nix | 32 +++++ overlays/ml/default.nix | 10 ++ overlays/nix/default.nix | 17 +++ overlays/php/default.nix | 11 ++ overlays/python/default.nix | 26 +++++ overlays/r/default.nix | 10 ++ overlays/rust/default.nix | 15 +++ overlays/scheme/default.nix | 12 ++ overlays/tex/default.nix | 11 ++ 23 files changed, 604 insertions(+) create mode 100644 overlays/beam/default.nix create mode 100644 overlays/clang/default.nix create mode 100644 overlays/cpp/default.nix create mode 100644 overlays/development/default.nix create mode 100644 overlays/dlang/default.nix create mode 100644 overlays/elm/default.nix create mode 100644 overlays/emacs/builders/elisp.nix create mode 100644 overlays/emacs/default.nix create mode 100644 overlays/emacs/packages.nix create mode 100644 overlays/fonts/default.nix create mode 100644 overlays/git/default.nix create mode 100644 overlays/golang/default.nix create mode 100644 overlays/haskell/default.nix create mode 100644 overlays/js/default.nix create mode 100644 overlays/jvm/default.nix create mode 100644 overlays/ml/default.nix create mode 100644 overlays/nix/default.nix create mode 100644 overlays/php/default.nix create mode 100644 overlays/python/default.nix create mode 100644 overlays/r/default.nix create mode 100644 overlays/rust/default.nix create mode 100644 overlays/scheme/default.nix create mode 100644 overlays/tex/default.nix (limited to 'overlays') diff --git a/overlays/beam/default.nix b/overlays/beam/default.nix new file mode 100644 index 00000000..d10dad8a --- /dev/null +++ b/overlays/beam/default.nix @@ -0,0 +1,11 @@ +self: super: +{ + beam-environment = super.buildEnv { + name = "beam-environment"; + ignoreCollisions = true; + paths = [ + self.elixir + self.erlang + ]; + }; +} diff --git a/overlays/clang/default.nix b/overlays/clang/default.nix new file mode 100644 index 00000000..6823cd1d --- /dev/null +++ b/overlays/clang/default.nix @@ -0,0 +1,12 @@ +self: super: +{ + clang-environment = super.buildEnv { + name = "clang-environment"; + ignoreCollisions = true; + paths = [ + self.clang + self.clang-tools + self.llvm + ]; + }; +} diff --git a/overlays/cpp/default.nix b/overlays/cpp/default.nix new file mode 100644 index 00000000..dac97267 --- /dev/null +++ b/overlays/cpp/default.nix @@ -0,0 +1,14 @@ +self: super: +{ + cpp-environment = super.buildEnv { + name = "cpp-environment"; + ignoreCollisions = true; + paths = [ + self.boost + self.gcc + self.libcxx + self.libcxxabi + self.stdman + ]; + }; +} diff --git a/overlays/development/default.nix b/overlays/development/default.nix new file mode 100644 index 00000000..80a3058e --- /dev/null +++ b/overlays/development/default.nix @@ -0,0 +1,26 @@ +self: super: +{ + development-tools = super.buildEnv { + name = "development-tools"; + ignoreCollisions = true; + paths = [ + self.autoconf + self.autogen + self.automake + self.cmake + self.cmake + self.cppcheck + self.doxygen + self.gdb + self.global + self.gnum4 + self.gnumake + self.lcov + self.libtool + self.ltrace + self.pkgconfig + self.strace + self.valgrind + ]; + }; +} diff --git a/overlays/dlang/default.nix b/overlays/dlang/default.nix new file mode 100644 index 00000000..87fa6216 --- /dev/null +++ b/overlays/dlang/default.nix @@ -0,0 +1,10 @@ +self: super: +{ + dlang-environment = super.buildEnv { + name = "dlang-environment"; + paths = [ + self.dmd + self.rdmd + ]; + }; +} diff --git a/overlays/elm/default.nix b/overlays/elm/default.nix new file mode 100644 index 00000000..3bab9213 --- /dev/null +++ b/overlays/elm/default.nix @@ -0,0 +1,12 @@ +self: super: +{ + elm-environment = super.buildEnv { + name = "elm-environment"; + ignoreCollisions = true; + paths = with self.elmPackages; [ + elm + elm-format + elm-test + ]; + }; +} diff --git a/overlays/emacs/builders/elisp.nix b/overlays/emacs/builders/elisp.nix new file mode 100644 index 00000000..915962c0 --- /dev/null +++ b/overlays/emacs/builders/elisp.nix @@ -0,0 +1,30 @@ +# https://github.com/jwiegley/nix-config/blob/4d296ad/overlays/emacs/builder.nix +{ stdenv +, emacs +, name +, src +, buildInputs ? [] +, patches ? [] +, preBuild ? "" +}: + +stdenv.mkDerivation { + inherit name src patches; + unpackCmd = '' + test -f "${src}" && mkdir el && cp -p ${src} el/${name} + ''; + buildInputs = [ emacs ] ++ buildInputs; + buildPhase = '' + ${preBuild} + ${emacs}/bin/emacs -Q -nw -L . --batch -f batch-byte-compile *.el + ''; + installPhase = '' + mkdir -p $out/share/emacs/site-lisp + install *.el* $out/share/emacs/site-lisp + ''; + meta = { + description = "Emacs projects from the Internet that just compile `.el` files"; + homepage = http://www.emacswiki.org; + platforms = stdenv.lib.platforms.all; + }; +} diff --git a/overlays/emacs/default.nix b/overlays/emacs/default.nix new file mode 100644 index 00000000..86dc813c --- /dev/null +++ b/overlays/emacs/default.nix @@ -0,0 +1,29 @@ +self: super: +let + utils = pkgs: import ../../nix/utils.nix { pkgs = pkgs; }; + gtk3-emacs = (super.pkgs.emacs.override { + withGTK3 = true; + withGTK2 = false; + }); + lucid-emacs = (super.pkgs.emacs.override { + # enable lucid + withGTK3 = false; + withGTK2 = false; + }); + ePackages = self.callPackage ./packages.nix { }; + emacsWithPackages = emacs: + (self.emacsPackagesGen ((utils self.pkgs).optimizeForThisHost emacs)).emacsWithPackages + (ePackages.emacs-package-list self.emacsPackages); + +in { + emacs-overlay = super.buildEnv { + name = "emacs-overlay"; + ignoreCollisions = true; + paths = [ + (emacsWithPackages gtk3-emacs) + self.mu + self.multimarkdown + self.librsvg + ]; + }; +} diff --git a/overlays/emacs/packages.nix b/overlays/emacs/packages.nix new file mode 100644 index 00000000..0f1ce142 --- /dev/null +++ b/overlays/emacs/packages.nix @@ -0,0 +1,238 @@ +# https://github.com/jwiegley/nix-config/blob/master/overlays/10-emacs.nix +{ pkgs, ... }: +let + inherit (pkgs) fetchurl fetchgit fetchFromGitHub stdenv; + inherit (stdenv) lib; + + withPatches = pkg: patches: + pkg.OverrideAttrs(attrs: { inherit patches; }); + compileElispFiles = pkgs.callPackage ./builders/elisp.nix; + fetchFromEmacsWiki = pkgs.callPackage ({ fetchurl, name, sha256 }: + fetchurl { + inherit sha256; + url = "https://www.emacswiki.org/emacs/download/" + name; + }); + compileEmacsWikiFile = { name, sha256, buildInputs ? [], patches ? [] }: + compileElispFiles { + inherit name buildInputs patches; + src = fetchFromEmacsWiki { inherit name sha256; }; + }; +in rec { + ascii = compileEmacsWikiFile { + name = "ascii.el"; + sha256 = "1ijpnk334fbah94vm7dkcd2w4zcb0l7yn4nr9rwgpr2l25llnr0f"; + }; + hexrgb = compileEmacsWikiFile { + name = "hexrgb.el"; + sha256 = "18hb8brf7x92aidjfgczxangri6rkqq4x5d06lh41193f97rslm8"; + }; + + palette = compileEmacsWikiFile { + name = "palette.el"; + sha256 = "149y6bmn0njgq632m9zdnaaw7wrvxvfqndpqlgcizn6dwzixiih6"; + buildInputs = [ hexrgb ]; + }; + + emacs-package-list = (epkgs: (with epkgs.melpaPackages; [ + add-node-modules-path + ag + alchemist + anaconda-mode + anti-zenburn-theme + anzu + autodisass-java-bytecode + avy + bash-completion + bind-key + bnf-mode + browse-kill-ring + buffer-move + bundler + cider + cljsbuild-mode + clojure-mode + coffee-mode + company + counsel + counsel-projectile + counsel-tramp + coverlay + css-eldoc + csv + d-mode + dap-mode + define-word + diff-hl + diminish + disable-mouse + docker + docker-compose-mode + docker-tramp + dockerfile-mode + doom-themes + editorconfig + edts + ein + elein + elfeed + elfeed-org + elixir-mode + elm-mode + erlang + ess + exec-path-from-shell + expand-region + f + flycheck + flycheck-clojure + flycheck-color-mode-line + flycheck-credo + flycheck-elixir + flycheck-elm + flycheck-haskell + flycheck-ledger + flycheck-ocaml + flycheck-rust + fold-dwim + forge + fullframe + geben + geben-helm-projectile + geiser + git-auto-commit-mode + git-commit + git-timemachine + gitconfig-mode + gitignore-mode + go-autocomplete + go-eldoc + go-mode + go-stacktracer + #goto-gem + gnuplot + graphviz-dot-mode + guix + gxref + haml-mode + haskell-mode + helm + helm-bbdb + helm-bibtex + helm-descbinds + helm-flycheck + helm-flyspell + helm-gtags + helm-lsp + helm-mu + helm-projectile + helm-rg + helm-sql-connect + helm-tramp + helm-wordnet + helm-xref + highlight-escape-sequences + #hindent + htmlize + hydra + ibuffer-vc + import-js + inf-ruby + ivy + jedi + js-comint + js2-mode + json-mode + ledger-mode + less-css-mode + list-unicode-display + lsp-haskell + lsp-mode + lsp-java + lsp-ui + magit + markdown-mode + mmm-mode + mpdel + multiple-cursors + mwim + nix-buffer + nix-mode + nix-update + ob-elixir + ob-go + ob-ipython + ob-mongo + olivetti + org-babel-eval-in-repl + org-cliplink + org-pomodoro + org-ref + ox-gfm + page-break-lines + pcmpl-args + pcmpl-git + pcmpl-pip + pcomplete-extension + pdf-tools + peep-dired + php-mode + pip-requirements + polymode + projectile + racer + rainbow-delimiters + realgud + realgud-jdb + regex-tool + robe + rspec-mode + ruby-compilation + ruby-hash-syntax + rust-mode + sass-mode + scss-mode + session + skewer-less + skewer-mode + smartparens + smex + smooth-scrolling + solarized-theme + spacemacs-theme + spaceline + swiper + swiper-helm + switch-window + tagedit + toml-mode + tuareg + typescript-mode + unfill + unicode-fonts + unicode-whitespace + uptimes + use-package + virtualenvwrapper + wgrep-ag + which-key + whitespace-cleanup-mode + whole-line-or-region + with-editor + xref-js2 + yari + yasnippet + zenburn-theme + ]) ++ (with epkgs.elpaPackages; [ + auctex + delight + pinentry + python + rainbow-mode + spinner + undo-tree + ]) ++ (with epkgs.melpaStablePackages; [ + ]) ++ [ + ascii + hexrgb + ]); +} diff --git a/overlays/fonts/default.nix b/overlays/fonts/default.nix new file mode 100644 index 00000000..db577efe --- /dev/null +++ b/overlays/fonts/default.nix @@ -0,0 +1,17 @@ +self: super: +{ + fonts-overlay = super.buildEnv { + name = "fonts-overlay"; + ignoreCollisions = true; + paths = [ + self.carlito + self.dejavu_fonts + self.ipafont + self.kochi-substitute + self.noto-fonts + self.source-code-pro + self.symbola + self.ttf_bitstream_vera + ]; + }; +} diff --git a/overlays/git/default.nix b/overlays/git/default.nix new file mode 100644 index 00000000..3fdb0bd2 --- /dev/null +++ b/overlays/git/default.nix @@ -0,0 +1,16 @@ +self: super: +{ + git-tools = super.buildEnv { + name = "git-tools"; + ignoreCollisions = true; + paths = [ + self.gitAndTools.delta + self.gitAndTools.git-crypt + self.gitAndTools.gitFastExport + self.gitAndTools.pass-git-helper + self.gitAndTools.tig + self.gitFull + self.gitstats + ]; + }; +} diff --git a/overlays/golang/default.nix b/overlays/golang/default.nix new file mode 100644 index 00000000..0f43d90a --- /dev/null +++ b/overlays/golang/default.nix @@ -0,0 +1,19 @@ +self: super: +{ + golang-environment = super.buildEnv { + name = "golang-environment"; + ignoreCollisions = true; + paths = [ + self.delve + self.glide + self.go + self.go-bindata + self.go2nix + self.gocode + self.godef + self.golint + self.gopls + self.gotools + ]; + }; +} diff --git a/overlays/haskell/default.nix b/overlays/haskell/default.nix new file mode 100644 index 00000000..d46ffd0e --- /dev/null +++ b/overlays/haskell/default.nix @@ -0,0 +1,12 @@ +self: super: +{ + ghc-environment = super.buildEnv { + name = "ghc-environment"; + ignoreCollisions = true; + paths = [ + self.ghc + self.ghcid + self.haskellPackages.ghcide + ]; + }; +} diff --git a/overlays/js/default.nix b/overlays/js/default.nix new file mode 100644 index 00000000..384f8772 --- /dev/null +++ b/overlays/js/default.nix @@ -0,0 +1,14 @@ +self: super: +{ + js-environment = super.buildEnv { + name = "js-environment"; + ignoreCollisions = true; + paths = [ + self.nodePackages.csslint + self.nodePackages.eslint + self.nodePackages.js-beautify + self.nodejs + self.yarn + ]; + }; +} diff --git a/overlays/jvm/default.nix b/overlays/jvm/default.nix new file mode 100644 index 00000000..00962175 --- /dev/null +++ b/overlays/jvm/default.nix @@ -0,0 +1,32 @@ +self: super: +let + utils = import ../../nix/utils.nix { pkgs = self.pkgs; }; + optimizeJDK = jdk: utils.optimizeForThisHost jdk; + mkMaven = jdk: (super.pkgs.maven.override { + jdk = jdk; + }); + mkLeiningen = jdk: (super.pkgs.leiningen.override { + jdk = jdk; + }); + mkJVMEnv = jdk: name: + super.buildEnv { + name = name; + ignoreCollisions = true; + paths = [ + self.ammonite + self.aspectj + self.clj-kondo + self.eclipses.eclipse-java + self.jetbrains.idea-community + self.jmeter + jdk + self.visualvm + ]; + }; +in { + jvm-environment8 = mkJVMEnv (optimizeJDK self.openjdk8) "jvm-environment8"; + + jvm-environment11 = mkJVMEnv (optimizeJDK self.openjdk11) "jvm-environment11"; + + jvm-environment14 = mkJVMEnv (optimizeJDK self.openjdk14) "jvm-environment14"; +} diff --git a/overlays/ml/default.nix b/overlays/ml/default.nix new file mode 100644 index 00000000..7d2940a7 --- /dev/null +++ b/overlays/ml/default.nix @@ -0,0 +1,10 @@ +self: super: +{ + ml-environment = super.buildEnv { + name = "ml-environment"; + ignoreCollisions = true; + paths = [ + self.ocaml + ]; + }; +} diff --git a/overlays/nix/default.nix b/overlays/nix/default.nix new file mode 100644 index 00000000..8262fc18 --- /dev/null +++ b/overlays/nix/default.nix @@ -0,0 +1,17 @@ +self: super: +{ + nix-tools = super.buildEnv { + name = "nix-tools"; + ignoreCollisions = true; + paths = [ + self.nix-bash-completions + self.nix-diff + self.nix-index + self.nix-prefetch-git + self.nix-prefetch-github + self.nix-review + self.nix-top + self.nix-zsh-completions + ]; + }; +} diff --git a/overlays/php/default.nix b/overlays/php/default.nix new file mode 100644 index 00000000..88c97b72 --- /dev/null +++ b/overlays/php/default.nix @@ -0,0 +1,11 @@ +self: super: +{ + php-environment = super.buildEnv { + name = "php-environment"; + ignoreCollisions = true; + paths = [ + self.php + self.phpPackages.composer + ]; + }; +} diff --git a/overlays/python/default.nix b/overlays/python/default.nix new file mode 100644 index 00000000..ae3e7ae2 --- /dev/null +++ b/overlays/python/default.nix @@ -0,0 +1,26 @@ +self: super: +{ + python-environment = super.buildEnv { + name = "python-environment"; + paths = [ + (self.python38.withPackages ( + ps: with ps; [ + flake8 + gprof2dot + ipython + pip + pycodestyle + pyflakes + pygobject3 + pyparsing + python-language-server + setuptools + virtualenv + yamllint + ] + )) + + self.setupcfg2nix + ]; + }; +} diff --git a/overlays/r/default.nix b/overlays/r/default.nix new file mode 100644 index 00000000..5f565b92 --- /dev/null +++ b/overlays/r/default.nix @@ -0,0 +1,10 @@ +self: super: +{ + r-environment = super.buildEnv { + name = "r-environment"; + ignoreCollisions = true; + paths = [ + self.R + ]; + }; +} diff --git a/overlays/rust/default.nix b/overlays/rust/default.nix new file mode 100644 index 00000000..71ebf883 --- /dev/null +++ b/overlays/rust/default.nix @@ -0,0 +1,15 @@ +self: super: +{ + rust-environment = super.buildEnv { + name = "rust-environment"; + ignoreCollisions = true; + paths = [ + self.cargo + self.cargo-update + self.cargo2nix + self.rls + self.rustc + self.rustracer + ]; + }; +} diff --git a/overlays/scheme/default.nix b/overlays/scheme/default.nix new file mode 100644 index 00000000..748063f8 --- /dev/null +++ b/overlays/scheme/default.nix @@ -0,0 +1,12 @@ +self: super: +{ + scheme-environment = super.buildEnv { + name = "scheme-environment"; + ignoreCollisions = true; + paths = [ + self.guile + self.guile-lint + self.racket + ]; + }; +} diff --git a/overlays/tex/default.nix b/overlays/tex/default.nix new file mode 100644 index 00000000..119d6912 --- /dev/null +++ b/overlays/tex/default.nix @@ -0,0 +1,11 @@ +self: super: +{ + texFull = super.buildEnv { + name = "texFull"; + ignoreCollisions = true; + paths = [ + self.pygmentex + self.texlive.combined.scheme-full + ]; + }; +} -- cgit v1.2.1