Compare commits
3 commits
859ffa55e8
...
479a630642
| Author | SHA1 | Date | |
|---|---|---|---|
| 479a630642 | |||
| 3864e34ffd | |||
| 53750afbe3 |
54 changed files with 118 additions and 18372 deletions
1112
flake.lock
generated
1112
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";
|
||||
};
|
||||
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";
|
||||
|
||||
|
|
@ -43,18 +41,6 @@
|
|||
url = "git+https://git.kylekrein.com/kylekrein/emacs-config";
|
||||
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";
|
||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||
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";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
snowfall-flake = {
|
||||
url = "github:snowfallorg/flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
deploy-rs = {
|
||||
url = "github:serokell/deploy-rs";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
|
@ -77,23 +59,6 @@
|
|||
url = "github:cachix/git-hooks.nix";
|
||||
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 = {
|
||||
url = "github:Sveske-Juice/declarative-jellyfin";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
|
@ -130,10 +95,9 @@
|
|||
};
|
||||
# Per-channel config
|
||||
channels = {
|
||||
nixpkgs-cuda = {
|
||||
nixpkgs-libre = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
cudaSupport = true;
|
||||
allowUnfree = false;
|
||||
};
|
||||
input = inputs.nixpkgs;
|
||||
};
|
||||
|
|
@ -143,14 +107,10 @@
|
|||
|
||||
overlays = with inputs; [
|
||||
emacs-kylekrein.overlays.default
|
||||
niri-flake.overlays.niri
|
||||
snowfall-flake.overlays.default
|
||||
];
|
||||
|
||||
systems.modules.nixos = with inputs; [
|
||||
home-manager.nixosModules.home-manager
|
||||
nix-flatpak.nixosModules.nix-flatpak
|
||||
niri-flake.nixosModules.niri
|
||||
sops-nix.nixosModules.sops
|
||||
nixos-facter-modules.nixosModules.facter
|
||||
home-manager.nixosModules.default
|
||||
|
|
@ -161,15 +121,6 @@
|
|||
lanzaboote.nixosModules.lanzaboote
|
||||
impermanence.nixosModules.impermanence
|
||||
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 {};
|
||||
|
|
@ -183,7 +134,7 @@
|
|||
};
|
||||
kylekrein-homepc.remoteBuild = true;
|
||||
};
|
||||
exclude = ["kylekrein-wsl-wm" "kylekrein-server"];
|
||||
exclude = ["kylekrein-wsl-wm" ];
|
||||
};
|
||||
|
||||
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;
|
||||
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 = {
|
||||
packages = with pkgs;
|
||||
[
|
||||
neovim
|
||||
]
|
||||
++ lib.optionals osConfig.custom.presets.wayland.enable [
|
||||
gdb
|
||||
element-desktop
|
||||
vesktop
|
||||
obs-studio
|
||||
localsend
|
||||
kdePackages.kdenlive
|
||||
];
|
||||
|
||||
sessionVariables = {
|
||||
EDITOR =
|
||||
if osConfig.custom.presets.wayland.enable
|
||||
then "emacsclient -c"
|
||||
else "nvim";
|
||||
EDITOR ="nvim";
|
||||
NH_OS_FLAKE = "${home}/nixos-config";
|
||||
NH_HOME_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
|
||||
btop
|
||||
comma
|
||||
snowfallorg.flake
|
||||
];
|
||||
programs.bash = {
|
||||
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;
|
||||
};
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ with lib.${namespace}; let
|
|||
trustedSshKeys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFDdxZ5OyGcfD1JwEa4RWw86HWZ2dKFR0syrRckl7EvG kylekrein@kylekrein-homepc"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAWDM28XBxm4PFBNOouNWxqVmDj1ulUGEgHsRYoODCDG anaconda"
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINYO1JV6qkQM+EW2WY/RxDFihgSKuFHF1hVtzl+F9ye4 kylekrein@anaconda"
|
||||
];
|
||||
|
||||
cfg = config.${namespace}.users.${username};
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
'';
|
||||
}
|
||||
|
|
@ -112,6 +112,7 @@ in {
|
|||
custom.impermanence = enabled;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
quickemu
|
||||
ente-cli
|
||||
tmux
|
||||
icloudpd
|
||||
|
|
@ -128,6 +129,13 @@ in {
|
|||
"rtw89_8852ce"
|
||||
];
|
||||
|
||||
programs.virt-manager.enable = false;
|
||||
|
||||
users.groups.libvirtd.members = ["kylekrein"];
|
||||
|
||||
virtualisation.libvirtd.enable = true;
|
||||
|
||||
|
||||
custom.users.kylekrein = {
|
||||
enable = true;
|
||||
config = {};
|
||||
|
|
|
|||
|
|
@ -73,4 +73,5 @@ in {
|
|||
};
|
||||
};
|
||||
};
|
||||
fileSystems."/var/lib".neededForBoot = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
virtualisation.oci-containers.backend = "podman";
|
||||
|
||||
virtualisation.oci-containers.containers.aliasvault = {
|
||||
image = "ghcr.io/aliasvault/aliasvault:0.25.0";
|
||||
image = "ghcr.io/aliasvault/aliasvault:0.26.6";
|
||||
autoStart = true;
|
||||
|
||||
ports = [
|
||||
|
|
|
|||
|
|
@ -4,15 +4,8 @@
|
|||
config,
|
||||
...
|
||||
}: {
|
||||
systemd.services.navidrome.serviceConfig.ExecStart = with lib; let
|
||||
cfg = config.services.navidrome;
|
||||
settingsFormat = pkgs.formats.toml {};
|
||||
in
|
||||
mkForce ''
|
||||
${pkgs.bash}/bin/bash -c "${getExe cfg.package} --configfile '${settingsFormat.generate "navidrome.toml" cfg.settings}'"
|
||||
'';
|
||||
services.navidrome = {
|
||||
enable = true;
|
||||
enable = false; #doesnt build 24.02.2026
|
||||
settings = {
|
||||
Scanner.Schedule = "@every 24h";
|
||||
MusicFolder = "/zstorage/media/music";
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ in {
|
|||
sops.secrets."services/nextcloud/whiteboard" = {owner = "nextcloud";};
|
||||
services.nextcloud = {
|
||||
enable = true;
|
||||
maxUploadSize = "80G";
|
||||
package = pkgs.nextcloud32;
|
||||
database.createLocally = true;
|
||||
config = {
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ in {
|
|||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations = config.services.nginx.virtualHosts."matrix.kylekrein.com".locations;
|
||||
extraConfig = ''
|
||||
client_max_body_size 1G;
|
||||
'';
|
||||
};
|
||||
|
||||
"turn.kylekrein.com" = {
|
||||
|
|
@ -71,6 +74,9 @@ in {
|
|||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations = matrixLocations;
|
||||
extraConfig = ''
|
||||
client_max_body_size 1G;
|
||||
'';
|
||||
};
|
||||
|
||||
"immich.kylekrein.com" = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue