mirror of
https://github.com/aviallon/nixos-lib.git
synced 2026-04-05 17:27:50 +00:00
fix(lint): nixfmt the whole tree
This commit is contained in:
parent
643b136863
commit
bf219a30c2
69 changed files with 2605 additions and 1726 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,9 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
{
|
||||
imports = [
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
];
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
;
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
];
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"; }
|
||||
);
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}]''
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
]''
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue