Reviewed-on: https://gitea.mrdev023.fr/florian.richer/nixos/pulls/1 Co-authored-by: Florian RICHER <florian.richer@protonmail.com> Co-committed-by: Florian RICHER <florian.richer@protonmail.com>
This commit is contained in:
parent
e9329e63dc
commit
b7f82f87e8
84 changed files with 1100 additions and 1247 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
||||||
result
|
result
|
||||||
*.swp
|
*.swp
|
||||||
|
*.qcow2
|
59
TODO
59
TODO
|
@ -1,59 +0,0 @@
|
||||||
# Preparation integration server (Re-structuration configs)
|
|
||||||
|
|
||||||
home/
|
|
||||||
----> alacritty
|
|
||||||
----> chromium
|
|
||||||
----> direnv
|
|
||||||
----> emacs
|
|
||||||
----> flatpak
|
|
||||||
----> git
|
|
||||||
----> default
|
|
||||||
|
|
||||||
======> hosts -> rename to machines
|
|
||||||
machines/
|
|
||||||
----> machine1/
|
|
||||||
------------> hardware-configuration.nix
|
|
||||||
------------> system.nix
|
|
||||||
------------> home.nix
|
|
||||||
----> machine2/
|
|
||||||
------------> hardware-configuration.nix
|
|
||||||
------------> system.nix
|
|
||||||
------------> home.nix
|
|
||||||
|
|
||||||
======> modules -> rename to system
|
|
||||||
system/
|
|
||||||
----> server/
|
|
||||||
------------> ssh
|
|
||||||
------------> openvscode
|
|
||||||
------------> docker
|
|
||||||
----> graphics/
|
|
||||||
------------> plasma
|
|
||||||
------------> gnome
|
|
||||||
------------> hyprland
|
|
||||||
----> devices/
|
|
||||||
------------> print-support
|
|
||||||
------------> bluetooth
|
|
||||||
------------> nvidia
|
|
||||||
----> modules/
|
|
||||||
------------> plymouth
|
|
||||||
|
|
||||||
secrets/ (In separate repo ? submodules ?)
|
|
||||||
----> service1_secrets
|
|
||||||
----> service2_secrets
|
|
||||||
|
|
||||||
pkgs/
|
|
||||||
overlays/
|
|
||||||
|
|
||||||
How work WSL ?
|
|
||||||
How work Darwin ?
|
|
||||||
How work Nix only system (Not nixos) ?
|
|
||||||
How work disko ?
|
|
||||||
Separate explicitly config and basic usage ?
|
|
||||||
|
|
||||||
# SSH
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
authorizedKeysFiles = [key1 key2 key3]; # From agenix
|
|
||||||
}
|
|
17
flake.nix
17
flake.nix
|
@ -19,10 +19,10 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs@{
|
outputs = inputs@{
|
||||||
nixpkgs,
|
nixpkgs,
|
||||||
home-manager,
|
home-manager,
|
||||||
agenix,
|
agenix,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
systems = [
|
systems = [
|
||||||
|
@ -37,10 +37,15 @@
|
||||||
${s.name} = nixpkgs.lib.nixosSystem {
|
${s.name} = nixpkgs.lib.nixosSystem {
|
||||||
inherit (s) system;
|
inherit (s) system;
|
||||||
modules = [
|
modules = [
|
||||||
./hosts/${s.name}
|
./hosts/${s.name}/configuration.nix
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
agenix.nixosModules.default
|
agenix.nixosModules.default
|
||||||
(import ./home/common-home-manager.nix { inherit inputs; })
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.extraSpecialArgs = inputs;
|
||||||
|
home-manager.users.florian = import ./hosts/${s.name}/home.nix;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}) {} systems;
|
}) {} systems;
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
{ inputs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.useUserPackages = true;
|
|
||||||
home-manager.extraSpecialArgs = inputs;
|
|
||||||
home-manager.users.florian = import ../home;
|
|
||||||
}
|
|
|
@ -1,31 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./programs/agenix.nix
|
|
||||||
./programs/shell.nix
|
|
||||||
./programs/atuin.nix
|
|
||||||
./programs/git.nix
|
|
||||||
# ./programs/emacs.nix
|
|
||||||
./programs/jetbrains-toolbox.nix
|
|
||||||
./programs/vscode.nix
|
|
||||||
./programs/direnv.nix
|
|
||||||
./programs/chromium.nix
|
|
||||||
./programs/flatpak.nix
|
|
||||||
|
|
||||||
./homePrograms
|
|
||||||
];
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = "florian";
|
|
||||||
homeDirectory = "/home/florian";
|
|
||||||
|
|
||||||
stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
|
|
||||||
homePrograms.kitty.enable = true;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./hyprland.nix
|
|
||||||
./kitty.nix
|
|
||||||
./zsh
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,225 +0,0 @@
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.homePrograms.hyprland = {
|
|
||||||
enable = mkEnableOption ''
|
|
||||||
Enable hyprland with my custom configurations
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
cfg = config.homePrograms.hyprland;
|
|
||||||
|
|
||||||
set_volume = pkgs.writeScriptBin "set_volume.sh" ''
|
|
||||||
#!${pkgs.runtimeShell}
|
|
||||||
pactl set-sink-volume @DEFAULT_SINK@ $1 && $send_volume_notif notify-send "Volume" -h int:value:"$(pactl get-sink-volume @DEFAULT_SINK@ | cut -d ' ' -f6 | cut -d '%' -f1)"
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
homePrograms.kitty.enable = true; # Required
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
exec-once = [
|
|
||||||
"dunst -conf ~/.config/hypr/dunstrc"
|
|
||||||
"~/.config/hypr/eww/scripts/start"
|
|
||||||
"~/.config/hypr/swww/start"
|
|
||||||
|
|
||||||
# Keyring daemon
|
|
||||||
"gnome-keyring-daemon --start --components=gpg"
|
|
||||||
"gnome-keyring-daemon --start --components=secrets"
|
|
||||||
"gnome-keyring-daemon --start --components=ssh"
|
|
||||||
"gnome-keyring-daemon --start --components=pkcs11"
|
|
||||||
|
|
||||||
"/usr/libexec/kf5/polkit-kde-authentication-agent-1"
|
|
||||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
|
||||||
];
|
|
||||||
|
|
||||||
env = "XCURSOR_SIZE,24";
|
|
||||||
|
|
||||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
|
||||||
input = {
|
|
||||||
kb_layout = config.services.xserver.xkb.layout;
|
|
||||||
kb_variant = config.services.xserver.xkb.variant;
|
|
||||||
kb_model = "";
|
|
||||||
kb_options = "";
|
|
||||||
kb_rules = "";
|
|
||||||
|
|
||||||
follow_mouse = 1;
|
|
||||||
numlock_by_default = 1;
|
|
||||||
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = "no";
|
|
||||||
disable_while_typing = "yes";
|
|
||||||
tap-to-click = "yes";
|
|
||||||
};
|
|
||||||
|
|
||||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
|
||||||
};
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 20;
|
|
||||||
border_size = 3;
|
|
||||||
col.active_border = "rgb()";
|
|
||||||
col.inactive_border = "rgb()";
|
|
||||||
|
|
||||||
layout = "dwindle";
|
|
||||||
};
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
decoration = {
|
|
||||||
rounding = 10;
|
|
||||||
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 3;
|
|
||||||
passes = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
drop_shadow = "yes";
|
|
||||||
shadow_range = 15;
|
|
||||||
shadow_render_power = 4;
|
|
||||||
col.shadow = "rgb()";
|
|
||||||
col.shadow_inactive = "rgb()";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
|
||||||
animations = {
|
|
||||||
enabled = "yes";
|
|
||||||
|
|
||||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows, 1, 7, myBezier"
|
|
||||||
"windowsOut, 1, 7, default, popin 80%"
|
|
||||||
"border, 1, 10, default"
|
|
||||||
"borderangle, 1, 8, default"
|
|
||||||
"fade, 1, 7, default"
|
|
||||||
"workspaces, 1, 6, default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = "yes"; # you probably want this
|
|
||||||
};
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
|
||||||
master = {
|
|
||||||
new_is_master = "true";
|
|
||||||
};
|
|
||||||
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
|
||||||
gestures = {
|
|
||||||
workspace_swipe = "on";
|
|
||||||
workspace_swipe_forever = "on";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Example per-device config
|
|
||||||
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
|
||||||
"device:epic-mouse-v1" = {
|
|
||||||
sensitivity = "-0.5";
|
|
||||||
};
|
|
||||||
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
"SUPERSHIFT,R,hyprload,reload"
|
|
||||||
"SUPERSHIFT,U,hyprload,update"
|
|
||||||
|
|
||||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
||||||
"$mainMod, RETURN, exec, kitty"
|
|
||||||
"$mainMod, C, killactive,"
|
|
||||||
"$mainMod SHIFT, C, exec, hyprpicker -a -f hex"
|
|
||||||
"$mainMod SHIFT, Q, exit,"
|
|
||||||
"$mainMod, E, exec, nautilus"
|
|
||||||
"$mainMod, V, togglefloating,"
|
|
||||||
"$mainMod, F, fullscreen, 0"
|
|
||||||
"$mainMod, D, exec, wofi -i -s ~/.config/hypr/wofi/style.css --show drun"
|
|
||||||
"$mainMod, P, pseudo," # dwindle
|
|
||||||
"$mainMod, B, togglesplit," # dwindle
|
|
||||||
|
|
||||||
# Move focus with mainMod + arrow keys
|
|
||||||
"$mainMod, h, movefocus, l"
|
|
||||||
"$mainMod, l, movefocus, r"
|
|
||||||
"$mainMod, j, movefocus, u"
|
|
||||||
"$mainMod, k, movefocus, d"
|
|
||||||
|
|
||||||
"$mainMod SHIFT_L, h, movewindow, l"
|
|
||||||
"$mainMod SHIFT_L, l, movewindow, r"
|
|
||||||
"$mainMod SHIFT_L, j, movewindow, u"
|
|
||||||
"$mainMod SHIFT_L, k, movewindow, d"
|
|
||||||
|
|
||||||
"$mainMod ALT_L, v, exec, dunstctl context"
|
|
||||||
"$mainMod ALT_L, c, exec, dunstctl close-all"
|
|
||||||
"$mainMod ALT_L, x, exec, dunstctl close"
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
"$mainMod, 1, split-workspace, 1"
|
|
||||||
"$mainMod, 2, split-workspace, 2"
|
|
||||||
"$mainMod, 3, split-workspace, 3"
|
|
||||||
"$mainMod, 4, split-workspace, 4"
|
|
||||||
"$mainMod, 5, split-workspace, 5"
|
|
||||||
"$mainMod, 6, split-workspace, 6"
|
|
||||||
"$mainMod, 7, split-workspace, 7"
|
|
||||||
"$mainMod, 8, split-workspace, 8"
|
|
||||||
"$mainMod, 9, split-workspace, 9"
|
|
||||||
"$mainMod, 0, split-workspace, 10"
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
"$mainMod SHIFT, 1, split-movetoworkspace, 1"
|
|
||||||
"$mainMod SHIFT, 2, split-movetoworkspace, 2"
|
|
||||||
"$mainMod SHIFT, 3, split-movetoworkspace, 3"
|
|
||||||
"$mainMod SHIFT, 4, split-movetoworkspace, 4"
|
|
||||||
"$mainMod SHIFT, 5, split-movetoworkspace, 5"
|
|
||||||
"$mainMod SHIFT, 6, split-movetoworkspace, 6"
|
|
||||||
"$mainMod SHIFT, 7, split-movetoworkspace, 7"
|
|
||||||
"$mainMod SHIFT, 8, split-movetoworkspace, 8"
|
|
||||||
"$mainMod SHIFT, 9, split-movetoworkspace, 9"
|
|
||||||
"$mainMod SHIFT, 0, split-movetoworkspace, 10"
|
|
||||||
|
|
||||||
# Scroll through existing workspaces with mainMod + scroll
|
|
||||||
"$mainMod, mouse_down, workspace, e+1"
|
|
||||||
"$mainMod, mouse_up, workspace, e-1"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
|
||||||
"$mainMod, mouse:272, movewindow"
|
|
||||||
"$mainMod, mouse:273, resizewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
binde = [
|
|
||||||
"$mainMod CTRL_L, h, resizeactive, -50 0"
|
|
||||||
"$mainMod CTRL_L, l, resizeactive, 50 0"
|
|
||||||
"$mainMod CTRL_L, j, resizeactive, 0 -50"
|
|
||||||
"$mainMod CTRL_L, k, resizeactive, 0 50"
|
|
||||||
|
|
||||||
# Use pactl to adjust volume in PulseAudio.
|
|
||||||
", XF86AudioRaiseVolume, exec, ${set_volume} \"+5%\""
|
|
||||||
", XF86AudioLowerVolume, exec, ${set_volume} \"-5%\""
|
|
||||||
];
|
|
||||||
|
|
||||||
bindl = [
|
|
||||||
", XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
|
||||||
", XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
|
||||||
|
|
||||||
# Media player controls
|
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPause, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
|
||||||
", XF86AudioNext, exec, playerctl next"
|
|
||||||
|
|
||||||
# Screen brightness controls
|
|
||||||
", XF86MonBrightnessUp, exec, xbacklight -inc 5"
|
|
||||||
", XF86MonBrightnessDown, exec, xbacklight -dec 5"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,45 +0,0 @@
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.homePrograms.kitty = {
|
|
||||||
enable = mkEnableOption ''
|
|
||||||
Enable kitty with my custom configurations
|
|
||||||
'';
|
|
||||||
|
|
||||||
enableBlur = mkOption {
|
|
||||||
default = !config.homePrograms.hyprland.enable; # Disable by default if hyprland is enabled (Hyprland enable own blur)
|
|
||||||
example = true;
|
|
||||||
description = ''
|
|
||||||
Enable blur (Usefull to disable with hyprland)
|
|
||||||
'';
|
|
||||||
type = types.bool;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
cfg = config.homePrograms.kitty;
|
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
font = {
|
|
||||||
name = "FiraCode Nerd Font";
|
|
||||||
package = pkgs.fira-code-nerdfont;
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = lib.mkMerge [
|
|
||||||
{
|
|
||||||
disable_ligatures = "never";
|
|
||||||
sync_to_monitor = "yes"; # Avoid to update a lot
|
|
||||||
confirm_os_window_close = 0; # Disable close confirmation
|
|
||||||
|
|
||||||
background_opacity = "0.7";
|
|
||||||
}
|
|
||||||
|
|
||||||
(lib.mkIf cfg.enableBlur { background_blur = "1"; })
|
|
||||||
(lib.mkIf config.programs.zsh.enable { shell = "zsh"; })
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.homePrograms.zsh = {
|
|
||||||
enable = mkEnableOption ''
|
|
||||||
Enable zsh with my custom configurations
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
cfg = config.homePrograms.zsh;
|
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
|
|
||||||
initExtra = ''
|
|
||||||
[[ ! -f ${./p10k.zsh} ]] || source ${./p10k.zsh}
|
|
||||||
'';
|
|
||||||
|
|
||||||
plugins = with pkgs; [
|
|
||||||
{
|
|
||||||
file = "powerlevel10k.zsh-theme";
|
|
||||||
name = "powerlevel10k";
|
|
||||||
src = "${zsh-powerlevel10k}/share/zsh-powerlevel10k";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
file = "p10k.zsh";
|
|
||||||
name = "powerlevel10k-config";
|
|
||||||
src = zsh-powerlevel10k;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ pkgs, agenix, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = [
|
|
||||||
agenix.packages."${pkgs.system}".default
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ config, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.atuin = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
# Uncomment this to use your instance
|
|
||||||
# sync_address = "https://majiy00-shell.fly.dev";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.chromium = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
package = pkgs.chromium.override {
|
|
||||||
enableWideVine = true; # Enable DRM
|
|
||||||
};
|
|
||||||
|
|
||||||
extensions = [
|
|
||||||
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # Ublock Origin
|
|
||||||
{ id = "nngceckbapebfimnlniiiahkandclblb"; } # Bitwarden
|
|
||||||
{ id = "fnaicdffflnofjppbagibeoednhnbjhg"; } # Floccus Bookmark manager
|
|
||||||
{ id = "fihnjjcciajhdojfnbdddfaoknhalnja"; } # I don't care about cookies
|
|
||||||
{ id = "cimiefiiaegbelhefglklhhakcgmhkai"; } # Plasma Integration
|
|
||||||
{ id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; } # Dark reader
|
|
||||||
{ id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } # SponsorBlock
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.direnv.enable = true;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.emacs = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
{ config, pkgs, nix-flatpak, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ nix-flatpak.homeManagerModules.nix-flatpak ];
|
|
||||||
|
|
||||||
services.flatpak = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
update.onActivation = true;
|
|
||||||
|
|
||||||
packages = [
|
|
||||||
# Gaming
|
|
||||||
{ appId = "com.discordapp.Discord"; origin = "flathub"; }
|
|
||||||
{ appId = "com.valvesoftware.Steam"; origin = "flathub"; }
|
|
||||||
{ appId = "net.lutris.Lutris"; origin = "flathub"; }
|
|
||||||
|
|
||||||
# Pro
|
|
||||||
{ appId = "com.slack.Slack"; origin = "flathub"; }
|
|
||||||
{ appId = "com.skype.Client"; origin = "flathub"; }
|
|
||||||
{ appId = "org.mozilla.Thunderbird"; origin = "flathub"; }
|
|
||||||
{ appId = "ch.protonmail.protonmail-bridge"; origin = "flathub"; }
|
|
||||||
{ appId = "org.kde.neochat"; origin = "flathub"; }
|
|
||||||
|
|
||||||
# Loisir
|
|
||||||
{ appId = "com.spotify.Client"; origin = "flathub"; }
|
|
||||||
{ appId = "io.gitlab.news_flash.NewsFlash"; origin = "flathub"; }
|
|
||||||
{ appId = "org.videolan.VLC"; origin = "flathub"; }
|
|
||||||
{ appId = "com.obsproject.Studio"; origin = "flathub"; }
|
|
||||||
{ appId = "io.github.achetagames.epic_asset_manager"; origin = "flathub"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Florian RICHER";
|
|
||||||
userEmail = "florian.richer@protonmail.com";
|
|
||||||
|
|
||||||
# signing.signByDefault = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [jetbrains-toolbox];
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{ config, pkgs, users, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
homePrograms.zsh.enable = true;
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.vscode = {
|
|
||||||
enable = true;
|
|
||||||
enableUpdateCheck = false;
|
|
||||||
enableExtensionUpdateCheck = false;
|
|
||||||
|
|
||||||
userSettings = {
|
|
||||||
"files.autoSave" = "onFocusChange";
|
|
||||||
"emmet.includeLanguages" = {
|
|
||||||
"phoenix-heex" = "html";
|
|
||||||
};
|
|
||||||
"git.autofetch" = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
userTasks = {};
|
|
||||||
|
|
||||||
extensions = with pkgs; with vscode-extensions; [
|
|
||||||
# Nix
|
|
||||||
bbenoist.nix
|
|
||||||
|
|
||||||
# Rust
|
|
||||||
rust-lang.rust-analyzer
|
|
||||||
serayuzgur.crates
|
|
||||||
tamasfe.even-better-toml
|
|
||||||
|
|
||||||
# Phoenix
|
|
||||||
phoenixframework.phoenix
|
|
||||||
elixir-lsp.vscode-elixir-ls
|
|
||||||
|
|
||||||
# Ruby
|
|
||||||
shopify.ruby-lsp
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -7,16 +7,8 @@
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
../../modules/linux_gaming.nix
|
../../modules/system
|
||||||
../../modules/system.nix
|
|
||||||
../../modules/network.nix
|
|
||||||
../../modules/keymaps/us.nix
|
|
||||||
../../modules/pipewire.nix
|
|
||||||
../../modules/plasma.nix
|
|
||||||
../../modules/plymouth.nix
|
|
||||||
|
|
||||||
../../modules # Import optional configuration
|
|
||||||
|
|
||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
@ -31,8 +23,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure for testing in vm
|
networking.hostName = "nixos-vm"; # Define your hostname.
|
||||||
users.users.florian.initialPassword = "test";
|
users.users.florian.initialPassword = "test";
|
||||||
|
|
||||||
|
# Configure for testing in vm
|
||||||
virtualisation.vmVariant = {
|
virtualisation.vmVariant = {
|
||||||
# following configuration is added only when building VM with build-vm
|
# following configuration is added only when building VM with build-vm
|
||||||
virtualisation = {
|
virtualisation = {
|
||||||
|
@ -41,5 +35,24 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.hostName = "nixos-vm"; # Define your hostname.
|
modules.system = {
|
||||||
|
desktop = {
|
||||||
|
plasma.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
server = {
|
||||||
|
docker.enable = true;
|
||||||
|
openssh.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
gamingKernel.enable = true;
|
||||||
|
keymaps.layout = "us";
|
||||||
|
pipewire.enable = true;
|
||||||
|
plymouth.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
waydroid.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
25
hosts/nixos-test/home.nix
Normal file
25
hosts/nixos-test/home.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../modules/home
|
||||||
|
];
|
||||||
|
|
||||||
|
modules.home = {
|
||||||
|
apps = {
|
||||||
|
chromium.enable = true;
|
||||||
|
flatpak.enable = true;
|
||||||
|
jetbrainsToolbox.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
shell = {
|
||||||
|
zsh.enable = true;
|
||||||
|
atuin.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -7,18 +7,7 @@
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
../../modules/linux_gaming.nix
|
../../modules/system
|
||||||
../../modules/system.nix
|
|
||||||
../../modules/network.nix
|
|
||||||
../../modules/nvidia.nix
|
|
||||||
../../modules/plasma.nix
|
|
||||||
../../modules/keymaps/us.nix
|
|
||||||
../../modules/bluetooth.nix
|
|
||||||
../../modules/pipewire.nix
|
|
||||||
../../modules/plymouth.nix
|
|
||||||
../../modules/waydroid.nix
|
|
||||||
|
|
||||||
../../modules # Import optional configuration
|
|
||||||
|
|
||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -29,4 +18,21 @@
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
networking.hostName = "nixos-desktop-perso"; # Define your hostname.
|
networking.hostName = "nixos-desktop-perso"; # Define your hostname.
|
||||||
|
|
||||||
|
modules.system = {
|
||||||
|
desktop = {
|
||||||
|
plasma.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
gamingKernel.enable = true;
|
||||||
|
keymaps.layout = "us";
|
||||||
|
nvidia.enable = true;
|
||||||
|
pipewire.enable = true;
|
||||||
|
plymouth.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
waydroid.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
25
hosts/perso-desktop/home.nix
Normal file
25
hosts/perso-desktop/home.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../modules/home
|
||||||
|
];
|
||||||
|
|
||||||
|
modules.home = {
|
||||||
|
apps = {
|
||||||
|
chromium.enable = true;
|
||||||
|
flatpak.enable = true;
|
||||||
|
jetbrainsToolbox.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
shell = {
|
||||||
|
zsh.enable = true;
|
||||||
|
atuin.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -7,17 +7,7 @@
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
../../modules/linux_gaming.nix
|
../../modules/system
|
||||||
../../modules/system.nix
|
|
||||||
../../modules/network.nix
|
|
||||||
../../modules/nvidia.nix
|
|
||||||
../../modules/plasma.nix
|
|
||||||
../../modules/keymaps/fr.nix
|
|
||||||
../../modules/bluetooth.nix
|
|
||||||
../../modules/pipewire.nix
|
|
||||||
../../modules/plymouth.nix
|
|
||||||
|
|
||||||
../../modules # Import optional configuration
|
|
||||||
|
|
||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -42,5 +32,20 @@
|
||||||
nvidiaBusId = "PCI:1:0:0";
|
nvidiaBusId = "PCI:1:0:0";
|
||||||
};
|
};
|
||||||
|
|
||||||
# customModules.gpuPassthrough.enable = true;
|
modules.system = {
|
||||||
|
desktop = {
|
||||||
|
plasma.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
gamingKernel.enable = true;
|
||||||
|
keymaps.layout = "fr";
|
||||||
|
nvidia.enable = true;
|
||||||
|
pipewire.enable = true;
|
||||||
|
plymouth.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
waydroid.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
25
hosts/perso-laptop/home.nix
Normal file
25
hosts/perso-laptop/home.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../modules/home
|
||||||
|
];
|
||||||
|
|
||||||
|
modules.home = {
|
||||||
|
apps = {
|
||||||
|
chromium.enable = true;
|
||||||
|
flatpak.enable = true;
|
||||||
|
jetbrainsToolbox.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
shell = {
|
||||||
|
zsh.enable = true;
|
||||||
|
atuin.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -7,17 +7,7 @@
|
||||||
{
|
{
|
||||||
imports =
|
imports =
|
||||||
[
|
[
|
||||||
../../modules/linux_gaming.nix
|
../../modules/system
|
||||||
../../modules/system.nix
|
|
||||||
../../modules/network.nix
|
|
||||||
../../modules/nvidia.nix
|
|
||||||
../../modules/plasma.nix
|
|
||||||
../../modules/keymaps/fr.nix
|
|
||||||
../../modules/bluetooth.nix
|
|
||||||
../../modules/pipewire.nix
|
|
||||||
../../modules/plymouth.nix
|
|
||||||
|
|
||||||
../../modules # Import optional configuration
|
|
||||||
|
|
||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
@ -41,4 +31,21 @@
|
||||||
# information bus: pci@0000:01:00.0
|
# information bus: pci@0000:01:00.0
|
||||||
nvidiaBusId = "PCI:1:0:0";
|
nvidiaBusId = "PCI:1:0:0";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
modules.system = {
|
||||||
|
desktop = {
|
||||||
|
plasma.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = true;
|
||||||
|
gamingKernel.enable = true;
|
||||||
|
keymaps.layout = "fr";
|
||||||
|
nvidia.enable = true;
|
||||||
|
pipewire.enable = true;
|
||||||
|
plymouth.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
waydroid.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
25
hosts/pro-laptop/home.nix
Normal file
25
hosts/pro-laptop/home.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../modules/home
|
||||||
|
];
|
||||||
|
|
||||||
|
modules.home = {
|
||||||
|
apps = {
|
||||||
|
chromium.enable = true;
|
||||||
|
flatpak.enable = true;
|
||||||
|
jetbrainsToolbox.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
shell = {
|
||||||
|
zsh.enable = true;
|
||||||
|
atuin.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
git.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.customModules.AI = {
|
|
||||||
enable = mkEnableOption ''
|
|
||||||
Enable AI
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
cfg = config.customModules.AI;
|
|
||||||
nvidiaEnabled = config.hardware.nvidia.modesetting.enable;
|
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
services.ollama = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
acceleration =
|
|
||||||
if nvidiaEnabled then
|
|
||||||
"cuda"
|
|
||||||
else
|
|
||||||
null;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// mkIf nvidiaEnabled { environment.systemPackages = with pkgs; [cudatoolkit]; };
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./gpuPassthrough
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
virtualisation.docker.enable = true;
|
|
||||||
virtualisation.docker.enableNvidia = config.hardware.nvidia.modesetting.enable;
|
|
||||||
users.users.florian.extraGroups = [ "docker" ];
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
# Enable the Gnome Desktop Environment.
|
|
||||||
services.xserver.displayManager.gdm.enable = true;
|
|
||||||
|
|
||||||
# Enable the GNOME shell.
|
|
||||||
services.xserver.desktopManager.gnome.enable = true;
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
{ config, pkgs, lib, ... }:
|
|
||||||
with lib;
|
|
||||||
{
|
|
||||||
options.customModules.gpuPassthrough = {
|
|
||||||
enable = mkEnableOption ''
|
|
||||||
Enable gpu passthgrouth with my custom configurations
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
config =
|
|
||||||
let
|
|
||||||
cfg = config.customModules.gpuPassthrough;
|
|
||||||
in
|
|
||||||
mkIf cfg.enable {
|
|
||||||
programs.virt-manager.enable = true;
|
|
||||||
|
|
||||||
virtualisation.libvirtd = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
hooks.qemu = {
|
|
||||||
is_working = "${pkgs.writeShellScript "testHook.sh" ''
|
|
||||||
touch /tmp/qemu_hook_is_working
|
|
||||||
''}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
## Load the config file
|
|
||||||
source "/etc/libvirt/hooks/kvm.conf"
|
|
||||||
|
|
||||||
## Calculate number of hugepages to allocate from memory (in MB)
|
|
||||||
HUGEPAGES="$(($VM_MEMORY/$(($(grep Hugepagesize /proc/meminfo | awk '{print $2}')/1024))))"
|
|
||||||
|
|
||||||
echo "Allocating hugepages..."
|
|
||||||
echo $HUGEPAGES > /proc/sys/vm/nr_hugepages
|
|
||||||
ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages)
|
|
||||||
|
|
||||||
TRIES=0
|
|
||||||
while (( $ALLOC_PAGES != $HUGEPAGES && $TRIES < 1000 ))
|
|
||||||
do
|
|
||||||
echo 1 > /proc/sys/vm/compact_memory ## defrag ram
|
|
||||||
echo $HUGEPAGES > /proc/sys/vm/nr_hugepages
|
|
||||||
ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages)
|
|
||||||
echo "Succesfully allocated $ALLOC_PAGES / $HUGEPAGES"
|
|
||||||
let TRIES+=1
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "$ALLOC_PAGES" -ne "$HUGEPAGES" ]
|
|
||||||
then
|
|
||||||
echo "Not able to allocate all hugepages. Reverting..."
|
|
||||||
echo 0 > /proc/sys/vm/nr_hugepages
|
|
||||||
exit 1
|
|
||||||
fi
|
|
|
@ -1,6 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
## Enable CPU governor on-demand mode
|
|
||||||
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
|
||||||
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "ondemand" > $file; done
|
|
||||||
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
|
|
@ -1,6 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
## Enable CPU governor performance mode
|
|
||||||
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
|
||||||
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" > $file; done
|
|
||||||
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
|
|
@ -1,3 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo 0 > /proc/sys/vm/nr_hugepages
|
|
|
@ -1,34 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# Helpful to read output when debugging
|
|
||||||
set -x
|
|
||||||
|
|
||||||
# Load variables
|
|
||||||
source "/etc/libvirt/hooks/kvm.conf"
|
|
||||||
|
|
||||||
# Stop display manager
|
|
||||||
systemctl stop gdm.service
|
|
||||||
|
|
||||||
# Unbind VTconsoles
|
|
||||||
echo 0 > /sys/class/vtconsole/vtcon0/bind
|
|
||||||
echo 0 > /sys/class/vtconsole/vtcon1/bind
|
|
||||||
|
|
||||||
# Unbind EFI-Framebuffer
|
|
||||||
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
|
|
||||||
|
|
||||||
# Avoid a Race condition
|
|
||||||
sleep 5
|
|
||||||
|
|
||||||
# Unload all Nvidia drivers
|
|
||||||
modprobe -r nvidia_drm
|
|
||||||
modprobe -r nvidia_modeset
|
|
||||||
modprobe -r nvidia_uvm
|
|
||||||
modprobe -r nvidia
|
|
||||||
|
|
||||||
# Unbind the GPU from display driver
|
|
||||||
virsh nodedev-detach $VIRSH_GPU_VIDEO
|
|
||||||
virsh nodedev-detach $VIRSH_GPU_AUDIO
|
|
||||||
virsh nodedev-detach $VIRSH_USB
|
|
||||||
virsh nodedev-detach $VIRSH_SERIAL_BUS
|
|
||||||
|
|
||||||
# Load VFIO Kernel Module
|
|
||||||
modprobe vfio-pci
|
|
|
@ -1,35 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -x
|
|
||||||
|
|
||||||
# Load variables
|
|
||||||
source "/etc/libvirt/hooks/kvm.conf"
|
|
||||||
|
|
||||||
# Unload VFIO-PCI Kernel Driver
|
|
||||||
modprobe -r vfio-pci
|
|
||||||
modprobe -r vfio_iommu_type1
|
|
||||||
modprobe -r vfio
|
|
||||||
|
|
||||||
# Re-Bind GPU to Nvidia Driver
|
|
||||||
virsh nodedev-reattach $VIRSH_GPU_VIDEO
|
|
||||||
virsh nodedev-reattach $VIRSH_GPU_AUDIO
|
|
||||||
virsh nodedev-reattach $VIRSH_USB
|
|
||||||
virsh nodedev-reattach $VIRSH_SERIAL_BUS
|
|
||||||
|
|
||||||
# Rebind VT consoles
|
|
||||||
echo 1 > /sys/class/vtconsole/vtcon0/bind
|
|
||||||
echo 1 > /sys/class/vtconsole/vtcon1/bind
|
|
||||||
|
|
||||||
# Bind EFI-Framebuffer
|
|
||||||
nvidia-xconfig --query-gpu-info > /dev/null 2>&1
|
|
||||||
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
|
|
||||||
|
|
||||||
# Load all Nvidia drivers
|
|
||||||
modprobe nvidia_drm
|
|
||||||
modprobe nvidia_modeset
|
|
||||||
modprobe drm_kms_helper
|
|
||||||
modprobe drm
|
|
||||||
modprobe nvidia_uvm
|
|
||||||
modprobe nvidia
|
|
||||||
|
|
||||||
# Restart Display Manager
|
|
||||||
systemctl start gdm.service
|
|
|
@ -1,247 +0,0 @@
|
||||||
<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
|
|
||||||
<name>win10</name>
|
|
||||||
<uuid>b3d036ee-75ff-43fe-be76-b8c5494f5dd7</uuid>
|
|
||||||
<metadata>
|
|
||||||
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
|
|
||||||
<libosinfo:os id="http://microsoft.com/win/10"/>
|
|
||||||
</libosinfo:libosinfo>
|
|
||||||
</metadata>
|
|
||||||
<memory unit="KiB">25165824</memory>
|
|
||||||
<currentMemory unit="KiB">25165824</currentMemory>
|
|
||||||
<memoryBacking>
|
|
||||||
<hugepages/>
|
|
||||||
</memoryBacking>
|
|
||||||
<vcpu placement="static">32</vcpu>
|
|
||||||
<iothreads>1</iothreads>
|
|
||||||
<cputune>
|
|
||||||
<vcpupin vcpu="0" cpuset="0"/>
|
|
||||||
<vcpupin vcpu="1" cpuset="1"/>
|
|
||||||
<vcpupin vcpu="2" cpuset="2"/>
|
|
||||||
<vcpupin vcpu="3" cpuset="3"/>
|
|
||||||
<vcpupin vcpu="4" cpuset="4"/>
|
|
||||||
<vcpupin vcpu="5" cpuset="5"/>
|
|
||||||
<vcpupin vcpu="6" cpuset="6"/>
|
|
||||||
<vcpupin vcpu="7" cpuset="7"/>
|
|
||||||
<vcpupin vcpu="8" cpuset="8"/>
|
|
||||||
<vcpupin vcpu="9" cpuset="9"/>
|
|
||||||
<vcpupin vcpu="10" cpuset="10"/>
|
|
||||||
<vcpupin vcpu="11" cpuset="11"/>
|
|
||||||
<vcpupin vcpu="12" cpuset="12"/>
|
|
||||||
<vcpupin vcpu="13" cpuset="13"/>
|
|
||||||
<vcpupin vcpu="14" cpuset="14"/>
|
|
||||||
<vcpupin vcpu="15" cpuset="15"/>
|
|
||||||
<vcpupin vcpu="16" cpuset="16"/>
|
|
||||||
<vcpupin vcpu="17" cpuset="17"/>
|
|
||||||
<vcpupin vcpu="18" cpuset="18"/>
|
|
||||||
<vcpupin vcpu="19" cpuset="19"/>
|
|
||||||
<vcpupin vcpu="20" cpuset="20"/>
|
|
||||||
<vcpupin vcpu="21" cpuset="21"/>
|
|
||||||
<vcpupin vcpu="22" cpuset="22"/>
|
|
||||||
<vcpupin vcpu="23" cpuset="23"/>
|
|
||||||
<vcpupin vcpu="24" cpuset="24"/>
|
|
||||||
<vcpupin vcpu="25" cpuset="25"/>
|
|
||||||
<vcpupin vcpu="26" cpuset="26"/>
|
|
||||||
<vcpupin vcpu="27" cpuset="27"/>
|
|
||||||
<vcpupin vcpu="28" cpuset="28"/>
|
|
||||||
<vcpupin vcpu="29" cpuset="29"/>
|
|
||||||
<vcpupin vcpu="30" cpuset="30"/>
|
|
||||||
<vcpupin vcpu="31" cpuset="31"/>
|
|
||||||
<emulatorpin cpuset="32-63"/>
|
|
||||||
<iothreadpin iothread="1" cpuset="32-63"/>
|
|
||||||
</cputune>
|
|
||||||
<os>
|
|
||||||
<type arch="x86_64" machine="pc-q35-6.2">hvm</type>
|
|
||||||
<loader readonly="yes" type="pflash">/usr/share/edk2-ovmf/x64/OVMF_CODE.fd</loader>
|
|
||||||
<nvram>/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
|
|
||||||
</os>
|
|
||||||
<features>
|
|
||||||
<acpi/>
|
|
||||||
<apic/>
|
|
||||||
<hyperv mode="custom">
|
|
||||||
<relaxed state="on"/>
|
|
||||||
<vapic state="on"/>
|
|
||||||
<spinlocks state="on" retries="8191"/>
|
|
||||||
<vendor_id state="on" value="buttplug"/>
|
|
||||||
</hyperv>
|
|
||||||
<kvm>
|
|
||||||
<hidden state="on"/>
|
|
||||||
</kvm>
|
|
||||||
<vmport state="off"/>
|
|
||||||
<ioapic driver="kvm"/>
|
|
||||||
</features>
|
|
||||||
<cpu mode="host-passthrough" check="none" migratable="on">
|
|
||||||
<topology sockets="1" dies="2" cores="8" threads="2"/>
|
|
||||||
<cache mode="passthrough"/>
|
|
||||||
<feature policy="require" name="topoext"/>
|
|
||||||
</cpu>
|
|
||||||
<clock offset="localtime">
|
|
||||||
<timer name="rtc" tickpolicy="catchup"/>
|
|
||||||
<timer name="pit" tickpolicy="delay"/>
|
|
||||||
<timer name="hpet" present="no"/>
|
|
||||||
<timer name="hypervclock" present="yes"/>
|
|
||||||
</clock>
|
|
||||||
<on_poweroff>destroy</on_poweroff>
|
|
||||||
<on_reboot>restart</on_reboot>
|
|
||||||
<on_crash>destroy</on_crash>
|
|
||||||
<pm>
|
|
||||||
<suspend-to-mem enabled="no"/>
|
|
||||||
<suspend-to-disk enabled="no"/>
|
|
||||||
</pm>
|
|
||||||
<devices>
|
|
||||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
|
||||||
<disk type="file" device="disk">
|
|
||||||
<driver name="qemu" type="raw" cache="none" io="threads" discard="unmap" iothread="1" queues="32"/>
|
|
||||||
<source file="/home/florian/kvm/win10.img"/>
|
|
||||||
<target dev="vda" bus="virtio"/>
|
|
||||||
<boot order="1"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
|
|
||||||
</disk>
|
|
||||||
<disk type="file" device="cdrom">
|
|
||||||
<driver name="qemu" type="raw"/>
|
|
||||||
<source file="/home/florian/Téléchargements/Win10_21H2_French_x64.iso"/>
|
|
||||||
<target dev="sdb" bus="sata"/>
|
|
||||||
<readonly/>
|
|
||||||
<address type="drive" controller="0" bus="0" target="0" unit="1"/>
|
|
||||||
</disk>
|
|
||||||
<disk type="file" device="cdrom">
|
|
||||||
<driver name="qemu" type="raw"/>
|
|
||||||
<source file="/home/florian/Téléchargements/virtio-win-0.1.215.iso"/>
|
|
||||||
<target dev="sdc" bus="sata"/>
|
|
||||||
<readonly/>
|
|
||||||
<address type="drive" controller="0" bus="0" target="0" unit="2"/>
|
|
||||||
</disk>
|
|
||||||
<controller type="usb" index="0" model="qemu-xhci" ports="15">
|
|
||||||
<address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="sata" index="0">
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="0" model="pcie-root"/>
|
|
||||||
<controller type="pci" index="1" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="1" port="0x10"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="2" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="2" port="0x11"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="3" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="3" port="0x12"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="4" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="4" port="0x13"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="5" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="5" port="0x14"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="6" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="6" port="0x15"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="7" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="7" port="0x16"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="8" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="8" port="0x17"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="9" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="9" port="0x18"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="pci" index="10" model="pcie-root-port">
|
|
||||||
<model name="pcie-root-port"/>
|
|
||||||
<target chassis="10" port="0x19"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
|
|
||||||
</controller>
|
|
||||||
<controller type="virtio-serial" index="0">
|
|
||||||
<address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
|
|
||||||
</controller>
|
|
||||||
<interface type="network">
|
|
||||||
<mac address="52:54:00:83:f9:1a"/>
|
|
||||||
<source network="default"/>
|
|
||||||
<model type="virtio"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
|
|
||||||
</interface>
|
|
||||||
<input type="mouse" bus="ps2"/>
|
|
||||||
<input type="keyboard" bus="ps2"/>
|
|
||||||
<audio id="1" type="none"/>
|
|
||||||
<hostdev mode="subsystem" type="pci" managed="yes">
|
|
||||||
<source>
|
|
||||||
<address domain="0x0000" bus="0x42" slot="0x00" function="0x0"/>
|
|
||||||
</source>
|
|
||||||
<rom file="/home/florian/kvm/patched-vbios.rom"/>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
|
|
||||||
</hostdev>
|
|
||||||
<hostdev mode="subsystem" type="pci" managed="yes">
|
|
||||||
<source>
|
|
||||||
<address domain="0x0000" bus="0x42" slot="0x00" function="0x1"/>
|
|
||||||
</source>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
|
|
||||||
</hostdev>
|
|
||||||
<hostdev mode="subsystem" type="pci" managed="yes">
|
|
||||||
<source>
|
|
||||||
<address domain="0x0000" bus="0x42" slot="0x00" function="0x2"/>
|
|
||||||
</source>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
|
|
||||||
</hostdev>
|
|
||||||
<hostdev mode="subsystem" type="pci" managed="yes">
|
|
||||||
<source>
|
|
||||||
<address domain="0x0000" bus="0x42" slot="0x00" function="0x3"/>
|
|
||||||
</source>
|
|
||||||
<address type="pci" domain="0x0000" bus="0x09" slot="0x00" function="0x0"/>
|
|
||||||
</hostdev>
|
|
||||||
<hostdev mode="subsystem" type="usb" managed="yes">
|
|
||||||
<source>
|
|
||||||
<vendor id="0x0b05"/>
|
|
||||||
<product id="0x193e"/>
|
|
||||||
</source>
|
|
||||||
<address type="usb" bus="0" port="4"/>
|
|
||||||
</hostdev>
|
|
||||||
<hostdev mode="subsystem" type="usb" managed="yes">
|
|
||||||
<source>
|
|
||||||
<vendor id="0xb58e"/>
|
|
||||||
<product id="0x9e84"/>
|
|
||||||
</source>
|
|
||||||
<address type="usb" bus="0" port="5"/>
|
|
||||||
</hostdev>
|
|
||||||
<hostdev mode="subsystem" type="usb" managed="yes">
|
|
||||||
<source>
|
|
||||||
<vendor id="0x8087"/>
|
|
||||||
<product id="0x0a2b"/>
|
|
||||||
</source>
|
|
||||||
<address type="usb" bus="0" port="6"/>
|
|
||||||
</hostdev>
|
|
||||||
<hostdev mode="subsystem" type="usb" managed="yes">
|
|
||||||
<source>
|
|
||||||
<vendor id="0x1b1c"/>
|
|
||||||
<product id="0x1b5a"/>
|
|
||||||
</source>
|
|
||||||
<address type="usb" bus="0" port="2"/>
|
|
||||||
</hostdev>
|
|
||||||
<memballoon model="virtio">
|
|
||||||
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
|
|
||||||
</memballoon>
|
|
||||||
</devices>
|
|
||||||
<qemu:commandline>
|
|
||||||
<qemu:arg value="-device"/>
|
|
||||||
<qemu:arg value="intel-hda"/>
|
|
||||||
<qemu:arg value="-rtc"/>
|
|
||||||
<qemu:arg value="base=localtime"/>
|
|
||||||
<qemu:arg value="-cpu"/>
|
|
||||||
<qemu:arg value="host,host-cache-info=on,kvm=off,l3-cache=on,kvm-hint-dedicated=on,migratable=no,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_vendor_id=buttplug,+invtsc,+topoext"/>
|
|
||||||
</qemu:commandline>
|
|
||||||
</domain>
|
|
32
modules/home/apps/chromium/default.nix
Normal file
32
modules/home/apps/chromium/default.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.apps.chromium;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.apps.chromium = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable chromium with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.chromium = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
package = pkgs.chromium.override {
|
||||||
|
enableWideVine = true; # Enable DRM
|
||||||
|
};
|
||||||
|
|
||||||
|
extensions = [
|
||||||
|
{ id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # Ublock Origin
|
||||||
|
{ id = "nngceckbapebfimnlniiiahkandclblb"; } # Bitwarden
|
||||||
|
{ id = "fnaicdffflnofjppbagibeoednhnbjhg"; } # Floccus Bookmark manager
|
||||||
|
{ id = "fihnjjcciajhdojfnbdddfaoknhalnja"; } # I don't care about cookies
|
||||||
|
{ id = "cimiefiiaegbelhefglklhhakcgmhkai"; } # Plasma Integration
|
||||||
|
{ id = "eimadpbcbfnmbkopoojfekhnkhdbieeh"; } # Dark reader
|
||||||
|
{ id = "mnjggcdmjocbbbhaepdhchncahnbgone"; } # SponsorBlock
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
11
modules/home/apps/default.nix
Normal file
11
modules/home/apps/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./chromium
|
||||||
|
./flatpak
|
||||||
|
./jetbrainsToolbox
|
||||||
|
./kitty
|
||||||
|
./vscode
|
||||||
|
];
|
||||||
|
}
|
45
modules/home/apps/flatpak/default.nix
Normal file
45
modules/home/apps/flatpak/default.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ config, pkgs, lib, nix-flatpak, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.apps.flatpak;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [ nix-flatpak.homeManagerModules.nix-flatpak ];
|
||||||
|
|
||||||
|
options.modules.home.apps.flatpak = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable flatpak with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
services.flatpak = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
update.onActivation = true;
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
# Gaming
|
||||||
|
{ appId = "com.discordapp.Discord"; origin = "flathub"; }
|
||||||
|
{ appId = "com.valvesoftware.Steam"; origin = "flathub"; }
|
||||||
|
{ appId = "net.lutris.Lutris"; origin = "flathub"; }
|
||||||
|
|
||||||
|
# Pro
|
||||||
|
{ appId = "com.slack.Slack"; origin = "flathub"; }
|
||||||
|
{ appId = "com.skype.Client"; origin = "flathub"; }
|
||||||
|
{ appId = "org.mozilla.Thunderbird"; origin = "flathub"; }
|
||||||
|
{ appId = "ch.protonmail.protonmail-bridge"; origin = "flathub"; }
|
||||||
|
{ appId = "org.kde.neochat"; origin = "flathub"; }
|
||||||
|
|
||||||
|
# Loisir
|
||||||
|
{ appId = "com.spotify.Client"; origin = "flathub"; }
|
||||||
|
{ appId = "io.gitlab.news_flash.NewsFlash"; origin = "flathub"; }
|
||||||
|
{ appId = "org.videolan.VLC"; origin = "flathub"; }
|
||||||
|
{ appId = "com.obsproject.Studio"; origin = "flathub"; }
|
||||||
|
{ appId = "io.github.achetagames.epic_asset_manager"; origin = "flathub"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
16
modules/home/apps/jetbrainsToolbox/default.nix
Normal file
16
modules/home/apps/jetbrainsToolbox/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.apps.jetbrainsToolbox;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.apps.jetbrainsToolbox = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable jetbrainsToolbox with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [jetbrains-toolbox];
|
||||||
|
};
|
||||||
|
}
|
45
modules/home/apps/kitty/default.nix
Normal file
45
modules/home/apps/kitty/default.nix
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.apps.kitty;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.apps.kitty = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable kitty with my custom configurations
|
||||||
|
'';
|
||||||
|
|
||||||
|
enableBlur = mkOption {
|
||||||
|
default = !config.modules.home.desktop.hyprland.enable; # Disable by default if hyprland is enabled (Hyprland enable own blur)
|
||||||
|
example = true;
|
||||||
|
description = ''
|
||||||
|
Enable blur (Usefull to disable with hyprland)
|
||||||
|
'';
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.kitty = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
font = {
|
||||||
|
name = "FiraCode Nerd Font";
|
||||||
|
package = pkgs.fira-code-nerdfont;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = lib.mkMerge [
|
||||||
|
{
|
||||||
|
disable_ligatures = "never";
|
||||||
|
sync_to_monitor = "yes"; # Avoid to update a lot
|
||||||
|
confirm_os_window_close = 0; # Disable close confirmation
|
||||||
|
|
||||||
|
background_opacity = "0.7";
|
||||||
|
}
|
||||||
|
|
||||||
|
(lib.mkIf cfg.enableBlur { background_blur = "1"; })
|
||||||
|
(lib.mkIf config.programs.zsh.enable { shell = "zsh"; })
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
47
modules/home/apps/vscode/default.nix
Normal file
47
modules/home/apps/vscode/default.nix
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.apps.vscode;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.apps.vscode = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable vscode with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
enableUpdateCheck = false;
|
||||||
|
enableExtensionUpdateCheck = false;
|
||||||
|
|
||||||
|
userSettings = {
|
||||||
|
"files.autoSave" = "onFocusChange";
|
||||||
|
"emmet.includeLanguages" = {
|
||||||
|
"phoenix-heex" = "html";
|
||||||
|
};
|
||||||
|
"git.autofetch" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
userTasks = {};
|
||||||
|
|
||||||
|
extensions = with pkgs; with vscode-extensions; [
|
||||||
|
# Nix
|
||||||
|
bbenoist.nix
|
||||||
|
|
||||||
|
# Rust
|
||||||
|
rust-lang.rust-analyzer
|
||||||
|
serayuzgur.crates
|
||||||
|
tamasfe.even-better-toml
|
||||||
|
|
||||||
|
# Phoenix
|
||||||
|
phoenixframework.phoenix
|
||||||
|
elixir-lsp.vscode-elixir-ls
|
||||||
|
|
||||||
|
# Ruby
|
||||||
|
shopify.ruby-lsp
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
20
modules/home/default.nix
Normal file
20
modules/home/default.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./apps
|
||||||
|
./desktop
|
||||||
|
./shell
|
||||||
|
];
|
||||||
|
|
||||||
|
home = {
|
||||||
|
username = "florian";
|
||||||
|
homeDirectory = "/home/florian";
|
||||||
|
|
||||||
|
stateVersion = "24.05";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
}
|
||||||
|
|
7
modules/home/desktop/default.nix
Normal file
7
modules/home/desktop/default.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hyprland
|
||||||
|
];
|
||||||
|
}
|
225
modules/home/desktop/hyprland/default.nix
Normal file
225
modules/home/desktop/hyprland/default.nix
Normal file
|
@ -0,0 +1,225 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.desktop.hyprland;
|
||||||
|
|
||||||
|
set_volume = pkgs.writeScriptBin "set_volume.sh" ''
|
||||||
|
#!${pkgs.runtimeShell}
|
||||||
|
pactl set-sink-volume @DEFAULT_SINK@ $1 && $send_volume_notif notify-send "Volume" -h int:value:"$(pactl get-sink-volume @DEFAULT_SINK@ | cut -d ' ' -f6 | cut -d '%' -f1)"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.desktop.hyprland = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable hyprland with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
modules.home.apps.kitty.enable = true;
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
exec-once = [
|
||||||
|
"dunst -conf ~/.config/hypr/dunstrc"
|
||||||
|
"~/.config/hypr/eww/scripts/start"
|
||||||
|
"~/.config/hypr/swww/start"
|
||||||
|
|
||||||
|
# Keyring daemon
|
||||||
|
"gnome-keyring-daemon --start --components=gpg"
|
||||||
|
"gnome-keyring-daemon --start --components=secrets"
|
||||||
|
"gnome-keyring-daemon --start --components=ssh"
|
||||||
|
"gnome-keyring-daemon --start --components=pkcs11"
|
||||||
|
|
||||||
|
"/usr/libexec/kf5/polkit-kde-authentication-agent-1"
|
||||||
|
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||||
|
];
|
||||||
|
|
||||||
|
env = "XCURSOR_SIZE,24";
|
||||||
|
|
||||||
|
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||||
|
input = {
|
||||||
|
kb_layout = config.services.xserver.xkb.layout;
|
||||||
|
kb_variant = config.services.xserver.xkb.variant;
|
||||||
|
kb_model = "";
|
||||||
|
kb_options = "";
|
||||||
|
kb_rules = "";
|
||||||
|
|
||||||
|
follow_mouse = 1;
|
||||||
|
numlock_by_default = 1;
|
||||||
|
|
||||||
|
touchpad = {
|
||||||
|
natural_scroll = "no";
|
||||||
|
disable_while_typing = "yes";
|
||||||
|
tap-to-click = "yes";
|
||||||
|
};
|
||||||
|
|
||||||
|
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||||
|
};
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
general = {
|
||||||
|
gaps_in = 5;
|
||||||
|
gaps_out = 20;
|
||||||
|
border_size = 3;
|
||||||
|
col.active_border = "rgb()";
|
||||||
|
col.inactive_border = "rgb()";
|
||||||
|
|
||||||
|
layout = "dwindle";
|
||||||
|
};
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
decoration = {
|
||||||
|
rounding = 10;
|
||||||
|
|
||||||
|
blur = {
|
||||||
|
enabled = true;
|
||||||
|
size = 3;
|
||||||
|
passes = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
drop_shadow = "yes";
|
||||||
|
shadow_range = 15;
|
||||||
|
shadow_render_power = 4;
|
||||||
|
col.shadow = "rgb()";
|
||||||
|
col.shadow_inactive = "rgb()";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||||
|
animations = {
|
||||||
|
enabled = "yes";
|
||||||
|
|
||||||
|
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||||
|
|
||||||
|
animation = [
|
||||||
|
"windows, 1, 7, myBezier"
|
||||||
|
"windowsOut, 1, 7, default, popin 80%"
|
||||||
|
"border, 1, 10, default"
|
||||||
|
"borderangle, 1, 8, default"
|
||||||
|
"fade, 1, 7, default"
|
||||||
|
"workspaces, 1, 6, default"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
dwindle = {
|
||||||
|
pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = "yes"; # you probably want this
|
||||||
|
};
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
master = {
|
||||||
|
new_is_master = "true";
|
||||||
|
};
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||||
|
gestures = {
|
||||||
|
workspace_swipe = "on";
|
||||||
|
workspace_swipe_forever = "on";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Example per-device config
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
||||||
|
"device:epic-mouse-v1" = {
|
||||||
|
sensitivity = "-0.5";
|
||||||
|
};
|
||||||
|
|
||||||
|
"$mod" = "SUPER";
|
||||||
|
|
||||||
|
bind = [
|
||||||
|
"SUPERSHIFT,R,hyprload,reload"
|
||||||
|
"SUPERSHIFT,U,hyprload,update"
|
||||||
|
|
||||||
|
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||||
|
"$mainMod, RETURN, exec, kitty"
|
||||||
|
"$mainMod, C, killactive,"
|
||||||
|
"$mainMod SHIFT, C, exec, hyprpicker -a -f hex"
|
||||||
|
"$mainMod SHIFT, Q, exit,"
|
||||||
|
"$mainMod, E, exec, nautilus"
|
||||||
|
"$mainMod, V, togglefloating,"
|
||||||
|
"$mainMod, F, fullscreen, 0"
|
||||||
|
"$mainMod, D, exec, wofi -i -s ~/.config/hypr/wofi/style.css --show drun"
|
||||||
|
"$mainMod, P, pseudo," # dwindle
|
||||||
|
"$mainMod, B, togglesplit," # dwindle
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
"$mainMod, h, movefocus, l"
|
||||||
|
"$mainMod, l, movefocus, r"
|
||||||
|
"$mainMod, j, movefocus, u"
|
||||||
|
"$mainMod, k, movefocus, d"
|
||||||
|
|
||||||
|
"$mainMod SHIFT_L, h, movewindow, l"
|
||||||
|
"$mainMod SHIFT_L, l, movewindow, r"
|
||||||
|
"$mainMod SHIFT_L, j, movewindow, u"
|
||||||
|
"$mainMod SHIFT_L, k, movewindow, d"
|
||||||
|
|
||||||
|
"$mainMod ALT_L, v, exec, dunstctl context"
|
||||||
|
"$mainMod ALT_L, c, exec, dunstctl close-all"
|
||||||
|
"$mainMod ALT_L, x, exec, dunstctl close"
|
||||||
|
|
||||||
|
# Switch workspaces with mainMod + [0-9]
|
||||||
|
"$mainMod, 1, split-workspace, 1"
|
||||||
|
"$mainMod, 2, split-workspace, 2"
|
||||||
|
"$mainMod, 3, split-workspace, 3"
|
||||||
|
"$mainMod, 4, split-workspace, 4"
|
||||||
|
"$mainMod, 5, split-workspace, 5"
|
||||||
|
"$mainMod, 6, split-workspace, 6"
|
||||||
|
"$mainMod, 7, split-workspace, 7"
|
||||||
|
"$mainMod, 8, split-workspace, 8"
|
||||||
|
"$mainMod, 9, split-workspace, 9"
|
||||||
|
"$mainMod, 0, split-workspace, 10"
|
||||||
|
|
||||||
|
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||||
|
"$mainMod SHIFT, 1, split-movetoworkspace, 1"
|
||||||
|
"$mainMod SHIFT, 2, split-movetoworkspace, 2"
|
||||||
|
"$mainMod SHIFT, 3, split-movetoworkspace, 3"
|
||||||
|
"$mainMod SHIFT, 4, split-movetoworkspace, 4"
|
||||||
|
"$mainMod SHIFT, 5, split-movetoworkspace, 5"
|
||||||
|
"$mainMod SHIFT, 6, split-movetoworkspace, 6"
|
||||||
|
"$mainMod SHIFT, 7, split-movetoworkspace, 7"
|
||||||
|
"$mainMod SHIFT, 8, split-movetoworkspace, 8"
|
||||||
|
"$mainMod SHIFT, 9, split-movetoworkspace, 9"
|
||||||
|
"$mainMod SHIFT, 0, split-movetoworkspace, 10"
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with mainMod + scroll
|
||||||
|
"$mainMod, mouse_down, workspace, e+1"
|
||||||
|
"$mainMod, mouse_up, workspace, e-1"
|
||||||
|
];
|
||||||
|
|
||||||
|
bindm = [
|
||||||
|
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||||
|
"$mainMod, mouse:272, movewindow"
|
||||||
|
"$mainMod, mouse:273, resizewindow"
|
||||||
|
];
|
||||||
|
|
||||||
|
binde = [
|
||||||
|
"$mainMod CTRL_L, h, resizeactive, -50 0"
|
||||||
|
"$mainMod CTRL_L, l, resizeactive, 50 0"
|
||||||
|
"$mainMod CTRL_L, j, resizeactive, 0 -50"
|
||||||
|
"$mainMod CTRL_L, k, resizeactive, 0 50"
|
||||||
|
|
||||||
|
# Use pactl to adjust volume in PulseAudio.
|
||||||
|
", XF86AudioRaiseVolume, exec, ${set_volume} \"+5%\""
|
||||||
|
", XF86AudioLowerVolume, exec, ${set_volume} \"-5%\""
|
||||||
|
];
|
||||||
|
|
||||||
|
bindl = [
|
||||||
|
", XF86AudioMute, exec, pactl set-sink-mute @DEFAULT_SINK@ toggle"
|
||||||
|
", XF86AudioMicMute, exec, pactl set-source-mute @DEFAULT_SOURCE@ toggle"
|
||||||
|
|
||||||
|
# Media player controls
|
||||||
|
", XF86AudioPlay, exec, playerctl play-pause"
|
||||||
|
", XF86AudioPause, exec, playerctl play-pause"
|
||||||
|
", XF86AudioPrev, exec, playerctl previous"
|
||||||
|
", XF86AudioNext, exec, playerctl next"
|
||||||
|
|
||||||
|
# Screen brightness controls
|
||||||
|
", XF86MonBrightnessUp, exec, xbacklight -inc 5"
|
||||||
|
", XF86MonBrightnessDown, exec, xbacklight -dec 5"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
modules/home/shell/atuin/default.nix
Normal file
22
modules/home/shell/atuin/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.shell.atuin;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.shell.atuin = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable atuin with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.atuin = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
# Uncomment this to use your instance
|
||||||
|
# sync_address = "https://majiy00-shell.fly.dev";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
10
modules/home/shell/default.nix
Normal file
10
modules/home/shell/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./atuin
|
||||||
|
./direnv
|
||||||
|
./git
|
||||||
|
./zsh
|
||||||
|
];
|
||||||
|
}
|
18
modules/home/shell/direnv/default.nix
Normal file
18
modules/home/shell/direnv/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.shell.direnv;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.shell.direnv = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable direnv with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
modules/home/shell/git/default.nix
Normal file
22
modules/home/shell/git/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.shell.git;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.shell.git = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable git with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Florian RICHER";
|
||||||
|
userEmail = "florian.richer@protonmail.com";
|
||||||
|
|
||||||
|
# signing.signByDefault = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
37
modules/home/shell/zsh/default.nix
Normal file
37
modules/home/shell/zsh/default.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.home.shell.zsh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.home.shell.zsh = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable zsh with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
initExtra = ''
|
||||||
|
[[ ! -f ${./p10k.zsh} ]] || source ${./p10k.zsh}
|
||||||
|
'';
|
||||||
|
|
||||||
|
plugins = with pkgs; [
|
||||||
|
{
|
||||||
|
file = "powerlevel10k.zsh-theme";
|
||||||
|
name = "powerlevel10k";
|
||||||
|
src = "${zsh-powerlevel10k}/share/zsh-powerlevel10k";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
file = "p10k.zsh";
|
||||||
|
name = "powerlevel10k-config";
|
||||||
|
src = zsh-powerlevel10k;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,5 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_zen;
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
|
|
||||||
# Configure network proxy if necessary
|
|
||||||
# networking.proxy.default = "http://user:password@proxy:port/";
|
|
||||||
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
|
||||||
|
|
||||||
# Enable networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
|
|
||||||
networking.firewall.enable = false;
|
|
||||||
|
|
||||||
# Open ports in the firewall.
|
|
||||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
# Or disable the firewall altogether.
|
|
||||||
# networking.firewall.enable = false;
|
|
||||||
}
|
|
|
@ -1,51 +0,0 @@
|
||||||
{ config, pkgs, ... }: {
|
|
||||||
# Enable nix ld
|
|
||||||
programs.nix-ld.enable = true;
|
|
||||||
|
|
||||||
programs.nix-ld.package = pkgs.nix-ld-rs;
|
|
||||||
|
|
||||||
# Sets up all the libraries to load
|
|
||||||
programs.nix-ld.libraries = with pkgs; [
|
|
||||||
zlib
|
|
||||||
zstd
|
|
||||||
stdenv.cc.cc
|
|
||||||
curl
|
|
||||||
openssl
|
|
||||||
attr
|
|
||||||
libssh
|
|
||||||
bzip2
|
|
||||||
libxml2
|
|
||||||
acl
|
|
||||||
libsodium
|
|
||||||
util-linux
|
|
||||||
xz
|
|
||||||
systemd
|
|
||||||
fuse3
|
|
||||||
icu
|
|
||||||
nss
|
|
||||||
expat
|
|
||||||
|
|
||||||
# For UE5
|
|
||||||
glibc
|
|
||||||
libdrm
|
|
||||||
libgcc
|
|
||||||
vulkan-loader
|
|
||||||
vulkan-tools
|
|
||||||
vulkan-extension-layer
|
|
||||||
vulkan-validation-layers
|
|
||||||
SDL2.dev
|
|
||||||
libGL
|
|
||||||
xorg.libX11
|
|
||||||
xorg.libXScrnSaver
|
|
||||||
xorg.libXau
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXext
|
|
||||||
xorg.libXfixes
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libXrandr
|
|
||||||
xorg.libXrender
|
|
||||||
xorg.libXxf86vm
|
|
||||||
xorg.libxcb
|
|
||||||
python311
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Enable OpenGL
|
|
||||||
hardware.opengl = {
|
|
||||||
enable = true;
|
|
||||||
driSupport = true;
|
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Load nvidia driver for Xorg and Wayland
|
|
||||||
services.xserver.videoDrivers = ["nvidia"];
|
|
||||||
|
|
||||||
hardware.nvidia = {
|
|
||||||
# Modesetting is required.
|
|
||||||
modesetting.enable = true;
|
|
||||||
|
|
||||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
|
||||||
powerManagement.enable = false;
|
|
||||||
# Fine-grained power management. Turns off GPU when not in use.
|
|
||||||
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
|
||||||
powerManagement.finegrained = false;
|
|
||||||
|
|
||||||
# Use the NVidia open source kernel module (not to be confused with the
|
|
||||||
# independent third-party "nouveau" open source driver).
|
|
||||||
# Support is limited to the Turing and later architectures. Full list of
|
|
||||||
# supported GPUs is at:
|
|
||||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
|
||||||
# Only available from driver 515.43.04+
|
|
||||||
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
|
||||||
open = false;
|
|
||||||
|
|
||||||
# Enable the Nvidia settings menu,
|
|
||||||
# accessible via `nvidia-settings`.
|
|
||||||
nvidiaSettings = true;
|
|
||||||
|
|
||||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
PasswordAuthentication = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.openvscode-server = {
|
|
||||||
enable = true;
|
|
||||||
host = "0.0.0.0";
|
|
||||||
user = "florian";
|
|
||||||
withoutConnectionToken = true;
|
|
||||||
telemetryLevel = "off";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Enable sound with pipewire.
|
|
||||||
sound.enable = true;
|
|
||||||
hardware.pulseaudio.enable = false;
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
# If you want to use JACK applications, uncomment this
|
|
||||||
#jack.enable = true;
|
|
||||||
|
|
||||||
# use the example session manager (no others are packaged yet so this is enabled by default,
|
|
||||||
# no need to redefine it in your config for now)
|
|
||||||
#media-session.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
# Enable the KDE Plasma Desktop Environment.
|
|
||||||
services.displayManager = {
|
|
||||||
sddm.enable = true;
|
|
||||||
defaultSession = "plasma";
|
|
||||||
};
|
|
||||||
services.desktopManager.plasma6.enable = true;
|
|
||||||
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; with kdePackages; [
|
|
||||||
krfb # Use by kdeconnect for virtualmonitorplugin "krfb-virtualmonitor"
|
|
||||||
discover
|
|
||||||
];
|
|
||||||
|
|
||||||
# Uncomment when kwin is available in nixpkgs and NVIDIA 555
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(import ../overlays/kwin)
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
boot.plymouth.enable = true;
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
|
@ -26,12 +26,6 @@
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
vim
|
vim
|
||||||
nixd
|
nixd
|
||||||
|
|
||||||
# Usefull for automatic informations collect software like KDE
|
|
||||||
vulkan-tools # For vulkaninfo command
|
|
||||||
wayland-utils # For wayland-info command
|
|
||||||
glxinfo
|
|
||||||
clinfo
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
@ -43,8 +37,23 @@
|
||||||
|
|
||||||
services.flatpak.enable = true; # Important can't be enabled from home-manager
|
services.flatpak.enable = true; # Important can't be enabled from home-manager
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
services.printing.enable = true;
|
|
||||||
|
# Configure network proxy if necessary
|
||||||
|
# networking.proxy.default = "http://user:password@proxy:port/";
|
||||||
|
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||||
|
|
||||||
|
# Enable networking
|
||||||
|
networking = {
|
||||||
|
networkmanager.enable = true;
|
||||||
|
firewall.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
12
modules/system/default.nix
Normal file
12
modules/system/default.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./desktop
|
||||||
|
./hardware
|
||||||
|
./server
|
||||||
|
|
||||||
|
# Common configuration
|
||||||
|
./common.nix
|
||||||
|
];
|
||||||
|
}
|
9
modules/system/desktop/default.nix
Normal file
9
modules/system/desktop/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./gnome
|
||||||
|
# ./hyprland
|
||||||
|
./plasma
|
||||||
|
];
|
||||||
|
}
|
23
modules/system/desktop/gnome/default.nix
Normal file
23
modules/system/desktop/gnome/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.desktop.gnome;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.desktop.gnome = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable gnome with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
# Enable the Gnome Desktop Environment.
|
||||||
|
services.xserver.displayManager.gdm.enable = true;
|
||||||
|
|
||||||
|
# Enable the GNOME shell.
|
||||||
|
services.xserver.desktopManager.gnome.enable = true;
|
||||||
|
};
|
||||||
|
}
|
42
modules/system/desktop/plasma/default.nix
Normal file
42
modules/system/desktop/plasma/default.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.desktop.plasma;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.desktop.plasma = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable plasma with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
# Enable the KDE Plasma Desktop Environment.
|
||||||
|
services.displayManager = {
|
||||||
|
sddm.enable = true;
|
||||||
|
defaultSession = "plasma";
|
||||||
|
};
|
||||||
|
services.desktopManager.plasma6.enable = true;
|
||||||
|
|
||||||
|
programs.kdeconnect.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; with kdePackages; [
|
||||||
|
krfb # Use by kdeconnect for virtualmonitorplugin "krfb-virtualmonitor"
|
||||||
|
discover
|
||||||
|
|
||||||
|
# Usefull for automatic informations collect software like KDE
|
||||||
|
vulkan-tools # For vulkaninfo command
|
||||||
|
wayland-utils # For wayland-info command
|
||||||
|
glxinfo
|
||||||
|
clinfo
|
||||||
|
];
|
||||||
|
|
||||||
|
# Uncomment when kwin is available in nixpkgs and NVIDIA 555
|
||||||
|
nixpkgs.overlays = [
|
||||||
|
(import ../../../../overlays/kwin)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
16
modules/system/hardware/bluetooth/default.nix
Normal file
16
modules/system/hardware/bluetooth/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.bluetooth;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.bluetooth = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable pipewire with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
};
|
||||||
|
}
|
14
modules/system/hardware/default.nix
Normal file
14
modules/system/hardware/default.nix
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./bluetooth
|
||||||
|
./gamingKernel
|
||||||
|
./keymaps
|
||||||
|
./nvidia
|
||||||
|
./pipewire
|
||||||
|
./plymouth
|
||||||
|
./printing
|
||||||
|
./waydroid
|
||||||
|
];
|
||||||
|
}
|
16
modules/system/hardware/gamingKernel/default.nix
Normal file
16
modules/system/hardware/gamingKernel/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.gamingKernel;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.gamingKernel = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable gaming kernel with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
boot.kernelPackages = pkgs.linuxPackages_zen;
|
||||||
|
};
|
||||||
|
}
|
23
modules/system/hardware/keymaps/default.nix
Normal file
23
modules/system/hardware/keymaps/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.keymaps;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.keymaps = {
|
||||||
|
layout = mkOption {
|
||||||
|
default = "fr";
|
||||||
|
example = "fr";
|
||||||
|
description = ''
|
||||||
|
Set key layout (fr, us)
|
||||||
|
'';
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
config = mkMerge [
|
||||||
|
(mkIf (cfg.layout == "fr") (import ./fr.nix {}))
|
||||||
|
(mkIf (cfg.layout == "us") (import ./us.nix {}))
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, pkgs, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
services.xserver = {
|
services.xserver = {
|
|
@ -1,4 +1,4 @@
|
||||||
{ config, pkgs, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
services.xserver = {
|
services.xserver = {
|
51
modules/system/hardware/nvidia/default.nix
Normal file
51
modules/system/hardware/nvidia/default.nix
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.nvidia;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.nvidia = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable nvidia with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# Enable OpenGL
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = true;
|
||||||
|
driSupport32Bit = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Load nvidia driver for Xorg and Wayland
|
||||||
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
# Modesetting is required.
|
||||||
|
modesetting.enable = true;
|
||||||
|
|
||||||
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
|
powerManagement.enable = false;
|
||||||
|
# Fine-grained power management. Turns off GPU when not in use.
|
||||||
|
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||||
|
powerManagement.finegrained = false;
|
||||||
|
|
||||||
|
# Use the NVidia open source kernel module (not to be confused with the
|
||||||
|
# independent third-party "nouveau" open source driver).
|
||||||
|
# Support is limited to the Turing and later architectures. Full list of
|
||||||
|
# supported GPUs is at:
|
||||||
|
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
||||||
|
# Only available from driver 515.43.04+
|
||||||
|
# Currently alpha-quality/buggy, so false is currently the recommended setting.
|
||||||
|
open = false;
|
||||||
|
|
||||||
|
# Enable the Nvidia settings menu,
|
||||||
|
# accessible via `nvidia-settings`.
|
||||||
|
nvidiaSettings = true;
|
||||||
|
|
||||||
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
31
modules/system/hardware/pipewire/default.nix
Normal file
31
modules/system/hardware/pipewire/default.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.pipewire;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.pipewire = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable pipewire with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# Enable sound with pipewire.
|
||||||
|
sound.enable = true;
|
||||||
|
hardware.pulseaudio.enable = false;
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
# If you want to use JACK applications, uncomment this
|
||||||
|
#jack.enable = true;
|
||||||
|
|
||||||
|
# use the example session manager (no others are packaged yet so this is enabled by default,
|
||||||
|
# no need to redefine it in your config for now)
|
||||||
|
#media-session.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
16
modules/system/hardware/plymouth/default.nix
Normal file
16
modules/system/hardware/plymouth/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.plymouth;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.plymouth = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable plymouth with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
boot.plymouth.enable = true;
|
||||||
|
};
|
||||||
|
}
|
16
modules/system/hardware/printing/default.nix
Normal file
16
modules/system/hardware/printing/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.printing;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.printing = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable printing with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.printing.enable = true;
|
||||||
|
};
|
||||||
|
}
|
16
modules/system/hardware/waydroid/default.nix
Normal file
16
modules/system/hardware/waydroid/default.nix
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.hardware.waydroid;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.hardware.waydroid = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable waydroid with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
virtualisation.waydroid.enable = true;
|
||||||
|
};
|
||||||
|
}
|
8
modules/system/server/default.nix
Normal file
8
modules/system/server/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./docker
|
||||||
|
./openssh
|
||||||
|
];
|
||||||
|
}
|
19
modules/system/server/docker/default.nix
Normal file
19
modules/system/server/docker/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.server.docker;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.server.docker = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable docker with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
enableNvidia = config.modules.system.hardware.nvidia.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
22
modules/system/server/openssh/default.nix
Normal file
22
modules/system/server/openssh/default.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.modules.system.server.openssh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.system.server.openssh = {
|
||||||
|
enable = mkEnableOption ''
|
||||||
|
Enable openssh with my custom configurations
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
PasswordAuthentication = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,4 +0,0 @@
|
||||||
{ config, pkgs, ... }:
|
|
||||||
{
|
|
||||||
virtualisation.waydroid.enable = true;
|
|
||||||
}
|
|
Loading…
Reference in a new issue