Base of Nix Configuration

This commit is contained in:
2026-01-24 15:52:13 +01:00
commit 02082e2dd8
45 changed files with 3059 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
{
shell = import ./services/shell.nix;
gnome = import ./services/gnome.nix;
zed = import ./submodules/zed.nix;
}
+4
View File
@@ -0,0 +1,4 @@
{
shell = import ../submodules/gnome-shell.nix;
apps = import ../submodules/gnome-apps.nix;
}
+6
View File
@@ -0,0 +1,6 @@
{
zsh = import ../submodules/zsh.nix;
nh = import ../submodules/nh.nix;
git = import ../submodules/git.nix;
docker = import ../submodules/docker.nix;
}
+17
View File
@@ -0,0 +1,17 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.shell.docker;
in
{
options.within.shell.docker = {
enable = mkEnableOption "System docker service";
};
config = mkIf cfg.enable {
virtualisation.docker = {
enable = true;
};
};
}
+26
View File
@@ -0,0 +1,26 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.shell.git;
in
{
options.within.shell.git = {
enable = mkEnableOption "System git service";
};
config = mkIf cfg.enable {
programs.git = {
enable = true;
config = {
init.defaultBranch = "main";
user = {
name = "Laurent Gueret";
email = "gueretlob@icloud.com";
};
};
};
programs.ssh.enableAskPassword = false;
};
}
+34
View File
@@ -0,0 +1,34 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.within.gnome.apps;
in
{
options.within.gnome.apps = {
enable = mkEnableOption "System gnome apps service";
};
config = mkIf cfg.enable {
environment = {
systemPackages =
with pkgs;
[
# Gnome media apps
papers
celluloid
]
++ [
# Gnome files explorer
nautilus
];
};
services.gvfs.enable = true; # SMB, FTP, ... access
};
}
+49
View File
@@ -0,0 +1,49 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.within.gnome.shell;
in
{
options.within.gnome.shell = {
enable = mkEnableOption "System gnome shell service";
};
config = mkIf cfg.enable {
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
services.gnome.games.enable = false;
services.gnome.core-apps.enable = false;
services.gnome.core-developer-tools.enable = false;
environment = {
gnome.excludePackages = with pkgs; [
gnome-tour
gnome-user-docs
];
systemPackages = with pkgs; [
# Gnome terminal
ghostty
# Gnome icons
papirus-icon-theme
# Gnome Extensions
gnomeExtensions.vitals
gnomeExtensions.paperwm
gnomeExtensions.app-hider
gnomeExtensions.dash-to-panel
];
};
};
}
+19
View File
@@ -0,0 +1,19 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.shell.nh;
in
{
options.within.shell.nh = {
enable = mkEnableOption "System nh service";
};
config = mkIf cfg.enable {
programs.nh = {
enable = true;
clean.enable = true;
clean.extraArgs = "--keep-since 2d --keep 3";
};
};
}
+25
View File
@@ -0,0 +1,25 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.shell.zsh;
in
{
options.within.shell.zsh = {
enable = mkEnableOption "System zsh service";
};
config = mkIf cfg.enable {
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestions.enable = true;
syntaxHighlighting.enable = true;
};
programs.neovim = {
enable = true;
defaultEditor = true;
};
};
}
+6
View File
@@ -0,0 +1,6 @@
# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module).
# These should be stuff you would like to share with others, not your personal configurations.
{
# List your module files here
# my-module = import ./my-module.nix;
}
+7
View File
@@ -0,0 +1,7 @@
{
boot = import ./services/boot.nix;
graphics = import ./services/graphics.nix;
networks = import ./services/networks.nix;
audio = import ./services/audio.nix;
keyboard = import ./services/keyboard.nix;
}
+3
View File
@@ -0,0 +1,3 @@
{
pipewire = import ../submodules/pipewire.nix;
}
+4
View File
@@ -0,0 +1,4 @@
{
systemd = import ../submodules/systemd-boot.nix;
plymouth = import ../submodules/plymouth.nix;
}
+6
View File
@@ -0,0 +1,6 @@
{
nvidia = {
base = import ../submodules/nvidia.nix;
prime = import ../submodules/nvidia-prime.nix;
};
}
+3
View File
@@ -0,0 +1,3 @@
{
apple = import ../submodules/keyboard-apple.nix;
}
+4
View File
@@ -0,0 +1,4 @@
{
dns = import ../submodules/dns.nix;
manager = import ../submodules/manager.nix;
}
+20
View File
@@ -0,0 +1,20 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.networks.dns;
in
{
options.within.networks.dns = {
enable = mkEnableOption "System dns service";
};
config = mkIf cfg.enable {
services.resolved.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
};
};
}
@@ -0,0 +1,25 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.keyboard.apple;
in
{
options.within.keyboard.apple = {
enable = mkEnableOption "System apple locales service";
};
config = mkIf cfg.enable {
# Select internationalisation properties.
i18n.defaultLocale = "fr_BE.UTF-8";
# Configure console keymap
console.keyMap = "mac-fr";
# Configure keymap in X11
services.xserver.xkb = {
model = "macintosh";
layout = "fr";
};
};
}
+15
View File
@@ -0,0 +1,15 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.networks.manager;
in
{
options.within.networks.manager = {
enable = mkEnableOption "System networks manager service";
};
config = mkIf cfg.enable {
networking.networkmanager.enable = true;
};
}
+25
View File
@@ -0,0 +1,25 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.graphics.nvidia.prime;
in
{
options.within.graphics.nvidia.prime = {
enable = mkEnableOption "System nvidia prime service";
};
config = mkIf cfg.enable {
services.xserver.videoDrivers = [
"modesetting"
"nvidia"
];
hardware.powerManagement.finegrained = true;
hardware.prime = {
offload.enable = true;
intelBusId = "PCI:0@0:2:0";
nvidiaBusId = "PCI:1@0:0:0";
};
};
}
+30
View File
@@ -0,0 +1,30 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.graphics.nvidia;
in
{
options.within.graphics.nvidia = {
enable = mkEnableOption "System nvidia service";
};
config = mkIf cfg.enable {
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"nvidia-x11"
];
services.xserver.enable = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware.graphics.enable = true;
hardware.nvidia = {
open = true;
nvidiaSettings = false;
modesetting.enable = true; # Wayland requirements
powerManagement.enable = true;
};
};
}
+23
View File
@@ -0,0 +1,23 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.audio.pipewire;
in
{
options.within.audio.pipewire = {
enable = mkEnableOption "System pipewire service";
};
config = mkIf cfg.enable {
security.rtkit.enable = true;
services.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
alsa.support32Bit = true;
};
};
}
+23
View File
@@ -0,0 +1,23 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.boot.plymouth;
in
{
options.within.boot.plymouth = {
enable = mkEnableOption "Boot plymouth service";
};
config = mkIf cfg.enable {
boot.consoleLogLevel = 3;
boot.initrd.verbose = false;
boot.kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
];
boot.plymouth.enable = true;
};
}
+17
View File
@@ -0,0 +1,17 @@
{ lib, config, ... }:
with lib;
let
cfg = config.within.boot.systemd;
in
{
options.within.boot.systemd = {
enable = mkEnableOption "Boot systemd service";
};
config = mkIf cfg.enable {
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.consoleMode = "max";
};
}