388 lines
7.8 KiB
Nix
388 lines
7.8 KiB
Nix
{
|
|
pkgs,
|
|
pkgs-unstable,
|
|
nixvim,
|
|
river-shifttags,
|
|
other-transcode,
|
|
kitty-unstable,
|
|
nix-doom-emacs-unstraightened,
|
|
cassowary,
|
|
...
|
|
}: let
|
|
username = "khais";
|
|
in {
|
|
imports = [
|
|
./stylix.nix
|
|
./wm
|
|
./direnv.nix
|
|
nix-doom-emacs-unstraightened
|
|
];
|
|
home = {
|
|
packages = with pkgs; [
|
|
# system tools & bragging
|
|
htop
|
|
fastfetch
|
|
ripgrep
|
|
usbutils
|
|
wget
|
|
curl
|
|
ncdu
|
|
trashy
|
|
unzip
|
|
parallel
|
|
tcpdump
|
|
libqalculate
|
|
ouch
|
|
inetutils
|
|
fd
|
|
bat
|
|
# remote working
|
|
remmina
|
|
# communication
|
|
discord
|
|
# passwords
|
|
bitwarden-desktop
|
|
bitwarden-cli
|
|
# editors
|
|
nixvim
|
|
# make clipboard yanking work in neovim
|
|
# https://superuser.com/a/1803183
|
|
wl-clipboard
|
|
# wm river utils
|
|
playerctl
|
|
brightnessctl
|
|
river-shifttags
|
|
wlr-randr
|
|
mako
|
|
libnotify
|
|
# dev tools
|
|
gitu
|
|
lnav
|
|
# music
|
|
cmus
|
|
# music collection tools
|
|
picard
|
|
kid3
|
|
# audio
|
|
audacity
|
|
pavucontrol
|
|
# video
|
|
mpv
|
|
other-transcode
|
|
ani-cli
|
|
# file sending
|
|
magic-wormhole
|
|
# drawing apps
|
|
krita
|
|
inkscape
|
|
# office apps
|
|
libreoffice-fresh
|
|
hunspellDicts.fr-moderne
|
|
hunspellDicts.de-de
|
|
hunspellDicts.en-us
|
|
# spell check
|
|
ispell
|
|
hunspell
|
|
aspell
|
|
# nixos tools
|
|
nh
|
|
nix-output-monitor
|
|
alejandra
|
|
# archiving
|
|
archivebox
|
|
# games
|
|
lutris
|
|
wine
|
|
prismlauncher
|
|
# ai
|
|
ollama
|
|
# windows
|
|
cassowary
|
|
# xmonad
|
|
# apparently this is needed for the haskell lsp
|
|
ghc
|
|
i3lock
|
|
xmobar
|
|
# show volume in xmobar
|
|
alsa-utils
|
|
# remote
|
|
rustdesk
|
|
];
|
|
|
|
file = {
|
|
# konsole configuration
|
|
".local/share/konsole/Nixos.profile".source = ./konsole/Nixos.profile;
|
|
".config/nixpkgs/config.nix".text = ''
|
|
{ allowUnfree = true; }
|
|
'';
|
|
};
|
|
|
|
sessionVariables = {
|
|
EDITOR = "nvim";
|
|
};
|
|
|
|
inherit username;
|
|
homeDirectory = "/home/${username}";
|
|
|
|
stateVersion = "23.11";
|
|
};
|
|
|
|
nixpkgs.config.allowUnfree = true;
|
|
|
|
programs.git = {
|
|
enable = true;
|
|
userEmail = "khais.colin@gmail.com";
|
|
userName = "Khaïs COLIN";
|
|
# better diffs
|
|
diff-so-fancy.enable = true;
|
|
# set editor
|
|
extraConfig.core.editor = "nvim";
|
|
# always show diff in commits
|
|
extraConfig.commit.verbose = true;
|
|
};
|
|
|
|
programs.jujutsu = {
|
|
package = pkgs-unstable.jujutsu;
|
|
enable = true;
|
|
ediff = true;
|
|
settings = {
|
|
user = {
|
|
email = "khais.colin@gmail.com";
|
|
name = "Khaïs COLIN";
|
|
};
|
|
signing = {
|
|
behaviour = "own";
|
|
backend = "ssh";
|
|
key = "/home/khais/.ssh/id_ed25519.pub";
|
|
};
|
|
ui = {
|
|
editor = "emacsclient -a ''";
|
|
default-command = "log";
|
|
movement.edit = true;
|
|
# do not page if output fits on one screen
|
|
pager = "less -FRX";
|
|
};
|
|
fix.tools = {
|
|
clang-format = {
|
|
command = ["${pkgs.clang-tools}/bin/clang-format" "--assume-filename=$path"];
|
|
patterns = ["glob:'**/*.cpp'" "glob:'**/*.hpp'"];
|
|
};
|
|
whitespace = {
|
|
command = ["${pkgs.perl}/bin/perl" "-p" "-e" "s/ +$//" "$path"];
|
|
patterns = ["glob:'**/*'"];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
programs.zsh = {
|
|
enable = true;
|
|
enableVteIntegration = true;
|
|
prezto = {
|
|
enable = true;
|
|
};
|
|
shellAliases = {
|
|
gc = "git commit -v";
|
|
ga = "git add";
|
|
gst = "git status";
|
|
gp = "git push";
|
|
gd = "git diff";
|
|
gds = "git diff --staged";
|
|
|
|
vim = "nvim";
|
|
vi = "nvim";
|
|
|
|
# progress cp
|
|
# https://serverfault.com/questions/43014/copying-a-large-directory-tree-locally-cp-or-rsync
|
|
pcp = "rsync --info=progress2 --archive --hard-links --acls --xattrs --human-readable --sparse --stats";
|
|
};
|
|
initExtra = ''
|
|
# enable jj completion
|
|
source <(jj util completion zsh)
|
|
|
|
# bind ctrl-backspace to delete word
|
|
bindkey '^H' backward-kill-word
|
|
'';
|
|
};
|
|
|
|
programs.fish = {
|
|
enable = true;
|
|
shellAliases = {
|
|
vim = "nvim";
|
|
vi = "nvim";
|
|
|
|
# progress cp
|
|
# https://serverfault.com/questions/43014/copying-a-large-directory-tree-locally-cp-or-rsync
|
|
pcp = "rsync --info=progress2 --archive --hard-links --acls --xattrs --human-readable --sparse --stats";
|
|
};
|
|
};
|
|
|
|
programs.kitty = {
|
|
package = kitty-unstable;
|
|
enable = true;
|
|
keybindings = {
|
|
"super+shift+enter" = "new_os_window_with_cwd";
|
|
};
|
|
settings = {
|
|
text_fg_override_threshold = 10;
|
|
};
|
|
};
|
|
programs.fuzzel.enable = true;
|
|
|
|
programs.zellij.enable = true;
|
|
|
|
programs.ssh = {
|
|
enable = true;
|
|
matchBlocks = {
|
|
"quasar" = {
|
|
hostname = "109.199.126.230";
|
|
user = "root";
|
|
};
|
|
"*.005540.xyz" = {
|
|
port = 2201;
|
|
};
|
|
"005540.xyz" = {
|
|
port = 2201;
|
|
};
|
|
"void" = {
|
|
port = 2201;
|
|
};
|
|
"void.hummingbird-stork.ts.net" = {
|
|
port = 2201;
|
|
};
|
|
};
|
|
};
|
|
|
|
# default connection to qemu for virt-manager
|
|
dconf.settings = {
|
|
"org/virt-manager/virt-manager/connections" = {
|
|
autoconnect = ["qemu:///system"];
|
|
uris = ["qemu:///system"];
|
|
};
|
|
};
|
|
|
|
programs.beets = {
|
|
enable = true;
|
|
settings = {
|
|
directory = "/pile/Music";
|
|
library = "/pile/beets.db";
|
|
import = {
|
|
move = false;
|
|
copy = true;
|
|
incremental = false;
|
|
write = true;
|
|
};
|
|
plugins = ["lyrics" "web" "info" "edit"];
|
|
};
|
|
};
|
|
|
|
programs.yt-dlp = {
|
|
enable = true;
|
|
settings = {
|
|
embed-thumbnail = true;
|
|
embed-subs = true;
|
|
sub-langs = "all";
|
|
};
|
|
};
|
|
|
|
programs.doom-emacs = {
|
|
enable = true;
|
|
doomDir = ./doom.d;
|
|
extraBinPackages = with pkgs; [clang-tools nil nixd haskell-language-server ghc];
|
|
};
|
|
|
|
programs.yazi = {
|
|
enable = true;
|
|
};
|
|
|
|
xsession.windowManager.xmonad = {
|
|
enable = true;
|
|
config = ./xmonad.hs;
|
|
enableContribAndExtras = true;
|
|
};
|
|
|
|
programs.xmobar = {
|
|
enable = true;
|
|
extraConfig = builtins.readFile ./xmobarrc;
|
|
};
|
|
|
|
programs.rofi.enable = true;
|
|
|
|
# email
|
|
programs.mbsync.enable = true;
|
|
programs.msmtp.enable = true;
|
|
programs.offlineimap.enable = true;
|
|
|
|
programs.lieer = {
|
|
enable = true;
|
|
};
|
|
|
|
accounts.email.accounts.gmail = {
|
|
address = "khais.colin@gmail.com";
|
|
lieer = {
|
|
enable = true;
|
|
settings.local_trash_tag = "killed";
|
|
sync.enable = true;
|
|
};
|
|
msmtp.enable = true;
|
|
notmuch.enable = true;
|
|
primary = true;
|
|
realName = "Khaïs COLIN";
|
|
signature = {
|
|
text = ''
|
|
Cordialement,
|
|
-- Khaïs COLIN
|
|
'';
|
|
showSignature = "append";
|
|
};
|
|
passwordCommand = "cat /home/khais/.home-manager-gmail-password";
|
|
userName = "khais.colin@gmail.com";
|
|
flavor = "gmail.com";
|
|
};
|
|
|
|
accounts.email.accounts.orange = {
|
|
address = "kh.col@orange.fr";
|
|
offlineimap = {
|
|
enable = true;
|
|
};
|
|
msmtp.enable = true;
|
|
notmuch.enable = true;
|
|
realName = "Khaïs COLIN";
|
|
signature = {
|
|
text = ''
|
|
Cordialement,
|
|
-- Khaïs COLIN
|
|
'';
|
|
showSignature = "append";
|
|
};
|
|
passwordCommand = "cat /home/khais/.home-manager-orange-password";
|
|
userName = "kh.col@orange.fr";
|
|
imap = {
|
|
host = "imap.orange.fr";
|
|
port = 993;
|
|
};
|
|
smtp = {
|
|
host = "smtp.orange.fr";
|
|
};
|
|
};
|
|
|
|
programs.notmuch = {
|
|
enable = true;
|
|
new = {
|
|
tags = ["new" "unread"];
|
|
};
|
|
hooks = {
|
|
preNew = "gmi sync --path ~/Maildir/gmail; offlineimap";
|
|
postNew = "afew --verbose --tag --new";
|
|
};
|
|
search.excludeTags = [
|
|
"killed"
|
|
"spam"
|
|
];
|
|
};
|
|
|
|
programs.afew = {
|
|
enable = true;
|
|
extraConfig = builtins.readFile ./afew.config;
|
|
};
|
|
}
|