commit 8d714192be7db95e4f4eb563eb3dddd5e78a4a86 Author: Ulysse Cura Date: Tue Jun 16 08:55:43 2026 +0200 First Commit. Config for thinkpad-p50 finished. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..04d54e7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +configuration.nix \ No newline at end of file diff --git a/configuration.nix.default b/configuration.nix.default new file mode 100644 index 0000000..511492a --- /dev/null +++ b/configuration.nix.default @@ -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. It‘s 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"; +} diff --git a/global-configuration.nix b/global-configuration.nix new file mode 100644 index 0000000..f3453e0 --- /dev/null +++ b/global-configuration.nix @@ -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" ]; +} \ No newline at end of file diff --git a/localisation-configuration.nix b/localisation-configuration.nix new file mode 100644 index 0000000..929d88a --- /dev/null +++ b/localisation-configuration.nix @@ -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"; +} diff --git a/modules/home-manager.nix b/modules/home-manager.nix new file mode 100644 index 0000000..b0d222d --- /dev/null +++ b/modules/home-manager.nix @@ -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; +} \ No newline at end of file diff --git a/modules/nix-flatpak.nix b/modules/nix-flatpak.nix new file mode 100644 index 0000000..cba4207 --- /dev/null +++ b/modules/nix-flatpak.nix @@ -0,0 +1,20 @@ +{ ... }: + +let + # Import pkgs manualy to prevent infinite recursion. + pkgs = import {}; + + # 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" + ]; +} diff --git a/packages.nix b/packages.nix new file mode 100644 index 0000000..af54b77 --- /dev/null +++ b/packages.nix @@ -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}" + ]; +} diff --git a/users-configuration.nix b/users-configuration.nix new file mode 100644 index 0000000..015466d --- /dev/null +++ b/users-configuration.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + imports = [ + ./modules/home-manager.nix + ./users-configuration/ulysse-cura.nix + ]; +} diff --git a/users-configuration/ulysse-cura-home.nix b/users-configuration/ulysse-cura-home.nix new file mode 100644 index 0000000..4c76a36 --- /dev/null +++ b/users-configuration/ulysse-cura-home.nix @@ -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"; +} diff --git a/users-configuration/ulysse-cura.nix b/users-configuration/ulysse-cura.nix new file mode 100644 index 0000000..98c0d6a --- /dev/null +++ b/users-configuration/ulysse-cura.nix @@ -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; +}