update: fixed issues and update flake inputs
This commit is contained in:
parent
4b6183f0ec
commit
b3c5ad2880
80 changed files with 3307 additions and 2059 deletions
|
|
@ -8,18 +8,7 @@ in
|
|||
{
|
||||
systemConf = {
|
||||
inherit hostname username;
|
||||
face = ../../../home/config/.face;
|
||||
domain = "net.dn";
|
||||
hyprland = {
|
||||
enable = true;
|
||||
monitors = [
|
||||
{
|
||||
desc = "LG Display 0x0665";
|
||||
output = "eDP-1";
|
||||
props = "preferred, 0x0, 1.25";
|
||||
}
|
||||
];
|
||||
};
|
||||
niri.enable = true;
|
||||
};
|
||||
|
||||
imports = [
|
||||
|
|
|
|||
|
|
@ -5,78 +5,88 @@
|
|||
}:
|
||||
let
|
||||
inherit (lib) mkForce;
|
||||
inherit (config.networking) hostName;
|
||||
inherit (config.systemConf) username;
|
||||
in
|
||||
{
|
||||
home-manager = {
|
||||
users."${username}" = {
|
||||
home.sessionVariables = {
|
||||
BROWSER = mkForce "chromium";
|
||||
};
|
||||
home-manager.users."${username}" = {
|
||||
home.sessionVariables = {
|
||||
BROWSER = mkForce "chromium";
|
||||
};
|
||||
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
# Bitwarden
|
||||
services.kanshi.settings = [
|
||||
{
|
||||
profile.name = hostName;
|
||||
profile.outputs = [
|
||||
{
|
||||
id = "nngceckbapebfimnlniiiahkandclblb";
|
||||
}
|
||||
# Vimium
|
||||
{
|
||||
id = "dbepggeogbaibhgnhhndojpepiihcmeb";
|
||||
}
|
||||
# Dark Reader
|
||||
{
|
||||
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
|
||||
}
|
||||
# Vertical Tabs
|
||||
{
|
||||
id = "efobhjmgoddhfdhaflheioeagkcknoji";
|
||||
criteria = "LG Display 0x0665";
|
||||
position = "0,0";
|
||||
scale = 1.25;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
imports = [
|
||||
../../../../home/presets/basic.nix
|
||||
(import ../../../../home/user/bitwarden.nix {
|
||||
email = "danny@net.dn";
|
||||
baseUrl = "https://bitwarden.net.dn";
|
||||
})
|
||||
programs.hyprlock.monitors = [
|
||||
"LG Display"
|
||||
];
|
||||
|
||||
# waybar
|
||||
(import ../../../../home/user/waybar.nix {
|
||||
settings = [
|
||||
{
|
||||
output = "eDP-1";
|
||||
height = 46;
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"custom/wallRand"
|
||||
"custom/wireguard"
|
||||
"custom/recording"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"pulseaudio"
|
||||
"battery"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
];
|
||||
})
|
||||
|
||||
# Git
|
||||
(import ../../../../home/user/git.nix {
|
||||
inherit username;
|
||||
email = "danny10132024@gmail.com";
|
||||
})
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
extensions = [
|
||||
# Bitwarden
|
||||
{
|
||||
id = "nngceckbapebfimnlniiiahkandclblb";
|
||||
}
|
||||
# Vimium
|
||||
{
|
||||
id = "dbepggeogbaibhgnhhndojpepiihcmeb";
|
||||
}
|
||||
# Dark Reader
|
||||
{
|
||||
id = "eimadpbcbfnmbkopoojfekhnkhdbieeh";
|
||||
}
|
||||
# Vertical Tabs
|
||||
{
|
||||
id = "efobhjmgoddhfdhaflheioeagkcknoji";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
imports = [
|
||||
../../../../home/presets/basic.nix
|
||||
(import ../../../../home/user/bitwarden.nix {
|
||||
email = "danny@net.dn";
|
||||
baseUrl = "https://bitwarden.net.dn";
|
||||
})
|
||||
|
||||
# waybar
|
||||
(import ../../../../home/user/waybar.nix {
|
||||
settings = [
|
||||
{
|
||||
output = "eDP-1";
|
||||
height = 46;
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"custom/wallRand"
|
||||
"custom/wireguard"
|
||||
"custom/recording"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"pulseaudio"
|
||||
"battery"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
wireguard:
|
||||
wg0.conf: ENC[AES256_GCM,data:drqs+CkZVZH4K87jWZLy33NuqPeqLkyTp6mDoxcOsEYGaIR38pommv4TSynAOvrUC3dCw9O+qLHEiSwlJGoZOQKFzHxUefKrCtkRMCE3ytDKFmJbLoKT/GPxnOOenIm8JxKX6nsLaqCk36ODXzTA8iU8ICN2zqoCiodjx72Ge2KckQzSak04v28B6viuzfl8zipD1Fetm72sOBTX0I0WwoziDBBL77x1hX/8POob3ISrTejhik18dxAPLB9H3iVl1aOHhszsrAYB26IfujY/FxRqIrn8v+H2aFen3oowRjd/wTPtc/rLZj/7n6/Sl3NDzOE+jIYYG7yym7lkUM9Z,iv:oS01iUSG0ufUzIsfPD/jF3/TPEDDBp+CnnLQnyze8dM=,tag:mtmY3OVz3k7eu5Lxe14KLg==,type:str]
|
||||
wg0.conf: ENC[AES256_GCM,data:9wegrw4ZbY+T/gNYi0gt4n6Db1/rRpsiqVbQr8QoYTwOiWBjKO2PGTTM5aK3khk5t2pYOTSqEBn5+5J/JYZpQ6nvJMcqn0+31KMuMT9/0akxOm112Tj31vOdBwRvSQVLBzmQtPABgMlV36lRtpVU71lwiNO4M33ygzL/tm7EMt0e75Nr9CZkGI7BGtnATBzbj3ysftsbFPF2iIgZ9fej4I78rJ1HavAsAgcrxksWAJjFZyFGWinkW4eiwDKlqBvRUW0tE8TF897ZmX90UnwXwjtyJcyJH6nzwrRDJgxR7uyRL/HIusmVZHCNSlo8dSaxAROXOw5ULjmQpXzzPAVUxw==,iv:FCv2ADYZXflBYuI9B9xvUSAYX8+v2Qf9EJjZ/TX27sA=,tag:caR4HS3yYrjNP1IzxgoOXA==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1uvsvf5ljaezh5wze32p685kfentyle0l2mvysc67yvgct2h4850qqph9lv
|
||||
|
|
@ -20,7 +20,7 @@ sops:
|
|||
V09NYXpBYXBtYWdBajJubmVFL2loY0EKJdYKQHPriOT0eouvRUiCyqLSTzugUZxl
|
||||
BFTwfCez1/K2ERKQkKsMfIARbHaI2SRyDxM2O1IJ+DOIJ2383K6Gvw==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-11-21T12:34:30Z"
|
||||
mac: ENC[AES256_GCM,data:LUqoXWMhmQQgqq1AX7I2v7z58ywstjWzsVTav9iu0RrkCxeB1u5V90E4tcnfjtquLwjiabpLSRpkUXE33DhqcgxLIklX0Cpld5TK1Bsdn8DXyKk1Lhfdf3OL7cn14kb4CqXTNlDyqwM+BBsYmdFQzPjb8IPiD9y+mTO5yHuAta0=,iv:mbHhZdv+0lDI9cNUsI3oatwbItQ6Xfvgm0UMQdu9FKA=,tag:aPFWPwahvMjBojzthZZ6vQ==,type:str]
|
||||
lastmodified: "2025-12-19T12:39:58Z"
|
||||
mac: ENC[AES256_GCM,data:tTvNyD6Lekc0RUIr9CpCjhWl2Gb9pHRubeoTrwceUCkm074EjYIzvqwiX5fzt6Cc5/H/k8NWJZBAoI3tOeCrXpo1Lbb0fCjGqxTldGN44pLR/5q9bdAxLom3EEqKiBBryVxqAkkm1a98UXPtnh+oDyaFsqTbS65LolEtFEbV/3U=,iv:J0gMlpWc9TVSCRxcdUnlXtNnmahvbc12EsLeFB4BJlY=,tag:h0EaNQ/sl+3sU9+g4ohjtw==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.11.0
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
...
|
||||
}:
|
||||
{
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
boot.kernelPackages = pkgs.linuxPackages_6_17;
|
||||
|
||||
fileSystems."/mnt/ssd" = {
|
||||
device = "/dev/disk/by-label/DN-SSD";
|
||||
|
|
|
|||
|
|
@ -1,28 +1,46 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
imports = [
|
||||
(modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "vmd" "xhci_pci" "thunderbolt" "nvme" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.availableKernelModules = [
|
||||
"vmd"
|
||||
"xhci_pci"
|
||||
"thunderbolt"
|
||||
"nvme"
|
||||
"usb_storage"
|
||||
"usbhid"
|
||||
"sd_mod"
|
||||
"rtsx_pci_sdmmc"
|
||||
];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-intel" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-label/NIXROOT";
|
||||
fsType = "ext4";
|
||||
};
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-label/NIXROOT";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-label/NIXBOOT";
|
||||
fsType = "vfat";
|
||||
options = [ "fmask=0022" "dmask=0022" ];
|
||||
};
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-label/NIXBOOT";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
|
||||
swapDevices = [ ];
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,7 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
inherit (lib) mkForce;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(import ../../../modules/nvidia.nix {
|
||||
|
|
@ -6,4 +10,6 @@
|
|||
nvidia-bus-id = "PCI:1:0:0";
|
||||
})
|
||||
];
|
||||
|
||||
hardware.nvidia.package = mkForce config.boot.kernelPackages.nvidiaPackages.beta;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,24 +11,10 @@ in
|
|||
{
|
||||
systemConf = {
|
||||
inherit hostname username;
|
||||
domain = "net.dn";
|
||||
enableHomeManager = true;
|
||||
nvidia.enable = true;
|
||||
hyprland = {
|
||||
enable = true;
|
||||
monitors = [
|
||||
{
|
||||
desc = "ASUSTek COMPUTER INC ASUS VG32VQ1B 0x00002271";
|
||||
output = "DP-2";
|
||||
props = "2560x1440@165, 0x0, 1";
|
||||
}
|
||||
{
|
||||
desc = "Acer Technologies XV272U V3 1322131231233";
|
||||
output = "DP-3";
|
||||
props = "2560x1440@180, -1440x-600, 1, transform, 1";
|
||||
}
|
||||
];
|
||||
};
|
||||
hyprland.enable = false;
|
||||
niri.enable = true;
|
||||
sddm.package = (
|
||||
pkgs.sddm-astronaut.override {
|
||||
embeddedTheme = "purple_leaves";
|
||||
|
|
@ -65,6 +51,8 @@ in
|
|||
./sops
|
||||
./utility
|
||||
./virtualisation
|
||||
../../modules/shells/noctalia
|
||||
../../modules/sunshine.nix
|
||||
];
|
||||
|
||||
# Live Sync D
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
# ./netbird.nix
|
||||
./osx-kvm.nix
|
||||
# ./osx-kvm.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
pkgs,
|
||||
pkgs-stable,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
|
@ -18,8 +17,8 @@ let
|
|||
});
|
||||
in
|
||||
{
|
||||
environment.systemPackages = [
|
||||
pkgs-stable.shadps4
|
||||
environment.systemPackages = with pkgs; [
|
||||
shadps4
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
|
|
|
|||
|
|
@ -1,81 +1,187 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
helper,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib) optionalString;
|
||||
inherit (helper) getMonitors;
|
||||
inherit (builtins) elemAt;
|
||||
inherit (config.networking) hostName;
|
||||
inherit (config.systemConf) username;
|
||||
inherit (config.systemConf.hyprland) monitors;
|
||||
inherit (lib) optionalString mkForce;
|
||||
|
||||
wmName = if config.programs.hyprland.enable then "hyprland" else "niri";
|
||||
in
|
||||
{
|
||||
home-manager.users."${username}" = {
|
||||
imports = [
|
||||
../../../../home/presets/basic.nix
|
||||
../../../../home/user/zellij.nix
|
||||
./expr
|
||||
./wm
|
||||
home-manager.users."${username}" =
|
||||
{
|
||||
osConfig,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
monitors = getMonitors hostName config;
|
||||
mainMonitor = (elemAt monitors 0).criteria;
|
||||
secondMonitor = (elemAt monitors 1).criteria;
|
||||
mainMonitorSwayFormat = "desc:ASUSTek COMPUTER INC - ASUS VG32VQ1B";
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
mattermost-desktop
|
||||
];
|
||||
|
||||
# Bitwarden client
|
||||
(import ../../../../home/user/bitwarden.nix {
|
||||
email = "danny@net.dn";
|
||||
baseUrl = "https://bitwarden.net.dn";
|
||||
})
|
||||
# NOTE: Disable idle
|
||||
services.hypridle.enable = mkForce false;
|
||||
|
||||
# waybar
|
||||
(import ../../../../home/user/waybar.nix {
|
||||
settings = [
|
||||
# monitor 1
|
||||
# hyprlock shows on main monitor
|
||||
programs.hyprlock.monitors = [
|
||||
mainMonitorSwayFormat
|
||||
];
|
||||
|
||||
services.kanshi.settings = [
|
||||
{
|
||||
profile.name = "${hostName}";
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "ASUSTek COMPUTER INC ASUS VG32VQ1B 0x00002271";
|
||||
mode = "2560x1440@164.554001Hz";
|
||||
position = "0,0";
|
||||
scale = 1.0;
|
||||
}
|
||||
{
|
||||
criteria = "Acer Technologies XV272U V3 1322131231233";
|
||||
mode = "2560x1440@179.876999Hz";
|
||||
position = "-1440,-600";
|
||||
transform = "90";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
programs.ghostty.settings = {
|
||||
background-opacity = 0.9;
|
||||
};
|
||||
|
||||
# ==== Shells ==== #
|
||||
# Caelestia
|
||||
programs.caelestia.settings = {
|
||||
osd = {
|
||||
enableBrightness = false;
|
||||
enableMicrophone = true;
|
||||
};
|
||||
};
|
||||
|
||||
# Noctalia
|
||||
programs.noctalia-shell.filteredIds = [
|
||||
"Brightness"
|
||||
];
|
||||
|
||||
# ==== WM ==== #
|
||||
programs.niri.settings = {
|
||||
binds = with config.lib.niri.actions; {
|
||||
"Mod+G".action = focus-workspace "game";
|
||||
"Mod+Shift+G".action.move-column-to-workspace = [ "game" ];
|
||||
|
||||
# Overrides
|
||||
"Mod+B".action = mkForce (focus-workspace "browser");
|
||||
"Mod+Shift+B".action.move-column-to-workspace = [ "browser" ];
|
||||
};
|
||||
|
||||
hotkey-overlay = {
|
||||
hide-not-bound = true;
|
||||
skip-at-startup = true;
|
||||
};
|
||||
|
||||
workspaces."browser" = {
|
||||
open-on-output = secondMonitor;
|
||||
};
|
||||
|
||||
# Other settings are located in `public/dn/common.nix`
|
||||
workspaces."game" = {
|
||||
open-on-output = mainMonitor;
|
||||
};
|
||||
|
||||
window-rules = [
|
||||
# Second Monitor App
|
||||
{
|
||||
output = "${(builtins.elemAt monitors 0).output}";
|
||||
height = 48;
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"custom/cava"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
(optionalString config.programs.gamemode.enable "custom/gamemode")
|
||||
"custom/bitwarden"
|
||||
"custom/airplay"
|
||||
"custom/wallRand"
|
||||
"custom/wireguard"
|
||||
"custom/recording"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
# monitor 2
|
||||
{
|
||||
output = "${(builtins.elemAt monitors 1).output}";
|
||||
height = 54;
|
||||
modules-left = [
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
matches = [
|
||||
{
|
||||
app-id = "^discord$";
|
||||
}
|
||||
{
|
||||
app-id = "^thunderbird$";
|
||||
}
|
||||
];
|
||||
|
||||
open-on-output = secondMonitor;
|
||||
}
|
||||
];
|
||||
})
|
||||
};
|
||||
|
||||
# Git
|
||||
(import ../../../../home/user/git.nix {
|
||||
inherit username;
|
||||
email = "danny10132024@gmail.com";
|
||||
})
|
||||
];
|
||||
};
|
||||
imports = [
|
||||
../../../../home/presets/basic.nix
|
||||
../../../../home/user/zellij.nix
|
||||
./expr
|
||||
./wm
|
||||
|
||||
# Bitwarden client
|
||||
(import ../../../../home/user/bitwarden.nix {
|
||||
email = "danny@net.dn";
|
||||
baseUrl = "https://bitwarden.net.dn";
|
||||
})
|
||||
|
||||
# waybar
|
||||
(import ../../../../home/user/waybar.nix {
|
||||
matchByDesc = true;
|
||||
settings = [
|
||||
# monitor 1
|
||||
{
|
||||
output = "${(builtins.elemAt monitors 0).criteria}";
|
||||
height = 48;
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"${wmName}/workspaces"
|
||||
"clock"
|
||||
"custom/cava"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
(optionalString osConfig.programs.gamemode.enable "custom/gamemode")
|
||||
"custom/bitwarden"
|
||||
"custom/airplay"
|
||||
"custom/wallRand"
|
||||
"custom/wireguard"
|
||||
"custom/recording"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
# monitor 2
|
||||
{
|
||||
output = "${(builtins.elemAt monitors 1).criteria}";
|
||||
height = 54;
|
||||
modules-left = [
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
];
|
||||
}
|
||||
];
|
||||
})
|
||||
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
./mail.nix
|
||||
./nginx.nix
|
||||
./wireguard.nix
|
||||
./nextcloud.nix
|
||||
# ./nextcloud.nix
|
||||
# ./netbird.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,26 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkIf mkForce;
|
||||
hostname = "drive.dnywe.com";
|
||||
port = 31007;
|
||||
in
|
||||
{
|
||||
sops.secrets = {
|
||||
"nextcloud/adminPassword" = mkIf config.services.nextcloud.enable {
|
||||
owner = "nextcloud";
|
||||
group = "nextcloud";
|
||||
};
|
||||
"nextcloud/signaling.conf" = mkIf config.services.nextcloud.enable {
|
||||
owner = "signaling";
|
||||
group = "signaling";
|
||||
mode = "0640";
|
||||
};
|
||||
"nextcloud/whiteboard" = mkIf config.services.nextcloud.enable {
|
||||
owner = "nextcloud";
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(import ../../../modules/nextcloud.nix {
|
||||
configureACME = false;
|
||||
|
|
@ -25,10 +41,10 @@ in
|
|||
];
|
||||
|
||||
services.nextcloud = {
|
||||
https = lib.mkForce false;
|
||||
# enable = mkForce false;
|
||||
https = mkForce false;
|
||||
extraApps = {
|
||||
inherit (config.services.nextcloud.package.packages.apps) spreed;
|
||||
|
||||
twofactor_totp = pkgs.fetchNextcloudApp {
|
||||
url = "https://github.com/nextcloud-releases/twofactor_totp/releases/download/v6.4.1/twofactor_totp-v6.4.1.tar.gz";
|
||||
sha256 = "sha256-Wa2P6tpp75IxCsTG4B5DQ8+iTzR7yjKBi4ZDBcv+AOI=";
|
||||
|
|
@ -49,15 +65,15 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
users.groups.signaling = {
|
||||
users.groups.signaling = mkIf config.services.nextcloud.enable {
|
||||
};
|
||||
|
||||
users.users.signaling = {
|
||||
users.users.signaling = mkIf config.services.nextcloud.enable {
|
||||
isSystemUser = true;
|
||||
group = "signaling";
|
||||
};
|
||||
|
||||
systemd.services.nextcloud-spreed-signaling = {
|
||||
systemd.services.nextcloud-spreed-signaling = mkIf config.services.nextcloud.enable {
|
||||
requiredBy = [
|
||||
"multi-users.target"
|
||||
"phpfpm-nextcloud.service"
|
||||
|
|
@ -71,7 +87,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
services.nats = {
|
||||
services.nats = mkIf config.services.nextcloud.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
host = "127.0.0.1";
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
wireguard:
|
||||
wg0.conf: ENC[AES256_GCM,data:AL5GVljm3Ta9Deb2SiUNEvtTSL1L9E5lcMhE6szjXCCfBnOpK8RiVe/b6JGC9RzE6DFiiQdZoKBWLy7rcrIjrDA09bCaQO5Gjjl2YtEkI0FULcMI8PuIQ8j2sYgjk0FAXRsmNy5U/v6afIum5wN2iTsYL1y3DObeRoNrsQNhBYDQBE0ZmcJxgtQYihUuGuEYcDLhzhFXfYKZrG1Grwqpcn0KK8K5A3qPgtq8fn86KuMZ6i4MHAiG7OJgXMpgTHjmWpJ819qsswjkpF1RgjgpET28IiNza9FIbxiflIXXagSZeigtLIJ6dOZwBgt0f5dgfr41dN/hT5SEHFADdXIa,iv:OsB8mf+WB9C/kvGzTs/LxqjimPISDGhU2P2GjbkYEbc=,tag:lCxtFVViYejQhZUfmdkGrg==,type:str]
|
||||
wg0.conf: ENC[AES256_GCM,data:ozySeNEvkiLt9TGrZCrlJWKT5gcSlZ9T8AeXGO97SPgxI394eCQ/LOkVFl7AykhZvs7YkxMpZzAZxc0oNdTYuDlqfrNr0pqTUJmpX+5PVRmDb5z2MJvERktVkJ4LSvVodoYznDwT/y9q199AFKf3t4EoWuRyR/il6P8HuGVHXrKRYUrwuB4nuq1SIByY+8D2gzohFB/s6pSOPYy6/xCt0Nm+x0wmcdrlyOb0S+4WXlcou2ll98o9q2YDdVBKeW4jyUjFqXM2XzD0JXpAi9ZFlyzxyYNwa4oMYATyCBCH4BNHqe850QHEoCaOovioEdDH/tluB2X/891ixqzURypzbg==,iv:3Q5xOgGcg8/DIwHt4fHsQGtN8f2hGpVDtf47PcwW62I=,tag:SbJqhWi3+h1O5ZIOayDrUw==,type:str]
|
||||
dovecot:
|
||||
openldap: ENC[AES256_GCM,data:U3YYreEqoh+F0Mrli52jgQowrUqIUPmdQps=,iv:vTjHBFsue+89GOCDigVIktgGSZNZv8A2e3GM80o6TXc=,tag:GGh+hsT+yV/I12meXxflbQ==,type:str]
|
||||
nextcloud:
|
||||
|
|
@ -38,7 +38,7 @@ sops:
|
|||
MEdmWkFwNXZoR1ZVRnQ0aWlkYzZwSmsK0EFecUIdqlDKX08oRCoDQQ3QCX1wzb8w
|
||||
lghDJhWlfuKr+X24GoE4UK04aJVLqVMRRI4BJW+LQXeHS+dWKu3mQA==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-11-22T10:29:33Z"
|
||||
mac: ENC[AES256_GCM,data:hcqqPP7EEDrFWwKU3Yl0XM6h17pLXBsmISMd94qYzaxmT/nKnF5bn8dq6M1C9t0Q0vvLjrPm94Gv2HPPJOX960whYMfwuXv/RkORJGb4qXdkXsGJaCrR9M51HArrd7Ba3pjoEyp3Jz9xTNrqg8kCDphBs0oZRV6dQDJUTdLbR50=,iv:eH5T27fthAad/dM5NxXyQawiVmTGgwJbeRXAiut9kL4=,tag:3lGkJMZKo8O1Zm1fB3DJ9Q==,type:str]
|
||||
lastmodified: "2025-12-19T12:39:37Z"
|
||||
mac: ENC[AES256_GCM,data:JSwphdjAfZcLSuctzruwVjBQXhbQKnEda93KlrH8eoSJcFXBRCMz0v+HY2nBlrC9lwp9vgT3HnGmR6hIPi48UtyxYcGOJy33OY4M1it0WGE2r8Ikg++5cBUtacK4QdwuMCADhNT5ZHs5T7UUX0GMLeqAtrcJ3FKt+4+catsOvnE=,iv:7ZTi86IkbScizZlOCk+uXDyWzrFDsLRuLuzjUFsMFR0=,tag:3/i7BZ8XYALj7RYj4dIUgA==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.11.0
|
||||
|
|
|
|||
|
|
@ -6,18 +6,6 @@ in
|
|||
sops = {
|
||||
secrets = {
|
||||
"wireguard/wg0.conf" = { };
|
||||
"nextcloud/adminPassword" = mkIf config.services.nextcloud.enable {
|
||||
owner = "nextcloud";
|
||||
group = "nextcloud";
|
||||
};
|
||||
"nextcloud/signaling.conf" = mkIf config.services.nextcloud.enable {
|
||||
owner = "signaling";
|
||||
group = "signaling";
|
||||
mode = "0640";
|
||||
};
|
||||
"nextcloud/whiteboard" = mkIf config.services.nextcloud.enable {
|
||||
owner = "nextcloud";
|
||||
};
|
||||
|
||||
"lam/env" = { };
|
||||
|
||||
|
|
|
|||
|
|
@ -2,5 +2,6 @@
|
|||
imports = [
|
||||
../../../modules/virtualization.nix
|
||||
../../../modules/wine.nix
|
||||
./kvm.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
24
system/dev/dn-pre7780/virtualisation/kvm.nix
Normal file
24
system/dev/dn-pre7780/virtualisation/kvm.nix
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
{ config, pkgs, ... }:
|
||||
let
|
||||
inherit (config.systemConf) username;
|
||||
in
|
||||
{
|
||||
programs.virt-manager.enable = true;
|
||||
|
||||
users.groups.libvirtd.members = [ username ];
|
||||
|
||||
virtualisation = {
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu.swtpm.enable = true;
|
||||
qemu.vhostUserPackages = with pkgs; [ virtiofsd ];
|
||||
};
|
||||
spiceUSBRedirection.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
# dnsmasq
|
||||
qemu
|
||||
quickemu
|
||||
];
|
||||
}
|
||||
|
|
@ -61,6 +61,12 @@ in
|
|||
"nextcloud"
|
||||
"vaultwarden"
|
||||
"paperless"
|
||||
"keycloak"
|
||||
"pdns"
|
||||
"powerdnsadmin"
|
||||
"roundcube"
|
||||
"grafana"
|
||||
"crowdsec"
|
||||
];
|
||||
location = "${backupPath}/postgresql";
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ in
|
|||
{
|
||||
systemConf = {
|
||||
inherit hostname username;
|
||||
domain = "net.dn";
|
||||
hyprland.enable = false;
|
||||
security = {
|
||||
allowedDomains = [
|
||||
"github.com"
|
||||
|
|
@ -25,6 +23,9 @@ in
|
|||
allowedIPs = [
|
||||
"10.0.0.0/24"
|
||||
"127.0.0.1"
|
||||
# CrowdSec
|
||||
"52.51.161.146"
|
||||
"34.250.8.127"
|
||||
];
|
||||
allowedIPv6 = [
|
||||
"ff02::/16"
|
||||
|
|
@ -45,7 +46,7 @@ in
|
|||
'';
|
||||
|
||||
imports = [
|
||||
../public/dn/default.nix
|
||||
../public/dn
|
||||
./common
|
||||
./home
|
||||
./network
|
||||
|
|
|
|||
|
|
@ -1,34 +1,20 @@
|
|||
{
|
||||
inputs,
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (config.systemConf) username;
|
||||
in
|
||||
{
|
||||
home-manager = {
|
||||
users."${username}" = {
|
||||
imports = [
|
||||
../../../../home/user/config.nix
|
||||
../../../../home/user/direnv.nix
|
||||
../../../../home/user/environment.nix
|
||||
../../../../home/user/nvf
|
||||
../../../../home/user/shell.nix
|
||||
../../../../home/user/yazi.nix
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
inputs.ghostty.packages.${system}.default
|
||||
];
|
||||
}
|
||||
|
||||
# Git
|
||||
(import ../../../../home/user/git.nix {
|
||||
inherit username;
|
||||
email = "danny10132024@gmail.com";
|
||||
})
|
||||
];
|
||||
};
|
||||
home-manager.users."${username}" = {
|
||||
imports = [
|
||||
../../../../home/user/config.nix
|
||||
../../../../home/user/direnv.nix
|
||||
../../../../home/user/environment.nix
|
||||
../../../../home/user/nvf
|
||||
../../../../home/user/shell.nix
|
||||
../../../../home/user/yazi.nix
|
||||
../../../../home/user/ghostty.nix
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -159,6 +159,12 @@ let
|
|||
publicKey = "5th0G9c7vHrhcByvPJAbrn2LXjLPqDEMsHzda0FGUTQ=";
|
||||
allowedIPs = [ "10.0.0.148/32" ];
|
||||
}
|
||||
# DN Win
|
||||
{
|
||||
dns = "win";
|
||||
publicKey = "LuKw1w879a3kRaBK+faToVmb9uLhbj6tf/DstgMMJzQ=";
|
||||
allowedIPs = [ "10.0.0.149/32" ];
|
||||
}
|
||||
];
|
||||
in
|
||||
{
|
||||
|
|
@ -424,7 +430,8 @@ in
|
|||
# python
|
||||
''
|
||||
import cachelib
|
||||
|
||||
BIND_ADDRESS = "127.0.0.1"
|
||||
PORT = 8081
|
||||
SESSION_TYPE = 'cachelib'
|
||||
SESSION_CACHELIB = cachelib.simple.SimpleCache()
|
||||
SQLALCHEMY_DATABASE_URI = 'postgresql://powerdnsadmin@/powerdnsadmin?host=localhost'
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
imports = [
|
||||
./atticd.nix
|
||||
# ./atticd.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./fail2ban.nix
|
||||
./crowdsec.nix
|
||||
# ./crowdsec.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
}:
|
||||
let
|
||||
inherit (helper.grafana) mkDashboard;
|
||||
inherit (lib) optionalAttrs;
|
||||
inherit (lib) optionalAttrs optional;
|
||||
inherit (config.networking) hostName;
|
||||
|
||||
datasourceTemplate = [
|
||||
|
|
@ -78,28 +78,33 @@ in
|
|||
}
|
||||
];
|
||||
})
|
||||
(optionalAttrs config.services.crowdsec.settings.general.prometheus.enabled {
|
||||
job_name = "crowdsec";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [
|
||||
"localhost:${toString config.services.crowdsec.settings.general.prometheus.listen_port}"
|
||||
];
|
||||
labels = {
|
||||
machine = "${hostName}";
|
||||
};
|
||||
}
|
||||
];
|
||||
relabel_configs = [
|
||||
{
|
||||
source_labels = [ "__address__" ];
|
||||
target_label = "instance";
|
||||
regex = "(.*):[0-9]+";
|
||||
replacement = "CrowdSec - \${1}";
|
||||
}
|
||||
];
|
||||
})
|
||||
];
|
||||
]
|
||||
++ (optional
|
||||
(config.services.crowdsec.enable && config.services.crowdsec.settings.general.prometheus.enabled)
|
||||
[
|
||||
{
|
||||
job_name = "crowdsec";
|
||||
static_configs = [
|
||||
{
|
||||
targets = [
|
||||
"localhost:${toString config.services.crowdsec.settings.general.prometheus.listen_port}"
|
||||
];
|
||||
labels = {
|
||||
machine = "${hostName}";
|
||||
};
|
||||
}
|
||||
];
|
||||
relabel_configs = [
|
||||
{
|
||||
source_labels = [ "__address__" ];
|
||||
target_label = "instance";
|
||||
regex = "(.*):[0-9]+";
|
||||
replacement = "CrowdSec - \${1}";
|
||||
}
|
||||
];
|
||||
}
|
||||
]
|
||||
);
|
||||
})
|
||||
|
||||
(import ../../../modules/grafana.nix {
|
||||
|
|
|
|||
|
|
@ -11,15 +11,15 @@ ldap:
|
|||
env: ENC[AES256_GCM,data:XmIz9JEswvK1jVmTsTgdDZJXeK7j8E/b6nF+uuZpvpoe5/IogjMrzcWi3EB1i44z1Dxgoim8QM8ZtczY,iv:1jK/J2qfKODrbrNpSHl110jPvbNLl0zI//laowerJOc=,tag:tkBVxDC8Ebn3Aac+LATQFA==,type:str]
|
||||
oauth:
|
||||
password: ENC[AES256_GCM,data:lzS/OtqHb/24IJnOKxMBQA==,iv:BI1n7Jjklye6WM2ss7jpaGgokrJpAG2Ipil7VrY30XM=,tag:i3OByJ6LDwvAsS5CTrEQig==,type:str]
|
||||
adminEnv: ENC[AES256_GCM,data:LECZ1/KtaEB7kUN6zNDUr08g2SVtGhWEvy2QA9jzU3vJ1U8NDnPXjfDkkH1bIw==,iv:pPz7J+DdF7zkqzFlevoeYQGZnA2PQDoRYcpOaOeHN3A=,tag:e0iVPSZQ1V3aWYtKpGnBGg==,type:str]
|
||||
adminEnv: ENC[AES256_GCM,data:tF7ECUxG5QeNIvx3IFpTtY7NnSXROGHi48jGXZNgJVX5cABNIYBUqYW9/p2KbA==,iv:7oNmOBEs0b9mB6Ay7IULH2AumQOdIyQ+hDHm5kV6lTY=,tag:jkfA6D8CKg1jC21dS7Sumw==,type:str]
|
||||
powerdns-admin:
|
||||
secret: ENC[AES256_GCM,data:M5hD8B7kikseQJZCWUIlc7OJcQn0nwnx0QOSQe+Mf8TaztvyFfSfxv0vowNsx0MyGef4teuK+DW9/UTbRFEHeg==,iv:xaSgzhqMU9+ud1xfXLVkg3v2xcmIo35BOhml5VfHKBI=,tag:L1v95+HsIqNjVA1LGNbEJQ==,type:str]
|
||||
salt: ENC[AES256_GCM,data:Vtn3/gJlElrFkPwoa05wlxVL/Sk4lNLghp1gi6o4V5A=,iv:/lRVfNOpERS963+9JNf8wATIY9FcicT8xQ9Cbw2by/s=,tag:x5WiNa56l7y3CKwbaamLLA==,type:str]
|
||||
salt: ENC[AES256_GCM,data:rs4tZrVF4kb6/97wjQA2Npb2QeS6vjN3L1zRgmM=,iv:c0VTEtnahMSfs/PqeFQxYpDstLxPKaW1RyXMc6SQJu8=,tag:dXHUO2KJvP5Sz22Gv6ws/w==,type:str]
|
||||
powerdns: ENC[AES256_GCM,data:d4qzUAjyHUxLynvP6vSxCzrihfb/X3KYHeRA/w+CButld7ulxL9W6PerhvNcJytgfJDQINvcgnMKjijJ/vC7VeO9p7ZyArh4/PWZwgiJ,iv:orfh5F4uCYq2IplG0Y7Q/RcSqIm5Xyzn3ejzPsm+/0k=,tag:YqfvBlJRpkmMy29z3wyJ1g==,type:str]
|
||||
rspamd-trainer: ENC[AES256_GCM,data:EqWVADi7zr6AUZL5mlN1/xbpjuRIS3Zn,iv:M/xk7LywcRiKQM9LrnTnCKu3OS/YBf23CRkxh4ll1+c=,tag:4lH3hhMxWIzEUExJOt/41Q==,type:str]
|
||||
rspamd: ENC[AES256_GCM,data:qEXHXdcvk24pAHEl6MI=,iv:L5tmoTu5Qk5sxDj3EmWfc39AHwRTT4T4gB1O2EsTQkY=,tag:vIhAOnEpWxtP0eU4stkQww==,type:str]
|
||||
acme:
|
||||
env: ENC[AES256_GCM,data:gHoAyc6+LK7jrTfrIlPJx+RNe90xTpVVykDEfor3+ifRDRCPfxLmfj1nWylRp7r3N/Ha8AlElvNPmn4mVMsM2OsXmZoYoO+YOVq1zShXHI3A2dHgzJGxaCu/zuf2AWefEsBDWhjbGxWUpjjcEh6mOgvuh0HHGdW0uq6EL5LqDZiPMGdYNdJLEuy6s9pdQt69mVWAwGVA9eTvbnG0W91/35SUeOSs+la+YRCSPQ==,iv:QebJyJ1+6dYQulVkDdkFx34KkiH9xzsX+C3TYDdIMkw=,tag:h7Oxt04PqkFDdb7ZuyVnlQ==,type:str]
|
||||
env: ENC[AES256_GCM,data:DQaHr13K3faeyQk/05sVmmZRNvEbjmMP8y3nES1vyFO+oNX9nyyWcy5YEAO5tjRTxi/yM1ISlhbXWct4iRwAkvnhtoFRK/jpAfDv+W3J1LotaRxiPWSXUs5lS7uS0DpveRwQVv6qEl3Cs8vitHAJfRCKJoYv5HTJyvOnoWqHbnk=,iv:co3V0vu2c26NKHuoNoRv7td8qu6m0NTlvkr3EJBQGvM=,tag:leTY/DGg85Pm8gsAHah29Q==,type:str]
|
||||
postsrsd:
|
||||
secret: ENC[AES256_GCM,data:JZNwSymEjIFb8h3gnvFajxSaNYRxjA/NUruA4WX+uSqX0ufVcbVWgxQTr7U=,iv:ydGnCESCLbwyGKc+5witXDkT3OgW27LKen7PkqUL6mU=,tag:M3RGI6LgU5n2e6ZiXxTFfQ==,type:str]
|
||||
grafana:
|
||||
|
|
@ -70,7 +70,7 @@ sops:
|
|||
OFloWEFuTC9GTXJsMG5NNktmdmIrY1kK0yN0ae0xNaydujV5lt2FiwXdyursG0DK
|
||||
9i/B3TTAm9csDMMSTSFbiAUJDzG7kIqn++JU/cxvsGScSnhMqjEK/g==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-11-24T10:30:46Z"
|
||||
mac: ENC[AES256_GCM,data:yBegCnXXKimHlZ5UcPL6O9VbhdpASMd09t7m2fxLFGYgHXYFsuRda8puVpe9EiukNRJzhkWZRjJUHI+nE2cdibx5Ewaom8lbe8pKB1A7qrVSXjU+f5HTMjUdB+ACAcGlErc0wniekwSQj2LfIYknYm2nVz2M5VeDbYxz7F5PAO0=,iv:vMdsGEe1ZPQdNtSXhtwC0StiuhBVViCuBGTURep37UM=,tag:mB2kZZcrGnmChQQRc4wvTA==,type:str]
|
||||
lastmodified: "2025-12-29T05:31:41Z"
|
||||
mac: ENC[AES256_GCM,data:7vRB92qX6NPYafjpTY0wS23bq5Jn57xkWamJZ2ZgD4/2rW+qRilmO6sqaZEktWr7q2jQzgSvdgZsgbuhkxoqQXrTVP7osjr8qQ20jL9OXLxSgPQry2QqNBqlSdjEUov/bygJA0oI46K8pdk6OrT07Few/nXMrvUixFAGGUsKmJc=,iv:Gd5X70COnDL4Ntps/bedF92uUH6hCosDj2dsbF0KQHw=,tag:O3vq/kFnay5le7F1Q2heJQ==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.11.0
|
||||
|
|
|
|||
72
system/dev/public/dn/common.nix
Normal file
72
system/dev/public/dn/common.nix
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
{ config, ... }:
|
||||
let
|
||||
inherit (config.systemConf) username;
|
||||
in
|
||||
{
|
||||
systemConf = {
|
||||
face = ../../../../home/config/.face;
|
||||
domain = "net.dn";
|
||||
};
|
||||
|
||||
home-manager.users."${username}" =
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
# Git
|
||||
(import ../../../../home/user/git.nix {
|
||||
inherit username;
|
||||
email = "Danny01161013@gmail.com";
|
||||
})
|
||||
];
|
||||
|
||||
# ==== Niri ==== #
|
||||
programs.niri.settings = {
|
||||
input.keyboard.xkb = {
|
||||
layout = "us";
|
||||
options = "caps:escape";
|
||||
};
|
||||
workspaces."game" = { };
|
||||
window-rules = [
|
||||
# Steam Game Fullscreen
|
||||
{
|
||||
matches = [
|
||||
{
|
||||
app-id = "^steam_app_(.*)$";
|
||||
is-floating = false;
|
||||
}
|
||||
];
|
||||
open-fullscreen = true;
|
||||
}
|
||||
# Steam & Steam Game
|
||||
{
|
||||
matches = [
|
||||
{ app-id = "^steam_app_*"; }
|
||||
{ app-id = "^pioneergame.exe$"; }
|
||||
{
|
||||
app-id = "^steam$";
|
||||
title = "^Steam$";
|
||||
}
|
||||
];
|
||||
open-on-workspace = "game";
|
||||
}
|
||||
# Steam Dialog float
|
||||
{
|
||||
matches = [
|
||||
{ app-id = "^steam$"; }
|
||||
{ title = "(.*)(EasyAntiCheat_EOS_Setup)(.*)"; }
|
||||
{
|
||||
app-id = "^pioneergame.exe$";
|
||||
title = "^$";
|
||||
}
|
||||
];
|
||||
excludes = [
|
||||
{
|
||||
title = "^Steam$";
|
||||
}
|
||||
];
|
||||
open-floating = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
{
|
||||
imports = [
|
||||
./yubikey.nix
|
||||
./common.nix
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
ntfy: ENC[AES256_GCM,data:7m7hwmDWu6qP/mX7QujXPiDAmRC542CKyWzFaOL5sHza,iv:nn1F44LSFmrV2USRDD0z8CNfUhi40LZnvoU3j0nklcU=,tag:WhqQpThDaG10kNTk1tZxOQ==,type:str]
|
||||
u2f_keys: ENC[AES256_GCM,data:boiKENOBo4hBWx9d+KVweCQrmFasDVUejuWrw60oPybPEW0pqTWz5GhQjfG6J0PWNFr/ObABT5eofKiSoy/pZ9uBQQGFO1nAA41axhI1Y9nuyBkkrNPYRnZsojdOcahNGMz1hplXTMzSdKgwutzA4/dsGG1ki/EOiuYRUgzQ/IzjEfqWGeBDlHoq9ohhTFFpsdNgZqgu23m3+Z0hcpquJdY3bhBi0L1nU3B88wJ7MiLyp2mVM3GA7i8jeIUmwqJCEuA3OkG3r3oUHO/l61N+0qtss8bmghf6bsJYtvkhCjXOiEE9R8dpCzjwXEhgAGcYiqiPWzLCl3WyYaytNlVJF/MHC+R0S1ruBV0RLrzCnvxaav8iqa4l3y2ErRB0qUgvO386suGNh2cEYTEEKF4GcQM6mzXbLzUqK4H+nGBC3SdArdphTIgWXP7C+romXzwgGVBLWW/4atRkj0ZF,iv:Rxke3HDAvcLv9sks5jDhNsfxXwSD4TgfGoN7v9HDntk=,tag:IkCsaFVPdgobd9+EX3CwIw==,type:str]
|
||||
u2f_keys: ENC[AES256_GCM,data:0EofFtgar18YzbzXiT6NdC9nwMTQoYkeU8snRTwhUX2Hz+k4B46839xZet4Df5a8xpaB2CuoPvRkEMSxknBWGKkK+gZr2m+zogbpMTGQVTYqmqlnunywrhe9u9FQ5D1hwU4PYcOgDqox5dw4QMg/AUontu5BYTG3WKCCTDVIL+i6PejwXKcfoKHd9G1K2QHV33S40EM4/jjijgxW+NoO6vkEWIwxih/DxQ4YZYTHHBZXhKRD7Hwhikd6G3Vs3/xD/UOVVJKtkyn1wKNQf+O30Q2LNOhDQ8/weNfN9IAMpVtRqvEtFXA2rfp9zI7TY1iuSN9nN9hYuZJeCktvK1WiRvspU5wYn2jDtM83zCA8Udnq1XJbsGEv2aA3SYyxoldtkjFcjlupGa1lJiaANxhmpOfJp0IIkeXqnIkLE/FzRFiced58H1UV6InlH5S/Lz42854ec/jDlgvzCnDoWIsgfgQf+KmwRHznzeepPW7S3tyB/jbJETEfCJfZ3E6YmeAMWd85drTKsySjBGiM7mueb4thGstfgnAEO/Y3PuVc/qGS1j95lUc0w0zbr3VzwibxCsS02PgMIUE5gZPEllknbhh6QiqbS2AtTAb9pIwrpYfEmcZU2blofQ8WzkLEjqNnRGaDXzgIEw4OirM0tSaFGmT9Vy1XN4yvSVssjsW/wXg19U4S/6FS+zOvyg+lIkT3NOfu5dKQecz8cH0czEN5MoVj3fm5LBhFmDOawP5AAA8dLafMEepxbBIGr/9nzDP17trMfzFf78hymHTgQk/qFb6oWl9Ai1dFZRwHO7HcXpBveTpPMCaeNOjcvRrvKsm2HSzsWPCVsfX6nrmNjqyFJXpPuuNaPezclL/ApPdEXpi9Q+aVHAgjllBLAH/R8UJu71cJAo+x7TCWykG31xLO0xodtJ5Lwk3O1lMnznnQXT/fCVaFYV24OT/nS7hQOtDvlJOCfmSpZTmZxX31xF4Gt0Auok+0uPJzDfbFQH9WwifXn6F8ixdsLK/VJMEk8EZbHpkNSV6hzWJkiOeJCDl7SBKEcQ+FizYSfZuOcVEt83ScJuVa7IScVLdatnTTTpR4c5GASYLr3lahqYwhuZGcQEUIwjDXu8Oymo0Sbvnmev60wY5Q3BEMSX1iwt3QWdCe5Kzq2vEUQHP9s6lg7DgOeIA2xQRK5siqwOhw9i1qaHbPG+1yTFOx7gRu0+yBy2Qzkwsc9naD8Ce0hpwQmu4Nvpd5TjMnS51ljDMWBok5evdOtGeWL9mDz6VdxtuHbcBShmEOk+lfKKjpDeK5319veBX5ugCm8WXeDmIIhG12gI07xRVzPaeYEhnRG2pHy/+JdjlyGeh0oHCJOYPhxtwVbqXwmH83BGn3H05bdIWEjXs=,iv:pAdO+Uja/Zyf5uLMa9zbKvEMoOOjQgkqHYnEH+Bxd5k=,tag:mYngzcv0bGwVJBHOR6D4uw==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1uvsvf5ljaezh5wze32p685kfentyle0l2mvysc67yvgct2h4850qqph9lv
|
||||
|
|
@ -29,7 +29,7 @@ sops:
|
|||
QWV3VjRjNC9RaXNwbDdLWmVQNS94UzAKeLZSqcXRwkVoUUKd4PuRusbJwFlubdJy
|
||||
kcxGMzvfT0BMYDp61vV+F5Vh4TkgddCzp6Lphbb/6orkWWpjmE9I4g==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-11-21T12:34:46Z"
|
||||
mac: ENC[AES256_GCM,data:jec/S+h3feoez+1OaWkZHAlSNhsLv8R4yXPIFjVUaYionJKMUAAizLtVsmpVHNRn8OCBhb7zi+Yk4GClZQqg/I8iTY3tzDTIJJsHoj+KsxuQohRASDikaYLTfdad44vin8ayxSKjSScK3JpwX5B12Rffx8DCPqUtXY0TGa0ULoQ=,iv:R1YiVCx3WDZO4b2d9TbdTnWmVmG4MQye4TUWWdIa4Yk=,tag:ACZoECWIqDRITghc8KwUsA==,type:str]
|
||||
lastmodified: "2025-12-09T08:03:16Z"
|
||||
mac: ENC[AES256_GCM,data:6njhvipu8iUze0mmgFIWT6Neqy2xvNPB/4fW7OObHknXAh3VGAveBnigxAJmULua6HdQx4hZ2UkUrVBG8oStjCihFYJA0eBA9j9mM3rF7Piq2U98oGtw4A9Qj2PVC7Y8pOOuX25VRmDn78cw1PpwSEZL3zZ+8cqS5btHywJackY=,iv:AeRcrhhxl5v5YLNWUPx9qvGcMKHFQD/m87PJAGWa9iE=,tag:TN1KCUNa7lVWgxQ16WRijg==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.11.0
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
{ hostname }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
|
@ -12,20 +10,11 @@ in
|
|||
systemConf = {
|
||||
inherit hostname username;
|
||||
domain = "net.dn";
|
||||
hyprland = {
|
||||
enable = true;
|
||||
monitors = [
|
||||
{
|
||||
desc = "AU Optronics 0x82ED";
|
||||
props = "prefered, 0x0, 1";
|
||||
output = "eDP-1";
|
||||
}
|
||||
{
|
||||
desc = "AOC 24B30HM2 27ZQ4HA00101";
|
||||
props = "prefered, 1920x540, 1";
|
||||
output = "HDMI-A-2";
|
||||
}
|
||||
];
|
||||
hyprland.enable = true;
|
||||
face = pkgs.fetchurl {
|
||||
url = "https://files.net.dn/skydrive.jpg";
|
||||
hash = "sha256-aMjl6VL1Zy+r3ElfFyhFOlJKWn42JOnAFfBXF+GPB/Q=";
|
||||
curlOpts = "-k";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -5,96 +5,96 @@
|
|||
...
|
||||
}:
|
||||
let
|
||||
inherit (config.networking) hostName;
|
||||
inherit (config.systemConf) username;
|
||||
inherit (lib) mkForce optionalString;
|
||||
inherit (lib) optionalString;
|
||||
|
||||
memeSelector = pkgs.callPackage ../../../../home/scripts/memeSelector.nix {
|
||||
url = "https://nextcloud.net.dn/public.php/dav/files/pygHoPB5LxDZbeY/";
|
||||
};
|
||||
|
||||
faceIcon = pkgs.fetchurl {
|
||||
url = "https://files.net.dn/skydrive.jpg";
|
||||
hash = "sha256-aMjl6VL1Zy+r3ElfFyhFOlJKWn42JOnAFfBXF+GPB/Q=";
|
||||
curlOpts = "-k";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
environment.systemPackages = map lib.lowPrio [
|
||||
pkgs.curl
|
||||
pkgs.gitMinimal
|
||||
memeSelector
|
||||
];
|
||||
|
||||
home-manager = {
|
||||
users."${username}" = {
|
||||
imports = [
|
||||
../../../../home/presets/basic.nix
|
||||
home-manager.users."${username}" = {
|
||||
services.kanshi.settings = [
|
||||
{
|
||||
profile.name = hostName;
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "AU Optronics 0x82ED";
|
||||
}
|
||||
{
|
||||
criteria = "AOC 24B30HM2 27ZQ4HA00101";
|
||||
position = "1920,540";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
{
|
||||
home.file.".face" = {
|
||||
source = mkForce faceIcon;
|
||||
};
|
||||
}
|
||||
programs.hyprlock.monitors = [
|
||||
"desc:AU Optronics"
|
||||
"desc:AOC 24B30HM2"
|
||||
];
|
||||
|
||||
{
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
input = {
|
||||
kb_options = lib.mkForce [ ];
|
||||
};
|
||||
|
||||
bind = [
|
||||
"$mainMod ctrl, M, exec, ${memeSelector}/bin/memeSelector"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
(import ../../../../home/user/waybar.nix {
|
||||
settings = [
|
||||
# monitor 1
|
||||
{
|
||||
output = "eDP-1";
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"custom/cava"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
(optionalString config.programs.gamemode.enable "custom/gamemode")
|
||||
"custom/airplay"
|
||||
"custom/wallRand"
|
||||
"custom/wireguard"
|
||||
"custom/recording"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
{
|
||||
output = "HDMI-A-2";
|
||||
modules-left = [
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
];
|
||||
}
|
||||
];
|
||||
})
|
||||
];
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
input.kb_options = lib.mkForce [ ];
|
||||
bind = [
|
||||
"$mainMod ctrl, M, exec, ${memeSelector}/bin/memeSelector"
|
||||
];
|
||||
};
|
||||
};
|
||||
imports = [
|
||||
../../../../home/presets/basic.nix
|
||||
|
||||
(import ../../../../home/user/waybar.nix {
|
||||
settings = [
|
||||
# monitor 1
|
||||
{
|
||||
output = "eDP-1";
|
||||
modules-left = [
|
||||
"custom/os"
|
||||
"hyprland/workspaces"
|
||||
"clock"
|
||||
"custom/cava"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
(optionalString config.programs.gamemode.enable "custom/gamemode")
|
||||
"custom/airplay"
|
||||
"custom/wallRand"
|
||||
"custom/wireguard"
|
||||
"custom/recording"
|
||||
"idle_inhibitor"
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
"custom/swaync"
|
||||
];
|
||||
}
|
||||
{
|
||||
output = "HDMI-A-2";
|
||||
modules-left = [
|
||||
"clock"
|
||||
"mpris"
|
||||
];
|
||||
modules-right = [
|
||||
"wlr/taskbar"
|
||||
"temperature"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
];
|
||||
}
|
||||
];
|
||||
})
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
wireguard:
|
||||
wg0.conf: ENC[AES256_GCM,data:6+FDJQiL+h0lOk74oBmE4yhav9fYMHxetTGkl8B9guqt1qe0l+K2xPzO4QETVCQl/AVs7Y8lnM1ucGCP6JScaiQONq0+cl5Am4+HJr6VhxEooPkt33qYtm6yzPqj/skyAMTsBE8NSmQ0W0nC6JSfl4IWiyksEkybotfClnFA7M5HCVm7pJ+/OXXM/UdiHHD2SanEfU1klA1pQrbxTOUHV/OUpt+d/upP21SGKBgvvm7P67qDeI+3bj9b+Og+Oz2P9YF1K1lcsC+xcdT50NOQ83p9UpUMYMaUGoPh6DcCVrDD2yr5CG01CbnP0SYqiY3vY5YfRDCEIeHFEk3clog3,iv:xQLcrm7Bj2Yoij8PkLIaWH7n81lF2IUGvhKmG3PGCAQ=,tag:YGCasXRmkv8QRgMGgfteiA==,type:str]
|
||||
wg0.conf: ENC[AES256_GCM,data:AAxGzCQIk+fq97R48lmeNwjx6z5MGc01F+vAg8MAyFSoc2x7txXT2d6CVD8/IHH/OWqHqEXRZq/T6Gd7WakSW0QxnV/+TJiezBfQwEXjHn7JZWeL9FAQ/ki+81ORkEyxi+Qy7vSVYaZ/LwzsHk9SdPDyDcTOHKzvL83p9RifgEqQEm4a6Bcvf3s7g1VtH3eDOTC2biHY3LCck08OsagMdrndRK2FjWdsPo+MuimqvIQb+eUhJ63p7/XrVcudypJWVhWU4EmY00VBN+stURJMFAuvUcEhwhmJBBRufiadzfjqXQtCCS04MXgpQyv1eufo89d1LzvQiseTQCejlsyF4Q==,iv:A1iJ1C7oCQqRhaDZxEPr8N9cyViTMZRttwLZ4PWhqiU=,tag:A6Or7u2A3HgDcv6e3SXpEg==,type:str]
|
||||
sops:
|
||||
age:
|
||||
- recipient: age1ar5h06qv72pduau043r04kschwcq0x0lm33wqvxzdh9grmp3cq3sy0ngnz
|
||||
|
|
@ -20,7 +20,7 @@ sops:
|
|||
SFlTZ1BoanoyRTB2ZkJWSHRpcnZwZDQKZ+KF6Jh3zRPr+bDmpeVqdo0qW7vnyFtv
|
||||
V5K8QYFEq9ZEz2u2DEZtyzBYBtTvF3TZz+DL63NHGH7vUVU4cpzxYg==
|
||||
-----END AGE ENCRYPTED FILE-----
|
||||
lastmodified: "2025-10-01T05:33:09Z"
|
||||
mac: ENC[AES256_GCM,data:DJzfOk3BSHFdhVbW1WUOfHVw0qt1VlLKAkavtwcerd4Mb6HmY3IE9XSAapmcgDjeAdonDlOOTZCArcymkjT8q1lvqkhNsCbR2BYyZTzOcbI52pqoKGfaYE9kUtg2i1bNnQAuNF6oTqJEoJv3zVUUP0NgdUMtOa9QJio+mJyJ3F0=,iv:KaBis+WF8AuQV7wThQ3OrhFZUl+CF4OZ8D5otSIJRrg=,tag:EjjGdYisgWztKK8yfdXBcg==,type:str]
|
||||
lastmodified: "2025-12-19T12:40:34Z"
|
||||
mac: ENC[AES256_GCM,data:pm8Fx9jFzk4ybdUEzA5IKA6iZdEswq6w1eNGWT9bir/YVK5rQz2x6ZLbmj3gY6C2QiEgWZGzA9XtHajDWNi+8tpefBfEwEuVztqjXTFM+toKTQcGKIJ5F3uOboE3zsbd9qe2n6zpECzUAeQulwlq2qQqPVSBGOZFUhI9hT23oVY=,iv:hi1sqP6PHz2J6f7lnMnhJd5Sk82aDIeyHqF9R81ofFw=,tag:0SLvYRjbAQ4iIoPNcyqfsg==,type:str]
|
||||
unencrypted_suffix: _unencrypted
|
||||
version: 3.10.2
|
||||
version: 3.11.0
|
||||
|
|
|
|||
|
|
@ -3,14 +3,11 @@
|
|||
proxy ? true,
|
||||
}:
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs.stdenv.hostPlatform) system;
|
||||
inherit (builtins) toString;
|
||||
inherit (lib) mkIf;
|
||||
|
||||
|
|
@ -20,7 +17,6 @@ in
|
|||
services = {
|
||||
actual = {
|
||||
enable = true;
|
||||
package = inputs.actual-budget-server.packages.${system}.default;
|
||||
settings = {
|
||||
port = 31000;
|
||||
hostname = "127.0.0.1";
|
||||
|
|
|
|||
|
|
@ -1,19 +1,15 @@
|
|||
{
|
||||
services = {
|
||||
blueman.enable = true;
|
||||
};
|
||||
services.blueman.enable = true;
|
||||
|
||||
hardware = {
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings.General = {
|
||||
experimental = true;
|
||||
Privacy = "device";
|
||||
JustWorksRepairing = "always";
|
||||
Class = "0x000100";
|
||||
FastConnectable = true;
|
||||
};
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings.General = {
|
||||
experimental = true;
|
||||
Privacy = "device";
|
||||
JustWorksRepairing = "always";
|
||||
Class = "0x000100";
|
||||
FastConnectable = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -27,9 +27,27 @@ in
|
|||
protontricks.enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
extest.enable = true;
|
||||
extraCompatPackages = with pkgs; [
|
||||
proton-ge-bin
|
||||
];
|
||||
extraCompatPackages =
|
||||
with pkgs;
|
||||
let
|
||||
proton-ge-10-25 =
|
||||
(proton-ge-bin.overrideAttrs (
|
||||
_: finalAttrs: {
|
||||
pname = "proton-ge-bin";
|
||||
version = "GE-Proton10-25";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${finalAttrs.version}/${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-RKko4QMxtnuC1SAHTSEQGBzVyl3ywnirFSYJ1WKSY0k=";
|
||||
};
|
||||
}
|
||||
)).override
|
||||
{ steamDisplayName = "GE-Proton10-25"; };
|
||||
in
|
||||
[
|
||||
proton-ge-bin
|
||||
proton-ge-10-25
|
||||
];
|
||||
remotePlay.openFirewall = true;
|
||||
dedicatedServer.openFirewall = true;
|
||||
localNetworkGameTransfers.openFirewall = true;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
optimise.automatic = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
dates = [ "03:15" ];
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,20 +1,29 @@
|
|||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (pkgs.stdenv.hostPlatform) system;
|
||||
pkgs-hyprland = inputs.hyprland.inputs.nixpkgs.legacyPackages.${system};
|
||||
wm =
|
||||
if config.programs.hyprland.enable then
|
||||
"hyprland"
|
||||
else if config.programs.niri.enable then
|
||||
"niri"
|
||||
else
|
||||
null;
|
||||
|
||||
pkgs-wm = if wm != null then inputs.${wm}.inputs.nixpkgs.legacyPackages.${system} else pkgs;
|
||||
in
|
||||
{
|
||||
hardware = {
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
package32 = pkgs-hyprland.pkgsi686Linux.mesa;
|
||||
package = pkgs-hyprland.mesa;
|
||||
package32 = pkgs-wm.pkgsi686Linux.mesa;
|
||||
package = pkgs-wm.mesa;
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver # LIBVA_DRIVER_NAME=iHD
|
||||
libva-vdpau-driver
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
}:
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
inherit (config.systemConf) username;
|
||||
|
||||
hyprlandEnabled = config.programs.hyprland.enable;
|
||||
in
|
||||
|
|
@ -18,14 +19,6 @@ in
|
|||
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
|
||||
xdg.portal = mkIf hyprlandEnabled {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
];
|
||||
};
|
||||
|
||||
environment.sessionVariables = mkIf hyprlandEnabled {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
WLR_NO_HARDWARE_CURSORS = "1";
|
||||
|
|
@ -39,15 +32,6 @@ in
|
|||
hyprpicker
|
||||
hyprshot
|
||||
kitty
|
||||
|
||||
# qt5.qtwayland
|
||||
# qt6.qtwayland
|
||||
wlogout
|
||||
wl-clipboard
|
||||
|
||||
# Util
|
||||
grim
|
||||
slurp
|
||||
]
|
||||
);
|
||||
|
||||
|
|
@ -59,4 +43,8 @@ in
|
|||
];
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users."${username}" = mkIf hyprlandEnabled {
|
||||
imports = [ ../../home/user/hyprland.nix ];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
supportedLocales = [ "en_US.UTF-8/UTF-8" ];
|
||||
supportedLocales = [
|
||||
"en_US.UTF-8/UTF-8"
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ in
|
|||
];
|
||||
};
|
||||
|
||||
systemd.services."phpfpm-nextcloud".postStart = ''
|
||||
systemd.services."phpfpm-nextcloud".postStart = mkIf config.services.nextcloud.enable ''
|
||||
${config.services.nextcloud.occ}/bin/nextcloud-occ config:app:set recognize node_binary --value '${lib.getExe pkgs.nodejs_22}'
|
||||
${config.services.nextcloud.occ}/bin/nextcloud-occ config:app:set recognize tensorflow.purejs --value 'true'
|
||||
'';
|
||||
|
|
@ -112,7 +112,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
services.nextcloud-whiteboard-server = {
|
||||
services.nextcloud-whiteboard-server = mkIf config.services.nextcloud.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
NEXTCLOUD_URL = "http${optionalString https "s"}://${hostname}";
|
||||
|
|
|
|||
313
system/modules/niri.nix
Normal file
313
system/modules/niri.nix
Normal file
|
|
@ -0,0 +1,313 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
getExe
|
||||
pipe
|
||||
map
|
||||
listToAttrs
|
||||
genList
|
||||
;
|
||||
inherit (builtins) fetchurl;
|
||||
inherit (config.systemConf) username;
|
||||
|
||||
# nvidia-offload-enabled = config.hardware.nvidia.prime.offload.enableOffloadCmd;
|
||||
prefix = "nvidia-offload";
|
||||
terminal = "ghostty";
|
||||
browser = "zen-twilight";
|
||||
|
||||
brightnessStep = builtins.toString 10;
|
||||
volumeStep = builtins.toString 4;
|
||||
|
||||
execOnceScript = pkgs.writeShellScript "startupExec" ''
|
||||
# Fix nemo open in terminal
|
||||
dconf write /org/cinnamon/desktop/applications/terminal/exec "''\'${terminal}''\'" &
|
||||
dconf write /org/cinnamon/desktop/applications/terminal/exec-arg "''\'''\'" &
|
||||
|
||||
# Hint dark theme
|
||||
dconf write /org/gnome/desktop/interface/color-scheme '"prefer-dark"' &
|
||||
|
||||
systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME &
|
||||
'';
|
||||
|
||||
niri_peekaboo = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/heyoeyo/niri_tweaks/refs/heads/main/niri_peekaboo.py";
|
||||
sha256 = "sha256:0l1x0bsa9vr089jhzgcz3xbh1hg15sw6njb91q0j9pdbrp2ym3dc";
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.niri = {
|
||||
enable = true;
|
||||
package = pkgs.niri-unstable;
|
||||
};
|
||||
|
||||
home-manager.users."${username}" =
|
||||
{
|
||||
osConfig,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
rofiWall = import ../../home/scripts/rofiwall.nix { inherit config pkgs; };
|
||||
rbwSelector = import ../../home/scripts/rbwSelector.nix { inherit pkgs; };
|
||||
rNiri = pkgs.writeShellScriptBin "rNiri" ''
|
||||
NIRI_SOCKET="/run/user/1000/$(ls /run/user/1000 | grep niri | head -n 1)" niri $@
|
||||
'';
|
||||
toggleWlogout = pkgs.writeShellScript "toggleWlogout" ''
|
||||
if ${pkgs.busybox}/bin/pgrep wlogout > /dev/null; then
|
||||
${pkgs.busybox}/bin/pkill wlogout
|
||||
else
|
||||
${config.programs.wlogout.package}/bin/wlogout --protocol layer-shell
|
||||
fi
|
||||
'';
|
||||
in
|
||||
with config.lib.niri.actions;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
nautilus # xdg-desktop-portal-gnome file picker
|
||||
rNiri
|
||||
];
|
||||
|
||||
xdg.portal = {
|
||||
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
|
||||
};
|
||||
|
||||
services.nfsm.enable = false;
|
||||
|
||||
programs.niri.package = osConfig.programs.niri.package;
|
||||
programs.niri.settings = {
|
||||
spawn-at-startup = [
|
||||
{ argv = [ "${execOnceScript}" ]; }
|
||||
];
|
||||
screenshot-path = "~/Pictures/Screenshots/%Y-%m-%d_%H-%M-%S.png";
|
||||
|
||||
prefer-no-csd = true;
|
||||
|
||||
xwayland-satellite = {
|
||||
enable = true;
|
||||
path = getExe pkgs.xwayland-satellite-unstable;
|
||||
};
|
||||
|
||||
animations = {
|
||||
workspace-switch.kind.spring = {
|
||||
damping-ratio = 1.0;
|
||||
stiffness = 1000;
|
||||
epsilon = 0.0001;
|
||||
};
|
||||
|
||||
window-open.kind.easing = {
|
||||
duration-ms = 150;
|
||||
curve = "ease-out-expo";
|
||||
};
|
||||
|
||||
window-close.kind.easing = {
|
||||
duration-ms = 150;
|
||||
curve = "ease-out-quad";
|
||||
};
|
||||
|
||||
window-resize.kind.spring = {
|
||||
damping-ratio = 1.0;
|
||||
stiffness = 800;
|
||||
epsilon = 0.0001;
|
||||
};
|
||||
};
|
||||
|
||||
layout.border = {
|
||||
enable = true;
|
||||
width = 4;
|
||||
active.gradient = {
|
||||
from = "#24273A";
|
||||
to = "#EBDBB2";
|
||||
angle = 45;
|
||||
in' = "oklab";
|
||||
relative-to = "window";
|
||||
};
|
||||
inactive.gradient = {
|
||||
from = "#24273A";
|
||||
to = "#24273A";
|
||||
angle = 45;
|
||||
in' = "oklab";
|
||||
relative-to = "window";
|
||||
};
|
||||
};
|
||||
|
||||
window-rules = [
|
||||
# Global
|
||||
{
|
||||
geometry-corner-radius =
|
||||
let
|
||||
round = 12.0;
|
||||
in
|
||||
{
|
||||
bottom-left = round;
|
||||
bottom-right = round;
|
||||
top-left = round;
|
||||
top-right = round;
|
||||
};
|
||||
clip-to-geometry = true;
|
||||
opacity = 1.0;
|
||||
draw-border-with-background = false;
|
||||
}
|
||||
# Float
|
||||
{
|
||||
matches = [
|
||||
{ app-id = "^xdg-desktop-portal-gtk$"; }
|
||||
{ app-id = "^(org.gnome.Nautilus)$"; }
|
||||
];
|
||||
open-floating = true;
|
||||
}
|
||||
];
|
||||
|
||||
input = {
|
||||
focus-follows-mouse.enable = true;
|
||||
mouse.accel-speed = -0.1;
|
||||
keyboard = {
|
||||
repeat-delay = 250;
|
||||
repeat-rate = 35;
|
||||
};
|
||||
};
|
||||
|
||||
binds =
|
||||
let
|
||||
sh = spawn "sh" "-c";
|
||||
in
|
||||
{
|
||||
# ==== Launch ==== #
|
||||
"Mod+Return".action = sh ''${prefix} ${terminal}'';
|
||||
"Mod+F".action = sh ''${browser}'';
|
||||
"Mod+E".action = sh ''${prefix} ${terminal} -e yazi'';
|
||||
"Mod+Ctrl+P".action = spawn "${rbwSelector}";
|
||||
"Mod+Ctrl+M".action = spawn "${toggleWlogout}";
|
||||
|
||||
# Rofi
|
||||
"Mod+Ctrl+W".action = spawn "${rofiWall}";
|
||||
"Alt+Space".action = spawn "rofi" "-config" "~/.config/rofi/apps.rasi" "-show" "drun";
|
||||
"Mod+Period".action = spawn "rofi" "-modi" "emoji" "-show" "emoji";
|
||||
"Mod+Ctrl+C".action = spawn "rofi" "-modi" "calc" "-show" "calc" "-no-show-match" "-no-sort";
|
||||
|
||||
# ==== Media ==== #
|
||||
"XF86AudioPrev".action = spawn "playerctl" "previous";
|
||||
"XF86AudioNext".action = spawn "playerctl" "next";
|
||||
"Mod+Ctrl+Comma".action = spawn "playerctl" "previous";
|
||||
"Mod+Ctrl+Period".action = spawn "playerctl" "next";
|
||||
"XF86AudioPlay".action = spawn "playerctl" "play-pause";
|
||||
"XF86AudioStop".action = spawn "playerctl" "stop";
|
||||
"XF86AudioMute".action = spawn "wpctl" "set-mute" "@DEFAULT_SINK@" "toggle";
|
||||
"XF86AudioRaiseVolume".action =
|
||||
sh ''wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ ${volumeStep}%+'';
|
||||
"XF86AudioLowerVolume".action =
|
||||
sh ''wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ ${volumeStep}%-'';
|
||||
"XF86MonBrightnessDown".action = spawn "brightnessctl set ${brightnessStep}%-";
|
||||
"XF86MonBrightnessUp".action = spawn "brightnessctl set ${brightnessStep}%+";
|
||||
|
||||
# ==== Movement ==== #
|
||||
# Mouse Scroll
|
||||
"Mod+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-workspace-down;
|
||||
};
|
||||
"Mod+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-workspace-up;
|
||||
};
|
||||
"Mod+Shift+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-column-or-monitor-right;
|
||||
};
|
||||
"Mod+Shift+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-column-or-monitor-left;
|
||||
};
|
||||
"Mod+WheelScrollRight".action = focus-column-right;
|
||||
"Mod+WheelScrollLeft".action = focus-column-left;
|
||||
|
||||
# Touchpad
|
||||
"TouchpadScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-window-or-workspace-down;
|
||||
};
|
||||
"TouchpadScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-window-or-workspace-up;
|
||||
};
|
||||
|
||||
# Monitor Focus
|
||||
"Mod+Ctrl+H".action = focus-monitor-left;
|
||||
"Mod+Ctrl+L".action = focus-monitor-right;
|
||||
|
||||
# Workspace Focus
|
||||
"Mod+Ctrl+J".action = focus-workspace-down;
|
||||
"Mod+Ctrl+K".action = focus-workspace-up;
|
||||
|
||||
# General Focus
|
||||
"Mod+J".action = focus-window-or-workspace-down;
|
||||
"Mod+K".action = focus-window-or-workspace-up;
|
||||
"Mod+H".action = focus-column-or-monitor-left;
|
||||
"Mod+L".action = focus-column-or-monitor-right;
|
||||
|
||||
# Workspace Move
|
||||
"Mod+Ctrl+Shift+J".action = move-workspace-down;
|
||||
"Mod+Ctrl+Shift+K".action = move-workspace-up;
|
||||
|
||||
# Window & Column Move
|
||||
"Mod+Shift+J".action = move-window-down-or-to-workspace-down;
|
||||
"Mod+Shift+K".action = move-window-up-or-to-workspace-up;
|
||||
"Mod+Shift+L".action = move-column-right-or-to-monitor-right;
|
||||
"Mod+Shift+H".action = move-column-left-or-to-monitor-left;
|
||||
|
||||
# Window Comsume
|
||||
"Mod+Ctrl+Shift+L".action = consume-or-expel-window-right;
|
||||
"Mod+Ctrl+Shift+H".action = consume-or-expel-window-left;
|
||||
|
||||
# ==== Action ==== #
|
||||
# General
|
||||
"Mod+C".action = center-window;
|
||||
"Mod+O".action = toggle-overview;
|
||||
"Mod+Q".action = close-window;
|
||||
"F11".action = if config.services.nfsm.enable then (spawn "nfsm-cli") else fullscreen-window;
|
||||
"Mod+Shift+slash".action = show-hotkey-overlay;
|
||||
"Mod+Ctrl+Shift+P".action = spawn "${getExe pkgs.python312}" "${niri_peekaboo}";
|
||||
|
||||
# Column Scale
|
||||
"Mod+W".action = switch-preset-column-width;
|
||||
"Mod+S".action = switch-preset-window-height;
|
||||
"Mod+P".action = expand-column-to-available-width;
|
||||
"Mod+M".action = maximize-column;
|
||||
"Mod+Ctrl+S".action = reset-window-height;
|
||||
|
||||
# Float
|
||||
"Mod+V".action = toggle-window-floating;
|
||||
"Mod+Ctrl+V".action = switch-focus-between-floating-and-tiling;
|
||||
|
||||
# Screenshot
|
||||
"Mod+Shift+S".action.screenshot = [ { show-pointer = false; } ];
|
||||
"Ctrl+Shift+S".action.screenshot-window = [
|
||||
{
|
||||
write-to-disk = false;
|
||||
}
|
||||
];
|
||||
"Mod+Ctrl+Shift+S".action.screenshot-screen = [
|
||||
{
|
||||
write-to-disk = false;
|
||||
}
|
||||
];
|
||||
}
|
||||
# Map Mod+{1 ~ 9} to workspace{1 ~ 9}
|
||||
// (pipe 9 [
|
||||
(x: genList (i: i + 1) x)
|
||||
(
|
||||
x:
|
||||
map (i: {
|
||||
name = "Mod+${toString i}";
|
||||
value.action = focus-workspace i;
|
||||
}) x
|
||||
)
|
||||
(x: listToAttrs x)
|
||||
]);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -5,11 +5,11 @@
|
|||
settings = {
|
||||
substituters = [
|
||||
"https://yazi.cachix.org"
|
||||
"https://cache.net.dn/dn-main"
|
||||
# "https://cache.net.dn/dn-main"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||
"dn-main:ZjQmZEOWpe0TjZgHGwkgtPdOUXpN82RL9wy30EW1V7k="
|
||||
# "dn-main:ZjQmZEOWpe0TjZgHGwkgtPdOUXpN82RL9wy30EW1V7k="
|
||||
];
|
||||
warn-dirty = false;
|
||||
trusted-users = [
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
../plymouth.nix
|
||||
../polkit.nix
|
||||
../hyprland.nix
|
||||
../niri.nix
|
||||
];
|
||||
|
||||
programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||
|
|
|
|||
140
system/modules/shells/noctalia/bar.nix
Normal file
140
system/modules/shells/noctalia/bar.nix
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
{
|
||||
backgroundOpacity = 1;
|
||||
capsuleOpacity = 1;
|
||||
density = "comfortable";
|
||||
exclusive = true;
|
||||
floating = true;
|
||||
marginHorizontal = 0.25;
|
||||
marginVertical = 0.25;
|
||||
outerCorners = false;
|
||||
postition = "top";
|
||||
showCapsule = true;
|
||||
widgets = {
|
||||
center = [
|
||||
{
|
||||
colorizeIcons = false;
|
||||
hideMode = "hidden";
|
||||
id = "ActiveWindow";
|
||||
maxWidth = 145;
|
||||
scrollingMode = "hover";
|
||||
showIcon = true;
|
||||
useFixedWidth = false;
|
||||
}
|
||||
];
|
||||
left = [
|
||||
{
|
||||
icon = "rocket";
|
||||
id = "CustomButton";
|
||||
leftClickExec = "noctalia-shell ipc call launcher toggle";
|
||||
leftClickUpdateText = false;
|
||||
maxTextLength = {
|
||||
horizontal = 10;
|
||||
vertical = 10;
|
||||
};
|
||||
middleClickExec = "";
|
||||
middleClickUpdateText = false;
|
||||
parseJson = false;
|
||||
rightClickExec = "";
|
||||
rightClickUpdateText = false;
|
||||
textCollapse = "";
|
||||
textCommand = "";
|
||||
textIntervalMs = 3000;
|
||||
textStream = false;
|
||||
wheelDownExec = "";
|
||||
wheelDownUpdateText = false;
|
||||
wheelExec = "";
|
||||
wheelMode = "unified";
|
||||
wheelUpExec = "";
|
||||
wheelUpUpdateText = false;
|
||||
wheelUpdateText = false;
|
||||
}
|
||||
{
|
||||
customFont = "";
|
||||
formatHorizontal = "HH:mm ddd, MMM dd";
|
||||
formatVertical = "HH mm - dd MM";
|
||||
id = "Clock";
|
||||
useCustomFont = false;
|
||||
usePrimaryColor = true;
|
||||
}
|
||||
{
|
||||
characterCount = 4;
|
||||
followFocusedScreen = false;
|
||||
hideUnoccupied = false;
|
||||
id = "Workspace";
|
||||
labelMode = "index";
|
||||
}
|
||||
{
|
||||
hideMode = "hidden";
|
||||
hideWhenIdle = false;
|
||||
id = "MediaMini";
|
||||
maxWidth = 250;
|
||||
scrollingMode = "hover";
|
||||
showAlbumArt = true;
|
||||
showArtistFirst = false;
|
||||
showProgressRing = true;
|
||||
showVisualizer = true;
|
||||
useFixedWidth = false;
|
||||
visualizerType = "linear";
|
||||
}
|
||||
];
|
||||
right = [
|
||||
{
|
||||
blacklist = [
|
||||
"Bluetooth*"
|
||||
];
|
||||
colorizeIcons = false;
|
||||
drawerEnabled = false;
|
||||
id = "Tray";
|
||||
pinned = [
|
||||
];
|
||||
}
|
||||
{
|
||||
diskPath = "/";
|
||||
id = "SystemMonitor";
|
||||
showCpuTemp = true;
|
||||
showCpuUsage = true;
|
||||
showDiskUsage = false;
|
||||
showMemoryAsPercent = false;
|
||||
showMemoryUsage = true;
|
||||
showNetworkStats = false;
|
||||
usePrimaryColor = false;
|
||||
}
|
||||
{
|
||||
id = "ScreenRecorder";
|
||||
}
|
||||
{
|
||||
id = "KeepAwake";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "Volume";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "Brightness";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "VPN";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "Bluetooth";
|
||||
}
|
||||
{
|
||||
hideWhenZero = true;
|
||||
id = "NotificationHistory";
|
||||
showUnreadBadge = true;
|
||||
}
|
||||
{
|
||||
colorizeDistroLogo = false;
|
||||
colorizeSystemIcon = "primary";
|
||||
customIconPath = "";
|
||||
enableColorization = true;
|
||||
icon = "noctalia";
|
||||
id = "ControlCenter";
|
||||
useDistroLogo = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
55
system/modules/shells/noctalia/controlCenter.nix
Normal file
55
system/modules/shells/noctalia/controlCenter.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
cards = [
|
||||
{
|
||||
enabled = true;
|
||||
id = "profile-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "shortcuts-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "audio-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "weather-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "media-sysmon-card";
|
||||
}
|
||||
];
|
||||
position = "bottom_center";
|
||||
shortcuts = {
|
||||
left = [
|
||||
{
|
||||
id = "WiFi";
|
||||
}
|
||||
{
|
||||
id = "Bluetooth";
|
||||
}
|
||||
{
|
||||
id = "ScreenRecorder";
|
||||
}
|
||||
{
|
||||
id = "WallpaperSelector";
|
||||
}
|
||||
];
|
||||
right = [
|
||||
{
|
||||
id = "Notifications";
|
||||
}
|
||||
{
|
||||
id = "PowerProfile";
|
||||
}
|
||||
{
|
||||
id = "KeepAwake";
|
||||
}
|
||||
{
|
||||
id = "NightLight";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
282
system/modules/shells/noctalia/default.nix
Normal file
282
system/modules/shells/noctalia/default.nix
Normal file
|
|
@ -0,0 +1,282 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
|
||||
inherit (config.systemConf) username;
|
||||
inherit (lib) mkForce mapAttrs;
|
||||
in
|
||||
{
|
||||
|
||||
# ==== Extra Services Settings ==== #
|
||||
services.power-profiles-daemon.enable = true;
|
||||
networking.networkmanager.enable = true;
|
||||
services.upower.enable = true;
|
||||
hardware.bluetooth.enable = true;
|
||||
# ================================= #
|
||||
|
||||
home-manager.users.${username} =
|
||||
{ config, ... }:
|
||||
{
|
||||
# ==== Disabled Services ==== #
|
||||
services.swww.enable = mkForce false; # Wallpaper
|
||||
programs.waybar.enable = mkForce false; # Bar
|
||||
services.swayidle.enable = mkForce false; # Idle
|
||||
services.sunsetr.enable = mkForce false; # Bluelight filter
|
||||
programs.hyprlock.enable = mkForce false; # Lock
|
||||
services.swaync.enable = mkForce false; # Notification daemon
|
||||
|
||||
systemd.user.services.noctalia-shell.Service.Environment = [
|
||||
"QT_QPA_PLATFORMTHEME=gtk3"
|
||||
];
|
||||
|
||||
programs.noctalia-shell = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
settingsVersion = 25;
|
||||
appLauncher = {
|
||||
customLaunchPrefix = "";
|
||||
customLaunchPrefixEnabled = false;
|
||||
enableClipPreview = true;
|
||||
enableClipboardHistory = true;
|
||||
pinnedExecs = [
|
||||
];
|
||||
position = "top_center";
|
||||
sortByMostUsed = true;
|
||||
terminalCommand = "ghostty -e";
|
||||
useApp2Unit = false;
|
||||
viewMode = "list";
|
||||
};
|
||||
audio = {
|
||||
cavaFrameRate = 30;
|
||||
externalMixer = "pwvucontrol";
|
||||
mprisBlacklist = [
|
||||
];
|
||||
preferredPlayer = "mpv";
|
||||
visualizerQuality = "high";
|
||||
visualizerType = "linear";
|
||||
volumeOverdrive = false;
|
||||
volumeStep = 5;
|
||||
};
|
||||
bar = import ./bar.nix;
|
||||
brightness = {
|
||||
brightnessStep = 5;
|
||||
enableDdcSupport = false;
|
||||
enforceMinium = true;
|
||||
};
|
||||
calendar = {
|
||||
cards = [
|
||||
{
|
||||
enabled = true;
|
||||
id = "banner-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "calendar-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "timer-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "weather-card";
|
||||
}
|
||||
];
|
||||
};
|
||||
changelog = {
|
||||
lastSeenVersion = "";
|
||||
};
|
||||
colorSchemes = {
|
||||
darkMode = true;
|
||||
generateTemplatesForPredefined = true;
|
||||
manualSunrise = "06:30";
|
||||
manualSunset = "18:30";
|
||||
matugenSchemeType = "scheme-neutral";
|
||||
predefinedScheme = "Noctalia (default)";
|
||||
schedulingMode = "off";
|
||||
useWallpaperColors = true;
|
||||
};
|
||||
controlCenter = import ./controlCenter.nix;
|
||||
dock = {
|
||||
backgroundOpacity = 1;
|
||||
colorizeIcons = false;
|
||||
displayMode = "auto_hide";
|
||||
enabled = true;
|
||||
floatingRatio = 1;
|
||||
monitors = [
|
||||
];
|
||||
onlySameOutput = true;
|
||||
pinnedApps = [
|
||||
];
|
||||
radiusRatio = 0.68;
|
||||
size = 1;
|
||||
};
|
||||
general = {
|
||||
allowPanelsOnScreenWithoutBar = true;
|
||||
animationDisabled = false;
|
||||
animationSpeed = 1.5;
|
||||
avatarImage = "${config.home.homeDirectory}/.face";
|
||||
compactLockScreen = false;
|
||||
dimmerOpacity = 0.4;
|
||||
enableShadows = true;
|
||||
forceBlackScreenCorners = true;
|
||||
language = "";
|
||||
lockOnSuspend = true;
|
||||
radiusRatio = 1;
|
||||
scaleRatio = 1;
|
||||
screenRadiusRatio = 1.09;
|
||||
shadowDirection = "bottom_right";
|
||||
shadowOffsetX = 2;
|
||||
shadowOffsetY = 3;
|
||||
showHibernateOnLockScreen = false;
|
||||
showScreenCorners = true;
|
||||
};
|
||||
hooks = {
|
||||
enabled = false;
|
||||
darkModeChange = "";
|
||||
wallpaperChange = "";
|
||||
};
|
||||
location = {
|
||||
analogClockInCalendar = false;
|
||||
firstDayOfWeek = -1;
|
||||
name = "Taipei, TW";
|
||||
showCalendarEvents = true;
|
||||
showCalendarWeather = true;
|
||||
showWeekNumberInCalendar = false;
|
||||
use12hourFormat = false;
|
||||
useFahrenheit = false;
|
||||
weatherEnabled = true;
|
||||
weatherShowEffects = true;
|
||||
};
|
||||
network = {
|
||||
wifiEnabled = true;
|
||||
};
|
||||
nightLight = {
|
||||
enabled = true;
|
||||
autoSchedule = true;
|
||||
dayTemp = "6000";
|
||||
nightTemp = "5500";
|
||||
forced = false;
|
||||
manualSunrise = "06:30";
|
||||
manualSunset = "18:30";
|
||||
};
|
||||
notifications = {
|
||||
backgroundOpacity = 1;
|
||||
criticalUrgencyDuration = 15;
|
||||
enableKeyboardLayoutToast = true;
|
||||
enabled = true;
|
||||
location = "bottom_right";
|
||||
lowUrgencyDuration = 3;
|
||||
monitors = [
|
||||
];
|
||||
normalUrgencyDuration = 8;
|
||||
overlayLayer = true;
|
||||
respectExpireTimeout = false;
|
||||
};
|
||||
osd = {
|
||||
autoHideMs = 1500;
|
||||
backgroundOpacity = 1;
|
||||
enabled = true;
|
||||
enabledTypes = [
|
||||
0
|
||||
1
|
||||
2
|
||||
];
|
||||
location = "right";
|
||||
monitors = [
|
||||
];
|
||||
overlayLayer = true;
|
||||
};
|
||||
screenRecorder = {
|
||||
audioCodec = "opus";
|
||||
audioSource = "default_output";
|
||||
colorRange = "limited";
|
||||
directory = "${config.home.homeDirectory}/Videos";
|
||||
frameRate = 60;
|
||||
quality = "very_high";
|
||||
showCursor = true;
|
||||
videoCodec = "h264";
|
||||
videoSource = "portal";
|
||||
};
|
||||
sessionMenu = import ./sessionMenu.nix;
|
||||
systemMonitor = import ./systemMonitor.nix;
|
||||
templates = import ./templates.nix;
|
||||
ui = {
|
||||
fontDefault = config.stylix.fonts.sansSerif.name;
|
||||
fontDefaultScale = 1;
|
||||
fontFixed = config.stylix.fonts.monospace.name;
|
||||
fontFixedScale = 1;
|
||||
panelBackgroundOpacity = 1;
|
||||
panelsAttachedToBar = true;
|
||||
settingsPanelAttachToBar = true;
|
||||
tooltipsEnabled = true;
|
||||
};
|
||||
wallpaper = {
|
||||
directory = "${config.home.homeDirectory}/Pictures/Wallpapers";
|
||||
enableMultiMonitorDirectories = false;
|
||||
enabled = true;
|
||||
fillColor = "#000000";
|
||||
fillMode = "crop";
|
||||
hideWallpaperFilenames = true;
|
||||
monitorDirectories = [
|
||||
];
|
||||
overviewEnabled = false;
|
||||
panelPosition = "follow_bar";
|
||||
randomEnabled = false;
|
||||
randomIntervalSec = 300;
|
||||
recursiveSearch = false;
|
||||
setWallpaperOnAllMonitors = true;
|
||||
transitionDuration = 1500;
|
||||
transitionEdgeSmoothness = 0.05;
|
||||
transitionType = "random";
|
||||
useWallhaven = false;
|
||||
wallhavenCategories = "111";
|
||||
wallhavenOrder = "desc";
|
||||
wallhavenPurity = "100";
|
||||
wallhavenQuery = "";
|
||||
wallhavenResolutionHeight = "";
|
||||
wallhavenResolutionMode = "atleast";
|
||||
wallhavenResolutionWidth = "";
|
||||
wallhavenSorting = "relevance";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.niri.settings =
|
||||
with config.lib.niri.actions;
|
||||
let
|
||||
noctalia = spawn "noctalia-shell" "ipc" "call";
|
||||
in
|
||||
{
|
||||
binds = mapAttrs (name: value: mkForce value) {
|
||||
# Core
|
||||
"Mod+Slash".action = noctalia "controlCenter" "toggle";
|
||||
"Alt+Space".action = noctalia "launcher" "toggle";
|
||||
"Mod+Ctrl+M".action = noctalia "lockScreen" "lock";
|
||||
|
||||
# Utilities
|
||||
"Mod+Comma".action = noctalia "launcher" "clipboard";
|
||||
"Mod+Period".action = noctalia "launcher" "emoji";
|
||||
"Mod+F12".action = noctalia "screenRecorder" "toggle";
|
||||
"Mod+N".action = noctalia "notifications" "toggleHistory";
|
||||
"Mod+Ctrl+N".action = noctalia "notifications" "toggleDND";
|
||||
"Mod+Ctrl+W".action = noctalia "wallpaper" "toggle";
|
||||
"Mod+Ctrl+C".action = noctalia "launcher" "calculator";
|
||||
"Mod+Ctrl+Slash".action = noctalia "wallpaper" "random";
|
||||
|
||||
# Media
|
||||
"XF86AudioPlay".action = noctalia "media" "playPause";
|
||||
"XF86AudioStop".action = noctalia "media" "pause";
|
||||
"XF86AudioPrev".action = noctalia "media" "previous";
|
||||
"XF86AudioNext".action = noctalia "media" "next";
|
||||
"Mod+Ctrl+Comma".action = noctalia "media" "previous";
|
||||
"Mod+Ctrl+Period".action = noctalia "media" "next";
|
||||
"XF86AudioMute".action = noctalia "volume" "muteOutput";
|
||||
"XF86AudioRaiseVolume".action = noctalia "volume" "increase";
|
||||
"XF86AudioLowerVolume".action = noctalia "volume" "decrease";
|
||||
"XF86MonBrightnessDown".action = noctalia "brightness" "decrease";
|
||||
"XF86MonBrightnessUp".action = noctalia "brightness" "increase";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
38
system/modules/shells/noctalia/sessionMenu.nix
Normal file
38
system/modules/shells/noctalia/sessionMenu.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
countdownDuration = 10000;
|
||||
enableCountdown = true;
|
||||
position = "bottom_center";
|
||||
powerOptions = [
|
||||
{
|
||||
action = "lock";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "suspend";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "hibernate";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "reboot";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "logout";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "shutdown";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
];
|
||||
showHeader = false;
|
||||
}
|
||||
18
system/modules/shells/noctalia/systemMonitor.nix
Normal file
18
system/modules/shells/noctalia/systemMonitor.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
cpuCriticalThreshold = 90;
|
||||
cpuPollingInterval = 3000;
|
||||
cpuWarningThreshold = 80;
|
||||
criticalColor = "";
|
||||
diskCriticalThreshold = 90;
|
||||
diskPollingInterval = 3000;
|
||||
diskWarningThreshold = 80;
|
||||
memCriticalThreshold = 90;
|
||||
memPollingInterval = 3000;
|
||||
memWarningThreshold = 80;
|
||||
networkPollingInterval = 3000;
|
||||
tempCriticalThreshold = 90;
|
||||
tempPollingInterval = 3000;
|
||||
tempWarningThreshold = 80;
|
||||
useCustomColors = false;
|
||||
warningColor = "";
|
||||
}
|
||||
22
system/modules/shells/noctalia/templates.nix
Normal file
22
system/modules/shells/noctalia/templates.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
alacritty = false;
|
||||
cava = false;
|
||||
code = false;
|
||||
discord = false;
|
||||
emacs = false;
|
||||
enableUserTemplates = false;
|
||||
foot = false;
|
||||
fuzzel = false;
|
||||
ghostty = false;
|
||||
gtk = false;
|
||||
kcolorscheme = false;
|
||||
kitty = false;
|
||||
niri = false;
|
||||
pywalfox = false;
|
||||
qt = false;
|
||||
spicetify = false;
|
||||
telegram = false;
|
||||
vicinae = false;
|
||||
walker = false;
|
||||
wezterm = false;
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
pavucontrol
|
||||
pwvucontrol
|
||||
playerctl
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ in
|
|||
enable = true;
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-medium.yaml";
|
||||
polarity = "dark";
|
||||
enableReleaseChecks = false;
|
||||
|
||||
fonts = {
|
||||
serif = config.stylix.fonts.monospace;
|
||||
|
|
@ -49,7 +50,6 @@ in
|
|||
noto-fonts-cjk-serif
|
||||
noto-fonts-color-emoji
|
||||
liberation_ttf
|
||||
# dfkai-sb
|
||||
sf-pro-display-bold
|
||||
];
|
||||
|
||||
|
|
@ -57,6 +57,8 @@ in
|
|||
};
|
||||
|
||||
home-manager.users."${username}" = {
|
||||
stylix.enableReleaseChecks = false;
|
||||
|
||||
stylix.targets.neovim.transparentBackground = {
|
||||
main = true;
|
||||
numberLine = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue