fix(lint): nixfmt the whole tree

This commit is contained in:
Antoine Viallon 2026-03-22 21:56:13 +01:00
parent 643b136863
commit bf219a30c2
Signed by: aviallon
GPG key ID: 186FC35EDEB25716
69 changed files with 2605 additions and 1726 deletions

View file

@ -1,56 +1,77 @@
{ config, pkgs, lib, myLib, options, ... }:
{
config,
pkgs,
lib,
myLib,
options,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
generalCfg = config.aviallon.general;
in {
in
{
options.aviallon.desktop.browser = {
firefox.overrides = mkOption {
internal = true;
description = "Override firefox package settings";
type = types.attrs;
default = {};
example = { enablePlasmaIntegration = true; };
default = { };
example = {
enablePlasmaIntegration = true;
};
};
chromium = {
package = mkOption {
internal = true;
type = myLib.types.package';
default = pkgs.chromium;
example = literalExpression '' pkgs.ungoogled-chromium '';
example = literalExpression ''pkgs.ungoogled-chromium '';
};
overrides = mkOption {
internal = true;
description = "Override chromium package settings";
type = types.attrs;
default = {};
example = { commandLineArgs = [ "--enable-features=UseOzonePlatform" "--ozone-platform=wayland" ]; };
default = { };
example = {
commandLineArgs = [
"--enable-features=UseOzonePlatform"
"--ozone-platform=wayland"
];
};
};
commandLineArgs = mkOption {
description = "Override chromium flags";
type = with types; listOf str;
default = [ "--ozone-platform-hint=auto" ];
example = [ "--ozone-platform-hint=auto" "--ignore-gpu-blacklist" ];
example = [
"--ozone-platform-hint=auto"
"--ignore-gpu-blacklist"
];
};
};
};
config = mkIf (cfg.enable && !generalCfg.minimal) {
environment.systemPackages = with pkgs; [
(cfg.browser.chromium.package.override cfg.browser.chromium.overrides)
# firefox is added by plasma or gnome
];
(cfg.browser.chromium.package.override cfg.browser.chromium.overrides)
# firefox is added by plasma or gnome
];
nixpkgs.overlays = [(final: prev: {
myFirefox = (final.callPackage ../packages/firefox.nix cfg.browser.firefox.overrides);
})];
nixpkgs.overlays = [
(final: prev: {
myFirefox = (final.callPackage ../packages/firefox.nix cfg.browser.firefox.overrides);
})
];
aviallon.desktop.browser.chromium.overrides.enableWideVine = true;
aviallon.programs.allowUnfreeList = [
"chromium-unwrapped" "chrome-widevine-cdm"
"ungoogled-chromium" "chromium" # because of widevine
"chromium-unwrapped"
"chrome-widevine-cdm"
"ungoogled-chromium"
"chromium" # because of widevine
];
environment.variables = {
@ -58,8 +79,10 @@ in {
};
aviallon.desktop.browser.chromium.overrides.commandLineArgs = cfg.browser.chromium.commandLineArgs;
aviallon.desktop.browser.chromium.commandLineArgs = mkIf generalCfg.unsafeOptimizations (options.aviallon.desktop.browser.chromium.commandLineArgs.default ++ [
"--flag-switches-begin"
aviallon.desktop.browser.chromium.commandLineArgs = mkIf generalCfg.unsafeOptimizations (
options.aviallon.desktop.browser.chromium.commandLineArgs.default
++ [
"--flag-switches-begin"
"--ignore-gpu-blacklist"
"--enable-gpu-rasterization"
"--enable-quic"
@ -68,8 +91,9 @@ in {
"--canvas-oop-rasterization"
"--enable-features=VaapiVideoDecoder,VaapiVideoEncoder,WebRTCPipeWireCapturer"
"--disable-features=UseChromeOSDirectVideoDecoder"
"--flag-switches-end"
]);
"--flag-switches-end"
]
);
programs.chromium = {
enable = true;

View file

@ -1,23 +1,25 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
with lib;
let
xcfg = config.services.xserver;
generalCfg = config.aviallon.general;
in {
in
{
config = {
services.kmscon = {
hwRender = mkDefault xcfg.enable;
extraConfig = ""
+ optionalString ( ! isNull xcfg.layout )
"xkb-layout=${xcfg.layout}"
+ optionalString ( ! isNull xcfg.xkbVariant )
"xkb-variant=${xcfg.xkbVariant}"
+ optionalString ( ! isNull xcfg.xkbOptions )
"xkb-options=${xcfg.xkbOptions}"
+ "font-dpi=${toString (xcfg.dpi or 96)}"
;
enable = mkDefault (! generalCfg.minimal );
extraConfig =
""
+ optionalString (!isNull xcfg.layout) "xkb-layout=${xcfg.layout}"
+ optionalString (!isNull xcfg.xkbVariant) "xkb-variant=${xcfg.xkbVariant}"
+ optionalString (!isNull xcfg.xkbOptions) "xkb-options=${xcfg.xkbOptions}"
+ "font-dpi=${toString (xcfg.dpi or 96)}";
enable = mkDefault (!generalCfg.minimal);
};
};
}

View file

@ -1,4 +1,9 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
with lib;
{
imports = [

View file

@ -1,12 +1,20 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.aviallon.developer;
generalCfg = config.aviallon.general;
in {
in
{
options.aviallon.developer = {
enable = mkEnableOption "enable developer mode on this machine";
virtualization.host.enable = (mkEnableOption "hypervisor virtualization services") // { default = true; };
virtualization.host.enable = (mkEnableOption "hypervisor virtualization services") // {
default = true;
};
virtualbox.unstable = mkEnableOption "use unstable virtualbox";
};
config = mkIf cfg.enable {
@ -26,7 +34,7 @@ in {
PROMPT_COMMAND="_direnv_hook''${PROMPT_COMMAND:+;$PROMPT_COMMAND}"
fi
'';
environment.systemPackages = with pkgs; [
#tabnine
numactl
@ -54,20 +62,22 @@ in {
ccls # C/C++
lua-language-server # Lua
nil # Nix
nixfmt-rfc-style
(hiPrio clinfo) # hiPrio to override HIP's clinfo
binutils
cpuset
gptfdisk # gdisk
gcc
gnumake
cmake
linux-manual man-pages man-pages-posix
linux-manual
man-pages
man-pages-posix
linuxHeaders
# Virtualization tools
@ -99,7 +109,6 @@ in {
};
};
virtualisation.spiceUSBRedirection.enable = true; # Quality of life
security.virtualisation.flushL1DataCache = "never"; # We do not care, we are on a dev platform
@ -109,19 +118,25 @@ in {
host.enableHardening = false; # Causes kernel build failures
};
nixpkgs.overlays = []
++ optional cfg.virtualbox.unstable (final: prev: {
virtualbox = final.unstable.virtualbox;
virtualboxExtpack = final.unstable.virtualboxExtpack;
})
;
nixpkgs.overlays =
[ ]
++ optional cfg.virtualbox.unstable (
final: prev: {
virtualbox = final.unstable.virtualbox;
virtualboxExtpack = final.unstable.virtualboxExtpack;
}
);
console.enable = true;
boot.initrd.systemd.emergencyAccess = mkIf (config.users.users.root.hashedPassword != null) config.users.users.root.hashedPassword;
boot.initrd.systemd.emergencyAccess = mkIf (
config.users.users.root.hashedPassword != null
) config.users.users.root.hashedPassword;
environment.extraOutputsToInstall = [
"doc" "info" "dev"
"doc"
"info"
"dev"
];
services.ollama = {
@ -130,12 +145,14 @@ in {
group = "ollama";
user = "ollama";
package =
if config.aviallon.hardware.amd.enable
then pkgs.unstable.ollama-rocm
else if (config.aviallon.hardware.nvidia.enable && config.aviallon.hardware.nvidia.variant != "nouveau")
then pkgs.unstable.ollama-cuda
else pkgs.unstable.ollama
;
if config.aviallon.hardware.amd.enable then
pkgs.unstable.ollama-rocm
else if
(config.aviallon.hardware.nvidia.enable && config.aviallon.hardware.nvidia.variant != "nouveau")
then
pkgs.unstable.ollama-cuda
else
pkgs.unstable.ollama;
};
aviallon.services.journald.extraConfig = {
@ -145,8 +162,10 @@ in {
aviallon.boot.configurationLimit = mkDefault 10;
aviallon.programs.allowUnfreeList = [
"tabnine" "clion"
"Oracle_VM_VirtualBox_Extension_Pack" "virtualbox"
"tabnine"
"clion"
"Oracle_VM_VirtualBox_Extension_Pack"
"virtualbox"
"intelephense"
];
};

View file

@ -1,45 +1,56 @@
{ config, pkgs, lib, ...}:
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
in {
in
{
config = mkIf cfg.enable {
services.flatpak.enable = mkDefault true;
systemd.services.flatpak-add-flathub = {
script = ''
exec ${pkgs.flatpak}/bin/flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
serviceConfig.Type = "oneshot";
requires = [
"network-online.target"
];
after = [
"network-online.target"
];
wantedBy = [
"graphical.target"
];
};
services.flatpak.enable = mkDefault true;
systemd.services.flatpak-add-flathub = {
script = ''
exec ${pkgs.flatpak}/bin/flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
'';
serviceConfig.Type = "oneshot";
requires = [
"network-online.target"
];
after = [
"network-online.target"
];
wantedBy = [
"graphical.target"
];
};
systemd.services.flatpak-workaround-cursors = {
script = ''
exec ${pkgs.flatpak}/bin/flatpak override --filesystem=/usr/share/icons/:ro
'';
serviceConfig.Type = "oneshot";
wantedBy = [
"graphical.target"
];
};
systemd.services.flatpak-workaround-cursors = {
script = ''
exec ${pkgs.flatpak}/bin/flatpak override --filesystem=/usr/share/icons/:ro
'';
serviceConfig.Type = "oneshot";
wantedBy = [
"graphical.target"
];
};
fileSystems =
let mkRoSymBind = path: {
fileSystems =
let
mkRoSymBind = path: {
device = path;
fsType = "none";
options = [ "rbind" "ro" "x-gvfs-hide" ];
options = [
"rbind"
"ro"
"x-gvfs-hide"
];
};
in {
in
{
"/usr/share/icons" = mkRoSymBind "/run/current-system/sw/share/icons";
};
}
;
};
}

View file

@ -1,11 +1,19 @@
{ config, pkgs, lib, myLib, suyu, ... }:
{
config,
pkgs,
lib,
myLib,
suyu,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
generalCfg = config.aviallon.general;
optimizePkg = config.aviallon.optimizations.optimizePkg;
mkTmpDir = dirpath: cleanup: "D ${dirpath} 777 root root ${cleanup}";
in {
in
{
options = {
aviallon.desktop.gaming = {
@ -24,27 +32,40 @@ in {
};
};
};
config = mkIf cfg.gaming.enable {
assertions = [
{ assertion = cfg.gaming.enable -> cfg.enable; message = "Gaming features requires desktop to be enabled"; }
{ assertion = cfg.gaming.enable -> !generalCfg.minimal; message = "Gaming features are incompatible with minimal mode"; }
{
assertion = cfg.gaming.enable -> cfg.enable;
message = "Gaming features requires desktop to be enabled";
}
{
assertion = cfg.gaming.enable -> !generalCfg.minimal;
message = "Gaming features are incompatible with minimal mode";
}
];
environment.systemPackages = let
my_yuzu = cfg.gaming.yuzu.package.overrideAttrs (old: {
cmakeFlags = old.cmakeFlags ++ [
#"-DYUZU_USE_PRECOMPILED_HEADERS=OFF"
#"-DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF"
];
});
in with pkgs; [
environment.systemPackages =
let
my_yuzu = cfg.gaming.yuzu.package.overrideAttrs (old: {
cmakeFlags = old.cmakeFlags ++ [
#"-DYUZU_USE_PRECOMPILED_HEADERS=OFF"
#"-DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF"
];
});
in
with pkgs;
[
gamescope
mangohud
lutris
bottles
] ++ optionals cfg.gaming.emulation [
(optimizePkg { recursive = 0; lto = false; } my_yuzu)
]
++ optionals cfg.gaming.emulation [
(optimizePkg {
recursive = 0;
lto = false;
} my_yuzu)
(optimizePkg { } cfg.gaming.ryujinx.package)
];
@ -104,7 +125,10 @@ in {
};
aviallon.programs.allowUnfreeList = [
"steam" "steam-original" "steam-runtime" "steam-run"
"steam"
"steam-original"
"steam-runtime"
"steam-run"
];
};

View file

@ -1,9 +1,16 @@
{ config, pkgs, lib, myLib, ... }:
{
config,
pkgs,
lib,
myLib,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
generalCfg = config.aviallon.general;
in {
in
{
options.aviallon.desktop = {
enable = mkOption {
default = true;
@ -14,7 +21,13 @@ in {
environment = mkOption {
default = "plasma";
example = "gnome";
type = with types; enum [ "plasma" "plasma6" "gnome" ];
type =
with types;
enum [
"plasma"
"plasma6"
"gnome"
];
description = "What Desktop Environment to use";
};
layout = mkOption {
@ -51,7 +64,13 @@ in {
};
imports = [
(mkRemovedOptionModule [ "aviallon" "desktop" "graphics" "shaderCache" "path" ] "Now always relative to $XDG_CACHE_HOME" )
(mkRemovedOptionModule [
"aviallon"
"desktop"
"graphics"
"shaderCache"
"path"
] "Now always relative to $XDG_CACHE_HOME")
];
config = mkIf cfg.enable (mkMerge [
@ -71,7 +90,6 @@ in {
services.xserver.xkb.layout = cfg.layout;
services.xserver.xkb.options = "eurosign:e";
aviallon.boot.cmdline = {
splash = mkIf (!generalCfg.debug) "";
"udev.log_level" = mkIf (!generalCfg.debug) 3;
@ -93,7 +111,7 @@ in {
# Enable running X11 apps on Wayland
programs.xwayland.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = true;
@ -104,9 +122,7 @@ in {
p7zip
];
security.sudo.extraConfig =
''
security.sudo.extraConfig = ''
# Keep X and Wayland related variables for better GUI integration
Defaults:root,%wheel env_keep+=DISPLAY
Defaults:root,%wheel env_keep+=XAUTHORITY
@ -114,8 +130,7 @@ in {
Defaults:root,%wheel env_keep+=WAYLAND_DISPLAY
Defaults:root,%wheel env_keep+=WAYLAND_SOCKET
Defaults:root,%wheel env_keep+=XDG_RUNTIME_DIR
''
;
'';
}
(mkIf (!generalCfg.minimal) {
@ -135,7 +150,7 @@ in {
programs.thunderbird.enable = true;
hardware.graphics.enable32Bit = mkDefault cfg.gaming.enable;
environment.systemPackages = with pkgs; [
mesa-demos
vdpauinfo
@ -174,16 +189,16 @@ in {
};
aviallon.programs.allowUnfreeList = [
"spotify" "spotify-unwrapped"
"spotify"
"spotify-unwrapped"
"veracrypt"
];
aviallon.programs.libreoffice.enable = true;
services.packagekit.enable = mkDefault true;
# SmartCards
#services.pcscd.enable = mkDefault true;

View file

@ -1,66 +1,73 @@
{config, pkgs, lib, ...}:
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
in {
config = mkIf (cfg.enable && (cfg.environment == "gnome")) {
services.xserver.desktopManager.gnome = {
enable = true;
};
services.xserver.displayManager.gdm = {
enable = true;
};
services.gnome = {
sushi.enable = true;
tracker.enable = true;
tracker-miners.enable = true;
core-shell.enable = true;
gnome-keyring.enable = true;
glib-networking.enable = true;
gnome-user-share.enable = true;
core-os-services.enable = true;
gnome-remote-desktop.enable = true;
gnome-online-miners.enable = true;
gnome-initial-setup.enable = true;
gnome-settings-daemon.enable = true;
gnome-online-accounts.enable = true;
gnome-browser-connector.enable = true;
};
qt5.platformTheme = "gnome"; # Force Gnome theme for better UX
xdg.portal = {
enable = mkDefault true;
};
programs.chromium.extensions = [
"gphhapmejobijbbhgpjhcjognlahblep" # Gnome Shell integration
];
programs.firefox.enable = true;
programs.firefox.nativeMessagingHosts.packages = [ pkgs.gnomeExtensions.bowser-gnome-extension ];
aviallon.programs.libreoffice.enable = true;
environment.systemPackages = with pkgs; [ guake ]
++ (with gnome; [
gnome-software
])
++ (with gnomeExtensions; [
gamemode
dash-to-dock
dash-to-dock-toggle
dash-to-dock-animator
tray-icons-reloaded
])
;
systemd.packages = with pkgs; [
gnomeExtensions.gamemode
gnomeExtensions.dash-to-dock
gnomeExtensions.dash-to-dock-animator
gnomeExtensions.dash-to-dock-toggle
gnomeExtensions.tray-icons-reloaded
];
cfg = config.aviallon.desktop;
in
{
config = mkIf (cfg.enable && (cfg.environment == "gnome")) {
services.xserver.desktopManager.gnome = {
enable = true;
};
services.xserver.displayManager.gdm = {
enable = true;
};
services.gnome = {
sushi.enable = true;
tracker.enable = true;
tracker-miners.enable = true;
core-shell.enable = true;
gnome-keyring.enable = true;
glib-networking.enable = true;
gnome-user-share.enable = true;
core-os-services.enable = true;
gnome-remote-desktop.enable = true;
gnome-online-miners.enable = true;
gnome-initial-setup.enable = true;
gnome-settings-daemon.enable = true;
gnome-online-accounts.enable = true;
gnome-browser-connector.enable = true;
};
qt5.platformTheme = "gnome"; # Force Gnome theme for better UX
xdg.portal = {
enable = mkDefault true;
};
programs.chromium.extensions = [
"gphhapmejobijbbhgpjhcjognlahblep" # Gnome Shell integration
];
programs.firefox.enable = true;
programs.firefox.nativeMessagingHosts.packages = [ pkgs.gnomeExtensions.bowser-gnome-extension ];
aviallon.programs.libreoffice.enable = true;
environment.systemPackages =
with pkgs;
[ guake ]
++ (with gnome; [
gnome-software
])
++ (with gnomeExtensions; [
gamemode
dash-to-dock
dash-to-dock-toggle
dash-to-dock-animator
tray-icons-reloaded
]);
systemd.packages = with pkgs; [
gnomeExtensions.gamemode
gnomeExtensions.dash-to-dock
gnomeExtensions.dash-to-dock-animator
gnomeExtensions.dash-to-dock-toggle
gnomeExtensions.tray-icons-reloaded
];
};
}

View file

@ -1,4 +1,9 @@
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
@ -8,26 +13,31 @@ let
noiseFilterStrength = cfg.audio.noise-filter.strength;
};
airplayConfig = pkgs.callPackage ./pipewire/pipewire-airplay.conf.nix {};
airplayConfig = pkgs.callPackage ./pipewire/pipewire-airplay.conf.nix { };
# Multimedia Packages
ffmpeg-full-unfree = let
withUnfree = pkgs.unstable.ffmpeg-full.override {
withUnfree = true;
withTensorflow = false;
};
in withUnfree;
in {
ffmpeg-full-unfree =
let
withUnfree = pkgs.unstable.ffmpeg-full.override {
withUnfree = true;
withTensorflow = false;
};
in
withUnfree;
in
{
config = mkIf (cfg.enable && !generalCfg.minimal) {
environment.systemPackages = with pkgs; [
ffmpeg-full-unfree
krita
(pkgs.wrapOBS { plugins = with obs-studio-plugins; [
obs-pipewire-audio-capture
]; })
(pkgs.wrapOBS {
plugins = with obs-studio-plugins; [
obs-pipewire-audio-capture
];
})
#scribus
yt-dlp
#jellyfin-media-player # https://github.com/NixOS/nixpkgs/issues/437865 https://github.com/jellyfin/jellyfin-media-player/issues/282
@ -36,10 +46,11 @@ in {
#jamesdsp # Audio post-processing
];
nixpkgs.overlays = [(final: prev: {
inherit ffmpeg-full-unfree;
})];
nixpkgs.overlays = [
(final: prev: {
inherit ffmpeg-full-unfree;
})
];
# Enable sound.
services.pulseaudio.enable = false;
@ -76,9 +87,12 @@ in {
"node.description" = "Sortie combinée";
"combine.latency-compensate" = true;
"combine.props" = {
"audio.position" = [ "FL" "FR" ];
"audio.position" = [
"FL"
"FR"
];
};
"stream.props" = {};
"stream.props" = { };
"stream.rules" = [
{
matches = [
@ -90,7 +104,7 @@ in {
"media.class" = "Audio/Sink";
}
];
actions.create-stream = {};
actions.create-stream = { };
}
];
};
@ -105,50 +119,61 @@ in {
"bluez5.enable-sbc-xq" = true; # Should be default now
"bluez5.enable-msbc" = true; # Default
"bluez5.enable-hw-volume" = true; # Default
"bluez5.headset-roles" = [ "hsp_hs" "hsp_ag" "hfp_hf" "hfp_ag" ];
"bluez5.headset-roles" = [
"hsp_hs"
"hsp_ag"
"hfp_hf"
"hfp_ag"
];
};
};
security.rtkit.enable = true; # Real-time support for pipewire
aviallon.programs.allowUnfreeList = [
"ffmpeg-full" # Because of unfree codecs
];
# Hardware-agnostic audio denoising
systemd.user.services = let
mkPipewireModule = {conf, description}: {
unitConfig = {
Slice = "session.slice";
};
serviceConfig = {
ExecStart = [
"${getBin config.services.pipewire.package}/bin/pipewire -c ${conf}"
];
Type = "simple";
Restart = "on-failure";
};
bindsTo = [ "pipewire.service" ];
after = [ "pipewire.service" ];
environment = {
PIPEWIRE_DEBUG = "3";
};
wantedBy = [ "pipewire.service" ];
inherit description;
systemd.user.services =
let
mkPipewireModule =
{ conf, description }:
{
unitConfig = {
Slice = "session.slice";
};
serviceConfig = {
ExecStart = [
"${getBin config.services.pipewire.package}/bin/pipewire -c ${conf}"
];
Type = "simple";
Restart = "on-failure";
};
bindsTo = [ "pipewire.service" ];
after = [ "pipewire.service" ];
environment = {
PIPEWIRE_DEBUG = "3";
};
wantedBy = [ "pipewire.service" ];
inherit description;
};
in
{
pipewire-noise-filter = mkIf cfg.audio.noise-filter.enable (
(mkPipewireModule {
conf = filterConfig;
description = "Pipewire Noise Filter";
})
// {
enable = cfg.audio.noise-filter.strength > 0.0;
}
);
pipewire-airplay-sink = mkIf cfg.audio.airplay.enable (mkPipewireModule {
conf = airplayConfig;
description = "Pipewire Airplay Sink";
});
};
in {
pipewire-noise-filter = mkIf cfg.audio.noise-filter.enable (
(mkPipewireModule { conf = filterConfig; description = "Pipewire Noise Filter"; }) //
{
enable = cfg.audio.noise-filter.strength > 0.0;
}
);
pipewire-airplay-sink = mkIf cfg.audio.airplay.enable (
mkPipewireModule { conf = airplayConfig; description = "Pipewire Airplay Sink"; }
);
};
};
}

View file

@ -1,63 +1,64 @@
{ lib
, writeText
{
lib,
writeText,
}:
writeText "pipewire-airplay.conf" ''
# Noise canceling source
#
# start with pipewire -c filter-chain/source-rnnoise.conf
#
context.properties = {
log.level = 3
}
writeText "pipewire-airplay.conf" ''
# Noise canceling source
#
# start with pipewire -c filter-chain/source-rnnoise.conf
#
context.properties = {
log.level = 3
}
#context.spa-libs = {
# audio.convert.* = audioconvert/libspa-audioconvert
# support.* = support/libspa-support
#}
#context.spa-libs = {
# audio.convert.* = audioconvert/libspa-audioconvert
# support.* = support/libspa-support
#}
context.modules = [
{ name = libpipewire-module-rtkit
args = {
nice.level = -11
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-adapter }
context.modules = [
{ name = libpipewire-module-rtkit
args = {
nice.level = -11
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-adapter }
{ name = libpipewire-raop-discover
args = {
#raop.latency.ms = 1000
stream.rules = [
{ matches = [
{ raop.ip = "~.*"
#raop.port = 1000
#raop.name = ""
#raop.hostname = ""
#raop.domain = ""
#raop.device = ""
#raop.transport = "udp" | "tcp"
#raop.encryption.type = "RSA" | "auth_setup" | "none"
#raop.audio.codec = "PCM" | "ALAC" | "AAC" | "AAC-ELD"
#audio.channels = 2
#audio.format = "S16" | "S24" | "S32"
#audio.rate = 44100
#device.model = ""
}
]
actions = {
create-stream = {
#raop.password = ""
stream.props = {
#target.object = ""
media.class = "Audio/Sink"
}
}
}
}
] # stream.rules
} # args
}
}]''
{ name = libpipewire-raop-discover
args = {
#raop.latency.ms = 1000
stream.rules = [
{ matches = [
{ raop.ip = "~.*"
#raop.port = 1000
#raop.name = ""
#raop.hostname = ""
#raop.domain = ""
#raop.device = ""
#raop.transport = "udp" | "tcp"
#raop.encryption.type = "RSA" | "auth_setup" | "none"
#raop.audio.codec = "PCM" | "ALAC" | "AAC" | "AAC-ELD"
#audio.channels = 2
#audio.format = "S16" | "S24" | "S32"
#audio.rate = 44100
#device.model = ""
}
]
actions = {
create-stream = {
#raop.password = ""
stream.props = {
#target.object = ""
media.class = "Audio/Sink"
}
}
}
}
] # stream.rules
} # args
}
}]''

View file

@ -1,65 +1,66 @@
{ lib
, writeText
, rnnoise-plugin
, noiseFilterStrength
{
lib,
writeText,
rnnoise-plugin,
noiseFilterStrength,
}:
writeText "pipewire-noise-filter.conf" ''
# Noise canceling source
#
# start with pipewire -c filter-chain/source-rnnoise.conf
#
context.properties = {
log.level = 3
}
writeText "pipewire-noise-filter.conf" ''
# Noise canceling source
#
# start with pipewire -c filter-chain/source-rnnoise.conf
#
context.properties = {
log.level = 3
}
context.spa-libs = {
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.spa-libs = {
audio.convert.* = audioconvert/libspa-audioconvert
support.* = support/libspa-support
}
context.modules = [
{ name = libpipewire-module-rtkit
args = {
nice.level = -11
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-adapter }
context.modules = [
{ name = libpipewire-module-rtkit
args = {
nice.level = -11
}
flags = [ ifexists nofail ]
}
{ name = libpipewire-module-protocol-native }
{ name = libpipewire-module-client-node }
{ name = libpipewire-module-adapter }
{ name = libpipewire-module-filter-chain
args = {
node.name = "rnnoise_source"
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = ${rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_stereo
control = {
"VAD Threshold (%)" = ${toString noiseFilterStrength}
"VAD Grace Period (ms)" = 200
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source.output"
media.class = Audio/Source
node.virtual = false
audio.rate = 48000
}
}
}
]''
{ name = libpipewire-module-filter-chain
args = {
node.name = "rnnoise_source"
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = ${rnnoise-plugin}/lib/ladspa/librnnoise_ladspa.so
label = noise_suppressor_stereo
control = {
"VAD Threshold (%)" = ${toString noiseFilterStrength}
"VAD Grace Period (ms)" = 200
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source.output"
media.class = Audio/Source
node.virtual = false
audio.rate = 48000
}
}
}
]''

View file

@ -1,16 +1,23 @@
{config, pkgs, nixpkgs-unstable, lib, ...}:
{
config,
pkgs,
nixpkgs-unstable,
lib,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
optimizeCfg = config.aviallon.optimizations;
in {
in
{
imports = [
./plasma6.nix
];
config = mkIf (cfg.enable && (cfg.environment == "plasma" || cfg.environment == "plasma6" )) {
programs.firefox.enable = true;
config = mkIf (cfg.enable && (cfg.environment == "plasma" || cfg.environment == "plasma6")) {
programs.firefox.enable = true;
programs.firefox.policies.Extensions.Install = [ "plasma-browser-integration@kde.org" ];
programs.chromium.extensions = [
@ -28,17 +35,17 @@ in {
};
#environment.systemPackages = [
#config.programs.gnupg.agent.pinentryPackage
#config.programs.gnupg.agent.pinentryPackage
#];
systemd.user.services.setup-xdg-cursors = mkIf config.xdg.icons.enable {
script = ''
[ -d "$HOME/.icons/default" ] || mkdir -p "$HOME/.icons/default"
cat >"$HOME/.icons/default/index.theme" <<EOF
[icon theme]
Inherits=''${XCURSOR_THEME:-breeze_cursors}
EOF
'';
[ -d "$HOME/.icons/default" ] || mkdir -p "$HOME/.icons/default"
cat >"$HOME/.icons/default/index.theme" <<EOF
[icon theme]
Inherits=''${XCURSOR_THEME:-breeze_cursors}
EOF
'';
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;

View file

@ -1,11 +1,17 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
generic = import ./generic.nix {
kdePackages = pkgs.kdePackages;
};
in {
in
{
config = mkIf (cfg.enable && (cfg.environment == "plasma6")) {
# Enable the Plasma 6 Desktop Environment.
services.desktopManager.plasma6 = {

View file

@ -1,44 +1,52 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
generalCfg = config.aviallon.general;
in {
in
{
config = mkIf (cfg.enable && !generalCfg.minimal) {
services.printing = {
enable = true;
defaultShared = mkDefault true;
browsing = mkDefault true;
listenAddresses = [ "0.0.0.0:631" ];
drivers = with pkgs; []
drivers =
with pkgs;
[ ]
++ (optionals (!generalCfg.minimal) [
hplipWithPlugin
gutenprint
splix
brlaser
# cups-bjnp
# cups-dymo
# cups-zj-58
# cups-kyocera
cups-filters
carps-cups
# cups-kyodialog3
cups-brother-hl1110
cups-toshiba-estudio
cups-brother-hl1210w
cups-brother-hl3140cw
cups-brother-hll2340dw
cups-drv-rastertosag-gdi
# cups-kyocera-ecosys-m552x-p502x
canon-cups-ufr2
]);
hplipWithPlugin
gutenprint
splix
brlaser
# cups-bjnp
# cups-dymo
# cups-zj-58
# cups-kyocera
cups-filters
carps-cups
# cups-kyodialog3
cups-brother-hl1110
cups-toshiba-estudio
cups-brother-hl1210w
cups-brother-hl3140cw
cups-brother-hll2340dw
cups-drv-rastertosag-gdi
# cups-kyocera-ecosys-m552x-p502x
canon-cups-ufr2
]);
webInterface = mkDefault true;
};
services.system-config-printer.enable = true;
hardware.sane = {
enable = true;
netConf = "192.168.0.0/24";
netConf = "192.168.0.0/24";
extraBackends = with pkgs; [
hplipWithPlugin
];
@ -46,9 +54,12 @@ in {
brscan4.enable = true;
};
networking.firewall.allowedTCPPorts = optionals config.services.printing.enable [ 631 139 445 ];
networking.firewall.allowedUDPPorts = optionals config.services.printing.enable [ 137 ];
networking.firewall.allowedTCPPorts = optionals config.services.printing.enable [
631
139
445
];
networking.firewall.allowedUDPPorts = optionals config.services.printing.enable [ 137 ];
aviallon.programs.allowUnfreeList = [
"hplip"

View file

@ -1,9 +1,15 @@
{ config, pkgs, lib, ... }:
{
config,
pkgs,
lib,
...
}:
with lib;
let
cfg = config.aviallon.desktop;
sddmCfg = config.services.displayManager.sddm;
in {
in
{
options.aviallon.desktop.sddm.unstable = mkEnableOption "bleeding-edge SDDM";
options.aviallon.desktop.sddm.enable = mkEnableOption "custom SDDM configuration";
@ -20,7 +26,7 @@ in {
};
};
};
systemd.services.display-manager = {
serviceConfig = {
Restart = mkOverride 50 "on-failure";