treewide: restructure modules

make every module contain config attribute
and if module doesn't use module arguments,
don't make it a function
This commit is contained in:
Wroclaw 2025-04-07 12:54:34 +02:00
parent 4dab0aff15
commit 27b241adff
10 changed files with 490 additions and 477 deletions

View file

@ -4,44 +4,46 @@
imports = [ imports = [
./unstable-packages.nix ./unstable-packages.nix
]; ];
users.users.wroclaw = { config = {
isNormalUser = true; users.users.wroclaw = {
description = "Rafał"; isNormalUser = true;
group = "wroclaw"; description = "Rafał";
extraGroups = [ group = "wroclaw";
"users" extraGroups = [
"wheel" "users"
] ++ lib.optional config.programs.adb.enable "adbusers"; "wheel"
linger = true; ] ++ lib.optional config.programs.adb.enable "adbusers";
initialPassword = "nixos"; linger = true;
packages = with pkgs; [ initialPassword = "nixos";
firefox packages = with pkgs; [
(vivaldi.override { firefox
proprietaryCodecs = true; (vivaldi.override {
commandLineArgs = [ "--ozone-platform=wayland" ]; proprietaryCodecs = true;
}) commandLineArgs = [ "--ozone-platform=wayland" ];
vesktop })
unstablePkgs.vscode vesktop
gimp unstablePkgs.vscode
inkscape gimp
jitsi-meet-electron inkscape
krita jitsi-meet-electron
telegram-desktop krita
unstablePkgs.zettlr telegram-desktop
]; unstablePkgs.zettlr
}; ];
users.groups.wroclaw.gid = 1000; };
users.groups.wroclaw.gid = 1000;
programs.steam = { programs.steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; remotePlay.openFirewall = true;
}; };
services.syncthing = { services.syncthing = {
enable = true; enable = true;
user = "wroclaw"; user = "wroclaw";
group = "wroclaw"; group = "wroclaw";
dataDir = "/home/wroclaw"; dataDir = "/home/wroclaw";
configDir = "/home/wroclaw/.config/syncthing"; configDir = "/home/wroclaw/.config/syncthing";
};
}; };
} }

View file

@ -10,78 +10,80 @@
./module-overrides.nix ./module-overrides.nix
./nix.nix ./nix.nix
]; ];
config = {
# kernel # kernel
boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPackages = pkgs.linuxPackages_latest;
# Enable networking # Enable networking
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nix = {
channel.enable = false;
settings.experimental-features = [
"no-url-literals"
];
nixPath = [
"nixpkgs=${pkgs.selfExpr { useConfig = false; }}"
"systemNixpkgs=${pkgs.selfExpr { useConfig = true; name = "systemNixpkgs-self"; }}"
# don't garbage collect the nixpkgs input
"inputsNixpkgs=${inputs.nixpkgs}"
"nixos-system=/etc/nixos/default.nix"
];
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
waypipe
wget
ffmpeg
yt-dlp
htop
btop
fastfetch
smartmontools
ddrescue
];
programs.git.enable = true;
programs.git.config = {
commit.verbose = true;
init.defaultBranch = "main";
merge.conflictstyle = "diff3";
rerere.enabled = true;
};
# Use nix-index for command-not-found handler
programs.command-not-found.enable = false;
programs.nix-index = {
package = pkgs.nix-index.override {
nix-index-unwrapped = pkgs.nix-index-unwrapped.overrideAttrs (oldAttrs: {
patches = oldAttrs.patches or [] ++ [
../pkgs/by-name/ni/nix-index/cnfOutput.patch
];
});
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nix = {
channel.enable = false;
settings.experimental-features = [
"no-url-literals"
];
nixPath = [
"nixpkgs=${pkgs.selfExpr { useConfig = false; }}"
"systemNixpkgs=${pkgs.selfExpr { useConfig = true; name = "systemNixpkgs-self"; }}"
# don't garbage collect the nixpkgs input
"inputsNixpkgs=${inputs.nixpkgs}"
"nixos-system=/etc/nixos/default.nix"
];
}; };
enable = true;
enableBashIntegration = true;
};
# Enable fail2ban because of the OpenSSH server # List packages installed in system profile. To search, run:
services.fail2ban = { # $ nix search wget
enable = true; environment.systemPackages = with pkgs; [
maxretry = 10; waypipe
bantime = "7d"; wget
}; ffmpeg
yt-dlp
# Enable the OpenSSH daemon. htop
services.openssh = { btop
enable = true; fastfetch
ports = [ smartmontools
22 ddrescue
8022
]; ];
programs.git.enable = true;
programs.git.config = {
commit.verbose = true;
init.defaultBranch = "main";
merge.conflictstyle = "diff3";
rerere.enabled = true;
};
# Use nix-index for command-not-found handler
programs.command-not-found.enable = false;
programs.nix-index = {
package = pkgs.nix-index.override {
nix-index-unwrapped = pkgs.nix-index-unwrapped.overrideAttrs (oldAttrs: {
patches = oldAttrs.patches or [] ++ [
../pkgs/by-name/ni/nix-index/cnfOutput.patch
];
});
};
enable = true;
enableBashIntegration = true;
};
# Enable fail2ban because of the OpenSSH server
services.fail2ban = {
enable = true;
maxretry = 10;
bantime = "7d";
};
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
ports = [
22
8022
];
};
}; };
} }

View file

@ -1,39 +1,41 @@
{ lib, config, pkgs, ... }: { lib, config, pkgs, ... }:
{ {
config.virtualisation.docker = { config = {
enable = true; virtualisation.docker = {
enableOnBoot = true; enable = true;
storageDriver = if config.fileSystems."/".fsType == "btrfs" then "btrfs" else null; enableOnBoot = true;
rootless.enable = true; storageDriver = if config.fileSystems."/".fsType == "btrfs" then "btrfs" else null;
rootless.setSocketVariable = true; rootless.enable = true;
daemon.settings = { rootless.setSocketVariable = true;
default-address-pools = [ daemon.settings = {
{base = "10.64.0.0/10"; size = 24;} default-address-pools = [
]; {base = "10.64.0.0/10"; size = 24;}
bip = "10.127.0.1/16"; ];
bip = "10.127.0.1/16";
};
};
users.users.indocker = {
isSystemUser = true;
hashedPassword = "!";
uid = 900;
group = "indocker";
};
users.groups.indocker = {
gid = 900;
};
environment.systemPackages = with pkgs; [
docker-compose
];
# Docker enables firewall anyway, let's enable the firewall for it if it's disabled
# TODO: Apply only when config.networking.firewall is false
networking.firewall = {
enable = lib.mkOverride 90 true;
allowedTCPPorts = lib.mkOverride 90 [];
allowedUDPPorts = lib.mkOverride 90 [];
allowedTCPPortRanges = lib.mkOverride 90 [{ from = 0; to = 65535;}];
allowedUDPPortRanges = lib.mkOverride 90 [{ from = 0; to = 65535;}];
}; };
}; };
config.users.users.indocker = {
isSystemUser = true;
hashedPassword = "!";
uid = 900;
group = "indocker";
};
config.users.groups.indocker = {
gid = 900;
};
config.environment.systemPackages = with pkgs; [
docker-compose
];
# Docker enables firewall anyway, let's enable the firewall for it if it's disabled
# TODO: Apply only when config.networking.firewall is false
config.networking.firewall = {
enable = lib.mkOverride 90 true;
allowedTCPPorts = lib.mkOverride 90 [];
allowedUDPPorts = lib.mkOverride 90 [];
allowedTCPPortRanges = lib.mkOverride 90 [{ from = 0; to = 65535;}];
allowedUDPPortRanges = lib.mkOverride 90 [{ from = 0; to = 65535;}];
};
} }

View file

@ -1,5 +1,3 @@
{ ... }:
{ {
config = { config = {
# Set your time zone. # Set your time zone.

View file

@ -1,28 +1,30 @@
{ config, lib, pkgs, ...}: { config, lib, pkgs, ...}:
{ {
hardware.graphics = { config = {
enable = true; hardware.graphics = {
enable32Bit = true; enable = true;
}; enable32Bit = true;
# Workaround for nvidia driver ghost display
boot.kernelParams = [ "nvidia_drm.fbdev=1" ];
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
version = "570.133.07";
sha256_64bit = "sha256-LUPmTFgb5e9VTemIixqpADfvbUX1QoTT2dztwI3E3CY=";
sha256_aarch64 = "sha256-yTovUno/1TkakemRlNpNB91U+V04ACTMwPEhDok7jI0=";
openSha256 = "sha256-9l8N83Spj0MccA8+8R1uqiXBS0Ag4JrLPjrU3TaXHnM=";
settingsSha256 = "sha256-XMk+FvTlGpMquM8aE8kgYK2PIEszUZD2+Zmj2OpYrzU=";
persistencedSha256 = "sha256-G1V7JtHQbfnSRfVjz/LE2fYTlh9okpCbE4dfX9oYSg8=";
}; };
# Workaround for nvidia driver ghost display
boot.kernelParams = [ "nvidia_drm.fbdev=1" ];
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
version = "570.133.07";
sha256_64bit = "sha256-LUPmTFgb5e9VTemIixqpADfvbUX1QoTT2dztwI3E3CY=";
sha256_aarch64 = "sha256-yTovUno/1TkakemRlNpNB91U+V04ACTMwPEhDok7jI0=";
openSha256 = "sha256-9l8N83Spj0MccA8+8R1uqiXBS0Ag4JrLPjrU3TaXHnM=";
settingsSha256 = "sha256-XMk+FvTlGpMquM8aE8kgYK2PIEszUZD2+Zmj2OpYrzU=";
persistencedSha256 = "sha256-G1V7JtHQbfnSRfVjz/LE2fYTlh9okpCbE4dfX9oYSg8=";
};
};
nixpkgs.config.nvidia.acceptLicense = true;
}; };
nixpkgs.config.nvidia.acceptLicense = true;
} }

View file

@ -1,44 +1,44 @@
{ ... }:
{ {
security.polkit.extraConfig = '' config = {
polkit.addRule(function(action, subject) { security.polkit.extraConfig = ''
polkit.log("action=" + action); polkit.addRule(function(action, subject) {
polkit.log("subject=" + subject); polkit.log("action=" + action);
if ( polkit.log("subject=" + subject);
action.id == "org.freedesktop.login1.halt" || if (
action.id == "org.freedesktop.login1.halt-ignore-inhibit" || action.id == "org.freedesktop.login1.halt" ||
action.id == "org.freedesktop.login1.halt-multiple-sessions" || action.id == "org.freedesktop.login1.halt-ignore-inhibit" ||
action.id == "org.freedesktop.login1.hibernate" || action.id == "org.freedesktop.login1.halt-multiple-sessions" ||
action.id == "org.freedesktop.login1.hibernate-ignore-inhibit" || action.id == "org.freedesktop.login1.hibernate" ||
action.id == "org.freedesktop.login1.hibernate-multiple-sessions" || action.id == "org.freedesktop.login1.hibernate-ignore-inhibit" ||
action.id == "org.freedesktop.login1.inhibit-block-idle" || action.id == "org.freedesktop.login1.hibernate-multiple-sessions" ||
action.id == "org.freedesktop.login1.inhibit-block-shutdown" || action.id == "org.freedesktop.login1.inhibit-block-idle" ||
action.id == "org.freedesktop.login1.inhibit-block-sleep" || action.id == "org.freedesktop.login1.inhibit-block-shutdown" ||
action.id == "org.freedesktop.login1.inhibit-handle-hibernate-key" || action.id == "org.freedesktop.login1.inhibit-block-sleep" ||
action.id == "org.freedesktop.login1.inhibit-handle-lid-switch" || action.id == "org.freedesktop.login1.inhibit-handle-hibernate-key" ||
action.id == "org.freedesktop.login1.inhibit-handle-power-key" || action.id == "org.freedesktop.login1.inhibit-handle-lid-switch" ||
action.id == "org.freedesktop.login1.inhibit-handle-reboot-key" || action.id == "org.freedesktop.login1.inhibit-handle-power-key" ||
action.id == "org.freedesktop.login1.inhibit-handle-suspend-key" || action.id == "org.freedesktop.login1.inhibit-handle-reboot-key" ||
action.id == "org.freedesktop.login1.power-off" || action.id == "org.freedesktop.login1.inhibit-handle-suspend-key" ||
action.id == "org.freedesktop.login1.power-off-ignore-inhibit" || action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions" || action.id == "org.freedesktop.login1.power-off-ignore-inhibit" ||
action.id == "org.freedesktop.login1.reboot" || action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
action.id == "org.freedesktop.login1.reboot-ignore-inhibit" || action.id == "org.freedesktop.login1.reboot" ||
action.id == "org.freedesktop.login1.reboot-multiple-sessions" || action.id == "org.freedesktop.login1.reboot-ignore-inhibit" ||
action.id == "org.freedesktop.login1.set-reboot-parameter" || action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
action.id == "org.freedesktop.login1.set-reboot-to-boot-loader-entry" || action.id == "org.freedesktop.login1.set-reboot-parameter" ||
action.id == "org.freedesktop.login1.set-reboot-to-boot-loader-menu" || action.id == "org.freedesktop.login1.set-reboot-to-boot-loader-entry" ||
action.id == "org.freedesktop.login1.set-reboot-to-firmware-setup" || action.id == "org.freedesktop.login1.set-reboot-to-boot-loader-menu" ||
action.id == "org.freedesktop.login1.set-self-linger" || action.id == "org.freedesktop.login1.set-reboot-to-firmware-setup" ||
action.id == "org.freedesktop.login1.set-user-linger" || action.id == "org.freedesktop.login1.set-self-linger" ||
action.id == "org.freedesktop.login1.set-wall-message" || action.id == "org.freedesktop.login1.set-user-linger" ||
action.id == "org.freedesktop.login1.suspend" || action.id == "org.freedesktop.login1.set-wall-message" ||
action.id == "org.freedesktop.login1.suspend-ignore-inhibit" || action.id == "org.freedesktop.login1.suspend" ||
action.id == "org.freedesktop.login1.suspend-multiple-sessions" action.id == "org.freedesktop.login1.suspend-ignore-inhibit" ||
) { action.id == "org.freedesktop.login1.suspend-multiple-sessions"
return subject.active ? polkit.Result.AUTH_ADMIN : polkit.Result.NO; ) {
}; return subject.active ? polkit.Result.AUTH_ADMIN : polkit.Result.NO;
}); };
''; });
'';
};
} }

View file

@ -18,29 +18,31 @@
}) })
]; ];
hardware.openrazer = { config = {
enable = true; hardware.openrazer = {
users = [ enable = true;
"wroclaw" users = [
]; "wroclaw"
# NIXPKGS-PR: 384992 ];
packages = let # NIXPKGS-PR: 384992
oldVersion = pkgs.python3Packages.openrazer-daemon.version; packages = let
version = "3.10.1"; oldVersion = pkgs.python3Packages.openrazer-daemon.version;
in lib.mapAttrs (_: package: package.overrideAttrs (oldAttrs: { version = "3.10.1";
version = lib.replaceStrings [ oldVersion ] [ version ] oldAttrs.version; in lib.mapAttrs (_: package: package.overrideAttrs (oldAttrs: {
src = pkgs.fetchFromGitHub { version = lib.replaceStrings [ oldVersion ] [ version ] oldAttrs.version;
owner = "openrazer"; src = pkgs.fetchFromGitHub {
repo = "openrazer"; owner = "openrazer";
tag = "v${version}"; repo = "openrazer";
hash = "sha256-igrGx7Y6ENtZatJCTAW43/0q6ZjljJ9/kU3QFli4yIU="; tag = "v${version}";
hash = "sha256-igrGx7Y6ENtZatJCTAW43/0q6ZjljJ9/kU3QFli4yIU=";
};
})) {
kernel = config.boot.kernelPackages.openrazer;
daemon = pkgs.python3Packages.openrazer-daemon;
}; };
})) {
kernel = config.boot.kernelPackages.openrazer;
daemon = pkgs.python3Packages.openrazer-daemon;
}; };
environment.systemPackages = with pkgs; [
polychromatic
];
}; };
environment.systemPackages = with pkgs; [
polychromatic
];
} }

View file

@ -25,136 +25,139 @@ in
imports = [ imports = [
./unstable-packages.nix ./unstable-packages.nix
]; ];
environment.systemPackages = with pkgs; [
aliasDrag
rangerGit
ripgrep
kitty
zoxide
];
programs.bash.shellInit = '' config = {
HISTCONTROL=ignoreboth environment.systemPackages = with pkgs; [
''; aliasDrag
rangerGit
ripgrep
kitty
zoxide
];
programs.bash.interactiveShellInit = '' programs.bash.shellInit = ''
HISTCONTROL=ignoreboth HISTCONTROL=ignoreboth
if test -n "$KITTY_INSTALLATION_DIR"; then '';
export KITTY_SHELL_INTEGRATION="enabled,no-sudo"
source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash"
fi
eval "''$(zoxide init bash)"
alias bye=exit
'';
environment.etc."xdg/kitty/kitty.conf".text = '' programs.bash.interactiveShellInit = ''
font_family MesloLGS Nerd Font HISTCONTROL=ignoreboth
font_size 10.0 if test -n "$KITTY_INSTALLATION_DIR"; then
scrollback_lines 10000 export KITTY_SHELL_INTEGRATION="enabled,no-sudo"
window_border_width 0.5 source "$KITTY_INSTALLATION_DIR/shell-integration/bash/kitty.bash"
window_padding_width 3 fi
${if config.services.xserver.desktopManager.gnome.enable then "hide_window_decorations yes" else ""} eval "''$(zoxide init bash)"
background_opacity 0.8 alias bye=exit
dynamic_background_opacity yes '';
map kitty_mod+alt+c copy_ansi_to_clipboard environment.etc."xdg/kitty/kitty.conf".text = ''
''; font_family MesloLGS Nerd Font
font_size 10.0
scrollback_lines 10000
window_border_width 0.5
window_padding_width 3
${if config.services.xserver.desktopManager.gnome.enable then "hide_window_decorations yes" else ""}
background_opacity 0.8
dynamic_background_opacity yes
environment.etc."ranger/rc.conf".text = '' map kitty_mod+alt+c copy_ansi_to_clipboard
eval import os; fm.set_option_from_string("preview_images", "true") if "KITTY_INSTALLATION_DIR" in os.environ else None; '';
eval import os; fm.set_option_from_string("preview_images_method", "kitty") if "KITTY_INSTALLATION_DIR" in os.environ else None;
set vcs_aware true
set show_hidden true
alias drag shell ${pkgs.ripdrag}/bin/ripdrag -Axd %p & environment.etc."ranger/rc.conf".text = ''
map <C-d> drag eval import os; fm.set_option_from_string("preview_images", "true") if "KITTY_INSTALLATION_DIR" in os.environ else None;
''; eval import os; fm.set_option_from_string("preview_images_method", "kitty") if "KITTY_INSTALLATION_DIR" in os.environ else None;
set vcs_aware true
set show_hidden true
environment.etc."ranger/plugins/zoxide.py".source = pkgs.fetchFromGitHub { alias drag shell ${pkgs.ripdrag}/bin/ripdrag -Axd %p &
owner = "jchook"; map <C-d> drag
repo = "ranger-zoxide"; '';
rev = "281828de060299f73fe0b02fcabf4f2f2bd78ab3";
hash = "sha256-JEuyYSVa1NS3aftezEJx/k19lwwzf7XhqBCL0jH6VT4=";
} + /__init__.py;
programs.direnv.enable = true; environment.etc."ranger/plugins/zoxide.py".source = pkgs.fetchFromGitHub {
owner = "jchook";
repo = "ranger-zoxide";
rev = "281828de060299f73fe0b02fcabf4f2f2bd78ab3";
hash = "sha256-JEuyYSVa1NS3aftezEJx/k19lwwzf7XhqBCL0jH6VT4=";
} + /__init__.py;
programs.neovim = { programs.direnv.enable = true;
enable = true;
viAlias = true;
vimAlias = true;
configure = {
customRC = ''
set number
set hlsearch
set incsearch
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set updatetime=500
colorscheme vim
syntax on programs.neovim = {
set encoding=utf-8 enable = true;
set wildmode=longest,list,full viAlias = true;
set listchars=space:·,tab:» vimAlias = true;
set indentkeys-=0# configure = {
customRC = ''
set number
set hlsearch
set incsearch
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set updatetime=500
colorscheme vim
" rainbow-delimeters-nvim syntax on
let g:rainbow_delimiters = { set encoding=utf-8
\ 'strategy': { set wildmode=longest,list,full
\ ${"''"}: rainbow_delimiters#strategy.global, set listchars=space:·,tab:»
\ }, set indentkeys-=0#
\ }
" vim-gitguter " rainbow-delimeters-nvim
set signcolumn=yes let g:rainbow_delimiters = {
highlight SignColumn NONE \ 'strategy': {
highlight GitGutterAdd ctermfg=2 guifg=#2ea043 \ ${"''"}: rainbow_delimiters#strategy.global,
highlight GitGutterChange ctermfg=4 guifg=#0078d4 \ },
highlight GitGutterDelete ctermfg=1 guifg=#f85149 \ }
lua require('guess-indent').setup {} " vim-gitguter
''; set signcolumn=yes
packages.myVimPackage = with pkgs.vimPlugins; { highlight SignColumn NONE
start = [ highlight GitGutterAdd ctermfg=2 guifg=#2ea043
guess-indent-nvim highlight GitGutterChange ctermfg=4 guifg=#0078d4
vim-visual-multi highlight GitGutterDelete ctermfg=1 guifg=#f85149
autoclose-nvim
rainbow-delimiters-nvim lua require('guess-indent').setup {}
vimagit '';
vim-gitgutter packages.myVimPackage = with pkgs.vimPlugins; {
]; start = [
guess-indent-nvim
vim-visual-multi
autoclose-nvim
rainbow-delimiters-nvim
vimagit
vim-gitgutter
];
};
}; };
}; };
};
environment.variables = lib.mkIf config.programs.neovim.enable rec { environment.variables = lib.mkIf config.programs.neovim.enable rec {
EDITOR = "/run/current-system/sw/bin/nvim"; EDITOR = "/run/current-system/sw/bin/nvim";
VISUAL = EDITOR; VISUAL = EDITOR;
}; };
programs.starship = { programs.starship = {
enable = true; enable = true;
settings = { settings = {
format = "$all$line_break\${custom.ranger}$jobs$battery$time$status$os$container$shell$character"; format = "$all$line_break\${custom.ranger}$jobs$battery$time$status$os$container$shell$character";
directory = { directory = {
truncation_length = 5; truncation_length = 5;
truncation_symbol = "/"; truncation_symbol = "/";
}; };
hostname = { hostname = {
ssh_only = false; ssh_only = false;
}; };
username = { username = {
show_always = true; show_always = true;
}; };
status.disabled = false; status.disabled = false;
custom.ranger = { custom.ranger = {
when = "test $RANGER_LEVEL"; when = "test $RANGER_LEVEL";
command = "echo \"\""; command = "echo \"\"";
style = "bold 208"; style = "bold 208";
};
}; };
}; };
}; };

View file

@ -2,15 +2,17 @@
{ lib, config, pkgs, ... }: { lib, config, pkgs, ... }:
{ {
#virtualisation.waydroid.enable = true; config = {
programs.virt-manager.enable = true; #virtualisation.waydroid.enable = true;
virtualisation.libvirtd = { programs.virt-manager.enable = true;
enable = true; virtualisation.libvirtd = {
qemu.ovmf = {
enable = true; enable = true;
packages = [ qemu.ovmf = {
pkgs.OVMFFull.fd enable = true;
]; packages = [
pkgs.OVMFFull.fd
];
};
}; };
}; };
} }

View file

@ -1,137 +1,137 @@
{ ... }:
{ {
xdg.mime.enable = true; config = {
xdg.mime.defaultApplications = { xdg.mime.enable = true;
# Browser xdg.mime.defaultApplications = {
"x-scheme-handler/http" = "vivaldi-stable.desktop"; # Browser
"application/xhtml+xml" = "vivaldi-stable.desktop"; "x-scheme-handler/http" = "vivaldi-stable.desktop";
"text/html" = "vivaldi-stable.desktop"; "application/xhtml+xml" = "vivaldi-stable.desktop";
"x-scheme-handler/https" = "vivaldi-stable.desktop"; "text/html" = "vivaldi-stable.desktop";
"application/pdf" = "vivaldi-stable.desktop"; "x-scheme-handler/https" = "vivaldi-stable.desktop";
"application/pdf" = "vivaldi-stable.desktop";
# Audio # Audio
"audio/aiff" = "mpv.desktop"; "audio/aiff" = "mpv.desktop";
"audio/basic" = "mpv.desktop"; "audio/basic" = "mpv.desktop";
"audio/it" = "mpv.desktop"; "audio/it" = "mpv.desktop";
"audio/make" = "mpv.desktop"; "audio/make" = "mpv.desktop";
"audio/make.my.funk" = "mpv.desktop"; "audio/make.my.funk" = "mpv.desktop";
"audio/mid" = "mpv.desktop"; "audio/mid" = "mpv.desktop";
"audio/midi" = "mpv.desktop"; "audio/midi" = "mpv.desktop";
"audio/mod" = "mpv.desktop"; "audio/mod" = "mpv.desktop";
"audio/mpeg" = "mpv.desktop"; "audio/mpeg" = "mpv.desktop";
"audio/mpeg3" = "mpv.desktop"; "audio/mpeg3" = "mpv.desktop";
"audio/nspaudio" = "mpv.desktop"; "audio/nspaudio" = "mpv.desktop";
"audio/s3m" = "mpv.desktop"; "audio/s3m" = "mpv.desktop";
"audio/tsp-audio" = "mpv.desktop"; "audio/tsp-audio" = "mpv.desktop";
"audio/tsplayer" = "mpv.desktop"; "audio/tsplayer" = "mpv.desktop";
"audio/vnd.qcelp" = "mpv.desktop"; "audio/vnd.qcelp" = "mpv.desktop";
"audio/voc" = "mpv.desktop"; "audio/voc" = "mpv.desktop";
"audio/voxware" = "mpv.desktop"; "audio/voxware" = "mpv.desktop";
"audio/wav" = "mpv.desktop"; "audio/wav" = "mpv.desktop";
"audio/x-adpcm" = "mpv.desktop"; "audio/x-adpcm" = "mpv.desktop";
"audio/x-aiff" = "mpv.desktop"; "audio/x-aiff" = "mpv.desktop";
"audio/x-au" = "mpv.desktop"; "audio/x-au" = "mpv.desktop";
"audio/x-gsm" = "mpv.desktop"; "audio/x-gsm" = "mpv.desktop";
"audio/x-jam" = "mpv.desktop"; "audio/x-jam" = "mpv.desktop";
"audio/x-liveaudio" = "mpv.desktop"; "audio/x-liveaudio" = "mpv.desktop";
"audio/x-mid" = "mpv.desktop"; "audio/x-mid" = "mpv.desktop";
"audio/x-midi" = "mpv.desktop"; "audio/x-midi" = "mpv.desktop";
"audio/x-mod" = "mpv.desktop"; "audio/x-mod" = "mpv.desktop";
"audio/x-mpeg" = "mpv.desktop"; "audio/x-mpeg" = "mpv.desktop";
"audio/x-mpeg-3" = "mpv.desktop"; "audio/x-mpeg-3" = "mpv.desktop";
"audio/x-mpequrl" = "mpv.desktop"; "audio/x-mpequrl" = "mpv.desktop";
"audio/x-nspaudio" = "mpv.desktop"; "audio/x-nspaudio" = "mpv.desktop";
"audio/x-pn-realaudio" = "mpv.desktop"; "audio/x-pn-realaudio" = "mpv.desktop";
"audio/x-pn-realaudio-plugin" = "mpv.desktop"; "audio/x-pn-realaudio-plugin" = "mpv.desktop";
"audio/x-psid" = "mpv.desktop"; "audio/x-psid" = "mpv.desktop";
"audio/x-realaudio" = "mpv.desktop"; "audio/x-realaudio" = "mpv.desktop";
"audio/x-twinvq" = "mpv.desktop"; "audio/x-twinvq" = "mpv.desktop";
"audio/x-twinvq-plugin" = "mpv.desktop"; "audio/x-twinvq-plugin" = "mpv.desktop";
"audio/x-vnd.audioexplosion.mjuicemediafile" = "mpv.desktop"; "audio/x-vnd.audioexplosion.mjuicemediafile" = "mpv.desktop";
"audio/x-voc" = "mpv.desktop"; "audio/x-voc" = "mpv.desktop";
"audio/x-wav" = "mpv.desktop"; "audio/x-wav" = "mpv.desktop";
"audio/xm" = "mpv.desktop"; "audio/xm" = "mpv.desktop";
# Video # Video
"video/animaflex" = "mpv.desktop"; "video/animaflex" = "mpv.desktop";
"video/avi" = "mpv.desktop"; "video/avi" = "mpv.desktop";
"video/avs-video" = "mpv.desktop"; "video/avs-video" = "mpv.desktop";
"video/dl" = "mpv.desktop"; "video/dl" = "mpv.desktop";
"video/fli" = "mpv.desktop"; "video/fli" = "mpv.desktop";
"video/gl" = "mpv.desktop"; "video/gl" = "mpv.desktop";
"video/mpeg" = "mpv.desktop"; "video/mpeg" = "mpv.desktop";
"video/msvideo" = "mpv.desktop"; "video/msvideo" = "mpv.desktop";
"video/quicktime" = "mpv.desktop"; "video/quicktime" = "mpv.desktop";
"video/vdo" = "mpv.desktop"; "video/vdo" = "mpv.desktop";
"video/vivo" = "mpv.desktop"; "video/vivo" = "mpv.desktop";
"video/vnd.rn-realvideo" = "mpv.desktop"; "video/vnd.rn-realvideo" = "mpv.desktop";
"video/vnd.vivo" = "mpv.desktop"; "video/vnd.vivo" = "mpv.desktop";
"video/vosaic" = "mpv.desktop"; "video/vosaic" = "mpv.desktop";
"video/x-amt-demorun" = "mpv.desktop"; "video/x-amt-demorun" = "mpv.desktop";
"video/x-amt-showrun" = "mpv.desktop"; "video/x-amt-showrun" = "mpv.desktop";
"video/x-atomic3d-feature" = "mpv.desktop"; "video/x-atomic3d-feature" = "mpv.desktop";
"video/x-dl" = "mpv.desktop"; "video/x-dl" = "mpv.desktop";
"video/x-dv" = "mpv.desktop"; "video/x-dv" = "mpv.desktop";
"video/x-fli" = "mpv.desktop"; "video/x-fli" = "mpv.desktop";
"video/x-gl" = "mpv.desktop"; "video/x-gl" = "mpv.desktop";
"video/x-isvideo" = "mpv.desktop"; "video/x-isvideo" = "mpv.desktop";
"video/x-motion-jpeg" = "mpv.desktop"; "video/x-motion-jpeg" = "mpv.desktop";
"video/x-mpeg" = "mpv.desktop"; "video/x-mpeg" = "mpv.desktop";
"video/x-mpeq2a" = "mpv.desktop"; "video/x-mpeq2a" = "mpv.desktop";
"video/x-ms-asf" = "mpv.desktop"; "video/x-ms-asf" = "mpv.desktop";
"video/x-ms-asf-plugin" = "mpv.desktop"; "video/x-ms-asf-plugin" = "mpv.desktop";
"video/x-msvideo" = "mpv.desktop"; "video/x-msvideo" = "mpv.desktop";
"video/x-qtc" = "mpv.desktop"; "video/x-qtc" = "mpv.desktop";
"video/x-scm" = "mpv.desktop"; "video/x-scm" = "mpv.desktop";
"video/x-sgi-movie" = "mpv.desktop"; "video/x-sgi-movie" = "mpv.desktop";
# Image # Image
"image/bmp" = "qimgv.desktop"; "image/bmp" = "qimgv.desktop";
"image/cmu-raster" = "qimgv.desktop"; "image/cmu-raster" = "qimgv.desktop";
"image/fif" = "qimgv.desktop"; "image/fif" = "qimgv.desktop";
"image/florian" = "qimgv.desktop"; "image/florian" = "qimgv.desktop";
"image/g3fax" = "qimgv.desktop"; "image/g3fax" = "qimgv.desktop";
"image/gif" = "qimgv.desktop"; "image/gif" = "qimgv.desktop";
"image/ief" = "qimgv.desktop"; "image/ief" = "qimgv.desktop";
"image/jpeg" = "qimgv.desktop"; "image/jpeg" = "qimgv.desktop";
"image/jutvision" = "qimgv.desktop"; "image/jutvision" = "qimgv.desktop";
"image/naplps" = "qimgv.desktop"; "image/naplps" = "qimgv.desktop";
"image/pict" = "qimgv.desktop"; "image/pict" = "qimgv.desktop";
"image/pjpeg" = "qimgv.desktop"; "image/pjpeg" = "qimgv.desktop";
"image/png" = "qimgv.desktop"; "image/png" = "qimgv.desktop";
"image/tiff" = "qimgv.desktop"; "image/tiff" = "qimgv.desktop";
"image/vasa" = "qimgv.desktop"; "image/vasa" = "qimgv.desktop";
"image/vnd.dwg" = "qimgv.desktop"; "image/vnd.dwg" = "qimgv.desktop";
"image/vnd.fpx" = "qimgv.desktop"; "image/vnd.fpx" = "qimgv.desktop";
"image/vnd.net-fpx" = "qimgv.desktop"; "image/vnd.net-fpx" = "qimgv.desktop";
"image/vnd.rn-realflash" = "qimgv.desktop"; "image/vnd.rn-realflash" = "qimgv.desktop";
"image/vnd.rn-realpix" = "qimgv.desktop"; "image/vnd.rn-realpix" = "qimgv.desktop";
"image/vnd.wap.wbmp" = "qimgv.desktop"; "image/vnd.wap.wbmp" = "qimgv.desktop";
"image/vnd.xiff" = "qimgv.desktop"; "image/vnd.xiff" = "qimgv.desktop";
"image/x-cmu-raster" = "qimgv.desktop"; "image/x-cmu-raster" = "qimgv.desktop";
"image/x-dwg" = "qimgv.desktop"; "image/x-dwg" = "qimgv.desktop";
"image/x-icon" = "qimgv.desktop"; "image/x-icon" = "qimgv.desktop";
"image/x-jg" = "qimgv.desktop"; "image/x-jg" = "qimgv.desktop";
"image/x-jps" = "qimgv.desktop"; "image/x-jps" = "qimgv.desktop";
"image/x-niff" = "qimgv.desktop"; "image/x-niff" = "qimgv.desktop";
"image/x-pcx" = "qimgv.desktop"; "image/x-pcx" = "qimgv.desktop";
"image/x-pict" = "qimgv.desktop"; "image/x-pict" = "qimgv.desktop";
"image/x-portable-anymap" = "qimgv.desktop"; "image/x-portable-anymap" = "qimgv.desktop";
"image/x-portable-bitmap" = "qimgv.desktop"; "image/x-portable-bitmap" = "qimgv.desktop";
"image/x-portable-graymap" = "qimgv.desktop"; "image/x-portable-graymap" = "qimgv.desktop";
"image/x-portable-greymap" = "qimgv.desktop"; "image/x-portable-greymap" = "qimgv.desktop";
"image/x-portable-pixmap" = "qimgv.desktop"; "image/x-portable-pixmap" = "qimgv.desktop";
"image/x-quicktime" = "qimgv.desktop"; "image/x-quicktime" = "qimgv.desktop";
"image/x-rgb" = "qimgv.desktop"; "image/x-rgb" = "qimgv.desktop";
"image/x-tiff" = "qimgv.desktop"; "image/x-tiff" = "qimgv.desktop";
"image/x-windows-bmp" = "qimgv.desktop"; "image/x-windows-bmp" = "qimgv.desktop";
"image/x-xbitmap" = "qimgv.desktop"; "image/x-xbitmap" = "qimgv.desktop";
"image/x-xbm" = "qimgv.desktop"; "image/x-xbm" = "qimgv.desktop";
"image/x-xpixmap" = "qimgv.desktop"; "image/x-xpixmap" = "qimgv.desktop";
"image/x-xwd" = "qimgv.desktop"; "image/x-xwd" = "qimgv.desktop";
"image/x-xwindowdump" = "qimgv.desktop"; "image/x-xwindowdump" = "qimgv.desktop";
"image/xbm" = "qimgv.desktop"; "image/xbm" = "qimgv.desktop";
"image/xpm" = "qimgv.desktop"; "image/xpm" = "qimgv.desktop";
};
}; };
} }