From 8e852a8dd5bf1f28c8a22421e58842b9a6dfdd8e Mon Sep 17 00:00:00 2001 From: "Mohamed C." Date: Tue, 30 Jul 2024 22:56:44 +0200 Subject: [PATCH] initial upload --- configuration.nix | 18 +++++++++ flake.lock | 64 +++++++++++++++++++++++++++++++ flake.nix | 37 ++++++++++++++++++ home.nix | 22 +++++++++++ system/boot.nix | 10 +++++ system/controller.nix | 7 ++++ system/desktop.nix | 9 +++++ system/hardware-configuration.nix | 39 +++++++++++++++++++ system/hardware.nix | 20 ++++++++++ system/locale.nix | 18 +++++++++ system/networking.nix | 5 +++ system/systempkgs.nix | 31 +++++++++++++++ system/systemsettings.nix | 2 + system/updates.nix | 12 ++++++ system/users.nix | 10 +++++ 15 files changed, 304 insertions(+) create mode 100644 configuration.nix create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home.nix create mode 100644 system/boot.nix create mode 100644 system/controller.nix create mode 100644 system/desktop.nix create mode 100644 system/hardware-configuration.nix create mode 100644 system/hardware.nix create mode 100644 system/locale.nix create mode 100644 system/networking.nix create mode 100644 system/systempkgs.nix create mode 100644 system/systemsettings.nix create mode 100644 system/updates.nix create mode 100644 system/users.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..24bf5ec --- /dev/null +++ b/configuration.nix @@ -0,0 +1,18 @@ +{ config, pkgs, pkgs-stable, ... }: +{ + imports = + [ + ./system/boot.nix + ./system/controller.nix + ./system/desktop.nix + ./system/hardware-configuration.nix + ./system/hardware.nix + ./system/locale.nix + ./system/networking.nix + ./system/systempkgs.nix + ./system/systemsettings.nix + ./system/updates.nix + ./system/users.nix + ]; + system.stateVersion = "24.05"; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..8ed9ff3 --- /dev/null +++ b/flake.lock @@ -0,0 +1,64 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1722321190, + "narHash": "sha256-WeVWVRqkgrbLzmk6FfJoloJ7Xe7HWD27Pv950IUG2kI=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "4fcd54df7cbb1d79cbe81209909ee8514d6b17a4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1722185531, + "narHash": "sha256-veKR07psFoJjINLC8RK4DiLniGGMgF3QMlS4tb74S6k=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "52ec9ac3b12395ad677e8b62106f0b98c1f8569d", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1722221733, + "narHash": "sha256-sga9SrrPb+pQJxG1ttJfMPheZvDOxApFfwXCFO0H9xw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "12bf09802d77264e441f48e25459c10c93eada2e", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-24.05", + "type": "indirect" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..be0d531 --- /dev/null +++ b/flake.nix @@ -0,0 +1,37 @@ +{ + description = "Moe.OS"; + + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + nixpkgs-stable.url = "nixpkgs/nixos-24.05"; + home-manager.url = "github:nix-community/home-manager/master"; + home-manager.inputs.nixpkgs.follows = "nixpkgs"; + }; + + outputs = { self,nixpkgs,nixpkgs-stable, home-manager, ...}: + let + lib = nixpkgs.lib; + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + pkgs-stable = nixpkgs-stable.legacyPackages.${system}; + in { + nixosConfigurations = { + computer-mo = nixpkgs.lib.nixosSystem { + inherit system; + modules = [./configuration.nix]; + specialArgs = { + inherit pkgs-stable; + }; + }; + }; + homeConfigurations = { + mo = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [./home.nix]; + extraSpecialArgs = { + inherit pkgs-stable; + }; + }; + }; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..19ca706 --- /dev/null +++ b/home.nix @@ -0,0 +1,22 @@ +{ config, pkgs, pkgs-stable, ... }: + +{ + home.username = "mo"; + home.homeDirectory = "/home/mo"; + home.stateVersion = "24.05"; + home.packages = [ + ]; + home.file = { + }; + home.sessionVariables = { + }; + programs.home-manager.enable = true; + programs.git = { + enable = true; + userName = "Mohamed C."; + userEmail = "mohamed@chrayed.de"; + extraConfig = { + init.defaultBranch = "main"; + }; + }; +} diff --git a/system/boot.nix b/system/boot.nix new file mode 100644 index 0000000..00e0a6e --- /dev/null +++ b/system/boot.nix @@ -0,0 +1,10 @@ + { config, pkgs, pkgs-stable, ... }: +{ + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.plymouth.enable = true; + boot.plymouth.theme = "bgrt"; + boot.initrd.verbose = false; + boot.consoleLogLevel = 0; + boot.kernelParams = [ "quiet" "splash" "udev.log_level=0" ]; +} diff --git a/system/controller.nix b/system/controller.nix new file mode 100644 index 0000000..0a3ba23 --- /dev/null +++ b/system/controller.nix @@ -0,0 +1,7 @@ +{ config, pkgs, pkgs-stable, ... }: +{ + # Ignore Dualsense Touchpad in Desktop + services.udev.extraRules ='' + ACTION=="add|change", KERNEL=="event[0-9]*", ATTRS{name}=="*Wireless Controller Touchpad", ENV{LIBINPUT_IGNORE_DEVICE}="1" + ''; +} diff --git a/system/desktop.nix b/system/desktop.nix new file mode 100644 index 0000000..a445e24 --- /dev/null +++ b/system/desktop.nix @@ -0,0 +1,9 @@ +{ config, pkgs, pkgs-stable, ... }: +{ + services.xserver.enable = false; + services.displayManager.sddm.wayland.enable = true; + services.displayManager.sddm.enable = true; + services.desktopManager.plasma6.enable = true; + services.displayManager.autoLogin.enable = true; + services.displayManager.autoLogin.user = "mo"; +} diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix new file mode 100644 index 0000000..03e49ef --- /dev/null +++ b/system/hardware-configuration.nix @@ -0,0 +1,39 @@ +# 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") + ]; + + boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/43f399df-b748-4c6d-bf38-e907ae4b8316"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/C1A2-349B"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + 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.enp11s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp10s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/system/hardware.nix b/system/hardware.nix new file mode 100644 index 0000000..4a6dadd --- /dev/null +++ b/system/hardware.nix @@ -0,0 +1,20 @@ +{ config, pkgs, pkgs-stable, ... }: +{ + services.fwupd.enable = true; + services.printing.enable = true; + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + services.libinput.enable = false; + swapDevices = [ { + device = "/var/lib/swapfile"; + size = 16*1024; + } ]; +} diff --git a/system/locale.nix b/system/locale.nix new file mode 100644 index 0000000..ced192e --- /dev/null +++ b/system/locale.nix @@ -0,0 +1,18 @@ +{ config, pkgs, pkgs-stable, ... }: +{ + time.timeZone = "Europe/Berlin"; + i18n.defaultLocale = "de_DE.UTF-8"; + console.keyMap = "de"; + services.xserver.xkb.layout = "de"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; +} diff --git a/system/networking.nix b/system/networking.nix new file mode 100644 index 0000000..7f989af --- /dev/null +++ b/system/networking.nix @@ -0,0 +1,5 @@ + { config, pkgs, pkgs-stable, ... }: +{ + networking.hostName = "computer-mo"; + networking.networkmanager.enable = true; +} diff --git a/system/systempkgs.nix b/system/systempkgs.nix new file mode 100644 index 0000000..1f2fe13 --- /dev/null +++ b/system/systempkgs.nix @@ -0,0 +1,31 @@ +{ config, pkgs, pkgs-stable, ... }: +{ + programs.firefox = { + enable = true; + languagePacks = ["de"]; + }; + programs.steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + gamescopeSession.enable = true; + }; + nixpkgs.config.allowUnfree = true; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + environment.systemPackages = with pkgs-stable; [ + wget + git + vesktop + bitwarden-desktop + kdePackages.kate + kdePackages.gwenview + kdePackages.okular + kdePackages.kontact + haruna + pciutils + aha + neofetch + mangohud + ]; +} diff --git a/system/systemsettings.nix b/system/systemsettings.nix new file mode 100644 index 0000000..ea22d32 --- /dev/null +++ b/system/systemsettings.nix @@ -0,0 +1,2 @@ +{ config, pkgs, pkgs-stable, ... }: +{} diff --git a/system/updates.nix b/system/updates.nix new file mode 100644 index 0000000..2f494f5 --- /dev/null +++ b/system/updates.nix @@ -0,0 +1,12 @@ +{ config, pkgs, pkgs-stable, ... }: +{ +system.autoUpgrade = { + enable = true; + dates = "04:00"; + flake = "../flake.nix"; + flags = [ + "--update-input" "nixpkgs" + ]; + allowReboot = true; +}; +} diff --git a/system/users.nix b/system/users.nix new file mode 100644 index 0000000..4f7938c --- /dev/null +++ b/system/users.nix @@ -0,0 +1,10 @@ +{ config, pkgs, pkgs-stable,... }: +{ + users.users.mo = { + isNormalUser = true; + description = "Mohamed Chrayed"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + ]; + }; +}