First Commit. Config for thinkpad-p50 finished.

This commit is contained in:
Ulysse Cura 2026-06-16 08:55:43 +02:00
commit 8d714192be
10 changed files with 428 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
configuration.nix

21
configuration.nix.default Normal file
View File

@ -0,0 +1,21 @@
{ ... }:
{
# Import configuration files.
imports = [
# Choose the right hardware configuration
# ./hardware-configuration/thinkpad-p50/configuration.nix
# ./hardware-configuration/asus-desktop/configuration.nix
./global-configuration.nix
];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
# Set the right version depending on your installation version.
# system.stateVersion = "26.05";
# system.stateVersion = "25.11";
}

53
global-configuration.nix Normal file
View File

@ -0,0 +1,53 @@
{ ... }:
{
# Import configuration files.
imports = [
./localisation-configuration.nix
./packages.nix
./users-configuration.nix
];
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
services.displayManager.gdm.enable = true;
services.desktopManager.gnome.enable = true;
# Enable networking
networking.networkmanager.enable = true;
# Enable CUPS to print documents.
services.printing.enable = true;
# Enable sound with pipewire.
services.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;
};
# Nano configuration.
programs.nano = {
nanorc = ''
set autoindent
set linenumbers
set mouse
set tabstospaces
set tabsize 4
'';
};
# Add nix experimental features.inherit
nix.settings.experimental-features = [ "nix-command" "flakes" ];
}

View File

@ -0,0 +1,31 @@
{ ... }:
{
# Set your time zone.
time.timeZone = "Europe/Paris";
# Select internationalisation properties.
i18n.defaultLocale = "fr_FR.UTF-8";
i18n.supportedLocales = ["all"];
/*
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";
};
*/
# Configure keymap in X11
services.xserver.xkb = {
layout = "fr";
variant = "";
};
# Configure console keymap
console.keyMap = "fr";
}

14
modules/home-manager.nix Normal file
View File

@ -0,0 +1,14 @@
{ ... }:
let
home-manager = builtins.fetchTarball "https://github.com/nix-community/home-manager/archive/release-26.05.tar.gz";
in
{
imports = [
(import "${home-manager}/nixos")
];
# Home-Manager configuration
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
}

20
modules/nix-flatpak.nix Normal file
View File

@ -0,0 +1,20 @@
{ ... }:
let
# Import pkgs manualy to prevent infinite recursion.
pkgs = import <nixpkgs> {};
# Fetch nix-flatpak.
nix-flatpak = pkgs.fetchFromGitHub {
owner = "gmodena";
repo = "nix-flatpak";
rev = "v0.7.0";
hash = "sha256-7ZCulYUD9RmJIDULTRkGLSW1faMpDlPKcbWJLYHoXcs=";
};
in
{
imports = [
# Import the nix-flatpak NixOS module and install applications system wide.
"${nix-flatpak}/modules/nixos.nix"
];
}

107
packages.nix Normal file
View File

@ -0,0 +1,107 @@
{ pkgs, lib, ... }:
{
imports = [
./modules/nix-flatpak.nix
];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile.
environment.systemPackages = with pkgs; [
# System
gsettings-desktop-schemas
vulkan-tools
# Utilities
gparted
fastfetch
cava
dconf-editor
krita
# Games
prismlauncher
# Developement
vscode # extensions configured by users
nixfmt
nixd
nil
scrcpy
android-tools
kicad
(pico-sdk.override {
withSubmodules = true;
})
picotool
gnumake
cmake
gcc
gcc-arm-embedded
python315
# Communication
(element-desktop.overrideAttrs (oldAttrs: {
desktopItems = [
((builtins.elemAt oldAttrs.desktopItems 0).override { startupWMClass = "element"; })
];
}))
discord
# Music
amberol
];
# Install other packages.
programs.firefox.enable = true;
programs.steam.enable = true;
programs.git.enable = true;
programs.htop.enable = true;
programs.dconf.enable = true;
# services.tailscale.enable = true;
# Install flatpak.
services.flatpak.enable = true;
# Add a new remote. Keep the default one (flathub)
services.flatpak.remotes = lib.mkOptionDefault [{
name = "flathub";
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
}];
# Nix-Flatpak configuration.
services.flatpak.update.auto.enable = false;
services.flatpak.uninstallUnmanaged = true;
# Flatpaks to install
services.flatpak.packages = [
"com.github.tchx84.Flatseal"
"com.jetpackduba.Gitnuro"
"moe.launcher.the-honkers-railway-launcher"
"com.obsproject.Studio"
# "dev.deedles.Trayscale"
];
# Remove unwanted packages.
services.xserver.excludePackages = [
pkgs.xterm
];
# Remove some Gnome packages.
environment.gnome.excludePackages = with pkgs; [
epiphany
cheese
snapshot
gnome-software
gnome-music
gnome-tour
yelp
];
environment.sessionVariables.XDG_DATA_DIRS = [
"${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}"
"${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}"
];
}

8
users-configuration.nix Normal file
View File

@ -0,0 +1,8 @@
{ ... }:
{
imports = [
./modules/home-manager.nix
./users-configuration/ulysse-cura.nix
];
}

View File

@ -0,0 +1,160 @@
{ pkgs, lib, ... }:
let
apl-entry = with lib.hm.gvariant; name: (position:
(mkDictionaryEntry[name (mkVariant [
(mkDictionaryEntry["position" (mkVariant position)])
])])
);
in
{
# Git configuration.
programs.git.settings = {
user.name = "Ulysse Cura";
user.email = "ulysse.cura@gmail.com";
init.defaultBranch = "main";
};
# Gnome extensions.
home.packages = with pkgs.gnomeExtensions; [
tophat
logo-menu
custom-command-toggle
just-perfection
launch-new-instance
keep-pinned-apps-in-appgrid
desktop-cube
gtile
blur-my-shell
dynamic-music-pill
];
# Gnome settings.
dconf.enable = true;
dconf.settings = {
# Interface configuration.
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
enable-hot-corners = false;
};
# Session parameters
"org/gnome/desktop/session" = {
save-restore = false;
};
# App in folders and dock.
"org/gnome/desktop/app-folders" = {
folder-children = [
"System"
"Utilities"
"AudioVideo"
"Games"
"Programming"
"Kicad"
];
};
"org/gnome/desktop/app-folders/folders/System" = {
name = "Système";
apps = [ "org.gnome.Settings.desktop" "nvidia-settings.desktop" "gparted.desktop" "org.gnome.SystemMonitor.desktop" "org.gnome.baobab.desktop" "org.gnome.Logs.desktop" "ca.desrt.dconf-editor.desktop" "org.gnome.DiskUtility.desktop" "com.github.tchx84.Flatseal.desktop" ];
};
"org/gnome/desktop/app-folders/folders/Utilities" = {
name = "Utilitaires";
apps = [ "org.gnome.Calendar.desktop" "org.gnome.Papers.desktop" "org.gnome.Weather.desktop" "org.gnome.Connections.desktop" "org.gnome.SimpleScan.desktop" "org.gnome.Maps.desktop" "org.gnome.Geary.desktop" "org.gnome.Contacts.desktop" "org.gnome.Extensions.desktop" "htop.desktop" "org.gnome.font-viewer.desktop" "org.gnome.clocks.desktop" "org.gnome.Characters.desktop" "cups.desktop" "org.gnome.seahorse.Application.desktop" "scrcpy.desktop" "scrcpy-console.desktop" ];
};
"org/gnome/desktop/app-folders/folders/AudioVideo" = {
name = "Son et vidéo";
apps = [ "org.gnome.Loupe.desktop" "org.gnome.Showtime.desktop" "org.gnome.Decibels.desktop" "com.obsproject.Studio.desktop" ];
};
"org/gnome/desktop/app-folders/folders/Games" = {
name = "Jeux";
apps = [ "steam.desktop" "org.prismlauncher.PrismLauncher.desktop" "moe.launcher.the-honkers-railway-launcher.desktop" "Counter-Strike 2.desktop" ];
};
"org/gnome/desktop/app-folders/folders/Programming" = {
name = "Programmation";
apps = [ "code.desktop" "com.jetpackduba.Gitnuro.desktop" ];
};
"org/gnome/desktop/app-folders/folders/Kicad" = {
name = "Kicad";
apps = [ "org.kicad.kicad.desktop" "org.kicad.eeschema.desktop" "org.kicad.pcbnew.desktop" "org.kicad.bitmap2component.desktop" "org.kicad.pcbcalculator.desktop" "org.kicad.gerbview.desktop" ];
};
"org/gnome/shell" = {
always-show-log-out = true;
app-picker-layout = [
[
(apl-entry "System" 0)
(apl-entry "Utilities" 1)
(apl-entry "AudioVideo" 2)
(apl-entry "Games" 3)
(apl-entry "org.gnome.Calculator.desktop" 4)
(apl-entry "org.gnome.TextEditor.desktop" 5)
(apl-entry "org.gnome.Nautilus.desktop" 6)
(apl-entry "nixos-manual.desktop" 7)
(apl-entry "Programming" 8)
(apl-entry "Kicad" 9)
(apl-entry "firefox.desktop" 10)
(apl-entry "element-desktop.desktop" 11)
(apl-entry "discord.desktop" 12)
(apl-entry "io.bassi.Amberol.desktop" 13)
(apl-entry "org.gnome.Console.desktop" 14)
(apl-entry "code.desktop" 15)
]
];
};
"org/gnome/shell" = {
favorite-apps = [ "firefox.desktop" "org.gnome.Nautilus.desktop" "org.gnome.Console.desktop" "element-desktop.desktop" "discord.desktop" "io.bassi.Amberol.desktop" "org.prismlauncher.PrismLauncher.desktop" "steam.desktop" "code.desktop" "com.jetpackduba.Gitnuro.desktop" ];
};
# Peripherals
"org/gnome/desktop/peripherals/mouse" = {
accel-profile = "flat";
};
"org/gnome/desktop/peripherals/keyboard" = {
numlock-state = true;
};
# Extensions
"org/gnome/shell" = {
disable-user-extensions = false;
enabled-extensions = with pkgs.gnomeExtensions; [
tophat.extensionUuid
logo-menu.extensionUuid
custom-command-toggle.extensionUuid
just-perfection.extensionUuid
launch-new-instance.extensionUuid
keep-pinned-apps-in-appgrid.extensionUuid
desktop-cube.extensionUuid
gtile.extensionUuid
blur-my-shell.extensionUuid
dynamic-music-pill.extensionUuid
"openbar@neuromorph"
];
};
"org/gnome/shell/extensions/tophat" = {
position-in-panel = "center";
cpu-display = "both";
cpu-sort-cores = false;
mem-abs-units = true;
mem-display = "numeric";
show-fs = false;
show-net = false;
};
"org/gnome/shell/extensions/openbar" = {
apply-accent-shell = true;
apply-all-shell = true;
apply-flatpak = true;
apply-gtk = true;
apply-menu-notif = true;
apply-menu-shell = true;
auto-bgalpha = false;
autofg-bar = false;
autofg-menu = false;
autohg-bar = true;
autohg-menu = true;
autotheme-dark = "Dark";
};
};
home.stateVersion = "25.11";
}

View File

@ -0,0 +1,13 @@
{ ... }:
{
# Define user account.
users.users.ulysse-cura = {
isNormalUser = true;
description = "Ulysse Cura";
extraGroups = [ "networkmanager" "wheel" "kvm" "adbusers" "dialout" ];
};
# Home-Manager configuration.
home-manager.users.ulysse-cura = ./ulysse-cura-home.nix;
}