Big omen laptop migration
This commit is contained in:
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Define the backup directory
|
||||
BACKUP_DIR=~/Backup
|
||||
|
||||
# Create the backup directory if it doesn't exist
|
||||
if [ ! -d "$BACKUP_DIR" ]; then
|
||||
echo "Creating backup directory at $BACKUP_DIR"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
fi
|
||||
|
||||
# Define the backup file name with a timestamp
|
||||
BACKUP_FILE="$BACKUP_DIR/backup-$(date -d "today" +"%Y%m%d%H%M").tar"
|
||||
|
||||
# Define the directories to be backed up
|
||||
# Note: ~ is expanded by the shell, so it's used directly here.
|
||||
DIRECTORIES_TO_BACKUP=(
|
||||
~/.gnupg
|
||||
~/.ssh
|
||||
~/Documents
|
||||
~/Pictures
|
||||
~/org
|
||||
~/nixos-dotfiles
|
||||
~/susano-nixos
|
||||
~/hetzner-nixos
|
||||
~/.authinfo.gpg
|
||||
)
|
||||
|
||||
# Create the tar archive, excluding specified folders
|
||||
echo "Starting backup..."
|
||||
tar --exclude='.direnv' --exclude='.git' --exclude='node_modules' -cf "$BACKUP_FILE" "${DIRECTORIES_TO_BACKUP[@]}"
|
||||
|
||||
# Check if the tar command was successful
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Backup successful: $BACKUP_FILE"
|
||||
else
|
||||
echo "Backup failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Generated
+931
-5
File diff suppressed because it is too large
Load Diff
@@ -18,14 +18,53 @@
|
||||
url = "github:nix-community/home-manager/release-25.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
unstable-home-manager = {
|
||||
url = "github:nix-community/home-manager/master";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
|
||||
|
||||
sops-nix = {
|
||||
url = "github:Mic92/sops-nix";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
|
||||
###
|
||||
# Applications and other
|
||||
###
|
||||
copyparty.url = "github:9001/copyparty";
|
||||
|
||||
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
||||
|
||||
emacs-overlay.url = "github:nix-community/emacs-overlay/master";
|
||||
|
||||
stylix = {
|
||||
url = "github:nix-community/stylix";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
|
||||
nix-ld = {
|
||||
url = "github:Mic92/nix-ld";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
|
||||
hyprland = {
|
||||
url = "git+https://github.com/hyprwm/Hyprland";
|
||||
inputs.nixpkgs.follows = "unstable";
|
||||
};
|
||||
|
||||
hyprland-plugins = {
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
|
||||
split-monitor-workspaces = {
|
||||
url = "github:Duckonaut/split-monitor-workspaces";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
|
||||
zen-browser.url = "github:0xc000022070/zen-browser-flake";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
@@ -43,9 +82,41 @@
|
||||
./hm-modules
|
||||
];
|
||||
|
||||
upkgs = import inputs.unstable { system = "x86_64-linux"; config.allowUnfree = true; };
|
||||
upkgs = import inputs.unstable {
|
||||
system = "x86_64-linux";
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
pkgs = import inputs.nixpkgs {
|
||||
system = "x86_64-linux";
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
|
||||
mkComputer = configurationNix: extraModules: username: inputs.nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs pkgs nixos-hardware extraHomeModules username; };
|
||||
|
||||
modules = [
|
||||
disko.nixosModules.disko
|
||||
home-manager.nixosModules.home-manager
|
||||
|
||||
configurationNix
|
||||
] ++ extraModules;
|
||||
};
|
||||
|
||||
mkUnstableComputer = configurationNix: extraModules: username: inputs.unstable.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs upkgs nixos-hardware extraHomeModules username; };
|
||||
|
||||
modules = [
|
||||
disko.nixosModules.disko
|
||||
inputs.unstable-home-manager.nixosModules.home-manager
|
||||
|
||||
configurationNix
|
||||
] ++ extraModules;
|
||||
};
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
###
|
||||
# Proxmox Homelab Machine
|
||||
###
|
||||
susano-minimal = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = {inherit inputs outputs extraHomeModules; };
|
||||
modules = [
|
||||
@@ -61,13 +132,19 @@
|
||||
disko.nixosModules.disko
|
||||
home-manager.nixosModules.home-manager
|
||||
sops-nix.nixosModules.sops
|
||||
|
||||
# Applications
|
||||
inputs.copyparty.nixosModules.default
|
||||
inputs.vscode-server.nixosModules.default
|
||||
|
||||
./machines/susano
|
||||
./modules
|
||||
];
|
||||
};
|
||||
|
||||
###
|
||||
# Proxmox Remote Dev Machine
|
||||
###
|
||||
izanagi-minimal =
|
||||
let
|
||||
username = "izanagi";
|
||||
@@ -97,6 +174,32 @@
|
||||
./modules
|
||||
];
|
||||
};
|
||||
|
||||
###
|
||||
# Omen Laptop
|
||||
###
|
||||
fujin-minimal = mkUnstableComputer
|
||||
./machines/fujin/minimal
|
||||
[
|
||||
nixos-hardware.nixosModules.omen-15-en0002np
|
||||
] # Extra modules
|
||||
"fujin";
|
||||
|
||||
fujin = mkUnstableComputer
|
||||
./machines/fujin/main
|
||||
[
|
||||
nixos-hardware.nixosModules.omen-15-en0002np
|
||||
sops-nix.nixosModules.sops
|
||||
|
||||
# Applications
|
||||
inputs.copyparty.nixosModules.default
|
||||
inputs.vscode-server.nixosModules.default
|
||||
inputs.stylix.nixosModules.stylix
|
||||
inputs.nix-ld.nixosModules.nix-ld
|
||||
|
||||
./modules
|
||||
] # Extra modules
|
||||
"fujin";
|
||||
};
|
||||
|
||||
packages.x86_64-linux = {
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./waybar
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,299 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.dov.bar.waybar;
|
||||
color = config.lib.stylix.colors;
|
||||
backgound-color = color.base01;
|
||||
icon-color = color.base0A;
|
||||
in {
|
||||
options.dov.bar.waybar.enable = mkEnableOption "waybar option";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
wlogout
|
||||
];
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
settings = {
|
||||
mainBar = {
|
||||
include = [ "~/.config/waybar/config.json" ];
|
||||
|
||||
layer = "top";
|
||||
position = "top";
|
||||
margin-top = 5;
|
||||
margin-bottom = 5;
|
||||
margin-left = 5;
|
||||
margin-right = 5;
|
||||
height = 15;
|
||||
|
||||
modules-left = [
|
||||
# "custom/launcher"
|
||||
"hyprland/workspaces"
|
||||
"custom/media"
|
||||
"hyprland/window"
|
||||
];
|
||||
|
||||
modules-center = [
|
||||
"clock"
|
||||
];
|
||||
|
||||
modules-right = [
|
||||
"tray"
|
||||
"idle_inhibitor"
|
||||
"hyprland/language"
|
||||
"memory"
|
||||
"cpu"
|
||||
"backlight#value"
|
||||
"pulseaudio"
|
||||
"pulseaudio#microphone"
|
||||
"network"
|
||||
"battery"
|
||||
"custom/power"
|
||||
];
|
||||
|
||||
"clock" = {
|
||||
format = "{:%H:%M, %d, %B, %Y} ";
|
||||
format-alt = "{%R, :%A, %d %B, %Y} ";
|
||||
tooltip-format = "<tt><small>{calendar}</small></tt>";
|
||||
calendar = {
|
||||
mode = "year";
|
||||
mode-mon-col = 3;
|
||||
weeks-pos = "right";
|
||||
on-scroll = 1;
|
||||
on-click-right = "mode";
|
||||
format = {
|
||||
months = "<span color='#${icon-color}'><b>{}</b></span>";
|
||||
days = "<span color='#${icon-color}'><b>{}</b></span>";
|
||||
weeks = "<span color='#${icon-color}'><b>W{}</b></span>";
|
||||
weekdays = "<span color='#${icon-color}'><b>{}</b></span>";
|
||||
today = "<span color='#${icon-color}'><b><u>{}</u></b></span>";
|
||||
};
|
||||
};
|
||||
actions = {
|
||||
on-click-right = "mode";
|
||||
on-click-forward = "tz_up";
|
||||
on-click-backward = "tz_down";
|
||||
on-scroll-up = "shift_up";
|
||||
on-scroll-down = "shift_down";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
style = lib.mkForce ''
|
||||
@keyframes blink-warning {
|
||||
70% {
|
||||
color: white;
|
||||
}
|
||||
|
||||
to {
|
||||
color: white;
|
||||
background-color: orange;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes blink-critical {
|
||||
70% {
|
||||
color: white;
|
||||
}
|
||||
|
||||
to {
|
||||
color: white;
|
||||
background-color: red;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Reset all styles */
|
||||
* {
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
min-height: 0;
|
||||
margin: 1px;
|
||||
padding: 0;
|
||||
color: #${icon-color};
|
||||
}
|
||||
|
||||
|
||||
/* The whole bar */
|
||||
window#waybar {
|
||||
background-color: rgba(0,0,0,0);
|
||||
font-family: Intel One Mono Nerd Font;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* Every modules */
|
||||
#battery,
|
||||
#clock,
|
||||
#backlight,
|
||||
#cpu,
|
||||
#custom-keyboard-layout,
|
||||
#memory,
|
||||
#mode,
|
||||
#custom-weather,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#temperature,
|
||||
#tray,
|
||||
#idle_inhibitor,
|
||||
#window,
|
||||
#workspaces,
|
||||
#custom-media,
|
||||
#language,
|
||||
#custom-power,
|
||||
#custom-PBPbattery {
|
||||
padding:0.25rem 0.75rem;
|
||||
margin: 1px 6px;
|
||||
background-color: #${backgound-color};
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: #${icon-color};
|
||||
}
|
||||
|
||||
#custom-weather {
|
||||
color: #ff4499;
|
||||
}
|
||||
|
||||
#battery {
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#battery.warning {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
#battery.critical {
|
||||
color: red;
|
||||
}
|
||||
|
||||
#battery.warning.discharging {
|
||||
animation-name: blink-warning;
|
||||
animation-duration: 3s;
|
||||
}
|
||||
|
||||
#battery.critical.discharging {
|
||||
animation-name: blink-critical;
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
color: #${icon-color};
|
||||
}
|
||||
|
||||
#cpu.warning {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
#cpu.critical {
|
||||
color: red;
|
||||
}
|
||||
|
||||
#memory {
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
color: #${icon-color};
|
||||
}
|
||||
|
||||
#memory.warning {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
#memory.critical {
|
||||
color: red;
|
||||
animation-name: blink-critical;
|
||||
animation-duration: 2s;
|
||||
padding-left:5px;
|
||||
padding-right:5px;
|
||||
}
|
||||
|
||||
#mode {
|
||||
border-bottom: 3px transparent;
|
||||
color:#ff4499;
|
||||
margin-left: 5px;
|
||||
padding: 7px;
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: #${icon-color};
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
margin-right: 0;
|
||||
border-radius: 20px 0 0 20px;
|
||||
}
|
||||
|
||||
#pulseaudio.microphone {
|
||||
border-left: 0px;
|
||||
border-right: 0px;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
border-radius: 0 20px 20px 0;
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
color: red;
|
||||
}
|
||||
|
||||
#window {
|
||||
font-weight: bold;
|
||||
color: #${icon-color};
|
||||
}
|
||||
|
||||
#custom-media {
|
||||
color: #bb9af7;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
font-size:16px;
|
||||
background-color: #${backgound-color};
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
border-bottom: 3px solid transparent;
|
||||
margin-bottom: 0px;
|
||||
color: #dfdfdf;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
border-bottom: 1px solid #${color.base0B};
|
||||
margin-bottom: 1px;
|
||||
padding-left:0;
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
border-color: #c9545d;
|
||||
color: #c9545d;
|
||||
}
|
||||
|
||||
#custom-power {
|
||||
font-size:18px;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
#custom-launcher {
|
||||
font-size:15px;
|
||||
margin-left:15px;
|
||||
margin-right:10px;
|
||||
}
|
||||
|
||||
#backlight.icon {
|
||||
padding-right:1px;
|
||||
font-size: 13px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
home.file.".config/waybar/config.json".source = ./waybar4.json;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
// Global
|
||||
{
|
||||
// Modules
|
||||
"battery": {
|
||||
"states": {
|
||||
"warning": 30,
|
||||
"critical": 15
|
||||
},
|
||||
"format": "{capacity}% {icon} ",
|
||||
"format-charging": "{capacity}% ",
|
||||
"format-plugged": "{capacity}% ",
|
||||
"format-icons": ["", "", "", "", ""]
|
||||
},
|
||||
|
||||
"custom/PBPbattery": {
|
||||
"exec": "~/.config/waybar/scripts/PBPbattery.sh",
|
||||
"format": "{}",
|
||||
},
|
||||
|
||||
"cpu": {
|
||||
"interval": 5,
|
||||
"format": " {usage}% ({load})", // Icon: microchip
|
||||
"states": {
|
||||
"warning": 70,
|
||||
"critical": 90,
|
||||
},
|
||||
"on-click": "kitty -e 'btm'",
|
||||
},
|
||||
|
||||
"hyprland/language": {
|
||||
"format": " {}",
|
||||
"format-en": "us",
|
||||
"format-ru": "ru",
|
||||
"format-ua": "ua",
|
||||
"keyboard-name": "at-translated-set-2-keyboard"
|
||||
},
|
||||
|
||||
"custom/keyboard-layout": {
|
||||
"exec": "swaymsg -t get_inputs | grep -m1 'xkb_active_layout_name' | cut -d '\"' -f4",
|
||||
// Interval set only as a fallback, as the value is updated by signal
|
||||
"interval": 30,
|
||||
"format": " {}", // Icon: keyboard
|
||||
// Signal sent by Sway key binding (~/.config/sway/key-bindings)
|
||||
"signal": 1, // SIGHUP
|
||||
"tooltip": false,
|
||||
"on-click": "~/.config/waybar/scripts/keyhint.sh",
|
||||
},
|
||||
|
||||
"memory": {
|
||||
"interval": 5,
|
||||
"format": " {}%", // Icon: memory
|
||||
"on-click": "kitty -e 'btm'",
|
||||
"states": {
|
||||
"warning": 70,
|
||||
"critical": 90
|
||||
}
|
||||
},
|
||||
|
||||
"network": {
|
||||
"interval": 5,
|
||||
"format-wifi": " ", // Icon: wifi
|
||||
"format-ethernet": " ", // Icon: ethernet
|
||||
"format-disconnected": "⚠ Disconnected",
|
||||
"tooltip-format": "{ifname}: {ipaddr}",
|
||||
"on-click": "kitty -e 'nmtui'",
|
||||
},
|
||||
"network#vpn": {
|
||||
"interface": "tun0",
|
||||
"format": " ",
|
||||
"format-disconnected": "⚠ Disconnected",
|
||||
"tooltip-format": "{ifname}: {ipaddr}/{cidr}",
|
||||
},
|
||||
|
||||
"hyprland/mode": {
|
||||
"format": "{}",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"hyprland/window": {
|
||||
"format": "{}",
|
||||
"max-length": 120
|
||||
},
|
||||
|
||||
"hyprland/workspaces": {
|
||||
"disable-scroll": true,
|
||||
"disable-markup" : false,
|
||||
"all-outputs": true,
|
||||
"format": " {icon} ",
|
||||
//"format":"{icon}",
|
||||
"format-icons": {
|
||||
"1": "",
|
||||
"2": "",
|
||||
"3": ""
|
||||
}
|
||||
},
|
||||
|
||||
"pulseaudio": {
|
||||
"scroll-step": 1, // %, can be a float
|
||||
"format": "{icon} {volume}%",
|
||||
"format-bluetooth": "{volume}% {icon} {format_source}",
|
||||
"format-bluetooth-muted": " {icon} {format_source}",
|
||||
"format-muted": "",
|
||||
"format-icons": {
|
||||
"headphone": "",
|
||||
"hands-free": "וֹ",
|
||||
"headset": " ",
|
||||
"phone": "",
|
||||
"portable": "",
|
||||
"car": "",
|
||||
"default": [""]
|
||||
},
|
||||
"on-click": "amixer -q sset Master toggle",
|
||||
"on-click-right": "pavucontrol",
|
||||
"on-scroll-up": "amixer -q sset Master 10%-",
|
||||
"on-scroll-down": "amixer -q sset Master 10%+",
|
||||
},
|
||||
|
||||
"pulseaudio#microphone": {
|
||||
"format": "{format_source}",
|
||||
"format-source": " {volume}%",
|
||||
"format-source-muted": " ",
|
||||
"on-click": "pamixer --default-source -t",
|
||||
"on-click-right": "pavucontrol",
|
||||
"on-scroll-up": "pamixer --default-source -i 5",
|
||||
"on-scroll-down": "pamixer --default-source -d 5",
|
||||
"scroll-step": 5
|
||||
},
|
||||
|
||||
// to use the weather module replace <your_location> with your city or town
|
||||
// note: do not use spaces: new york would be newyork
|
||||
"custom/weather": {
|
||||
"exec": "~/.config/waybar/scripts/weather.sh tampa",
|
||||
"return-type": "json",
|
||||
"interval": 600,
|
||||
},
|
||||
|
||||
"tray": {
|
||||
"icon-size": 18,
|
||||
"spacing":10,
|
||||
},
|
||||
|
||||
"backlight#icon": {
|
||||
"format": "{icon}",
|
||||
"format-icons": [""],
|
||||
"on-scroll-down": "brightnessctl -c backlight set 1%-",
|
||||
"on-scroll-up": "brightnessctl -c backlight set +1%"
|
||||
},
|
||||
|
||||
"backlight#value" :{
|
||||
"format": "{percent}%",
|
||||
"on-scroll-down": "brightnessctl -c backlight set 1%-",
|
||||
"on-scroll-up": "brightnessctl -c backlight set +1%"
|
||||
},
|
||||
|
||||
"custom/firefox": {
|
||||
"format": " ",
|
||||
"on-click": "exec firefox",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/terminal": {
|
||||
"format": " ",
|
||||
"on-click": "exec kitty",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/files": {
|
||||
"format": " ",
|
||||
"on-click": "exec nautilus",
|
||||
"tooltip": false
|
||||
},
|
||||
|
||||
"custom/launcher": {
|
||||
"format":" ",
|
||||
"on-click": "exec wofi -c ~/.config/wofi/config -I",
|
||||
"tooltip": false,
|
||||
},
|
||||
|
||||
"custom/media": {
|
||||
"format": "{icon} {}",
|
||||
"return-type": "json",
|
||||
"max-length": 40,
|
||||
"format-icons": {
|
||||
"spotify": "",
|
||||
"default": ""
|
||||
},
|
||||
"escape": true,
|
||||
"exec": "/usr/bin/python3 $HOME/.config/waybar/scripts/mediaplayer.py 2> /dev/null" // Script in resources folder
|
||||
},
|
||||
|
||||
"custom/power": {
|
||||
"format": "",
|
||||
"on-click": "wlogout"
|
||||
},
|
||||
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./zen
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{ inputs, config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.dov.browser.zen;
|
||||
in {
|
||||
options.dov.browser.zen.enable = mkEnableOption "zen config";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
inputs.zen-browser.packages."${system}".default
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -3,5 +3,11 @@
|
||||
{
|
||||
imports = [
|
||||
./shell
|
||||
./window-manager
|
||||
./bar
|
||||
./launcher
|
||||
./random
|
||||
./browser
|
||||
./terminal
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./wofi
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.dov.launcher.wofi;
|
||||
in {
|
||||
options.dov.launcher.wofi.enable = mkEnableOption "wofi configuration";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
home.packages = [ pkgs.wofi ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./kanshi
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
profile LAPTOP_ONLY {
|
||||
output eDP-1 enable
|
||||
}
|
||||
|
||||
profile HOME {
|
||||
output eDP-1 mode 2560x1440 position 480,1440
|
||||
output DP-3 mode 3440x1440 position 0,0
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.dov.kanshi;
|
||||
in {
|
||||
options.dov.kanshi.enable = mkEnableOption "kanshi config";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ kanshi ];
|
||||
|
||||
services.kanshi = {
|
||||
enable = true;
|
||||
settings = [
|
||||
{
|
||||
profile = {
|
||||
name = "default";
|
||||
outputs = [
|
||||
{
|
||||
criteria = "eDP-1";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
profile = {
|
||||
name = "home";
|
||||
outputs = [
|
||||
{
|
||||
criteria = "eDP-1";
|
||||
position = "480,1440";
|
||||
}
|
||||
{
|
||||
criteria = "LG Electronics LG ULTRAWIDE 201NTTQC5617";
|
||||
position = "0,0";
|
||||
mode = "3440x1440";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
{
|
||||
profile = {
|
||||
name = "reserve-home";
|
||||
outputs = [
|
||||
{
|
||||
criteria = "eDP-1";
|
||||
position = "480,1440";
|
||||
}
|
||||
{
|
||||
criteria = "DP-5";
|
||||
position = "0,0";
|
||||
mode = "3440x1440";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./starship
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.dov.shell.addition.starship;
|
||||
in {
|
||||
options.dov.shell.addition.starship.enable = mkEnableOption "starship configuration";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.starship = {
|
||||
enable = true;
|
||||
enableZshIntegration = config.dov.shell.zsh.enable;
|
||||
# TODO for now no bash - no integration
|
||||
#enableBashIntegration = config.dov.shell.bash.enable;
|
||||
|
||||
settings = {
|
||||
nix_shell = {
|
||||
disabled = false;
|
||||
impure_msg = "";
|
||||
symbol = "";
|
||||
format = "[$symbol$state]($style) ";
|
||||
};
|
||||
shlvl = {
|
||||
disabled = false;
|
||||
symbol = "λ ";
|
||||
};
|
||||
haskell.symbol = " ";
|
||||
openstack.disabled = true;
|
||||
gcloud.disabled = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -3,5 +3,6 @@
|
||||
{
|
||||
imports = [
|
||||
./zsh
|
||||
./addition
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.dov.terminal.alacritty;
|
||||
in {
|
||||
options.dov.terminal.alacritty.enable = mkEnableOption "alacritty configuration";
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs = {
|
||||
alacritty = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./alacritty
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./hypr
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,249 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
colors = config.lib.stylix.colors;
|
||||
cfg = config.dov.window-manager.hypr;
|
||||
in {
|
||||
options.dov.window-manager.hypr.enable = mkEnableOption "hypr configuration";
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [
|
||||
swww
|
||||
mako
|
||||
pipewire
|
||||
wireplumber
|
||||
libnotify
|
||||
kitty
|
||||
jq # used in lock to get language
|
||||
wayland-protocols
|
||||
|
||||
#hyprland extensions
|
||||
hyprlock
|
||||
hypridle
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
plugins = [
|
||||
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
|
||||
];
|
||||
|
||||
settings = {
|
||||
monitor = ",highres,auto,1";
|
||||
source = "~/.config/hypr/colors";
|
||||
|
||||
env = [
|
||||
"LIBVA_DRIVER_NAME,nvidia"
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"WLR_NO_HARDWARE_CURSORS,1"
|
||||
];
|
||||
|
||||
#Autostart
|
||||
exec = [
|
||||
# Fix slow startup
|
||||
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
"dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"mako"
|
||||
"polkit-kde-agent"
|
||||
"emacs --fg-daemon"
|
||||
"hypridle"
|
||||
"kanshi"
|
||||
"virsh net-start default"
|
||||
#"thunderbird"
|
||||
#"element-desktop"
|
||||
"keepassxc"
|
||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
] ++ lib.optionals config.dov.bar.waybar.enable [ "waybar" ];
|
||||
|
||||
"$mainMod" = "SUPER";
|
||||
|
||||
bind = [
|
||||
"$mainMod, G, fullscreen,"
|
||||
"$mainMod, t, togglegroup"
|
||||
"$mainMod, v, togglefloating"
|
||||
"$mainMod, s, togglesplit"
|
||||
|
||||
#bind = $mainMod, RETURN, exec, kitty
|
||||
"$mainMod, RETURN, exec, alacritty"
|
||||
"$mainMod, o, exec, emacsclient -c"
|
||||
"SUPER_SHIFT, RETURN, exec, thunar"
|
||||
"SUPER_SHIFT, l, exec, hyprctl switchxkblayout at-translated-set-2-keyboard 0 && hyprlock"
|
||||
|
||||
#bind = $mainMod, M, exit,
|
||||
"SUPER_SHIFT, q, killactive,"
|
||||
|
||||
# Switch Keyboard Layouts
|
||||
"$mainMod, SPACE, exec, hyprctl switchxkblayout teclado-gamer-husky-blizzard next"
|
||||
|
||||
", Print, exec, grim -g \"$(slurp)\" - | wl-copy"
|
||||
"SHIFT, Print, exec, IMG=~/Pictures/$(date +%Y-%m-%d_%H-%m-%s).png && grim -g \"$(slurp)\" $IMG"
|
||||
|
||||
# Functional keybinds
|
||||
",XF86AudioMicMute,exec,pamixer --default-source -t"
|
||||
",XF86MonBrightnessDown,exec,brightnessctl s 20-"
|
||||
",XF86MonBrightnessUp,exec,brightnessctl s 20+"
|
||||
",XF86AudioMute,exec,amixer -q sset Master toggle"
|
||||
",XF86AudioLowerVolume,exec,amixer -q sset Master 5%-"
|
||||
",XF86AudioRaiseVolume,exec,amixer -q sset Master 5%+"
|
||||
",XF86AudioPlay,exec,playerctl play-pause"
|
||||
",XF86AudioPause,exec,playerctl play-pause"
|
||||
|
||||
# to switch between windows in a floating workspace
|
||||
"SUPER,Tab,changegroupactive, f"
|
||||
"SUPER_SHIFT,Tab,changegroupactive, b"
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
"$mainMod, h, movefocus, l"
|
||||
"$mainMod, l, movefocus, r"
|
||||
"$mainMod, k, movefocus, u"
|
||||
"$mainMod, j, movefocus, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mainMod, 1, split-workspace, 1"
|
||||
"$mainMod, 2, split-workspace, 2"
|
||||
"$mainMod, 3, split-workspace, 3"
|
||||
"$mainMod, 4, split-workspace, 4"
|
||||
"$mainMod, 5, split-workspace, 5"
|
||||
"$mainMod, 6, split-workspace, 6"
|
||||
"$mainMod, 7, split-workspace, 7"
|
||||
"$mainMod, 8, split-workspace, 8"
|
||||
"$mainMod, 9, split-workspace, 9"
|
||||
"$mainMod, 0, split-workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mainMod SHIFT, 1, split-movetoworkspace, 1"
|
||||
"$mainMod SHIFT, 2, split-movetoworkspace, 2"
|
||||
"$mainMod SHIFT, 3, split-movetoworkspace, 3"
|
||||
"$mainMod SHIFT, 4, split-movetoworkspace, 4"
|
||||
"$mainMod SHIFT, 5, split-movetoworkspace, 5"
|
||||
"$mainMod SHIFT, 6, split-movetoworkspace, 6"
|
||||
"$mainMod SHIFT, 7, split-movetoworkspace, 7"
|
||||
"$mainMod SHIFT, 8, split-movetoworkspace, 8"
|
||||
"$mainMod SHIFT, 9, split-movetoworkspace, 9"
|
||||
"$mainMod SHIFT, 0, split-movetoworkspace, 10"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"$mainMod, mouse_down, split-workspace, e+1"
|
||||
"$mainMod, mouse_up, split-workspace, e-1"
|
||||
"$mainMod,SPACE, exec, hyprctl switchxkblayout at-translated-set-2-keyboard next"
|
||||
] ++ lib.optionals config.dov.launcher.wofi.enable [
|
||||
"$mainMod, p, exec, wofi --show drun"
|
||||
];
|
||||
|
||||
bindm = [
|
||||
"$mainMod, mouse:272, movewindow"
|
||||
"$mainMod, mouse:273, resizewindow"
|
||||
"ALT, mouse:272, resizewindow"
|
||||
];
|
||||
|
||||
input = {
|
||||
kb_layout = "us,ru,ua";
|
||||
kb_options = "grp:win_space_toggle";
|
||||
|
||||
follow_mouse = 1;
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = false;
|
||||
};
|
||||
|
||||
sensitivity = 0;
|
||||
};
|
||||
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 20;
|
||||
border_size = 2;
|
||||
"col.active_border" = lib.mkForce "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
"col.inactive_border" = lib.mkForce "rgba(595959aa)";
|
||||
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = "yes";
|
||||
|
||||
bezier = "ease,0.4,0.02,0.21,1";
|
||||
|
||||
animation = [
|
||||
"windows, 1, 3.5, ease, slide"
|
||||
"windowsOut, 1, 3.5, ease, slide"
|
||||
"border, 1, 6, default"
|
||||
"fade, 1, 3, ease"
|
||||
"workspaces, 1, 3.5, ease"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = "yes";
|
||||
preserve_split = "yes";
|
||||
};
|
||||
|
||||
master = {
|
||||
new_status = "master";
|
||||
};
|
||||
|
||||
gestures = {
|
||||
workspace_swipe = false;
|
||||
};
|
||||
|
||||
workspace = [
|
||||
#"0, monitor:DP-1"
|
||||
"8, monitor:e-DP-1"
|
||||
"9, monitor:e-DP-1"
|
||||
#"9, on-created-empty:[tiled] thunderbird"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"workspace 9, class:^(.*thunderbird.*)$"
|
||||
"group, class:^(.*thunderbird.*)$"
|
||||
"workspace 9, class:^(.*Element.*)$"
|
||||
"group, class:^(.*Element.*)$"
|
||||
"workspace 8, title:^(.*KeePassXC.*)$"
|
||||
"float, class:^(.*steam.*)$"
|
||||
"noinitialfocus,class:(jetbrains-)(.*),title:^win(.*), initialTitle:win.*, floating:1"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
home.file.".config/hypr/colors".text = ''
|
||||
$background = ${colors.base00}
|
||||
$foreground = ${colors.base05}
|
||||
|
||||
$color0 = ${colors.base00}
|
||||
$color1 = ${colors.base01}
|
||||
$color2 = ${colors.base02}
|
||||
$color3 = ${colors.base03}
|
||||
$color4 = ${colors.base04}
|
||||
$color5 = ${colors.base05}
|
||||
$color6 = ${colors.base06}
|
||||
$color7 = ${colors.base07}
|
||||
$color8 = ${colors.base08}
|
||||
$color9 = ${colors.base09}
|
||||
$color10 = ${colors.base0A}
|
||||
$color11 = ${colors.base0B}
|
||||
$color12 = ${colors.base0C}
|
||||
$color13 = ${colors.base0D}
|
||||
$color14 = ${colors.base0E}
|
||||
$color15 = ${colors.base0F}
|
||||
'';
|
||||
|
||||
xdg.configFile."hypr/hyprlock.conf".source = ./hyprlock.conf;
|
||||
xdg.configFile."hypr/hypridle.conf".source = ./hypridle.conf;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
general {
|
||||
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||
#before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||
#after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 150 # 2.5min.
|
||||
on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
||||
on-resume = brightnessctl -r # monitor backlight restor.
|
||||
}
|
||||
|
||||
# change language to US before locking
|
||||
listener {
|
||||
timeout = 150 # 2.5min.
|
||||
on-timeout = hyprctl switchxkblayout at-translated-set-2-keyboard 0 # switch to us layout
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300 # 5min
|
||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||
}
|
||||
|
||||
# listener {
|
||||
# timeout = 380 # 5.5min
|
||||
# on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
||||
# on-resume = hyprctl dispatch dpms on # screen on when activity is detected after timeout has fired.
|
||||
# }
|
||||
@@ -0,0 +1,65 @@
|
||||
source = ~/.cache/wal/colors-hyprland.conf
|
||||
|
||||
# BACKGROUND
|
||||
background {
|
||||
monitor =
|
||||
path = screenshot
|
||||
blur_passes = 3
|
||||
contrast = 0.8916
|
||||
brightness = 0.8172
|
||||
vibrancy = 0.1696
|
||||
vibrancy_darkness = 0.0
|
||||
}
|
||||
|
||||
# GENERAL
|
||||
general {
|
||||
no_fade_in = false
|
||||
grace = 0
|
||||
disable_loading_bar = true
|
||||
}
|
||||
|
||||
# INPUT FIELD
|
||||
input-field {
|
||||
monitor =
|
||||
size = 250, 60
|
||||
outline_thickness = 2
|
||||
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
outer_color = rgba(0, 0, 0, 0)
|
||||
inner_color = rgba(0, 0, 0, 0.5)
|
||||
font_color = rgb(200, 200, 200)
|
||||
fade_on_empty = false
|
||||
font_family = JetBrains Mono Nerd Font Mono
|
||||
placeholder_text = <i><span foreground="##cdd6f4">Input Password...</span></i>
|
||||
hide_input = false
|
||||
position = 0, -120
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
# TIME
|
||||
label {
|
||||
monitor =
|
||||
text = cmd[update:1000] echo "$(date +"%-I:%M%p")"
|
||||
color = $foreground
|
||||
#color = rgba(255, 255, 255, 0.6)
|
||||
font_size = 120
|
||||
font_family = JetBrains Mono Nerd Font Mono ExtraBold
|
||||
position = 0, -300
|
||||
halign = center
|
||||
valign = top
|
||||
}
|
||||
|
||||
# USER
|
||||
label {
|
||||
monitor =
|
||||
text = Hi there, $USER
|
||||
color = $foreground
|
||||
#color = rgba(255, 255, 255, 0.6)
|
||||
font_size = 25
|
||||
font_family = JetBrains Mono Nerd Font Mono
|
||||
position = 0, -40
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
{ config, lib, pkgs, username, ... }:
|
||||
|
||||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
device = "/dev/nvme1n1";
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
boot = {
|
||||
size = "1M";
|
||||
type = "EF02"; # for grub MBR
|
||||
};
|
||||
root = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "btrfs";
|
||||
extraArgs = [ "-f" ]; # Override existing partition
|
||||
# Subvolumes must set a mountpoint in order to be mounted,
|
||||
# unless their parent is mounted
|
||||
subvolumes = {
|
||||
# Subvolume name is different from mountpoint
|
||||
"/rootfs" = {
|
||||
mountpoint = "/";
|
||||
};
|
||||
# Subvolume name is the same as the mountpoint
|
||||
"/home" = {
|
||||
mountOptions = [ "compress=zstd" ];
|
||||
mountpoint = "/home";
|
||||
};
|
||||
# Sub(sub)volume doesn't need a mountpoint as its parent is mounted
|
||||
"/home/${username}" = { };
|
||||
"/nix" = {
|
||||
mountOptions = [
|
||||
"compress=zstd"
|
||||
"noatime"
|
||||
];
|
||||
mountpoint = "/nix";
|
||||
};
|
||||
};
|
||||
|
||||
mountpoint = "/partition-root";
|
||||
swap = {
|
||||
swapfile = {
|
||||
size = "32G";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
|
||||
boot = {
|
||||
loader.grub = {
|
||||
enable = true;
|
||||
useOSProber = true;
|
||||
};
|
||||
|
||||
initrd = {
|
||||
availableKernelModules =
|
||||
[ "nvme" "xhci_pci" "usb_storage" "sd_mod" "sdhci_pci" ];
|
||||
kernelModules = [ ];
|
||||
};
|
||||
kernelModules = [ "kvm-amd" ];
|
||||
|
||||
# allow perf as user | needed for intellij to run profiler
|
||||
kernel.sysctl."kernel.perf_event_paranoid" = 1;
|
||||
kernel.sysctl."kernel.kptr_restrict" = lib.mkForce 0;
|
||||
};
|
||||
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
|
||||
hardware.nvidia.prime = {
|
||||
amdgpuBusId = lib.mkForce "PCI:7:0:0";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
keys:
|
||||
- &primary age19wvqtn4ju6k4vs8fxr34unl6xx4cv04jw0lx9ps20xlde927zfssgl4qke
|
||||
- &omen age1jggd0cqn7c3ajqphnd0tt7kud3tqdz6uv3mkghhkzdtf4f0xrp2qtuvsks
|
||||
creation_rules:
|
||||
- path_regex: secrets/secrets.yaml$
|
||||
key_groups:
|
||||
- age:
|
||||
- *primary
|
||||
- *omen
|
||||
@@ -0,0 +1,111 @@
|
||||
{ inputs, config, lib, pkgs, username, extraHomeModules, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../minimal.nix
|
||||
../hardware-configuration.nix
|
||||
../disko-config.nix
|
||||
|
||||
./sops.nix
|
||||
];
|
||||
|
||||
users.users.${username} = {
|
||||
description = "NixOS Omen Laptop";
|
||||
hashedPassword =
|
||||
"$6$5xuxfP8HapkkyDa5$qr2wkpibMaNSIiJIPojWC4CO1X31HNJZEfmYfReYrwOSoflf0rMrQk.EZj5uzh/K/NalQMnCiDcmvFBuf9a5p0";
|
||||
packages = with pkgs; [
|
||||
# thunar plugin to manager archives
|
||||
xfce.thunar-archive-plugin
|
||||
];
|
||||
};
|
||||
|
||||
programs = {
|
||||
nix-ld.dev.enable = true;
|
||||
|
||||
light.enable = true;
|
||||
|
||||
nm-applet.enable = true;
|
||||
|
||||
gnupg.agent = {
|
||||
enable = true;
|
||||
enableSSHSupport = true;
|
||||
};
|
||||
};
|
||||
|
||||
###
|
||||
# Thunar configurations
|
||||
###
|
||||
programs.thunar.enable = true;
|
||||
programs.xfconf.enable = true; # needed to save preferences
|
||||
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
||||
services.tumbler.enable = true; # Thumbnail support for images
|
||||
###
|
||||
###
|
||||
|
||||
dov = {
|
||||
development.emacs.enable = true;
|
||||
|
||||
virtualisation.docker.enable = true;
|
||||
};
|
||||
|
||||
###
|
||||
# Home Manger configuration
|
||||
###
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
backupFileExtension = "backup";
|
||||
extraSpecialArgs = { inherit inputs username; };
|
||||
|
||||
users."${username}" = { imports = [ ./home.nix ] ++ extraHomeModules; };
|
||||
};
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
|
||||
|
||||
fonts = {
|
||||
serif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Serif";
|
||||
};
|
||||
|
||||
sansSerif = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans";
|
||||
};
|
||||
|
||||
monospace = {
|
||||
package = pkgs.dejavu_fonts;
|
||||
name = "DejaVu Sans Mono";
|
||||
};
|
||||
|
||||
emoji = {
|
||||
package = pkgs.noto-fonts-emoji;
|
||||
name = "Noto Color Emoji";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs;
|
||||
[
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-emoji
|
||||
liberation_ttf
|
||||
fira-code
|
||||
fira
|
||||
fira-code-symbols
|
||||
mplus-outline-fonts.githubRelease
|
||||
dina-font
|
||||
proggyfonts
|
||||
emacs-all-the-icons-fonts
|
||||
emacsPackages.all-the-icons
|
||||
font-awesome_5
|
||||
source-code-pro
|
||||
] ++ builtins.filter lib.attrsets.isDerivation
|
||||
(builtins.attrValues pkgs.nerd-fonts);
|
||||
|
||||
# DO NOT CHANGE AT ANY POINT!
|
||||
system.stateVersion = "25.11";
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
{ config, lib, pkgs, username, ... }:
|
||||
|
||||
{
|
||||
home = {
|
||||
stateVersion = "25.11";
|
||||
username = username;
|
||||
homeDirectory = "/home/${username}";
|
||||
};
|
||||
|
||||
dov = {
|
||||
shell = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
ll = "eza -al";
|
||||
sc = "source $HOME/.zshrc";
|
||||
psax = "ps ax | grep";
|
||||
cp = "rsync -ah --progress";
|
||||
};
|
||||
};
|
||||
|
||||
addition.starship.enable = true;
|
||||
};
|
||||
|
||||
browser.zen.enable = true;
|
||||
|
||||
#window-manager.hypr.enable = true;
|
||||
|
||||
bar.waybar.enable = true;
|
||||
|
||||
launcher.wofi.enable = true;
|
||||
|
||||
kanshi.enable = true;
|
||||
|
||||
terminal.alacritty.enable = true;
|
||||
};
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
userName = "Alexander";
|
||||
userEmail = "alexander0derevianko@gmail.com";
|
||||
|
||||
extraConfig = {
|
||||
safe = {
|
||||
directory = ["/home/${username}/nixos-dotfiles" "/home/${username}/.cache/nix"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
eza
|
||||
|
||||
# if you enable gtk theames
|
||||
# this is needed to fix "error: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name ca.desrt.dconf was not provided by any .service files"
|
||||
dconf
|
||||
|
||||
# Video player
|
||||
vlc
|
||||
|
||||
# social
|
||||
telegram-desktop
|
||||
thunderbird-latest
|
||||
element-desktop
|
||||
#teams-for-linux
|
||||
#webcord
|
||||
discord
|
||||
|
||||
# development
|
||||
jetbrains.idea-ultimate
|
||||
jetbrains.webstorm
|
||||
#jetbrains.pycharm-community-src
|
||||
direnv
|
||||
semgrep
|
||||
devpod
|
||||
tmux
|
||||
bottles
|
||||
|
||||
#torrent
|
||||
qbittorrent
|
||||
|
||||
#kdePackages.kate
|
||||
kdePackages.ark
|
||||
keepassxc
|
||||
#virt-manager
|
||||
#vial #keyboard configurator
|
||||
#qmk
|
||||
|
||||
#libreoffice
|
||||
grim
|
||||
slurp
|
||||
wl-clipboard
|
||||
#cloudflared
|
||||
kdePackages.okular #pdf tool
|
||||
#nextcloud-client
|
||||
|
||||
#music
|
||||
#mpd
|
||||
#mpv
|
||||
#mpc-cli
|
||||
];
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
autoEnable = true;
|
||||
targets = {
|
||||
kde.enable = false;
|
||||
};
|
||||
};
|
||||
|
||||
# blutooth applet
|
||||
services.blueman-applet.enable = true;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
omen-password: ENC[AES256_GCM,data:91HK7H+HRX7LMGaIt5dCzrjAlpLj1tx0p9uhvq5P/LBpuaHmRk1n2nb63wdqkOlkZY15Fe+VE4YF8tbX6XelfeFX9xd347/96A==,iv:j5QmvKK5BQxnwO2Z2cCd+skxK4dH7qIHOH7sX0q4VYs=,tag:RyTMZNMfCAmgfki9xYv61w==,type:str]
|
||||
sops:
|
||||
kms: []
|
||||
gcp_kms: []
|
||||
azure_kv: []
|
||||
hc_vault: []
|
||||
age:
|
||||
- recipient: age19wvqtn4ju6k4vs8fxr34unl6xx4cv04jw0lx9ps20xlde927zfssgl4qke
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0LzBjYnZBbWZicGN1YlFK
|
||||
bjR0aHkvL3N0RXpLcXFXbVpNY1ovV2xBU1FJCkFBZ1JVbk9ROEw5a2pIVVdabmla
|
||||
REtLRUlHSjFUVVFET3orMkhaKzQ4YVEKLS0tIERXaTJzRWMyUWcwb3NUREszbG5j
|
||||
R2dBRU1oY1RVQnQzSFREWW8rbmszU0EKliqft7wFfJT95O4akHvLx/dLGVVLkqlG
|
||||
y0ClO2nT3FiA8Ajyrdz87pPsBiRNyIlNeER/FhY2IMMKcBP3fE/6dA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
- recipient: age1jggd0cqn7c3ajqphnd0tt7kud3tqdz6uv3mkghhkzdtf4f0xrp2qtuvsks
|
||||
enc: |
|
||||
-----BEGIN AGE ENCRYPTED FILE-----
|
||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjQy9GRURacHhOM0h1bmFF
|
||||
TXoyWGdabEYxYjFHaWdTRE9TWmtjdHZDZkNjCmtQZ29xenRJWGhUWmxtVTdZVGY1
|
||||
VXFYbjZEVFlxQjRueHE2QytobkU0TGMKLS0tIGNxcHplS3k5WjMzdGI0YzljQ0FL
|
||||
U0hyYmh6WVRoZU9BbXFCc3NCdXQ0VXMKnlqD0FWix3qBQN5VpIaY0EG9VELS25qI
|
||||
yzygv1MENSA+FMQnRhNfk/lokvLaIJVQqZATxUBZF0aPmzCDisV7RQ==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-01-03T18:26:59Z"
|
||||
mac: ENC[AES256_GCM,data:o/FchUUVE+iNrlirwcHBDspkxEAd/Udy15Fkj5aF8en1CfQfLzl94JTjPDbvzRIRxb6ToBMje1KMUew1rYP76o3MJfI76UfgsrJFdaBLL1ukxYOk7ZssFb/uas56QR+wabOO3QdNPqPVhqWMTE17+JqFLxuANJes8S2MvUfD6gY=,iv:82vLA5ywDQqN269Xm9RH8rblXU0qeA2cI+NmXlRXa2I=,tag:NsJGmnwkjLd4ztZT1TzC9g==,type:str]
|
||||
pgp: []
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.9.1
|
||||
@@ -0,0 +1,12 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
sops = {
|
||||
defaultSopsFile = ./secrets/secrets.yaml;
|
||||
age = {
|
||||
sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||
keyFile = "/var/lib/sops-nix/keys.txt";
|
||||
generateKey = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{ inputs, config, lib, pkgs, username, extraHomeModules, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
../../minimal.nix
|
||||
../hardware-configuration.nix
|
||||
../disko-config.nix
|
||||
|
||||
];
|
||||
|
||||
users.users.${username} = {
|
||||
description = "NixOS Omen Laptop";
|
||||
hashedPassword =
|
||||
"$6$5xuxfP8HapkkyDa5$qr2wkpibMaNSIiJIPojWC4CO1X31HNJZEfmYfReYrwOSoflf0rMrQk.EZj5uzh/K/NalQMnCiDcmvFBuf9a5p0";
|
||||
packages = with pkgs; [ ];
|
||||
};
|
||||
|
||||
###
|
||||
# Home Manger configuration
|
||||
###
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
backupFileExtension = "backup";
|
||||
extraSpecialArgs = { inherit inputs username; };
|
||||
|
||||
users."${username}" = { imports = [ ./home.nix ] ++ extraHomeModules; };
|
||||
};
|
||||
|
||||
# DO NOT CHANGE AT ANY POINT!
|
||||
system.stateVersion = "25.11";
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
{ config, lib, pkgs, username, ... }:
|
||||
|
||||
{
|
||||
home = {
|
||||
stateVersion = "25.11";
|
||||
username = username;
|
||||
homeDirectory = "/home/${username}";
|
||||
};
|
||||
|
||||
dov = {
|
||||
shell = {
|
||||
zsh = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
ll = "eza -al";
|
||||
sc = "source $HOME/.zshrc";
|
||||
psax = "ps ax | grep";
|
||||
cp = "rsync -ah --progress";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
home.packages = with pkgs; [
|
||||
eza
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{ inputs, config, lib, pkgs, username, ... }:
|
||||
|
||||
let flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
|
||||
in {
|
||||
|
||||
users.mutableUsers = false;
|
||||
|
||||
users.users.${username} = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "networkmanager" "wheel" ];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBcGhVpjmWEw1GEw0y/ysJPa2v3+u/Rt/iES/Se2huH2 alexander0derevianko@gmail.com"
|
||||
];
|
||||
|
||||
shell = pkgs.zsh;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
vim
|
||||
wget
|
||||
ripgrep
|
||||
];
|
||||
|
||||
programs = {
|
||||
zsh.enable = true;
|
||||
};
|
||||
|
||||
services.openssh = {
|
||||
enable = true;
|
||||
settings = {
|
||||
# Opinionated: forbid root login through SSH.
|
||||
PermitRootLogin = "no";
|
||||
# Opinionated: use keys only.
|
||||
# Remove if you want to SSH using passwords
|
||||
PasswordAuthentication = false;
|
||||
};
|
||||
};
|
||||
|
||||
nixpkgs = {
|
||||
# You can add overlays here
|
||||
overlays = [ ];
|
||||
# Configure your nixpkgs instance
|
||||
config = {
|
||||
# Disable if you don't want unfree packages
|
||||
allowUnfree = true;
|
||||
};
|
||||
};
|
||||
|
||||
nix = {
|
||||
settings = {
|
||||
# Enable flakes and new 'nix' command
|
||||
experimental-features = "nix-command flakes";
|
||||
# Opinionated: disable global registry
|
||||
flake-registry = "";
|
||||
|
||||
# Allow user to reubild nixos without sudo
|
||||
trusted-users = [ "root" username ];
|
||||
};
|
||||
# Opinionated: disable channels
|
||||
channel.enable = false;
|
||||
|
||||
# Opinionated: make flake registry and nix path match flake inputs
|
||||
registry = lib.mkDefault (lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs);
|
||||
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
||||
};
|
||||
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.useOSProber = true;
|
||||
|
||||
time.timeZone = "Europe/Warsaw";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
|
||||
extraLocaleSettings = {
|
||||
LC_ADDRESS = "en_GB.UTF-8";
|
||||
LC_IDENTIFICATION = "en_GB.UTF-8";
|
||||
LC_MEASUREMENT = "en_GB.UTF-8";
|
||||
LC_MONETARY = "en_GB.UTF-8";
|
||||
LC_NAME = "en_GB.UTF-8";
|
||||
LC_NUMERIC = "en_GB.UTF-8";
|
||||
LC_PAPER = "en_GB.UTF-8";
|
||||
LC_TELEPHONE = "en_GB.UTF-8";
|
||||
LC_TIME = "en_GB.UTF-8";
|
||||
};
|
||||
};
|
||||
|
||||
security.rtkit.enable = true;
|
||||
}
|
||||
@@ -132,7 +132,6 @@ in {
|
||||
###
|
||||
# My Services
|
||||
###
|
||||
|
||||
dov = {
|
||||
# Reverse Proxy
|
||||
reverse-proxy = {
|
||||
|
||||
@@ -10,5 +10,6 @@
|
||||
./searxng
|
||||
./auth
|
||||
./development
|
||||
./window-manager
|
||||
];
|
||||
}
|
||||
|
||||
@@ -3,5 +3,6 @@
|
||||
{
|
||||
imports = [
|
||||
./nix-vscode-server
|
||||
./emacs
|
||||
];
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
{ inputs, config, lib, pkgs, username, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.dov.development.emacs;
|
||||
in {
|
||||
|
||||
options.dov.development.emacs = { enable = mkEnableOption "emacs config"; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
nixpkgs.overlays = [
|
||||
inputs.emacs-overlay.overlay
|
||||
];
|
||||
|
||||
users.users."${username}" = {
|
||||
|
||||
packages = with pkgs; [
|
||||
## Emacs itself
|
||||
binutils # native-comp needs 'as', provided by this
|
||||
# 28.2 + native-comp
|
||||
((emacsPackagesFor emacs-unstable).emacsWithPackages (epkgs: [
|
||||
epkgs.vterm
|
||||
epkgs.treesit-grammars.with-all-grammars
|
||||
epkgs.mu4e
|
||||
epkgs.org-mime
|
||||
|
||||
]))
|
||||
|
||||
## Doom dependencies
|
||||
git
|
||||
(ripgrep.override {withPCRE2 = true;})
|
||||
gnutls # for TLS connectivity
|
||||
|
||||
## Optional dependencies
|
||||
fd # faster projectile indexing
|
||||
imagemagick # for image-dired
|
||||
pinentry-emacs # in-emacs gnupg prompts
|
||||
zstd # for undo-fu-session/undo-tree compression
|
||||
|
||||
## Module dependencies
|
||||
# :checkers spell
|
||||
(aspellWithDicts (ds: with ds; [ en en-computers en-science ]))
|
||||
# :tools editorconfig
|
||||
editorconfig-core-c # per-project style config
|
||||
# :tools lookup & :lang org +roam
|
||||
sqlite
|
||||
# :lang latex & :lang org (latex previews)
|
||||
texlive.combined.scheme-medium
|
||||
# :lang nix
|
||||
nixfmt-classic
|
||||
#nixd
|
||||
nil
|
||||
# :lang lisp
|
||||
sbcl
|
||||
# :lang sh
|
||||
shellcheck
|
||||
# :lang typescript
|
||||
#javascript-typescript-langserver # deprecated
|
||||
deno
|
||||
# :lang go
|
||||
# go
|
||||
# gopls
|
||||
# gotests
|
||||
# gomodifytags
|
||||
# gore
|
||||
# gotools
|
||||
# :lang ruby
|
||||
ruby
|
||||
rbenv
|
||||
rubocop
|
||||
|
||||
isync # mu4e related
|
||||
];
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
@@ -9,7 +9,7 @@ in {
|
||||
enable = mkEnableOption "docker config";
|
||||
username = mkOption {
|
||||
default = "susano";
|
||||
type = types.string;
|
||||
type = types.str;
|
||||
};
|
||||
isBtrfsStorageDriver = mkOption {
|
||||
default = true;
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./hypr
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,282 @@
|
||||
{ inputs, config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
colors = config.lib.stylix.colors;
|
||||
cfg = config.dov.window-manager.hypr;
|
||||
in {
|
||||
options.dov.window-manager.hypr.enable = mkEnableOption "hypr configuration";
|
||||
config = mkIf cfg.enable {
|
||||
programs.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
environment = {
|
||||
systemPackages = with pkgs; [
|
||||
wlr-randr
|
||||
wdisplays
|
||||
];
|
||||
|
||||
sessionVariables = {
|
||||
WLR_NO_HARWARE_CURSORS = "1";
|
||||
NIXOS_OZONE_WL = "1";
|
||||
};
|
||||
};
|
||||
|
||||
hardware = {
|
||||
graphics.enable = true;
|
||||
nvidia.modesetting.enable = true;
|
||||
};
|
||||
|
||||
# For screen sharing
|
||||
services.pipewire.enable = true;
|
||||
xdg = {
|
||||
portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [
|
||||
xdg-desktop-portal-wlr
|
||||
xdg-desktop-portal-gtk
|
||||
xdg-desktop-portal-gnome
|
||||
xdg-desktop-portal
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.config = {
|
||||
home.packages = with pkgs; [
|
||||
swww
|
||||
mako
|
||||
pipewire
|
||||
wireplumber
|
||||
libnotify
|
||||
kitty
|
||||
jq # used in lock to get language
|
||||
wayland-protocols
|
||||
|
||||
#hyprland extensions
|
||||
hyprlock
|
||||
hypridle
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
xwayland.enable = true;
|
||||
package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
||||
plugins = [
|
||||
inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces
|
||||
];
|
||||
|
||||
settings = {
|
||||
monitor = ",highres,auto,1";
|
||||
source = "~/.config/hypr/colors";
|
||||
|
||||
env = [
|
||||
"LIBVA_DRIVER_NAME,nvidia"
|
||||
"XDG_SESSION_TYPE,wayland"
|
||||
"WLR_NO_HARDWARE_CURSORS,1"
|
||||
];
|
||||
|
||||
#Autostart
|
||||
exec = [
|
||||
# Fix slow startup
|
||||
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
"dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"mako"
|
||||
"polkit-kde-agent"
|
||||
"emacs --fg-daemon"
|
||||
"hypridle"
|
||||
"kanshi"
|
||||
"virsh net-start default"
|
||||
#"thunderbird"
|
||||
#"element-desktop"
|
||||
"keepassxc"
|
||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||
] ++ lib.optionals config.home-manager.config.dov.bar.waybar.enable [ "waybar" ];
|
||||
|
||||
"$mainMod" = "SUPER";
|
||||
|
||||
bind = [
|
||||
"$mainMod, G, fullscreen,"
|
||||
"$mainMod, t, togglegroup"
|
||||
"$mainMod, v, togglefloating"
|
||||
"$mainMod, s, togglesplit"
|
||||
|
||||
#bind = $mainMod, RETURN, exec, kitty
|
||||
"$mainMod, RETURN, exec, alacritty"
|
||||
"$mainMod, o, exec, emacsclient -c"
|
||||
"SUPER_SHIFT, RETURN, exec, thunar"
|
||||
"SUPER_SHIFT, l, exec, hyprctl switchxkblayout at-translated-set-2-keyboard 0 && hyprlock"
|
||||
|
||||
#bind = $mainMod, M, exit,
|
||||
"SUPER_SHIFT, q, killactive,"
|
||||
|
||||
# Switch Keyboard Layouts
|
||||
"$mainMod, SPACE, exec, hyprctl switchxkblayout teclado-gamer-husky-blizzard next"
|
||||
|
||||
'', Print, exec, grim -g "$(slurp)" - | wl-copy''
|
||||
''
|
||||
SHIFT, Print, exec, IMG=~/Pictures/$(date +%Y-%m-%d_%H-%m-%s).png && grim -g "$(slurp)" $IMG''
|
||||
|
||||
# Functional keybinds
|
||||
",XF86AudioMicMute,exec,pamixer --default-source -t"
|
||||
",XF86MonBrightnessDown,exec,brightnessctl s 20-"
|
||||
",XF86MonBrightnessUp,exec,brightnessctl s 20+"
|
||||
",XF86AudioMute,exec,amixer -q sset Master toggle"
|
||||
",XF86AudioLowerVolume,exec,amixer -q sset Master 5%-"
|
||||
",XF86AudioRaiseVolume,exec,amixer -q sset Master 5%+"
|
||||
",XF86AudioPlay,exec,playerctl play-pause"
|
||||
",XF86AudioPause,exec,playerctl play-pause"
|
||||
|
||||
# to switch between windows in a floating workspace
|
||||
"SUPER,Tab,changegroupactive, f"
|
||||
"SUPER_SHIFT,Tab,changegroupactive, b"
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
"$mainMod, h, movefocus, l"
|
||||
"$mainMod, l, movefocus, r"
|
||||
"$mainMod, k, movefocus, u"
|
||||
"$mainMod, j, movefocus, d"
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
"$mainMod, 1, split-workspace, 1"
|
||||
"$mainMod, 2, split-workspace, 2"
|
||||
"$mainMod, 3, split-workspace, 3"
|
||||
"$mainMod, 4, split-workspace, 4"
|
||||
"$mainMod, 5, split-workspace, 5"
|
||||
"$mainMod, 6, split-workspace, 6"
|
||||
"$mainMod, 7, split-workspace, 7"
|
||||
"$mainMod, 8, split-workspace, 8"
|
||||
"$mainMod, 9, split-workspace, 9"
|
||||
"$mainMod, 0, split-workspace, 10"
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
"$mainMod SHIFT, 1, split-movetoworkspace, 1"
|
||||
"$mainMod SHIFT, 2, split-movetoworkspace, 2"
|
||||
"$mainMod SHIFT, 3, split-movetoworkspace, 3"
|
||||
"$mainMod SHIFT, 4, split-movetoworkspace, 4"
|
||||
"$mainMod SHIFT, 5, split-movetoworkspace, 5"
|
||||
"$mainMod SHIFT, 6, split-movetoworkspace, 6"
|
||||
"$mainMod SHIFT, 7, split-movetoworkspace, 7"
|
||||
"$mainMod SHIFT, 8, split-movetoworkspace, 8"
|
||||
"$mainMod SHIFT, 9, split-movetoworkspace, 9"
|
||||
"$mainMod SHIFT, 0, split-movetoworkspace, 10"
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
"$mainMod, mouse_down, split-workspace, e+1"
|
||||
"$mainMod, mouse_up, split-workspace, e-1"
|
||||
"$mainMod,SPACE, exec, hyprctl switchxkblayout at-translated-set-2-keyboard next"
|
||||
] ++ lib.optionals dov.launcher.wofi.enable
|
||||
[ "$mainMod, p, exec, wofi --show drun" ];
|
||||
|
||||
bindm = [
|
||||
"$mainMod, mouse:272, movewindow"
|
||||
"$mainMod, mouse:273, resizewindow"
|
||||
"ALT, mouse:272, resizewindow"
|
||||
];
|
||||
|
||||
input = {
|
||||
kb_layout = "us,ru,ua";
|
||||
kb_options = "grp:win_space_toggle";
|
||||
|
||||
follow_mouse = 1;
|
||||
|
||||
touchpad = { natural_scroll = false; };
|
||||
|
||||
sensitivity = 0;
|
||||
};
|
||||
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
gaps_out = 20;
|
||||
border_size = 2;
|
||||
"col.active_border" =
|
||||
lib.mkForce "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
"col.inactive_border" = lib.mkForce "rgba(595959aa)";
|
||||
|
||||
layout = "dwindle";
|
||||
};
|
||||
|
||||
decoration = {
|
||||
rounding = 10;
|
||||
|
||||
shadow = {
|
||||
enabled = true;
|
||||
range = 4;
|
||||
render_power = 3;
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = "yes";
|
||||
|
||||
bezier = "ease,0.4,0.02,0.21,1";
|
||||
|
||||
animation = [
|
||||
"windows, 1, 3.5, ease, slide"
|
||||
"windowsOut, 1, 3.5, ease, slide"
|
||||
"border, 1, 6, default"
|
||||
"fade, 1, 3, ease"
|
||||
"workspaces, 1, 3.5, ease"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
pseudotile = "yes";
|
||||
preserve_split = "yes";
|
||||
};
|
||||
|
||||
master = { new_status = "master"; };
|
||||
|
||||
gestures = { workspace_swipe = false; };
|
||||
|
||||
workspace = [
|
||||
#"0, monitor:DP-1"
|
||||
"8, monitor:e-DP-1"
|
||||
"9, monitor:e-DP-1"
|
||||
#"9, on-created-empty:[tiled] thunderbird"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"workspace 9, class:^(.*thunderbird.*)$"
|
||||
"group, class:^(.*thunderbird.*)$"
|
||||
"workspace 9, class:^(.*Element.*)$"
|
||||
"group, class:^(.*Element.*)$"
|
||||
"workspace 8, title:^(.*KeePassXC.*)$"
|
||||
"float, class:^(.*steam.*)$"
|
||||
"noinitialfocus,class:(jetbrains-)(.*),title:^win(.*), initialTitle:win.*, floating:1"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
home.file.".config/hypr/colors".text = ''
|
||||
$background = ${colors.base00}
|
||||
$foreground = ${colors.base05}
|
||||
|
||||
$color0 = ${colors.base00}
|
||||
$color1 = ${colors.base01}
|
||||
$color2 = ${colors.base02}
|
||||
$color3 = ${colors.base03}
|
||||
$color4 = ${colors.base04}
|
||||
$color5 = ${colors.base05}
|
||||
$color6 = ${colors.base06}
|
||||
$color7 = ${colors.base07}
|
||||
$color8 = ${colors.base08}
|
||||
$color9 = ${colors.base09}
|
||||
$color10 = ${colors.base0A}
|
||||
$color11 = ${colors.base0B}
|
||||
$color12 = ${colors.base0C}
|
||||
$color13 = ${colors.base0D}
|
||||
$color14 = ${colors.base0E}
|
||||
$color15 = ${colors.base0F}
|
||||
'';
|
||||
|
||||
xdg.configFile."hypr/hyprlock.conf".source = ./hyprlock.conf;
|
||||
xdg.configFile."hypr/hypridle.conf".source = ./hypridle.conf;
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user