Add work machine
|
@ -196,6 +196,7 @@
|
||||||
nix-prefetch-scripts
|
nix-prefetch-scripts
|
||||||
nix-prefetch-github
|
nix-prefetch-github
|
||||||
nix-prefetch-docker
|
nix-prefetch-docker
|
||||||
|
nixos-install-tools
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
309
home-manager/modules/i3/default.nix
Normal file
|
@ -0,0 +1,309 @@
|
||||||
|
{ lib
|
||||||
|
, pkgs
|
||||||
|
, config
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.eboskma.programs.i3;
|
||||||
|
mod = "Mod4";
|
||||||
|
i3lockcmd = "i3lock --image ${toString ./wallpapers/jwst-southern-ring-nircam-miri-side-by-side-3840.png} --color=333333ff --tiling --ignore-empty-password --show-failed-attempts --screen=0 --clock --pass-volume-keys";
|
||||||
|
rofiPower = pkgs.writeShellScriptBin "rofi-power" (builtins.readFile ./powermenu.sh);
|
||||||
|
left = "n";
|
||||||
|
down = "e";
|
||||||
|
up = "i";
|
||||||
|
right = "o";
|
||||||
|
|
||||||
|
workspacePartition =
|
||||||
|
builtins.partition (n: (trivial.mod n 2) != 0) (lists.range 1 10);
|
||||||
|
|
||||||
|
installSessionScript = pkgs.writeShellScriptBin "install-session" ''
|
||||||
|
sudo ln -fs ${pkgs.i3-gaps}/share/xsessions/i3.desktop /usr/share/xsessions/i3.desktop
|
||||||
|
sudo ln -fs ${pkgs.i3-gaps}/share/xsessions/i3-with-shmlog.desktop /usr/share/xsessions/i3-with-shmlog.desktop
|
||||||
|
'';
|
||||||
|
|
||||||
|
remoteSessionScript = pkgs.writeShellScriptBin "remote-session" ''
|
||||||
|
${pkgs.xorg.xrandr}/bin/xrandr --output DP-0 --mode 2560x1440
|
||||||
|
${pkgs.xorg.xrandr}/bin/xrandr --output DP-4 --mode 2560x1440 --right-of DP-0
|
||||||
|
${pkgs.nitrogen}/bin/nitrogen --head=0 --set-auto ${toString ./wallpapers/jwst-carina-cosmic-cliffs-nircam-2560.png}
|
||||||
|
${pkgs.nitrogen}/bin/nitrogen --head=1 --set-auto ${toString ./wallpapers/jwst-southern-ring-nircam-miri-side-by-side-2560.png}
|
||||||
|
systemctl --user restart polybar
|
||||||
|
'';
|
||||||
|
localSessionScript = pkgs.writeShellScriptBin "local-session" ''
|
||||||
|
${pkgs.xorg.xrandr}/bin/xrandr --output DP-0 --mode 3840x2160
|
||||||
|
${pkgs.xorg.xrandr}/bin/xrandr --output DP-4 --mode 3840x2160 --right-of DP-0
|
||||||
|
${pkgs.nitrogen}/bin/nitrogen --head=0 --set-auto ${toString ./wallpapers/jwst-carina-cosmic-cliffs-nircam-3840.png}
|
||||||
|
${pkgs.nitrogen}/bin/nitrogen --head=1 --set-auto ${toString ./wallpapers/jwst-southern-ring-nircam-miri-side-by-side-3840.png}
|
||||||
|
systemctl --user restart polybar
|
||||||
|
'';
|
||||||
|
|
||||||
|
menu = "${pkgs.rofi}/bin/rofi -show drun -no-lazy-grab";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.eboskma.programs.i3.enable = mkEnableOption "Enable i3";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
xsession = {
|
||||||
|
enable = true;
|
||||||
|
windowManager.i3 = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.i3-gaps;
|
||||||
|
config = {
|
||||||
|
inherit menu;
|
||||||
|
modifier = mod;
|
||||||
|
|
||||||
|
assigns = {
|
||||||
|
"1" = [{ class = "Firefox"; }];
|
||||||
|
"2" = [{ class = "Alacritty"; } { class = "foot"; }];
|
||||||
|
"3" = [{ class = "Code"; }];
|
||||||
|
"4" = [{ class = "telegramdesktop"; } { class = "Signal"; }];
|
||||||
|
};
|
||||||
|
# Dracula theme
|
||||||
|
colors = {
|
||||||
|
background = "#f8f8f2";
|
||||||
|
focused = {
|
||||||
|
border = "#6272a4";
|
||||||
|
background = "#6272A4";
|
||||||
|
text = "#f8f8f2";
|
||||||
|
indicator = "#6272a4";
|
||||||
|
childBorder = "#6272a4";
|
||||||
|
};
|
||||||
|
focusedInactive = {
|
||||||
|
border = "#44475a";
|
||||||
|
background = "#44475a";
|
||||||
|
text = "#f8f8f2";
|
||||||
|
indicator = "#44475a";
|
||||||
|
childBorder = "#44475a";
|
||||||
|
};
|
||||||
|
unfocused = {
|
||||||
|
border = "#282a36";
|
||||||
|
background = "#282a36";
|
||||||
|
text = "#bfbfbf";
|
||||||
|
indicator = "#282a36";
|
||||||
|
childBorder = "#282a36";
|
||||||
|
};
|
||||||
|
urgent = {
|
||||||
|
border = "#44475a";
|
||||||
|
background = "#ff5555";
|
||||||
|
text = "#f8f8f2";
|
||||||
|
indicator = "#ff5555";
|
||||||
|
childBorder = "#ff5555";
|
||||||
|
};
|
||||||
|
placeholder = {
|
||||||
|
border = "#282a36";
|
||||||
|
background = "#282a36";
|
||||||
|
text = "#f8f8f2";
|
||||||
|
indicator = "#282a36";
|
||||||
|
childBorder = "#282a36";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
floating = {
|
||||||
|
criteria = [{ instance = "gnome-calculator"; } { class = "Pavucontrol"; }];
|
||||||
|
modifier = mod;
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
names = [ "Iosevka Nerd Font" ];
|
||||||
|
style = "Regular";
|
||||||
|
size = 12.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
gaps = {
|
||||||
|
inner = 10;
|
||||||
|
outer = 5;
|
||||||
|
smartBorders = "on";
|
||||||
|
};
|
||||||
|
|
||||||
|
keybindings = {
|
||||||
|
"${mod}+Return" = "exec --no-startup-id ${config.xsession.windowManager.i3.config.terminal}";
|
||||||
|
"${mod}+Shift+q" = "kill";
|
||||||
|
"${mod}+s" = "exec --no-startup-id ${config.xsession.windowManager.i3.config.menu}";
|
||||||
|
"${mod}+Shift+s" = "exec --no-startup-id ${pkgs.rofi}/bin/rofi -no-lazy-grab -show run";
|
||||||
|
|
||||||
|
"${mod}+${left}" = "focus left";
|
||||||
|
"${mod}+${down}" = "focus down";
|
||||||
|
"${mod}+${up}" = "focus up";
|
||||||
|
"${mod}+${right}" = "focus right";
|
||||||
|
|
||||||
|
"${mod}+Left" = "focus left";
|
||||||
|
"${mod}+Down" = "focus down";
|
||||||
|
"${mod}+Up" = "focus up";
|
||||||
|
"${mod}+Right" = "focus right";
|
||||||
|
|
||||||
|
"${mod}+Shift+${left}" = "move left";
|
||||||
|
"${mod}+Shift+${down}" = "move down";
|
||||||
|
"${mod}+Shift+${up}" = "move up";
|
||||||
|
"${mod}+Shift+${right}" = "move right";
|
||||||
|
|
||||||
|
"${mod}+Shift+Left" = "move left";
|
||||||
|
"${mod}+Shift+Down" = "move down";
|
||||||
|
"${mod}+Shift+Up" = "move up";
|
||||||
|
"${mod}+Shift+Right" = "move right";
|
||||||
|
|
||||||
|
"${mod}+h" = "split h";
|
||||||
|
"${mod}+v" = "split v";
|
||||||
|
"${mod}+t" = "fullscreen toggle";
|
||||||
|
"${mod}+a" = "focus parent";
|
||||||
|
|
||||||
|
"${mod}+r" = "layout stacking";
|
||||||
|
"${mod}+w" = "layout tabbed";
|
||||||
|
"${mod}+f" = "layout toggle split";
|
||||||
|
|
||||||
|
"${mod}+Shift+space" = "floating toggle";
|
||||||
|
"${mod}+space" = "focus mode_toggle";
|
||||||
|
|
||||||
|
"${mod}+1" = "workspace number 1";
|
||||||
|
"${mod}+2" = "workspace number 2";
|
||||||
|
"${mod}+3" = "workspace number 3";
|
||||||
|
"${mod}+4" = "workspace number 4";
|
||||||
|
"${mod}+5" = "workspace number 5";
|
||||||
|
"${mod}+6" = "workspace number 6";
|
||||||
|
"${mod}+7" = "workspace number 7";
|
||||||
|
"${mod}+8" = "workspace number 8";
|
||||||
|
"${mod}+9" = "workspace number 9";
|
||||||
|
"${mod}+0" = "workspace number 10";
|
||||||
|
|
||||||
|
"${mod}+Shift+1" = "move container to workspace number 1";
|
||||||
|
"${mod}+Shift+2" = "move container to workspace number 2";
|
||||||
|
"${mod}+Shift+3" = "move container to workspace number 3";
|
||||||
|
"${mod}+Shift+4" = "move container to workspace number 4";
|
||||||
|
"${mod}+Shift+5" = "move container to workspace number 5";
|
||||||
|
"${mod}+Shift+6" = "move container to workspace number 6";
|
||||||
|
"${mod}+Shift+7" = "move container to workspace number 7";
|
||||||
|
"${mod}+Shift+8" = "move container to workspace number 8";
|
||||||
|
"${mod}+Shift+9" = "move container to workspace number 9";
|
||||||
|
"${mod}+Shift+0" = "move container to workspace number 10";
|
||||||
|
|
||||||
|
"${mod}+Shift+minus" = "move scratchpad";
|
||||||
|
"${mod}+minus" = "scratchpad show";
|
||||||
|
|
||||||
|
"${mod}+Shift+c" = "reload";
|
||||||
|
"${mod}+Shift+p" = "restart";
|
||||||
|
|
||||||
|
"${mod}+Shift+f" = "exec --no-startup-id ${rofiPower}/bin/rofi-power";
|
||||||
|
"${mod}+l" = "exec --no-startup-id ${i3lockcmd}";
|
||||||
|
"${mod}+p" = "mode resize";
|
||||||
|
|
||||||
|
"${mod}+Pause" = "mode passthrough";
|
||||||
|
|
||||||
|
"${mod}+c" = "exec --no-startup-id emacsclient -c";
|
||||||
|
|
||||||
|
"${mod}+Print" = "exec --no-startup-id ${pkgs.maim}/bin/maim --window $(${pkgs.xdotool}/bin/xdotool getactivewindow) ~/$(${pkgs.coreutils}/bin/date '+%Y-%m-%d-%T)-screenshot.png";
|
||||||
|
"${mod}+Shift+Print" = "exec --no-startup-id ${pkgs.maim}/bin/maim --window $(${pkgs.xdotool}/bin/xdotool getactivewindow) | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png";
|
||||||
|
"${mod}+Shift+Ctrl+Print" = "exec --no-startup-id ${pkgs.maim}/bin/maim -s | ${pkgs.xclip}/bin/xclip -selection clipboard -t image/png";
|
||||||
|
|
||||||
|
"XF86AudioRaiseVolume" = "exec --no-startup-id ${pkgs.pamedia}/bin/pamedia up";
|
||||||
|
"XF86AudioLowerVolume" = "exec --no-startup-id ${pkgs.pamedia}/bin/pamedia down";
|
||||||
|
"XF86AudioMute" = "exec --no-startup-id ${pkgs.pamedia}/bin/pamedia mute";
|
||||||
|
"XF86Calculator" = "exec ${pkgs.gnome.gnome-calculator}/bin/gnome-calculator";
|
||||||
|
};
|
||||||
|
|
||||||
|
modes = {
|
||||||
|
passthrough = {
|
||||||
|
"${mod}+Pause" = "mode default";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# terminal = "${pkgs.alacritty}/bin/alacritty";
|
||||||
|
terminal = "/usr/bin/alacritty";
|
||||||
|
|
||||||
|
window = {
|
||||||
|
border = 1;
|
||||||
|
titlebar = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
bars = [ ];
|
||||||
|
|
||||||
|
workspaceAutoBackAndForth = true;
|
||||||
|
workspaceOutputAssign = builtins.concatLists (builtins.attrValues (builtins.mapAttrs
|
||||||
|
(
|
||||||
|
name: workspaces:
|
||||||
|
let
|
||||||
|
output =
|
||||||
|
if name == "right"
|
||||||
|
then "DP-0"
|
||||||
|
else "DP-4";
|
||||||
|
in
|
||||||
|
builtins.map
|
||||||
|
(ws: {
|
||||||
|
inherit output;
|
||||||
|
workspace = toString ws;
|
||||||
|
})
|
||||||
|
workspaces
|
||||||
|
)
|
||||||
|
workspacePartition));
|
||||||
|
# [
|
||||||
|
# { output = "DP-0"; workspace = "1"; }
|
||||||
|
# ];
|
||||||
|
|
||||||
|
startup = [
|
||||||
|
{
|
||||||
|
command = "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1";
|
||||||
|
notification = false;
|
||||||
|
}
|
||||||
|
# {
|
||||||
|
# command = "/home/erwin/.config/polybar/launch.sh --shades";
|
||||||
|
# notification = false;
|
||||||
|
# always = true;
|
||||||
|
# }
|
||||||
|
{
|
||||||
|
command = "${pkgs.networkmanagerapplet}/bin/nm-applet";
|
||||||
|
notification = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = ''${pkgs.xorg.xinput}/bin/xinput set-int-prop "Logitech USB Laser Mouse" "libinput Natural Scrolling Enabled" 8 1'';
|
||||||
|
notification = false;
|
||||||
|
always = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = ''${pkgs.xorg.xinput}/bin/xinput set-float-prop "Logitech USB Laser Mouse" "libinput Accel Speed" 1'';
|
||||||
|
notification = false;
|
||||||
|
always = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "${pkgs.xorg.xrandr}/bin/xrandr --output DP-0 --primary --left-of DP-4";
|
||||||
|
notification = false;
|
||||||
|
}
|
||||||
|
# {
|
||||||
|
# command = "${pkgs.nitrogen}/bin/nitrogen --restore";
|
||||||
|
# notification = false;
|
||||||
|
# }
|
||||||
|
# {
|
||||||
|
# command = "${pkgs.tdesktop}/bin/telegram-desktop";
|
||||||
|
# notification = false;
|
||||||
|
# }
|
||||||
|
{
|
||||||
|
command = "${pkgs.xorg.xset}/bin/xset +dpms dpms 900 1200 1500";
|
||||||
|
notification = false;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
command = "${pkgs.dropbox}/bin/dropbox start";
|
||||||
|
notification = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
extraConfig = ''
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
eboskma.wallpapers = {
|
||||||
|
enable = true;
|
||||||
|
images = [
|
||||||
|
./wallpapers/river-3840.png
|
||||||
|
./wallpapers/jwst-pillars-of-creation-3840.jpg
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
home = {
|
||||||
|
file.".wallpapers".source = ./wallpapers;
|
||||||
|
|
||||||
|
packages = with pkgs; [
|
||||||
|
dunst
|
||||||
|
installSessionScript
|
||||||
|
localSessionScript
|
||||||
|
remoteSessionScript
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
54
home-manager/modules/i3/powermenu.sh
Executable file
|
@ -0,0 +1,54 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
confirm() {
|
||||||
|
rofi -dmenu \
|
||||||
|
-i \
|
||||||
|
-no-fixed-num-lines \
|
||||||
|
-p "Are you sure? [y/n]: " \
|
||||||
|
-theme power
|
||||||
|
}
|
||||||
|
|
||||||
|
# Options
|
||||||
|
shutdown=""
|
||||||
|
reboot=""
|
||||||
|
lock=""
|
||||||
|
hibernate=""
|
||||||
|
exit_wm=""
|
||||||
|
|
||||||
|
# Variable passed to rofi
|
||||||
|
options="${shutdown}\n${reboot}\n${lock}\n${hibernate}\n${exit_wm}"
|
||||||
|
uptime=$(uptime | awk '{print $1}' || true)
|
||||||
|
lockcmd="i3lock --ignore-empty-password --show-failed-attempts --clock --color=333333ff --screen=0 --pass-volume-keys --image /home/erwin/.wallpapers/river-3840.png --tiling"
|
||||||
|
|
||||||
|
chosen="$(echo -e "${options}" | rofi -theme power -p "Uptime: ${uptime}" -dmenu -selected-row 2)"
|
||||||
|
|
||||||
|
if [[ "${chosen}" == "" ]]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${chosen}" == "${lock}" ]]; then
|
||||||
|
${lockcmd}
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
answer=$(confirm)
|
||||||
|
|
||||||
|
if [[ "${answer}" == "y" ]]; then
|
||||||
|
case "${chosen}" in
|
||||||
|
"${shutdown}")
|
||||||
|
systemctl poweroff
|
||||||
|
;;
|
||||||
|
"${reboot}")
|
||||||
|
systemctl reboot
|
||||||
|
;;
|
||||||
|
"${hibernate}")
|
||||||
|
${lockcmd}
|
||||||
|
systemctl hibernate
|
||||||
|
;;
|
||||||
|
"${exit_wm}")
|
||||||
|
i3-msg exit
|
||||||
|
;;
|
||||||
|
*) ;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
fi
|
BIN
home-manager/modules/i3/wallpapers/black-panther-2560.jpg
Normal file
After Width: | Height: | Size: 580 KiB |
BIN
home-manager/modules/i3/wallpapers/black-panther-3840.jpg
Normal file
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 4.5 MiB |
After Width: | Height: | Size: 9.3 MiB |
After Width: | Height: | Size: 3.9 MiB |
After Width: | Height: | Size: 8.7 MiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 2 MiB |
After Width: | Height: | Size: 4 MiB |
After Width: | Height: | Size: 3 MiB |
After Width: | Height: | Size: 6.4 MiB |
BIN
home-manager/modules/i3/wallpapers/river-1920.png
Normal file
After Width: | Height: | Size: 2.8 MiB |
BIN
home-manager/modules/i3/wallpapers/river-2560.png
Normal file
After Width: | Height: | Size: 4.8 MiB |
BIN
home-manager/modules/i3/wallpapers/river-3840.png
Normal file
After Width: | Height: | Size: 9.8 MiB |
25
home-manager/modules/mpd/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ pkgs
|
||||||
|
, config
|
||||||
|
, lib
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.eboskma.programs.mpd;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.eboskma.programs.mpd = { enable = mkEnableOption "mpd"; };
|
||||||
|
|
||||||
|
config = mkIf (cfg.enable) {
|
||||||
|
services.mpd = {
|
||||||
|
enable = true;
|
||||||
|
network = {
|
||||||
|
startWhenNeeded = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.mpdris2 = {
|
||||||
|
enable = true;
|
||||||
|
notifications = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
72
home-manager/modules/picom/default.nix
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{ pkgs
|
||||||
|
, config
|
||||||
|
, lib
|
||||||
|
, inputs
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.eboskma.programs.picom;
|
||||||
|
picom = pkgs.writeShellScriptBin "picom" ''
|
||||||
|
${pkgs.nixgl.auto.nixGLDefault}/bin/nixGL ${pkgs.picom}/bin/picom $@
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.eboskma.programs.picom = { enable = mkEnableOption "activate picom"; };
|
||||||
|
|
||||||
|
config = mkIf (cfg.enable) {
|
||||||
|
# home.packages = [pkgs.nixgl.auto.nixGLDefault];
|
||||||
|
|
||||||
|
services.picom = {
|
||||||
|
enable = true;
|
||||||
|
package = picom;
|
||||||
|
|
||||||
|
backend = "glx";
|
||||||
|
vSync = true;
|
||||||
|
experimentalBackends = true;
|
||||||
|
|
||||||
|
fade = true;
|
||||||
|
fadeSteps = [ 0.08 0.08 ];
|
||||||
|
|
||||||
|
shadow = true;
|
||||||
|
|
||||||
|
inactiveOpacity = 0.8;
|
||||||
|
|
||||||
|
opacityRules = [
|
||||||
|
"0:_NET_WM_STATE@[*]:32a = '_NET_WM_STATE_HIDDEN'"
|
||||||
|
"100:fullscreen"
|
||||||
|
"100:name = 'Zoom Meeting'"
|
||||||
|
"100:name = 'zoom_linux_float_video_window'"
|
||||||
|
"100:class_g = 'Rofi'"
|
||||||
|
"100:class_g = 'mpv'"
|
||||||
|
"100:window_type = 'combo'"
|
||||||
|
"100:window_type = 'dock'"
|
||||||
|
"100:window_type = 'dropdown_menu'"
|
||||||
|
"100:window_type = 'menu'"
|
||||||
|
"100:window_type = 'popup_menu'"
|
||||||
|
"100:window_type = 'splash'"
|
||||||
|
"100:window_type = 'tooltip'"
|
||||||
|
"100:window_type = 'utility'"
|
||||||
|
"90:!focused"
|
||||||
|
];
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
unredir-if-possible = false;
|
||||||
|
mark-ovredir-focused = true;
|
||||||
|
use-ewmh-active-win = true;
|
||||||
|
blur = {
|
||||||
|
method = "gaussian";
|
||||||
|
size = 10;
|
||||||
|
deviation = 5.0;
|
||||||
|
};
|
||||||
|
inactive-dim = 0.2;
|
||||||
|
|
||||||
|
wintypes = {
|
||||||
|
dock = { shadow = false; };
|
||||||
|
dnd = { shadow = false; };
|
||||||
|
popup_menu = { shadow = false; opacity = 1.0; };
|
||||||
|
dropdown_menu = { shadow = false; opacity = 1.0; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
345
home-manager/modules/polybar/default.nix
Normal file
|
@ -0,0 +1,345 @@
|
||||||
|
{ pkgs
|
||||||
|
, config
|
||||||
|
, lib
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.eboskma.programs.polybar;
|
||||||
|
|
||||||
|
colors = {
|
||||||
|
background = "#cc000000";
|
||||||
|
foreground = "#ffffffff";
|
||||||
|
urgent = "#c9545d";
|
||||||
|
};
|
||||||
|
|
||||||
|
polybar-playerctl =
|
||||||
|
let
|
||||||
|
pythonWithPackages = pkgs.python3.withPackages (pythonPackages: [
|
||||||
|
pythonPackages.pygobject3
|
||||||
|
]);
|
||||||
|
in
|
||||||
|
pkgs.stdenv.mkDerivation {
|
||||||
|
name = "polybar-playerctl";
|
||||||
|
buildInputs = [
|
||||||
|
pythonWithPackages
|
||||||
|
pkgs.playerctl
|
||||||
|
];
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
pythonWithPackages
|
||||||
|
pkgs.python3Packages.pygobject3
|
||||||
|
pkgs.playerctl
|
||||||
|
];
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.gobject-introspection
|
||||||
|
pkgs.wrapGAppsHook
|
||||||
|
];
|
||||||
|
|
||||||
|
strictDeps = false;
|
||||||
|
dontUnpack = true;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp ${./scripts/polybar-playerctl} $out/bin/polybar-playerctl
|
||||||
|
chmod +x $out/bin/polybar-playerctl
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
headset-battery = pkgs.writeShellScript "headset-battery" ''
|
||||||
|
battery_level=$(${pkgs.headsetcontrol}/bin/headsetcontrol -c -b)
|
||||||
|
|
||||||
|
battery_icons=( )
|
||||||
|
battery_charging=""
|
||||||
|
|
||||||
|
if [ "''${battery_level}" -eq -1 ]; then
|
||||||
|
printf "%s " "''${battery_charging}"
|
||||||
|
else
|
||||||
|
idx=$(((battery_level / 10)))
|
||||||
|
if [ "''${idx}" -eq 10 ]; then
|
||||||
|
idx=9
|
||||||
|
fi
|
||||||
|
|
||||||
|
battery_icon="''${battery_icons[''${idx}]}"
|
||||||
|
printf "%s %i%%" "''${battery_icon}" "''${battery_level}"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.eboskma.programs.polybar = { enable = mkEnableOption "activate polybar"; };
|
||||||
|
|
||||||
|
config = mkIf (cfg.enable) {
|
||||||
|
# systemd.user.services.polybar = {
|
||||||
|
# Install = { WantedBy = [ "graphical-session.target" ]; };
|
||||||
|
# };
|
||||||
|
|
||||||
|
services.polybar = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.polybarFull.override {
|
||||||
|
i3GapsSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
script = ''
|
||||||
|
${pkgs.polybar}/bin/polybar-msg cmd quit
|
||||||
|
while ${pkgs.procps}/bin/pgrep -u ''${UID} -x polybar > /dev/null; do sleep 0.1; done
|
||||||
|
|
||||||
|
outputs=$(${pkgs.polybar}/bin/polybar -m | ${pkgs.coreutils}/bin/cut -d ':' -f 1)
|
||||||
|
primary=$(${pkgs.polybar}/bin/polybar -m | ${pkgs.gnugrep}/bin/grep primary | ${pkgs.coreutils}/bin/cut -d ':' -f 1)
|
||||||
|
|
||||||
|
for m in ''${outputs}; do
|
||||||
|
MONITOR=''${m} polybar -q main & disown
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
"global/wm" = {
|
||||||
|
margin.bottom = 0;
|
||||||
|
margin.top = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
"bar/main" = {
|
||||||
|
monitor = ''''${env:MONITOR:DP-0}'';
|
||||||
|
fixed.center = true;
|
||||||
|
width = "100%";
|
||||||
|
height = 48;
|
||||||
|
# offset.x = "1%";
|
||||||
|
# offset.y = "2%";
|
||||||
|
offset.x = 0;
|
||||||
|
offset.y = 0;
|
||||||
|
background = "${colors.background}";
|
||||||
|
foreground = "${colors.foreground}";
|
||||||
|
line.size = 2;
|
||||||
|
|
||||||
|
font = [
|
||||||
|
"Monofur Nerd Font:style=Bold:size=16;2"
|
||||||
|
"Monofur Nerd Font:size=18;3"
|
||||||
|
"Monofur Nerd Font:size=20;4"
|
||||||
|
];
|
||||||
|
|
||||||
|
modules = {
|
||||||
|
left = "launcher workspaces playerctl";
|
||||||
|
center = "date";
|
||||||
|
right = "headset-battery memory cpu pulseaudio network";
|
||||||
|
};
|
||||||
|
|
||||||
|
dim.value = 0.8;
|
||||||
|
|
||||||
|
tray = {
|
||||||
|
position = "right";
|
||||||
|
detached = false;
|
||||||
|
maxsize = 24;
|
||||||
|
background = "${colors.background}";
|
||||||
|
offset.x = 0;
|
||||||
|
offset.y = 0;
|
||||||
|
padding = 0;
|
||||||
|
scale = 1.0;
|
||||||
|
};
|
||||||
|
|
||||||
|
enable.ipc = true;
|
||||||
|
|
||||||
|
cursor = {
|
||||||
|
click = "pointer";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
screenchange.reload = false;
|
||||||
|
throttle.output.text = 5;
|
||||||
|
throttle.output.for = 10;
|
||||||
|
|
||||||
|
compositing = {
|
||||||
|
background = "source";
|
||||||
|
foreground = "over";
|
||||||
|
overline = "over";
|
||||||
|
underline = "over";
|
||||||
|
border = "over";
|
||||||
|
};
|
||||||
|
|
||||||
|
pseudo.transparency = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/launcher" = {
|
||||||
|
type = "custom/text";
|
||||||
|
content.text = "";
|
||||||
|
content.padding = 2;
|
||||||
|
|
||||||
|
click.left = "${pkgs.rofi}/bin/rofi -show drun -no-lazy-grab";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/workspaces" = {
|
||||||
|
# type = "internal/xworkspaces";
|
||||||
|
# pin.workspaces = true;
|
||||||
|
# enable.click = true;
|
||||||
|
# enable.scroll = true;
|
||||||
|
|
||||||
|
# icon.text = [ "1;" "2;" "3;" "4;" "5;" ];
|
||||||
|
# icon.default = "";
|
||||||
|
|
||||||
|
# format.text = "<label-state>";
|
||||||
|
# format.padding = 1;
|
||||||
|
|
||||||
|
# label.active.text = "";
|
||||||
|
# label.occupied.text = "";
|
||||||
|
# label.empty.text = "";
|
||||||
|
|
||||||
|
# label.urgent.text = "";
|
||||||
|
# label.urgent.background = "${colors.urgent}";
|
||||||
|
|
||||||
|
# label.active.padding = 1;
|
||||||
|
# label.urgent.padding = 1;
|
||||||
|
# label.occupied.padding = 1;
|
||||||
|
# label.empty.padding = 1;
|
||||||
|
|
||||||
|
type = "internal/i3";
|
||||||
|
pin.workspaces = true;
|
||||||
|
strip.wsnumbers = true;
|
||||||
|
enable.click = true;
|
||||||
|
enable.scroll = true;
|
||||||
|
|
||||||
|
# ws.icon.text = [ "1;" "2;" "3;" "4;" "5;" "6;" "7;" "8;" "9;" "10;" ];
|
||||||
|
# ws.icon.text = [ "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" ];
|
||||||
|
# ws.icon.default = "";
|
||||||
|
|
||||||
|
format = "<label-state> <label-mode>";
|
||||||
|
|
||||||
|
label.mode.text = "%mode%";
|
||||||
|
label.mode.padding = 1;
|
||||||
|
|
||||||
|
# label.focused.text = "";
|
||||||
|
label.focused.text = "%index%";
|
||||||
|
label.focused.padding = 1;
|
||||||
|
label.focused.background = "#333333";
|
||||||
|
label.focused.underline = "#ffffff";
|
||||||
|
|
||||||
|
# label.unfocused.text = "";
|
||||||
|
label.unfocused.text = "%index%";
|
||||||
|
label.unfocused.padding = 1;
|
||||||
|
|
||||||
|
# label.visible.text = "";
|
||||||
|
label.visible.text = "%index%";
|
||||||
|
label.visible.padding = 1;
|
||||||
|
|
||||||
|
# label.urgent.text = "";
|
||||||
|
label.urgent.text = "%index%";
|
||||||
|
label.urgent.background = "${colors.urgent}";
|
||||||
|
label.urgent.padding = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/playerctl" = {
|
||||||
|
type = "custom/script";
|
||||||
|
exec = "${polybar-playerctl}/bin/polybar-playerctl";
|
||||||
|
interval = 1;
|
||||||
|
click.left = "${polybar-playerctl}/bin/polybar-playerctl play-pause";
|
||||||
|
click.middle = "${polybar-playerctl}/bin/polybar-playerctl next";
|
||||||
|
click.right = "${polybar-playerctl}/bin/polybar-playerctl prevous";
|
||||||
|
format.padding = 2;
|
||||||
|
|
||||||
|
scroll.up = "${polybar-playerctl}/bin/polybar-playerctl next-player";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/date" = {
|
||||||
|
type = "internal/date";
|
||||||
|
interval = 1.0;
|
||||||
|
time.text = " %H:%M:%S";
|
||||||
|
time.alt = " %a, %d %b %Y";
|
||||||
|
|
||||||
|
format.text = "<label>";
|
||||||
|
format.padding = 2;
|
||||||
|
|
||||||
|
label.text = "%time%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/headset-battery" = {
|
||||||
|
type = "custom/script";
|
||||||
|
exec = "${headset-battery}";
|
||||||
|
interval = 5;
|
||||||
|
|
||||||
|
format.prefix = " ";
|
||||||
|
format.padding = 2;
|
||||||
|
|
||||||
|
label.text = "%output%";
|
||||||
|
|
||||||
|
click.left = "${pkgs.headsetcontrol}/bin/headsetcontrol -s 128";
|
||||||
|
click.right = "${pkgs.headsetcontrol}/bin/headsetcontrol -s 0";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/memory" = {
|
||||||
|
type = "internal/memory";
|
||||||
|
interval = 1;
|
||||||
|
|
||||||
|
format.text = "<label>";
|
||||||
|
format.prefix = " ";
|
||||||
|
format.padding = 2;
|
||||||
|
|
||||||
|
label.text = "%mb_used% (%percentage_used%%)";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/cpu" = {
|
||||||
|
type = "internal/cpu";
|
||||||
|
interval = 1;
|
||||||
|
|
||||||
|
format.text = "<label>";
|
||||||
|
format.prefix = "";
|
||||||
|
format.padding = 2;
|
||||||
|
|
||||||
|
label = "%percentage:3%%";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/pulseaudio" = {
|
||||||
|
type = "internal/pulseaudio";
|
||||||
|
interval = 5;
|
||||||
|
|
||||||
|
use.ui.max = false;
|
||||||
|
|
||||||
|
format.volume.text = "<ramp-volume> <label-volume>";
|
||||||
|
format.volume.padding = 2;
|
||||||
|
|
||||||
|
format.muted.text = "<label-muted>";
|
||||||
|
format.muted.prefix = "婢";
|
||||||
|
format.muted.background = "${colors.urgent}";
|
||||||
|
format.muted.padding = 2;
|
||||||
|
|
||||||
|
label.volume.text = "%percentage%%";
|
||||||
|
|
||||||
|
label.muted.text = " Muted";
|
||||||
|
|
||||||
|
ramp.volume = [ "奄" "奔" "墳" ];
|
||||||
|
|
||||||
|
click.right = "${pkgs.pavucontrol}/bin/pavucontrol";
|
||||||
|
};
|
||||||
|
|
||||||
|
"module/network" = {
|
||||||
|
type = "internal/network";
|
||||||
|
interval = 1;
|
||||||
|
|
||||||
|
interface = "enp4s0";
|
||||||
|
|
||||||
|
click-left = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||||
|
|
||||||
|
accumulate.stats = true;
|
||||||
|
unknown.as.up = true;
|
||||||
|
|
||||||
|
format.connected.text = "<label-connected>";
|
||||||
|
format.connected.padding = 2;
|
||||||
|
|
||||||
|
format.disconnected.text = "<label-disconnected>";
|
||||||
|
format.disconnected.padding = 2;
|
||||||
|
|
||||||
|
format.packetloss.text = "<animation-packetloss> <label-connected>";
|
||||||
|
|
||||||
|
label.connected.text = " %local_ip% %upspeed:9% %downspeed:9%";
|
||||||
|
label.disconnected.text = "%{A1:networkmanager_dmenu &:} Offline%{A}";
|
||||||
|
|
||||||
|
animation.packetloss.text = [
|
||||||
|
{
|
||||||
|
text = "⚠";
|
||||||
|
foreground = "${colors.urgent}";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
text = "⚠";
|
||||||
|
foreground = "${colors.foreground}";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
animation.packetloss.framerate = 500;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
84
home-manager/modules/polybar/scripts/polybar-playerctl
Executable file
|
@ -0,0 +1,84 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import gi
|
||||||
|
from gi.repository import GLib
|
||||||
|
|
||||||
|
# Check Playerctl version
|
||||||
|
gi.require_version('Playerctl', '2.0')
|
||||||
|
from gi.repository import Playerctl
|
||||||
|
|
||||||
|
|
||||||
|
def player_status_str(status):
|
||||||
|
if status == Playerctl.PlaybackStatus.PLAYING:
|
||||||
|
return 'Playing'
|
||||||
|
elif status == Playerctl.PlaybackStatus.PAUSED:
|
||||||
|
return 'Paused'
|
||||||
|
elif status == Playerctl.PlaybackStatus.STOPPED:
|
||||||
|
return 'Stopped'
|
||||||
|
else:
|
||||||
|
return 'Unknown'
|
||||||
|
|
||||||
|
def now_playing_str(artist, title):
|
||||||
|
if artist == None and title == None:
|
||||||
|
return 'No music information'
|
||||||
|
elif artist == None:
|
||||||
|
return title
|
||||||
|
else:
|
||||||
|
return f'{artist} - {title}'
|
||||||
|
|
||||||
|
players = Playerctl.list_players()
|
||||||
|
|
||||||
|
if len(players) == 0:
|
||||||
|
print("No players found")
|
||||||
|
exit(0)
|
||||||
|
|
||||||
|
homedir = os.environ['HOME']
|
||||||
|
player_file = f'{homedir}/.playerctl_player'
|
||||||
|
current_player_name = ''
|
||||||
|
|
||||||
|
if os.path.isfile(player_file):
|
||||||
|
with open(player_file, mode='r') as file:
|
||||||
|
current_player_name = file.read()
|
||||||
|
|
||||||
|
player_found = False
|
||||||
|
player_changed = False
|
||||||
|
player_index = 0
|
||||||
|
for (index, p) in enumerate(players):
|
||||||
|
if p.instance == current_player_name:
|
||||||
|
player_found = True
|
||||||
|
player_index = index
|
||||||
|
break
|
||||||
|
|
||||||
|
if not player_found:
|
||||||
|
player = Playerctl.Player.new_from_name(players[0])
|
||||||
|
else:
|
||||||
|
player = Playerctl.Player.new_from_name(players[player_index])
|
||||||
|
|
||||||
|
if len(sys.argv) == 1:
|
||||||
|
out = f'ﱘ [{player.get_property("player-name")}] '
|
||||||
|
if player.props.playback_status == Playerctl.PlaybackStatus.PLAYING:
|
||||||
|
out += now_playing_str(player.get_artist(), player.get_title())
|
||||||
|
else:
|
||||||
|
out += player_status_str(player.get_property('playback_status'))
|
||||||
|
|
||||||
|
print(out)
|
||||||
|
elif sys.argv[1] == 'next-player':
|
||||||
|
player_changed = True
|
||||||
|
player_index += 1
|
||||||
|
if player_index == len(players):
|
||||||
|
player_index = 0
|
||||||
|
|
||||||
|
player = Playerctl.Player.new_from_name(players[player_index])
|
||||||
|
elif sys.argv[1] == 'play-pause':
|
||||||
|
player.play_pause()
|
||||||
|
elif sys.argv[1] == 'next':
|
||||||
|
player.next()
|
||||||
|
elif sys.argv[1] == 'previous':
|
||||||
|
player.previous()
|
||||||
|
|
||||||
|
if player_changed or not player_found:
|
||||||
|
with open(player_file, mode='w') as file:
|
||||||
|
file.write(player.get_property('player-instance'))
|
||||||
|
file.flush()
|
|
@ -7,7 +7,14 @@ with lib; let
|
||||||
cfg = config.eboskma.programs.rofi;
|
cfg = config.eboskma.programs.rofi;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.eboskma.programs.rofi.enable = mkEnableOption "Enable rofi";
|
options.eboskma.programs.rofi = {
|
||||||
|
enable = mkEnableOption "Enable rofi";
|
||||||
|
package = mkOption {
|
||||||
|
description = "The rofi package to use";
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.rofi;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
|
|
45
home-manager/modules/wallpapers/default.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.eboskma.wallpapers;
|
||||||
|
|
||||||
|
i3SetWallpaper = pkgs.writeShellScript "i3-set-wallpaper" (if builtins.isPath cfg.images then
|
||||||
|
''${pkgs.nitrogen}/bin/nitrogen --set-color=${cfg.backgroundColor} --set-tiled ${cfg.images}''
|
||||||
|
else
|
||||||
|
builtins.concatStringsSep "\n" (map
|
||||||
|
({ fst, snd }:
|
||||||
|
let
|
||||||
|
image = fst;
|
||||||
|
monitor = toString snd;
|
||||||
|
in
|
||||||
|
''${pkgs.nitrogen}/bin/nitrogen --head=${monitor} --set-color=${cfg.backgroundColor} --set-tiled ${image}'')
|
||||||
|
(zipLists cfg.images (builtins.genList (x: x) (builtins.length cfg.images)))));
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.eboskma.wallpapers = {
|
||||||
|
enable = mkEnableOption "wallpapers";
|
||||||
|
backgroundColor = mkOption {
|
||||||
|
description = "Hex value of the background color";
|
||||||
|
type = (types.strMatching "#[[:xdigit:]]{6}");
|
||||||
|
default = "#000000";
|
||||||
|
example = "#ff0000";
|
||||||
|
};
|
||||||
|
images = mkOption {
|
||||||
|
description = "Image(s) to use as wallpapers. For multiple monitors, either set a single image to use on all monitors, or set a list with as many images as monitors you have";
|
||||||
|
type = with types; oneOf [ path (nonEmptyListOf path) ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [ pkgs.nitrogen ];
|
||||||
|
|
||||||
|
xsession.windowManager.i3.config.startup = [
|
||||||
|
{
|
||||||
|
command = toString i3SetWallpaper;
|
||||||
|
notification = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
37
home-manager/modules/xbanish/default.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.eboskma.services.xbanish;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.eboskma.services.xbanish = {
|
||||||
|
enable = mkEnableOption "xbanish";
|
||||||
|
|
||||||
|
arguments = mkOption {
|
||||||
|
description = "Arguments to pass to xbanish command";
|
||||||
|
default = "";
|
||||||
|
example = "-d -i shift";
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.enable) {
|
||||||
|
systemd.user.services.xbanish = {
|
||||||
|
Unit = {
|
||||||
|
Description = "xbanish hides the mouse pointer when typing";
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
ExecStart = ''
|
||||||
|
${pkgs.xbanish}/bin/xbanish ${cfg.arguments}
|
||||||
|
'';
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ in
|
||||||
users = {
|
users = {
|
||||||
erwin = {
|
erwin = {
|
||||||
enable = true;
|
enable = true;
|
||||||
desktop = true;
|
home = true;
|
||||||
};
|
};
|
||||||
builder.enable = true;
|
builder.enable = true;
|
||||||
};
|
};
|
||||||
|
@ -39,6 +39,7 @@ in
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
desktop = {
|
desktop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
wayland = true;
|
||||||
home-manager = true;
|
home-manager = true;
|
||||||
};
|
};
|
||||||
docker.enable = true;
|
docker.enable = true;
|
||||||
|
|
107
machines/mimir/configuration.nix
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
# Edit this configuration file to define what should be installed on
|
||||||
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
|
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||||
|
|
||||||
|
{ config, pkgs, nixos-hardware, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd
|
||||||
|
nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||||
|
nixos-hardware.nixosModules.common-gpu-nvidia
|
||||||
|
nixos-hardware.nixosModules.common-pc-ssd
|
||||||
|
|
||||||
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
../../users/erwin
|
||||||
|
../../users/root
|
||||||
|
];
|
||||||
|
|
||||||
|
eboskma = {
|
||||||
|
users = {
|
||||||
|
erwin = {
|
||||||
|
enable = true;
|
||||||
|
work = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
base = {
|
||||||
|
plymouth.enable = true;
|
||||||
|
work = true;
|
||||||
|
kernel = pkgs.linuxKernel.packages.linux_6_0;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktop = {
|
||||||
|
enable = true;
|
||||||
|
home-manager = true;
|
||||||
|
};
|
||||||
|
docker.enable = true;
|
||||||
|
fonts.enable = true;
|
||||||
|
gnome.enable = true;
|
||||||
|
greetd.enable = true;
|
||||||
|
networking.enable = true;
|
||||||
|
nix-common.enable = true;
|
||||||
|
sound.enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader = {
|
||||||
|
systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 15;
|
||||||
|
};
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Europe/Amsterdam";
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
hostName = "mimir";
|
||||||
|
useDHCP = false;
|
||||||
|
networkManager.enable = true;
|
||||||
|
useNetworkd = true;
|
||||||
|
|
||||||
|
firewall = {
|
||||||
|
trustedInterfaces = [ "lo" ];
|
||||||
|
|
||||||
|
allowedTCPPorts = [
|
||||||
|
# Horus System V2
|
||||||
|
12345
|
||||||
|
5555
|
||||||
|
5556
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.network = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
networks = {
|
||||||
|
"40-enp4s0" = {
|
||||||
|
DHCP = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh.enable = true;
|
||||||
|
programs.ssh.startAgent = true;
|
||||||
|
|
||||||
|
# sops = {
|
||||||
|
# defaultSopsFile = ./secrets.yaml;
|
||||||
|
|
||||||
|
# secrets = {};
|
||||||
|
# };
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "22.11"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
||||||
|
|
284
machines/mimir/hardware-configuration.nix
Normal file
|
@ -0,0 +1,284 @@
|
||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[
|
||||||
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" ];
|
||||||
|
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
||||||
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/a07b9942-e77a-4ba7-b766-ad9d94d6bfb7";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/boot/efi" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/5200-060F";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/recovery" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/5200-3497";
|
||||||
|
fsType = "vfat";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/kde-frameworks-5-core18/32" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/kde-frameworks-5-core18_32.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/lxd/17629" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/lxd_17629.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/gnome-3-28-1804/145" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/gnome-3-28-1804_145.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/backup" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/87a9da5a-3eb4-4e2b-8bb0-de1c0e660048";
|
||||||
|
fsType = "btrfs";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/yocto" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/5ce7439d-7ff9-4bb1-ab63-d69feb899cfe";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/home" =
|
||||||
|
{
|
||||||
|
device = "/dev/disk/by-uuid/ff039faf-f7d7-4c5b-b6dc-50482b9af677";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/bare/5" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/bare_5.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/core/13741" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/core_13741.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/core/13886" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/core_13886.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/core18/2566" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/core18_2566.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/core18/2620" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/core18_2620.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/core20/1634" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/core20_1634.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/core20/1695" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/core20_1695.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/core22/310" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/core22_310.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/doctl/1096" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/doctl_1096.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/doctl/1122" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/doctl_1122.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/gnome-3-28-1804/161" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/gnome-3-28-1804_161.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/gnome-3-34-1804/72" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/gnome-3-34-1804_72.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/gnome-3-34-1804/77" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/gnome-3-34-1804_77.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/go/9952" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/go_9952.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/go/9981" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/go_9981.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/gtk-common-themes/1534" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/gtk-common-themes_1534.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/gtk-common-themes/1535" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/gtk-common-themes_1535.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/lxi-tools/1563" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/lxi-tools_1563.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/lxi-tools/1577" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/lxi-tools_1577.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/snapcraft/8513" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/snapcraft_8513.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/snapcraft/8528" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/snapcraft_8528.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/snapd/17029" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/snapd_17029.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/snapd/17336" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/snapd_17336.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/yq/1805" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/yq_1805.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/snap/yq/1920" =
|
||||||
|
{
|
||||||
|
device = "/var/lib/snapd/snaps/yq_1920.snap";
|
||||||
|
fsType = "squashfs";
|
||||||
|
options = [ "loop" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/var/lib/docker/overlay2/4e29ec585458a234ac12358c1f1916710e9280d18f3055db6f9a872e3f3ceacc/merged" =
|
||||||
|
{
|
||||||
|
device = "overlay";
|
||||||
|
fsType = "overlay";
|
||||||
|
};
|
||||||
|
|
||||||
|
fileSystems."/var/lib/docker/overlay2/1f0b089d78d0820ce1858129b6af0b957d8e63d7a10664d6c469cc092cb8465c/merged" =
|
||||||
|
{
|
||||||
|
device = "overlay";
|
||||||
|
fsType = "overlay";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices =
|
||||||
|
[{ device = "/dev/disk/by-uuid/82969dda-8804-4314-b916-2d4b5db904d5"; }];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.br-0d184fb18be7.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.br-ce69977bdefc.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.docker0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp4s0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.enp5s0f1.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.veth8f1e18a.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.vethbb81f0b.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.virbr0.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.wg0.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault warning: the group 'nixbld' specified in 'build-users-group' does not exist;
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
|
||||||
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
# high-resolution display
|
||||||
|
hardware.video.hidpi.enable = lib.mkDefault true;
|
||||||
|
}
|
|
@ -11,12 +11,15 @@ in
|
||||||
{
|
{
|
||||||
options.eboskma.desktop = {
|
options.eboskma.desktop = {
|
||||||
enable = mkEnableOption "Enable default desktop configuration";
|
enable = mkEnableOption "Enable default desktop configuration";
|
||||||
home-manager = mkOption {
|
wayland = mkOption {
|
||||||
|
description = "Configure for wayland";
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
home-manager = mkOption {
|
||||||
|
description = "Enable home-manager for this desktop";
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = ''
|
|
||||||
Enable home-manager for this desktop
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -28,7 +31,7 @@ in
|
||||||
|
|
||||||
seahorse.enable = true;
|
seahorse.enable = true;
|
||||||
|
|
||||||
sway = {
|
sway = mkIf cfg.wayland {
|
||||||
enable = true;
|
enable = true;
|
||||||
wrapperFeatures = {
|
wrapperFeatures = {
|
||||||
gtk = true;
|
gtk = true;
|
||||||
|
@ -41,7 +44,7 @@ in
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
hyprland = {
|
hyprland = mkIf cfg.wayland {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
# Required when also using the Home Manager module
|
# Required when also using the Home Manager module
|
||||||
|
@ -58,7 +61,7 @@ in
|
||||||
autostart.enable = true;
|
autostart.enable = true;
|
||||||
portal = {
|
portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
wlr.enable = true;
|
wlr.enable = cfg.wayland;
|
||||||
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
|
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,7 +20,7 @@ in
|
||||||
enable = false;
|
enable = false;
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
bluez-monitor.rules = [
|
bluez-monitor.rules = mkIf config.eboskma.bluetooth.enable [
|
||||||
{
|
{
|
||||||
matches = [{ "device.name" = "~bluez_card.*"; }];
|
matches = [{ "device.name" = "~bluez_card.*"; }];
|
||||||
actions = {
|
actions = {
|
||||||
|
@ -47,7 +47,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
bluez_monitor = {
|
bluez_monitor = mkIf config.eboskma.bluetooth.enable {
|
||||||
target = "wireplumber/bluetooth.lua.d/50-bluez-config.lua";
|
target = "wireplumber/bluetooth.lua.d/50-bluez-config.lua";
|
||||||
text = ''
|
text = ''
|
||||||
bluez_monitor.properties = {
|
bluez_monitor.properties = {
|
||||||
|
|
|
@ -6,7 +6,7 @@ in
|
||||||
{
|
{
|
||||||
options.eboskma.users.erwin = { enable = mkEnableOption "user account for Erwin"; };
|
options.eboskma.users.erwin = { enable = mkEnableOption "user account for Erwin"; };
|
||||||
|
|
||||||
imports = [ ./desktop.nix ];
|
imports = [ ./home.nix ./work.nix ];
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ with lib; let
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.eboskma.users.erwin = {
|
options.eboskma.users.erwin = {
|
||||||
desktop = mkEnableOption "desktop";
|
home = mkEnableOption "home profile";
|
||||||
terminal = mkOption {
|
terminal = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "foot";
|
default = "foot";
|
||||||
|
@ -21,7 +21,7 @@ in
|
||||||
|
|
||||||
config =
|
config =
|
||||||
mkIf cfg.desktop {
|
mkIf cfg.desktop {
|
||||||
home-manager.users.erwin = mkIf cfg.desktop {
|
home-manager.users.erwin = {
|
||||||
_module.args.flake-inputs = inputs;
|
_module.args.flake-inputs = inputs;
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
@ -88,7 +88,10 @@ in
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
rofi.enable = true;
|
rofi = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.rofi-wayland;
|
||||||
|
};
|
||||||
vscode.enable = false;
|
vscode.enable = false;
|
||||||
solvespace.enable = true;
|
solvespace.enable = true;
|
||||||
ssh.enable = true;
|
ssh.enable = true;
|
199
users/erwin/work.nix
Normal file
|
@ -0,0 +1,199 @@
|
||||||
|
{ pkgs, config, lib, inputs, self-overlay, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.eboskma.users.erwin;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.eboskma.users.erwin = {
|
||||||
|
work = mkEnableOption "work profile";
|
||||||
|
terminal = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "Alacritty";
|
||||||
|
description = "Terminal emulator to use. Specify the .desktop filename, e.g. 'foot' or 'Alacritty'";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.work) {
|
||||||
|
home-manager.users.erwin = {
|
||||||
|
_module.args.flake-inputs = inputs;
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
programs.command-not-found.enable = true;
|
||||||
|
|
||||||
|
home.username = "erwin";
|
||||||
|
home.homeDirectory = "/home/erwin";
|
||||||
|
home.sessionVariables = {
|
||||||
|
EDITOR = "${config.eboskma.programs.emacs.package}/bin/emacsclient -c";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs.config = { allowUnfree = true; };
|
||||||
|
|
||||||
|
eboskma = {
|
||||||
|
programs = {
|
||||||
|
alacritty.enable = true;
|
||||||
|
bat.enable = true;
|
||||||
|
dropbox.enable = true;
|
||||||
|
dunst.enable = true;
|
||||||
|
emacs = {
|
||||||
|
enable = true;
|
||||||
|
daemon = true;
|
||||||
|
};
|
||||||
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
work = true;
|
||||||
|
};
|
||||||
|
fish.enabel = true;
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
name = "Erwin Boskma";
|
||||||
|
email = "erwin@horus.nu";
|
||||||
|
signingKey = "~/.ssh/id_ed25519_sk";
|
||||||
|
signingKeyFormat = "ssh";
|
||||||
|
};
|
||||||
|
gpg.enable = true;
|
||||||
|
i3.enable = true;
|
||||||
|
mpd.enable = true;
|
||||||
|
polybar.enable = true;
|
||||||
|
neovim.enable = true;
|
||||||
|
rclone = {
|
||||||
|
enable = true;
|
||||||
|
mounts = [
|
||||||
|
{
|
||||||
|
remote = "org-roam";
|
||||||
|
local = "/home/erwin/org-roam";
|
||||||
|
remoteConfig = {
|
||||||
|
type = "sftp";
|
||||||
|
host = "zh2088.rsync.net";
|
||||||
|
user = "zh2088";
|
||||||
|
key_file = "~/.ssh/rsync-net";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
rofi.enable = true;
|
||||||
|
ssh.enable = true;
|
||||||
|
zellij.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
xbanish.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
home.keyboard = {
|
||||||
|
layout = "us,us";
|
||||||
|
variant = "colemak,";
|
||||||
|
model = "pc105";
|
||||||
|
options = [ "ctrl:nocaps" "eurosign:5" "lv5:ralt_switch" "lv3:rwin_switch" "grp:shifts_toggle" "grp_led:caps" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
atool
|
||||||
|
bandwhich
|
||||||
|
bitwarden
|
||||||
|
blink1-tool
|
||||||
|
bottom
|
||||||
|
fd
|
||||||
|
ffmpeg_5-full
|
||||||
|
git
|
||||||
|
gnome.nautilus
|
||||||
|
headsetcontrol
|
||||||
|
imagemagick
|
||||||
|
iotop
|
||||||
|
(jetbrains.clion.override { jdk = pkgs.jetbrains.jdk; })
|
||||||
|
libnotify
|
||||||
|
libreoffice-fresh
|
||||||
|
mpv
|
||||||
|
nordzy-cursor-theme
|
||||||
|
onefetch
|
||||||
|
pamedia
|
||||||
|
quintom-cursor-theme
|
||||||
|
procs
|
||||||
|
recursive
|
||||||
|
ripgrep
|
||||||
|
signal-desktop
|
||||||
|
solo2-cli
|
||||||
|
units
|
||||||
|
unzip
|
||||||
|
xdg-utils
|
||||||
|
xkb-switch
|
||||||
|
zeal
|
||||||
|
]
|
||||||
|
++ (with gst_all_1; [ gstreamer gstreamer.dev gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav gst-vaapi ]);
|
||||||
|
|
||||||
|
xdg = {
|
||||||
|
enable = true;
|
||||||
|
mime.enable = true;
|
||||||
|
mimeApps = {
|
||||||
|
enable = true;
|
||||||
|
defaultApplications = {
|
||||||
|
"x-scheme-handler/http" = "firefox.desktop";
|
||||||
|
"x-scheme-handler/https" = "firefox.desktop";
|
||||||
|
"x-scheme-handler/chrome" = "firefox.desktop";
|
||||||
|
"x-scheme-handler/terminal" = "${cfg.terminal}.desktop";
|
||||||
|
"text/html" = "firefox.desktop";
|
||||||
|
"application/x-extension-htm" = "firefox.desktop";
|
||||||
|
"application/x-extension-html" = "firefox.desktop";
|
||||||
|
"application/x-extension-shtml" = "firefox.desktop";
|
||||||
|
"application/xhtml+xml" = "firefox.desktop";
|
||||||
|
"application/x-extension-xhtml" = "firefox.desktop";
|
||||||
|
"application/x-extension-xht" = "firefox.desktop";
|
||||||
|
};
|
||||||
|
associations = {
|
||||||
|
added = {
|
||||||
|
"image/jpeg" = "feh.desktop";
|
||||||
|
"image/png" = "feh.desktop";
|
||||||
|
"image/gif" = "feh.desktop";
|
||||||
|
"application/zip" = "org.gnome.FileRoller.desktop";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
userDirs = {
|
||||||
|
enable = true;
|
||||||
|
createDirectories = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme = {
|
||||||
|
name = "Arc-Dark";
|
||||||
|
package = pkgs.arc-theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
iconTheme = {
|
||||||
|
name = "Papirus-Dark";
|
||||||
|
package = pkgs.papirus-icon-theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk3 = {
|
||||||
|
bookmarks = [
|
||||||
|
"file:///home/erwin/workspace"
|
||||||
|
];
|
||||||
|
extraConfig = {
|
||||||
|
gtk-application-prefer-dark-theme = true;
|
||||||
|
gtk-cursor-theme-name = "Nordzy-cursors";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
{
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
self-overlay
|
||||||
|
inputs.ha-now-playing.overlays.${pkgs.system}
|
||||||
|
inputs.pamedia.overlays.${pkgs.system}
|
||||||
|
inputs.emacs-overlay.overlay
|
||||||
|
];
|
||||||
|
}
|
||||||
|
] ++ (map (mod: (../../home-manager/modules + "/${mod}")) (builtins.attrNames (builtins.readDir ../../home-manager/modules)));
|
||||||
|
|
||||||
|
home.stateVersion = "22.11";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.wireshark = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.wireshark;
|
||||||
|
};
|
||||||
|
users.groups.wireshark.members = [ "erwin" ];
|
||||||
|
};
|
||||||
|
}
|