forked from jan-leila/nix-config
		
	ran statix linter
This commit is contained in:
		
							parent
							
								
									11603852f4
								
							
						
					
					
						commit
						0b1309dd0f
					
				
					 16 changed files with 376 additions and 329 deletions
				
			
		|  | @ -4,43 +4,50 @@ | |||
|     ../common | ||||
|   ]; | ||||
| 
 | ||||
|   # Enable CUPS to print documents. | ||||
|   services.printing.enable = true; | ||||
|   services = { | ||||
| 
 | ||||
|   # Enable the X11 windowing system. | ||||
|   services.xserver.enable = true; | ||||
|     # Enable CUPS to print documents. | ||||
|     printing.enable = true; | ||||
| 
 | ||||
|   # Enable the GNOME Desktop Environment. | ||||
|   services.xserver.displayManager.gdm.enable = true; | ||||
|   services.xserver.desktopManager.gnome.enable = true; | ||||
|   services.xserver.desktopManager.xterm.enable = false; | ||||
|     xserver = { | ||||
|       # Enable the X11 windowing system. | ||||
|       enable = true; | ||||
| 
 | ||||
|   # Get rid of xTerm | ||||
|   services.xserver.excludePackages = [ pkgs.xterm ]; | ||||
|       # Enable the GNOME Desktop Environment. | ||||
|       displayManager.gdm.enable = true; | ||||
|       desktopManager = { | ||||
|         gnome.enable = true; | ||||
|         xterm.enable = false; | ||||
|       }; | ||||
| 
 | ||||
|   # Configure keymap in X11 | ||||
|   services.xserver = { | ||||
|     xkb = { | ||||
|       layout = "us,it,de"; | ||||
|       variant = ""; | ||||
|       # Get rid of xTerm | ||||
|       excludePackages = [ pkgs.xterm ]; | ||||
| 
 | ||||
|       # Configure keymap in X11 | ||||
|       xkb = { | ||||
|         layout = "us,it,de"; | ||||
|         variant = ""; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     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; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
| 
 | ||||
|   # Enable sound with pipewire. | ||||
|   hardware.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; | ||||
|   }; | ||||
| 
 | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|     # helvetica font | ||||
|  |  | |||
|  | @ -23,83 +23,91 @@ | |||
|   virtualisation.docker.enable = true; | ||||
|   users.extraGroups.docker.members = [ "leyla" ]; | ||||
| 
 | ||||
|   boot.supportedFilesystems = [ "zfs" ]; | ||||
| 
 | ||||
|   boot.zfs.extraPools = [ "zroot" ]; | ||||
| 
 | ||||
|   services.zfs.autoScrub.enable = true; | ||||
|   services.zfs.autoSnapshot.enable = true; | ||||
| 
 | ||||
|   # this might need to match the hostId of the installation medium? `head -c 8 /etc/machine-id` NOPE | ||||
|   networking.hostId = "c51763d6"; | ||||
|   networking.hostName = "defiant"; # Define your hostname. | ||||
| 
 | ||||
|   nixpkgs.config.allowUnfree = true; | ||||
| 
 | ||||
|   # temp enable desktop enviroment for setup | ||||
|   # Enable the X11 windowing system. | ||||
|   services.xserver.enable = true; | ||||
|   services = { | ||||
|     zfs = { | ||||
|       autoScrub.enable = true; | ||||
|       autoSnapshot.enable = true; | ||||
|     }; | ||||
|      | ||||
|   # Enable the GNOME Desktop Environment. | ||||
|   services.xserver.displayManager.gdm.enable = true; | ||||
|   services.xserver.desktopManager.gnome.enable = true; | ||||
|   services.xserver.desktopManager.xterm.enable = false; | ||||
|     # temp enable desktop enviroment for setup | ||||
|     # Enable the X11 windowing system. | ||||
|     xserver = { | ||||
|       enable = true; | ||||
| 
 | ||||
|   # Get rid of xTerm | ||||
|   services.xserver.excludePackages = [ pkgs.xterm ]; | ||||
|       # Enable the GNOME Desktop Environment. | ||||
|       services.xserver.displayManager = { | ||||
|         gdm.enable = true; | ||||
|       }; | ||||
|       services.xserver.desktopManager = { | ||||
|         gnome.enable = true; | ||||
|         desktopManager.xterm.enable = false; | ||||
|       }; | ||||
| 
 | ||||
|   # disable computer sleeping | ||||
|   systemd.targets.sleep.enable = false; | ||||
|   systemd.targets.suspend.enable = false; | ||||
|   systemd.targets.hibernate.enable = false; | ||||
|   systemd.targets.hybrid-sleep.enable = false; | ||||
|       # Get rid of xTerm | ||||
|       excludePackages = [ pkgs.xterm ]; | ||||
|     }; | ||||
| 
 | ||||
|   services.openssh = { | ||||
|     enable = true; | ||||
|     ports = [ 22 ]; | ||||
|     settings = { | ||||
|       PasswordAuthentication = false; | ||||
|       AllowUsers = [ "leyla" ]; # Allows all users by default. Can be [ "user1" "user2" ] | ||||
|       UseDns = true; | ||||
|       X11Forwarding = false; | ||||
|     openssh = { | ||||
|       enable = true; | ||||
|       ports = [ 22 ]; | ||||
|       settings = { | ||||
|         PasswordAuthentication = false; | ||||
|         AllowUsers = [ "leyla" ]; # Allows all users by default. Can be [ "user1" "user2" ] | ||||
|         UseDns = true; | ||||
|         X11Forwarding = false; | ||||
|       }; | ||||
|     }; | ||||
| 
 | ||||
|     nfs.server = { | ||||
|       enable = true; | ||||
|       exports = '' | ||||
|         /srv/nfs4/docker 192.168.1.0/24(rw,sync,crossmnt,no_subtree_check) | ||||
| 
 | ||||
|         /srv/nfs4/leyla 192.168.1.0/22(rw,sync,no_subtree_check,nohide) | ||||
|         /srv/nfs4/eve   192.168.1.0/22(rw,sync,no_subtree_check,crossmnt) | ||||
|         /srv/nfs4/share 192.168.1.0/22(rw,sync,no_subtree_check,crossmnt) | ||||
|          | ||||
|         # /export         192.168.1.10(rw,fsid=0,no_subtree_check) 192.168.1.15(rw,fsid=0,no_subtree_check) | ||||
|         # /export/kotomi  192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|         # /export/mafuyu  192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|         # /export/sen     192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|         # /export/tomoyo  192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|       ''; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   fileSystems."/srv/nfs4/docker" = { | ||||
|     device = "/home/docker"; | ||||
|     options = [ "bind" ]; | ||||
|   # disable computer sleeping | ||||
|   systemd.targets = { | ||||
|     sleep.enable = false; | ||||
|     suspend.enable = false; | ||||
|     hibernate.enable = false; | ||||
|     hybrid-sleep.enable = false; | ||||
|   }; | ||||
| 
 | ||||
|   fileSystems."/srv/nfs4/users" = { | ||||
|     device = "/home/users"; | ||||
|     options = [ "bind" ]; | ||||
|   fileSystems = { | ||||
|     "/srv/nfs4/docker" = { | ||||
|       device = "/home/docker"; | ||||
|       options = [ "bind" ]; | ||||
|     }; | ||||
| 
 | ||||
|     "/srv/nfs4/users" = { | ||||
|       device = "/home/users"; | ||||
|       options = [ "bind" ]; | ||||
|     }; | ||||
| 
 | ||||
|     "/srv/nfs4/leyla" = { | ||||
|       device = "/home/leyla"; | ||||
|       options = [ "bind" ]; | ||||
|     }; | ||||
| 
 | ||||
|     "/srv/nfs4/eve" = { | ||||
|       device = "/home/eve"; | ||||
|       options = [ "bind" ]; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   fileSystems."/srv/nfs4/leyla" = { | ||||
|     device = "/home/leyla"; | ||||
|     options = [ "bind" ]; | ||||
|   }; | ||||
| 
 | ||||
|   fileSystems."/srv/nfs4/eve" = { | ||||
|     device = "/home/eve"; | ||||
|     options = [ "bind" ]; | ||||
|   }; | ||||
| 
 | ||||
|   services.nfs.server.enable = true; | ||||
|   services.nfs.server.exports = '' | ||||
|     /srv/nfs4/docker 192.168.1.0/24(rw,sync,crossmnt,no_subtree_check) | ||||
| 
 | ||||
|     /srv/nfs4/leyla 192.168.1.0/22(rw,sync,no_subtree_check,nohide) | ||||
|     /srv/nfs4/eve   192.168.1.0/22(rw,sync,no_subtree_check,crossmnt) | ||||
|     /srv/nfs4/share 192.168.1.0/22(rw,sync,no_subtree_check,crossmnt) | ||||
|      | ||||
|     # /export         192.168.1.10(rw,fsid=0,no_subtree_check) 192.168.1.15(rw,fsid=0,no_subtree_check) | ||||
|     # /export/kotomi  192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|     # /export/mafuyu  192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|     # /export/sen     192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|     # /export/tomoyo  192.168.1.10(rw,nohide,insecure,no_subtree_check) 192.168.1.15(rw,nohide,insecure,no_subtree_check) | ||||
|   ''; | ||||
| 
 | ||||
|   # 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 | ||||
|  |  | |||
|  | @ -8,10 +8,18 @@ | |||
|     [ (modulesPath + "/installer/scan/not-detected.nix") | ||||
|     ]; | ||||
| 
 | ||||
|   boot.initrd.availableKernelModules = [ "xhci_pci" "aacraid" "ahci" "usbhid" "usb_storage" "sd_mod" ]; | ||||
|   boot.initrd.kernelModules = [ ]; | ||||
|   boot.kernelModules = [ "kvm-amd" ]; | ||||
|   boot.extraModulePackages = [ ]; | ||||
|   boot = { | ||||
|     initrd = { | ||||
|       availableKernelModules = [ "xhci_pci" "aacraid" "ahci" "usbhid" "usb_storage" "sd_mod" ]; | ||||
|       kernelModules = [ ]; | ||||
|     }; | ||||
|     kernelModules = [ "kvm-amd" ]; | ||||
|     extraModulePackages = [ ]; | ||||
|      | ||||
|     supportedFilesystems = [ "zfs" ]; | ||||
| 
 | ||||
|     zfs.extraPools = [ "zroot" ]; | ||||
|   }; | ||||
| 
 | ||||
|   # fileSystems."/" = | ||||
|   #   { device = "/dev/disk/by-uuid/dc6a9664-80f2-4988-afd7-fee5bd3ee2ca"; | ||||
|  | @ -20,13 +28,17 @@ | |||
| 
 | ||||
|   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.<interface>.useDHCP`. | ||||
|   networking.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.eno1.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.eno2.useDHCP = lib.mkDefault true; | ||||
|   networking = { | ||||
|     # 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.<interface>.useDHCP`. | ||||
|     useDHCP = lib.mkDefault true; | ||||
|     # networking.interfaces.eno1.useDHCP = lib.mkDefault true; | ||||
|     # networking.interfaces.eno2.useDHCP = lib.mkDefault true; | ||||
|     hostId = "c51763d6"; | ||||
|     hostName = "defiant"; # Define your hostname. | ||||
|   }; | ||||
| 
 | ||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||
|   hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | ||||
|  |  | |||
|  | @ -1,5 +0,0 @@ | |||
| # eve desktop | ||||
| {}:  | ||||
| { | ||||
| 
 | ||||
| } | ||||
|  | @ -1,5 +0,0 @@ | |||
| # nas | ||||
| {}:  | ||||
| { | ||||
| 
 | ||||
| } | ||||
|  | @ -11,9 +11,11 @@ | |||
|       ../../enviroments/client | ||||
|     ]; | ||||
| 
 | ||||
|   users.leyla.isFullUser = true; | ||||
|   users.ester.isFullUser = true; | ||||
|   users.eve.isFullUser = true; | ||||
|   users = { | ||||
|     leyla.isFullUser = true; | ||||
|     ester.isFullUser = true; | ||||
|     eve.isFullUser = true; | ||||
|   }; | ||||
| 
 | ||||
|   # enabled virtualisation for docker | ||||
|   virtualisation.docker = { | ||||
|  |  | |||
|  | @ -8,62 +8,73 @@ | |||
|     [ (modulesPath + "/installer/scan/not-detected.nix") | ||||
|     ]; | ||||
| 
 | ||||
|   boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; | ||||
|   boot.initrd.kernelModules = [ ]; | ||||
|   boot.kernelModules = [ "kvm-intel" "sg" ]; | ||||
|   boot.extraModulePackages = [ ]; | ||||
|   boot = { | ||||
|     initrd = { | ||||
|       availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; | ||||
|       kernelModules = [ ]; | ||||
|     }; | ||||
|     kernelModules = [ "kvm-intel" "sg" ]; | ||||
|     extraModulePackages = [ ]; | ||||
|      | ||||
|     # Bootloader. | ||||
|     loader = { | ||||
|       systemd-boot.enable = true; | ||||
|       efi.canTouchEfiVariables = true; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   # Bootloader. | ||||
|   boot.loader.systemd-boot.enable = true; | ||||
|   boot.loader.efi.canTouchEfiVariables = true; | ||||
| 
 | ||||
|   hardware.graphics.enable = true; | ||||
| 
 | ||||
|   fileSystems."/" = | ||||
|     { device = "/dev/disk/by-uuid/866d422b-f816-4ad9-9846-791839cb9337"; | ||||
|       fsType = "ext4"; | ||||
|     }; | ||||
|   fileSystems = { | ||||
|     "/" = | ||||
|       { device = "/dev/disk/by-uuid/866d422b-f816-4ad9-9846-791839cb9337"; | ||||
|         fsType = "ext4"; | ||||
|       }; | ||||
| 
 | ||||
|   fileSystems."/boot" = | ||||
|     { device = "/dev/disk/by-uuid/E138-65B5"; | ||||
|       fsType = "vfat"; | ||||
|     }; | ||||
|     "/boot" = | ||||
|       { device = "/dev/disk/by-uuid/E138-65B5"; | ||||
|         fsType = "vfat"; | ||||
|       }; | ||||
| 
 | ||||
|     "/mnt/leyla_home" = | ||||
|       { | ||||
|         device = "server.arpa:/home/leyla"; | ||||
|         fsType = "nfs"; | ||||
|         options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|       }; | ||||
| 
 | ||||
|     "/mnt/share_home" = | ||||
|       { | ||||
|         device = "server.arpa:/home/share"; | ||||
|         fsType = "nfs"; | ||||
|         options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|       }; | ||||
| 
 | ||||
|     "/mnt/docker_home" = | ||||
|       { | ||||
|         device = "server.arpa:/home/docker"; | ||||
|         fsType = "nfs"; | ||||
|         options = [ "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; | ||||
|       }; | ||||
|   }; | ||||
| 
 | ||||
|   services.cachefilesd.enable = true; | ||||
| 
 | ||||
|   fileSystems."/mnt/leyla_home" = | ||||
|     { | ||||
|       device = "server.arpa:/home/leyla"; | ||||
|       fsType = "nfs"; | ||||
|       options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|     }; | ||||
| 
 | ||||
|   fileSystems."/mnt/share_home" = | ||||
|     { | ||||
|       device = "server.arpa:/home/share"; | ||||
|       fsType = "nfs"; | ||||
|       options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|     }; | ||||
| 
 | ||||
|   fileSystems."/mnt/docker_home" = | ||||
|     { | ||||
|       device = "server.arpa:/home/docker"; | ||||
|       fsType = "nfs"; | ||||
|       options = [ "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; | ||||
|     }; | ||||
| 
 | ||||
|   swapDevices = | ||||
|     [ { device = "/dev/disk/by-uuid/be98e952-a072-4c3a-8c12-69500b5a2fff"; } | ||||
|     ]; | ||||
| 
 | ||||
|   # 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.<interface>.useDHCP`. | ||||
|   networking.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.enp0s20f0u1.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.wlp170s0.useDHCP = lib.mkDefault true; | ||||
|   networking.hostName = "horizon"; # Define your hostname. | ||||
|   networking = { | ||||
|     # 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.<interface>.useDHCP`. | ||||
|     useDHCP = lib.mkDefault true; | ||||
|     # networking.interfaces.enp0s20f0u1.useDHCP = lib.mkDefault true; | ||||
|     # networking.interfaces.wlp170s0.useDHCP = lib.mkDefault true; | ||||
|     hostName = "horizon"; # Define your hostname. | ||||
|   }; | ||||
| 
 | ||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||
|   powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; | ||||
|  |  | |||
|  | @ -1,5 +0,0 @@ | |||
| # eve laptop | ||||
| {}:  | ||||
| { | ||||
| 
 | ||||
| } | ||||
|  | @ -11,15 +11,17 @@ | |||
|       ../../enviroments/client | ||||
|     ]; | ||||
| 
 | ||||
|   users.leyla = { | ||||
|     isFullUser = true; | ||||
|     hasPiperMouse = true; | ||||
|     hasOpenRGBHardware = true; | ||||
|     hasViaKeyboard = true; | ||||
|     hasGPU = true; | ||||
|   users = { | ||||
|     leyla = { | ||||
|       isFullUser = true; | ||||
|       hasPiperMouse = true; | ||||
|       hasOpenRGBHardware = true; | ||||
|       hasViaKeyboard = true; | ||||
|       hasGPU = true; | ||||
|     }; | ||||
|     ester.isFullUser = true; | ||||
|     eve.isFullUser = true; | ||||
|   }; | ||||
|   users.ester.isFullUser = true; | ||||
|   users.eve.isFullUser = true; | ||||
|    | ||||
|   # enabled virtualisation for docker | ||||
|   # virtualisation.docker.enable = true; | ||||
|  |  | |||
|  | @ -8,98 +8,112 @@ | |||
|     [ (modulesPath + "/installer/scan/not-detected.nix") | ||||
|     ]; | ||||
| 
 | ||||
|   boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; | ||||
|   boot.initrd.kernelModules = [ ]; | ||||
|   boot.kernelModules = [ "kvm-amd" "sg" ]; | ||||
|   boot.extraModulePackages = [ ]; | ||||
|   boot = { | ||||
|     initrd = { | ||||
|       availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; | ||||
|       kernelModules = [ ]; | ||||
|     }; | ||||
|     kernelModules = [ "kvm-amd" "sg" ]; | ||||
|     extraModulePackages = [ ]; | ||||
| 
 | ||||
|   # Bootloader. | ||||
|   boot.loader.systemd-boot.enable = true; | ||||
|   boot.loader.efi.canTouchEfiVariables = true; | ||||
|    | ||||
|   # Enable OpenGL | ||||
|   hardware.graphics.enable = true; | ||||
| 
 | ||||
|   # Load nvidia driver for Xorg and Wayland | ||||
|   services.xserver.videoDrivers = ["nvidia"]; | ||||
| 
 | ||||
|   # Use X instead of wayland for gaming reasons | ||||
|   services.xserver.displayManager.gdm.wayland = false; | ||||
|    | ||||
|   # install graphics drivers | ||||
|   hardware.nvidia = { | ||||
|     # Modesetting is required. | ||||
|     modesetting.enable = true; | ||||
| 
 | ||||
|     # Nvidia power management. Experimental, and can cause sleep/suspend to fail. | ||||
|     # Enable this if you have graphical corruption issues or application crashes after waking | ||||
|     # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead  | ||||
|     # of just the bare essentials. | ||||
|     powerManagement.enable = false; | ||||
| 
 | ||||
|     # Fine-grained power management. Turns off GPU when not in use. | ||||
|     # Experimental and only works on modern Nvidia GPUs (Turing or newer). | ||||
|     powerManagement.finegrained = false; | ||||
| 
 | ||||
|     # Use the NVidia open source kernel module (not to be confused with the | ||||
|     # independent third-party "nouveau" open source driver). | ||||
|     # Support is limited to the Turing and later architectures. Full list of  | ||||
|     # supported GPUs is at:  | ||||
|     # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus  | ||||
|     # Only available from driver 515.43.04+ | ||||
|     # Currently alpha-quality/buggy, so false is currently the recommended setting. | ||||
|     open = false; | ||||
| 
 | ||||
|     # Enable the Nvidia settings menu, | ||||
| 	# accessible via `nvidia-settings`. | ||||
|     nvidiaSettings = true; | ||||
| 
 | ||||
|     # Optionally, you may need to select the appropriate driver version for your specific GPU. | ||||
|     package = config.boot.kernelPackages.nvidiaPackages.production; | ||||
|     # Bootloader. | ||||
|     loader = { | ||||
|       systemd-boot.enable = true; | ||||
|       efi.canTouchEfiVariables = true; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   fileSystems."/" = | ||||
|     { device = "/dev/disk/by-uuid/8be49c65-2b57-48f1-b74d-244d26061adb"; | ||||
|       fsType = "ext4"; | ||||
|     }; | ||||
|   services.xserver = { | ||||
|     # Load nvidia driver for Xorg and Wayland | ||||
|     videoDrivers = ["nvidia"]; | ||||
| 
 | ||||
|   fileSystems."/boot" = | ||||
|     { device = "/dev/disk/by-uuid/3006-3867"; | ||||
|       fsType = "vfat"; | ||||
|       options = [ "fmask=0022" "dmask=0022" ]; | ||||
|     }; | ||||
|     # Use X instead of wayland for gaming reasons | ||||
|     displayManager.gdm.wayland = false; | ||||
|   }; | ||||
| 
 | ||||
|   fileSystems."/mnt/leyla_home" = | ||||
|     { | ||||
|       device = "server.arpa:/home/leyla"; | ||||
|       fsType = "nfs"; | ||||
|       options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|     }; | ||||
|   hardware = { | ||||
|     # Enable OpenGL | ||||
|     graphics.enable = true; | ||||
|      | ||||
|   fileSystems."/mnt/share_home" = | ||||
|     { | ||||
|       device = "server.arpa:/home/share"; | ||||
|       fsType = "nfs"; | ||||
|       options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|     }; | ||||
|     # install graphics drivers | ||||
|     nvidia = { | ||||
|       # Modesetting is required. | ||||
|       modesetting.enable = true; | ||||
| 
 | ||||
|   fileSystems."/mnt/docker_home" = | ||||
|     { | ||||
|       device = "server.arpa:/home/docker"; | ||||
|       fsType = "nfs"; | ||||
|       options = [ "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; | ||||
|       # Nvidia power management. Experimental, and can cause sleep/suspend to fail. | ||||
|       # Enable this if you have graphical corruption issues or application crashes after waking | ||||
|       # up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead  | ||||
|       # of just the bare essentials. | ||||
|       powerManagement.enable = false; | ||||
| 
 | ||||
|       # Fine-grained power management. Turns off GPU when not in use. | ||||
|       # Experimental and only works on modern Nvidia GPUs (Turing or newer). | ||||
|       powerManagement.finegrained = false; | ||||
| 
 | ||||
|       # Use the NVidia open source kernel module (not to be confused with the | ||||
|       # independent third-party "nouveau" open source driver). | ||||
|       # Support is limited to the Turing and later architectures. Full list of  | ||||
|       # supported GPUs is at:  | ||||
|       # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus  | ||||
|       # Only available from driver 515.43.04+ | ||||
|       # Currently alpha-quality/buggy, so false is currently the recommended setting. | ||||
|       open = false; | ||||
| 
 | ||||
|       # Enable the Nvidia settings menu, | ||||
|     # accessible via `nvidia-settings`. | ||||
|       nvidiaSettings = true; | ||||
| 
 | ||||
|       # Optionally, you may need to select the appropriate driver version for your specific GPU. | ||||
|       package = config.boot.kernelPackages.nvidiaPackages.production; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   fileSystems = { | ||||
|     "/" = | ||||
|       { device = "/dev/disk/by-uuid/8be49c65-2b57-48f1-b74d-244d26061adb"; | ||||
|         fsType = "ext4"; | ||||
|       }; | ||||
| 
 | ||||
|     "/boot" = | ||||
|       { device = "/dev/disk/by-uuid/3006-3867"; | ||||
|         fsType = "vfat"; | ||||
|         options = [ "fmask=0022" "dmask=0022" ]; | ||||
|       }; | ||||
|        | ||||
|     "/mnt/leyla_home" = | ||||
|       { | ||||
|         device = "server.arpa:/home/leyla"; | ||||
|         fsType = "nfs"; | ||||
|         options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|       }; | ||||
| 
 | ||||
|     "/mnt/share_home" = | ||||
|       { | ||||
|         device = "server.arpa:/home/share"; | ||||
|         fsType = "nfs"; | ||||
|         options = [ "x-systemd.automount" "user" "nofail" "soft" "x-systemd.idle-timeout=600" "fsc" ]; | ||||
|       }; | ||||
| 
 | ||||
|     "/mnt/docker_home" = | ||||
|       { | ||||
|         device = "server.arpa:/home/docker"; | ||||
|         fsType = "nfs"; | ||||
|         options = [ "x-systemd.automount" "noauto" "x-systemd.idle-timeout=600" ]; | ||||
|       }; | ||||
|   }; | ||||
| 
 | ||||
|   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.<interface>.useDHCP`. | ||||
|   networking.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.enp42s0.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true; | ||||
|   networking.hostName = "twilight"; # Define your hostname. | ||||
|   networking = { | ||||
|     # 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.<interface>.useDHCP`. | ||||
|     useDHCP = lib.mkDefault true; | ||||
|     # networking.interfaces.enp42s0.useDHCP = lib.mkDefault true; | ||||
|     # networking.interfaces.wlp5s0.useDHCP = lib.mkDefault true; | ||||
|     hostName = "twilight"; # Define your hostname. | ||||
|   }; | ||||
| 
 | ||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||
|   hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| { ... }: | ||||
| _: | ||||
| { | ||||
|   nixpkgs.overlays = [ | ||||
|     (self: super: { | ||||
|  |  | |||
|  | @ -1,4 +1,4 @@ | |||
| { ... }: | ||||
| _: | ||||
| { | ||||
|   nixpkgs.overlays = [ | ||||
|     (self: super: { | ||||
|  |  | |||
|  | @ -0,0 +1,2 @@ | |||
| _: | ||||
| {} | ||||
|  | @ -3,71 +3,73 @@ | |||
| { | ||||
|   # Home Manager needs a bit of information about you and the paths it should | ||||
|   # manage. | ||||
|   home.username = "leyla"; | ||||
|   home.homeDirectory = "/home/leyla"; | ||||
|   home = { | ||||
|     username = "leyla"; | ||||
|     homeDirectory = "/home/leyla"; | ||||
| 
 | ||||
|   # This value determines the Home Manager release that your configuration is | ||||
|   # compatible with. This helps avoid breakage when a new Home Manager release | ||||
|   # introduces backwards incompatible changes. | ||||
|   # | ||||
|   # You should not change this value, even if you update Home Manager. If you do | ||||
|   # want to update the value, then make sure to first check the Home Manager | ||||
|   # release notes. | ||||
|   home.stateVersion = "23.11"; # Please read the comment before changing. | ||||
|     # This value determines the Home Manager release that your configuration is | ||||
|     # compatible with. This helps avoid breakage when a new Home Manager release | ||||
|     # introduces backwards incompatible changes. | ||||
|     # | ||||
|     # You should not change this value, even if you update Home Manager. If you do | ||||
|     # want to update the value, then make sure to first check the Home Manager | ||||
|     # release notes. | ||||
|     stateVersion = "23.11"; # Please read the comment before changing. | ||||
| 
 | ||||
|   # The home.packages option allows you to install Nix packages into your | ||||
|   # environment. | ||||
|   home.packages = [ | ||||
|     # # Adds the 'hello' command to your environment. It prints a friendly | ||||
|     # # "Hello, world!" when run. | ||||
|     # pkgs.hello | ||||
|     # The home.packages option allows you to install Nix packages into your | ||||
|     # environment. | ||||
|     packages = [ | ||||
|       # # Adds the 'hello' command to your environment. It prints a friendly | ||||
|       # # "Hello, world!" when run. | ||||
|       # pkgs.hello | ||||
| 
 | ||||
|     # # It is sometimes useful to fine-tune packages, for example, by applying | ||||
|     # # overrides. You can do that directly here, just don't forget the | ||||
|     # # parentheses. Maybe you want to install Nerd Fonts with a limited number of | ||||
|     # # fonts? | ||||
|     # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) | ||||
|       # # It is sometimes useful to fine-tune packages, for example, by applying | ||||
|       # # overrides. You can do that directly here, just don't forget the | ||||
|       # # parentheses. Maybe you want to install Nerd Fonts with a limited number of | ||||
|       # # fonts? | ||||
|       # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) | ||||
| 
 | ||||
|     # # You can also create simple shell scripts directly inside your | ||||
|     # # configuration. For example, this adds a command 'my-hello' to your | ||||
|     # # environment: | ||||
|     # (pkgs.writeShellScriptBin "my-hello" '' | ||||
|     #   echo "Hello, ${config.home.username}!" | ||||
|     # '') | ||||
|   ]; | ||||
|       # # You can also create simple shell scripts directly inside your | ||||
|       # # configuration. For example, this adds a command 'my-hello' to your | ||||
|       # # environment: | ||||
|       # (pkgs.writeShellScriptBin "my-hello" '' | ||||
|       #   echo "Hello, ${config.home.username}!" | ||||
|       # '') | ||||
|     ]; | ||||
| 
 | ||||
|   # Home Manager is pretty good at managing dotfiles. The primary way to manage | ||||
|   # plain files is through 'home.file'. | ||||
|   home.file = { | ||||
|     # # Building this configuration will create a copy of 'dotfiles/screenrc' in | ||||
|     # # the Nix store. Activating the configuration will then make '~/.screenrc' a | ||||
|     # # symlink to the Nix store copy. | ||||
|     # ".screenrc".source = dotfiles/screenrc; | ||||
|     # Home Manager is pretty good at managing dotfiles. The primary way to manage | ||||
|     # plain files is through 'home.file'. | ||||
|     file = { | ||||
|       # # Building this configuration will create a copy of 'dotfiles/screenrc' in | ||||
|       # # the Nix store. Activating the configuration will then make '~/.screenrc' a | ||||
|       # # symlink to the Nix store copy. | ||||
|       # ".screenrc".source = dotfiles/screenrc; | ||||
| 
 | ||||
|     # # You can also set the file content immediately. | ||||
|     # ".gradle/gradle.properties".text = '' | ||||
|     #   org.gradle.console=verbose | ||||
|     #   org.gradle.daemon.idletimeout=3600000 | ||||
|     # ''; | ||||
|   }; | ||||
|       # # You can also set the file content immediately. | ||||
|       # ".gradle/gradle.properties".text = '' | ||||
|       #   org.gradle.console=verbose | ||||
|       #   org.gradle.daemon.idletimeout=3600000 | ||||
|       # ''; | ||||
|     }; | ||||
| 
 | ||||
|   # Home Manager can also manage your environment variables through | ||||
|   # 'home.sessionVariables'. If you don't want to manage your shell through Home | ||||
|   # Manager then you have to manually source 'hm-session-vars.sh' located at | ||||
|   # either | ||||
|   # | ||||
|   #  ~/.nix-profile/etc/profile.d/hm-session-vars.sh | ||||
|   # | ||||
|   # or | ||||
|   # | ||||
|   #  ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh | ||||
|   # | ||||
|   # or | ||||
|   # | ||||
|   #  /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh | ||||
|   # | ||||
|   home.sessionVariables = { | ||||
|     # EDITOR = "emacs"; | ||||
|     # Home Manager can also manage your environment variables through | ||||
|     # 'home.sessionVariables'. If you don't want to manage your shell through Home | ||||
|     # Manager then you have to manually source 'hm-session-vars.sh' located at | ||||
|     # either | ||||
|     # | ||||
|     #  ~/.nix-profile/etc/profile.d/hm-session-vars.sh | ||||
|     # | ||||
|     # or | ||||
|     # | ||||
|     #  ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh | ||||
|     # | ||||
|     # or | ||||
|     # | ||||
|     #  /etc/profiles/per-user/leyla/etc/profile.d/hm-session-vars.sh | ||||
|     # | ||||
|     sessionVariables = { | ||||
|       # EDITOR = "emacs"; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   programs = { | ||||
|  |  | |||
|  | @ -8,19 +8,21 @@ in | |||
|     ../../overlays/vscodium.nix | ||||
|   ]; | ||||
| 
 | ||||
|   programs.bash.shellAliases = lib.mkIf cfg.isFullUser ({ | ||||
|     code = "codium"; | ||||
|   }); | ||||
|   programs = { | ||||
|     bash.shellAliases = lib.mkIf cfg.isFullUser { | ||||
|       code = "codium"; | ||||
|     }; | ||||
| 
 | ||||
|   programs.steam = lib.mkIf cfg.isFullUser ({ | ||||
|     enable = true; | ||||
|     remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play | ||||
|     dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server | ||||
|   }); | ||||
|     steam = lib.mkIf cfg.isFullUser { | ||||
|       enable = true; | ||||
|       remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play | ||||
|       dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server | ||||
|     }; | ||||
| 
 | ||||
|   programs.noisetorch.enable = cfg.isFullUser; | ||||
|     noisetorch.enable = cfg.isFullUser; | ||||
| 
 | ||||
|   programs.adb.enable = cfg.isFullUser; | ||||
|     adb.enable = cfg.isFullUser; | ||||
|   }; | ||||
| 
 | ||||
|   users.users.leyla.packages = lib.mkIf (cfg.isFullUser || cfg.isThinUser) ( | ||||
|     lib.mkMerge [ | ||||
|  |  | |||
|  | @ -1,8 +1,8 @@ | |||
| { lib, ... }: | ||||
| _: | ||||
| { | ||||
|   mkUnless = condition: then: (mkIf (!condition) then); | ||||
|   mkIfElse = condition: then: else: lib.mkMerge [ | ||||
|     (mkIf condition then) | ||||
|     (mkUnless condition else) | ||||
|   ]; | ||||
|   # mkUnless = condition: then: (mkIf (!condition) then); | ||||
|   # mkIfElse = condition: then: else: lib.mkMerge [ | ||||
|   #   (mkIf condition then) | ||||
|   #   (mkUnless condition else) | ||||
|   # ]; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue