This commit is contained in:
afoucaultc 2026-08-07 20:04:22 +02:00
parent 9be597750d
commit 00ca4baa74
41 changed files with 795 additions and 113 deletions

1
dotfiles/hypr/.luarc.json Symbolic link
View file

@ -0,0 +1 @@
/nix/store/r3344bjbakm2dxxl79bfps7q65lrh0a4-home-manager-files/.config/hypr/.luarc.json

1
dotfiles/hypr/conf/conf Symbolic link
View file

@ -0,0 +1 @@
/home/afoucaultc/nixos-config/dotfiles/hypr/conf

View file

@ -1,10 +0,0 @@
require("conf.variables")
require("conf.binding")
require("conf.env")
require("conf.input")
require("conf.others")
require("conf.monitor")
require("conf.startup")
require("conf.style")
require("conf.windowrules")
require("conf.workspace")

1
dotfiles/hypr/hyprland.lua Symbolic link
View file

@ -0,0 +1 @@
/nix/store/r3344bjbakm2dxxl79bfps7q65lrh0a4-home-manager-files/.config/hypr/hyprland.lua

118
dotfiles/hypr/hyprlock.conf Normal file
View file

@ -0,0 +1,118 @@
source = ~/.config/hypr/variables.conf
# BACKGROUND
background {
monitor =
path = ~/nixos-config/dotfiles/hypr/wallpaper/nix-wallpaper.png
blur_passes = 2
contrast = 0.8916
brightness = 0.8172
zsh:1: command not found: q
vibrancy_darkness = 0.3
}
# GENERAL
general {
no_fade_in = false
grace = 0
disable_loading_bar = false
}
# DATE
label {
monitor =
text = cmd[update:1000] echo "$(date +"%A, %B %d")"
color = rgba(255,255,255, 0.75)
font_size = 22
font_family = Luciole
position = 0, 100
halign = center
valign = center
}
# TIME
label {
monitor =
text = cmd[update:1000] echo -e "$(LC_TIME=en_US.UTF-8 date +"%A, %B %d")"
color = rgba(216, 222, 233, 0.90)
font_size = 25
font_family = SF Pro Display Semibold
position = 0, 350
halign = center
valign = center
}
label {
monitor =
text = cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"
color = rgba(216, 222, 233, 0.90)
font_size = 120
font_family = SF Pro Display Bold
position = 0, 230
halign = center
valign = center
}
# User info
label {
monitor =
text = $USER
color = rgba(216, 222, 233, 0.80)
outline_thickness = 2
dots_size = 0.2
dots_spacing = 0.2
dots_center = true
font_size = 18
font_family = SF Pro Display Bold
position = 0, -130
halign = center
valign = center
}
shape {
monitor =
size = 280, 55
color = rgba(255, 255, 255, .1)
rounding = -1
border_size = 0
border_color = rgba(253, 198, 135, 0)
rotate = 0
xray = false
position = 0, -130
halign = center
valign = center
}
# INPUT FIELD
input-field {
monitor =
size = 280, 55
outline_thickness = 2
dots_size = 0.2 # Password dot size (0.2-0.8)
dots_spacing = 0.2 # Spacing between dots (0.0-1.0)
dots_center = true # Center dots in field
outer_color = rgba(0, 0, 0, 0)
inner_color = rgba(255, 255, 255, 0.1)
font_color = rgb(200, 200, 200)
fade_on_empty = false
font_family = SF Pro Display Bold
placeholder_text = <i><span foreground="##ffffff99"> Enter Pass</span></i>
hide_input = false # Show/hide password dots
position = 0, -210
halign = center
valign = center
}
label {
monitor =
text = cmd[update:30000] echo "🔋 $(cat /sys/class/power_supply/BAT0/capacity)%"
color = rgba(255, 255, 255, 0.8)
font_size = 14
position = -50, 50
halign = right
valign = bottom
}
auth {
fingerprint:enabled=true
}

View file

@ -0,0 +1,6 @@
wallpaper {
monitor =
path = /home/afoucaultc/nixos-config/dotfiles/hypr/wallpaper/nix-wallpaper.png
fit_mode = cover
}
splash = false

View file

@ -1 +1 @@
/nix/store/5c3dhhcvzlwrdj4d24wqkj15fhmy9zpx-home-manager-files/.config/inkscape/palettes /nix/store/r3344bjbakm2dxxl79bfps7q65lrh0a4-home-manager-files/.config/inkscape/palettes

View file

@ -1 +1 @@
/nix/store/5c3dhhcvzlwrdj4d24wqkj15fhmy9zpx-home-manager-files/.config/inkscape/templates /nix/store/r3344bjbakm2dxxl79bfps7q65lrh0a4-home-manager-files/.config/inkscape/templates

View file

@ -1 +1 @@
/nix/store/5c3dhhcvzlwrdj4d24wqkj15fhmy9zpx-home-manager-files/.config/kitty/kitty.conf /nix/store/r3344bjbakm2dxxl79bfps7q65lrh0a4-home-manager-files/.config/kitty/kitty.conf

108
flake.lock generated
View file

@ -528,6 +528,64 @@
"type": "github" "type": "github"
} }
}, },
"niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": [
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1785857305,
"narHash": "sha256-25q05zpF1sqOCxPPUG9DPPGd+EDW7SiAOWCzBWRS7r0=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "9ee3e13b60643448228353097880521658b2fe0e",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1756556321,
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.08",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1785701241,
"narHash": "sha256-ircVOzPWRircI39ac/tqJajr5OoJxEVrDlBb05TULEk=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "feb3e43f1475e0865bb89cbd1e898b34d1d2ccf6",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nixos-hardware": { "nixos-hardware": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_2" "nixpkgs": "nixpkgs_2"
@ -562,6 +620,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1782847189,
"narHash": "sha256-twXPFqFsrrY5r28Zh7Homgcp2gUMBgQ6WDS98Q/3xFI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b6018f87da91d19d0ab4cf979885689b469cdd41",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1767892417, "lastModified": 1767892417,
@ -642,6 +716,7 @@
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprland": "hyprland", "hyprland": "hyprland",
"niri": "niri",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_3",
"stylix": "stylix", "stylix": "stylix",
@ -816,6 +891,39 @@
"type": "github" "type": "github"
} }
}, },
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1755491097,
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.7",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1784679892,
"narHash": "sha256-Mb7jpqnrcYCfNSItIkkHpuR3YxWFxPuIBfcwNKlRBkk=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "8d135d3b2854b30fd01ea6cd6c27e523dd50a839",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
},
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"home-manager": [ "home-manager": [

View file

@ -12,6 +12,11 @@
# flake hyprland (git version) # flake hyprland (git version)
hyprland.url = "github:hyprwm/Hyprland"; hyprland.url = "github:hyprwm/Hyprland";
nixos-hardware.url = "github:NixOS/nixos-hardware"; nixos-hardware.url = "github:NixOS/nixos-hardware";
# flake niri (git version
niri = {
url = "github:sodiboo/niri-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
# zen browser (communautaire) — follows pour partager les libs système # zen browser (communautaire) — follows pour partager les libs système
zen-browser = { zen-browser = {
url = "github:0xc000022070/zen-browser-flake"; url = "github:0xc000022070/zen-browser-flake";
@ -35,6 +40,7 @@
nixpkgs, nixpkgs,
home-manager, home-manager,
hyprland, hyprland,
niri,
nixos-hardware, nixos-hardware,
zen-browser, zen-browser,
stylix, stylix,

View file

@ -15,7 +15,6 @@
./packages/neovim.nix ./packages/neovim.nix
./packages/nextcloud.nix ./packages/nextcloud.nix
./packages/other_apps_light.nix ./packages/other_apps_light.nix
./packages/pass.nix
./packages/protonmail.nix ./packages/protonmail.nix
./packages/python.nix ./packages/python.nix
./packages/texlive.nix ./packages/texlive.nix

View file

@ -14,11 +14,10 @@
./packages/mpv.nix ./packages/mpv.nix
#./packages/music.nix #./packages/music.nix
./packages/neovim.nix ./packages/neovim.nix
./packages/niri.nix ./packages/niri/niri.nix
./packages/nextcloud.nix ./packages/nextcloud.nix
./packages/obs.nix ./packages/obs.nix
./packages/other_apps.nix ./packages/other_apps.nix
./packages/pass.nix
./packages/protonmail.nix ./packages/protonmail.nix
./packages/python.nix ./packages/python.nix
./packages/texlive.nix ./packages/texlive.nix

View file

@ -1,4 +1,4 @@
{ pkgs, inputs, ... }: { ... }:
{ {
programs.git = { programs.git = {
enable = true; enable = true;

View file

@ -1,6 +1,7 @@
{ {
pkgs, pkgs,
config, config,
lib,
inputs, inputs,
... ...
}: }:
@ -48,7 +49,9 @@ in
slurp slurp
]; ];
# Force le symlink hors-store, sans passer par dotfiles_apps home.activation.symlinkHyprConf = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
home.file.".config/hypr/conf".source = mkdir -p ${config.home.homeDirectory}/.config/hypr
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-config/dotfiles/hypr/conf"; unlink ${config.home.homeDirectory}/.config/hypr/conf 2>/dev/null || true
ln -sf ${config.home.homeDirectory}/nixos-config/dotfiles/hypr/conf ${config.home.homeDirectory}/.config/hypr/conf
'';
} }

View file

@ -1,44 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
# --- DAW principal ---
lmms
# --- Boîte à rythmes ---
hydrogen
drumgizmo
# --- SoundFonts ---
soundfont-fluid
soundfont-generaluser-gs
# --- Synthés (LV2/VST) ---
surge-xt
zynaddsubfx
yoshimi
helm
vital
# --- Effets LV2 ---
calf
lsp-plugins
x42-plugins
# --- Sampling / édition ---
audacity
# --- Utilitaires ---
qpwgraph
sonic-visualiser
];
# Aide les hôtes LV2/VST à trouver les plugins installés via Nix
home.sessionVariables = {
LV2_PATH = "$HOME/.nix-profile/lib/lv2";
LADSPA_PATH = "$HOME/.nix-profile/lib/ladspa";
DSSI_PATH = "$HOME/.nix-profile/lib/dssi";
VST_PATH = "$HOME/.nix-profile/lib/vst";
VST3_PATH = "$HOME/.nix-profile/lib/vst3";
};
}

View file

@ -0,0 +1,55 @@
{ ... }:
{
programs.niri.settings.animations = {
enable = true;
slowdown = 1.0;
workspace-switch.spring = {
damping-ratio = 1.0;
stiffness = 1000;
epsilon = 0.0001;
};
window-open = {
duration-ms = 150;
curve = "ease-out-expo";
};
window-close = {
duration-ms = 150;
curve = "ease-out-quad";
};
horizontal-view-movement.spring = {
damping-ratio = 1.0;
stiffness = 800;
epsilon = 0.0001;
};
window-movement.spring = {
damping-ratio = 1.0;
stiffness = 800;
epsilon = 0.0001;
};
window-resize.spring = {
damping-ratio = 1.0;
stiffness = 800;
epsilon = 0.0001;
};
config-notification-open-close.spring = {
damping-ratio = 0.6;
stiffness = 1000;
epsilon = 0.001;
};
screenshot-ui-open.duration-ms = 200;
overview-open-close.spring = {
damping-ratio = 1.0;
stiffness = 800;
epsilon = 0.0001;
};
};
}

View file

@ -0,0 +1,16 @@
{ ... }:
{
programs.niri.settings.gestures = {
dnd-edge-view-scroll = {
trigger-width = 30;
delay-ms = 100;
max-speed = 1500;
};
dnd-edge-workspace-switch = {
trigger-height = 50;
delay-ms = 100;
max-speed = 1500;
};
hot-corners.enable = true;
};
}

View file

@ -0,0 +1,51 @@
{ ... }:
{
programs.niri.settings.input = {
keyboard = {
xkb = {
layout = "fr";
variant = "";
model = "";
rules = "";
options = "caps:escape";
};
repeat-delay = 600;
repeat-rate = 25;
track-layout = "global";
numlock = true;
};
touchpad = {
off = true;
tap = true;
dwt = true;
dwtp = true;
drag = true;
drag-lock = false;
natural-scroll = true;
accel-speed = 0.0;
accel-profile = "adaptive";
scroll-method = "two-finger";
tap-button-map = "left-middle-right";
click-method = "clickfinger";
middle-emulation = false;
scroll-factor = 1.2;
};
mouse = {
natural-scroll = false;
accel-speed = -0.3;
accel-profile = "flat";
scroll-factor = 1.2;
scroll-method = null;
};
mouse-scroll-factor = 1.0;
touchpad-scroll-factor = 1.0;
focus-follows-mouse = {
enable = true;
# max-scroll-amount = "0%";
};
};
}

View file

@ -0,0 +1,122 @@
{ ... }:
{
programs.niri.settings.binds = {
# open programs
"ALT+Q".action.spawn = "kitty";
"ALT+W".action.spawn = "fuzzel";
"ALT+D".action.spawn = "dolphin";
"ALT+N".action.spawn = [
"kitty"
"-e"
"nvim"
];
"Alt+F".spawn = [ "zen-beta" ];
"Alt+Z".spawn = [ "zotero" ];
"Alt+T".spawn = [ "thunderbird" ];
# other actions
"ALT+F4".action.close-window = { };
"ALT+V".toggle-window-floating = { };
"ALT+M".maximize-column = { };
"ALT+F".fullscreen-window = { };
"ALT+H".focus-column-left = { };
"ALT+L".focus-column-right = { };
"ALT+K".focus-window-up = { };
"ALT+J".focus-window-down = { };
"Ctrl+Super+H".move-column-left = { };
"Ctrl+Super+L".move-column-right = { };
"Ctrl+Super+K".move-window-up = { };
"Ctrl+Super+J".move-window-down = { };
"Super+L".focus-workspace-down = { };
"Super+H".focus-workspace-up = { };
"Super+K".move-column-to-workspace-down = { };
"Super+J".move-column-to-workspace-up = { };
"Alt+A".focus-monitor-left = { };
"Alt+B".focus-monitor-right = { };
"Ctrl+Super+A".move-column-to-monitor-left = { };
"Ctrl+Super+B".move-column-to-monitor-right = { };
"Alt+R".switch-preset-column-width = { };
"Ctrl+H".set-column-width = [ "-10%" ];
"Ctrl+L".set-column-width = [ "+10%" ];
"Ctrl+K".action.set-window-height = "-10%";
"Ctrl+J".action.set-window-height = "+10%";
"Print".screenshot = { };
"Ctrl+Print".screenshot-screen = { };
"Alt+Print".screenshot-window = { };
# multimédia / luminosité
"XF86MonBrightnessUp" = {
_props.allow-when-locked = true;
spawn = [
"brightnessctl"
"-e4"
"-n2"
"set"
"5%+"
];
};
"XF86MonBrightnessDown" = {
_props.allow-when-locked = true;
spawn = [
"brightnessctl"
"-e4"
"-n2"
"set"
"5%-"
];
};
"XF86AudioRaiseVolume" = {
_props.allow-when-locked = true;
spawn = [
"wpctl"
"set-volume"
"-l"
"1"
"@DEFAULT_AUDIO_SINK@"
"5%+"
];
};
"XF86AudioLowerVolume" = {
_props.allow-when-locked = true;
spawn = [
"wpctl"
"set-volume"
"@DEFAULT_AUDIO_SINK@"
"5%-"
];
};
"XF86AudioMute" = {
_props.allow-when-locked = true;
spawn = [
"wpctl"
"set-mute"
"@DEFAULT_AUDIO_SINK@"
"toggle"
];
};
"XF86AudioMicMute" = {
_props.allow-when-locked = true;
spawn = [
"wpctl"
"set-mute"
"@DEFAULT_AUDIO_SOURCE@"
"toggle"
];
};
# Verrouillage d'écran
"Ctrl+Alt+L".action = {
spawn = [ "swaylock" ];
allow-when-locked = true;
};
# Aperçu global (overview)
"Alt+Tab".action.toggle-overview = { };
};
}

View file

@ -0,0 +1,13 @@
{ ... }:
{
programs.niri.settings.layer-rules = [
{
matches = [ { namespace = "^notifications$"; } ];
block-out-from = "screen-capture";
}
{
matches = [ { namespace = "^waybar$"; } ];
place-within-backdrop = false;
}
];
}

View file

@ -0,0 +1,5 @@
{ ... }:
{
programs.niri.settings.ENTER = {
};
}

View file

@ -0,0 +1,79 @@
{ ... }:
{
programs.niri.settings.layout = {
gaps = 16;
center-focused-column = "never"; # never, always, on-overflow
always-center-single-column = false;
preset-column-widths._children = [
{ proportion = 0.33333; }
{ proportion = 0.5; }
{ proportion = 0.66667; }
];
default-column-width.proportion = 0.5;
preset-window-heights = [
{ proportion = 0.33333; }
{ proportion = 0.5; }
{ proportion = 0.66667; }
];
focus-ring = {
enable = true;
width = 4;
# active.color = "#7fc8ff";
# inactive.color = "#505050";
# urgent.color = "#9b0000";
};
border = {
enable = false;
width = 4;
# active.color = "#ffc87f";
# inactive.color = "#505050";
# urgent.color = "#9b0000";
};
shadow = {
enable = false;
softness = 30;
spread = 5;
offset = {
x = 0;
y = 5;
};
# color = "#0007";
# inactive-color = null;
};
tab-indicator = {
enable = true;
hide-when-single-tab = true;
place-within-column = false;
gap = 5;
width = 4;
length.total-proportion = 0.5;
position = "left"; # "left" | "right" | "top" | "bottom"
gaps-between-tabs = 0;
corner-radius = 0;
# active.color = "#7fc8ff";
# inactive.color = "#505050";
# urgent.color = "#9b0000";
};
insert-hint = {
enable = true;
# color = "#7fc8ff4d";
};
struts = {
left = 0;
right = 0;
top = 0;
bottom = 0;
};
# background-color = "transparent";
};
}

View file

@ -0,0 +1,35 @@
{ ... }:
{
programs.niri.settings = {
prefer-no-csd = true;
screenshot-path = "~/Screenshots/%Y-%m-%d %H-%M-%S.png";
spawn-at-startup = [
{
command = [
"swaybg"
"-i"
"~/nixos-config/dotfiles/hypr/wallpaper/nix-wallpaper.png"
];
}
];
environment = {
DISPLAY = null;
QT_QPA_PLATFORM = "wayland";
MOZ_ENABLE_WAYLAND = "1";
};
cursor = {
xcursor-theme = "Bibata-Modern-Ice";
xcursor-size = 24;
hide-when-typing = true;
hide-after-inactive-ms = null;
};
xwayland-satellite = {
enable = true;
path = "xwayland-satellit";
};
clipboard.disable-primary = false;
hotkey-overlay.skip-at-startup = false;
overview.zoom = 0.5;
};
}

View file

@ -0,0 +1,30 @@
{ ... }:
{
programs.niri.settings.output = {
"eDP-1" = {
enable = true;
scale = 1.0;
transform.rotation = 0; # 0, 90, 180, 270
position = {
x = 0;
y = 0;
};
mode = {
width = 1920;
height = 1080;
refresh = 120.0;
};
variable-refresh-rate = null; # true, false, on-demand
# background-color = "#000000";
};
# 2nd screen
# `niri msg outputs`) :
# "HDMI-A-1" = {
# enable = true;
# scale = 1.0;
# position = { x = 1920; y = 0; };
# mode = { width = 2560; height = 1440; refresh = 144.0; };
# };
};
}

View file

@ -0,0 +1,5 @@
{ ... }:
{
programs.niri.settings.ENTER = {
};
}

View file

@ -0,0 +1,41 @@
{ ... }:
{
programs.niri.settings.window-rules = [
{
matches = [ { app-id = "^firefox$"; } ];
default-column-width = {
proportion = 0.66667;
};
}
{
matches = [ { title = "^Picture-in-Picture$"; } ];
open-floating = true;
default-floating-position = {
x = 16;
y = 16;
relative-to = "bottom-right";
};
}
{
matches = [ { app-id = "^(pavucontrol|blueman-manager)$"; } ];
open-floating = true;
}
{
# Exemple : bordure/opacité par app
matches = [ { app-id = "^kitty$"; } ];
opacity = 0.95;
geometry-corner-radius = {
top-left = 8.0;
top-right = 8.0;
bottom-left = 8.0;
bottom-right = 8.0;
};
clip-to-geometry = true;
}
{
exclude-from-window-list = false;
matches = [ { is-active = false; } ];
opacity = 1.0;
}
];
}

View file

@ -0,0 +1,8 @@
{ ... }:
{
programs.niri.settings.workspaces = {
# "1" = { name = "web"; open-on-output = "eDP-1"; };
# "2" = { name = "code"; };
# "3" = { name = "chat"; };
};
}

View file

@ -0,0 +1,16 @@
{ pkgs, ... }:
{
imports = [
./settings.nix
];
programs.niri = {
enable = true;
};
home.packages = with pkgs; [
fuzzel
kitty
swaylock
wireplumber # fournit wpctl
brightnessctl
];
}

View file

@ -0,0 +1,15 @@
{ ... }:
{
imports = [
conf/animations.nix
conf/gestures.nix
conf/input.nix
conf/keybind.nix
conf/layer-rules.nix
conf/layout.nix
conf/misc.nix
conf/output.nix
conf/window-rules.nix
conf/workspaces.nix
];
}

View file

@ -1,6 +0,0 @@
{ ... }:
{
programs.password-store = {
enable = true;
};
}

View file

@ -1,9 +1,14 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
# agent pour les clés gpg demandées par protonmail services.gnome-keyring = {
services.gpg-agent = {
enable = true; enable = true;
pinentry.package = pkgs.pinentry-curses; components = [ "secrets" ];
}; };
services.protonmail-bridge.enable = true; services.protonmail-bridge.enable = true;
systemd.user.services.protonmail-bridge.Service = {
ExecStartPre = "${pkgs.bash}/bin/bash -c 'until ${pkgs.systemd}/bin/busctl --user list | grep -q org.freedesktop.secrets; do sleep 1; done'";
RestartSec = "10s";
};
} }

View file

@ -7,25 +7,30 @@
enable = true; enable = true;
enable32Bit = true; # nécessaire pour Steam / jeux 32-bit enable32Bit = true; # nécessaire pour Steam / jeux 32-bit
extraPackages = with pkgs; [ extraPackages = with pkgs; [
intel-media-driver # VAAPI pour l'iGPU Intel (Coffee Lake) intel-media-driver
libva-vdpau-driver intel-compute-runtime
libvdpau-va-gl libvdpau-va-gl
]; ];
extraPackages32 = with pkgs.pkgsi686Linux; [ intel-media-driver ];
};
environment.sessionVariables = {
LIBVA_DRIVER_NAME = "iHD";
VDPAU_DRIVER = "va_gl";
}; };
hardware.nvidia = { hardware.nvidia = {
modesetting.enable = true; # requis pour Wayland/Hyprland modesetting.enable = true; # requis pour Wayland/Hyprland
powerManagement.enable = true; powerManagement.enable = true;
# RTX 2060 = Turing. Le driver "open" fonctionne pour Turing+, mais le propriétaire reste plus mature sur cette génération. powerManagement.finegrained = true;
open = false; open = true;
nvidiaSettings = true; # fournit `nvidia-settings` nvidiaSettings = true; # fournit `nvidia-settings`
package = config.boot.kernelPackages.nvidiaPackages.stable; package = config.boot.kernelPackages.nvidiaPackages.stable;
prime = { prime = {
sync.enable = true; offload = {
#offload = { enable = true;
# enable = true; enableOffloadCmd = true;
# enableOffloadCmd = true; };
#};
intelBusId = "PCI:0:2:0"; intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0"; nvidiaBusId = "PCI:1:0:0";
}; };

View file

@ -14,4 +14,5 @@
openssh.enable = false; openssh.enable = false;
flatpak.enable = true; flatpak.enable = true;
}; };
virtualisation.docker.enable = true;
} }

View file

@ -6,6 +6,7 @@
extraGroups = [ extraGroups = [
"networkmanager" "networkmanager"
"wheel" "wheel"
"docker"
]; ];
shell = pkgs.zsh; shell = pkgs.zsh;
}; };

View file

@ -1,13 +1,21 @@
{ pkgs, inputs, ... }:
{ {
programs.hyprland = { lib,
enable = true; inputs,
package = inputs.hyprland.packages.${pkgs.system}.hyprland; pkgs,
...
}:
{
nix.settings = {
substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIITfGmwGaMwaOAd6DDeaU="
];
}; };
# Portails XDG (captures d'écran, partage d'écran, file pickers Wayland)
xdg.portal = { security.wrappers.Hyprland = {
enable = true; owner = "root";
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; group = "root";
capabilities = "cap_sys_nice+ep";
source = lib.getExe inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
}; };
security.polkit.enable = true;
} }

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { ... }:
{ {
programs.steam = { programs.steam = {
enable = true; enable = true;

View file

@ -0,0 +1,5 @@
{ ... }:
{
services.gnome.gnome-keyring.enable = true;
security.pam.services.login.enableGnomeKeyring = true;
}

View file

@ -1,4 +1,4 @@
{ pkgs, ... }: { ... }:
{ {
services.gvfs.enable = true; services.gvfs.enable = true;
services.tumbler.enable = true; services.tumbler.enable = true;

View file

@ -1,4 +0,0 @@
{ pkgs, ... }:
{
}

View file

@ -1,7 +1,6 @@
{ {
pkgs, pkgs,
lib, lib,
inputs,
... ...
}: }:
{ {
@ -16,25 +15,12 @@
}; };
services.graphical-desktop.enable = true; services.graphical-desktop.enable = true;
services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true; services.xserver.desktopManager.runXdgAutostartIfNone = lib.mkDefault true;
xdg.portal = { xdg.portal = {
enable = true; enable = true;
xdgOpenUsePortal = true;
config.common.degault = "*";
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
}; };
nix.settings = {
substituters = [ "https://hyprland.cachix.org" ];
trusted-public-keys = [
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIITfGmwGaMwaOAd6DDeaU="
];
};
security.wrappers.Hyprland = {
owner = "root";
group = "root";
capabilities = "cap_sys_nice+ep";
source = lib.getExe inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
};
} }

View file

@ -17,6 +17,7 @@
./config/style/fonts.nix ./config/style/fonts.nix
./config/style/stylix.nix ./config/style/stylix.nix
# additional services # additional services
./config/services/gnome-keyring.nix
./config/services/kde.nix ./config/services/kde.nix
./config/services/mullvad.nix ./config/services/mullvad.nix
./config/services/power_management.nix ./config/services/power_management.nix
@ -25,6 +26,7 @@
./config/programs/gamescope.nix ./config/programs/gamescope.nix
./config/programs/steam.nix ./config/programs/steam.nix
# packages & others # packages & others
./config/hyprland.nix
./config/wayland.nix ./config/wayland.nix
./config/system_packages.nix ./config/system_packages.nix
# profil nixos pour mon ordi portable maison # profil nixos pour mon ordi portable maison