Merge branch 'convert-to-options'
This commit is contained in:
commit
73a3c579c6
@ -17,14 +17,18 @@
|
|||||||
[ # Include the results of the hardware scan.
|
[ # Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
|
|
||||||
|
../../system # nixfiles modules
|
||||||
./nvidia-optimus.nix
|
./nvidia-optimus.nix
|
||||||
../../system/remote.nix
|
../../system/fragments/android.nix
|
||||||
# ../../system/plasma.nix
|
|
||||||
../../system/fragments/opengl.nix
|
|
||||||
../../system/gaming.nix
|
|
||||||
../../system/android.nix
|
|
||||||
../../system/hyprland.nix
|
|
||||||
];
|
];
|
||||||
|
nixfiles = {
|
||||||
|
common.remoteAccess.enable = true;
|
||||||
|
hardware.opengl.enable = true;
|
||||||
|
packageSets.gaming.enable = true;
|
||||||
|
sessions.hyprland.enable = true;
|
||||||
|
sessions.plasma.enable = lib.mkDefault false;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
networking.hostName = "slab";
|
networking.hostName = "slab";
|
||||||
|
|
||||||
|
@ -1 +1,2 @@
|
|||||||
|
_:
|
||||||
{}
|
{}
|
||||||
|
@ -1,2 +1,4 @@
|
|||||||
# system
|
# system
|
||||||
This directory contains modules and configuration specific to my NixOS configuration. `default.nix` is the entrypoint to my module set; it can safely be loaded without making any configuration changes by default.
|
This directory contains modules and configuration specific to my NixOS
|
||||||
|
configuration. `default.nix` is the entrypoint to my module set; it can
|
||||||
|
safely be loaded without making any configuration changes by default.
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./fragments/base.nix
|
|
||||||
./fragments/me.nix
|
|
||||||
];
|
|
||||||
}
|
|
9
system/common/default.nix
Normal file
9
system/common/default.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{...}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./desktop.nix
|
||||||
|
./me.nix
|
||||||
|
./remote.nix
|
||||||
|
./wm.nix
|
||||||
|
];
|
||||||
|
}
|
59
system/common/desktop.nix
Normal file
59
system/common/desktop.nix
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{ config, lib, pkgs, outputs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.desktop;
|
||||||
|
inherit (lib) mkIf mkDefault mkForce mkEnableOption;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# imports = [
|
||||||
|
# ./base.nix
|
||||||
|
# ./fragments/sound.nix
|
||||||
|
# ./fragments/multimedia.nix
|
||||||
|
# ./fragments/software/syncthing.nix
|
||||||
|
# ./fragments/hardware/bluetooth.nix
|
||||||
|
# ];
|
||||||
|
|
||||||
|
options.nixfiles.common.desktop = {
|
||||||
|
enable = mkEnableOption "common desktop options";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# enable option sets
|
||||||
|
nixfiles = {
|
||||||
|
profile.base.enable = true;
|
||||||
|
packageSets.multimedia.enable = mkDefault true;
|
||||||
|
programs.syncthing.enable = mkDefault true;
|
||||||
|
hardware = {
|
||||||
|
bluetooth.enable = mkDefault true;
|
||||||
|
sound.enable = mkDefault true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable the X11 windowing system.
|
||||||
|
services.xserver.enable = true;
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
arc-theme
|
||||||
|
wl-clipboard
|
||||||
|
];
|
||||||
|
|
||||||
|
# Enable flatpak
|
||||||
|
services.flatpak.enable = mkDefault true;
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing.enable = mkDefault true;
|
||||||
|
|
||||||
|
fonts.packages = with pkgs; [
|
||||||
|
(nerdfonts.override { fonts = [ "FiraCode" ]; })
|
||||||
|
noto-fonts-cjk
|
||||||
|
(outputs.packages.${pkgs.system}.google-fonts.override { fonts = [ "NovaSquare" ];})
|
||||||
|
];
|
||||||
|
|
||||||
|
# TODO this should be defined in home-manager or not at all probably
|
||||||
|
# FIXME also my name is hardcoded
|
||||||
|
users.users.nullbite = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
firefox
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
28
system/common/me.nix
Normal file
28
system/common/me.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.me;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixfiles.common.me = {
|
||||||
|
enable = lib.mkEnableOption "my user account";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
users.users.nullbite = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ];
|
||||||
|
packages = with pkgs; [
|
||||||
|
keychain
|
||||||
|
];
|
||||||
|
initialPassword = "changeme";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
|
||||||
|
# shell config
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
programs.fzf = {
|
||||||
|
keybindings = true;
|
||||||
|
fuzzyCompletion = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
23
system/common/remote.nix
Normal file
23
system/common/remote.nix
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.remoteAccess;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# Enable the OpenSSH daemon.
|
||||||
|
# services.openssh.enable = true;
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
settings = {
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
|
||||||
|
networking.wireguard.enable = true;
|
||||||
|
};
|
||||||
|
options = {
|
||||||
|
nixfiles.common.remoteAccess.enable = lib.mkEnableOption "remote access options" ; };
|
||||||
|
}
|
21
system/common/wm.nix
Normal file
21
system/common/wm.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{ pkgs, lib, config, options, ...}:
|
||||||
|
let
|
||||||
|
inherit (lib) mkDefault mkIf mkEnableOption;
|
||||||
|
cfg = config.nixfiles.common.wm;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
# Common options for standalone window managers; many of these (or
|
||||||
|
# alternatives thereof) are pulled in by desktop environments.
|
||||||
|
services = {
|
||||||
|
power-profiles-daemon.enable = mkDefault true;
|
||||||
|
blueman.enable = mkDefault config.hardware.bluetooth.enable;
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
nm-applet.enable = mkDefault config.networking.networkmanager.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
options = {
|
||||||
|
nixfiles.common.wm.enable = mkEnableOption "common window manager configuration";
|
||||||
|
};
|
||||||
|
}
|
@ -4,6 +4,12 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
./common
|
||||||
|
./hardware
|
||||||
|
./package-sets
|
||||||
|
./profile
|
||||||
|
./programs
|
||||||
|
./sessions
|
||||||
];
|
];
|
||||||
config = {};
|
config = {};
|
||||||
options.nixfiles = {
|
options.nixfiles = {
|
||||||
|
@ -1,37 +0,0 @@
|
|||||||
{ config, lib, pkgs, outputs, ...}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./base.nix
|
|
||||||
./fragments/sound.nix
|
|
||||||
./fragments/multimedia.nix
|
|
||||||
./fragments/software/syncthing.nix
|
|
||||||
./fragments/hardware/bluetooth.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
arc-theme
|
|
||||||
wl-clipboard
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enable flatpak
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
(nerdfonts.override { fonts = [ "FiraCode" ]; })
|
|
||||||
noto-fonts-cjk
|
|
||||||
(outputs.packages.${pkgs.system}.google-fonts.override { fonts = [ "NovaSquare" ];})
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.nullbite = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
firefox
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
# Fragments
|
|
||||||
These are Nix modules which aim to configure only one aspect of the system.
|
|
||||||
This can include installing and configuring single programs such as Steam,
|
|
||||||
MangoHud, Syncthing, or OpenSSH, as well as setting generic options for certain
|
|
||||||
hardware setups, such as NVIDIA PRIME Offloading.
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
These are some fragments that I want to create:
|
|
||||||
- hardware/nvidia
|
|
||||||
- hardware/nvidia-supergfxd
|
|
||||||
- hardware/printing
|
|
||||||
- CUPS
|
|
||||||
- QZTray (maybe?)
|
|
||||||
- software/steam
|
|
||||||
- software/syncthing
|
|
||||||
- software/libreoffice
|
|
||||||
- software/ssh
|
|
||||||
- software/gnupg
|
|
||||||
- software/pam-gnupg (dep. software/gnupg)
|
|
@ -1,74 +0,0 @@
|
|||||||
{ config, lib, pkgs, options, inputs, ...}@args:
|
|
||||||
{
|
|
||||||
# locale settings
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LC_ALL = "en_US.UTF-8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable flakes
|
|
||||||
nix.settings.experimental-features = ["nix-command" "flakes" ];
|
|
||||||
|
|
||||||
# fallback to building locally if binary cache fails (home-manager should be
|
|
||||||
# able to handle simple rebuilds offline)
|
|
||||||
nix.settings.fallback = true;
|
|
||||||
|
|
||||||
# Allow unfree packages
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
|
|
||||||
# networking.hostName = "nixos"; # Define your hostname.
|
|
||||||
# Pick only one of the below networking options.
|
|
||||||
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
|
||||||
networking.networkmanager.enable = lib.mkDefault true; # Easiest to use and most distros use this by default.
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
wget
|
|
||||||
curl
|
|
||||||
git
|
|
||||||
git-lfs
|
|
||||||
stow
|
|
||||||
zsh
|
|
||||||
ntfs3g
|
|
||||||
openssh
|
|
||||||
sshfs
|
|
||||||
file
|
|
||||||
|
|
||||||
fd
|
|
||||||
ripgrep
|
|
||||||
sbctl # TODO move this elsewhere
|
|
||||||
comma
|
|
||||||
nil
|
|
||||||
|
|
||||||
# network utilities
|
|
||||||
inetutils
|
|
||||||
socat
|
|
||||||
nmap
|
|
||||||
hping
|
|
||||||
|
|
||||||
# system utilities
|
|
||||||
htop
|
|
||||||
lshw
|
|
||||||
pciutils
|
|
||||||
];
|
|
||||||
|
|
||||||
# this makes comma and legacy nix utils use the flake nixpkgs for ABI
|
|
||||||
# compatibility becasue once `, vkcube` couldn't find the correct opengl
|
|
||||||
# driver or something (also it reduces the download size of temporary shell
|
|
||||||
# closures)
|
|
||||||
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ] ++ options.nix.nixPath.default;
|
|
||||||
|
|
||||||
programs.ssh.enableAskPassword = false;
|
|
||||||
programs.fuse.userAllowOther = true;
|
|
||||||
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
enableSSHSupport = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
yt-dlp
|
|
||||||
imagemagick
|
|
||||||
ffmpeg
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
hardware.bluetooth = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
powerOnBoot = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../opengl.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# Load nvidia driver for Xorg and Wayland
|
|
||||||
services.xserver.videoDrivers = ["nvidia"];
|
|
||||||
|
|
||||||
hardware.nvidia = {
|
|
||||||
|
|
||||||
# Modesetting is required.
|
|
||||||
modesetting.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
|
||||||
powerManagement.enable = lib.mkDefault 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 = lib.mkDefault 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 = lib.mkDefault false;
|
|
||||||
|
|
||||||
# Enable the Nvidia settings menu,
|
|
||||||
# accessible via `nvidia-settings`.
|
|
||||||
nvidiaSettings = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
|
||||||
package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
users.users.nullbite = {
|
|
||||||
isNormalUser = true;
|
|
||||||
extraGroups = [ "wheel" ];
|
|
||||||
packages = with pkgs; [
|
|
||||||
keychain
|
|
||||||
];
|
|
||||||
initialPassword = "changeme";
|
|
||||||
shell = pkgs.zsh;
|
|
||||||
};
|
|
||||||
|
|
||||||
# shell config
|
|
||||||
programs.zsh.enable = true;
|
|
||||||
programs.fzf = {
|
|
||||||
keybindings = true;
|
|
||||||
fuzzyCompletion = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
imports = [ ./cli-multimedia.nix ];
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
mpv
|
|
||||||
gimp-with-plugins
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
|
|
||||||
# Enable OpenGL
|
|
||||||
hardware.opengl = {
|
|
||||||
enable = true;
|
|
||||||
driSupport = true;
|
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
services.syncthing = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
user = lib.mkDefault "nullbite";
|
|
||||||
dataDir = lib.mkDefault "/home/nullbite/Documents";
|
|
||||||
configDir = lib.mkDefault "/home/nullbite/.config/syncthing";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
# Enable sound.
|
|
||||||
# sound.enable = true;
|
|
||||||
# hardware.pulseaudio.enable = true;
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
qpwgraph
|
|
||||||
pavucontrol
|
|
||||||
ncpamixer
|
|
||||||
pulsemixer
|
|
||||||
easyeffects
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
# oopsies this is for home-manager
|
|
||||||
# programs.mangohud.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
programs.steam = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
gamescopeSession = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.gamemode = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
enableRenice = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.gamescope = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
capSysNice = lib.mkDefault false;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
mangohud
|
|
||||||
goverlay
|
|
||||||
prismlauncher
|
|
||||||
glxinfo
|
|
||||||
vulkan-tools
|
|
||||||
legendary-gl
|
|
||||||
heroic
|
|
||||||
];
|
|
||||||
}
|
|
16
system/hardware/bluetooth.nix
Normal file
16
system/hardware/bluetooth.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.hardware.bluetooth;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixfiles.hardware.bluetooth = {
|
||||||
|
enable = lib.mkEnableOption "Bluetooth";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
powerOnBoot = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
system/hardware/default.nix
Normal file
9
system/hardware/default.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{...}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./bluetooth.nix
|
||||||
|
./nvidia.nix
|
||||||
|
./opengl.nix
|
||||||
|
./sound.nix
|
||||||
|
];
|
||||||
|
}
|
47
system/hardware/nvidia.nix
Normal file
47
system/hardware/nvidia.nix
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.hardware.nvidia;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# imports = [
|
||||||
|
# ../opengl.nix
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# Load nvidia driver for Xorg and Wayland
|
||||||
|
options.nixfiles.hardware.nvidia = {
|
||||||
|
modesetting.enable = lib.mkEnableOption "NVIDIA configuration with modesetting";
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.modesetting.enable {
|
||||||
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
|
|
||||||
|
nixfiles.hardware.opengl.enable = true;
|
||||||
|
|
||||||
|
hardware.nvidia = {
|
||||||
|
|
||||||
|
# Modesetting is required.
|
||||||
|
modesetting.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
|
powerManagement.enable = lib.mkDefault 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 = lib.mkDefault 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 = lib.mkDefault false;
|
||||||
|
|
||||||
|
# Enable the Nvidia settings menu,
|
||||||
|
# accessible via `nvidia-settings`.
|
||||||
|
nvidiaSettings = lib.mkDefault true;
|
||||||
|
|
||||||
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
|
package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
15
system/hardware/opengl.nix
Normal file
15
system/hardware/opengl.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.hardware.opengl;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixfiles.hardware.opengl.enable = lib.mkEnableOption "OpenGL configuration";
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# Enable OpenGL
|
||||||
|
hardware.opengl = {
|
||||||
|
enable = true;
|
||||||
|
driSupport = lib.mkDefault true;
|
||||||
|
driSupport32Bit = lib.mkDefault config.hardware.opengl.driSupport;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
34
system/hardware/sound.nix
Normal file
34
system/hardware/sound.nix
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.hardware.sound;
|
||||||
|
inherit (lib) optionals mkEnableOption mkIf mkDefault;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# Enable sound.
|
||||||
|
# sound.enable = true;
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
|
||||||
|
options.nixfiles.hardware.sound = {
|
||||||
|
enable = mkEnableOption "sound configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
security.rtkit.enable = mkDefault true;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = mkDefault true;
|
||||||
|
alsa.support32Bit = mkDefault config.services.pipewire.alsa.enable;
|
||||||
|
pulse.enable = mkDefault true;
|
||||||
|
jack.enable = mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
qpwgraph
|
||||||
|
easyeffects
|
||||||
|
] ++ optionals config.services.pipewire.pulse.enable [
|
||||||
|
pavucontrol
|
||||||
|
ncpamixer
|
||||||
|
pulsemixer
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -1,35 +0,0 @@
|
|||||||
{ lib, pkgs, config, ... }:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./desktop-common.nix
|
|
||||||
# FIXME make this into an option
|
|
||||||
./wm-common.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
services.xserver.displayManager.sddm.enable = true;
|
|
||||||
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
enableNvidiaPatches = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
kitty
|
|
||||||
dunst
|
|
||||||
polkit-kde-agent
|
|
||||||
eww
|
|
||||||
hyprpaper
|
|
||||||
rofi
|
|
||||||
hyprpicker
|
|
||||||
udiskie
|
|
||||||
polkit-kde-agent
|
|
||||||
];
|
|
||||||
}
|
|
7
system/package-sets/default.nix
Normal file
7
system/package-sets/default.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{...}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./gaming.nix
|
||||||
|
./multimedia.nix
|
||||||
|
];
|
||||||
|
}
|
40
system/package-sets/gaming.nix
Normal file
40
system/package-sets/gaming.nix
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.packageSets.gaming;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# oopsies this is for home-manager
|
||||||
|
# programs.mangohud.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
options.nixfiles.packageSets.gaming = {
|
||||||
|
enable = lib.mkEnableOption "gaming package set";
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.steam = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
gamescopeSession = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gamemode = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
enableRenice = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.gamescope = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
capSysNice = lib.mkDefault false;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
mangohud
|
||||||
|
goverlay
|
||||||
|
prismlauncher
|
||||||
|
glxinfo
|
||||||
|
vulkan-tools
|
||||||
|
legendary-gl
|
||||||
|
heroic
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
22
system/package-sets/multimedia.nix
Normal file
22
system/package-sets/multimedia.nix
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.packageSets.multimedia;
|
||||||
|
inherit (lib) optionals mkEnableOption mkIf;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixfiles.packageSets.multimedia = {
|
||||||
|
enable = mkEnableOption "multimedia packages";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; optionals config.services.xserver.enable [
|
||||||
|
mpv
|
||||||
|
gimp-with-plugins
|
||||||
|
krita
|
||||||
|
inkscape
|
||||||
|
] ++ [
|
||||||
|
yt-dlp
|
||||||
|
imagemagick
|
||||||
|
ffmpeg
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -1,39 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
let
|
|
||||||
sleep = "${pkgs.coreutils}/bin/sleep";
|
|
||||||
systemctl = "${pkgs.systemd}/bin/systemctl";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./desktop-common.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
services.xserver.displayManager.sddm.enable = true;
|
|
||||||
services.xserver.desktopManager.plasma5.enable = true;
|
|
||||||
services.xserver.displayManager.defaultSession = "plasmawayland";
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
|
|
||||||
systemd.user = {
|
|
||||||
services.restart-xdg-desktop-portal-kde = {
|
|
||||||
enable = true;
|
|
||||||
description = "hack to fix xdg-desktop-portal on kde";
|
|
||||||
wantedBy = [ "graphical-session.target" ];
|
|
||||||
after = [ "plasma-core.target" "xdg-desktop-portal.service" ];
|
|
||||||
requisite = [ "plasma-core.target" ];
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = [
|
|
||||||
"${sleep} 5"
|
|
||||||
"${systemctl} --user restart xdg-desktop-portal.service"
|
|
||||||
];
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = "yes";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
# this fixes tiny file dialogs for Minecraft
|
|
||||||
libsForQt5.kdialog
|
|
||||||
];
|
|
||||||
}
|
|
90
system/profile/base.nix
Normal file
90
system/profile/base.nix
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
{ config, lib, pkgs, options, inputs, ...}@args:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.profile.base;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixfiles.profile.base = {
|
||||||
|
enable = lib.mkEnableOption "base config";
|
||||||
|
};
|
||||||
|
# TODO was gonna add something but i forgor and now i'm too lazy
|
||||||
|
# to delete this
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(lib.mkIf cfg.enable {
|
||||||
|
|
||||||
|
# Enable my account
|
||||||
|
nixfiles.common.me.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
# locale settings
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LC_ALL = "en_US.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable flakes
|
||||||
|
nix.settings.experimental-features = ["nix-command" "flakes" ];
|
||||||
|
|
||||||
|
# fallback to building locally if binary cache fails (home-manager should be
|
||||||
|
# able to handle simple rebuilds offline)
|
||||||
|
nix.settings.fallback = true;
|
||||||
|
|
||||||
|
# Allow unfree packages
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
# networking.hostName = "nixos"; # Define your hostname.
|
||||||
|
# Pick only one of the below networking options.
|
||||||
|
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
|
||||||
|
networking.networkmanager.enable = lib.mkDefault true; # Easiest to use and most distros use this by default.
|
||||||
|
|
||||||
|
# List packages installed in system profile. To search, run:
|
||||||
|
# $ nix search wget
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
||||||
|
wget
|
||||||
|
curl
|
||||||
|
git
|
||||||
|
git-lfs
|
||||||
|
stow
|
||||||
|
zsh
|
||||||
|
ntfs3g
|
||||||
|
openssh
|
||||||
|
sshfs
|
||||||
|
file
|
||||||
|
|
||||||
|
fd
|
||||||
|
ripgrep
|
||||||
|
sbctl # TODO move this elsewhere
|
||||||
|
comma
|
||||||
|
nil
|
||||||
|
|
||||||
|
# network utilities
|
||||||
|
inetutils
|
||||||
|
socat
|
||||||
|
nmap
|
||||||
|
hping
|
||||||
|
|
||||||
|
# system utilities
|
||||||
|
htop
|
||||||
|
lshw
|
||||||
|
pciutils
|
||||||
|
];
|
||||||
|
|
||||||
|
# this makes comma and legacy nix utils use the flake nixpkgs for ABI
|
||||||
|
# compatibility becasue once `, vkcube` couldn't find the correct opengl
|
||||||
|
# driver or something (also it reduces the download size of temporary shell
|
||||||
|
# closures)
|
||||||
|
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ] ++ options.nix.nixPath.default;
|
||||||
|
|
||||||
|
programs.ssh.enableAskPassword = false;
|
||||||
|
programs.fuse.userAllowOther = true;
|
||||||
|
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
enableSSHSupport = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
|
||||||
|
boot.loader.systemd-boot.configurationLimit = lib.mkDefault 15;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
6
system/profile/default.nix
Normal file
6
system/profile/default.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{...}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./base.nix
|
||||||
|
];
|
||||||
|
}
|
6
system/programs/default.nix
Normal file
6
system/programs/default.nix
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
{...}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./syncthing.nix
|
||||||
|
];
|
||||||
|
}
|
19
system/programs/syncthing.nix
Normal file
19
system/programs/syncthing.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.nixfiles.programs.syncthing;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.nixfiles.programs.syncthing = {
|
||||||
|
enable = mkEnableOption "Syncthing configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.syncthing = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
user = lib.mkDefault "nullbite";
|
||||||
|
dataDir = lib.mkDefault "/home/nullbite/Documents";
|
||||||
|
configDir = lib.mkDefault "/home/nullbite/.config/syncthing";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -1,16 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
# Enable the OpenSSH daemon.
|
|
||||||
# services.openssh.enable = true;
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
openFirewall = true;
|
|
||||||
settings = {
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.tailscale.enable = true;
|
|
||||||
|
|
||||||
networking.wireguard.enable = true;
|
|
||||||
}
|
|
5
system/sessions/default.nix
Normal file
5
system/sessions/default.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{...}:
|
||||||
|
{ imports = [
|
||||||
|
./hyprland.nix
|
||||||
|
./plasma.nix
|
||||||
|
];}
|
51
system/sessions/hyprland.nix
Normal file
51
system/sessions/hyprland.nix
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{ lib, pkgs, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.sessions.hyprland;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# imports = [
|
||||||
|
# ./desktop-common.nix
|
||||||
|
# # FIXME make this into an option
|
||||||
|
# ./wm-common.nix
|
||||||
|
# ];
|
||||||
|
|
||||||
|
options.nixfiles.sessions.hyprland = {
|
||||||
|
enable = lib.mkEnableOption "hyprland configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# enable dependencies
|
||||||
|
nixfiles.common = {
|
||||||
|
desktop.enable = true;
|
||||||
|
wm.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.xserver.displayManager.sddm.enable = true;
|
||||||
|
|
||||||
|
programs.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
# TODO base this on if nvidia is enabled
|
||||||
|
enableNvidiaPatches = lib.mkDefault true;
|
||||||
|
xwayland.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
kitty
|
||||||
|
dunst
|
||||||
|
polkit-kde-agent
|
||||||
|
eww
|
||||||
|
hyprpaper
|
||||||
|
rofi
|
||||||
|
hyprpicker
|
||||||
|
udiskie
|
||||||
|
polkit-kde-agent
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
49
system/sessions/plasma.nix
Normal file
49
system/sessions/plasma.nix
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
sleep = "${pkgs.coreutils}/bin/sleep";
|
||||||
|
systemctl = "${pkgs.systemd}/bin/systemctl";
|
||||||
|
inherit (lib) mkIf mkEnableOption mkForce mkDefault;
|
||||||
|
cfg = config.nixfiles.session.plasma;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# imports = [
|
||||||
|
# ./desktop-common.nix
|
||||||
|
# ];
|
||||||
|
|
||||||
|
options.nixfiles.session.plasma = {
|
||||||
|
enable = mkEnableOption "KDE Plasma session";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
nixfiles.common.desktop.enable = true;
|
||||||
|
|
||||||
|
services.xserver.displayManager.sddm.enable = mkDefault true;
|
||||||
|
services.xserver.desktopManager.plasma5.enable = true;
|
||||||
|
services.xserver.displayManager.defaultSession = "plasmawayland";
|
||||||
|
programs.kdeconnect.enable = mkDefault true;
|
||||||
|
|
||||||
|
systemd.user = {
|
||||||
|
services.restart-xdg-desktop-portal-kde = {
|
||||||
|
enable = true;
|
||||||
|
description = "hack to fix xdg-desktop-portal on kde";
|
||||||
|
wantedBy = [ "graphical-session.target" ];
|
||||||
|
after = [ "plasma-core.target" "xdg-desktop-portal.service" ];
|
||||||
|
requisite = [ "plasma-core.target" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = [
|
||||||
|
"${sleep} 5"
|
||||||
|
"${systemctl} --user restart xdg-desktop-portal.service"
|
||||||
|
];
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
# this fixes tiny file dialogs for Minecraft
|
||||||
|
libsForQt5.kdialog
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
{ pkgs, lib, config, options, ...}:
|
|
||||||
let
|
|
||||||
inherit (lib) mkDefault;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Common options for standalone window managers; many of these (or
|
|
||||||
# alternatives thereof) are pulled in by desktop environments.
|
|
||||||
services = {
|
|
||||||
power-profiles-daemon.enable = mkDefault true;
|
|
||||||
blueman.enable = mkDefault config.hardware.bluetooth.enable;
|
|
||||||
};
|
|
||||||
programs = {
|
|
||||||
nm-applet.enable = mkDefault config.networking.networkmanager.enable;
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user