From 9e3793918e742a7b790a9e7440911b9cc27d97cb Mon Sep 17 00:00:00 2001 From: larstvei Date: Sun, 7 Sep 2025 16:10:46 +0200 Subject: [PATCH] A bit of refactoring of home --- home/default.nix | 85 ++--------------------- home/languages/bqn/default.nix | 6 ++ home/languages/c/default.nix | 6 ++ home/languages/clojure/default.nix | 10 +++ home/languages/default.nix | 103 ++++------------------------ home/languages/go/default.nix | 7 ++ home/languages/haskell/default.nix | 12 ++++ home/languages/java/default.nix | 10 +++ home/languages/maude/default.nix | 6 ++ home/languages/minizinc/default.nix | 6 ++ home/languages/nix/default.nix | 7 ++ home/languages/python/default.nix | 23 +++++++ home/languages/rust/default.nix | 9 +++ home/languages/scheme/default.nix | 6 ++ home/languages/tex/default.nix | 6 ++ home/languages/zig/default.nix | 7 ++ home/tools/academic/default.nix | 6 ++ home/tools/default.nix | 70 +++---------------- home/tools/editor/default.nix | 6 ++ home/tools/git/default.nix | 12 ++++ home/tools/learning/default.nix | 6 ++ home/tools/multimedia/default.nix | 24 +++++++ home/tools/shell/default.nix | 48 +++++++++++++ home/tools/spelling/default.nix | 10 +++ home/tools/utils/default.nix | 15 ++++ 25 files changed, 277 insertions(+), 229 deletions(-) create mode 100644 home/languages/bqn/default.nix create mode 100644 home/languages/c/default.nix create mode 100644 home/languages/clojure/default.nix create mode 100644 home/languages/go/default.nix create mode 100644 home/languages/haskell/default.nix create mode 100644 home/languages/java/default.nix create mode 100644 home/languages/maude/default.nix create mode 100644 home/languages/minizinc/default.nix create mode 100644 home/languages/nix/default.nix create mode 100644 home/languages/python/default.nix create mode 100644 home/languages/rust/default.nix create mode 100644 home/languages/scheme/default.nix create mode 100644 home/languages/tex/default.nix create mode 100644 home/languages/zig/default.nix create mode 100644 home/tools/academic/default.nix create mode 100644 home/tools/editor/default.nix create mode 100644 home/tools/git/default.nix create mode 100644 home/tools/learning/default.nix create mode 100644 home/tools/multimedia/default.nix create mode 100644 home/tools/shell/default.nix create mode 100644 home/tools/spelling/default.nix create mode 100644 home/tools/utils/default.nix diff --git a/home/default.nix b/home/default.nix index 8baa187..ce0d513 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,85 +1,10 @@ { - lib, - pkgs, - emacs-larstvei, - ... -}: -let - concatAttrVals = attrSet: lib.concatMap (x: x) (lib.attrValues attrSet); - tools = import ./tools { - inherit pkgs; - inherit emacs-larstvei; - }; - languages = import ./languages { inherit pkgs; }; -in -{ - home.packages = concatAttrVals languages ++ concatAttrVals tools; + imports = [ + ./languages + ./tools + ]; - home.file.".config/enchant/hunspell/".source = "${pkgs.hunspellDicts.nb_NO}/share/hunspell/"; - - programs = { - fzf = { - enable = true; - enableFishIntegration = true; - }; - - fish = { - enable = true; - - functions = { - track_directories = { - description = "For directory tracking in emacs vterm"; - onEvent = "fish_postexec"; - body = "printf \'\\e]51;A\'(pwd)\'\\e\\\\\'"; - }; - }; - - shellInit = '' - if test "$TERM" != "dumb" - track_directories - end - set -gx DIRENV_LOG_FORMAT "" - ''; - }; - - starship = { - enable = true; - settings = { - custom = { - direnv = { - format = "[\\[direnv\\]]($style) "; - when = "env | grep -E '^DIRENV_FILE='"; - }; - }; - character = { - success_symbol = "[λ](bold green)"; - error_symbol = "[λ](bold red)"; - }; - }; - }; - - git = { - enable = true; - userName = "larstvei"; - userEmail = "larstvei@ifi.uio.no"; - ignores = [ - ".envrc" - ".DS_Store" - ".direnv" - ]; - }; - - direnv = { - enable = true; - nix-direnv.enable = true; - }; - - # Sets JAVA_HOME environment variable - java.enable = true; - - # Let Home Manager install and manage itself. - home-manager.enable = true; - }; + programs.home-manager.enable = true; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage diff --git a/home/languages/bqn/default.nix b/home/languages/bqn/default.nix new file mode 100644 index 0000000..c49e8c4 --- /dev/null +++ b/home/languages/bqn/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + cbqn + ]; +} diff --git a/home/languages/c/default.nix b/home/languages/c/default.nix new file mode 100644 index 0000000..3a8779b --- /dev/null +++ b/home/languages/c/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + gcc + ]; +} diff --git a/home/languages/clojure/default.nix b/home/languages/clojure/default.nix new file mode 100644 index 0000000..e84b057 --- /dev/null +++ b/home/languages/clojure/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + babashka + clj-kondo + clojure + leiningen + neil + ]; +} diff --git a/home/languages/default.nix b/home/languages/default.nix index fbe544e..2ea1fcd 100644 --- a/home/languages/default.nix +++ b/home/languages/default.nix @@ -1,91 +1,18 @@ -{ pkgs, ... }: -with pkgs; { - bqn = [ - cbqn - ]; - - c = [ gcc ]; - - clojure = [ - babashka - clj-kondo - clojure - leiningen - neil - ]; - - go = [ - go - gopls - ]; - - haskell = [ - (haskell.packages.ghc96.ghcWithPackages ( - ps: with ps; [ - QuickCheck - ] - )) - cabal-install - stack - ]; - - java = [ - jdk - jdt-language-server - ]; - - maude = [ - maude - ]; - - minizinc = [ - minizinc - ]; - - nix = [ - nil - nixfmt-rfc-style - ]; - - python = [ - (python3.withPackages ( - python-packages: with python-packages; [ - graphviz - html2text - hypothesis - matplotlib - numpy - openpyxl - pandas - pygments - python-lsp-server - scikit-learn - scipy - xlsxwriter - yattag - z3 - ] - )) - ]; - - rust = [ - cargo - rustc - rustfmt - rust-analyzer - ]; - - scheme = [ - gambit - ]; - - tex = [ - texliveFull - ]; - - zig = [ - zig - zls + imports = [ + ./bqn + ./c + ./clojure + ./go + ./haskell + ./java + ./maude + ./minizinc + ./nix + ./python + ./rust + ./scheme + ./tex + ./zig ]; } diff --git a/home/languages/go/default.nix b/home/languages/go/default.nix new file mode 100644 index 0000000..486a105 --- /dev/null +++ b/home/languages/go/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + go + gopls + ]; +} diff --git a/home/languages/haskell/default.nix b/home/languages/haskell/default.nix new file mode 100644 index 0000000..16b786b --- /dev/null +++ b/home/languages/haskell/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + (haskell.packages.ghc96.ghcWithPackages ( + ps: with ps; [ + QuickCheck + ] + )) + cabal-install + stack + ]; +} diff --git a/home/languages/java/default.nix b/home/languages/java/default.nix new file mode 100644 index 0000000..0a90d6d --- /dev/null +++ b/home/languages/java/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + # Sets JAVA_HOME environment variable + programs.java.enable = true; + + home.packages = with pkgs; [ + jdk + jdt-language-server + ]; +} diff --git a/home/languages/maude/default.nix b/home/languages/maude/default.nix new file mode 100644 index 0000000..5fa2670 --- /dev/null +++ b/home/languages/maude/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + maude + ]; +} diff --git a/home/languages/minizinc/default.nix b/home/languages/minizinc/default.nix new file mode 100644 index 0000000..79906f7 --- /dev/null +++ b/home/languages/minizinc/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + minizinc + ]; +} diff --git a/home/languages/nix/default.nix b/home/languages/nix/default.nix new file mode 100644 index 0000000..2a885b9 --- /dev/null +++ b/home/languages/nix/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + nil + nixfmt-rfc-style + ]; +} diff --git a/home/languages/python/default.nix b/home/languages/python/default.nix new file mode 100644 index 0000000..588e0ab --- /dev/null +++ b/home/languages/python/default.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + (python3.withPackages ( + python-packages: with python-packages; [ + graphviz + html2text + hypothesis + matplotlib + numpy + openpyxl + pandas + pygments + python-lsp-server + scikit-learn + scipy + xlsxwriter + yattag + z3 + ] + )) + ]; +} diff --git a/home/languages/rust/default.nix b/home/languages/rust/default.nix new file mode 100644 index 0000000..47da169 --- /dev/null +++ b/home/languages/rust/default.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + cargo + rustc + rustfmt + rust-analyzer + ]; +} diff --git a/home/languages/scheme/default.nix b/home/languages/scheme/default.nix new file mode 100644 index 0000000..c945a61 --- /dev/null +++ b/home/languages/scheme/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + gambit + ]; +} diff --git a/home/languages/tex/default.nix b/home/languages/tex/default.nix new file mode 100644 index 0000000..1cb82ea --- /dev/null +++ b/home/languages/tex/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + texliveFull + ]; +} diff --git a/home/languages/zig/default.nix b/home/languages/zig/default.nix new file mode 100644 index 0000000..56646a2 --- /dev/null +++ b/home/languages/zig/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + zig + zls + ]; +} diff --git a/home/tools/academic/default.nix b/home/tools/academic/default.nix new file mode 100644 index 0000000..78ee630 --- /dev/null +++ b/home/tools/academic/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + zotero + ]; +} diff --git a/home/tools/default.nix b/home/tools/default.nix index 0b626df..845a629 100644 --- a/home/tools/default.nix +++ b/home/tools/default.nix @@ -1,64 +1,12 @@ -{ pkgs, emacs-larstvei, ... }: -let - # Ghostscript has a name collision with gambit (scheme). Let's nuke the - # offending binary, as gsc most likely unused on my system. - ghostscriptNoGsc = pkgs.symlinkJoin { - name = "ghostscript-no-gsc"; - paths = [ pkgs.ghostscript ]; - postBuild = '' - rm -f $out/bin/gsc - ''; - }; -in -with pkgs; { - - editor = [ - emacs-larstvei.defaultPackage.${pkgs.system} - ]; - - spelling = [ - hunspell - hunspellDicts.en_US - hunspellDicts.nb_NO - ]; - - # terminal = [ - # ghostty - # ]; - - modernReplacements = [ - bat - fd - ripgrep - ]; - - utils = [ - gnumake - jet - jq - pandoc - parallel - tokei - wget - ]; - - multimedia = [ - dot2tex - ffmpeg - ghostscriptNoGsc - graphviz - imagemagick - inkscape - pdf2svg - poppler_utils - ]; - - academic = [ - zotero - ]; - - learning = [ - exercism + imports = [ + ./academic + ./editor + ./git + ./learning + ./multimedia + ./shell + ./spelling + ./utils ]; } diff --git a/home/tools/editor/default.nix b/home/tools/editor/default.nix new file mode 100644 index 0000000..0443d69 --- /dev/null +++ b/home/tools/editor/default.nix @@ -0,0 +1,6 @@ +{ pkgs, emacs-larstvei, ... }: +{ + home.packages = [ + emacs-larstvei.defaultPackage.${pkgs.system} + ]; +} diff --git a/home/tools/git/default.nix b/home/tools/git/default.nix new file mode 100644 index 0000000..9dcfecd --- /dev/null +++ b/home/tools/git/default.nix @@ -0,0 +1,12 @@ +{ + programs.git = { + enable = true; + userName = "larstvei"; + userEmail = "larstvei@ifi.uio.no"; + ignores = [ + ".envrc" + ".DS_Store" + ".direnv" + ]; + }; +} diff --git a/home/tools/learning/default.nix b/home/tools/learning/default.nix new file mode 100644 index 0000000..c3ada88 --- /dev/null +++ b/home/tools/learning/default.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + exercism + ]; +} diff --git a/home/tools/multimedia/default.nix b/home/tools/multimedia/default.nix new file mode 100644 index 0000000..9f665b5 --- /dev/null +++ b/home/tools/multimedia/default.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: +let + # Ghostscript has a name collision with gambit (scheme). Let's nuke the + # offending binary, as gsc most likely unused on my system. + ghostscriptNoGsc = pkgs.symlinkJoin { + name = "ghostscript-no-gsc"; + paths = [ pkgs.ghostscript ]; + postBuild = '' + rm -f $out/bin/gsc + ''; + }; +in +{ + home.packages = with pkgs; [ + dot2tex + ffmpeg + ghostscriptNoGsc + graphviz + imagemagick + inkscape + pdf2svg + poppler_utils + ]; +} diff --git a/home/tools/shell/default.nix b/home/tools/shell/default.nix new file mode 100644 index 0000000..9226566 --- /dev/null +++ b/home/tools/shell/default.nix @@ -0,0 +1,48 @@ +{ + programs = { + fish = { + enable = true; + + functions = { + track_directories = { + description = "For directory tracking in emacs vterm"; + onEvent = "fish_postexec"; + body = "printf \'\\e]51;A\'(pwd)\'\\e\\\\\'"; + }; + }; + + shellInit = '' + if test "$TERM" != "dumb" + track_directories + end + set -gx DIRENV_LOG_FORMAT "" + ''; + }; + + fzf = { + enable = true; + enableFishIntegration = true; + }; + + direnv = { + enable = true; + nix-direnv.enable = true; + }; + + starship = { + enable = true; + settings = { + custom = { + direnv = { + format = "[\\[direnv\\]]($style) "; + when = "env | grep -E '^DIRENV_FILE='"; + }; + }; + character = { + success_symbol = "[λ](bold green)"; + error_symbol = "[λ](bold red)"; + }; + }; + }; + }; +} diff --git a/home/tools/spelling/default.nix b/home/tools/spelling/default.nix new file mode 100644 index 0000000..0930837 --- /dev/null +++ b/home/tools/spelling/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + hunspell + hunspellDicts.en_US + hunspellDicts.nb_NO + ]; + + home.file.".config/enchant/hunspell/".source = "${pkgs.hunspellDicts.nb_NO}/share/hunspell/"; +} diff --git a/home/tools/utils/default.nix b/home/tools/utils/default.nix new file mode 100644 index 0000000..41b0051 --- /dev/null +++ b/home/tools/utils/default.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + bat + fd + gnumake + jet + jq + pandoc + parallel + ripgrep + tokei + wget + ]; +}