From df94405cefdb3becc9416c91a85da02764a1731b Mon Sep 17 00:00:00 2001 From: afoucaultc Date: Tue, 7 Jul 2026 20:42:01 +0200 Subject: [PATCH] yeeee --- README.md | 27 ++++ dotfiles/hypr/conf/windowrules.lua | 7 + dotfiles/nvim/lua/neoconf/lazy/conform.lua | 8 + home/afoucaultc/dotfiles_apps.nix | 24 ++- home/afoucaultc/home-laptop.nix | 48 +++--- home/afoucaultc/home.nix | 46 +++--- home/afoucaultc/packages/hyprland.nix | 21 ++- home/afoucaultc/packages/kitty.nix | 6 +- home/afoucaultc/packages/mpv.nix | 6 +- home/afoucaultc/packages/neovim.nix | 87 ++++++----- home/afoucaultc/packages/other_apps.nix | 110 +++++++------- home/afoucaultc/packages/other_apps_light.nix | 2 - home/afoucaultc/packages/pass.nix | 6 +- home/afoucaultc/packages/thunderbird.nix | 12 +- home/afoucaultc/packages/tmux.nix | 6 +- home/afoucaultc/packages/zathura.nix | 29 ++-- home/afoucaultc/packages/zen.nix | 22 +-- home/afoucaultc/packages/zsh.nix | 23 +-- hosts/nixos-home/config/bluetooth.nix | 9 +- hosts/nixos-home/config/boot.nix | 20 +-- hosts/nixos-home/config/drivers_video.nix | 66 ++++---- hosts/nixos-home/config/extra-services.nix | 54 +++---- hosts/nixos-home/config/fonts.nix | 56 +++---- hosts/nixos-home/config/hyprland.nix | 20 +-- hosts/nixos-home/config/language.nix | 33 ++-- hosts/nixos-home/config/power_management.nix | 8 +- hosts/nixos-home/config/sound.nix | 18 +-- hosts/nixos-home/config/stylix.nix | 51 +++---- hosts/nixos-home/config/system_packages.nix | 39 +++-- hosts/nixos-home/config/system_saves.nix | 14 +- hosts/nixos-home/config/system_services.nix | 30 ++-- hosts/nixos-home/config/user.nix | 17 ++- hosts/nixos-home/configuration.nix | 68 +++++---- hosts/nixos-home/hardware-configuration.nix | 60 +++++--- hosts/nixos-laptop/config/bluetooth.nix | 9 +- hosts/nixos-laptop/config/boot.nix | 19 ++- hosts/nixos-laptop/config/drivers_video.nix | 23 ++- hosts/nixos-laptop/config/extra-services.nix | 22 +-- hosts/nixos-laptop/config/fonts.nix | 63 ++++---- hosts/nixos-laptop/config/hyprland.nix | 22 ++- hosts/nixos-laptop/config/language.nix | 33 ++-- hosts/nixos-laptop/config/low-ram.nix | 142 +++++++++--------- .../nixos-laptop/config/power_management.nix | 33 ++-- hosts/nixos-laptop/config/sound.nix | 18 +-- hosts/nixos-laptop/config/stylix.nix | 52 +++---- hosts/nixos-laptop/config/system_packages.nix | 39 +++-- hosts/nixos-laptop/config/system_saves.nix | 14 +- hosts/nixos-laptop/config/system_services.nix | 32 ++-- hosts/nixos-laptop/config/user.nix | 17 ++- hosts/nixos-laptop/configuration.nix | 65 ++++---- hosts/nixos-laptop/hardware-configuration.nix | 54 +++++-- 51 files changed, 893 insertions(+), 817 deletions(-) create mode 100644 dotfiles/nvim/lua/neoconf/lazy/conform.lua diff --git a/README.md b/README.md index a41905b..55ebead 100644 --- a/README.md +++ b/README.md @@ -68,3 +68,30 @@ nix search nixpkgs nom_du_package 2. Package pas encore dans nixpkgs : chercher un flake upstream officiel (packages..degault), ajouter comme input et le référencer ### Machine ancienne Bien utiliser la version `laptop` qui prend la plupart des paquets par cachix (pour éviter la compilation en locale qui dépasse les capacités de la RAM) + +### Ensuite +#### Thunderbird +Générer clé GPG +`gpg --quick-generate-key "afoucaultc" default default never` +Afficher la clé +`gpg --list-secret-keys --keyid-format=long` +Initialiser avec pass (empreinte = dernière partie après sec) +`pass init ` +Fermer en partie les permissions sur .gnupg +```bash +chmod 700 ~/.gnupg +chmod 600 ~/.gnupg/* 2>/dev/null +find ~/.gnupg -type d -exec chmod 700 {} \; +find ~/.gnupg -type f -exec chmod 600 {} \; +``` +Lancer le proton mail bridge +```shell +protonmail-bridge --cli +>>> login #(puis se login) +``` +Ensuite normalement c'est bon, taper "info" pour récupérer le mot de passe +Puis `cert export` et le mettre dans le home par exemple. Ensuite : +`parametres -> vie privée et sécurité -> certificats -> gérer -> autorités -> importer` +Importer et cocher site web. + +Puis se connecter à son compte sur thunderbird : il faut faire `info` sur le protonmail bridge, pour récupérer son mot de passe, puis valider l'exception pour le certificat. diff --git a/dotfiles/hypr/conf/windowrules.lua b/dotfiles/hypr/conf/windowrules.lua index d13ddf8..6bb0717 100644 --- a/dotfiles/hypr/conf/windowrules.lua +++ b/dotfiles/hypr/conf/windowrules.lua @@ -12,3 +12,10 @@ hl.window_rule({ }, opacity = 2, }) +hl.window_rule({ + name = "opacity vesktop", + match = { + class = "vesktop", + }, + opacity = 2, +}) diff --git a/dotfiles/nvim/lua/neoconf/lazy/conform.lua b/dotfiles/nvim/lua/neoconf/lazy/conform.lua new file mode 100644 index 0000000..981be02 --- /dev/null +++ b/dotfiles/nvim/lua/neoconf/lazy/conform.lua @@ -0,0 +1,8 @@ +return { + "stevearc/conform.nvim", + opts = { + formatters_by_ft = { + nix = { "nixfmt" }, -- remplace par "alejandra" si tu préfères + }, + }, +} diff --git a/home/afoucaultc/dotfiles_apps.nix b/home/afoucaultc/dotfiles_apps.nix index cf1f669..673c56c 100644 --- a/home/afoucaultc/dotfiles_apps.nix +++ b/home/afoucaultc/dotfiles_apps.nix @@ -1,18 +1,12 @@ { config, pkgs, ... }: { - home.packages = with pkgs; [ - rofi - ]; - - xdg.configFile."inkscape".source = - config.lib.file.mkOutOfStoreSymlink - "${config.home.homeDirectory}/nixos-config/dotfiles/inkscape"; - - xdg.configFile."rofi".source = - config.lib.file.mkOutOfStoreSymlink - "${config.home.homeDirectory}/nixos-config/dotfiles/rofi"; - - xdg.configFile."hypr".source = - config.lib.file.mkOutOfStoreSymlink - "${config.home.homeDirectory}/nixos-config/dotfiles/hypr"; + home.packages = with pkgs; [ + rofi + ]; + xdg.configFile."inkscape".source = + config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-config/dotfiles/inkscape"; + xdg.configFile."rofi".source = + config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-config/dotfiles/rofi"; + xdg.configFile."hypr".source = + config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-config/dotfiles/hypr"; } diff --git a/home/afoucaultc/home-laptop.nix b/home/afoucaultc/home-laptop.nix index 5f2be0e..81ce29d 100644 --- a/home/afoucaultc/home-laptop.nix +++ b/home/afoucaultc/home-laptop.nix @@ -1,28 +1,26 @@ { config, pkgs, ... }: { - home.username = "afoucaultc"; - home.homeDirectory = "/home/afoucaultc"; - home.stateVersion = "26.05"; - - imports = - [ - ./packages/btop.nix - ./packages/firefox.nix - ./packages/git.nix - ./packages/hyprland.nix - ./packages/kitty.nix - ./packages/mpv.nix - ./packages/neovim.nix - ./packages/other_apps_light.nix - ./packages/pass.nix - ./packages/texlive.nix - ./packages/thunderbird.nix - ./packages/tmux.nix - ./packages/zathura.nix - ./packages/zen.nix - ./packages/zsh.nix - # dotfiles links - ./dotfiles_apps.nix - ]; - stylix.targets.gtksourceview.enable = false; + home.username = "afoucaultc"; + home.homeDirectory = "/home/afoucaultc"; + home.stateVersion = "26.05"; + imports = [ + ./packages/btop.nix + ./packages/firefox.nix + ./packages/git.nix + ./packages/hyprland.nix + ./packages/kitty.nix + ./packages/mpv.nix + ./packages/neovim.nix + ./packages/other_apps_light.nix + ./packages/pass.nix + ./packages/texlive.nix + ./packages/thunderbird.nix + ./packages/tmux.nix + ./packages/zathura.nix + ./packages/zen.nix + ./packages/zsh.nix + # dotfiles links + ./dotfiles_apps.nix + ]; + stylix.targets.gtksourceview.enable = false; } diff --git a/home/afoucaultc/home.nix b/home/afoucaultc/home.nix index b8f5357..729ea52 100644 --- a/home/afoucaultc/home.nix +++ b/home/afoucaultc/home.nix @@ -1,27 +1,25 @@ { config, pkgs, ... }: { - home.username = "afoucaultc"; - home.homeDirectory = "/home/afoucaultc"; - home.stateVersion = "26.05"; - - imports = - [ - ./packages/btop.nix - ./packages/firefox.nix - ./packages/git.nix - ./packages/hyprland.nix - ./packages/kitty.nix - ./packages/mpv.nix - ./packages/neovim.nix - ./packages/other_apps.nix - ./packages/pass.nix - ./packages/texlive.nix - ./packages/thunderbird.nix - ./packages/tmux.nix - ./packages/zathura.nix - ./packages/zen.nix - ./packages/zsh.nix - # dotfiles links - ./dotfiles_apps.nix - ]; + home.username = "afoucaultc"; + home.homeDirectory = "/home/afoucaultc"; + home.stateVersion = "26.05"; + imports = [ + ./packages/btop.nix + ./packages/firefox.nix + ./packages/git.nix + ./packages/hyprland.nix + ./packages/kitty.nix + ./packages/mpv.nix + ./packages/neovim.nix + ./packages/other_apps.nix + ./packages/pass.nix + ./packages/texlive.nix + ./packages/thunderbird.nix + ./packages/tmux.nix + ./packages/zathura.nix + ./packages/zen.nix + ./packages/zsh.nix + # dotfiles links + ./dotfiles_apps.nix + ]; } diff --git a/home/afoucaultc/packages/hyprland.nix b/home/afoucaultc/packages/hyprland.nix index 584f14f..7ef3ec1 100644 --- a/home/afoucaultc/packages/hyprland.nix +++ b/home/afoucaultc/packages/hyprland.nix @@ -1,10 +1,15 @@ -{ config, pkgs, inputs, ... }: { - home.packages = with pkgs; [ - hyprpaper - hyprlock - wl-clipboard - grim - slurp - ]; + config, + pkgs, + inputs, + ... +}: +{ + home.packages = with pkgs; [ + hyprpaper + hyprlock + wl-clipboard + grim + slurp + ]; } diff --git a/home/afoucaultc/packages/kitty.nix b/home/afoucaultc/packages/kitty.nix index b92d985..12acaaa 100644 --- a/home/afoucaultc/packages/kitty.nix +++ b/home/afoucaultc/packages/kitty.nix @@ -1,6 +1,6 @@ { config, pkgs, ... }: { - programs.kitty = { - enable = true; - }; + programs.kitty = { + enable = true; + }; } diff --git a/home/afoucaultc/packages/mpv.nix b/home/afoucaultc/packages/mpv.nix index 9f9e886..5127ada 100644 --- a/home/afoucaultc/packages/mpv.nix +++ b/home/afoucaultc/packages/mpv.nix @@ -1,6 +1,6 @@ { config, pkgs, ... }: { - programs.mpv = { - enable = true; - }; + programs.mpv = { + enable = true; + }; } diff --git a/home/afoucaultc/packages/neovim.nix b/home/afoucaultc/packages/neovim.nix index b3208e6..8e27035 100644 --- a/home/afoucaultc/packages/neovim.nix +++ b/home/afoucaultc/packages/neovim.nix @@ -1,43 +1,50 @@ { config, pkgs, ... }: { - home.packages = with pkgs; [ - neovim-unwrapped - # outils dont lazy.nvim / les LSP ont besoin - ripgrep - fd - gcc - gnumake - nodejs - unzip - # formatters généraux - lua-language-server - stylua - nil - nixfmt-rfc-style # binaire "nixfmt" pour conform - # LSP serveurs (remplacent Mason) - marksman - pyright - # LSP que tu avais dans Mason — décommente selon besoin - clang-tools # clangd - bash-language-server # bashls - vscode-langservers-extracted # cssls, jsonls, html, eslint - typescript-language-server # ts_ls - vim-language-server # vimls - jdt-language-server # jdtls (Java) - # formatters / linters shell + python - shellcheck - shfmt - black - isort - # vimtex forward search + treesitter CLI - xdotool - tree-sitter - (python3.withPackages (ps: with ps; [ pynvim debugpy ])) - ]; - home.sessionVariables.EDITOR = "nvim"; - home.shellAliases = { vi = "nvim"; vim = "nvim"; }; - # ~/.config/nvim -> tes dotfiles, éditables en place - xdg.configFile."nvim".source = - config.lib.file.mkOutOfStoreSymlink - "${config.home.homeDirectory}/nixos-config/dotfiles/nvim"; + home.packages = with pkgs; [ + neovim-unwrapped + # outils dont lazy.nvim / les LSP ont besoin + ripgrep + fd + gcc + gnumake + nodejs + unzip + # formatters généraux + lua-language-server + stylua + nil + nixfmt-rfc-style # binaire "nixfmt" pour conform + # LSP serveurs (remplacent Mason) + marksman + pyright + # LSP que tu avais dans Mason — décommente selon besoin + clang-tools # clangd + bash-language-server # bashls + vscode-langservers-extracted # cssls, jsonls, html, eslint + typescript-language-server # ts_ls + vim-language-server # vimls + jdt-language-server # jdtls (Java) + # formatters / linters shell + python + shellcheck + shfmt + black + isort + # vimtex forward search + treesitter CLI + xdotool + tree-sitter + (python3.withPackages ( + ps: with ps; [ + pynvim + debugpy + ] + )) + ]; + home.sessionVariables.EDITOR = "nvim"; + home.shellAliases = { + vi = "nvim"; + vim = "nvim"; + }; + # ~/.config/nvim -> tes dotfiles, éditables en place + xdg.configFile."nvim".source = + config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/nixos-config/dotfiles/nvim"; } diff --git a/home/afoucaultc/packages/other_apps.nix b/home/afoucaultc/packages/other_apps.nix index 4ce847c..3b0e848 100644 --- a/home/afoucaultc/packages/other_apps.nix +++ b/home/afoucaultc/packages/other_apps.nix @@ -1,60 +1,56 @@ { config, pkgs, ... }: { - home.packages = with pkgs; [ - # --- Others - hyfetch - fastfetch - pkg-config - - # --- Bureautique --- - libreoffice-fresh - typora - zotero - - # --- Communication --- - signal-desktop - vesktop - mattermost-desktop - - # --- Multimédia --- - gimp - inkscape - nomacs - imagemagick - librsvg - streamlink - kdePackages.gwenview - audacity - - # --- Maths --- - (octave.withPackages (ps: with ps; [ - image # octave-image - statistics # octave-statistics - symbolic # octave-symbolic - # dataframe # (octave-dataframe : indispo dans nixpkgs, à compiler via pkg si besoin) - ])) - gnuplot # gnuplot - - # --- Gestion de fichiers KDE --- - kdePackages.dolphin - kdePackages.dolphin-plugins - kdePackages.kio-extras - kdePackages.qtsvg - kdePackages.ark - kdePackages.kdegraphics-thumbnailers - kdePackages.ffmpegthumbs - - nwg-look - papirus-icon-theme - mako - cliphist - grim slurp - mullvad-vpn - ]; - - services.gpg-agent = { - enable = true; - pinentry.package = pkgs.pinentry-gnome3; - }; - services.protonmail-bridge.enable = true; + home.packages = with pkgs; [ + # --- Others + hyfetch + fastfetch + pkg-config + # --- Bureautique --- + libreoffice-fresh + typora + zotero + # --- Communication --- + signal-desktop + vesktop + mattermost-desktop + # --- Multimédia --- + gimp + inkscape + nomacs + imagemagick + librsvg + streamlink + kdePackages.gwenview + audacity + # --- Maths --- + (octave.withPackages ( + ps: with ps; [ + image # octave-image + statistics # octave-statistics + symbolic # octave-symbolic + # dataframe # (octave-dataframe : indispo dans nixpkgs, à compiler via pkg si besoin) + ] + )) + gnuplot # gnuplot + # --- Gestion de fichiers KDE --- + kdePackages.dolphin + kdePackages.dolphin-plugins + kdePackages.kio-extras + kdePackages.qtsvg + kdePackages.ark + kdePackages.kdegraphics-thumbnailers + kdePackages.ffmpegthumbs + nwg-look + papirus-icon-theme + mako + cliphist + grim + slurp + mullvad-vpn + ]; + services.gpg-agent = { + enable = true; + pinentry.package = pkgs.pinentry-gnome3; + }; + services.protonmail-bridge.enable = true; } diff --git a/home/afoucaultc/packages/other_apps_light.nix b/home/afoucaultc/packages/other_apps_light.nix index a1ebd74..23b260e 100644 --- a/home/afoucaultc/packages/other_apps_light.nix +++ b/home/afoucaultc/packages/other_apps_light.nix @@ -47,11 +47,9 @@ mullvad-vpn # GUI Mullvad (le service est côté système) ]; programs.gpg.enable = true; - services.gpg-agent = { enable = true; pinentry.package = pkgs.pinentry-curses; }; - services.protonmail-bridge.enable = true; } diff --git a/home/afoucaultc/packages/pass.nix b/home/afoucaultc/packages/pass.nix index 3b23f99..b0e67f0 100644 --- a/home/afoucaultc/packages/pass.nix +++ b/home/afoucaultc/packages/pass.nix @@ -1,6 +1,6 @@ { pkgs, inputs, ... }: { - programs.password-store = { - enable = true; - }; + programs.password-store = { + enable = true; + }; } diff --git a/home/afoucaultc/packages/thunderbird.nix b/home/afoucaultc/packages/thunderbird.nix index 8677f85..f8ef245 100644 --- a/home/afoucaultc/packages/thunderbird.nix +++ b/home/afoucaultc/packages/thunderbird.nix @@ -1,9 +1,9 @@ { config, pkgs, ... }: { - programs.thunderbird = { - enable = true; - profiles.default = { - isDefault = true; - }; - }; + programs.thunderbird = { + enable = true; + profiles.default = { + isDefault = true; + }; + }; } diff --git a/home/afoucaultc/packages/tmux.nix b/home/afoucaultc/packages/tmux.nix index 6e2da92..adcdb70 100644 --- a/home/afoucaultc/packages/tmux.nix +++ b/home/afoucaultc/packages/tmux.nix @@ -1,6 +1,6 @@ { pkgs, inputs, ... }: { - programs.tmux = { - enable = true; - }; + programs.tmux = { + enable = true; + }; } diff --git a/home/afoucaultc/packages/zathura.nix b/home/afoucaultc/packages/zathura.nix index b6fb20d..7215a18 100644 --- a/home/afoucaultc/packages/zathura.nix +++ b/home/afoucaultc/packages/zathura.nix @@ -1,18 +1,17 @@ { config, pkgs, ... }: { - programs.zathura = { - enable = true; - options = { - selection-clipboard = "clipboard"; - synctex = true; - synctex-edit-modifier = "ctrl"; - }; - mappings = { - }; - }; - - home.packages = with pkgs; [ - zathura - poppler-utils - ]; + programs.zathura = { + enable = true; + options = { + selection-clipboard = "clipboard"; + synctex = true; + synctex-edit-modifier = "ctrl"; + }; + mappings = { + }; + }; + home.packages = with pkgs; [ + zathura + poppler-utils + ]; } diff --git a/home/afoucaultc/packages/zen.nix b/home/afoucaultc/packages/zen.nix index b6d7ea9..b3fcce6 100644 --- a/home/afoucaultc/packages/zen.nix +++ b/home/afoucaultc/packages/zen.nix @@ -1,11 +1,15 @@ -{ config, pkgs, inputs, ... }: { - imports = [ inputs.zen-browser.homeModules.beta ]; - programs.zen-browser = { - enable = true; - setAsDefaultBrowser = true; - profiles.default = { }; - }; - stylix.targets.zen-browser.profileNames = [ "default" ]; + config, + pkgs, + inputs, + ... +}: +{ + imports = [ inputs.zen-browser.homeModules.beta ]; + programs.zen-browser = { + enable = true; + setAsDefaultBrowser = true; + profiles.default = { }; + }; + stylix.targets.zen-browser.profileNames = [ "default" ]; } - diff --git a/home/afoucaultc/packages/zsh.nix b/home/afoucaultc/packages/zsh.nix index e285866..4d215fd 100644 --- a/home/afoucaultc/packages/zsh.nix +++ b/home/afoucaultc/packages/zsh.nix @@ -1,13 +1,16 @@ { config, pkgs, ... }: { - programs.zsh = { - enable = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - oh-my-zsh = { - enable = true; - theme = "robbyrussell"; - plugins = [ "git" "sudo" ]; - }; - }; + programs.zsh = { + enable = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + oh-my-zsh = { + enable = true; + theme = "robbyrussell"; + plugins = [ + "git" + "sudo" + ]; + }; + }; } diff --git a/hosts/nixos-home/config/bluetooth.nix b/hosts/nixos-home/config/bluetooth.nix index ac970f8..22010cd 100644 --- a/hosts/nixos-home/config/bluetooth.nix +++ b/hosts/nixos-home/config/bluetooth.nix @@ -1,7 +1,6 @@ -{ config, pkgs, ... }: +{ config, pkgs, ... }: { - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = true; - services.blueman.enable = true; + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + services.blueman.enable = true; } - diff --git a/hosts/nixos-home/config/boot.nix b/hosts/nixos-home/config/boot.nix index ad526cf..6431936 100644 --- a/hosts/nixos-home/config/boot.nix +++ b/hosts/nixos-home/config/boot.nix @@ -1,12 +1,12 @@ -{ config, pkgs, ... }: +{ config, pkgs, ... }: { - boot.kernelPackages = pkgs.linuxPackages_latest; - boot.loader.grub = { - enable = true; - device = "nodev"; - efiSupport = true; - useOSProber = true; - configurationLimit = 10; - }; - boot.loader.efi.canTouchEfiVariables = true; + boot.kernelPackages = pkgs.linuxPackages_latest; + boot.loader.grub = { + enable = true; + device = "nodev"; + efiSupport = true; + useOSProber = true; + configurationLimit = 10; + }; + boot.loader.efi.canTouchEfiVariables = true; } diff --git a/hosts/nixos-home/config/drivers_video.nix b/hosts/nixos-home/config/drivers_video.nix index 58e8365..8a83f98 100644 --- a/hosts/nixos-home/config/drivers_video.nix +++ b/hosts/nixos-home/config/drivers_video.nix @@ -1,37 +1,37 @@ -{ config, pkgs, ... }: +{ config, pkgs, ... }: { - # driver proprietaire - services.xserver.videoDrivers = [ "nvidia" ]; + # driver proprietaire + services.xserver.videoDrivers = [ "nvidia" ]; - hardware.graphics = { - enable = true; - enable32Bit = true; # nécessaire pour Steam / jeux 32-bit - extraPackages = with pkgs; [ - intel-media-driver # VAAPI pour l'iGPU Intel (Coffee Lake) - libva-vdpau-driver - libvdpau-va-gl - ]; - }; + hardware.graphics = { + enable = true; + enable32Bit = true; # nécessaire pour Steam / jeux 32-bit + extraPackages = with pkgs; [ + intel-media-driver # VAAPI pour l'iGPU Intel (Coffee Lake) + libva-vdpau-driver + libvdpau-va-gl + ]; + }; - hardware.nvidia = { - modesetting.enable = true; # requis pour Wayland/Hyprland - # dGPU endormi en général, offload sinon - powerManagement.enable = true; - # powerManagement.finegrained = true; # nécessite offload (ci-dessous) - # RTX 2060 = Turing. Le driver "open" fonctionne pour Turing+, mais le - # propriétaire reste plus mature sur cette génération. Garde `open = false`. - open = false; - nvidiaSettings = true; # fournit `nvidia-settings` - package = config.boot.kernelPackages.nvidiaPackages.stable; - prime = { - sync.enable = true; - #offload = { - # enable = true; # dGPU à la demande (meilleure autonomie) - # enableOffloadCmd = true; # fournit la commande `nvidia-offload` - #}; - # nix shell nixpkgs#pciutils -c lspci -D -d ::03xx - intelBusId = "PCI:0:2:0"; - nvidiaBusId = "PCI:1:0:0"; - }; - }; + hardware.nvidia = { + modesetting.enable = true; # requis pour Wayland/Hyprland + # dGPU endormi en général, offload sinon + powerManagement.enable = true; + # powerManagement.finegrained = true; # nécessite offload (ci-dessous) + # RTX 2060 = Turing. Le driver "open" fonctionne pour Turing+, mais le + # propriétaire reste plus mature sur cette génération. Garde `open = false`. + open = false; + nvidiaSettings = true; # fournit `nvidia-settings` + package = config.boot.kernelPackages.nvidiaPackages.stable; + prime = { + sync.enable = true; + #offload = { + # enable = true; # dGPU à la demande (meilleure autonomie) + # enableOffloadCmd = true; # fournit la commande `nvidia-offload` + #}; + # nix shell nixpkgs#pciutils -c lspci -D -d ::03xx + intelBusId = "PCI:0:2:0"; + nvidiaBusId = "PCI:1:0:0"; + }; + }; } diff --git a/hosts/nixos-home/config/extra-services.nix b/hosts/nixos-home/config/extra-services.nix index 610f7b6..b488922 100644 --- a/hosts/nixos-home/config/extra-services.nix +++ b/hosts/nixos-home/config/extra-services.nix @@ -1,30 +1,30 @@ { config, pkgs, ... }: { - # ── Mullvad VPN ── - services.mullvad-vpn = { - enable = true; - package = pkgs.mullvad-vpn; - }; - # ── Steam ── - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = false; - }; - programs.gamemode.enable = true; - programs.gamescope = { - enable = true; - capSysNice = true; - }; - zramSwap = { - enable = true; - algorithm = "zstd"; - memoryPercent = 50; - }; - # ── Intégration KDE/Dolphin ── - services.gvfs.enable = true; - services.tumbler.enable = true; - environment.sessionVariables = { - NIXOS_OZONE_WL = "1"; - }; + # ── Mullvad VPN ── + services.mullvad-vpn = { + enable = true; + package = pkgs.mullvad-vpn; + }; + # ── Steam ── + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = false; + }; + programs.gamemode.enable = true; + programs.gamescope = { + enable = true; + capSysNice = true; + }; + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = 50; + }; + # ── Intégration KDE/Dolphin ── + services.gvfs.enable = true; + services.tumbler.enable = true; + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + }; } diff --git a/hosts/nixos-home/config/fonts.nix b/hosts/nixos-home/config/fonts.nix index c9dd6e2..5e7e263 100644 --- a/hosts/nixos-home/config/fonts.nix +++ b/hosts/nixos-home/config/fonts.nix @@ -1,37 +1,37 @@ { config, pkgs, ... }: { - fonts.packages = with pkgs; [ - # Sans / Source (adobe-source-*-fonts, source-han-sans) - source-sans - source-serif - source-han-sans # adobe-source-han-sans-otc-fonts - source-han-serif + fonts.packages = with pkgs; [ + # Sans / Source (adobe-source-*-fonts, source-han-sans) + source-sans + source-serif + source-han-sans # adobe-source-han-sans-otc-fonts + source-han-serif - # Noto + emoji + CJK (noto-fonts-cjk, noto-fonts-emoji) - noto-fonts - noto-fonts-cjk-sans - noto-fonts-cjk-serif - noto-fonts-color-emoji + # Noto + emoji + CJK (noto-fonts-cjk, noto-fonts-emoji) + noto-fonts + noto-fonts-cjk-sans + noto-fonts-cjk-serif + noto-fonts-color-emoji - # Microsoft / Windows (ttf-ms-fonts + corefonts) - corefonts - vista-fonts # tahoma, etc. (unfree) + # Microsoft / Windows (ttf-ms-fonts + corefonts) + corefonts + vista-fonts # tahoma, etc. (unfree) - # Latin Modern / TeX Gyre (otf-latin-modern, tex-gyre-math) - lmodern - gyre-fonts + # Latin Modern / TeX Gyre (otf-latin-modern, tex-gyre-math) + lmodern + gyre-fonts - # Accessibilité (ttf-luciole) - texlivePackages.luciole + # Accessibilité (ttf-luciole) + texlivePackages.luciole - # Nerd fonts / symboles (ttf-nerd-fonts-symbols, font-awesome, woff2-font-awesome) - nerd-fonts.symbols-only - font-awesome + # Nerd fonts / symboles (ttf-nerd-fonts-symbols, font-awesome, woff2-font-awesome) + nerd-fonts.symbols-only + font-awesome - # Fontes de code utiles - fira-code - jetbrains-mono + # Fontes de code utiles + fira-code + jetbrains-mono - dejavu_fonts - liberation_ttf - ]; + dejavu_fonts + liberation_ttf + ]; } diff --git a/hosts/nixos-home/config/hyprland.nix b/hosts/nixos-home/config/hyprland.nix index a2dadc6..ea69b4e 100644 --- a/hosts/nixos-home/config/hyprland.nix +++ b/hosts/nixos-home/config/hyprland.nix @@ -1,15 +1,15 @@ { pkgs, inputs, ... }: { - programs.hyprland = { - enable = true; - package = inputs.hyprland.packages.${pkgs.system}.hyprland; - }; + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + }; - # Portails XDG (captures d'écran, partage d'écran, file pickers Wayland) - xdg.portal = { - enable = true; - extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; - }; + # Portails XDG (captures d'écran, partage d'écran, file pickers Wayland) + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; + }; - security.polkit.enable = true; + security.polkit.enable = true; } diff --git a/hosts/nixos-home/config/language.nix b/hosts/nixos-home/config/language.nix index 812ab0d..2493e47 100644 --- a/hosts/nixos-home/config/language.nix +++ b/hosts/nixos-home/config/language.nix @@ -1,20 +1,19 @@ { config, pkgs, ... }: { - time.timeZone = "Europe/Paris"; - - i18n.defaultLocale = "fr_FR.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "fr_FR.UTF-8"; - LC_IDENTIFICATION = "fr_FR.UTF-8"; - LC_MEASUREMENT = "fr_FR.UTF-8"; - LC_MONETARY = "fr_FR.UTF-8"; - LC_NAME = "fr_FR.UTF-8"; - LC_NUMERIC = "fr_FR.UTF-8"; - LC_PAPER = "fr_FR.UTF-8"; - LC_TELEPHONE = "fr_FR.UTF-8"; - LC_TIME = "fr_FR.UTF-8"; - }; - console = { - keyMap = "fr-latin1"; - }; + time.timeZone = "Europe/Paris"; + i18n.defaultLocale = "fr_FR.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "fr_FR.UTF-8"; + LC_IDENTIFICATION = "fr_FR.UTF-8"; + LC_MEASUREMENT = "fr_FR.UTF-8"; + LC_MONETARY = "fr_FR.UTF-8"; + LC_NAME = "fr_FR.UTF-8"; + LC_NUMERIC = "fr_FR.UTF-8"; + LC_PAPER = "fr_FR.UTF-8"; + LC_TELEPHONE = "fr_FR.UTF-8"; + LC_TIME = "fr_FR.UTF-8"; + }; + console = { + keyMap = "fr-latin1"; + }; } diff --git a/hosts/nixos-home/config/power_management.nix b/hosts/nixos-home/config/power_management.nix index 3255819..6606203 100644 --- a/hosts/nixos-home/config/power_management.nix +++ b/hosts/nixos-home/config/power_management.nix @@ -1,7 +1,7 @@ { config, pkgs, ... }: { - services.tlp.enable = true; - services.power-profiles-daemon.enable = false; - services.asusd.enable = true; - services.supergfxd.enable = false; + services.tlp.enable = true; + services.power-profiles-daemon.enable = false; + services.asusd.enable = true; + services.supergfxd.enable = false; } diff --git a/hosts/nixos-home/config/sound.nix b/hosts/nixos-home/config/sound.nix index fe16eba..cadc3a5 100644 --- a/hosts/nixos-home/config/sound.nix +++ b/hosts/nixos-home/config/sound.nix @@ -1,12 +1,12 @@ { config, pkgs, ... }: { - services.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - }; + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; } diff --git a/hosts/nixos-home/config/stylix.nix b/hosts/nixos-home/config/stylix.nix index 8c16d6d..586bc6b 100644 --- a/hosts/nixos-home/config/stylix.nix +++ b/hosts/nixos-home/config/stylix.nix @@ -1,30 +1,29 @@ { pkgs, ... }: { - stylix = { - enable = true; - targets.gtksourceview.enable = false; - base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; - polarity = "dark"; + stylix = { + enable = true; + targets.gtksourceview.enable = false; + base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; + polarity = "dark"; - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Ice"; - size = 24; - }; - - fonts = { - monospace = { - package = pkgs.nerd-fonts.jetbrains-mono; - name = "Noto Sans Mono"; - }; - sansSerif = { - package = pkgs.texlivePackages.luciole; - name = "Luciole"; - }; - sizes = { - applications = 11; - terminal = 12; - }; - }; - }; + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + size = 24; + }; + fonts = { + monospace = { + package = pkgs.nerd-fonts.jetbrains-mono; + name = "Noto Sans Mono"; + }; + sansSerif = { + package = pkgs.texlivePackages.luciole; + name = "Luciole"; + }; + sizes = { + applications = 11; + terminal = 12; + }; + }; + }; } diff --git a/hosts/nixos-home/config/system_packages.nix b/hosts/nixos-home/config/system_packages.nix index a4d6072..db1a7e0 100644 --- a/hosts/nixos-home/config/system_packages.nix +++ b/hosts/nixos-home/config/system_packages.nix @@ -1,23 +1,22 @@ { config, pkgs, ... }: { - environment.systemPackages = with pkgs; [ - git - vim - gnumake - gcc - wget - curl - unzip - tree - ripgrep - translate-shell - xclip - powertop - brightnessctl - ntfs3g - pciutils - usbutils - inxi - ]; + environment.systemPackages = with pkgs; [ + git + vim + gnumake + gcc + wget + curl + unzip + tree + ripgrep + translate-shell + xclip + powertop + brightnessctl + ntfs3g + pciutils + usbutils + inxi + ]; } - diff --git a/hosts/nixos-home/config/system_saves.nix b/hosts/nixos-home/config/system_saves.nix index 5fa1c8e..5ddae6c 100644 --- a/hosts/nixos-home/config/system_saves.nix +++ b/hosts/nixos-home/config/system_saves.nix @@ -1,10 +1,8 @@ - { config, pkgs, ... }: +{ config, pkgs, ... }: { - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; } - - diff --git a/hosts/nixos-home/config/system_services.nix b/hosts/nixos-home/config/system_services.nix index 9e68e7c..5ac61f9 100644 --- a/hosts/nixos-home/config/system_services.nix +++ b/hosts/nixos-home/config/system_services.nix @@ -1,18 +1,18 @@ { config, pkgs, ... }: { - networking = { - hostName = "nixos-home"; - networkmanager.enable = true; - # open ports manually if needed - firewall.enable = true; - }; - services = { - xserver.xkb = { - layout = "fr"; - variant = ""; - }; - printing.enable = true; - openssh.enable = false; - flatpak.enable = true; - }; + networking = { + hostName = "nixos-home"; + networkmanager.enable = true; + # open ports manually if needed + firewall.enable = true; + }; + services = { + xserver.xkb = { + layout = "fr"; + variant = ""; + }; + printing.enable = true; + openssh.enable = false; + flatpak.enable = true; + }; } diff --git a/hosts/nixos-home/config/user.nix b/hosts/nixos-home/config/user.nix index e9be2d9..14bc130 100644 --- a/hosts/nixos-home/config/user.nix +++ b/hosts/nixos-home/config/user.nix @@ -1,10 +1,13 @@ { config, pkgs, ... }: { - users.users.afoucaultc = { - isNormalUser = true; - description = "afoucaultc"; - extraGroups = [ "networkmanager" "wheel" ]; - shell = pkgs.zsh; - }; - programs.zsh.enable = true; + users.users.afoucaultc = { + isNormalUser = true; + description = "afoucaultc"; + extraGroups = [ + "networkmanager" + "wheel" + ]; + shell = pkgs.zsh; + }; + programs.zsh.enable = true; } diff --git a/hosts/nixos-home/configuration.nix b/hosts/nixos-home/configuration.nix index 68045e6..a635c62 100644 --- a/hosts/nixos-home/configuration.nix +++ b/hosts/nixos-home/configuration.nix @@ -1,32 +1,40 @@ -{ config, pkgs, inputs, ... }: { - imports = [ - # faire nixos-generate-config dans le bon dossier - ./hardware-configuration.nix - ./config/bluetooth.nix - ./config/boot.nix - ./config/drivers_video.nix - ./config/extra-services.nix - ./config/fonts.nix - ./config/hyprland.nix - ./config/language.nix - ./config/power_management.nix - ./config/sound.nix - ./config/stylix.nix - ./config/system_packages.nix - ./config/system_saves.nix - ./config/system_services.nix - ./config/user.nix - # profil nixos pour mon ordi portable - # nécessite l'input nixos-hardware dans flake.nix. - inputs.nixos-hardware.nixosModules.common-cpu-intel - inputs.nixos-hardware.nixosModules.common-pc-laptop - inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd - ]; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - nixpkgs.config.allowUnfree = true; - #nixpkgs.config.permittedInsecurePackages = [ - # "pnpm-10.29.2" - #]; - system.stateVersion = "25.11"; + config, + pkgs, + inputs, + ... +}: +{ + imports = [ + # faire nixos-generate-config dans le bon dossier + ./hardware-configuration.nix + ./config/bluetooth.nix + ./config/boot.nix + ./config/drivers_video.nix + ./config/extra-services.nix + ./config/fonts.nix + ./config/hyprland.nix + ./config/language.nix + ./config/power_management.nix + ./config/sound.nix + ./config/stylix.nix + ./config/system_packages.nix + ./config/system_saves.nix + ./config/system_services.nix + ./config/user.nix + # profil nixos pour mon ordi portable + # nécessite l'input nixos-hardware dans flake.nix. + inputs.nixos-hardware.nixosModules.common-cpu-intel + inputs.nixos-hardware.nixosModules.common-pc-laptop + inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd + ]; + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; + nixpkgs.config.allowUnfree = true; + #nixpkgs.config.permittedInsecurePackages = [ + # "pnpm-10.29.2" + #]; + system.stateVersion = "25.11"; } diff --git a/hosts/nixos-home/hardware-configuration.nix b/hosts/nixos-home/hardware-configuration.nix index 81ba249..2a09704 100644 --- a/hosts/nixos-home/hardware-configuration.nix +++ b/hosts/nixos-home/hardware-configuration.nix @@ -1,36 +1,48 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; - - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + config, + lib, + pkgs, + modulesPath, + ... +}: +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/mapper/luks-eddcceff-290e-478d-baef-3fdc0f47a220"; - fsType = "ext4"; - }; - - boot.initrd.luks.devices."luks-eddcceff-290e-478d-baef-3fdc0f47a220".device = "/dev/disk/by-uuid/eddcceff-290e-478d-baef-3fdc0f47a220"; - boot.initrd.luks.devices."luks-5f5524e7-c2c0-4cbd-91f2-37b8fe69a62c".device = "/dev/disk/by-uuid/5f5524e7-c2c0-4cbd-91f2-37b8fe69a62c"; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/2A23-C86E"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - swapDevices = - [ { device = "/dev/mapper/luks-5f5524e7-c2c0-4cbd-91f2-37b8fe69a62c"; } + fileSystems."/" = { + device = "/dev/mapper/luks-eddcceff-290e-478d-baef-3fdc0f47a220"; + fsType = "ext4"; + }; + boot.initrd.luks.devices."luks-eddcceff-290e-478d-baef-3fdc0f47a220".device = + "/dev/disk/by-uuid/eddcceff-290e-478d-baef-3fdc0f47a220"; + boot.initrd.luks.devices."luks-5f5524e7-c2c0-4cbd-91f2-37b8fe69a62c".device = + "/dev/disk/by-uuid/5f5524e7-c2c0-4cbd-91f2-37b8fe69a62c"; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/2A23-C86E"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" ]; - + }; + swapDevices = [ + { device = "/dev/mapper/luks-5f5524e7-c2c0-4cbd-91f2-37b8fe69a62c"; } + ]; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/hosts/nixos-laptop/config/bluetooth.nix b/hosts/nixos-laptop/config/bluetooth.nix index ac970f8..22010cd 100644 --- a/hosts/nixos-laptop/config/bluetooth.nix +++ b/hosts/nixos-laptop/config/bluetooth.nix @@ -1,7 +1,6 @@ -{ config, pkgs, ... }: +{ config, pkgs, ... }: { - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = true; - services.blueman.enable = true; + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + services.blueman.enable = true; } - diff --git a/hosts/nixos-laptop/config/boot.nix b/hosts/nixos-laptop/config/boot.nix index 66be279..6fd9b0f 100644 --- a/hosts/nixos-laptop/config/boot.nix +++ b/hosts/nixos-laptop/config/boot.nix @@ -1,13 +1,12 @@ { config, pkgs, ... }: { - boot.kernelPackages = pkgs.linuxPackages; - - boot.loader.grub = { - enable = true; - device = "nodev"; - efiSupport = true; - useOSProber = true; - configurationLimit = 5; - }; - boot.loader.efi.canTouchEfiVariables = true; + boot.kernelPackages = pkgs.linuxPackages; + boot.loader.grub = { + enable = true; + device = "nodev"; + efiSupport = true; + useOSProber = true; + configurationLimit = 5; + }; + boot.loader.efi.canTouchEfiVariables = true; } diff --git a/hosts/nixos-laptop/config/drivers_video.nix b/hosts/nixos-laptop/config/drivers_video.nix index 565c227..cd2e801 100644 --- a/hosts/nixos-laptop/config/drivers_video.nix +++ b/hosts/nixos-laptop/config/drivers_video.nix @@ -1,15 +1,14 @@ { config, pkgs, ... }: { - hardware.graphics = { - enable = true; - extraPackages = with pkgs; [ - intel-media-driver # VAAPI moderne pour Skylake (iHD) - intel-vaapi-driver # ancien driver i965 (fallback) - libvdpau-va-gl - ]; - }; - - environment.sessionVariables = { - LIBVA_DRIVER_NAME = "iHD"; - }; + hardware.graphics = { + enable = true; + extraPackages = with pkgs; [ + intel-media-driver # VAAPI moderne pour Skylake (iHD) + intel-vaapi-driver # ancien driver i965 (fallback) + libvdpau-va-gl + ]; + }; + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "iHD"; + }; } diff --git a/hosts/nixos-laptop/config/extra-services.nix b/hosts/nixos-laptop/config/extra-services.nix index 3df3c93..b8897a8 100644 --- a/hosts/nixos-laptop/config/extra-services.nix +++ b/hosts/nixos-laptop/config/extra-services.nix @@ -1,14 +1,14 @@ { config, pkgs, ... }: { - # ── Mullvad VPN ── (remplace mullvad-vpn-bin de l'AUR) - services.mullvad-vpn = { - enable = true; - package = pkgs.mullvad-vpn; - }; - # ── Intégration gestionnaire de fichiers (miniatures, montage…) ── - services.gvfs.enable = true; - services.tumbler.enable = true; - environment.sessionVariables = { - NIXOS_OZONE_WL = "1"; - }; + # ── Mullvad VPN ── (remplace mullvad-vpn-bin de l'AUR) + services.mullvad-vpn = { + enable = true; + package = pkgs.mullvad-vpn; + }; + # ── Intégration gestionnaire de fichiers (miniatures, montage…) ── + services.gvfs.enable = true; + services.tumbler.enable = true; + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + }; } diff --git a/hosts/nixos-laptop/config/fonts.nix b/hosts/nixos-laptop/config/fonts.nix index c9dd6e2..7a11859 100644 --- a/hosts/nixos-laptop/config/fonts.nix +++ b/hosts/nixos-laptop/config/fonts.nix @@ -1,37 +1,30 @@ { config, pkgs, ... }: { - fonts.packages = with pkgs; [ - # Sans / Source (adobe-source-*-fonts, source-han-sans) - source-sans - source-serif - source-han-sans # adobe-source-han-sans-otc-fonts - source-han-serif - - # Noto + emoji + CJK (noto-fonts-cjk, noto-fonts-emoji) - noto-fonts - noto-fonts-cjk-sans - noto-fonts-cjk-serif - noto-fonts-color-emoji - - # Microsoft / Windows (ttf-ms-fonts + corefonts) - corefonts - vista-fonts # tahoma, etc. (unfree) - - # Latin Modern / TeX Gyre (otf-latin-modern, tex-gyre-math) - lmodern - gyre-fonts - - # Accessibilité (ttf-luciole) - texlivePackages.luciole - - # Nerd fonts / symboles (ttf-nerd-fonts-symbols, font-awesome, woff2-font-awesome) - nerd-fonts.symbols-only - font-awesome - - # Fontes de code utiles - fira-code - jetbrains-mono - - dejavu_fonts - liberation_ttf - ]; + fonts.packages = with pkgs; [ + # Sans / Source (adobe-source-*-fonts, source-han-sans) + source-sans + source-serif + source-han-sans # adobe-source-han-sans-otc-fonts + source-han-serif + # Noto + emoji + CJK (noto-fonts-cjk, noto-fonts-emoji) + noto-fonts + noto-fonts-cjk-sans + noto-fonts-cjk-serif + noto-fonts-color-emoji + # Microsoft / Windows (ttf-ms-fonts + corefonts) + corefonts + vista-fonts # tahoma, etc. (unfree) + # Latin Modern / TeX Gyre (otf-latin-modern, tex-gyre-math) + lmodern + gyre-fonts + # Accessibilité (ttf-luciole) + texlivePackages.luciole + # Nerd fonts / symboles (ttf-nerd-fonts-symbols, font-awesome, woff2-font-awesome) + nerd-fonts.symbols-only + font-awesome + # Fontes de code utiles + fira-code + jetbrains-mono + dejavu_fonts + liberation_ttf + ]; } diff --git a/hosts/nixos-laptop/config/hyprland.nix b/hosts/nixos-laptop/config/hyprland.nix index a2dadc6..2572dc4 100644 --- a/hosts/nixos-laptop/config/hyprland.nix +++ b/hosts/nixos-laptop/config/hyprland.nix @@ -1,15 +1,13 @@ { pkgs, inputs, ... }: { - programs.hyprland = { - enable = true; - package = inputs.hyprland.packages.${pkgs.system}.hyprland; - }; - - # Portails XDG (captures d'écran, partage d'écran, file pickers Wayland) - xdg.portal = { - enable = true; - extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; - }; - - security.polkit.enable = true; + programs.hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + }; + # Portails XDG (captures d'écran, partage d'écran, file pickers Wayland) + xdg.portal = { + enable = true; + extraPortals = with pkgs; [ xdg-desktop-portal-gtk ]; + }; + security.polkit.enable = true; } diff --git a/hosts/nixos-laptop/config/language.nix b/hosts/nixos-laptop/config/language.nix index 812ab0d..2493e47 100644 --- a/hosts/nixos-laptop/config/language.nix +++ b/hosts/nixos-laptop/config/language.nix @@ -1,20 +1,19 @@ { config, pkgs, ... }: { - time.timeZone = "Europe/Paris"; - - i18n.defaultLocale = "fr_FR.UTF-8"; - i18n.extraLocaleSettings = { - LC_ADDRESS = "fr_FR.UTF-8"; - LC_IDENTIFICATION = "fr_FR.UTF-8"; - LC_MEASUREMENT = "fr_FR.UTF-8"; - LC_MONETARY = "fr_FR.UTF-8"; - LC_NAME = "fr_FR.UTF-8"; - LC_NUMERIC = "fr_FR.UTF-8"; - LC_PAPER = "fr_FR.UTF-8"; - LC_TELEPHONE = "fr_FR.UTF-8"; - LC_TIME = "fr_FR.UTF-8"; - }; - console = { - keyMap = "fr-latin1"; - }; + time.timeZone = "Europe/Paris"; + i18n.defaultLocale = "fr_FR.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "fr_FR.UTF-8"; + LC_IDENTIFICATION = "fr_FR.UTF-8"; + LC_MEASUREMENT = "fr_FR.UTF-8"; + LC_MONETARY = "fr_FR.UTF-8"; + LC_NAME = "fr_FR.UTF-8"; + LC_NUMERIC = "fr_FR.UTF-8"; + LC_PAPER = "fr_FR.UTF-8"; + LC_TELEPHONE = "fr_FR.UTF-8"; + LC_TIME = "fr_FR.UTF-8"; + }; + console = { + keyMap = "fr-latin1"; + }; } diff --git a/hosts/nixos-laptop/config/low-ram.nix b/hosts/nixos-laptop/config/low-ram.nix index dd07aff..98b6a29 100644 --- a/hosts/nixos-laptop/config/low-ram.nix +++ b/hosts/nixos-laptop/config/low-ram.nix @@ -1,71 +1,75 @@ -{ config, pkgs, lib, ... }: { - # ───────────────────────────────────────────────────────────── - # Machine à faible RAM (4 GiB) : on privilégie TOUJOURS les - # binaires pré-compilés (caches) plutôt que la compilation locale. - # ───────────────────────────────────────────────────────────── - nix.settings = { - experimental-features = [ "nix-command" "flakes" ]; - - # Caches binaires : on récupère un maximum de paquets déjà - # compilés pour éviter de compiler sur cette machine. - substituters = [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-substituters = [ - "https://cache.nixos.org" - "https://hyprland.cachix.org" - "https://nix-community.cachix.org" - ]; - trusted-public-keys = [ - "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" - "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" - ]; - trusted-users = [ "root" "@wheel" ]; - - # Toujours interroger les caches, ne jamais partir du principe - # qu'un paquet doit être compilé localement. - builders-use-substitutes = true; - fallback = true; # si un cache tombe, on tente ailleurs - connect-timeout = 10; - - # Limiter la pression mémoire pendant la construction : - # peu de jobs en parallèle, sinon 4 Gio saturent vite. - max-jobs = 1; # une dérivation à la fois - cores = 2; # les 2 cœurs du i5-6200U par job - }; - - # Auto-optimisation du store (déduplication) pour économiser le disque. - nix.settings.auto-optimise-store = true; - - # ───────────────────────────────────────────────────────────── - # zram : swap compressé en RAM. Indispensable avec 4 Gio, à la - # fois pour l'usage courant et pour absorber les pics du rebuild. - # ───────────────────────────────────────────────────────────── - zramSwap = { - enable = true; - algorithm = "zstd"; - memoryPercent = 150; # jusqu'à 1.5x la RAM (zstd compresse ~3:1) - priority = 100; - }; - - # Le noyau peut « swaper » agressivement vers zram (rapide) plutôt - # que de tuer des process pendant un build. - boot.kernel.sysctl = { - "vm.swappiness" = 180; # favorise zram - "vm.watermark_boost_factor" = 0; - "vm.watermark_scale_factor" = 125; - "vm.page-cluster" = 0; # recommandé avec zram - }; - - # earlyoom : tue proprement le process le plus gourmand avant que la - # machine ne se fige totalement (utile si un build déborde malgré tout). - services.earlyoom = { - enable = true; - freeMemThreshold = 5; # agit quand il reste < 5% de RAM libre - freeSwapThreshold = 5; - }; + config, + pkgs, + lib, + ... +}: +{ + # ───────────────────────────────────────────────────────────── + # Machine à faible RAM (4 GiB) : on privilégie TOUJOURS les + # binaires pré-compilés (caches) plutôt que la compilation locale. + # ───────────────────────────────────────────────────────────── + nix.settings = { + experimental-features = [ + "nix-command" + "flakes" + ]; + # Caches binaires : on récupère un maximum de paquets déjà + # compilés pour éviter de compiler sur cette machine. + substituters = [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-substituters = [ + "https://cache.nixos.org" + "https://hyprland.cachix.org" + "https://nix-community.cachix.org" + ]; + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + ]; + trusted-users = [ + "root" + "@wheel" + ]; + # Toujours interroger les caches, ne jamais partir du principe + # qu'un paquet doit être compilé localement. + builders-use-substitutes = true; + fallback = true; # si un cache tombe, on tente ailleurs + connect-timeout = 10; + # Limiter la pression mémoire pendant la construction : + # peu de jobs en parallèle, sinon 4 Gio saturent vite. + max-jobs = 1; # une dérivation à la fois + cores = 2; # les 2 cœurs du i5-6200U par job + }; + # Auto-optimisation du store (déduplication) pour économiser le disque. + nix.settings.auto-optimise-store = true; + # ───────────────────────────────────────────────────────────── + # zram : swap compressé en RAM. Indispensable avec 4 Gio, à la + # fois pour l'usage courant et pour absorber les pics du rebuild. + # ───────────────────────────────────────────────────────────── + zramSwap = { + enable = true; + algorithm = "zstd"; + memoryPercent = 150; # jusqu'à 1.5x la RAM (zstd compresse ~3:1) + priority = 100; + }; + # Le noyau peut « swaper » agressivement vers zram (rapide) plutôt + # que de tuer des process pendant un build. + boot.kernel.sysctl = { + "vm.swappiness" = 180; # favorise zram + "vm.watermark_boost_factor" = 0; + "vm.watermark_scale_factor" = 125; + "vm.page-cluster" = 0; # recommandé avec zram + }; + # earlyoom : tue proprement le process le plus gourmand avant que la + # machine ne se fige totalement (utile si un build déborde malgré tout). + services.earlyoom = { + enable = true; + freeMemThreshold = 5; # agit quand il reste < 5% de RAM libre + freeSwapThreshold = 5; + }; } diff --git a/hosts/nixos-laptop/config/power_management.nix b/hosts/nixos-laptop/config/power_management.nix index dcef6df..ed0f135 100644 --- a/hosts/nixos-laptop/config/power_management.nix +++ b/hosts/nixos-laptop/config/power_management.nix @@ -1,20 +1,19 @@ { config, pkgs, ... }: { - # ThinkPad E560 : TLP pour l'autonomie. Pas d'asusd (spécifique ASUS). - services.tlp = { - enable = true; - settings = { - CPU_SCALING_GOVERNOR_ON_AC = "performance"; - CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; - CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; - # Seuils de charge batterie (préserve la batterie). - # Fonctionne sur la plupart des ThinkPad via tp_smapi/acpi. - START_CHARGE_THRESH_BAT0 = 40; - STOP_CHARGE_THRESH_BAT0 = 80; - }; - }; - services.power-profiles-daemon.enable = false; - - # Économie d'énergie supplémentaire. - powerManagement.enable = true; + # ThinkPad E560 : TLP pour l'autonomie. Pas d'asusd (spécifique ASUS). + services.tlp = { + enable = true; + settings = { + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + # Seuils de charge batterie (préserve la batterie). + # Fonctionne sur la plupart des ThinkPad via tp_smapi/acpi. + START_CHARGE_THRESH_BAT0 = 40; + STOP_CHARGE_THRESH_BAT0 = 80; + }; + }; + services.power-profiles-daemon.enable = false; + # Économie d'énergie supplémentaire. + powerManagement.enable = true; } diff --git a/hosts/nixos-laptop/config/sound.nix b/hosts/nixos-laptop/config/sound.nix index fe16eba..cadc3a5 100644 --- a/hosts/nixos-laptop/config/sound.nix +++ b/hosts/nixos-laptop/config/sound.nix @@ -1,12 +1,12 @@ { config, pkgs, ... }: { - services.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - }; + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; } diff --git a/hosts/nixos-laptop/config/stylix.nix b/hosts/nixos-laptop/config/stylix.nix index 8c16d6d..3fdc248 100644 --- a/hosts/nixos-laptop/config/stylix.nix +++ b/hosts/nixos-laptop/config/stylix.nix @@ -1,30 +1,28 @@ { pkgs, ... }: { - stylix = { - enable = true; - targets.gtksourceview.enable = false; - base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; - polarity = "dark"; - - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Ice"; - size = 24; - }; - - fonts = { - monospace = { - package = pkgs.nerd-fonts.jetbrains-mono; - name = "Noto Sans Mono"; - }; - sansSerif = { - package = pkgs.texlivePackages.luciole; - name = "Luciole"; - }; - sizes = { - applications = 11; - terminal = 12; - }; - }; - }; + stylix = { + enable = true; + targets.gtksourceview.enable = false; + base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; + polarity = "dark"; + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + size = 24; + }; + fonts = { + monospace = { + package = pkgs.nerd-fonts.jetbrains-mono; + name = "Noto Sans Mono"; + }; + sansSerif = { + package = pkgs.texlivePackages.luciole; + name = "Luciole"; + }; + sizes = { + applications = 11; + terminal = 12; + }; + }; + }; } diff --git a/hosts/nixos-laptop/config/system_packages.nix b/hosts/nixos-laptop/config/system_packages.nix index a4d6072..db1a7e0 100644 --- a/hosts/nixos-laptop/config/system_packages.nix +++ b/hosts/nixos-laptop/config/system_packages.nix @@ -1,23 +1,22 @@ { config, pkgs, ... }: { - environment.systemPackages = with pkgs; [ - git - vim - gnumake - gcc - wget - curl - unzip - tree - ripgrep - translate-shell - xclip - powertop - brightnessctl - ntfs3g - pciutils - usbutils - inxi - ]; + environment.systemPackages = with pkgs; [ + git + vim + gnumake + gcc + wget + curl + unzip + tree + ripgrep + translate-shell + xclip + powertop + brightnessctl + ntfs3g + pciutils + usbutils + inxi + ]; } - diff --git a/hosts/nixos-laptop/config/system_saves.nix b/hosts/nixos-laptop/config/system_saves.nix index 5fa1c8e..5ddae6c 100644 --- a/hosts/nixos-laptop/config/system_saves.nix +++ b/hosts/nixos-laptop/config/system_saves.nix @@ -1,10 +1,8 @@ - { config, pkgs, ... }: +{ config, pkgs, ... }: { - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 30d"; - }; + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 30d"; + }; } - - diff --git a/hosts/nixos-laptop/config/system_services.nix b/hosts/nixos-laptop/config/system_services.nix index b7eb7b4..560f3ab 100644 --- a/hosts/nixos-laptop/config/system_services.nix +++ b/hosts/nixos-laptop/config/system_services.nix @@ -1,19 +1,19 @@ { config, pkgs, ... }: { - networking = { - hostName = "nixos-laptop"; - networkmanager.enable = true; - # ouvrir des ports manuellement si besoin - firewall.enable = true; - }; - services = { - xserver.xkb = { - layout = "fr"; - variant = ""; - }; - printing.enable = true; - openssh.enable = false; - flatpak.enable = true; - fprintd.enable = true; - }; + networking = { + hostName = "nixos-laptop"; + networkmanager.enable = true; + # ouvrir des ports manuellement si besoin + firewall.enable = true; + }; + services = { + xserver.xkb = { + layout = "fr"; + variant = ""; + }; + printing.enable = true; + openssh.enable = false; + flatpak.enable = true; + fprintd.enable = true; + }; } diff --git a/hosts/nixos-laptop/config/user.nix b/hosts/nixos-laptop/config/user.nix index e9be2d9..14bc130 100644 --- a/hosts/nixos-laptop/config/user.nix +++ b/hosts/nixos-laptop/config/user.nix @@ -1,10 +1,13 @@ { config, pkgs, ... }: { - users.users.afoucaultc = { - isNormalUser = true; - description = "afoucaultc"; - extraGroups = [ "networkmanager" "wheel" ]; - shell = pkgs.zsh; - }; - programs.zsh.enable = true; + users.users.afoucaultc = { + isNormalUser = true; + description = "afoucaultc"; + extraGroups = [ + "networkmanager" + "wheel" + ]; + shell = pkgs.zsh; + }; + programs.zsh.enable = true; } diff --git a/hosts/nixos-laptop/configuration.nix b/hosts/nixos-laptop/configuration.nix index 7b9a6b3..6908ee4 100644 --- a/hosts/nixos-laptop/configuration.nix +++ b/hosts/nixos-laptop/configuration.nix @@ -1,32 +1,37 @@ -{ config, pkgs, inputs, ... }: { - imports = [ - # généré à l'installation avec nixos-generate-config - ./hardware-configuration.nix - ./config/bluetooth.nix - ./config/boot.nix - ./config/drivers_video.nix - ./config/extra-services.nix - ./config/fonts.nix - ./config/hyprland.nix - ./config/language.nix - ./config/low-ram.nix - ./config/power_management.nix - ./config/sound.nix - ./config/stylix.nix - ./config/system_packages.nix - ./config/system_saves.nix - ./config/system_services.nix - ./config/user.nix - # profil nixos-hardware pour le ThinkPad E560 (Skylake, i5-6200U) - # nécessite l'input nixos-hardware dans flake.nix. - inputs.nixos-hardware.nixosModules.common-cpu-intel - inputs.nixos-hardware.nixosModules.common-pc-laptop - inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd - ]; - nixpkgs.config.allowUnfree = true; - system.stateVersion = "25.11"; - nixpkgs.config.permittedInsecurePackages = [ - "electron-39.8.10" - ]; + config, + pkgs, + inputs, + ... +}: +{ + imports = [ + # généré à l'installation avec nixos-generate-config + ./hardware-configuration.nix + ./config/bluetooth.nix + ./config/boot.nix + ./config/drivers_video.nix + ./config/extra-services.nix + ./config/fonts.nix + ./config/hyprland.nix + ./config/language.nix + ./config/low-ram.nix + ./config/power_management.nix + ./config/sound.nix + ./config/stylix.nix + ./config/system_packages.nix + ./config/system_saves.nix + ./config/system_services.nix + ./config/user.nix + # profil nixos-hardware pour le ThinkPad E560 (Skylake, i5-6200U) + # nécessite l'input nixos-hardware dans flake.nix. + inputs.nixos-hardware.nixosModules.common-cpu-intel + inputs.nixos-hardware.nixosModules.common-pc-laptop + inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd + ]; + nixpkgs.config.allowUnfree = true; + system.stateVersion = "25.11"; + nixpkgs.config.permittedInsecurePackages = [ + "electron-39.8.10" + ]; } diff --git a/hosts/nixos-laptop/hardware-configuration.nix b/hosts/nixos-laptop/hardware-configuration.nix index 0ccfda3..7a15194 100644 --- a/hosts/nixos-laptop/hardware-configuration.nix +++ b/hosts/nixos-laptop/hardware-configuration.nix @@ -1,32 +1,54 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "sd_mod" "sr_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "usb_storage" + "sd_mod" + "sr_mod" + "rtsx_pci_sdmmc" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/mapper/cryptroot"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/mapper/cryptroot"; + fsType = "ext4"; + }; - boot.initrd.luks.devices."cryptroot".device = "/dev/disk/by-uuid/b773a1eb-b293-4498-9090-a26843bdcd5f"; + boot.initrd.luks.devices."cryptroot".device = + "/dev/disk/by-uuid/b773a1eb-b293-4498-9090-a26843bdcd5f"; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/6EA9-3F92"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/6EA9-3F92"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" + ]; + }; - swapDevices = [ { device = "/swapfile"; size = 8192; } ]; + swapDevices = [ + { + device = "/swapfile"; + size = 8192; + } + ]; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;