Removed old stuff(dont use NixOS on desktop anymore) + update
This commit is contained in:
parent
859ffa55e8
commit
53750afbe3
47 changed files with 22 additions and 18286 deletions
958
flake.lock
generated
958
flake.lock
generated
File diff suppressed because it is too large
Load diff
55
flake.nix
55
flake.nix
|
|
@ -21,8 +21,6 @@
|
||||||
url = "github:nixos/nixpkgs?ref=master";
|
url = "github:nixos/nixpkgs?ref=master";
|
||||||
};
|
};
|
||||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||||
stylix.url = "github:danth/stylix?ref=release-25.11";
|
|
||||||
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
|
|
||||||
|
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
|
|
||||||
|
|
@ -43,18 +41,6 @@
|
||||||
url = "git+https://git.kylekrein.com/kylekrein/emacs-config";
|
url = "git+https://git.kylekrein.com/kylekrein/emacs-config";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
beeengine = {
|
|
||||||
url = "git+https://github.com/KyleKrein/BeeEngine?submodules=1"; #"git+https://git.kylekrein.com/BeeEngine/BeeEngine?shallow=1";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
conduwuit = {
|
|
||||||
url = "git+https://forgejo.ellis.link/continuwuation/continuwuity.git";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
niri-flake = {
|
|
||||||
url = "github:sodiboo/niri-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||||
lanzaboote.url = "github:nix-community/lanzaboote";
|
lanzaboote.url = "github:nix-community/lanzaboote";
|
||||||
|
|
@ -65,10 +51,6 @@
|
||||||
url = "git+https://git.kylekrein.com/kylekrein/snowfall-lib"; #"git+file:///home/kylekrein/Git/snowfall-lib";
|
url = "git+https://git.kylekrein.com/kylekrein/snowfall-lib"; #"git+file:///home/kylekrein/Git/snowfall-lib";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
snowfall-flake = {
|
|
||||||
url = "github:snowfallorg/flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
deploy-rs = {
|
deploy-rs = {
|
||||||
url = "github:serokell/deploy-rs";
|
url = "github:serokell/deploy-rs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
@ -77,23 +59,6 @@
|
||||||
url = "github:cachix/git-hooks.nix";
|
url = "github:cachix/git-hooks.nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
quickshell = {
|
|
||||||
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
dgop = {
|
|
||||||
url = "github:AvengeMedia/dgop";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
desktopShell = {
|
|
||||||
url = "github:KyleKrein/DesktopShell";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
inputs.dgop.follows = "dgop";
|
|
||||||
};
|
|
||||||
rose-pine-hyprcursor = {
|
|
||||||
url = "github:ndom91/rose-pine-hyprcursor";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
declarative-jellyfin = {
|
declarative-jellyfin = {
|
||||||
url = "github:Sveske-Juice/declarative-jellyfin";
|
url = "github:Sveske-Juice/declarative-jellyfin";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
@ -130,10 +95,9 @@
|
||||||
};
|
};
|
||||||
# Per-channel config
|
# Per-channel config
|
||||||
channels = {
|
channels = {
|
||||||
nixpkgs-cuda = {
|
nixpkgs-libre = {
|
||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = false;
|
||||||
cudaSupport = true;
|
|
||||||
};
|
};
|
||||||
input = inputs.nixpkgs;
|
input = inputs.nixpkgs;
|
||||||
};
|
};
|
||||||
|
|
@ -143,14 +107,10 @@
|
||||||
|
|
||||||
overlays = with inputs; [
|
overlays = with inputs; [
|
||||||
emacs-kylekrein.overlays.default
|
emacs-kylekrein.overlays.default
|
||||||
niri-flake.overlays.niri
|
|
||||||
snowfall-flake.overlays.default
|
|
||||||
];
|
];
|
||||||
|
|
||||||
systems.modules.nixos = with inputs; [
|
systems.modules.nixos = with inputs; [
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
nix-flatpak.nixosModules.nix-flatpak
|
|
||||||
niri-flake.nixosModules.niri
|
|
||||||
sops-nix.nixosModules.sops
|
sops-nix.nixosModules.sops
|
||||||
nixos-facter-modules.nixosModules.facter
|
nixos-facter-modules.nixosModules.facter
|
||||||
home-manager.nixosModules.default
|
home-manager.nixosModules.default
|
||||||
|
|
@ -161,15 +121,6 @@
|
||||||
lanzaboote.nixosModules.lanzaboote
|
lanzaboote.nixosModules.lanzaboote
|
||||||
impermanence.nixosModules.impermanence
|
impermanence.nixosModules.impermanence
|
||||||
declarative-jellyfin.nixosModules.default
|
declarative-jellyfin.nixosModules.default
|
||||||
desktopShell.nixosModules.greeter
|
|
||||||
];
|
|
||||||
|
|
||||||
systems.hosts.kylekrein-framework12.modules = with inputs; [
|
|
||||||
nixos-hardware.nixosModules.framework-12-13th-gen-intel
|
|
||||||
];
|
|
||||||
|
|
||||||
homes.modules = with inputs; [
|
|
||||||
nix-flatpak.homeManagerModules.nix-flatpak
|
|
||||||
];
|
];
|
||||||
|
|
||||||
templates = import ./templates {};
|
templates = import ./templates {};
|
||||||
|
|
@ -183,7 +134,7 @@
|
||||||
};
|
};
|
||||||
kylekrein-homepc.remoteBuild = true;
|
kylekrein-homepc.remoteBuild = true;
|
||||||
};
|
};
|
||||||
exclude = ["kylekrein-wsl-wm" "kylekrein-server"];
|
exclude = ["kylekrein-wsl-wm" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs-builder = channels: {
|
outputs-builder = channels: {
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
# User information gathered by Snowfall Lib is available.
|
|
||||||
let
|
|
||||||
name = config.snowfallorg.user.name;
|
|
||||||
home = config.snowfallorg.user.home.directory;
|
|
||||||
in {
|
|
||||||
imports = lib.snowfall.fs.get-non-default-nix-files ./.;
|
|
||||||
custom = {
|
|
||||||
programs.librewolf.enable = true;
|
|
||||||
};
|
|
||||||
services.flatpak.packages = [
|
|
||||||
"org.vinegarhq.Sober"
|
|
||||||
];
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
zapzap
|
|
||||||
];
|
|
||||||
|
|
||||||
sessionVariables = {
|
|
||||||
};
|
|
||||||
|
|
||||||
stateVersion = "24.11";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
inputs.quickshell.packages.${pkgs.system}.quickshell
|
|
||||||
material-symbols
|
|
||||||
inter
|
|
||||||
fira-code
|
|
||||||
cava
|
|
||||||
wl-clipboard
|
|
||||||
cliphist
|
|
||||||
ddcutil
|
|
||||||
matugen
|
|
||||||
dgop
|
|
||||||
glib
|
|
||||||
khal # calendar
|
|
||||||
gammastep # night mode
|
|
||||||
colloid-gtk-theme
|
|
||||||
kitty
|
|
||||||
playerctl
|
|
||||||
brightnessctl
|
|
||||||
libnotify
|
|
||||||
emacs-pgtk
|
|
||||||
hyprshot
|
|
||||||
jq
|
|
||||||
kdePackages.gwenview
|
|
||||||
kdePackages.ark
|
|
||||||
inputs.rose-pine-hyprcursor.packages.${pkgs.system}.default
|
|
||||||
];
|
|
||||||
xdg.configFile."quickshell".source = "${
|
|
||||||
inputs.desktopShell.packages.${pkgs.system}.dankMaterialShell
|
|
||||||
}/etc/xdg/quickshell";
|
|
||||||
}
|
|
||||||
|
|
@ -17,35 +17,16 @@ in
|
||||||
enable = true;
|
enable = true;
|
||||||
firstNixOSInstall = 1729112485;
|
firstNixOSInstall = 1729112485;
|
||||||
};
|
};
|
||||||
#nheko.enable = osConfig.custom.presets.wayland.enable;
|
|
||||||
#xournalpp.enable = osConfig.custom.presets.wayland.enable;
|
|
||||||
librewolf.enable = osConfig.custom.presets.wayland.enable;
|
|
||||||
prismlauncher.enable = osConfig.custom.presets.gaming.enable;
|
|
||||||
minecraft-bedrock.enable = osConfig.custom.presets.gaming.enable;
|
|
||||||
bottles.enable = osConfig.custom.presets.wayland.enable;
|
|
||||||
nextcloud-client.enable = osConfig.custom.presets.wayland.enable;
|
|
||||||
thunderbird.enable = osConfig.custom.presets.wayland.enable;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs;
|
packages = with pkgs;
|
||||||
[
|
[
|
||||||
neovim
|
neovim
|
||||||
]
|
|
||||||
++ lib.optionals osConfig.custom.presets.wayland.enable [
|
|
||||||
gdb
|
|
||||||
element-desktop
|
|
||||||
vesktop
|
|
||||||
obs-studio
|
|
||||||
localsend
|
|
||||||
kdePackages.kdenlive
|
|
||||||
];
|
];
|
||||||
|
|
||||||
sessionVariables = {
|
sessionVariables = {
|
||||||
EDITOR =
|
EDITOR ="nvim";
|
||||||
if osConfig.custom.presets.wayland.enable
|
|
||||||
then "emacsclient -c"
|
|
||||||
else "nvim";
|
|
||||||
NH_OS_FLAKE = "${home}/nixos-config";
|
NH_OS_FLAKE = "${home}/nixos-config";
|
||||||
NH_HOME_FLAKE = "${home}/nixos-config";
|
NH_HOME_FLAKE = "${home}/nixos-config";
|
||||||
NH_DARWIN_FLAKE = "${home}/nixos-config";
|
NH_DARWIN_FLAKE = "${home}/nixos-config";
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
system,
|
|
||||||
inputs,
|
|
||||||
osConfig,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
emacs = pkgs.kylekrein.nixmacs.override {withLsps = true;};
|
|
||||||
in {
|
|
||||||
programs.emacs = {
|
|
||||||
enable = osConfig.custom.presets.wayland.enable;
|
|
||||||
package = emacs;
|
|
||||||
};
|
|
||||||
systemd.user.services.emacs = lib.mkIf config.programs.emacs.enable {
|
|
||||||
Unit = {
|
|
||||||
Description = "Launches (and relaunches) emacs";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.writeShellScript "run-emacs" ''
|
|
||||||
${emacs}/bin/emacs --fg-daemon
|
|
||||||
''}";
|
|
||||||
Restart = "always";
|
|
||||||
RestartSec = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
{
|
|
||||||
osConfig,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
home.packages = with pkgs; lib.optionals (config.programs.kitty.enable) [kitty-themes];
|
|
||||||
programs.fzf = {
|
|
||||||
enable = true;
|
|
||||||
enableBashIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.eza = {
|
|
||||||
enable = true;
|
|
||||||
icons = "always";
|
|
||||||
};
|
|
||||||
programs.kitty = {
|
|
||||||
enable = osConfig.custom.presets.workstation.enable;
|
|
||||||
font = {
|
|
||||||
name = "JetBrainsMono Nerd Font";
|
|
||||||
size = 20;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
confirm_os_window_close = 0;
|
|
||||||
};
|
|
||||||
#shellIntegration.enableFishIntegration = true;
|
|
||||||
themeFile = "Catppuccin-Macchiato";
|
|
||||||
#Also available: Catppuccin-Frappe Catppuccin-Latte Catppuccin-Macchiato Catppuccin-Mocha
|
|
||||||
# See all available kitty themes at: https://github.com/kovidgoyal/kitty-themes/blob/46d9dfe230f315a6a0c62f4687f6b3da20fd05e4/themes.json
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
osConfig,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
impermanence = config.custom.impermanence;
|
|
||||||
in {
|
|
||||||
config = lib.mkIf osConfig.custom.presets.wayland.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
lrcget
|
|
||||||
picard
|
|
||||||
beets
|
|
||||||
];
|
|
||||||
home.persistence = lib.mkIf impermanence.enable {
|
|
||||||
"${impermanence.persistentStorage}".directories = [
|
|
||||||
".config/MusicBrainz"
|
|
||||||
".config/beets"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,81 +0,0 @@
|
||||||
{
|
|
||||||
osConfig,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib.custom; let
|
|
||||||
username = config.snowfallorg.user.name;
|
|
||||||
home = config.snowfallorg.user.home.directory;
|
|
||||||
impermanence = config.${namespace}.impermanence;
|
|
||||||
in
|
|
||||||
lib.mkIf osConfig.custom.windowManagers.niri.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
inputs.quickshell.packages.${pkgs.system}.quickshell
|
|
||||||
material-symbols
|
|
||||||
inter
|
|
||||||
fira-code
|
|
||||||
cava
|
|
||||||
wl-clipboard
|
|
||||||
cliphist
|
|
||||||
ddcutil
|
|
||||||
matugen
|
|
||||||
dgop
|
|
||||||
glib
|
|
||||||
khal # calendar
|
|
||||||
gammastep # night mode
|
|
||||||
grim
|
|
||||||
slurp
|
|
||||||
satty
|
|
||||||
];
|
|
||||||
programs.kitty = {
|
|
||||||
themeFile = lib.mkForce null;
|
|
||||||
extraConfig = ''
|
|
||||||
include ${home}/.config/kitty/dank-theme.conf
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
xdg.configFile."quickshell".source = "${
|
|
||||||
inputs.desktopShell.packages.${pkgs.system}.dankMaterialShell
|
|
||||||
}/etc/xdg/quickshell";
|
|
||||||
home.file.".config/DankMaterialShell/settings.json".source = ./settings.json;
|
|
||||||
home.persistence = lib.mkIf impermanence.enable {
|
|
||||||
"${impermanence.persistentStorage}" = {
|
|
||||||
files = [
|
|
||||||
".local/state/DankMaterialShell/session.json"
|
|
||||||
".local/share/color-schemes/DankMatugen.colors"
|
|
||||||
];
|
|
||||||
directories = [
|
|
||||||
".cache/quickshell/dankshell"
|
|
||||||
#".config/qt5ct"
|
|
||||||
#".config/qt6ct"
|
|
||||||
#".config/gtk-3.0"
|
|
||||||
#".config/gtk-4.0"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services.desktop-shell = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Launches (and relaunches) Desktop Shell";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
ExecStart = ''${lib.getExe pkgs.bash} -c "qs -c dms"'';
|
|
||||||
Restart = "always";
|
|
||||||
RestartSec = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.niri = {
|
|
||||||
settings = {
|
|
||||||
spawn-at-startup = [
|
|
||||||
{command = ["wl-paste" "--watch" "cliphist" "store"];}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
font-family: Font Awesome, Roboto, Arial, sans-serif;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #eeeeee;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
window {
|
|
||||||
background-color: rgba(50, 63, 99, 0.718);
|
|
||||||
color: #eeeeee;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* search entry */
|
|
||||||
entry {
|
|
||||||
background-color: rgba(0, 0, 0, 0.2)
|
|
||||||
}
|
|
||||||
|
|
||||||
button, image {
|
|
||||||
background: none;
|
|
||||||
border: none
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover {
|
|
||||||
background-color: rgba(255, 255, 255, 0.1)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* in case you wanted to give category buttons a different look */
|
|
||||||
#category-button {
|
|
||||||
margin: 0 10px 0 10px
|
|
||||||
}
|
|
||||||
|
|
||||||
#pinned-box {
|
|
||||||
padding-bottom: 5px;
|
|
||||||
border-bottom: 1px dotted gray
|
|
||||||
}
|
|
||||||
|
|
||||||
#files-box {
|
|
||||||
padding: 5px;
|
|
||||||
border: 1px dotted gray;
|
|
||||||
border-radius: 15px
|
|
||||||
}
|
|
||||||
|
|
||||||
/* math operation result label */
|
|
||||||
#math-label {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 16px
|
|
||||||
}
|
|
||||||
|
|
@ -1,529 +0,0 @@
|
||||||
#https://github.com/sodiboo/niri-flake/blob/main/default-config.kdl.nix
|
|
||||||
#https://github.com/sodiboo/niri-flake/blob/main/docs.md
|
|
||||||
#https://github.com/sodiboo/system/blob/main/niri.mod.nix
|
|
||||||
{
|
|
||||||
osConfig,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib.custom; let
|
|
||||||
username = config.snowfallorg.user.name;
|
|
||||||
home = config.snowfallorg.user.home.directory;
|
|
||||||
in
|
|
||||||
lib.mkIf osConfig.custom.windowManagers.niri.enable {
|
|
||||||
custom = {
|
|
||||||
programs.nautilus = enabled;
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
playerctl
|
|
||||||
papers
|
|
||||||
brightnessctl
|
|
||||||
libnotify
|
|
||||||
custom.wvkbd-kylekrein
|
|
||||||
custom.lisgd-kylekrein
|
|
||||||
];
|
|
||||||
programs.niri = {
|
|
||||||
settings = {
|
|
||||||
spawn-at-startup = [
|
|
||||||
{
|
|
||||||
command = [
|
|
||||||
"${lib.getExe pkgs.custom.wvkbd-kylekrein}"
|
|
||||||
"--hidden"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = [
|
|
||||||
"dbus-update-activation-environment"
|
|
||||||
"--systemd"
|
|
||||||
"--all"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = [
|
|
||||||
"${pkgs.solaar}/bin/solaar"
|
|
||||||
"-w"
|
|
||||||
"hide"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
layout = {
|
|
||||||
preset-column-widths = [
|
|
||||||
{proportion = 1.0 / 2.0;}
|
|
||||||
{proportion = 1.0;}
|
|
||||||
{proportion = 2.0 / 3.0;}
|
|
||||||
{proportion = 1.0 / 3.0;}
|
|
||||||
];
|
|
||||||
default-column-width = {proportion = 1.0;};
|
|
||||||
};
|
|
||||||
binds = with config.lib.niri.actions; let
|
|
||||||
sh = spawn "sh" "-c";
|
|
||||||
emacs = action: sh "emacsclient -c --eval \"${action}\"";
|
|
||||||
screenshot-annotate = sh ''${lib.getExe pkgs.grim} -g "$(${lib.getExe pkgs.slurp} -w 0)" -t ppm - | ${lib.getExe pkgs.satty} --early-exit --copy-command 'wl-copy' --filename='-' -o '~/Pictures/Screenshots/Screenshot-%Y-%m-%d_%H:%M:%S.png' --initial-tool brush'';
|
|
||||||
in {
|
|
||||||
"Mod+E".action = sh "emacsclient -c";
|
|
||||||
"Mod+Shift+C".action = sh "nautilus";
|
|
||||||
"Mod+C".action = emacs ''(dirvish \"${home}\")'';
|
|
||||||
"Mod+T".action = spawn "kitty";
|
|
||||||
"Mod+B".action = spawn "librewolf";
|
|
||||||
"Mod+H".action = show-hotkey-overlay;
|
|
||||||
"Mod+F".action = fullscreen-window;
|
|
||||||
"Mod+R".action = switch-preset-column-width;
|
|
||||||
"Mod+Q".action = close-window;
|
|
||||||
"Mod+P".action = sh ''emacsclient -cF "((visibility . nil))" -e "(emacs-run-password-copy-field)"'';
|
|
||||||
"Mod+Shift+S".action = screenshot-annotate;
|
|
||||||
"Mod+1".action = focus-workspace 1;
|
|
||||||
"Mod+2".action = focus-workspace 2;
|
|
||||||
"Mod+3".action = focus-workspace 3;
|
|
||||||
"Mod+4".action = focus-workspace 4;
|
|
||||||
"Mod+5".action = focus-workspace 5;
|
|
||||||
"Mod+6".action = focus-workspace 6;
|
|
||||||
"Mod+7".action = focus-workspace 7;
|
|
||||||
"Mod+8".action = focus-workspace 8;
|
|
||||||
"Mod+9".action = focus-workspace 9;
|
|
||||||
"Mod+0".action = focus-workspace 10;
|
|
||||||
|
|
||||||
"Mod+Shift+1".action.move-column-to-workspace = 1;
|
|
||||||
"Mod+Shift+2".action.move-column-to-workspace = 2;
|
|
||||||
"Mod+Shift+3".action.move-column-to-workspace = 3;
|
|
||||||
"Mod+Shift+4".action.move-column-to-workspace = 4;
|
|
||||||
"Mod+Shift+5".action.move-column-to-workspace = 5;
|
|
||||||
"Mod+Shift+6".action.move-column-to-workspace = 6;
|
|
||||||
"Mod+Shift+7".action.move-column-to-workspace = 7;
|
|
||||||
"Mod+Shift+8".action.move-column-to-workspace = 8;
|
|
||||||
"Mod+Shift+9".action.move-column-to-workspace = 9;
|
|
||||||
"Mod+Shift+0".action.move-column-to-workspace = 10;
|
|
||||||
|
|
||||||
"Mod+Left".action = focus-column-left;
|
|
||||||
"Mod+Right".action = focus-column-right;
|
|
||||||
"Mod+Up".action = focus-workspace-up;
|
|
||||||
"Mod+Down".action = focus-workspace-down;
|
|
||||||
"Mod+Shift+Left".action = move-column-left;
|
|
||||||
"Mod+Shift+Right".action = move-column-right;
|
|
||||||
"Mod+Shift+Up".action = move-column-to-workspace-up;
|
|
||||||
"Mod+Shift+Down".action = move-column-to-workspace-down;
|
|
||||||
"Mod+Ctrl+Left".action = focus-monitor-left;
|
|
||||||
"Mod+Ctrl+Right".action = focus-monitor-right;
|
|
||||||
"Mod+Shift+Ctrl+Left".action = move-column-to-monitor-left;
|
|
||||||
"Mod+Shift+Ctrl+Right".action = move-column-to-monitor-right;
|
|
||||||
|
|
||||||
"Ctrl+Alt+Delete" = {
|
|
||||||
hotkey-overlay.title = "Restart Desktop Shell";
|
|
||||||
action.spawn = [
|
|
||||||
"systemctl"
|
|
||||||
"--user"
|
|
||||||
"restart"
|
|
||||||
"desktop-shell.service"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"Mod+Space" = {
|
|
||||||
hotkey-overlay.title = "App Launcher";
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"spotlight"
|
|
||||||
"toggle"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"Mod+V" = {
|
|
||||||
hotkey-overlay.title = "Clipboard Manager";
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"clipboard"
|
|
||||||
"toggle"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"Mod+M" = {
|
|
||||||
hotkey-overlay.title = "System Monitor";
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"processlist"
|
|
||||||
"toggle"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"Mod+Comma" = {
|
|
||||||
hotkey-overlay.title = "Open Settings";
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"settings"
|
|
||||||
"toggle"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"Super+L" = {
|
|
||||||
hotkey-overlay.title = "Lock";
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"lock"
|
|
||||||
"lock"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"XF86AudioRaiseVolume" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"audio"
|
|
||||||
"increment"
|
|
||||||
"3"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"XF86AudioLowerVolume" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"audio"
|
|
||||||
"decrement"
|
|
||||||
"3"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"XF86AudioMute" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"audio"
|
|
||||||
"mute"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"XF86AudioMicMute" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"audio"
|
|
||||||
"micmute"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"XF86MonBrightnessUp" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"brightness"
|
|
||||||
"increment"
|
|
||||||
"5"
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"XF86MonBrightnessDown" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action.spawn = [
|
|
||||||
"qs"
|
|
||||||
"-c"
|
|
||||||
"dms"
|
|
||||||
"ipc"
|
|
||||||
"call"
|
|
||||||
"brightness"
|
|
||||||
"decrement"
|
|
||||||
"5"
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
"XF86AudioNext" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action = sh "playerctl next";
|
|
||||||
};
|
|
||||||
"XF86AudioPause" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action = sh "playerctl play-pause";
|
|
||||||
};
|
|
||||||
"XF86AudioPlay" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action = sh "playerctl play-pause";
|
|
||||||
};
|
|
||||||
"XF86AudioPrev" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
hotkey-overlay.hidden = true;
|
|
||||||
action = sh "playerctl previous";
|
|
||||||
};
|
|
||||||
#"Mod+Tab".action = focus-window-down-or-column-right;
|
|
||||||
#"Mod+Shift+Tab".action = focus-window-up-or-column-left;
|
|
||||||
"Mod+Tab".action = toggle-overview;
|
|
||||||
};
|
|
||||||
input = {
|
|
||||||
power-key-handling.enable = false;
|
|
||||||
focus-follows-mouse = {
|
|
||||||
#enable = true;
|
|
||||||
};
|
|
||||||
warp-mouse-to-focus.enable = false;
|
|
||||||
keyboard = {
|
|
||||||
xkb.layout = "eu, ru";
|
|
||||||
xkb.options = "grp:lctrl_toggle, ctrl:nocaps";
|
|
||||||
track-layout = "window";
|
|
||||||
numlock = true;
|
|
||||||
};
|
|
||||||
touchpad = {
|
|
||||||
tap = true;
|
|
||||||
#accel-profile = "adaptive";
|
|
||||||
click-method = "clickfinger";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cursor = {
|
|
||||||
hide-after-inactive-ms = 10000;
|
|
||||||
};
|
|
||||||
gestures.hot-corners.enable = true;
|
|
||||||
prefer-no-csd = true;
|
|
||||||
environment = {
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
__GL_GSYNC_ALLOWED = "1";
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
DISPLAY = ":0";
|
|
||||||
};
|
|
||||||
layer-rules = [
|
|
||||||
{
|
|
||||||
#this is for later to place keyboard on top of hyprlock
|
|
||||||
matches = [{namespace = "wvkbd";}];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
window-rules = [
|
|
||||||
{
|
|
||||||
#active
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
is-active = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
opacity = 1.0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
#inactive
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
is-active = false;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
opacity = 1.0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
#opaque
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
app-id = "emacs";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
app-id = "blender";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
opacity = 1.0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
#Popups
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
title = "emacs-run-launcher";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
title = "Paradox Crash Reporter";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
open-floating = true;
|
|
||||||
open-focused = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
#Screenshots
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
title = "satty";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
app-id = "com.gabm.satty";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
open-floating = true;
|
|
||||||
open-focused = true;
|
|
||||||
min-width = 700;
|
|
||||||
min-height = 350;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
#PiP
|
|
||||||
matches = [
|
|
||||||
{
|
|
||||||
title = "Picture-in-Picture";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
open-floating = true;
|
|
||||||
open-focused = false;
|
|
||||||
opacity = 1.0;
|
|
||||||
default-floating-position = {
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
relative-to = "top-right";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
xwayland-satellite = {
|
|
||||||
enable = true;
|
|
||||||
path = "${lib.getExe pkgs.xwayland-satellite-unstable}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal.extraPortals = with pkgs; [
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
|
|
||||||
services.hypridle = let
|
|
||||||
niri = lib.getExe config.programs.niri.package;
|
|
||||||
loginctl = "${pkgs.systemd}/bin/loginctl";
|
|
||||||
qs = "${inputs.quickshell.packages.${pkgs.system}.quickshell}/bin/qs";
|
|
||||||
locking-script = "${qs} -c dms ipc call lock lock";
|
|
||||||
systemctl = "${pkgs.systemd}/bin/systemctl";
|
|
||||||
suspendScript = cmd:
|
|
||||||
pkgs.writeShellScript "suspend-script" ''
|
|
||||||
# check if any player has status "Playing"
|
|
||||||
${lib.getExe pkgs.playerctl} -a status | ${lib.getExe pkgs.ripgrep} Playing -q
|
|
||||||
# only suspend if nothing is playing
|
|
||||||
if [ $? == 1 ]; then
|
|
||||||
${cmd}
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
settings.general = {
|
|
||||||
before_sleep_cmd = "${loginctl} lock-session";
|
|
||||||
#after_sleep_cmd = "#${niri} msg action power-on-monitors";
|
|
||||||
lock_cmd = "${locking-script}";
|
|
||||||
ignore_dbus_inhibit = false; # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
|
|
||||||
ignore_systemd_inhibit = false; # whether to ignore systemd-inhibit --what=idle inhibitors
|
|
||||||
};
|
|
||||||
settings.listener = let
|
|
||||||
secondary = "${systemctl} suspend";
|
|
||||||
in [
|
|
||||||
#{
|
|
||||||
# timeout = 30;
|
|
||||||
# command = "pidof hyprlock && ${secondary}";
|
|
||||||
#}
|
|
||||||
{
|
|
||||||
timeout = 870;
|
|
||||||
on-timeout = "${suspendScript ''${pkgs.libnotify}/bin/notify-send "You are idle. Going to sleep in 30 seconds"''}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 900;
|
|
||||||
on-timeout = "${suspendScript "${systemctl} suspend"}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
systemd.user.services.lisgd-niri = lib.mkIf (config.custom.hardware.tablet.enable) {
|
|
||||||
Unit = {
|
|
||||||
Description = "Makes sure that you have touchscreen gestures.";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.writeShellScript "run-lisgd" ''
|
|
||||||
${pkgs.custom.lisgd-kylekrein}/bin/lisgd
|
|
||||||
''}";
|
|
||||||
Restart = "always";
|
|
||||||
RestartSec = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.user.services.autorotate-niri = lib.mkIf (config.custom.hardware.tablet.enable) {
|
|
||||||
Unit = {
|
|
||||||
Description = "Adds auto rotation to Niri.";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${pkgs.writeShellScript "autorotate" ''
|
|
||||||
transform="normal"
|
|
||||||
|
|
||||||
monitor-sensor | while read -r line; do
|
|
||||||
case "$line" in
|
|
||||||
*normal*)
|
|
||||||
new_transform="normal"
|
|
||||||
;;
|
|
||||||
*right-up*)
|
|
||||||
new_transform="270"
|
|
||||||
;;
|
|
||||||
*bottom-up*)
|
|
||||||
new_transform="180"
|
|
||||||
;;
|
|
||||||
*left-up*)
|
|
||||||
new_transform="90"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
continue
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [[ "$new_transform" != "$transform" ]]; then
|
|
||||||
transform="$new_transform"
|
|
||||||
echo "Transform: $transform"
|
|
||||||
niri msg output eDP-1 transform "$transform"
|
|
||||||
systemctl --user restart lisgd-niri.service
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
''}";
|
|
||||||
Restart = "always";
|
|
||||||
RestartSec = 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
custom.hardware.tablet = {
|
|
||||||
onTabletModeEnable = [
|
|
||||||
{
|
|
||||||
name = "autorotate";
|
|
||||||
command = "systemctl --user start autorotate-niri.service";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
onTabletModeDisable = [
|
|
||||||
{
|
|
||||||
name = "autorotate";
|
|
||||||
command = ''
|
|
||||||
systemctl --user stop autorotate-niri.service
|
|
||||||
niri msg output eDP-1 transform normal
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 164 KiB |
|
|
@ -1,223 +0,0 @@
|
||||||
{
|
|
||||||
"currentThemeName": "dynamic",
|
|
||||||
"customThemeFile": "",
|
|
||||||
"matugenScheme": "scheme-tonal-spot",
|
|
||||||
"dankBarTransparency": 0.75,
|
|
||||||
"dankBarWidgetTransparency": 0.85,
|
|
||||||
"popupTransparency": 0.92,
|
|
||||||
"dockTransparency": 1,
|
|
||||||
"use24HourClock": true,
|
|
||||||
"useFahrenheit": false,
|
|
||||||
"nightModeEnabled": false,
|
|
||||||
"weatherLocation": "51.7177044, 8.7526530",
|
|
||||||
"weatherCoordinates": "51.7177044,8.7526530",
|
|
||||||
"useAutoLocation": false,
|
|
||||||
"weatherEnabled": true,
|
|
||||||
"showLauncherButton": true,
|
|
||||||
"showWorkspaceSwitcher": true,
|
|
||||||
"showFocusedWindow": true,
|
|
||||||
"showWeather": true,
|
|
||||||
"showMusic": true,
|
|
||||||
"showClipboard": true,
|
|
||||||
"showCpuUsage": true,
|
|
||||||
"showMemUsage": true,
|
|
||||||
"showCpuTemp": true,
|
|
||||||
"showGpuTemp": true,
|
|
||||||
"selectedGpuIndex": 0,
|
|
||||||
"enabledGpuPciIds": [],
|
|
||||||
"showSystemTray": true,
|
|
||||||
"showClock": true,
|
|
||||||
"showNotificationButton": true,
|
|
||||||
"showBattery": true,
|
|
||||||
"showControlCenterButton": true,
|
|
||||||
"controlCenterShowNetworkIcon": true,
|
|
||||||
"controlCenterShowBluetoothIcon": true,
|
|
||||||
"controlCenterShowAudioIcon": true,
|
|
||||||
"controlCenterWidgets": [
|
|
||||||
{
|
|
||||||
"id": "volumeSlider",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "brightnessSlider",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "wifi",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "bluetooth",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "audioOutput",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "audioInput",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "nightMode",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 25
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "idleInhibitor",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 25
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "doNotDisturb",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 25
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "battery",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 25
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "diskUsage",
|
|
||||||
"enabled": true,
|
|
||||||
"width": 100,
|
|
||||||
"instanceId": "mfz4b7s6aer4zpglo9g",
|
|
||||||
"mountPath": "/"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"showWorkspaceIndex": false,
|
|
||||||
"showWorkspacePadding": false,
|
|
||||||
"showWorkspaceApps": true,
|
|
||||||
"maxWorkspaceIcons": 30,
|
|
||||||
"workspacesPerMonitor": true,
|
|
||||||
"workspaceNameIcons": {},
|
|
||||||
"waveProgressEnabled": true,
|
|
||||||
"clockCompactMode": false,
|
|
||||||
"focusedWindowCompactMode": false,
|
|
||||||
"runningAppsCompactMode": true,
|
|
||||||
"runningAppsCurrentWorkspace": false,
|
|
||||||
"clockDateFormat": "ddd d",
|
|
||||||
"lockDateFormat": "dddd, MMMM d",
|
|
||||||
"mediaSize": 0,
|
|
||||||
"dankBarLeftWidgets": [
|
|
||||||
"launcherButton",
|
|
||||||
"advancedWorkspaceSwitcher",
|
|
||||||
{
|
|
||||||
"id": "workspaceSwitcher",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dankBarCenterWidgets": [
|
|
||||||
{
|
|
||||||
"id": "music",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "clock",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "weather",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"dankBarRightWidgets": [
|
|
||||||
{
|
|
||||||
"id": "systemTray",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "clipboard",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "notificationButton",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "privacyIndicator",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "keyboard_layout_name",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "battery",
|
|
||||||
"enabled": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "controlCenterButton",
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"appLauncherViewMode": "grid",
|
|
||||||
"spotlightModalViewMode": "list",
|
|
||||||
"networkPreference": "auto",
|
|
||||||
"iconTheme": "System Default",
|
|
||||||
"launcherLogoMode": "os",
|
|
||||||
"launcherLogoCustomPath": "",
|
|
||||||
"launcherLogoColorOverride": "primary",
|
|
||||||
"launcherLogoColorInvertOnMode": false,
|
|
||||||
"launcherLogoBrightness": 0.5,
|
|
||||||
"launcherLogoContrast": 1,
|
|
||||||
"launcherLogoSizeOffset": 0,
|
|
||||||
"fontFamily": "Inter Variable",
|
|
||||||
"monoFontFamily": "Fira Code",
|
|
||||||
"fontWeight": 400,
|
|
||||||
"fontScale": 1,
|
|
||||||
"dankBarFontScale": 1,
|
|
||||||
"notepadUseMonospace": true,
|
|
||||||
"notepadFontFamily": "",
|
|
||||||
"notepadFontSize": 14,
|
|
||||||
"notepadShowLineNumbers": false,
|
|
||||||
"notepadTransparencyOverride": -1,
|
|
||||||
"notepadLastCustomTransparency": 0.95,
|
|
||||||
"gtkThemingEnabled": true,
|
|
||||||
"qtThemingEnabled": true,
|
|
||||||
"showDock": false,
|
|
||||||
"dockAutoHide": false,
|
|
||||||
"dockGroupByApp": false,
|
|
||||||
"dockOpenOnOverview": false,
|
|
||||||
"dockPosition": 1,
|
|
||||||
"dockSpacing": 4,
|
|
||||||
"dockBottomGap": 0,
|
|
||||||
"cornerRadius": 12,
|
|
||||||
"notificationOverlayEnabled": false,
|
|
||||||
"dankBarAutoHide": false,
|
|
||||||
"dankBarOpenOnOverview": true,
|
|
||||||
"dankBarVisible": true,
|
|
||||||
"dankBarSpacing": 4,
|
|
||||||
"dankBarBottomGap": 0,
|
|
||||||
"dankBarInnerPadding": 8,
|
|
||||||
"dankBarSquareCorners": false,
|
|
||||||
"dankBarNoBackground": false,
|
|
||||||
"dankBarGothCornersEnabled": false,
|
|
||||||
"dankBarBorderEnabled": false,
|
|
||||||
"dankBarPosition": 0,
|
|
||||||
"lockScreenShowPowerActions": true,
|
|
||||||
"hideBrightnessSlider": false,
|
|
||||||
"widgetBackgroundColor": "sth",
|
|
||||||
"surfaceBase": "s",
|
|
||||||
"notificationTimeoutLow": 5000,
|
|
||||||
"notificationTimeoutNormal": 5000,
|
|
||||||
"notificationTimeoutCritical": 0,
|
|
||||||
"notificationPopupPosition": 0,
|
|
||||||
"osdAlwaysShowValue": false,
|
|
||||||
"screenPreferences": {
|
|
||||||
"notifications": [
|
|
||||||
"all"
|
|
||||||
],
|
|
||||||
"toast": [
|
|
||||||
"all"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"animationSpeed": 2
|
|
||||||
}
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
osConfig,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib.custom; let
|
|
||||||
username = config.snowfallorg.user.name;
|
|
||||||
home = config.snowfallorg.user.home.directory;
|
|
||||||
impermanence = config.${namespace}.impermanence;
|
|
||||||
in
|
|
||||||
lib.mkIf osConfig.custom.windowManagers.niri.enable {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nordic
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.niri = {
|
|
||||||
settings = {
|
|
||||||
cursor.theme = "Nordic-cursors";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 4.2 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 294 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.6 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 7.1 MiB |
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
# User information gathered by Snowfall Lib is available.
|
|
||||||
let
|
|
||||||
name = config.snowfallorg.user.name;
|
|
||||||
home = config.snowfallorg.user.home.directory;
|
|
||||||
in {
|
|
||||||
imports = lib.snowfall.fs.get-non-default-nix-files ./.;
|
|
||||||
home = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
];
|
|
||||||
|
|
||||||
sessionVariables = {
|
|
||||||
};
|
|
||||||
|
|
||||||
stateVersion = "25.05";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,57 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
osConfig,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.hardware.tablet;
|
|
||||||
osCfg = osConfig.${namespace}.hardware.tablet;
|
|
||||||
in {
|
|
||||||
options.${namespace}.hardware.tablet = with types; {
|
|
||||||
enable = mkBoolOpt osCfg.enable "Enable tablet module for hardware that supports it";
|
|
||||||
path = mkOpt path osCfg.path "Path with a file, where it's stated, whether tablet mode 'on' or 'off'";
|
|
||||||
onTabletModeEnable = mkOpt (listOf (attrsOf str)) [] "Actions to do when entering tablet mode. Should have name and command string attributes.";
|
|
||||||
onTabletModeDisable = mkOpt (listOf (attrsOf str)) [] "Actions to do when exiting tablet mode. Should have name and command string attributes.";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
systemd.user.services.tablet-mode-watcher = {
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
ExecStart = pkgs.writeShellScript "tablet-mode-watcher" ''
|
|
||||||
state=$(${pkgs.coreutils}/bin/cat "${cfg.path}" 2>/dev/null || echo 0)
|
|
||||||
|
|
||||||
if [ "$state" -eq 1 ]; then
|
|
||||||
echo "Tablet mode ON"
|
|
||||||
${concatStringsSep "\n" (map (cmd: ''
|
|
||||||
systemd-run --user --unit=tablet-on-${cmd.name} --collect sh -c '${cmd.command}'
|
|
||||||
'')
|
|
||||||
cfg.onTabletModeEnable)}
|
|
||||||
else
|
|
||||||
echo "Tablet mode OFF"
|
|
||||||
${concatStringsSep "\n" (map (cmd: ''
|
|
||||||
systemd-run --user --unit=tablet-off-${cmd.name} --collect sh -c '${cmd.command}'
|
|
||||||
'')
|
|
||||||
cfg.onTabletModeDisable)}
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.paths.tablet-mode-watcher = {
|
|
||||||
Unit.Description = "Watch for tablet mode changes";
|
|
||||||
Path.PathChanged = cfg.path;
|
|
||||||
Install.WantedBy = ["default.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.hardware.asahi;
|
|
||||||
in {
|
|
||||||
options.${namespace}.hardware.asahi = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable hardware support for Apple Silicon (M Chips)";
|
|
||||||
imports = [
|
|
||||||
inputs.apple-silicon-support.nixosModules.default
|
|
||||||
({pkgs, ...}: {
|
|
||||||
hardware.asahi = {
|
|
||||||
peripheralFirmwareDirectory = ./firmware;
|
|
||||||
useExperimentalGPUDriver = true; #deprecated
|
|
||||||
#experimentalGPUInstallMode = "overlay";
|
|
||||||
setupAsahiSound = true;
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
mesa-asahi-edge
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,88 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
namespace,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.${namespace}.hardware.battery;
|
|
||||||
battery-path = "/sys/class/power_supply/${cfg.batteryName}";
|
|
||||||
get-battery-level = "${pkgs.writeShellScriptBin "get-battery-level" ''
|
|
||||||
cat ${battery-path}/capacity 2>/dev/null || echo "N/A"
|
|
||||||
''}/bin/get-battery-level";
|
|
||||||
get-status = "${pkgs.writeShellScriptBin "get-status" ''
|
|
||||||
cat ${battery-path}/status 2>/dev/null || echo "Unknown"
|
|
||||||
''}/bin/get-status";
|
|
||||||
get-icon = "${pkgs.writeShellScriptBin "get-icon" ''
|
|
||||||
BATTERY_LEVEL=$(${get-battery-level})
|
|
||||||
STATUS=$(${get-status})
|
|
||||||
if [[ "$BATTERY_LEVEL" == "N/A" ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ "$STATUS" == "Charging" ]]; then
|
|
||||||
if [[ $BATTERY_LEVEL -ge 90 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 80 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 70 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 60 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 50 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 40 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 30 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 20 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 10 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
else
|
|
||||||
ICON=" "
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if [[ $BATTERY_LEVEL -ge 90 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 70 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 50 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 30 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
elif [[ $BATTERY_LEVEL -ge 10 ]]; then
|
|
||||||
ICON=" "
|
|
||||||
else
|
|
||||||
ICON=" "
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$ICON"
|
|
||||||
''}/bin/get-icon";
|
|
||||||
get-remaining-time = "${pkgs.writeShellScriptBin "get-remaining-time" ''
|
|
||||||
REMAINING_ENERGY=$(cat ${battery-path}/${cfg.remainingEnergy})
|
|
||||||
POWER_USAGE=$(cat ${battery-path}/${cfg.powerUsage})
|
|
||||||
if [[ -n "$REMAINING_ENERGY" && -n "$POWER_USAGE" && "$POWER_USAGE" -ne 0 ]]; then
|
|
||||||
TIME_LEFT=$(((REMAINING_ENERGY / POWER_USAGE)))
|
|
||||||
MINUTES_LEFT=$(((( (REMAINING_ENERGY * 60) / POWER_USAGE )) - (TIME_LEFT * 60)))
|
|
||||||
echo "$TIME_LEFT h $MINUTES_LEFT min"
|
|
||||||
else
|
|
||||||
echo ""
|
|
||||||
fi
|
|
||||||
''}/bin/get-remaining-time";
|
|
||||||
in {
|
|
||||||
${namespace}.hardware.battery.scripts = {
|
|
||||||
icon = get-icon;
|
|
||||||
status = get-status;
|
|
||||||
time = get-remaining-time;
|
|
||||||
level = get-battery-level;
|
|
||||||
labelAdaptive = "${pkgs.writeShellScriptBin "labelAdaptive" ''
|
|
||||||
if [[ "$(${get-status})" == "Charging" ]]; then
|
|
||||||
echo "$(${get-battery-level})% $(${get-icon})"
|
|
||||||
else
|
|
||||||
echo "$(${get-remaining-time}) $(${get-icon})"
|
|
||||||
fi
|
|
||||||
''}/bin/labelAdaptive";
|
|
||||||
labelPercent = "${pkgs.writeShellScriptBin "labelPercent" ''
|
|
||||||
echo "$(${get-battery-level})% $(${get-icon})"
|
|
||||||
''}/bin/labelPercent";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
namespace,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.hardware.battery;
|
|
||||||
in {
|
|
||||||
options.${namespace}.hardware.battery = with types; {
|
|
||||||
enable = mkBoolOpt false "If you have a battery in your hardware, enable this";
|
|
||||||
batteryName = mkOpt str "BAT1" ''
|
|
||||||
Put your battery name here. You can find it at "/sys/class/power_supply/"
|
|
||||||
'';
|
|
||||||
remainingEnergy = mkOpt str "charge_now" ''
|
|
||||||
File in your battery, that tells the current amount of energy
|
|
||||||
'';
|
|
||||||
powerUsage = mkOpt str "current_now" ''
|
|
||||||
File in your battery, that tells, how much energy your hardware is using
|
|
||||||
'';
|
|
||||||
scripts = {
|
|
||||||
icon = mkOpt' str "";
|
|
||||||
status = mkOpt' str "";
|
|
||||||
time = mkOpt' str "";
|
|
||||||
level = mkOpt' str "";
|
|
||||||
labelAdaptive = mkOpt' str "";
|
|
||||||
labelPercent = mkOpt' str "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
|
||||||
(import ./batteryStatus.nix {
|
|
||||||
inherit config;
|
|
||||||
inherit namespace;
|
|
||||||
inherit pkgs;
|
|
||||||
})
|
|
||||||
{
|
|
||||||
services.upower.enable = true;
|
|
||||||
}
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
@ -1,88 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.hardware.framework12;
|
|
||||||
in {
|
|
||||||
options.${namespace}.hardware.framework12 = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable hardware support for framework 12. P.s. you still need to import inputs.nixos-hardware.nixosModules.framework-12-13th-gen-intel yourself";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
${namespace}.hardware = {
|
|
||||||
tablet.enable = true;
|
|
||||||
battery = {
|
|
||||||
enable = true;
|
|
||||||
batteryName = "BAT1";
|
|
||||||
remainingEnergy = "charge_now";
|
|
||||||
powerUsage = "current_now";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# Ensure that the `pinctrl_tigerlake` kernel module is loaded before `soc_button_array`.
|
|
||||||
# This is required for correcly switching to tablet mode when the display is folded back.
|
|
||||||
boot.extraModprobeConfig = ''
|
|
||||||
softdep soc_button_array pre: pinctrl_tigerlake
|
|
||||||
'';
|
|
||||||
boot.initrd.kernelModules = ["pinctrl_tigerlake"];
|
|
||||||
# Patch the `udev` rules shipping with `iio-sensor-proxy` according to:
|
|
||||||
# https://github.com/FrameworkComputer/linux-docs/blob/main/framework12/Ubuntu-25-04-accel-ubuntu25.04.md
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
iio-sensor-proxy = prev.iio-sensor-proxy.overrideAttrs (old: {
|
|
||||||
postInstall = ''
|
|
||||||
${old.postInstall or ""}
|
|
||||||
sed -i 's/.*iio-buffer-accel/#&/' $out/lib/udev/rules.d/80-iio-sensor-proxy.rules
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.intel-gpu-tools.enable = true;
|
|
||||||
services.thermald.enable = true;
|
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
environment.systemPackages = [
|
|
||||||
pkgs.framework-tool
|
|
||||||
(pkgs.writeShellScriptBin "reset-tablet" ''
|
|
||||||
sudo ${pkgs.framework-tool}/bin/framework_tool --tablet-mode tablet
|
|
||||||
sudo ${pkgs.framework-tool}/bin/framework_tool --tablet-mode auto
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
security.sudo.extraRules = [
|
|
||||||
{
|
|
||||||
users = ["ALL"];
|
|
||||||
commands = [
|
|
||||||
{
|
|
||||||
command = "${pkgs.framework-tool}/bin/framework_tool";
|
|
||||||
options = ["NOPASSWD"];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
services.xserver.videoDrivers = ["modesetting"];
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
# For modern Intel CPU's
|
|
||||||
intel-media-driver # Enable Hardware Acceleration
|
|
||||||
vpl-gpu-rt # Enable QSV
|
|
||||||
];
|
|
||||||
};
|
|
||||||
environment.sessionVariables = {LIBVA_DRIVER_NAME = "iHD";};
|
|
||||||
|
|
||||||
users.groups.touchscreen = {};
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
KERNEL=="event*", ATTRS{name}=="ILIT2901:00 222A:5539", SYMLINK+="touchscreen", MODE="0660", GROUP="touchscreen"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,44 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.hardware.hibernation;
|
|
||||||
in {
|
|
||||||
options.${namespace}.hardware.hibernation = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable hibernation";
|
|
||||||
swapFileOffset = mkOpt (nullOr int) null "Offset of swapfile. Calculate offset using https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Acquire_swap_file_offset";
|
|
||||||
resumeDevice = mkOpt' path "/dev/disk/by-label/nixos";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
boot = {
|
|
||||||
kernelParams =
|
|
||||||
[
|
|
||||||
"mem_sleep_default=deep"
|
|
||||||
]
|
|
||||||
#https://github.com/nix-community/disko/issues/651#issuecomment-2383741717
|
|
||||||
++ optional (cfg.swapFileOffset != null) "resume_offset=${builtins.toString cfg.swapFileOffset}";
|
|
||||||
resumeDevice = mkDefault cfg.resumeDevice;
|
|
||||||
};
|
|
||||||
services.logind.settings.Login = {
|
|
||||||
HandleLidSwitch = mkDefault "suspend-then-hibernate";
|
|
||||||
HandlePowerKey = mkDefault "suspend-then-hibernate";
|
|
||||||
HandlePowerKeyLongPress = mkDefault "poweroff";
|
|
||||||
};
|
|
||||||
systemd.sleep.extraConfig = ''
|
|
||||||
HibernateDelaySec=30m
|
|
||||||
SuspendState=mem
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.hardware.tablet;
|
|
||||||
in {
|
|
||||||
options.${namespace}.hardware.tablet = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable tablet module for hardware that supports it";
|
|
||||||
path = mkOpt path "/run/tablet-mode-state" "Path with a file, where it's stated, whether tablet mode 'on' or 'off'";
|
|
||||||
inputDevice = mkOpt' str "/dev/input/event4";
|
|
||||||
onTabletModeEnable = mkOpt (listOf (attrsOf str)) [] "Actions to do when entering tablet mode";
|
|
||||||
onTabletModeDisable = mkOpt (listOf (attrsOf str)) [] "Actions to do when exiting tablet mode";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
# 1. System service for watching
|
|
||||||
systemd.services = {
|
|
||||||
tablet-mode-watcher = {
|
|
||||||
description = "Watch for tablet mode changes";
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${pkgs.writeShellScript "tablet-mode-eventd" ''
|
|
||||||
if [ -f "${cfg.path}" ]; then
|
|
||||||
in_tablet_mode=$(${pkgs.coreutils}/bin/cat "${cfg.path}")
|
|
||||||
else
|
|
||||||
echo 0 > "${cfg.path}"
|
|
||||||
in_tablet_mode=0
|
|
||||||
fi
|
|
||||||
|
|
||||||
stdbuf -oL -eL ${lib.getExe pkgs.libinput} debug-events --device "${cfg.inputDevice}" | while read -r line; do
|
|
||||||
if [[ "$line" =~ switch\ tablet-mode\ state\ ([01]) ]]; then
|
|
||||||
d="''${BASH_REMATCH[1]}"
|
|
||||||
if [ "$d" -ne "$in_tablet_mode" ]; then
|
|
||||||
in_tablet_mode=$d
|
|
||||||
if [ "$d" -eq 1 ]; then
|
|
||||||
${concatStringsSep "\n" (map (cmd: ''
|
|
||||||
systemd-run --unit=tablet-on-${cmd.name} --collect sh -c '${cmd.command}'
|
|
||||||
'')
|
|
||||||
cfg.onTabletModeEnable)}
|
|
||||||
echo "Tablet mode ON"
|
|
||||||
echo 1 > "${cfg.path}"
|
|
||||||
else
|
|
||||||
${concatStringsSep "\n" (map (cmd: ''
|
|
||||||
systemd-run --unit=tablet-off-${cmd.name} --collect sh -c '${cmd.command}'
|
|
||||||
'')
|
|
||||||
cfg.onTabletModeDisable)}
|
|
||||||
echo "Tablet mode OFF"
|
|
||||||
echo 0 > "${cfg.path}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
''}";
|
|
||||||
Restart = "always";
|
|
||||||
};
|
|
||||||
wantedBy = ["graphical.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.loginManagers.sddm;
|
|
||||||
in {
|
|
||||||
options.${namespace}.loginManagers.sddm = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable sddm as login manager";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
(catppuccin-sddm.override {
|
|
||||||
flavor = "mocha";
|
|
||||||
# font = "";
|
|
||||||
fontSize = "16";
|
|
||||||
#background;
|
|
||||||
loginBackground = false;
|
|
||||||
})
|
|
||||||
wvkbd
|
|
||||||
];
|
|
||||||
services.xserver.enable = true;
|
|
||||||
services.displayManager.sddm = {
|
|
||||||
enable = true;
|
|
||||||
theme = "catppuccin-mocha";
|
|
||||||
package = mkDefault pkgs.kdePackages.sddm;
|
|
||||||
wayland.enable = mkDefault config.${namespace}.presets.wayland.enable;
|
|
||||||
settings = {
|
|
||||||
General = {
|
|
||||||
InputMethod = "wvkbd-mobintl"; # Enables optional virtual keyboard at login (SDDM). Useful for touchscreens or accessibility.
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -66,7 +66,6 @@ in {
|
||||||
git
|
git
|
||||||
btop
|
btop
|
||||||
comma
|
comma
|
||||||
snowfallorg.flake
|
|
||||||
];
|
];
|
||||||
programs.bash = {
|
programs.bash = {
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
|
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.presets.gaming;
|
|
||||||
in {
|
|
||||||
options.${namespace}.presets.gaming = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable everything that you need for gaming";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
unzip
|
|
||||||
wget
|
|
||||||
xdotool
|
|
||||||
xorg.xprop
|
|
||||||
xorg.xrandr
|
|
||||||
unixtools.xxd
|
|
||||||
xorg.xwininfo
|
|
||||||
yad
|
|
||||||
protonup-qt
|
|
||||||
protontricks
|
|
||||||
];
|
|
||||||
programs.steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
|
||||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
|
||||||
localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers
|
|
||||||
package = pkgs.steam.override {
|
|
||||||
extraPkgs = pkgs:
|
|
||||||
with pkgs; [
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libXinerama
|
|
||||||
xorg.libXScrnSaver
|
|
||||||
libpng
|
|
||||||
libpulseaudio
|
|
||||||
libvorbis
|
|
||||||
sdl3
|
|
||||||
SDL2
|
|
||||||
stdenv.cc.cc.lib
|
|
||||||
libkrb5
|
|
||||||
keyutils
|
|
||||||
gamescope
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.gamemode.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.presets.wayland;
|
|
||||||
in {
|
|
||||||
options.${namespace}.presets.wayland = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable preset with MUST HAVE wayland things";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
environment.sessionVariables = {
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
wl-clipboard
|
|
||||||
git-credential-manager
|
|
||||||
egl-wayland
|
|
||||||
pwvucontrol
|
|
||||||
];
|
|
||||||
hardware.graphics.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,134 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.presets.workstation;
|
|
||||||
in {
|
|
||||||
options.${namespace}.presets.workstation = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable workstation preset";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
${namespace} = {
|
|
||||||
presets.default = enabled;
|
|
||||||
presets.wayland = enabled;
|
|
||||||
hardware.printing = enabled;
|
|
||||||
hardware.bluetooth = enabled;
|
|
||||||
#programs.fastfetch = {
|
|
||||||
# enable = true;
|
|
||||||
# firstNixOSInstall = 1729112485;
|
|
||||||
#};
|
|
||||||
gpg = enabled;
|
|
||||||
services.syncthing = {
|
|
||||||
enable = true;
|
|
||||||
user = "kylekrein";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
services.udisks2.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs;
|
|
||||||
with pkgs.${namespace}; [
|
|
||||||
rnote
|
|
||||||
libreoffice
|
|
||||||
root-files
|
|
||||||
gparted
|
|
||||||
qdirstat
|
|
||||||
exfatprogs
|
|
||||||
tealdeer
|
|
||||||
telegram-desktop
|
|
||||||
vlc
|
|
||||||
git-credential-manager
|
|
||||||
qpwgraph
|
|
||||||
solaar
|
|
||||||
pdfarranger
|
|
||||||
densify
|
|
||||||
gimp3
|
|
||||||
krita
|
|
||||||
inkscape
|
|
||||||
cameractrls-gtk4
|
|
||||||
|
|
||||||
#kde
|
|
||||||
kdePackages.gwenview
|
|
||||||
kdePackages.ark
|
|
||||||
shotwell
|
|
||||||
|
|
||||||
deploy-rs
|
|
||||||
custom.deploy-rs-online
|
|
||||||
];
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
programs.kdeconnect.package = lib.mkDefault pkgs.kdePackages.kdeconnect-kde;
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
font-awesome
|
|
||||||
nerd-fonts.symbols-only
|
|
||||||
hack-font
|
|
||||||
noto-fonts-emoji
|
|
||||||
# microsoft fonts:
|
|
||||||
#corefonts
|
|
||||||
#vistafonts
|
|
||||||
];
|
|
||||||
environment.sessionVariables = {
|
|
||||||
MANPAGER = "emacsclient -c";
|
|
||||||
EDITOR = "emacsclient -c";
|
|
||||||
};
|
|
||||||
hardware = {
|
|
||||||
logitech.wireless.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
security.polkit.enable = true;
|
|
||||||
services.flatpak = enabled;
|
|
||||||
|
|
||||||
#programs.thunar = {
|
|
||||||
# enable = true;
|
|
||||||
# plugins = with pkgs.xfce; [
|
|
||||||
# thunar-archive-plugin
|
|
||||||
# thunar-volman
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
#programs.xfconf.enable = true; # so thunar can save config
|
|
||||||
#services.gvfs.enable = true; # Mount, trash, and other functionalities
|
|
||||||
#services.tumbler.enable = true; # Thumbnail support for images
|
|
||||||
|
|
||||||
#greeter
|
|
||||||
programs.dankMaterialShell.greeter = {
|
|
||||||
enable = config.${namespace}.windowManagers.niri.enable || config.programs.hyprland.enable;
|
|
||||||
compositor.name =
|
|
||||||
if config.${namespace}.windowManagers.niri.enable
|
|
||||||
then "niri"
|
|
||||||
else "hyprland";
|
|
||||||
configHome = let
|
|
||||||
imp = config.${namespace}.impermanence;
|
|
||||||
in "${
|
|
||||||
if imp.enable
|
|
||||||
then imp.persistentStorage
|
|
||||||
else ""
|
|
||||||
}${config.users.users.kylekrein.home}";
|
|
||||||
};
|
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.programs.dolphin;
|
|
||||||
in {
|
|
||||||
options.${namespace}.programs.dolphin = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable dolphin on non Kde environments";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
kdePackages.qtwayland
|
|
||||||
kdePackages.qtsvg
|
|
||||||
kdePackages.kio-fuse #to mount remote filesystems via FUSE
|
|
||||||
kdePackages.kio-extras #extra protocols support (sftp, fish and more)
|
|
||||||
kdePackages.kio-admin
|
|
||||||
libheif #https://github.com/NixOS/nixpkgs/issues/164021
|
|
||||||
libheif.out
|
|
||||||
|
|
||||||
#kde
|
|
||||||
kdePackages.breeze-icons
|
|
||||||
kdePackages.breeze
|
|
||||||
kdePackages.kdesdk-thumbnailers
|
|
||||||
kdePackages.kdegraphics-thumbnailers
|
|
||||||
kdePackages.kservice
|
|
||||||
kdePackages.kdbusaddons
|
|
||||||
kdePackages.kfilemetadata
|
|
||||||
kdePackages.kconfig
|
|
||||||
kdePackages.kcoreaddons
|
|
||||||
kdePackages.kcrash
|
|
||||||
kdePackages.kguiaddons
|
|
||||||
kdePackages.ki18n
|
|
||||||
kdePackages.kitemviews
|
|
||||||
kdePackages.kwidgetsaddons
|
|
||||||
kdePackages.kwindowsystem
|
|
||||||
shared-mime-info
|
|
||||||
|
|
||||||
#kde support tools
|
|
||||||
#libsForQt5.qt5ct
|
|
||||||
#qt6ct
|
|
||||||
kdePackages.kimageformats
|
|
||||||
kdePackages.dolphin
|
|
||||||
kdePackages.dolphin-plugins
|
|
||||||
];
|
|
||||||
xdg = {
|
|
||||||
menus.enable = true;
|
|
||||||
mime.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
#https://discourse.nixos.org/t/dolphin-does-not-have-mime-associations/48985/3
|
|
||||||
# This fixes the unpopulated MIME menus
|
|
||||||
environment.etc."/xdg/menus/plasma-applications.menu".text = builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu";
|
|
||||||
environment.etc."/xdg/menus/applications.menu".text = builtins.readFile "${pkgs.kdePackages.plasma-workspace}/etc/xdg/menus/plasma-applications.menu";
|
|
||||||
#environment.pathsToLink = [
|
|
||||||
# "share/thumbnailers"
|
|
||||||
#];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
username = "andrej";
|
|
||||||
admin = false;
|
|
||||||
extraGroups = ["networkmanager"];
|
|
||||||
trustedSshKeys = [];
|
|
||||||
|
|
||||||
cfg = config.${namespace}.users.${username};
|
|
||||||
in {
|
|
||||||
options.${namespace}.users.${username} = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable ${username} user";
|
|
||||||
config = mkOpt types.attrs {} "Additional home manager config for ${username}";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkUser {
|
|
||||||
inherit config;
|
|
||||||
inherit (cfg) enable;
|
|
||||||
homeConfig = cfg.config;
|
|
||||||
inherit username;
|
|
||||||
inherit admin;
|
|
||||||
inherit extraGroups;
|
|
||||||
inherit trustedSshKeys;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
username = "tania";
|
|
||||||
admin = false;
|
|
||||||
extraGroups = ["networkmanager" "touchscreen"];
|
|
||||||
trustedSshKeys = [];
|
|
||||||
|
|
||||||
cfg = config.${namespace}.users.${username};
|
|
||||||
in {
|
|
||||||
options.${namespace}.users.${username} = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable ${username} user";
|
|
||||||
config = mkOpt types.attrs {} "Additional home manager config for ${username}";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkUser {
|
|
||||||
inherit config;
|
|
||||||
inherit (cfg) enable;
|
|
||||||
homeConfig = cfg.config;
|
|
||||||
inherit username;
|
|
||||||
inherit admin;
|
|
||||||
inherit extraGroups;
|
|
||||||
inherit trustedSshKeys;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; let
|
|
||||||
cfg = config.${namespace}.windowManagers.niri;
|
|
||||||
in {
|
|
||||||
options.${namespace}.windowManagers.niri = with types; {
|
|
||||||
enable = mkBoolOpt false "Enable Niri as your window manager";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
${namespace} = {
|
|
||||||
programs.dolphin.enable = mkDefault true;
|
|
||||||
};
|
|
||||||
security.pam.services.quickshell = {};
|
|
||||||
programs.niri = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.niri-unstable;
|
|
||||||
};
|
|
||||||
niri-flake.cache.enable = true;
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
wl-clipboard
|
|
||||||
wayland-utils
|
|
||||||
libsecret
|
|
||||||
gamescope
|
|
||||||
xwayland-satellite-unstable
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -1,148 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.custom; {
|
|
||||||
facter.reportPath = ./facter.json;
|
|
||||||
custom = {
|
|
||||||
programs.dolphin = enabled;
|
|
||||||
presets.default = enabled;
|
|
||||||
presets.wayland = enabled;
|
|
||||||
presets.gaming = enabled;
|
|
||||||
hardware = {
|
|
||||||
#nvidia = enabled;
|
|
||||||
bluetooth = enabled;
|
|
||||||
printing = enabled;
|
|
||||||
};
|
|
||||||
|
|
||||||
users = {
|
|
||||||
kylekrein = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
andrej = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
presets.disko = {
|
|
||||||
ext4Swap = {
|
|
||||||
enable = true;
|
|
||||||
device = "/dev/sda";
|
|
||||||
swapSize = 16;
|
|
||||||
};
|
|
||||||
ext4 = {
|
|
||||||
enable = true;
|
|
||||||
device = "/dev/sdb";
|
|
||||||
mountpoint = "/home/andrej/SteamGames";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
#greeter
|
|
||||||
programs.dankMaterialShell.greeter = {
|
|
||||||
enable = config.${namespace}.windowManagers.niri.enable || config.programs.hyprland.enable;
|
|
||||||
compositor.name =
|
|
||||||
if config.${namespace}.windowManagers.niri.enable
|
|
||||||
then "niri"
|
|
||||||
else "hyprland";
|
|
||||||
configHome = let
|
|
||||||
imp = config.${namespace}.impermanence;
|
|
||||||
in "${
|
|
||||||
if imp.enable
|
|
||||||
then imp.persistentStorage
|
|
||||||
else ""
|
|
||||||
}${config.users.users.andrej.home}";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.flatpak = enabled;
|
|
||||||
security.pam.services.quickshell = {};
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
systemd.setPath = enabled;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [22 25565];
|
|
||||||
networking.firewall.allowedUDPPorts = [22 25565];
|
|
||||||
|
|
||||||
security.polkit.enable = true;
|
|
||||||
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
programs.kdeconnect.package = lib.mkDefault pkgs.kdePackages.kdeconnect-kde;
|
|
||||||
|
|
||||||
programs.nh = {
|
|
||||||
enable = true;
|
|
||||||
clean.enable = true;
|
|
||||||
clean.extraArgs = "--keep-since 4d --keep 3";
|
|
||||||
flake = "/etc/nixos-config";
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
libreoffice
|
|
||||||
fzf
|
|
||||||
killall
|
|
||||||
eza
|
|
||||||
fd
|
|
||||||
gparted
|
|
||||||
exfatprogs
|
|
||||||
lazygit
|
|
||||||
fastfetch
|
|
||||||
telegram-desktop
|
|
||||||
vlc
|
|
||||||
wl-clipboard
|
|
||||||
git
|
|
||||||
git-credential-manager
|
|
||||||
egl-wayland
|
|
||||||
btop
|
|
||||||
obs-studio
|
|
||||||
blender
|
|
||||||
vscodium-fhs
|
|
||||||
discord
|
|
||||||
solaar
|
|
||||||
element-desktop
|
|
||||||
|
|
||||||
prismlauncher
|
|
||||||
mcpelauncher-ui-qt
|
|
||||||
jdk
|
|
||||||
teams-for-linux
|
|
||||||
];
|
|
||||||
systemd.network.wait-online.enable = lib.mkForce false;
|
|
||||||
networking.wireless.enable = mkForce false;
|
|
||||||
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
services.udisks2.enable = true;
|
|
||||||
|
|
||||||
services.zerotierone = {
|
|
||||||
enable = true;
|
|
||||||
joinNetworks = [
|
|
||||||
"a09acf0233dccb4a"
|
|
||||||
"1d71939404962783"
|
|
||||||
"41d49af6c260338d"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
system.stateVersion = "24.11";
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,75 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
niri-config = {
|
|
||||||
programs.niri = {
|
|
||||||
settings = {
|
|
||||||
#input.power-key-handling.enable = true;
|
|
||||||
spawn-at-startup = [
|
|
||||||
{
|
|
||||||
command = [
|
|
||||||
"${lib.getExe pkgs.brightnessctl}"
|
|
||||||
"-s 20%"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
with lib.custom; {
|
|
||||||
facter.reportPath = ./facter.json;
|
|
||||||
systemd.network.wait-online.enable = lib.mkForce false; #facter
|
|
||||||
|
|
||||||
custom.hardware.hibernation = {
|
|
||||||
enable = false;
|
|
||||||
swapFileOffset = 533760;
|
|
||||||
};
|
|
||||||
custom.presets.disko.impermanenceBtrfsLuks = {
|
|
||||||
enable = true;
|
|
||||||
swapSize = 64;
|
|
||||||
};
|
|
||||||
custom.hardware.framework12 = enabled;
|
|
||||||
custom.hardware.secureBoot = enabled;
|
|
||||||
custom.hardware.tablet.inputDevice = "/dev/input/by-path/platform-gpio-keys.9.auto-event";
|
|
||||||
custom.impermanence = enabled;
|
|
||||||
custom.presets.workstation = enabled;
|
|
||||||
custom.presets.gaming = enabled;
|
|
||||||
custom.windowManagers.niri = enabled;
|
|
||||||
custom.services.ai = {
|
|
||||||
enable = true;
|
|
||||||
models = ["qwq" "llama3.1" "qwen2.5-coder:7b"];
|
|
||||||
ui = disabled;
|
|
||||||
};
|
|
||||||
custom.users.kylekrein = {
|
|
||||||
enable = true;
|
|
||||||
config = niri-config;
|
|
||||||
};
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
blender
|
|
||||||
video-downloader
|
|
||||||
];
|
|
||||||
|
|
||||||
#services.fprintd.enable = true;
|
|
||||||
#services.fprintd.tod.enable = true;
|
|
||||||
#services.fprintd.tod.driver = pkgs.libfprint-2-tod1-elan;
|
|
||||||
services.power-profiles-daemon.enable = true;
|
|
||||||
services.tlp.enable = false;
|
|
||||||
#Chat host
|
|
||||||
networking.firewall.allowedTCPPorts = [80 443 22 8448 9993 8081];
|
|
||||||
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,81 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
niri-outputs = {
|
|
||||||
programs.niri.settings.outputs = {
|
|
||||||
"DP-1" = {
|
|
||||||
scale = 1.6;
|
|
||||||
position.x = 1600;
|
|
||||||
position.y = 0;
|
|
||||||
};
|
|
||||||
"DP-3" = {
|
|
||||||
scale = 1.6;
|
|
||||||
position.x = 0;
|
|
||||||
position.y = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
with lib;
|
|
||||||
with lib.${namespace}; {
|
|
||||||
facter.reportPath = ./facter.json;
|
|
||||||
systemd.network.wait-online.enable = lib.mkForce false; #facter
|
|
||||||
|
|
||||||
custom.hardware.nvidia = enabled;
|
|
||||||
services.scx.enable = true; # by default uses scx_rustland scheduler
|
|
||||||
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_cachyos;
|
|
||||||
system.modulesTree = [pkgs.linux_cachyos.modules];
|
|
||||||
custom.impermanence = enabled;
|
|
||||||
custom.presets.workstation = enabled;
|
|
||||||
custom.presets.gaming = enabled;
|
|
||||||
custom.presets.disko.impermanenceBtrfs = {
|
|
||||||
enable = true;
|
|
||||||
device = "/dev/nvme0n1";
|
|
||||||
swapSize = 32;
|
|
||||||
};
|
|
||||||
custom.windowManagers.niri = enabled;
|
|
||||||
custom.services.ai = {
|
|
||||||
enable = true;
|
|
||||||
models = ["qwq" "llama3.1" "qwen2.5-coder:7b" "gpt-oss:20b" "gpt-oss:120b"];
|
|
||||||
};
|
|
||||||
|
|
||||||
custom.users = {
|
|
||||||
kylekrein = {
|
|
||||||
enable = true;
|
|
||||||
config = niri-outputs;
|
|
||||||
};
|
|
||||||
tania = {
|
|
||||||
inherit (config.custom.users.kylekrein) enable config;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
blender
|
|
||||||
];
|
|
||||||
|
|
||||||
services.zerotierone = {
|
|
||||||
enable = true;
|
|
||||||
port = 9994;
|
|
||||||
joinNetworks = [
|
|
||||||
"A84AC5C10AD269CA"
|
|
||||||
"db64858fed285e0f"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
#Chat host
|
|
||||||
networking.firewall.allowedTCPPorts = [80 443 22 8448 9993 8081] ++ [config.services.zerotierone.port];
|
|
||||||
networking.firewall.allowedUDPPorts = [config.services.zerotierone.port];
|
|
||||||
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
system.stateVersion = "25.05";
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,155 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
namespace,
|
|
||||||
system,
|
|
||||||
target,
|
|
||||||
format,
|
|
||||||
virtual,
|
|
||||||
systems,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.custom; {
|
|
||||||
imports = lib.snowfall.fs.get-non-default-nix-files ./.;
|
|
||||||
custom = {
|
|
||||||
presets.default = enabled;
|
|
||||||
users.kylekrein = {
|
|
||||||
enable = true;
|
|
||||||
config = {};
|
|
||||||
};
|
|
||||||
services.conduwuit = {
|
|
||||||
enable = true;
|
|
||||||
#user = "turnserver";
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
server_name = "kylekrein.com";
|
|
||||||
well_known = {
|
|
||||||
server = "matrix.kylekrein.com:443";
|
|
||||||
client = "https://matrix.kylekrein.com";
|
|
||||||
};
|
|
||||||
port = [6167];
|
|
||||||
trusted_servers = ["matrix.org"];
|
|
||||||
allow_registration = false;
|
|
||||||
registration_token = null; #nix shell nixpkgs#openssl -c openssl rand -base64 48 | tr -d '/+' | cut -c1-64
|
|
||||||
allow_federation = true;
|
|
||||||
allow_encryption = true;
|
|
||||||
|
|
||||||
allow_local_presence = true;
|
|
||||||
require_auth_for_profile_requests = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraEnvironment = {
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.caddy = {
|
|
||||||
enable = true;
|
|
||||||
#virtualHosts."kylekrein.com:8448".extraConfig = ''
|
|
||||||
# reverse_proxy http://localhost:6167
|
|
||||||
#'';
|
|
||||||
virtualHosts."kylekrein.com".extraConfig = ''
|
|
||||||
handle_path /.well-known/matrix/* {
|
|
||||||
|
|
||||||
header Access-Control-Allow-Origin *
|
|
||||||
|
|
||||||
## `Content-Type: application/json` isn't required by the matrix spec
|
|
||||||
## but some browsers (firefox) and some other tooling might preview json
|
|
||||||
## content prettier when they are made aware via Content-Type
|
|
||||||
header Content-Type application/json
|
|
||||||
|
|
||||||
respond /client `{ "m.homeserver": { "base_url": "https://matrix.kylekrein.com/" }, "org.matrix.msc3575.proxy": { "url": "https://matrix.kylekrein.com/"}, "org.matrix.msc4143.rtc_foci": [ { "type": "livekit", "livekit_service_url": "https://livekit-jwt.call.matrix.org" } ] }`
|
|
||||||
|
|
||||||
respond /server `{ "m.server": "matrix.kylekrein.com:443" }`
|
|
||||||
|
|
||||||
## return http/404 if nothing matches
|
|
||||||
respond 404
|
|
||||||
}
|
|
||||||
respond /.well-known/element/element.json `{"call":{"widget_url":"https://call.element.io"}}`
|
|
||||||
reverse_proxy * http://localhost:6167
|
|
||||||
'';
|
|
||||||
# reverse_proxy /.well-known/* http://localhost:6167
|
|
||||||
#'';
|
|
||||||
virtualHosts."matrix.kylekrein.com".extraConfig = ''
|
|
||||||
handle_path /.well-known/matrix/* {
|
|
||||||
|
|
||||||
header Access-Control-Allow-Origin *
|
|
||||||
|
|
||||||
## `Content-Type: application/json` isn't required by the matrix spec
|
|
||||||
## but some browsers (firefox) and some other tooling might preview json
|
|
||||||
## content prettier when they are made aware via Content-Type
|
|
||||||
header Content-Type application/json
|
|
||||||
|
|
||||||
respond /client `{ "m.homeserver": { "base_url": "https://matrix.kylekrein.com/" }, "org.matrix.msc3575.proxy": { "url": "https://matrix.kylekrein.com/"}, "org.matrix.msc4143.rtc_foci": [ { "type": "livekit", "livekit_service_url": "https://livekit-jwt.call.matrix.org" } ] }`
|
|
||||||
|
|
||||||
respond /server `{ "m.server": "https://matrix.kylekrein.com" }`
|
|
||||||
|
|
||||||
## return http/404 if nothing matches
|
|
||||||
respond 404
|
|
||||||
}
|
|
||||||
respond /.well-known/element/element.json `{"call":{"widget_url":"https://call.element.io"}}`
|
|
||||||
reverse_proxy * http://localhost:6167
|
|
||||||
'';
|
|
||||||
virtualHosts."uptime.kylekrein.com".extraConfig = ''
|
|
||||||
reverse_proxy * http://localhost:4621
|
|
||||||
'';
|
|
||||||
#virtualHosts."gitlab.kylekrein.com".extraConfig = ''
|
|
||||||
# reverse_proxy * unix//run/gitlab/gitlab-workhorse.socket
|
|
||||||
#'';
|
|
||||||
};
|
|
||||||
services.uptime-kuma = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
PORT = "4621";
|
|
||||||
HOST = "127.0.0.1";
|
|
||||||
};
|
|
||||||
appriseSupport = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
#Chat host
|
|
||||||
networking.firewall.allowedTCPPorts = [80 443 22 8448];
|
|
||||||
networking.firewall.allowedUDPPorts = [3478 5349];
|
|
||||||
#sops.secrets."services/conduwuit" = {mode = "0755";};
|
|
||||||
|
|
||||||
#sops.secrets."services/gitlab/dbPassword" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/rootPassword" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/secret" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/otpsecret" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/dbsecret" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/oidcKeyBase" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/activeRecordSalt" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/activeRecordPrimaryKey" = {owner = "gitlab";};
|
|
||||||
#sops.secrets."services/gitlab/activeRecordDeterministicKey" = {owner = "gitlab";};
|
|
||||||
services.gitlab = {
|
|
||||||
enable = false;
|
|
||||||
host = "gitlab.kylekrein.com";
|
|
||||||
https = true;
|
|
||||||
port = 443;
|
|
||||||
#statePath = "/persist/gitlab/state";
|
|
||||||
backup.startAt = "3:00";
|
|
||||||
databasePasswordFile = config.sops.secrets."services/gitlab/dbPassword".path;
|
|
||||||
initialRootPasswordFile = config.sops.secrets."services/gitlab/rootPassword".path;
|
|
||||||
secrets = {
|
|
||||||
secretFile = config.sops.secrets."services/gitlab/secret".path;
|
|
||||||
otpFile = config.sops.secrets."services/gitlab/otpsecret".path;
|
|
||||||
dbFile = config.sops.secrets."services/gitlab/dbsecret".path;
|
|
||||||
jwsFile = config.sops.secrets."services/gitlab/oidcKeyBase".path; #pkgs.runCommand "oidcKeyBase" {} "${pkgs.openssl}/bin/openssl genrsa 2048 > $out";
|
|
||||||
activeRecordSaltFile = config.sops.secrets."services/gitlab/activeRecordSalt".path;
|
|
||||||
activeRecordPrimaryKeyFile = config.sops.secrets."services/gitlab/activeRecordPrimaryKey".path;
|
|
||||||
activeRecordDeterministicKeyFile = config.sops.secrets."services/gitlab/activeRecordDeterministicKey".path;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.gitlab-backup.environment.BACKUP = "dump";
|
|
||||||
boot.tmp.cleanOnBoot = true;
|
|
||||||
boot.loader.grub.enable = true;
|
|
||||||
boot.loader.grub.device = "/dev/sda";
|
|
||||||
boot.loader.systemd-boot.enable = mkForce false;
|
|
||||||
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
system.stateVersion = "24.11";
|
|
||||||
# ======================== DO NOT CHANGE THIS ========================
|
|
||||||
}
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
modulesPath,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
|
||||||
];
|
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = ["ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
|
|
||||||
boot.initrd.kernelModules = [];
|
|
||||||
boot.kernelModules = [];
|
|
||||||
boot.extraModulePackages = [];
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/4f7e141c-0fc7-415a-815d-944b36f93806";
|
|
||||||
fsType = "ext4";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.eth0.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
}
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
{lib, ...}: {
|
|
||||||
# This file was populated at runtime with the networking
|
|
||||||
# details gathered from the active system.
|
|
||||||
networking = {
|
|
||||||
nameservers = [
|
|
||||||
"8.8.8.8"
|
|
||||||
];
|
|
||||||
defaultGateway = "172.31.1.1";
|
|
||||||
defaultGateway6 = {
|
|
||||||
address = "";
|
|
||||||
interface = "eth0";
|
|
||||||
};
|
|
||||||
dhcpcd.enable = false;
|
|
||||||
usePredictableInterfaceNames = lib.mkForce false;
|
|
||||||
interfaces = {
|
|
||||||
eth0 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{
|
|
||||||
address = "91.99.0.169";
|
|
||||||
prefixLength = 32;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
ipv6.addresses = [
|
|
||||||
{
|
|
||||||
address = "fe80::9400:4ff:fe30:830e";
|
|
||||||
prefixLength = 64;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
ipv4.routes = [
|
|
||||||
{
|
|
||||||
address = "172.31.1.1";
|
|
||||||
prefixLength = 32;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
ipv6.routes = [
|
|
||||||
{
|
|
||||||
address = "";
|
|
||||||
prefixLength = 128;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.udev.extraRules = ''
|
|
||||||
ATTR{address}=="96:00:04:30:83:0e", NAME="eth0"
|
|
||||||
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue