First Commit
This commit is contained in:
commit
cae9d57360
22 changed files with 1957 additions and 0 deletions
481
home.nix
Normal file
481
home.nix
Normal file
|
|
@ -0,0 +1,481 @@
|
|||
let user = import ./name.nix; in
|
||||
{ config, pkgs, flakes-pkgs, ... }:
|
||||
{
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
home.username = user;
|
||||
home.homeDirectory = "/home/${user}";
|
||||
|
||||
# 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.05"; # Please read the comment before changing.
|
||||
|
||||
# The home.packages option allows you to install Nix packages into your
|
||||
# environment.
|
||||
home.packages = with pkgs; [
|
||||
betterbird
|
||||
python3
|
||||
dunst
|
||||
ncdu
|
||||
nsxiv
|
||||
wl-clipboard
|
||||
pamixer
|
||||
pulsemixer
|
||||
bluez
|
||||
bluetuith
|
||||
wtype
|
||||
dmenu
|
||||
keepmenu
|
||||
dtrx
|
||||
trash-cli
|
||||
rofimoji
|
||||
nnn
|
||||
go-mtpfs
|
||||
nix-output-monitor
|
||||
libnotify
|
||||
qbittorrent
|
||||
go
|
||||
unzip
|
||||
pandoc
|
||||
gnumake
|
||||
xdg-utils
|
||||
entr
|
||||
# xdg-desktop-portal-wlr
|
||||
# xdg-desktop-portal-hyprland
|
||||
(catppuccin-gtk.override {
|
||||
accents = [ "pink" ];
|
||||
size = "compact";
|
||||
tweaks = [ "black" ];
|
||||
variant = "mocha";
|
||||
})
|
||||
davfs2
|
||||
];
|
||||
|
||||
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||
# plain files is through 'home.file'.
|
||||
|
||||
|
||||
home.file = {
|
||||
# ".config/fontconfig/fonts.conf".source = dotfiles/fonts.conf;
|
||||
|
||||
".config/waybar/config.jsonc".source = dotfiles/waybar.jsonc;
|
||||
".config/waybar/style.css".source = dotfiles/waybar.css;
|
||||
|
||||
# ".config/kitty/kitty.conf".source = dotfiles/kitty/kitty.conf;
|
||||
".config/kitty/light.conf".source = dotfiles/kitty/light.conf;
|
||||
".config/kitty/dark.conf".source = dotfiles/kitty/dark.conf;
|
||||
|
||||
".config/rofi/colors-dark.rasi".source = dotfiles/rofi/colors-dark.rasi;
|
||||
".config/rofi/colors-light.rasi".source = dotfiles/rofi/colors-light.rasi;
|
||||
# ".config/rofi/config.rasi".source = dotfiles/rofi/config.rasi;
|
||||
".config/rofi/theme.rasi".source = dotfiles/rofi/theme.rasi;
|
||||
|
||||
# ".config/dunst/dunstrc".source = dotfiles/dunstrc;
|
||||
|
||||
".config/keepmenu/config.ini".source = dotfiles/keepmenu.ini;
|
||||
|
||||
".bin/runmenu".source = pkgs.writers.writeBash "runmenu" ''
|
||||
${config.programs.rofi.package}/bin/rofi -matching normal -sort -show run
|
||||
'';
|
||||
|
||||
# ".bin/wl".source = bin/wl;
|
||||
|
||||
".bin/window_dir".source = pkgs.writers.writeBash "window_dir" ''
|
||||
PID=$(${pkgs.hyprland}/bin/hyprctl activewindow | grep pid | cut -d' ' -f 2)
|
||||
PID=$(echo $(ps --ppid $PID -o pid | tail -n1))
|
||||
cwd=$(readlink /proc/"$PID"/cwd)
|
||||
echo "$cwd"
|
||||
'';
|
||||
|
||||
|
||||
".bin/screenshot".source = (import ./bin/screenshot.nix) pkgs;
|
||||
|
||||
".bin/ocrzone".source = pkgs.writers.writeBash "ocrzone" ''
|
||||
${pkgs.pkgs.sway-contrib.grimshot}/bin/grimshot save area - | \
|
||||
${pkgs.tesseract}/bin/tesseract -l fra - - | \
|
||||
${pkgs.wl-clipboard}/bin/wl-copy
|
||||
'';
|
||||
|
||||
".bin/wifi-toggle".source = pkgs.writers.writeBash "wifi-toggle" ''
|
||||
if [[ $(nmcli radio wifi) == "enabled" ]]; then
|
||||
nmcli radio wifi off
|
||||
else
|
||||
nmcli radio wifi on
|
||||
fi
|
||||
'';
|
||||
|
||||
".bin/rofi-udisk".source = pkgs.writers.writeBash "rofi-udisk" ''
|
||||
device=$(${pkgs.udiskie}/bin/udiskie-info -a -o "{ui_label} {in_use}" -f is_filesystem | \
|
||||
${pkgs.gnused}/bin/sed 's/True$/[Mounted]/' | \
|
||||
${pkgs.gnused}/bin/sed 's/False$//' | \
|
||||
${config.programs.rofi.package}/bin/rofi -dmenu | \
|
||||
${pkgs.coreutils}/bin/cut -d':' -f1)
|
||||
|
||||
if [ -n "$device" ] ; then
|
||||
if ${pkgs.mount}/bin/mount | ${pkgs.gnugrep}/bin/grep "$device" ; then
|
||||
echo "mounted"
|
||||
${pkgs.udisks}/bin/udisksctl unmount -b $device
|
||||
else
|
||||
echo "not mounted"
|
||||
${pkgs.udisks}/bin/udisksctl mount -b $device
|
||||
fi
|
||||
fi
|
||||
'';
|
||||
|
||||
".bin/mount-android".source = pkgs.writers.writeBash "mount-android" ''
|
||||
if ${pkgs.mount}/bin/mount | ${pkgs.gnugrep}/bin/grep $(realpath ~/android); then
|
||||
umount $(realpath ~/android)
|
||||
${pkgs.libnotify}/bin/notify-send "Android unmounted"
|
||||
elif ${pkgs.simple-mtpfs}/bin/simple-mtpfs $(realpath ~/android); then
|
||||
${pkgs.libnotify}/bin/notify-send "Android mounted in ~/android"
|
||||
else
|
||||
${pkgs.libnotify}/bin/notify-send "Can't find Android device"
|
||||
fi
|
||||
'';
|
||||
|
||||
".bin/dark".source = (import ./bin/dark.nix) pkgs;
|
||||
};
|
||||
|
||||
|
||||
home.sessionPath = [
|
||||
"$HOME/.local/bin"
|
||||
"$HOME/.bin"
|
||||
];
|
||||
|
||||
home.sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
EDITOR = "nvim";
|
||||
TERMINAL = "kitty";
|
||||
TERM = "kitty";
|
||||
NNN_TRASH = 1;
|
||||
GOPATH = "${config.home.homeDirectory}/.local/share/go";
|
||||
GOMODCACHE = "${config.home.homeDirectory}/.cache/go/pkg/mod";
|
||||
};
|
||||
|
||||
home.keyboard.options = [
|
||||
"caps:escape"
|
||||
];
|
||||
|
||||
# xsession.enable = true;
|
||||
# xsession.windowManager.command = "${pkgs.fish}/bin/fish --login";
|
||||
|
||||
|
||||
|
||||
|
||||
wayland.windowManager.hyprland = (import ./hyprland.nix) { pkgs = pkgs; flakes-pkgs = flakes-pkgs; };
|
||||
|
||||
xdg = {
|
||||
enable = true;
|
||||
systemDirs.data = [ "${config.home.homeDirectory}/.local/share" ];
|
||||
userDirs = {
|
||||
enable = true;
|
||||
createDirectories = false;
|
||||
download = "${config.home.homeDirectory}/downloads";
|
||||
templates = "${config.home.homeDirectory}/templates";
|
||||
videos = "${config.home.homeDirectory}/videos";
|
||||
desktop = "${config.home.homeDirectory}";
|
||||
};
|
||||
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"text/plain" = "nvim.desktop";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.syncthing.enable = true;
|
||||
|
||||
systemd.user.services = {
|
||||
battery-notify = {
|
||||
Unit = {
|
||||
Description = "Send notification when battery is low";
|
||||
Wants = "battery-timer.timer";
|
||||
};
|
||||
Service = {
|
||||
Type = "oneshot";
|
||||
ExecStart = "${pkgs.writers.writeBash "battery-notify" ''
|
||||
# ${pkgs.libnotify}/bin/notify-send $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity)
|
||||
if [[ $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity) -lt 10 ]]; then
|
||||
${pkgs.libnotify}/bin/notify-send -u critical "Battery is low"
|
||||
fi
|
||||
'' }";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
systemd.user.timers = {
|
||||
battery-timer = {
|
||||
Unit = {
|
||||
Description = "Execute battery-notify every minute";
|
||||
};
|
||||
Install = {
|
||||
# enable the service
|
||||
WantedBy = [ "default.target" ];
|
||||
};
|
||||
Timer = {
|
||||
Unit = "battery-notify.service";
|
||||
OnCalendar = "*-*-* *:*:00";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# services.darkman = {
|
||||
# enable = true;
|
||||
#
|
||||
# lightModeScripts = {
|
||||
# gtk-theme = ''
|
||||
# ${pkgs.dconf}/bin/dconf write \
|
||||
# /org/gnome/desktop/interface/color-scheme "'prefer-light'"
|
||||
# '';
|
||||
# # my-python-script = pkgs.writers.writePython3 "my-python-script" { } ''
|
||||
# # print('Do something!')
|
||||
# # '';
|
||||
# };
|
||||
#
|
||||
# darkModeScripts = {
|
||||
# gtk-theme = ''
|
||||
# ${pkgs.dconf}/bin/dconf write \
|
||||
# /org/gnome/desktop/interface/color-scheme "'prefer-dark'"
|
||||
# '';
|
||||
# # my-python-script = pkgs.writers.writePython3 "my-python-script" { } ''
|
||||
# # print('Do something!')
|
||||
# # '';
|
||||
# };
|
||||
#
|
||||
# settings = {
|
||||
# lat = 52.3;
|
||||
# lng = 4.8;
|
||||
# usegeoclue = true;
|
||||
# };
|
||||
# };
|
||||
|
||||
fonts.fontconfig.enable = true;
|
||||
gtk = {
|
||||
enable = true;
|
||||
font = {
|
||||
package = pkgs.inter;
|
||||
name = "Inter";
|
||||
};
|
||||
theme = {
|
||||
name = "Catppuccin-Latte-Compact-Pink-Light";
|
||||
# name = "Catppuccin-Mocha-Compact-Pink-Dark";
|
||||
package = pkgs.catppuccin-gtk.override {
|
||||
accents = [ "pink" ];
|
||||
size = "compact";
|
||||
tweaks = [ ];
|
||||
variant = "latte";
|
||||
};
|
||||
};
|
||||
iconTheme = {
|
||||
name = "Adwaita";
|
||||
package = pkgs.gnome.adwaita-icon-theme;
|
||||
};
|
||||
cursorTheme = {
|
||||
name = "Hackneyed";
|
||||
package = pkgs.hackneyed;
|
||||
};
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gtk";
|
||||
};
|
||||
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
nix-direnv.enable = true;
|
||||
};
|
||||
|
||||
programs.rofi = {
|
||||
enable = true;
|
||||
package = pkgs.rofi-wayland;
|
||||
plugins = [ pkgs.rofi-calc pkgs.rofi-emoji ];
|
||||
# extraConfig = {
|
||||
# "@theme" = "\"theme.rasi\"";
|
||||
# };
|
||||
theme = "theme.rasi";
|
||||
};
|
||||
|
||||
programs.pistol.enable = true;
|
||||
programs.lf =
|
||||
(import ./lf.nix) { config = config; pkgs = pkgs; };
|
||||
programs.fish = (import ./fish.nix) pkgs;
|
||||
|
||||
services.dunst.enable = true;
|
||||
services.dunst.settings = import ./dunstconfig.nix;
|
||||
services.kdeconnect.enable = true;
|
||||
|
||||
# programs.chromium = {
|
||||
# enable = true;
|
||||
# package = pkgs.ungoogled-chromium;
|
||||
# dictioaries = [
|
||||
# pkgs.hunspellDictsChromium.en_US
|
||||
# pkgs.hunspellDictsChromium.fr_FR
|
||||
# ];
|
||||
# extensions = [
|
||||
# { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
|
||||
# { id = "hfjbmagddngcpeloejdejnfgbamkjaeg"; } # vimium C
|
||||
# ];
|
||||
# };
|
||||
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
# --screenshots \
|
||||
# --clock \
|
||||
# --indicator \
|
||||
# --indicator-radius 100 \
|
||||
# --indicator-thickness 7 \
|
||||
# --effect-blur 7x5 \
|
||||
# --effect-vignette 0.5:0.5 \
|
||||
# --ring-color bb00cc \
|
||||
# --key-hl-color 880033 \
|
||||
# --line-color 00000000 \
|
||||
# --inside-color 00000088 \
|
||||
# --separator-color 00000000 \
|
||||
# --grace 2 \
|
||||
# --fade-in 0.2
|
||||
settings = {
|
||||
screenshots = true;
|
||||
# clock = true;
|
||||
font = "Sans:bold";
|
||||
disable-caps-lock-text = true;
|
||||
effect-blur = "7x5";
|
||||
text-color = "ffffff";
|
||||
layout-text-color = "ffffff";
|
||||
|
||||
ring-color = "000000";
|
||||
key-hl-color = "dddddd";
|
||||
line-color = "00000000";
|
||||
inside-color = "00000088";
|
||||
separator-color = "00000000";
|
||||
|
||||
ring-clear-color = "00000000";
|
||||
line-clear-color = "00000000";
|
||||
inside-clear-color = "00000000";
|
||||
text-clear-color = "00000000";
|
||||
};
|
||||
};
|
||||
|
||||
services.swayidle = {
|
||||
enable = true;
|
||||
|
||||
events = [{
|
||||
event = "before-sleep";
|
||||
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
|
||||
}
|
||||
{
|
||||
event = "after-resume";
|
||||
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on";
|
||||
}
|
||||
{
|
||||
event = "lock";
|
||||
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
|
||||
}];
|
||||
|
||||
timeouts = [{
|
||||
timeout = 300;
|
||||
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
|
||||
}
|
||||
{
|
||||
timeout = 900;
|
||||
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off";
|
||||
}];
|
||||
};
|
||||
|
||||
# services.swayidle = {
|
||||
# enable = true;
|
||||
# events = [
|
||||
# { event = "after-resume"; command = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; }
|
||||
# ];
|
||||
# timeouts = [{
|
||||
# timeout = 10;
|
||||
# command =
|
||||
# "${pkgs.hyprland}/bin/hyprctl dispatch dpms off & swaylock";
|
||||
# }];
|
||||
#
|
||||
# };
|
||||
|
||||
programs.kitty = {
|
||||
enable = true;
|
||||
font.name = "monospace";
|
||||
font.size = 12;
|
||||
settings = {
|
||||
cursor_shape = "block";
|
||||
default_pointer_shape = "arrow";
|
||||
pointer_shape_when_dragging = "arrow";
|
||||
enable_audio_bell = false;
|
||||
placement_strategy = "top-left";
|
||||
remember_window_size = false;
|
||||
initial_window_width = 1300;
|
||||
initial_window_height = 800;
|
||||
confirm_os_window_close = 0;
|
||||
resize_debounce_time = "0.1 0.1";
|
||||
};
|
||||
keybindings = {
|
||||
"ctrl+shift+equal" = "change_font_size all +0.5";
|
||||
"ctrl+shift+plus" = "change_font_size all +0.5";
|
||||
"ctrl+shift+kp_add" = "change_font_size all +0.5";
|
||||
"ctrl+shift+minus" = "change_font_size all -0.5";
|
||||
"ctrl+shift+kp_subtract" = "change_font_size all -0.5";
|
||||
};
|
||||
shellIntegration.enableFishIntegration = true;
|
||||
shellIntegration.mode = "no-cursor";
|
||||
extraConfig = ''
|
||||
include colors.conf
|
||||
'';
|
||||
};
|
||||
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
viAlias = true;
|
||||
defaultEditor = true;
|
||||
extraPackages = with pkgs; [
|
||||
nodejs_21
|
||||
gcc
|
||||
ocamlPackages.lsp
|
||||
ocamlPackages.ocamlformat
|
||||
rnix-lsp
|
||||
cargo
|
||||
];
|
||||
};
|
||||
|
||||
programs.mpv = {
|
||||
enable = true;
|
||||
config = {
|
||||
keep-open = "yes";
|
||||
osd-bar = "no";
|
||||
};
|
||||
|
||||
scripts = with pkgs.mpvScripts; [
|
||||
uosc
|
||||
thumbfast
|
||||
mpris
|
||||
];
|
||||
};
|
||||
|
||||
programs.waybar.enable = true;
|
||||
programs.firefox.enable = true;
|
||||
programs.zathura.enable = true;
|
||||
programs.tmux = {
|
||||
enable = true;
|
||||
historyLimit = 60000;
|
||||
escapeTime = 10;
|
||||
keyMode = "vi";
|
||||
mouse = true;
|
||||
};
|
||||
programs.git = {
|
||||
enable = true;
|
||||
userName = user;
|
||||
userEmail = "${user}@domain.xyz";
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue