mirror of
https://github.com/larstvei/nix-config.git
synced 2025-09-15 11:30:13 +00:00
A bit of refactoring of home
This commit is contained in:
parent
7e0fd0bac0
commit
9e3793918e
@ -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;
|
||||
|
||||
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"
|
||||
imports = [
|
||||
./languages
|
||||
./tools
|
||||
];
|
||||
};
|
||||
|
||||
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
|
||||
|
6
home/languages/bqn/default.nix
Normal file
6
home/languages/bqn/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
cbqn
|
||||
];
|
||||
}
|
6
home/languages/c/default.nix
Normal file
6
home/languages/c/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
gcc
|
||||
];
|
||||
}
|
10
home/languages/clojure/default.nix
Normal file
10
home/languages/clojure/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
babashka
|
||||
clj-kondo
|
||||
clojure
|
||||
leiningen
|
||||
neil
|
||||
];
|
||||
}
|
@ -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
|
||||
];
|
||||
}
|
||||
|
7
home/languages/go/default.nix
Normal file
7
home/languages/go/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
go
|
||||
gopls
|
||||
];
|
||||
}
|
12
home/languages/haskell/default.nix
Normal file
12
home/languages/haskell/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(haskell.packages.ghc96.ghcWithPackages (
|
||||
ps: with ps; [
|
||||
QuickCheck
|
||||
]
|
||||
))
|
||||
cabal-install
|
||||
stack
|
||||
];
|
||||
}
|
10
home/languages/java/default.nix
Normal file
10
home/languages/java/default.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
# Sets JAVA_HOME environment variable
|
||||
programs.java.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
jdk
|
||||
jdt-language-server
|
||||
];
|
||||
}
|
6
home/languages/maude/default.nix
Normal file
6
home/languages/maude/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
maude
|
||||
];
|
||||
}
|
6
home/languages/minizinc/default.nix
Normal file
6
home/languages/minizinc/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
minizinc
|
||||
];
|
||||
}
|
7
home/languages/nix/default.nix
Normal file
7
home/languages/nix/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
nil
|
||||
nixfmt-rfc-style
|
||||
];
|
||||
}
|
23
home/languages/python/default.nix
Normal file
23
home/languages/python/default.nix
Normal file
@ -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
|
||||
]
|
||||
))
|
||||
];
|
||||
}
|
9
home/languages/rust/default.nix
Normal file
9
home/languages/rust/default.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
cargo
|
||||
rustc
|
||||
rustfmt
|
||||
rust-analyzer
|
||||
];
|
||||
}
|
6
home/languages/scheme/default.nix
Normal file
6
home/languages/scheme/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
gambit
|
||||
];
|
||||
}
|
6
home/languages/tex/default.nix
Normal file
6
home/languages/tex/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
texliveFull
|
||||
];
|
||||
}
|
7
home/languages/zig/default.nix
Normal file
7
home/languages/zig/default.nix
Normal file
@ -0,0 +1,7 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
zig
|
||||
zls
|
||||
];
|
||||
}
|
6
home/tools/academic/default.nix
Normal file
6
home/tools/academic/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
zotero
|
||||
];
|
||||
}
|
@ -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
|
||||
];
|
||||
}
|
||||
|
6
home/tools/editor/default.nix
Normal file
6
home/tools/editor/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, emacs-larstvei, ... }:
|
||||
{
|
||||
home.packages = [
|
||||
emacs-larstvei.defaultPackage.${pkgs.system}
|
||||
];
|
||||
}
|
12
home/tools/git/default.nix
Normal file
12
home/tools/git/default.nix
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = "larstvei";
|
||||
userEmail = "larstvei@ifi.uio.no";
|
||||
ignores = [
|
||||
".envrc"
|
||||
".DS_Store"
|
||||
".direnv"
|
||||
];
|
||||
};
|
||||
}
|
6
home/tools/learning/default.nix
Normal file
6
home/tools/learning/default.nix
Normal file
@ -0,0 +1,6 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
exercism
|
||||
];
|
||||
}
|
24
home/tools/multimedia/default.nix
Normal file
24
home/tools/multimedia/default.nix
Normal file
@ -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
|
||||
];
|
||||
}
|
48
home/tools/shell/default.nix
Normal file
48
home/tools/shell/default.nix
Normal file
@ -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)";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
10
home/tools/spelling/default.nix
Normal file
10
home/tools/spelling/default.nix
Normal file
@ -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/";
|
||||
}
|
15
home/tools/utils/default.nix
Normal file
15
home/tools/utils/default.nix
Normal file
@ -0,0 +1,15 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
bat
|
||||
fd
|
||||
gnumake
|
||||
jet
|
||||
jq
|
||||
pandoc
|
||||
parallel
|
||||
ripgrep
|
||||
tokei
|
||||
wget
|
||||
];
|
||||
}
|
Loading…
Reference in New Issue
Block a user