all/home: separate home-manager config per host
This commit is contained in:
parent
55ab5a06eb
commit
64ba2b7193
@ -78,7 +78,7 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.users.akill = import ./home/home.nix;
|
home-manager.users.akill = import ./home/nixy/home.nix;
|
||||||
home-manager.extraSpecialArgs = { inherit inputs system; };
|
home-manager.extraSpecialArgs = { inherit inputs system; };
|
||||||
home-manager.backupFileExtension = "home_backup";
|
home-manager.backupFileExtension = "home_backup";
|
||||||
}
|
}
|
||||||
@ -101,7 +101,7 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.users.akill = import ./home/home.nix;
|
home-manager.users.akill = import ./home/mediabox/home.nix;
|
||||||
home-manager.extraSpecialArgs = { inherit inputs system; };
|
home-manager.extraSpecialArgs = { inherit inputs system; };
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@ -120,7 +120,7 @@
|
|||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
home-manager.users.akill = import ./home/home.nix;
|
home-manager.users.akill = import ./home/blue/home.nix;
|
||||||
home-manager.extraSpecialArgs = { inherit inputs system; };
|
home-manager.extraSpecialArgs = { inherit inputs system; };
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -10,12 +10,12 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./zsh.nix
|
../common/zsh.nix
|
||||||
./i3status-rust.nix
|
../common/i3status-rust.nix
|
||||||
./sway.nix
|
../common/sway.nix
|
||||||
./i3.nix
|
../common/i3.nix
|
||||||
./home_packages.nix
|
./home_packages.nix
|
||||||
./whatsapp-for-linux.nix
|
../common/whatsapp-for-linux.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home.stateVersion = "22.11";
|
home.stateVersion = "22.11";
|
351
home/mediabox/home.nix
Normal file
351
home/mediabox/home.nix
Normal file
@ -0,0 +1,351 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
qutebrowser_firejail = pkgs.writeShellScriptBin "qutebrowser" ''
|
||||||
|
firejail -- ${lib.getExe pkgs.qutebrowser} "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../common/zsh.nix
|
||||||
|
../common/i3status-rust.nix
|
||||||
|
../common/sway.nix
|
||||||
|
../common/i3.nix
|
||||||
|
./home_packages.nix
|
||||||
|
../common/whatsapp-for-linux.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.stateVersion = "22.11";
|
||||||
|
home.username = "akill";
|
||||||
|
home.homeDirectory = "/home/akill";
|
||||||
|
|
||||||
|
xdg.enable = true;
|
||||||
|
xdg.mimeApps = {
|
||||||
|
enable = true;
|
||||||
|
defaultApplications = {
|
||||||
|
"application/pdf" = "sioyek.desktop";
|
||||||
|
"default-web-browser" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"text/html" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
home.sessionVariables = rec {
|
||||||
|
BROWSER = lib.getExe qutebrowser_firejail;
|
||||||
|
DEFAULT_BROWSER = "${BROWSER}";
|
||||||
|
EDITOR = "nvim";
|
||||||
|
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
SUDO_EDITOR = "nvim";
|
||||||
|
WLR_RENDERER = "vulkan";
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
home-manager.enable = true;
|
||||||
|
|
||||||
|
librewolf = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.librewolf-wayland;
|
||||||
|
settings = {
|
||||||
|
"webgl.disable" = true;
|
||||||
|
"middlemouse.paste" = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
tmux = {
|
||||||
|
enable = true;
|
||||||
|
clock24 = true;
|
||||||
|
keyMode = "vi";
|
||||||
|
terminal = "screen-256color";
|
||||||
|
plugins = with pkgs.tmuxPlugins; [
|
||||||
|
sysstat
|
||||||
|
net-speed
|
||||||
|
gruvbox
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
mpv = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
slang = "eng,en";
|
||||||
|
alang = "eng,en";
|
||||||
|
hwdec = "auto";
|
||||||
|
vo = "gpu-next";
|
||||||
|
ao = "pipewire";
|
||||||
|
osd-bar = "no";
|
||||||
|
border = "no";
|
||||||
|
script-opts-set = "";
|
||||||
|
ytdl-format = "bestvideo[height<=?1080]+bestaudio/best";
|
||||||
|
};
|
||||||
|
|
||||||
|
bindings = {
|
||||||
|
WHEEL_UP = "ignore";
|
||||||
|
WHEEL_DOWN = "ignore";
|
||||||
|
WHEEL_LEFT = "ignore";
|
||||||
|
WHEEL_RIGHT = "ignore";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
alacritty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
font = {
|
||||||
|
normal.family = "JetBrainsMono";
|
||||||
|
italic.family = "JetBrainsMono";
|
||||||
|
bold.family = "JetBrainsMono";
|
||||||
|
bold_italic.family = "JetBrainsMono";
|
||||||
|
size = 14.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
selection = {
|
||||||
|
text = "0xcfcfc2";
|
||||||
|
background = "0x232629";
|
||||||
|
|
||||||
|
normal = {
|
||||||
|
black = "0x1c1b19";
|
||||||
|
red = "0xef2f27";
|
||||||
|
green = "0x519f50";
|
||||||
|
yellow = "0xfbb829";
|
||||||
|
blue = "0x2c78bf";
|
||||||
|
magenta = "0xe02c6d";
|
||||||
|
cyan = "0x0aaeb3";
|
||||||
|
white = "0x918175";
|
||||||
|
};
|
||||||
|
|
||||||
|
bright = {
|
||||||
|
black = "0x2D2C29";
|
||||||
|
red = "0xf75341";
|
||||||
|
green = "0x98bc37";
|
||||||
|
yellow = "0xfed06e";
|
||||||
|
blue = "0x68A8E4";
|
||||||
|
magenta = "0xff5c8f";
|
||||||
|
cyan = "0x53fde9";
|
||||||
|
white = "0xfce8c3";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
rofi = {
|
||||||
|
enable = true;
|
||||||
|
theme = "gruvbox-dark";
|
||||||
|
};
|
||||||
|
|
||||||
|
foot = {
|
||||||
|
enable = true;
|
||||||
|
server.enable = true;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
font = "JetBrainsMono:size=10";
|
||||||
|
dpi-aware = "yes";
|
||||||
|
};
|
||||||
|
mouse = {
|
||||||
|
hide-when-typing = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
qutebrowser = {
|
||||||
|
enable = true;
|
||||||
|
keyBindings = {
|
||||||
|
normal = {
|
||||||
|
"j" = "scroll-px 0 25";
|
||||||
|
"k" = "scroll-px 0 -25";
|
||||||
|
"u" = "undo --window";
|
||||||
|
";v" = "hint links spawn mpv {hint-url}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
content.notifications.enabled = false;
|
||||||
|
content.pdfjs = true;
|
||||||
|
content.webgl = false;
|
||||||
|
fonts.completion.category = "14pt monospace";
|
||||||
|
fonts.completion.entry = "14pt monospace";
|
||||||
|
fonts.contextmenu = "14pt monospace";
|
||||||
|
fonts.debug_console = "14pt monospace";
|
||||||
|
fonts.downloads = "14pt monospace";
|
||||||
|
fonts.hints = "14pt monospace";
|
||||||
|
fonts.keyhint = "14pt monospace";
|
||||||
|
fonts.messages.info = "14pt monospace";
|
||||||
|
fonts.prompts = "14pt monospace";
|
||||||
|
fonts.statusbar = "14pt monospace";
|
||||||
|
hints.chars = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p";
|
||||||
|
tabs.last_close = "close";
|
||||||
|
tabs.position = "left";
|
||||||
|
tabs.show = "multiple";
|
||||||
|
tabs.tabs_are_windows = true;
|
||||||
|
tabs.width = "12%";
|
||||||
|
zoom.default = "125%";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Asmir A";
|
||||||
|
userEmail = "asmir.abdulahovic@gmail.com";
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "master";
|
||||||
|
pull = {
|
||||||
|
rebase = true;
|
||||||
|
};
|
||||||
|
credential = {
|
||||||
|
helper = "store";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
signing.key = "020C42B7A9ABA3E2";
|
||||||
|
signing.signByDefault = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
obs-vkcapture
|
||||||
|
input-overlay
|
||||||
|
obs-multi-rtmp
|
||||||
|
obs-pipewire-audio-capture
|
||||||
|
wlrobs
|
||||||
|
obs-vaapi
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
i3status-rust.enable = true;
|
||||||
|
z-lua.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
lorri.enable = false;
|
||||||
|
mako.enable = true;
|
||||||
|
cliphist.enable = true;
|
||||||
|
gammastep = {
|
||||||
|
enable = true;
|
||||||
|
latitude = "44.53";
|
||||||
|
longitude = "18.67";
|
||||||
|
temperature.day = 5500;
|
||||||
|
temperature.night = 2900;
|
||||||
|
};
|
||||||
|
|
||||||
|
gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
defaultCacheTtl = 1800;
|
||||||
|
enableSshSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
swayidle =
|
||||||
|
let
|
||||||
|
locker = pkgs.writeShellScriptBin "swaylock_fancy" ''
|
||||||
|
ALL_IMGS=""
|
||||||
|
LOCK_ARGS=""
|
||||||
|
for OUTPUT in $(${pkgs.sway}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[].name')
|
||||||
|
do
|
||||||
|
TMP_FILE=$(${pkgs.coreutils}/bin/mktemp /tmp/.swaylock_ss_XXXXXX.jpg)
|
||||||
|
${lib.getExe pkgs.grim} -t ppm -o $OUTPUT - | \
|
||||||
|
${lib.getExe pkgs.ffmpeg} -y -loglevel 0 -i - -vframes 1 -vf "boxblur=10" "$TMP_FILE"
|
||||||
|
LOCK_ARGS="$LOCK_ARGS --image $OUTPUT:$TMP_FILE"
|
||||||
|
ALL_IMGS="$ALL_IMGS $TMP_FILE"
|
||||||
|
done
|
||||||
|
${lib.getExe pkgs.swaylock} -f $LOCK_ARGS
|
||||||
|
${pkgs.coreutils}/bin/shred $ALL_IMGS
|
||||||
|
${pkgs.coreutils}/bin/rm $ALL_IMGS
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
/*
|
||||||
|
refresh_i3status = pkgs.writeShellScriptBin "refresh_i3status" ''
|
||||||
|
${pkgs.coreutils}/bin/sleep 1 && ${pkgs.procps}/bin/pkill -USR1 i3status-rs
|
||||||
|
'';
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
events = [
|
||||||
|
{
|
||||||
|
event = "before-sleep";
|
||||||
|
command = "${locker}/bin/swaylock_fancy";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "lock";
|
||||||
|
command = "${locker}/bin/swaylock_fancy";
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
event = "after-resume";
|
||||||
|
command = "${refresh_i3status}/bin/refresh_i3status";
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
];
|
||||||
|
timeouts = [
|
||||||
|
{
|
||||||
|
timeout = 15 * 60;
|
||||||
|
command = "${locker}/bin/swaylock_fancy";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
kanshi = {
|
||||||
|
enable = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
profile.name = "undocked";
|
||||||
|
profile.outputs = [
|
||||||
|
{
|
||||||
|
criteria = "eDP-1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
profile.name = "docked";
|
||||||
|
profile.outputs = [
|
||||||
|
{
|
||||||
|
criteria = "eDP-1";
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026536";
|
||||||
|
mode = "1920x1080@74.973Hz";
|
||||||
|
position = "1920,0";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026535";
|
||||||
|
mode = "1920x1080@74.973Hz";
|
||||||
|
position = "3840,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user = {
|
||||||
|
services = {
|
||||||
|
wayland-pipewire-idle-inhibit = {
|
||||||
|
Unit.Description = "inhibit sleep while audio output is active";
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${lib.getExe pkgs.wayland-pipewire-idle-inhibit}";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
183
home/mediabox/home_packages.nix
Normal file
183
home/mediabox/home_packages.nix
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
chromium_teams = pkgs.writeShellScriptBin "chromium_teams" ''
|
||||||
|
${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://teams.microsoft.com/
|
||||||
|
'';
|
||||||
|
chromium_discord = pkgs.writeShellScriptBin "chromium_discord" ''
|
||||||
|
${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://discordapp.com/channels/@me
|
||||||
|
'';
|
||||||
|
chromium_stackfield = pkgs.writeShellScriptBin "chromium_stackfield" ''
|
||||||
|
${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://stackfield.com/
|
||||||
|
'';
|
||||||
|
nixy_switch = pkgs.writeShellScriptBin "nixy_switch" ''
|
||||||
|
${pkgs.util-linux}/bin/ionice -c 3 -- \
|
||||||
|
${pkgs.coreutils}/bin/nice -n 20 -- \
|
||||||
|
${lib.getExe pkgs.nixos-rebuild} --flake ./#nixy switch
|
||||||
|
'';
|
||||||
|
qcad = pkgs.writeShellScriptBin "qcad" ''
|
||||||
|
QT_QPA_PLATFORM=xcb ${lib.getExe pkgs.qcad} $@
|
||||||
|
'';
|
||||||
|
ssh_proxy = pkgs.writeShellScriptBin "ssh_proxy" ''
|
||||||
|
if ${pkgs.coreutils}/bin/test $# -ne 1; then
|
||||||
|
echo "Usage: $0 <user>@<ssh_host>"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
PROXY_PORT="1337"
|
||||||
|
${lib.getExe pkgs.openssh} -D "$PROXY_PORT" -q -N "$@"
|
||||||
|
'';
|
||||||
|
wrap_sh =
|
||||||
|
let
|
||||||
|
bubblewrap = pkgs.callPackage ../packages/bubblewrap/default.nix { };
|
||||||
|
in
|
||||||
|
pkgs.writeShellScriptBin "wrap.sh" ''
|
||||||
|
if ${pkgs.coreutils-full}/bin/test $# -ne 1; then
|
||||||
|
echo "Usage: $0 <directory>"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
FULL_PATH=$(${pkgs.coreutils-full}/bin/realpath "$1")
|
||||||
|
BUBBLEWRAP_DIR="$1" ${bubblewrap}/bin/bwrap \
|
||||||
|
--bind / / \
|
||||||
|
--dev /dev \
|
||||||
|
--overlay-src "$FULL_PATH" \
|
||||||
|
--tmp-overlay "$FULL_PATH" \
|
||||||
|
"$SHELL"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
anydesk
|
||||||
|
appimage-run
|
||||||
|
arp-scan
|
||||||
|
birdtray
|
||||||
|
blackmagic
|
||||||
|
blender
|
||||||
|
btop
|
||||||
|
cached-nix-shell
|
||||||
|
caddy
|
||||||
|
cargo
|
||||||
|
cmake
|
||||||
|
compsize
|
||||||
|
kdePackages.ark
|
||||||
|
ungoogled-chromium
|
||||||
|
# cura
|
||||||
|
deluge
|
||||||
|
dfu-util
|
||||||
|
discord
|
||||||
|
dmenu-wayland
|
||||||
|
drawio
|
||||||
|
dualsensectl
|
||||||
|
ffmpeg-full
|
||||||
|
firefox
|
||||||
|
freecad
|
||||||
|
gcc
|
||||||
|
gdb
|
||||||
|
ghostscript
|
||||||
|
glab
|
||||||
|
glaxnimate
|
||||||
|
gnumake
|
||||||
|
go
|
||||||
|
grim
|
||||||
|
heimdall
|
||||||
|
hyperfine
|
||||||
|
icestorm
|
||||||
|
imagemagick
|
||||||
|
imv
|
||||||
|
inkscape
|
||||||
|
jellyfin-media-player
|
||||||
|
kdePackages.kdenlive
|
||||||
|
kicad
|
||||||
|
kodi-wayland
|
||||||
|
krita
|
||||||
|
libnotify
|
||||||
|
libreoffice-qt6-fresh
|
||||||
|
libva-utils
|
||||||
|
linuxPackages_latest.perf
|
||||||
|
lsix
|
||||||
|
lsix
|
||||||
|
mediainfo
|
||||||
|
ncdu
|
||||||
|
neovide
|
||||||
|
nextpnr
|
||||||
|
ngspice
|
||||||
|
nix-init
|
||||||
|
nixpkgs-fmt
|
||||||
|
nix-prefetch-git
|
||||||
|
nodePackages.peerflix
|
||||||
|
nom
|
||||||
|
openems
|
||||||
|
openocd
|
||||||
|
openscad
|
||||||
|
pandoc
|
||||||
|
paraview
|
||||||
|
pass-wayland
|
||||||
|
patchelf
|
||||||
|
pavucontrol
|
||||||
|
pay-respects
|
||||||
|
pirate-get
|
||||||
|
poppler_utils
|
||||||
|
powertop
|
||||||
|
pulsemixer
|
||||||
|
pwvucontrol
|
||||||
|
python3
|
||||||
|
python3Packages.west
|
||||||
|
remmina
|
||||||
|
river
|
||||||
|
rizin
|
||||||
|
rtorrent
|
||||||
|
sbcl
|
||||||
|
screen
|
||||||
|
seer
|
||||||
|
sioyek
|
||||||
|
slurp
|
||||||
|
steam-run
|
||||||
|
stm32cubemx
|
||||||
|
swayimg
|
||||||
|
tea
|
||||||
|
teams-for-linux
|
||||||
|
tectonic
|
||||||
|
tessen
|
||||||
|
texlive.combined.scheme-full
|
||||||
|
thunderbird
|
||||||
|
typst
|
||||||
|
upx
|
||||||
|
viber
|
||||||
|
waybar
|
||||||
|
wdisplays
|
||||||
|
weechat
|
||||||
|
whatsapp-for-linux
|
||||||
|
wine
|
||||||
|
wireshark
|
||||||
|
wl-clipboard
|
||||||
|
wlr-randr
|
||||||
|
wofi
|
||||||
|
x2goclient
|
||||||
|
yewtube
|
||||||
|
yosys
|
||||||
|
yt-dlp
|
||||||
|
zapzap
|
||||||
|
zathura
|
||||||
|
# zeal-qt6
|
||||||
|
zig
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
chromium_discord
|
||||||
|
chromium_stackfield
|
||||||
|
chromium_teams
|
||||||
|
nixy_switch
|
||||||
|
qcad
|
||||||
|
ssh_proxy
|
||||||
|
wrap_sh
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
inputs.swaysw.packages.${system}.swaysw
|
||||||
|
(pkgs.callPackage ../packages/bubblewrap/default.nix { })
|
||||||
|
];
|
||||||
|
}
|
351
home/nixy/home.nix
Normal file
351
home/nixy/home.nix
Normal file
@ -0,0 +1,351 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
qutebrowser_firejail = pkgs.writeShellScriptBin "qutebrowser" ''
|
||||||
|
firejail -- ${lib.getExe pkgs.qutebrowser} "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../common/zsh.nix
|
||||||
|
../common/i3status-rust.nix
|
||||||
|
../common/sway.nix
|
||||||
|
../common/i3.nix
|
||||||
|
./home_packages.nix
|
||||||
|
../common/whatsapp-for-linux.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
home.stateVersion = "22.11";
|
||||||
|
home.username = "akill";
|
||||||
|
home.homeDirectory = "/home/akill";
|
||||||
|
|
||||||
|
xdg.enable = true;
|
||||||
|
xdg.mimeApps = {
|
||||||
|
enable = true;
|
||||||
|
defaultApplications = {
|
||||||
|
"application/pdf" = "sioyek.desktop";
|
||||||
|
"default-web-browser" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"text/html" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/about" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/http" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/https" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
"x-scheme-handler/unknown" = "org.qutebrowser.qutebrowser.desktop";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts.fontconfig.enable = true;
|
||||||
|
|
||||||
|
home.sessionVariables = rec {
|
||||||
|
BROWSER = lib.getExe qutebrowser_firejail;
|
||||||
|
DEFAULT_BROWSER = "${BROWSER}";
|
||||||
|
EDITOR = "nvim";
|
||||||
|
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||||
|
MOZ_ENABLE_WAYLAND = "1";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
SUDO_EDITOR = "nvim";
|
||||||
|
WLR_RENDERER = "vulkan";
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.sway = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
home-manager.enable = true;
|
||||||
|
|
||||||
|
librewolf = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.librewolf-wayland;
|
||||||
|
settings = {
|
||||||
|
"webgl.disable" = true;
|
||||||
|
"middlemouse.paste" = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
tmux = {
|
||||||
|
enable = true;
|
||||||
|
clock24 = true;
|
||||||
|
keyMode = "vi";
|
||||||
|
terminal = "screen-256color";
|
||||||
|
plugins = with pkgs.tmuxPlugins; [
|
||||||
|
sysstat
|
||||||
|
net-speed
|
||||||
|
gruvbox
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
mpv = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
slang = "eng,en";
|
||||||
|
alang = "eng,en";
|
||||||
|
hwdec = "auto";
|
||||||
|
vo = "gpu-next";
|
||||||
|
ao = "pipewire";
|
||||||
|
osd-bar = "no";
|
||||||
|
border = "no";
|
||||||
|
script-opts-set = "";
|
||||||
|
ytdl-format = "bestvideo[height<=?1080]+bestaudio/best";
|
||||||
|
};
|
||||||
|
|
||||||
|
bindings = {
|
||||||
|
WHEEL_UP = "ignore";
|
||||||
|
WHEEL_DOWN = "ignore";
|
||||||
|
WHEEL_LEFT = "ignore";
|
||||||
|
WHEEL_RIGHT = "ignore";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
alacritty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
font = {
|
||||||
|
normal.family = "JetBrainsMono";
|
||||||
|
italic.family = "JetBrainsMono";
|
||||||
|
bold.family = "JetBrainsMono";
|
||||||
|
bold_italic.family = "JetBrainsMono";
|
||||||
|
size = 14.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
selection = {
|
||||||
|
text = "0xcfcfc2";
|
||||||
|
background = "0x232629";
|
||||||
|
|
||||||
|
normal = {
|
||||||
|
black = "0x1c1b19";
|
||||||
|
red = "0xef2f27";
|
||||||
|
green = "0x519f50";
|
||||||
|
yellow = "0xfbb829";
|
||||||
|
blue = "0x2c78bf";
|
||||||
|
magenta = "0xe02c6d";
|
||||||
|
cyan = "0x0aaeb3";
|
||||||
|
white = "0x918175";
|
||||||
|
};
|
||||||
|
|
||||||
|
bright = {
|
||||||
|
black = "0x2D2C29";
|
||||||
|
red = "0xf75341";
|
||||||
|
green = "0x98bc37";
|
||||||
|
yellow = "0xfed06e";
|
||||||
|
blue = "0x68A8E4";
|
||||||
|
magenta = "0xff5c8f";
|
||||||
|
cyan = "0x53fde9";
|
||||||
|
white = "0xfce8c3";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
rofi = {
|
||||||
|
enable = true;
|
||||||
|
theme = "gruvbox-dark";
|
||||||
|
};
|
||||||
|
|
||||||
|
foot = {
|
||||||
|
enable = true;
|
||||||
|
server.enable = true;
|
||||||
|
settings = {
|
||||||
|
main = {
|
||||||
|
font = "JetBrainsMono:size=10";
|
||||||
|
dpi-aware = "yes";
|
||||||
|
};
|
||||||
|
mouse = {
|
||||||
|
hide-when-typing = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
qutebrowser = {
|
||||||
|
enable = true;
|
||||||
|
keyBindings = {
|
||||||
|
normal = {
|
||||||
|
"j" = "scroll-px 0 25";
|
||||||
|
"k" = "scroll-px 0 -25";
|
||||||
|
"u" = "undo --window";
|
||||||
|
";v" = "hint links spawn mpv {hint-url}";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
content.notifications.enabled = false;
|
||||||
|
content.pdfjs = true;
|
||||||
|
content.webgl = false;
|
||||||
|
fonts.completion.category = "14pt monospace";
|
||||||
|
fonts.completion.entry = "14pt monospace";
|
||||||
|
fonts.contextmenu = "14pt monospace";
|
||||||
|
fonts.debug_console = "14pt monospace";
|
||||||
|
fonts.downloads = "14pt monospace";
|
||||||
|
fonts.hints = "14pt monospace";
|
||||||
|
fonts.keyhint = "14pt monospace";
|
||||||
|
fonts.messages.info = "14pt monospace";
|
||||||
|
fonts.prompts = "14pt monospace";
|
||||||
|
fonts.statusbar = "14pt monospace";
|
||||||
|
hints.chars = "1qaz2wsx3edc4rfv5tgb6yhn7ujm8ik9ol0p";
|
||||||
|
tabs.last_close = "close";
|
||||||
|
tabs.position = "left";
|
||||||
|
tabs.show = "multiple";
|
||||||
|
tabs.tabs_are_windows = true;
|
||||||
|
tabs.width = "12%";
|
||||||
|
zoom.default = "125%";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Asmir A";
|
||||||
|
userEmail = "asmir.abdulahovic@gmail.com";
|
||||||
|
extraConfig = {
|
||||||
|
init.defaultBranch = "master";
|
||||||
|
pull = {
|
||||||
|
rebase = true;
|
||||||
|
};
|
||||||
|
credential = {
|
||||||
|
helper = "store";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
signing.key = "020C42B7A9ABA3E2";
|
||||||
|
signing.signByDefault = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
obs-vkcapture
|
||||||
|
input-overlay
|
||||||
|
obs-multi-rtmp
|
||||||
|
obs-pipewire-audio-capture
|
||||||
|
wlrobs
|
||||||
|
obs-vaapi
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
i3status-rust.enable = true;
|
||||||
|
z-lua.enable = true;
|
||||||
|
zsh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
lorri.enable = false;
|
||||||
|
mako.enable = true;
|
||||||
|
cliphist.enable = true;
|
||||||
|
gammastep = {
|
||||||
|
enable = true;
|
||||||
|
latitude = "44.53";
|
||||||
|
longitude = "18.67";
|
||||||
|
temperature.day = 5500;
|
||||||
|
temperature.night = 2900;
|
||||||
|
};
|
||||||
|
|
||||||
|
gnome-keyring.enable = true;
|
||||||
|
|
||||||
|
gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
defaultCacheTtl = 1800;
|
||||||
|
enableSshSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
swayidle =
|
||||||
|
let
|
||||||
|
locker = pkgs.writeShellScriptBin "swaylock_fancy" ''
|
||||||
|
ALL_IMGS=""
|
||||||
|
LOCK_ARGS=""
|
||||||
|
for OUTPUT in $(${pkgs.sway}/bin/swaymsg -t get_outputs | ${lib.getExe pkgs.jq} -r '.[].name')
|
||||||
|
do
|
||||||
|
TMP_FILE=$(${pkgs.coreutils}/bin/mktemp /tmp/.swaylock_ss_XXXXXX.jpg)
|
||||||
|
${lib.getExe pkgs.grim} -t ppm -o $OUTPUT - | \
|
||||||
|
${lib.getExe pkgs.ffmpeg} -y -loglevel 0 -i - -vframes 1 -vf "boxblur=10" "$TMP_FILE"
|
||||||
|
LOCK_ARGS="$LOCK_ARGS --image $OUTPUT:$TMP_FILE"
|
||||||
|
ALL_IMGS="$ALL_IMGS $TMP_FILE"
|
||||||
|
done
|
||||||
|
${lib.getExe pkgs.swaylock} -f $LOCK_ARGS
|
||||||
|
${pkgs.coreutils}/bin/shred $ALL_IMGS
|
||||||
|
${pkgs.coreutils}/bin/rm $ALL_IMGS
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
/*
|
||||||
|
refresh_i3status = pkgs.writeShellScriptBin "refresh_i3status" ''
|
||||||
|
${pkgs.coreutils}/bin/sleep 1 && ${pkgs.procps}/bin/pkill -USR1 i3status-rs
|
||||||
|
'';
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
events = [
|
||||||
|
{
|
||||||
|
event = "before-sleep";
|
||||||
|
command = "${locker}/bin/swaylock_fancy";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "lock";
|
||||||
|
command = "${locker}/bin/swaylock_fancy";
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
{
|
||||||
|
event = "after-resume";
|
||||||
|
command = "${refresh_i3status}/bin/refresh_i3status";
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
];
|
||||||
|
timeouts = [
|
||||||
|
{
|
||||||
|
timeout = 15 * 60;
|
||||||
|
command = "${locker}/bin/swaylock_fancy";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
kanshi = {
|
||||||
|
enable = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
profile.name = "undocked";
|
||||||
|
profile.outputs = [
|
||||||
|
{
|
||||||
|
criteria = "eDP-1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
profile.name = "docked";
|
||||||
|
profile.outputs = [
|
||||||
|
{
|
||||||
|
criteria = "eDP-1";
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026536";
|
||||||
|
mode = "1920x1080@74.973Hz";
|
||||||
|
position = "1920,0";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
criteria = "Philips Consumer Electronics Company PHL 272S1 UHB2347026535";
|
||||||
|
mode = "1920x1080@74.973Hz";
|
||||||
|
position = "3840,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user = {
|
||||||
|
services = {
|
||||||
|
wayland-pipewire-idle-inhibit = {
|
||||||
|
Unit.Description = "inhibit sleep while audio output is active";
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${lib.getExe pkgs.wayland-pipewire-idle-inhibit}";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 10;
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
183
home/nixy/home_packages.nix
Normal file
183
home/nixy/home_packages.nix
Normal file
@ -0,0 +1,183 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
chromium_teams = pkgs.writeShellScriptBin "chromium_teams" ''
|
||||||
|
${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://teams.microsoft.com/
|
||||||
|
'';
|
||||||
|
chromium_discord = pkgs.writeShellScriptBin "chromium_discord" ''
|
||||||
|
${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://discordapp.com/channels/@me
|
||||||
|
'';
|
||||||
|
chromium_stackfield = pkgs.writeShellScriptBin "chromium_stackfield" ''
|
||||||
|
${lib.getExe pkgs.ungoogled-chromium} --socket=wayland org.chromium.Chromium --app=https://stackfield.com/
|
||||||
|
'';
|
||||||
|
nixy_switch = pkgs.writeShellScriptBin "nixy_switch" ''
|
||||||
|
${pkgs.util-linux}/bin/ionice -c 3 -- \
|
||||||
|
${pkgs.coreutils}/bin/nice -n 20 -- \
|
||||||
|
${lib.getExe pkgs.nixos-rebuild} --flake ./#nixy switch
|
||||||
|
'';
|
||||||
|
qcad = pkgs.writeShellScriptBin "qcad" ''
|
||||||
|
QT_QPA_PLATFORM=xcb ${lib.getExe pkgs.qcad} $@
|
||||||
|
'';
|
||||||
|
ssh_proxy = pkgs.writeShellScriptBin "ssh_proxy" ''
|
||||||
|
if ${pkgs.coreutils}/bin/test $# -ne 1; then
|
||||||
|
echo "Usage: $0 <user>@<ssh_host>"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
PROXY_PORT="1337"
|
||||||
|
${lib.getExe pkgs.openssh} -D "$PROXY_PORT" -q -N "$@"
|
||||||
|
'';
|
||||||
|
wrap_sh =
|
||||||
|
let
|
||||||
|
bubblewrap = pkgs.callPackage ../packages/bubblewrap/default.nix { };
|
||||||
|
in
|
||||||
|
pkgs.writeShellScriptBin "wrap.sh" ''
|
||||||
|
if ${pkgs.coreutils-full}/bin/test $# -ne 1; then
|
||||||
|
echo "Usage: $0 <directory>"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
FULL_PATH=$(${pkgs.coreutils-full}/bin/realpath "$1")
|
||||||
|
BUBBLEWRAP_DIR="$1" ${bubblewrap}/bin/bwrap \
|
||||||
|
--bind / / \
|
||||||
|
--dev /dev \
|
||||||
|
--overlay-src "$FULL_PATH" \
|
||||||
|
--tmp-overlay "$FULL_PATH" \
|
||||||
|
"$SHELL"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages =
|
||||||
|
with pkgs;
|
||||||
|
[
|
||||||
|
anydesk
|
||||||
|
appimage-run
|
||||||
|
arp-scan
|
||||||
|
birdtray
|
||||||
|
blackmagic
|
||||||
|
blender
|
||||||
|
btop
|
||||||
|
cached-nix-shell
|
||||||
|
caddy
|
||||||
|
cargo
|
||||||
|
cmake
|
||||||
|
compsize
|
||||||
|
kdePackages.ark
|
||||||
|
ungoogled-chromium
|
||||||
|
# cura
|
||||||
|
deluge
|
||||||
|
dfu-util
|
||||||
|
discord
|
||||||
|
dmenu-wayland
|
||||||
|
drawio
|
||||||
|
dualsensectl
|
||||||
|
ffmpeg-full
|
||||||
|
firefox
|
||||||
|
freecad
|
||||||
|
gcc
|
||||||
|
gdb
|
||||||
|
ghostscript
|
||||||
|
glab
|
||||||
|
glaxnimate
|
||||||
|
gnumake
|
||||||
|
go
|
||||||
|
grim
|
||||||
|
heimdall
|
||||||
|
hyperfine
|
||||||
|
icestorm
|
||||||
|
imagemagick
|
||||||
|
imv
|
||||||
|
inkscape
|
||||||
|
jellyfin-media-player
|
||||||
|
kdePackages.kdenlive
|
||||||
|
kicad
|
||||||
|
kodi-wayland
|
||||||
|
krita
|
||||||
|
libnotify
|
||||||
|
libreoffice-qt6-fresh
|
||||||
|
libva-utils
|
||||||
|
linuxPackages_latest.perf
|
||||||
|
lsix
|
||||||
|
lsix
|
||||||
|
mediainfo
|
||||||
|
ncdu
|
||||||
|
neovide
|
||||||
|
nextpnr
|
||||||
|
ngspice
|
||||||
|
nix-init
|
||||||
|
nixpkgs-fmt
|
||||||
|
nix-prefetch-git
|
||||||
|
nodePackages.peerflix
|
||||||
|
nom
|
||||||
|
openems
|
||||||
|
openocd
|
||||||
|
openscad
|
||||||
|
pandoc
|
||||||
|
paraview
|
||||||
|
pass-wayland
|
||||||
|
patchelf
|
||||||
|
pavucontrol
|
||||||
|
pay-respects
|
||||||
|
pirate-get
|
||||||
|
poppler_utils
|
||||||
|
powertop
|
||||||
|
pulsemixer
|
||||||
|
pwvucontrol
|
||||||
|
python3
|
||||||
|
python3Packages.west
|
||||||
|
remmina
|
||||||
|
river
|
||||||
|
rizin
|
||||||
|
rtorrent
|
||||||
|
sbcl
|
||||||
|
screen
|
||||||
|
seer
|
||||||
|
sioyek
|
||||||
|
slurp
|
||||||
|
steam-run
|
||||||
|
stm32cubemx
|
||||||
|
swayimg
|
||||||
|
tea
|
||||||
|
teams-for-linux
|
||||||
|
tectonic
|
||||||
|
tessen
|
||||||
|
texlive.combined.scheme-full
|
||||||
|
thunderbird
|
||||||
|
typst
|
||||||
|
upx
|
||||||
|
viber
|
||||||
|
waybar
|
||||||
|
wdisplays
|
||||||
|
weechat
|
||||||
|
whatsapp-for-linux
|
||||||
|
wine
|
||||||
|
wireshark
|
||||||
|
wl-clipboard
|
||||||
|
wlr-randr
|
||||||
|
wofi
|
||||||
|
x2goclient
|
||||||
|
yewtube
|
||||||
|
yosys
|
||||||
|
yt-dlp
|
||||||
|
zapzap
|
||||||
|
zathura
|
||||||
|
# zeal-qt6
|
||||||
|
zig
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
chromium_discord
|
||||||
|
chromium_stackfield
|
||||||
|
chromium_teams
|
||||||
|
nixy_switch
|
||||||
|
qcad
|
||||||
|
ssh_proxy
|
||||||
|
wrap_sh
|
||||||
|
]
|
||||||
|
++ [
|
||||||
|
inputs.swaysw.packages.${system}.swaysw
|
||||||
|
(pkgs.callPackage ../packages/bubblewrap/default.nix { })
|
||||||
|
];
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user