From 119d20a91782af1e93ac2c510b467336537b9d72 Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 27 Jan 2025 23:42:57 +0100 Subject: [PATCH] Initial push --- configuration.nix | 227 +++++++++++++++++++++++++++++++++++++ hardware-configuration.nix | 68 +++++++++++ 2 files changed, 295 insertions(+) create mode 100644 configuration.nix create mode 100644 hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..2cf0687 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,227 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./hardware-configuration.nix + ]; + + # Bootloader. + boot.loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + + networking = { + hostName = "nixos-fix"; + firewall.enable = false; + networkmanager.enable = true; + wireless.enable = false; + }; + + documentation = { + enable = true; + man.enable = true; + dev.enable = true; + }; + + # Set your time zone. + time.timeZone = "Europe/Paris"; + + # Select internationalisation properties. + i18n = { + defaultLocale = "en_US.UTF-8"; + 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"; + }; + }; + + users = { + defaultUserShell = pkgs.zsh; + users = { + raphael = { + isNormalUser = true; + description = "The main account of raphael"; + useDefaultShell = true; + extraGroups = [ + "networkmanager" + "dialout" + "plugdev" + "wheel" + "docker" + "video" + ]; + packages = with pkgs; [ + home-manager + ]; + }; + }; + }; + + systemd.services = { + ticket = { + description = "Service for ticket"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + User = "root"; + WorkingDirectory = "/root/ticket"; + ExecStart = "${pkgs.nodejs}/bin/npm start"; + Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.nodejs}/bin"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; + tempvoc = { + description = "Service for tempvoc"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + User = "root"; + WorkingDirectory = "/root/tempvoc"; + ExecStart = "${pkgs.nodejs}/bin/npm start"; + Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.nodejs}/bin"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; + music = { + description = "Service for music"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + User = "root"; + WorkingDirectory = "/root/music"; + ExecStart = "${pkgs.nodejs}/bin/npm start"; + Environment = "PATH=${pkgs.coreutils}/bin:${pkgs.bash}/bin:${pkgs.nodejs}/bin"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; + yagpdb = { + description = "Service for yagpdb"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + User = "root"; + WorkingDirectory = "/root/yagpdb/cmd/yagpdb"; + ExecStart = "/root/yagpdb/cmd/yagpdb/yagpdb -all -pa"; + EnvironmentFile = "/root/yagpdb/cmd/yagpdb/sampleenvfile"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + nix.extraOptions = ''experimental-features = nix-command flakes''; + + programs = { + zsh.enable = true; + steam = { + enable = true; + gamescopeSession.enable = true; + }; + gamemode.enable = true; + }; + + environment.systemPackages = with pkgs; [ + bat + cairo + dconf + fastfetch + git + go + home-manager + lego + libjpeg + libpng + libuuid + linux-manual + man + man-pages + man-pages-posix + networkmanager + nodejs + openssl + pkg-config + postgresql + protonup + python3 + python3Packages.pip + qflipper + tmux + unzip + wget + wl-clipboard + xclip + xsel + yarn + zsh + vim + ]; + + services = { + openssh = { + enable = true; + ports = [ 42131 ]; + }; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + nginx = { + virtualHosts = { + "enium.eu" = { + forceSSL = true; + sslCertificate = "/etc/nginx/ssl/selfsigned.crt"; + sslCertificateKey = "/etc/nginx/ssl/selfsigned.key"; + }; + }; + }; + udev.extraRules = '' + SUBSYSTEM=="usb", ATTR{idVendor}=="0483", ATTR{idProduct}=="5740", MODE="0666" + ''; + redis.servers."" = { + enable = true; + }; + postgresql = { + enable = true; + }; + xserver.videoDrivers = ["nvidia"]; + greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --remember --remember-user-session --time --cmd Hyprland"; + }; + }; + }; + }; + + virtualisation.docker.enable = true; + + xdg.portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + config.common.default = "*"; + }; + + system.stateVersion = "24.05"; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..02bec2a --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,68 @@ +# 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") + ]; + +# services.dbus.enable = true; + boot = { + initrd = { + availableKernelModules = [ + "xhci_pci" + "ahci" + "usbhid" + "sd_mod" + ]; + kernelModules = []; + }; + kernelModules = [ + "kvm-intel" + ]; + extraModulePackages = []; + }; + + fileSystems = { + "/" = { + device = "/dev/disk/by-uuid/a943d592-57d3-497e-bf43-49b50ac73f0b"; + fsType = "ext4"; + }; + "/boot" = { + device = "/dev/disk/by-uuid/5AAB-0026"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + "/mnt/data" = { + device = "/dev/disk/by-uuid/5729d30c-5806-4ccd-8a2a-080a258084dc"; + fsType = "ext4"; + }; + }; + + swapDevices = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.docker0.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s31f6.useDHCP = lib.mkDefault true; + + hardware.nvidia = { + open = false; + modesetting.enable = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}