mirror of
https://github.com/Horhik/dotfiles.git
synced 2024-11-24 00:51:39 +00:00
update home-manager config
This commit is contained in:
parent
4b2bbccaf8
commit
07a78788f6
91
home/home-manager/.config/home-manager/emacs.nix
Normal file
91
home/home-manager/.config/home-manager/emacs.nix
Normal file
|
@ -0,0 +1,91 @@
|
|||
# Based on the NixOS manual, section
|
||||
# 21.1.2. Adding Packages to Emacs
|
||||
# https://nixos.org/nixos/manual/index.html#module-services-emacs-adding-packages
|
||||
|
||||
# PITFALL: If any of these stop working, moving them from the
|
||||
# epkgs.melpaPackages to the epkgs.melpaStablePackages sections might help
|
||||
# (that is, of course, if they're available in Melpa Stable).
|
||||
|
||||
{ pkgs ? import <nixpkgs> {} }:
|
||||
|
||||
let
|
||||
myEmacs = pkgs.emacs;
|
||||
# TODO: This is UNTESTED in any branch except
|
||||
# system-hp17-unstable-post-21.11
|
||||
emacsWithPackages = (pkgs.emacsPackagesFor myEmacs).emacsWithPackages;
|
||||
|
||||
in
|
||||
emacsWithPackages (epkgs: (
|
||||
with epkgs.melpaStablePackages; [
|
||||
# erlang # Won't't build; doesn't find Perl 5.
|
||||
# I even put a symlink called perl5 in ~/bin/,
|
||||
# which is part of my PATH.
|
||||
# For now it's installed the normal Emacs way,
|
||||
# via `M-x pack-list-pack`
|
||||
# visual-fill-column # line wrap at word boundaries
|
||||
json-mode
|
||||
use-package
|
||||
perspective
|
||||
|
||||
]) ++ (with epkgs.melpaPackages; [
|
||||
nix-mode
|
||||
native-complete # Tab-completion in *shell* buffers.
|
||||
|
||||
neotree # wonderful visually branching file navigator
|
||||
elpy
|
||||
hide-lines
|
||||
markdown-mode
|
||||
# python-mode # Broke in nixpkgs, so I replaced it with `elpy`.
|
||||
# I also asked about that here:
|
||||
# https://discourse.nixos.org/t/emacs-python-mode-marked-as-broken-cant-rebuild-nixos-config/12674/2
|
||||
haskell-mode
|
||||
scala-mode
|
||||
psc-ide # PureScript
|
||||
psci # PureScript repl
|
||||
purescript-mode # PureScript
|
||||
|
||||
# New (2021-03-23), and (to me) experimental.
|
||||
mwim
|
||||
block-nav
|
||||
linum-relative
|
||||
free-keys
|
||||
iflipb
|
||||
rainbow-delimiters
|
||||
goto-last-change
|
||||
ctrlf
|
||||
ace-window
|
||||
beacon
|
||||
volatile-highlights
|
||||
smart-hungry-delete
|
||||
restart-emacs
|
||||
multiple-cursors
|
||||
|
||||
dante # for haskell
|
||||
#
|
||||
# As of 2021-02-15 `intero` doesn't show up.
|
||||
# Searching https://search.nixos.org/packages for intero,
|
||||
# I find emacs26Packages.intero, which has the name `emacs-intero`.
|
||||
# But that doesn't show up either. Nor does emacs26Packages.intero.
|
||||
|
||||
company
|
||||
|
||||
org-roam
|
||||
emacsql-sqlite
|
||||
ac-helm # autocomplete with Helm
|
||||
helm
|
||||
helm-company
|
||||
consult # for consult-ripgrep. (Requires ripgrep.)
|
||||
deadgrep
|
||||
|
||||
telega
|
||||
# company-org-roam
|
||||
|
||||
]) ++ (with epkgs.elpaPackages; [
|
||||
csv-mode
|
||||
undo-tree
|
||||
xclip # for copy-paste from `emacs -nw` (within Bash) to other apps
|
||||
|
||||
]) ++ [
|
||||
pkgs.notmuch # email, scriptable
|
||||
]
|
||||
)
|
366
home/home-manager/.config/home-manager/home.nix
Normal file
366
home/home-manager/.config/home-manager/home.nix
Normal file
|
@ -0,0 +1,366 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
|
||||
|
||||
|
||||
let
|
||||
unstable = import <unstable> {};
|
||||
jackWrap = drv: pkgs.symlinkJoin {
|
||||
name = "${drv.name}-jackwrapped";
|
||||
paths = [ drv ];
|
||||
buildInputs = [ pkgs.makeWrapper ];
|
||||
postBuild = ''
|
||||
ls "$out/bin"
|
||||
for b in "$out/bin/"*; do
|
||||
wrapProgram "$b" \
|
||||
--prefix LD_LIBRARY_PATH : "${pkgs.pipewire.jack}/lib"
|
||||
done
|
||||
'';
|
||||
};
|
||||
in{
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
#services.emacs.package = pkgs.emacs-unstable;
|
||||
services.lorri.enable = true;
|
||||
services.mako.enable = true; # Notification daemon
|
||||
|
||||
# nixpkgs.overlays = [
|
||||
# (import (builtins.fetchTarball {
|
||||
# url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz;
|
||||
# }))
|
||||
# ];
|
||||
home.username = "horhik";
|
||||
home.homeDirectory = "/home/horhik";
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
# introduces backwards incompatible changes.
|
||||
#
|
||||
# You should not change this value, even if you update Home Manager. If you do
|
||||
# want to update the value, then make sure to first check the Home Manager
|
||||
# release notes.
|
||||
home.stateVersion = "23.11"; # Please read the comment before changing.
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||
# # "Hello, world!" when run.
|
||||
appimage-run
|
||||
dwarf-fortress-packages.dwarf-fortress-full
|
||||
dwarf-fortress-packages.themes.meph
|
||||
sxiv
|
||||
i3blocks
|
||||
zplug
|
||||
jq
|
||||
mononoki
|
||||
thefuck
|
||||
keepassxc
|
||||
gnome.gnome-calendar
|
||||
gnome-online-accounts
|
||||
libsForQt5.kontact
|
||||
xdg-desktop-portal-gnome
|
||||
xournal
|
||||
electrum-ltc
|
||||
# Images/Video
|
||||
ffmpeg-full
|
||||
vlc
|
||||
gimp
|
||||
darktable
|
||||
obs-studio
|
||||
# Intenet
|
||||
librewolf
|
||||
thunderbird
|
||||
nmap
|
||||
|
||||
# Analyzing
|
||||
qdirstat
|
||||
|
||||
# Notes
|
||||
logseq
|
||||
#pkgs.emacsPackages.emacsql-sqlite
|
||||
|
||||
# Wayland
|
||||
wl-clipboard
|
||||
wtype
|
||||
|
||||
# System
|
||||
|
||||
zip unzip
|
||||
rsync wget curl
|
||||
lsd mpv
|
||||
kitty tmux
|
||||
htop
|
||||
usbutils
|
||||
unixtools.fdisk
|
||||
shadowsocks-libev
|
||||
|
||||
|
||||
# Messaging
|
||||
|
||||
telegram-desktop discord
|
||||
# Music
|
||||
puredata carla zrythm supercollider
|
||||
dragonfly-reverb
|
||||
cardinal
|
||||
vcv-rack
|
||||
bespokesynth-with-vst2
|
||||
|
||||
|
||||
# books
|
||||
zathura sioyek
|
||||
calibre
|
||||
|
||||
# Audio
|
||||
pulsemixer
|
||||
strawberry
|
||||
snd
|
||||
nicotine-plus
|
||||
(jackWrap qpwgraph)
|
||||
wireplumber
|
||||
|
||||
# languages
|
||||
anki
|
||||
|
||||
# Phone
|
||||
android-tools
|
||||
|
||||
|
||||
# Screenshots
|
||||
grim slurp
|
||||
|
||||
# Documents
|
||||
libreoffice
|
||||
|
||||
# Notifications
|
||||
notify
|
||||
|
||||
# Downloads
|
||||
transmission
|
||||
|
||||
# Development
|
||||
pkg-config
|
||||
python3 stow gcc julia SDL2 cmake clang-tools
|
||||
python311Packages.python-lsp-server
|
||||
gnumake
|
||||
direnv
|
||||
|
||||
# Latex
|
||||
pandoc texliveFull
|
||||
|
||||
xdg-utils
|
||||
wlr-randr
|
||||
(import ./emacs.nix { inherit pkgs; })
|
||||
|
||||
#texlive.combined.scheme-medium
|
||||
#texliveTeTeX
|
||||
|
||||
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||
# # overrides. You can do that directly here, just don't forget the
|
||||
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||
# # fonts?
|
||||
(pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" "Mononoki" "JetBrainsMono"]; })
|
||||
|
||||
# # You can also create simple shell scripts directly inside your
|
||||
# # configuration. For example, this adds a command 'my-hello' to your
|
||||
# # environment:
|
||||
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||
# echo "Hello, ${config.home.username}!"
|
||||
# '')
|
||||
|
||||
(writeShellScriptBin "nix-jack" ''
|
||||
exec /usr/bin/env \
|
||||
LD_LIBRARY_PATH=${pipewire.jack}/lib''${LD_LIBRARY_PATH:+:''${LD_LIBRARY_PATH}} \
|
||||
"''$@"
|
||||
'')
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
# plain files is through 'home.file'.
|
||||
home.file = {
|
||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||
# # symlink to the Nix store copy.
|
||||
|
||||
#"./Notes".source="/space/Notes";
|
||||
#"./Music".source="/space/Music";
|
||||
|
||||
# # You can also set the file content immediately.
|
||||
# ".gradle/gradle.properties".text = ''
|
||||
# org.gradle.console=verbose
|
||||
# org.gradle.daemon.idletimeout=3600000
|
||||
# '';
|
||||
};
|
||||
|
||||
# You can also manage environment variables but you will have to manually
|
||||
# source
|
||||
#
|
||||
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# or
|
||||
#
|
||||
# /etc/profiles/per-user/horhik/etc/profile.d/hm-session-vars.sh
|
||||
#
|
||||
# if you don't want to manage your shell through Home Manager.
|
||||
home.sessionVariables = {
|
||||
EDITOR = "emacs";
|
||||
};
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
programs.waybar.enable = true;
|
||||
# programs.emacs = { #
|
||||
# enable = true;
|
||||
# extraPackages = epkgs: [
|
||||
# epkgs.nix-mode
|
||||
# epkgs.magit
|
||||
# epkgs.org-roam
|
||||
# epkgs.org-roam-ui
|
||||
# epkgs.org-roam-timestamps
|
||||
# epkgs.org-roam-bibtex
|
||||
# epkgs.pdf-tools
|
||||
# epkgs.sqlite
|
||||
# epkgs.emacsql-sqlite
|
||||
# epkgs.emacsql
|
||||
# ];
|
||||
|
||||
# };
|
||||
|
||||
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
autocd = true;
|
||||
dotDir = ".config/zsh";
|
||||
enableAutosuggestions = true;
|
||||
enableCompletion = true;
|
||||
shellAliases = {
|
||||
vim = "emacsclient";
|
||||
sl = "lsd";
|
||||
ls = "lsd";
|
||||
l = "lsd -l";
|
||||
la = "lsd -la";
|
||||
ip = "ip --color=auto";
|
||||
hmgr = "emacsclient -n ~/.config/home-manager/home.nix";
|
||||
edit = "emacsclient -n ";
|
||||
sicp = "zathura /space/Nextcloud/Books/Calibre/Harold\ Abelson\,\ Gerald\ Jay\ Sussman\,\ Julie\ Sussman/Structure\ and\ Interpretation\ of\ Computer\ P\ -\ Harold\ Abelson\,\ Gerald\ Jay\ Sussman\,\ Julie\ .pdf";
|
||||
dimedovich = "zathura /space/Nextcloud/Books/Calibre/Unknown/Diemidovich\ sbornik\ \(32\)/Diemidovich\ sbornik\ -\ Unknown.pdf";
|
||||
zorich1 = "zathura /space/Nextcloud/Books/Calibre/Unknown/Matiematichieskii\ analiz\ chast\'\ I\ \[2012\]\ Zorich\ \(187\)/Matiematichieskii\ analiz\ chast\'\ I\ \[2012\]\ Z\ -\ Unknown.pdf";
|
||||
zorich2 = "zathura /space/Nextcloud/Books/Calibre/Unknown/Matiematichieskii\ analiz\ chast\'\ II\ \[2012\]\ Zorich\ \(188\)/Matiematichieskii\ analiz\ chast\'\ II\ \[2012\]\ -\ Unknown.pdf";
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
initExtra = ''
|
||||
bindkey '^ ' autosuggest-accept
|
||||
AGKOZAK_CMD_EXEC_TIME=5
|
||||
AGKOZAK_COLORS_CMD_EXEC_TIME='yellow'
|
||||
AGKOZAK_COLORS_PROMPT_CHAR='magenta'
|
||||
AGKOZAK_CUSTOM_SYMBOLS=( '⇣⇡' '⇣' '⇡' '+' 'x' '!' '>' '?' )
|
||||
AGKOZAK_MULTILINE=0
|
||||
AGKOZAK_PROMPT_CHAR=( ❯ ❯ ❮ )
|
||||
eval $(thefuck --alias)
|
||||
autopair-init
|
||||
eval "$(direnv hook zsh)"
|
||||
|
||||
bindkey "^[[1;5C" forward-word
|
||||
bindkey "^[[1;5D" backward-word
|
||||
|
||||
'';
|
||||
|
||||
plugins = with pkgs; [
|
||||
{
|
||||
name = "agkozak-zsh-prompt";
|
||||
src = fetchFromGitHub {
|
||||
owner = "agkozak";
|
||||
repo = "agkozak-zsh-prompt";
|
||||
rev = "v3.7.0";
|
||||
sha256 = "1iz4l8777i52gfynzpf6yybrmics8g4i3f1xs3rqsr40bb89igrs";
|
||||
};
|
||||
file = "agkozak-zsh-prompt.plugin.zsh";
|
||||
}
|
||||
{
|
||||
name = "formarks";
|
||||
src = fetchFromGitHub {
|
||||
owner = "wfxr";
|
||||
repo = "formarks";
|
||||
rev = "8abce138218a8e6acd3c8ad2dd52550198625944";
|
||||
sha256 = "1wr4ypv2b6a2w9qsia29mb36xf98zjzhp3bq4ix6r3cmra3xij90";
|
||||
};
|
||||
file = "formarks.plugin.zsh";
|
||||
}
|
||||
{
|
||||
name = "zsh-syntax-highlighting";
|
||||
src = fetchFromGitHub {
|
||||
owner = "zsh-users";
|
||||
repo = "zsh-syntax-highlighting";
|
||||
rev = "0.6.0";
|
||||
sha256 = "0zmq66dzasmr5pwribyh4kbkk23jxbpdw4rjxx0i7dx8jjp2lzl4";
|
||||
};
|
||||
file = "zsh-syntax-highlighting.zsh";
|
||||
}
|
||||
{
|
||||
name = "zsh-abbrev-alias";
|
||||
src = fetchFromGitHub {
|
||||
owner = "momo-lab";
|
||||
repo = "zsh-abbrev-alias";
|
||||
rev = "637f0b2dda6d392bf710190ee472a48a20766c07";
|
||||
sha256 = "16saanmwpp634yc8jfdxig0ivm1gvcgpif937gbdxf0csc6vh47k";
|
||||
};
|
||||
file = "abbrev-alias.plugin.zsh";
|
||||
}
|
||||
{
|
||||
name = "zsh-autopair";
|
||||
src = fetchFromGitHub {
|
||||
owner = "hlissner";
|
||||
repo = "zsh-autopair";
|
||||
rev = "34a8bca0c18fcf3ab1561caef9790abffc1d3d49";
|
||||
sha256 = "1h0vm2dgrmb8i2pvsgis3lshc5b0ad846836m62y8h3rdb3zmpy1";
|
||||
};
|
||||
file = "autopair.zsh";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
services.mpd = {
|
||||
enable = true;
|
||||
musicDirectory = "~/Music";
|
||||
network.listenAddress = "any"; # if you want to allow non-localhost connections
|
||||
extraConfig = ''
|
||||
audio_output {
|
||||
type "pipewire"
|
||||
name "MPD output"
|
||||
}
|
||||
'';
|
||||
};
|
||||
services.gammastep = {
|
||||
enable = true;
|
||||
provider = "manual";
|
||||
latitude = 49.0;
|
||||
longitude = 8.4;
|
||||
};
|
||||
|
||||
|
||||
xdg.mimeApps = {
|
||||
enable = true;
|
||||
associations.added = {
|
||||
"application/pdf" = ["sioyek.desktop" "${pkgs.sioyek}/bin/sioyek" "org.sioyek.desktop"];
|
||||
};
|
||||
defaultApplications = {
|
||||
"application/pdf" = ["sioyek.desktop" "${pkgs.sioyek}/bin/sioyek" "org.sioyek.desktop"];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
||||
# services.shadowsocks = {
|
||||
# enable = true;
|
||||
# };
|
||||
|
||||
}
|
Loading…
Reference in a new issue