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";
|
url = "github:nix-community/home-manager/release-25.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
unstable-home-manager = {
|
||||||
|
url = "github:nix-community/home-manager/master";
|
||||||
|
inputs.nixpkgs.follows = "unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
sops-nix = {
|
sops-nix = {
|
||||||
url = "github:Mic92/sops-nix";
|
url = "github:Mic92/sops-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
###
|
||||||
|
# Applications and other
|
||||||
|
###
|
||||||
copyparty.url = "github:9001/copyparty";
|
copyparty.url = "github:9001/copyparty";
|
||||||
|
|
||||||
vscode-server.url = "github:nix-community/nixos-vscode-server";
|
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 = {
|
outputs = {
|
||||||
@@ -43,9 +82,41 @@
|
|||||||
./hm-modules
|
./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 {
|
in {
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
|
###
|
||||||
|
# Proxmox Homelab Machine
|
||||||
|
###
|
||||||
susano-minimal = nixpkgs.lib.nixosSystem {
|
susano-minimal = nixpkgs.lib.nixosSystem {
|
||||||
specialArgs = {inherit inputs outputs extraHomeModules; };
|
specialArgs = {inherit inputs outputs extraHomeModules; };
|
||||||
modules = [
|
modules = [
|
||||||
@@ -61,13 +132,19 @@
|
|||||||
disko.nixosModules.disko
|
disko.nixosModules.disko
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
sops-nix.nixosModules.sops
|
sops-nix.nixosModules.sops
|
||||||
|
|
||||||
|
# Applications
|
||||||
inputs.copyparty.nixosModules.default
|
inputs.copyparty.nixosModules.default
|
||||||
|
inputs.vscode-server.nixosModules.default
|
||||||
|
|
||||||
./machines/susano
|
./machines/susano
|
||||||
./modules
|
./modules
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
###
|
||||||
|
# Proxmox Remote Dev Machine
|
||||||
|
###
|
||||||
izanagi-minimal =
|
izanagi-minimal =
|
||||||
let
|
let
|
||||||
username = "izanagi";
|
username = "izanagi";
|
||||||
@@ -97,6 +174,32 @@
|
|||||||
./modules
|
./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 = {
|
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 = [
|
imports = [
|
||||||
./shell
|
./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 = [
|
imports = [
|
||||||
./zsh
|
./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
|
# My Services
|
||||||
###
|
###
|
||||||
|
|
||||||
dov = {
|
dov = {
|
||||||
# Reverse Proxy
|
# Reverse Proxy
|
||||||
reverse-proxy = {
|
reverse-proxy = {
|
||||||
|
|||||||
@@ -10,5 +10,6 @@
|
|||||||
./searxng
|
./searxng
|
||||||
./auth
|
./auth
|
||||||
./development
|
./development
|
||||||
|
./window-manager
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,5 +3,6 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./nix-vscode-server
|
./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";
|
enable = mkEnableOption "docker config";
|
||||||
username = mkOption {
|
username = mkOption {
|
||||||
default = "susano";
|
default = "susano";
|
||||||
type = types.string;
|
type = types.str;
|
||||||
};
|
};
|
||||||
isBtrfsStorageDriver = mkOption {
|
isBtrfsStorageDriver = mkOption {
|
||||||
default = true;
|
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