This commit is contained in:
2025-12-31 15:03:16 +02:00
parent c93c93a810
commit fa32ae5510
69 changed files with 1093 additions and 659 deletions
-5
View File
@@ -6,11 +6,6 @@
./pipewire.nix
];
fonts.fontDir.enable = true;
security = {
pam = {
services.greetd.enableGnomeKeyring = config.services.greetd.enable && config.services.gnome.gnome-keyring.enable;
};
};
services.udisks2.enable = true;
programs.dconf.enable = true;
}
@@ -5,21 +5,16 @@
...
}: let
inherit (lib) mkEnableOption mkIf;
cfg = config.module.desktop.gnome-keyring;
cfg = config.module.gnome-keyring;
in {
options = {
module.desktop.gnome-keyring.enable = mkEnableOption "enable gnome keyring";
module.gnome-keyring.enable = mkEnableOption "enable gnome keyring";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
gcr_4
libsecret
];
environment.systemPackages = with pkgs; [gcr_4 libsecret];
programs.seahorse.enable = true;
services.gnome.gnome-keyring.enable = true;
xdg.portal.config.common = {
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
xdg.portal.config.common."org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
}
+1
View File
@@ -31,6 +31,7 @@ in {
};
})
(mkIf (cfg.displayManager == "greetd") {
security.pam.services.greetd.enableGnomeKeyring = config.services.greetd.enable && config.services.gnome.gnome-keyring.enable;
programs.regreet.enable = true;
services.greetd = {
enable = true;
+43 -40
View File
@@ -5,57 +5,60 @@
}: let
inherit (lib) mkEnableOption mkIf;
cfg = config.sound.pipewire;
cfg = config.module.pipewire;
in {
options = {
sound.pipewire.enable = mkEnableOption "enable pipewire";
module.pipewire.enable = mkEnableOption "enable pipewire";
};
config = mkIf cfg.enable {
security.rtkit.enable = true;
security.rtkit = {
enable = true;
args = ["--no-canary"];
};
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
extraConfig = {
pipewire = {
"92-low-latency" = {
"context.properties" = {
"default.clock.rate" = 48000;
"default.clock.allowed-rates" = [
44100
48000
88200
96000
];
"default.clock.min-quantum" = 512;
"default.clock.quantum" = 4096;
"default.clock.max-quantum" = 8192;
};
};
"93-no-resampling" = {
"context.properties" = {
"default.clock.rate" = 48000;
"default.clock.allowed-rates" = [
44100
48000
96000
192000
];
};
};
"94-no-upmixing" = {
"stream.properties" = {
"channelmix.upmix" = false;
};
};
};
# extraConfig.pipewire."92-low-latency" = {
# "context.properties" = {
# "default.clock.rate" = 48000;
# "default.clock.quantum" = 32;
# "default.clock.min-quantum" = 32;
# "default.clock.max-quantum" = 32;
# };
# };
wireplumber.extraConfig."10-alsa-vm" = {
"api.alsa.period-size" = 1024 / 2; # seems to fix random crackling
};
extraConfig.pipewire-pulse."93-auto-connect" = {
"pulse.cmd" = [
{
cmd = "load-module";
args = "module-switch-on-connect";
}
];
};
# extraConfig.pipewire-pulse."92-low-latency" = {
# "context.properties" = [
# {
# name = "libpipewire-module-protocol-pulse";
# args = {};
# }
# ];
# "pulse.properties" = {
# "pulse.min.req" = "32/48000";
# "pulse.default.req" = "32/48000";
# "pulse.max.req" = "32/48000";
# "pulse.min.quantum" = "32/48000";
# "pulse.max.quantum" = "32/48000";
# };
# "stream.properties" = {
# "node.latency" = "32/48000";
# "resample.quality" = 1;
# };
# };
};
};
}
+1 -1
View File
@@ -17,7 +17,7 @@ in {
};
config = mkIf cfg.enable {
module.desktop.displayManager = "cosmic";
sound.pipewire.enable = true;
module.pipewire.enable = true;
environment.sessionVariables.COSMIC_DATA_CONTROL_ENABLED = 1;
services.desktopManager.cosmic.enable = true;
+3 -3
View File
@@ -4,8 +4,8 @@
./cosmic
./dms
./gnome
./hyprland
./niri
./plasma
# ./hyprland
# ./niri
# ./plasma
];
}
+12 -13
View File
@@ -23,26 +23,25 @@ in {
enable = true;
extraPortals = with pkgs; [xdg-desktop-portal-gnome xdg-desktop-portal-gtk];
config.niri.default = ["gnome" "gtk"];
config.common."org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
module.desktop.gnome-keyring.enable = true;
sound.pipewire.enable = true;
module.gnome-keyring.enable = true;
module.pipewire.enable = true;
services.gvfs.enable = true;
programs.niri = {
enable = true;
package = perSystem.niri-flake.niri-unstable;
};
systemd.user.services.niri-flake-polkit.enable = false;
programs.dankMaterialShell = {
enable = true;
greeter = {
programs = {
niri.enable = true;
niri.package = perSystem.niri-flake.niri-unstable;
dankMaterialShell = {
enable = true;
configHome = "/home/user";
compositor.name = "niri";
greeter = {
enable = true;
configHome = "/home/user";
compositor.name = "niri";
};
};
};
};
+1 -1
View File
@@ -14,7 +14,7 @@ in {
config = lib.mkMerge [
(mkIf cfg.enable {
module.desktop.displayManager = "gdm";
sound.pipewire.enable = true;
module.pipewire.enable = true;
services.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = with pkgs; [
orca
+1 -1
View File
@@ -5,7 +5,7 @@
...
}: let
inherit (lib) mkIf mkEnableOption getExe;
cfg = config.desktop.niri;
cfg = config.desktop.jay;
in {
options = {
desktop.niri.enable =
+3 -5
View File
@@ -15,11 +15,9 @@ in {
};
config = lib.mkMerge [
(mkIf cfg.enable {
module.desktop = {
displayManager = "greetd";
gnome-keyring.enable = true;
};
sound.pipewire.enable = true;
module.desktop.displayManager = "greetd";
module.gnome-keyring.enable = true;
module.pipewire.enable = true;
# nixpkgs.overlays = [inputs.niri.overlays.default];
-45
View File
@@ -1,45 +0,0 @@
{
lib,
pkgs,
...
}: {
boot.tmp.cleanOnBoot = lib.mkDefault true;
console.font = "${pkgs.spleen}/share/consolefonts/spleen-16x32.psfu";
environment = {
ldso32 = null;
# memoryAllocator.provider = "mimalloc"; # weird memory consumption stuff
variables = {
LESS = "-R --mouse";
};
};
networking.networkmanager.enable = true;
services.openssh.settings = {
X11Forwarding = false;
KbdInteractiveAuthentication = false;
PasswordAuthentication = false;
UseDns = false;
# unbind gnupg sockets if they exists
StreamLocalBindUnlink = true;
# Use key exchange algorithms recommended by `nixpkgs#ssh-audit`
KexAlgorithms = [
"curve25519-sha256"
"curve25519-sha256@libssh.org"
"diffie-hellman-group16-sha512"
"diffie-hellman-group18-sha512"
"sntrup761x25519-sha512@openssh.com"
];
};
services.journald.extraConfig = ''
SystemMaxUse=1G
'';
systemd.coredump.extraConfig = ''
Storage=none
ProcessSizeMax=0
'';
}
-8
View File
@@ -1,8 +0,0 @@
{
imports = [
./common.nix
./misc
./stylix
./virt
];
}
-6
View File
@@ -1,6 +0,0 @@
{
imports = [
./opentabletdriver.nix
./qmk-vial.nix
];
}
@@ -1,22 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkIf mkEnableOption;
in {
options = {
module.misc.opentabletdriver.enable =
mkEnableOption "enables opentabletdriver";
};
config = mkIf config.module.misc.opentabletdriver.enable {
hardware.opentabletdriver = {
enable = true;
daemon.enable = true;
blacklistedKernelModules = [
"hid-uclogic"
"wacom"
];
};
};
}
-17
View File
@@ -1,17 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib) mkIf mkEnableOption;
in {
options = {
module.misc.qmk-vial.enable =
mkEnableOption "adds a udev rule for vial keyboards";
};
config = mkIf config.module.misc.qmk-vial.enable {
services.udev.extraRules = ''
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
'';
};
}
-382
View File
@@ -1,382 +0,0 @@
{
config,
inputs,
lib,
pkgs,
...
}: let
inherit (lib) mkEnableOption mkOption mkIf;
inherit (lib) optionalAttrs;
inherit (lib.types) bool str;
cfg = config.module.stylix;
fromBase16Schemes = f: "${pkgs.base16-schemes}/share/themes/${f}.yaml";
interPackage = pkgs.inter;
iosevkaPackage = pkgs.nerd-fonts.iosevka;
iosevkaTermPackage = pkgs.nerd-fonts.iosevka-term;
mesloLgPackage = pkgs.nerd-fonts.meslo-lg;
# jetBrainsMonoPackage = pkgs.nerd-fonts.jetbrains-mono;
geistMonoPackage = pkgs.nerd-fonts.geist-mono;
geistPackage = pkgs.geist-font;
wallpapers = import ./wallpapers.nix;
interIosevka = {
serif = {
package = interPackage;
name = "Inter";
};
monospace = {
package = iosevkaTermPackage;
name = "IosevkaTerm Nerd Font Mono";
};
};
themes = {
dark = {
ashes = {
polarity = "dark";
base16Scheme = fromBase16Schemes "classic-dark";
image = wallpapers.abstract.lambda;
inherit (interIosevka) serif monospace;
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
rose-pine-moon = {
polarity = "dark";
base16Scheme = fromBase16Schemes "rose-pine-moon";
image = wallpapers.cyber-dawn;
inherit (interIosevka) serif monospace;
cursor = {
package = pkgs.nordzy-cursor-theme;
name = "Nordzy-cursors";
size = 24;
};
};
rose-pine = {
polarity = "dark";
base16Scheme = fromBase16Schemes "rose-pine";
image = wallpapers.cyber-dawn;
inherit (interIosevka) serif monospace;
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
kanagawa = {
polarity = "dark";
base16Scheme = fromBase16Schemes "kanagawa";
image = wallpapers.cyber-dawn;
inherit (interIosevka) serif monospace;
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
sandcastle = {
polarity = "dark";
base16Scheme = fromBase16Schemes "sandcastle";
image = wallpapers.abstract.waves;
serif = {
package = geistPackage;
name = "Geist";
};
monospace = {
package = geistMonoPackage;
name = "GeistMono NFM";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
gruvbox-dark-pale = {
polarity = "dark";
base16Scheme = fromBase16Schemes "gruvbox-dark-pale";
image = wallpapers.mountains-sepia;
serif = {
package = geistPackage;
name = "Geist";
};
monospace = {
package = geistMonoPackage;
name = "GeistMono Nerd Font";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
nord = {
polarity = "dark";
base16Scheme = fromBase16Schemes "nord";
image = builtins.fetchurl {
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
name = "wallhaven-l8l9gq.png";
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
};
inherit (interIosevka) serif monospace;
cursor = {
package = pkgs.nordzy-cursor-theme;
name = "Nordzy-cursors";
size = 32;
};
};
helios = {
polarity = "dark";
base16Scheme = fromBase16Schemes "helios";
image = builtins.fetchurl {
url = "https://w.wallhaven.cc/full/lq/wallhaven-lqorw2.png";
name = "wallhaven-lqorw2.png";
sha256 = "sha256:1rjchjq4pc2jyq8dvpa17mmscv9qcm0h0zv468lsf8s51anpid6p";
};
inherit (interIosevka) serif monospace;
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
sulphurpool = {
polarity = "dark";
base16Scheme = fromBase16Schemes "atelier-sulphurpool";
image = builtins.fetchurl {
url = "https://w.wallhaven.cc/full/rd/wallhaven-rd5q3m.jpg";
name = "wallhaven-rd5q3m.jpg";
sha256 = "sha256:1sa2739vwwv1xafzjvxlg3kvq26xmcxg6hrwq29q40j617r63sy6";
};
serif = {
package = interPackage;
name = "Inter Nerd Font";
};
monospace = {
package = iosevkaTermPackage;
name = "IosevkaTerm Nerd Font Mono";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
vesper = {
polarity = "dark";
base16Scheme = fromBase16Schemes "vesper";
image = wallpapers.abstract.squares;
serif = {
package = geistPackage;
name = "Geist";
};
monospace = {
package = geistMonoPackage;
name = "GeistMono Nerd Font";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 24;
};
};
};
light = {
rose-pine-dawn = {
polarity = "light";
base16Scheme = fromBase16Schemes "rose-pine-dawn";
image = wallpapers.cyber-dawn;
serif = {
package = iosevkaPackage;
name = "Iosevka Nerd Font Propo";
};
monospace = {
package = iosevkaTermPackage;
name = "IosevkaTerm Nerd Font Mono";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 24;
};
nord-light = {
polarity = "light";
base16Scheme = fromBase16Schemes "nord-light";
image = builtins.fetchurl {
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
name = "wallhaven-l8l9gq.png";
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
};
serif = {
package = iosevkaPackage;
name = "Iosevka Nerd Font Propo";
};
monospace = {
package = iosevkaTermPackage;
name = "IosevkaTerm Nerd Font Mono";
};
cursor = {
package = pkgs.nordzy-cursor-theme;
name = "Nordzy-cursors-white";
size = 32;
};
};
};
himalaya = {
# lightly pink like himalayan salt
polarity = "light";
base16Scheme = fromBase16Schemes "atelier-plateau-light";
image = wallpapers.mountains-pink;
serif = {
package = interPackage;
name = "Inter Nerd Font";
};
monospace = {
package = mesloLgPackage;
name = "MesloLGM Nerd Font Mono";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 24;
};
};
github = {
polarity = "light";
base16Scheme = fromBase16Schemes "github";
image = wallpapers.abstract.squares;
serif = {
package = geistPackage;
name = "Geist Light";
};
monospace = {
package = geistMonoPackage;
name = "GeistMono Nerd Font";
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
size = 24;
};
};
};
};
in {
imports = with inputs; [
stylix.nixosModules.stylix
];
options = {
module.stylix = {
enable = mkEnableOption "enable stylix";
useCursor = mkOption {
type = bool;
default = true;
description = "enable cursor settings";
};
theme = mkOption {
type = str;
default = "nord";
};
polarity = mkOption {
type = lib.types.enum ["dark" "light"];
default = "dark";
};
};
};
config = mkIf cfg.enable {
fonts.packages = [pkgs.nerd-fonts.symbols-only];
stylix = let
theme = themes.${cfg.polarity}.${cfg.theme};
in
{
autoEnable = true;
enable = true;
# TODO: disable when stylix updates
enableReleaseChecks = false;
inherit (cfg) polarity;
inherit
(theme)
# image
base16Scheme
;
image = null;
targets.gtksourceview.enable = false;
opacity = {
applications = 1.0;
terminal = 1.0;
popups = 1.0;
desktop = 1.0;
};
fonts = {
sizes = {
applications = 13;
terminal = 13;
popups = 14;
desktop = 13;
};
inherit (theme) serif monospace;
sansSerif = config.stylix.fonts.serif;
emoji = config.stylix.fonts.serif;
};
}
// optionalAttrs cfg.useCursor {
cursor = {
inherit (theme.cursor) package name size;
};
};
};
}
@@ -1,20 +0,0 @@
let
fetchPaper = url: name: sha256: builtins.fetchurl {inherit url name sha256;};
in {
abstract = {
circle = fetchPaper "https://w.wallhaven.cc/full/ml/wallhaven-mlly8k.png" "wallhaven-mlly8k.png" "e5ZxRxZdCf0/fJ9RNurGdhRmMCthK9guJZ1Uf1IbG8E=";
squares = fetchPaper "https://w.wallhaven.cc/full/p9/wallhaven-p91dym.jpg" "wallhaven-p91dym.jpg" "wnsAhh0Soxm+lxahh+Xc/+CAw/abWgPIkeoOlzNGaDo=";
waves = fetchPaper "https://w.wallhaven.cc/full/5y/wallhaven-5ydl93.png" "wallhaven-5ydl93.png" "fTE2cyn2mkx05+Zn6qcs4+Rb7AYD0uyi6CNznuZYOjw=";
lambda = fetchPaper "https://w.wallhaven.cc/full/vp/wallhaven-vpp5m3.png" "wallhaven-vpp5m3.png" "7YBfNjZjE8K9QUF4sUlUp3ao2DD6clXtzxgze7LtJ4Q=";
};
green-red-knight = fetchPaper "https://w.wallhaven.cc/full/po/wallhaven-poo7gj.jpg" "wallhaven-poo7gj.jpg" "fUe4VsYUF0DmgSKWJao2Ag2Y6kbHunYMM5Q28XMEhDI=";
fern-outline = fetchPaper "https://w.wallhaven.cc/full/p9/wallhaven-p9m7ve.png" "wallhaven-p9m7ve.png" "0r7dl4fjwv2p5q5ggr4sjsl2h5m0s98k9qhiwkvmwi010lyffkx7";
mountains-pink = fetchPaper "https://w.wallhaven.cc/full/yq/wallhaven-yq7gox.jpg" "wallhaven-yq7gox.jpg" "09s31spp9mq71fgkl1w80nzdc1458p1gjfyi3y6fy14wj2dza0pj";
mountains-black = fetchPaper "https://w.wallhaven.cc/full/9d/wallhaven-9djzww.jpg" "wallhaven-9djzww.jpg" "1p2si922i9qs09h8c74lrvx0f284g0xvm7lh85gk1x7lqhn611zm";
cyber-dawn = fetchPaper "https://w.wallhaven.cc/full/ym/wallhaven-ymo2y7.png" "wallhaven-ymo2y7.png" "1b3j0hxxy8m25scq42lxsxc99xvr15pha1j4wplgz761asrvxly3";
retro-deck = fetchPaper "https://w.wallhaven.cc/full/1q/wallhaven-1q83qg.jpg" "wallhaven-1q83qg.jpg" "QPmG4QTRvubuX6Fy5rmMwYKw4aQdBiH/zGL/PMmUZOk=";
nixos-rainbow = fetchPaper "https://w.wallhaven.cc/full/p9/wallhaven-p9pd23.png" "wallhaven-p9pd23.png" "7CMuETntiVUCKhUIdJzX+sf3F47GvuX2a61o4xbEzww=";
mountains-sepia = fetchPaper "https://w.wallhaven.cc/full/k8/wallhaven-k89k81.jpg" "wallhaven-k89k81.jpg" "C0lvJ0ff0mCC3i9mmeHZsj/n6Ehkp3jaslVr7VDUB3k=";
jcurry-cloud = fetchPaper "https://w.wallhaven.cc/full/7j/wallhaven-7j6wpy.jpg" "wallhaven-je8rwq.jpg" "xsuCYc0mCDkrJZ+BUmEEclAfF17g1n39JHeubtZHP78=";
vapor-moon = fetchPaper "https://w.wallhaven.cc/full/lm/wallhaven-lm6d2r.png" "wallhaven-lm6d2r.png" "V07kj2zwFHDwzIN8QE8IFrJMXxDOBoK9C11sQGgTjyQ=";
}
-7
View File
@@ -1,7 +0,0 @@
{
imports = [
./libvirt.nix
./podman.nix
./docker.nix
];
}
-29
View File
@@ -1,29 +0,0 @@
{
# pkgs,
config,
lib,
...
}:
with lib; let
cfg = config.module.virt.docker;
in {
options = {
module.virt.docker.enable =
mkEnableOption "enable docker";
};
config = mkIf cfg.enable {
virtualisation.docker = {
enable = true;
rootless = {
enable = true;
setSocketVariable = true;
};
storageDriver = "btrfs";
autoPrune.enable = true;
#defaultNetwork.settings = {
# dns_enabled = true;
#};
};
virtualisation.oci-containers.backend = "docker";
};
}
-35
View File
@@ -1,35 +0,0 @@
{
pkgs,
config,
lib,
...
}:
with lib; let
cfg = config.module.virt.libvirt;
in {
options = {
module.virt.libvirt.enable =
mkEnableOption "enables virtualisation";
};
config = mkIf cfg.enable {
virtualisation.libvirtd = {
enable = true;
qemu = {
package = pkgs.qemu_kvm;
runAsRoot = false;
swtpm.enable = true;
vhostUserPackages = [pkgs.virtiofsd];
# ovmf = {
# enable = true;
# packages = [
# (pkgs.OVMF.override {
# secureBoot = true;
# tpmSupport = true;
# })
# .fd
# ];
# };
};
};
};
}
-29
View File
@@ -1,29 +0,0 @@
{
pkgs,
config,
lib,
...
}:
with lib; let
cfg = config.module.virt.podman;
in {
options = {
module.virt.podman.enable =
mkEnableOption "enables podman";
};
config = mkIf cfg.enable {
virtualisation = {
containers.enable = true;
podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
};
virtualisation.oci-containers.backend = "podman";
environment.systemPackages = with pkgs; [
podman-tui
podman-compose
];
};
}