Changing the structure of the configuration

This commit is contained in:
Lyes Saadi 2024-05-04 21:48:55 +02:00
parent be8c206e60
commit c06849e70f
No known key found for this signature in database
GPG key ID: 17418538BAA17767
12 changed files with 2 additions and 24 deletions

View file

@ -0,0 +1,39 @@
{ ... }:
{
imports =
[
./hardware-configuration.nix
./packages.nix
./system.nix
./networking.nix
./user/user.nix
./specialisation.nix
./gaming.nix
];
# Fails for some reason
documentation.nixos.enable = false;
nixpkgs.config.allowUnfree = true;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
nix.optimise.automatic = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
# 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).
system.stateVersion = "22.11"; # Did you read the comment?
}

12
configuration/gaming.nix Normal file
View file

@ -0,0 +1,12 @@
{ pkgs, ... }:
{
programs.steam.enable = true;
programs.steam.gamescopeSession.enable = true;
programs.gamemode.enable = true;
users.users.lyes.packages = with pkgs; [
mangohud
protonup
];
}

View file

@ -0,0 +1,47 @@
{ ... }:
{
# Networking
networking.hostName = "lyes-nix";
networking.networkmanager.enable = true;
networking.nameservers = [
"1.1.1.1#one.one.one.one"
"1.0.0.1#one.one.one.one"
"9.9.9.9"
"149.112.112.112"
"2620:fe::fe"
"2620:fe::9"
];
services.resolved = {
enable = true;
dnssec = "true";
domains = [ "~." ];
fallbackDns = [
"1.1.1.1#one.one.one.one"
"1.0.0.1#one.one.one.one"
"9.9.9.9"
"149.112.112.112"
"2620:fe::fe"
"2620:fe::9"
];
extraConfig = ''
DNSOverTLS=yes
'';
};
# Firewall
networking.firewall.allowedTCPPorts = [ 24872 8998 ];
networking.firewall.allowedUDPPorts = [ 24872 8998 ];
#networking.firewall.enable = false;
# Network services
#services.openssh.enable = true;
#services.syncplay = {
# enable = true;
# port = 8998;
# extraArgs = [ "--password pouicbarilstepson123cassoulet" ];
#};
}

View file

@ -0,0 +1,45 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
# Utilities
neovim
helix
wget
ripgrep
eza
bat
pciutils
man-pages
man-pages-posix
python3
any-nix-shell
libcgroup
# Virtualization
qemu
virt-manager
# Printing
hplipWithPlugin
];
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk
noto-fonts-lgc-plus
noto-fonts-emoji
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
];
fontDir.enable = true;
};
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
}

View file

@ -0,0 +1,43 @@
{ lib, ... }:
{
specialisation = {
gaming.configuration = {
hardware.nvidia = {
prime.sync.enable = lib.mkForce true;
prime.offload = {
enable = lib.mkForce false;
enableOffloadCmd = lib.mkForce false;
};
};
};
kde.configuration = {
# GNOME
services.xserver.displayManager.gdm.enable = lib.mkForce false;
services.xserver.desktopManager.gnome.enable = lib.mkForce false;
# KDE
services.desktopManager.plasma6.enable = true;
services.displayManager.sddm.enable = true;
};
kde-gaming.configuration = {
hardware.nvidia = {
prime.sync.enable = lib.mkForce true;
prime.offload = {
enable = lib.mkForce false;
enableOffloadCmd = lib.mkForce false;
};
};
# GNOME
services.xserver.displayManager.gdm.enable = lib.mkForce false;
services.xserver.desktopManager.gnome.enable = lib.mkForce false;
# KDE
services.desktopManager.plasma6.enable = true;
services.displayManager.sddm.enable = true;
};
};
}

116
configuration/system.nix Normal file
View file

@ -0,0 +1,116 @@
{ pkgs, ... }:
{
# OS Configuration
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.extraEntries = {
"fedora.conf" = ''
title Fedora
efi /EFI/fedora/grubx64.efi
'';
};
boot.loader.systemd-boot.configurationLimit = 10;
boot.loader.efi.canTouchEfiVariables = true;
boot.plymouth.enable = true;
boot.kernelParams = [ "quiet" ];
boot.supportedFilesystems = [ "ntfs" ];
fileSystems = {
"/".options = [ "compress=zstd:1" ];
"/home".options = [ "compress=zstd:1" ];
"/nix".options = [ "compress=zstd:1" "noatime" ];
};
zramSwap.enable = true;
# Firmware
services.fwupd.enable = true;
services.fprintd.enable = true;
security.pam.services.gdm-fingerprint.fprintAuth = false;
# Time
time.timeZone = "Europe/Paris";
# Keyboard & Touchpad
i18n.defaultLocale = "fr_FR.UTF-8";
console = {
font = "Lat2-Terminus16";
#keyMap = "fr";
useXkbConfig = true;
};
services.xserver.xkb.layout = "fr";
services.xserver.xkb.variant = "oss";
services.libinput.enable = true;
# Printing
services.printing.enable = true;
services.avahi.enable = true;
services.avahi.nssmdns4 = true;
services.avahi.openFirewall = true;
# Shell
programs.fish.enable = true;
programs.fish.promptInit = ''
any-nix-shell fish --info-right | source
'';
environment.shells = with pkgs; [ fish ];
# # Environment Variables
# environment.sessionVariables = {
# ELECTRON_OZONE_PLATFORM_HINT = "wayland";
# GTK_USE_PORTAL = "1";
# };
# Graphics
services.xserver.enable = true;
programs.xwayland.enable = true;
environment.sessionVariables.NIXOS_OZONE_WL = "1";
# GNOME
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# KDE
# services.desktopManager.plasma6.enable = true;
# programs.ssh.askPassword = lib.mkForce "${pkgs.gnome.seahorse}/libexec/seahorse/ssh-askpass";
programs.dconf.enable = true;
services.flatpak.enable = true;
services.joycond.enable = true;
# Sound
sound.enable = false;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
#jack.enable = true;
};
# Documentation
documentation.enable = true;
documentation.man.enable = true;
documentation.dev.enable = true;
# Fails for some reason
documentation.nixos.enable = false;
# Virtualisation
virtualisation.libvirtd.enable = true;
# Containers
virtualisation.containers.enable = true;
virtualisation.podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
extraPackages = [ pkgs.zfs ];
};
}

View file

@ -0,0 +1,31 @@
{ ... }:
{
# Git config
programs.git = {
enable = true;
userName = "Lyes Saadi";
userEmail = "dev@lyes.eu";
signing = {
key = "17418538BAA17767";
signByDefault = true;
};
extraConfig = {
code.editor = "nvim";
merge.tool = "nvim";
color.ui = true;
init.defaultBranch = "main";
includeIf = {
"gitdir:~/Documents/fedpkg/" = {
path = "~/Documents/fedpkg/.gitconfig_include";
};
};
};
};
# Protonup config
home.sessionVariables = {
STEAM_EXTRA_COMPAT_TOOLS_PATHS =
"\${HOME}/.steam/root/compatibilitytools.d";
};
}

View file

@ -0,0 +1,86 @@
{ pkgs, lib, ... }:
let
tex = (pkgs.texlive.combine { inherit (pkgs.texlive)
scheme-medium
lettre
wallpaper
lastpage
hyphenat
moresize
fontawesome5
montserrat
titlesec
ly1;
});
in {
users.users.lyes.packages = with pkgs; [
# Software
firefox
thunderbird
discord
mpv
vlc
syncplay
gnome.gnome-tweaks
gnome-extension-manager
protonmail-bridge-gui
# Games
# citra-canary
minecraft
vvvvvv
# Utilities
home-manager
nix-index
direnv
starship
dropbox
yt-dlp
wl-clipboard
# Customization
adw-gtk3
paper-icon-theme
gnomeExtensions.gsconnect
# Programming
git
git-lfs
vscode
ocaml
ledit
nodejs
nil
# Containers
toolbox
distrobox
# Note taking
setzer
tex
pandoc
# Multimedia
pipewire.dev
pulseaudio
libopus
];
# Flatpaks
services.flatpak.remotes = lib.mkOptionDefault [{
name = "gnome-nightly";
location = "https://nightly.gnome.org/gnome-nightly.flatpakrepo";
}];
services.flatpak.packages = [
"com.github.muriloventuroso.pdftricks"
"app.drey.Damask"
"dev.tchx84.Gameeky"
"dev.tchx84.Gameeky.FreedomValley"
"dev.tchx84.Gameeky.Blasterman"
"dev.tchx84.Gameeky.Wackman"
];
}

View file

@ -0,0 +1,32 @@
{ pkgs, home-manager, ... }:
{
imports =
[
./packages.nix
home-manager.nixosModules.default
];
users.users.lyes = {
description = "Lyes Saadi";
home = "/home/lyes";
isNormalUser = true;
initialHashedPassword = ""; # Set for vms and initial installations
extraGroups = [ "wheel" "networkmanager" ];
shell = pkgs.fish;
};
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
home-manager.users.lyes = { pkgs, ... }: {
imports =
[
./home.nix
];
home.username = "lyes";
home.homeDirectory = "/home/lyes";
home.stateVersion = "22.11";
};
}