Replace old modules
This commit is contained in:
parent
63ffbcfe89
commit
969abe113e
@ -1,7 +1,90 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, options, inputs, ...}@args:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.profile.base;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
options.nixfiles.profile.base = {
|
||||||
./fragments/base.nix
|
enable = lib.mkEnableOption "base config";
|
||||||
./fragments/me.nix
|
};
|
||||||
|
# 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 = 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;
|
||||||
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ let
|
|||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./temp-new
|
|
||||||
];
|
];
|
||||||
config = {};
|
config = {};
|
||||||
options.nixfiles = {
|
options.nixfiles = {
|
||||||
|
@ -1,37 +1,58 @@
|
|||||||
{ config, lib, pkgs, outputs, ...}:
|
{ config, lib, pkgs, outputs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.desktop;
|
||||||
|
inherit (lib) mkIf mkDefault mkForce mkEnableOption;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
# imports = [
|
||||||
./base.nix
|
# ./base.nix
|
||||||
./fragments/sound.nix
|
# ./fragments/sound.nix
|
||||||
./fragments/multimedia.nix
|
# ./fragments/multimedia.nix
|
||||||
./fragments/software/syncthing.nix
|
# ./fragments/software/syncthing.nix
|
||||||
./fragments/hardware/bluetooth.nix
|
# ./fragments/hardware/bluetooth.nix
|
||||||
];
|
# ];
|
||||||
|
|
||||||
# Enable the X11 windowing system.
|
|
||||||
services.xserver.enable = true;
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
options.nixfiles.common.desktop = {
|
||||||
arc-theme
|
enable = mkEnableOption "common desktop options";
|
||||||
wl-clipboard
|
};
|
||||||
];
|
|
||||||
|
|
||||||
# Enable flatpak
|
config = mkIf cfg.enable {
|
||||||
services.flatpak.enable = true;
|
# enable option sets
|
||||||
|
nixfiles = {
|
||||||
|
packageSets.multimedia.enable = true;
|
||||||
|
common = {
|
||||||
|
syncthing.enable = true;
|
||||||
|
bluetooth.enable = true;
|
||||||
|
sound.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
# Enable the X11 windowing system.
|
||||||
services.printing.enable = true;
|
services.xserver.enable = true;
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
(nerdfonts.override { fonts = [ "FiraCode" ]; })
|
arc-theme
|
||||||
noto-fonts-cjk
|
wl-clipboard
|
||||||
(outputs.packages.${pkgs.system}.google-fonts.override { fonts = [ "NovaSquare" ];})
|
|
||||||
];
|
|
||||||
|
|
||||||
users.users.nullbite = {
|
|
||||||
packages = with pkgs; [
|
|
||||||
firefox
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# 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
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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 +1,16 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.bluetooth;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
hardware.bluetooth = {
|
options.nixfiles.common.bluetooth = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkEnableOption "Bluetooth";
|
||||||
powerOnBoot = lib.mkDefault true;
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
hardware.bluetooth = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
powerOnBoot = lib.mkDefault true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,37 +1,47 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.nvidia;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
# imports = [
|
||||||
../opengl.nix
|
# ../opengl.nix
|
||||||
];
|
# ];
|
||||||
|
|
||||||
# Load nvidia driver for Xorg and Wayland
|
# Load nvidia driver for Xorg and Wayland
|
||||||
services.xserver.videoDrivers = ["nvidia"];
|
options.nixfiles.common.nvidia = {
|
||||||
|
modesetting.enable = lib.mkEnableOption "NVIDIA configuration with modesetting";
|
||||||
|
};
|
||||||
|
config = lib.mkIf cfg.modesetting.enable {
|
||||||
|
services.xserver.videoDrivers = ["nvidia"];
|
||||||
|
|
||||||
hardware.nvidia = {
|
nixfiles.common.opengl.enable = true;
|
||||||
|
|
||||||
# Modesetting is required.
|
hardware.nvidia = {
|
||||||
modesetting.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
# Modesetting is required.
|
||||||
powerManagement.enable = lib.mkDefault false;
|
modesetting.enable = lib.mkDefault true;
|
||||||
# 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
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
# independent third-party "nouveau" open source driver).
|
powerManagement.enable = lib.mkDefault false;
|
||||||
# Support is limited to the Turing and later architectures. Full list of
|
# Fine-grained power management. Turns off GPU when not in use.
|
||||||
# supported GPUs is at:
|
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
|
||||||
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
|
powerManagement.finegrained = lib.mkDefault false;
|
||||||
# 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,
|
# Use the NVidia open source kernel module (not to be confused with the
|
||||||
# accessible via `nvidia-settings`.
|
# independent third-party "nouveau" open source driver).
|
||||||
nvidiaSettings = lib.mkDefault true;
|
# 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;
|
||||||
|
|
||||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
# Enable the Nvidia settings menu,
|
||||||
package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.production;
|
# 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 +1,25 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.me;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
users.users.nullbite = {
|
options.nixfiles.common.me = lib.mkEnableOption "my user account";
|
||||||
isNormalUser = true;
|
config = lib.mkIf cfg.enable {
|
||||||
extraGroups = [ "wheel" ];
|
users.users.nullbite = {
|
||||||
packages = with pkgs; [
|
isNormalUser = true;
|
||||||
keychain
|
extraGroups = [ "wheel" ];
|
||||||
];
|
packages = with pkgs; [
|
||||||
initialPassword = "changeme";
|
keychain
|
||||||
shell = pkgs.zsh;
|
];
|
||||||
};
|
initialPassword = "changeme";
|
||||||
|
shell = pkgs.zsh;
|
||||||
|
};
|
||||||
|
|
||||||
# shell config
|
# shell config
|
||||||
programs.zsh.enable = true;
|
programs.zsh.enable = true;
|
||||||
programs.fzf = {
|
programs.fzf = {
|
||||||
keybindings = true;
|
keybindings = true;
|
||||||
fuzzyCompletion = true;
|
fuzzyCompletion = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,22 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.packageSets.multimedia;
|
||||||
|
inherit (lib) optionals mkEnableOption mkIf;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./cli-multimedia.nix ];
|
options.nixfiles.packageSets.multimedia = {
|
||||||
environment.systemPackages = with pkgs; [
|
enable = mkEnableOption "multimedia packages";
|
||||||
mpv
|
};
|
||||||
gimp-with-plugins
|
config = mkIf cfg.enable {
|
||||||
];
|
environment.systemPackages = with pkgs; optionals config.services.xserver.enable [
|
||||||
|
mpv
|
||||||
|
gimp-with-plugins
|
||||||
|
krita
|
||||||
|
inkscape
|
||||||
|
] ++ [
|
||||||
|
yt-dlp
|
||||||
|
imagemagick
|
||||||
|
ffmpeg
|
||||||
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.opengl;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
options.nixfiles.common.opengl.enable = lib.mkEnableOption "OpenGL configuration";
|
||||||
# Enable OpenGL
|
config = lib.mkIf cfg.enable {
|
||||||
hardware.opengl = {
|
# Enable OpenGL
|
||||||
enable = true;
|
hardware.opengl = {
|
||||||
driSupport = true;
|
enable = true;
|
||||||
driSupport32Bit = true;
|
driSupport = lib.mkDefault true;
|
||||||
|
driSupport32Bit = lib.mkDefault config.hardware.opengl.driSupport;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,19 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.nixfiles.programs.syncthing;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
services.syncthing = {
|
options.nixfiles.programs.syncthing = {
|
||||||
enable = lib.mkDefault true;
|
enable = mkEnableOption "Syncthing configuration";
|
||||||
user = lib.mkDefault "nullbite";
|
};
|
||||||
dataDir = lib.mkDefault "/home/nullbite/Documents";
|
|
||||||
configDir = lib.mkDefault "/home/nullbite/.config/syncthing";
|
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,22 +1,34 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.common.sound;
|
||||||
|
inherit (lib) mkEnableOption mkIf mkDefault;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# Enable sound.
|
# Enable sound.
|
||||||
# sound.enable = true;
|
# sound.enable = true;
|
||||||
# hardware.pulseaudio.enable = true;
|
# hardware.pulseaudio.enable = true;
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pipewire = {
|
options.nixfiles.common.sound = {
|
||||||
enable = true;
|
enable = mkEnableOption "sound configuration";
|
||||||
alsa.enable = true;
|
};
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
config = mkIf cfg.enable {
|
||||||
jack.enable = true;
|
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
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
qpwgraph
|
|
||||||
pavucontrol
|
|
||||||
ncpamixer
|
|
||||||
pulsemixer
|
|
||||||
easyeffects
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
@ -1,32 +1,40 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
{ config, lib, pkgs, ...}:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.packageSets.gaming;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# oopsies this is for home-manager
|
# oopsies this is for home-manager
|
||||||
# programs.mangohud.enable = lib.mkDefault true;
|
# programs.mangohud.enable = lib.mkDefault true;
|
||||||
|
|
||||||
programs.steam = {
|
options.nixfiles.packageSets.gaming = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkEnableOption "gaming package set";
|
||||||
gamescopeSession = {
|
};
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.steam = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
|
gamescopeSession = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
programs.gamemode = {
|
programs.gamemode = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
enableRenice = lib.mkDefault true;
|
enableRenice = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.gamescope = {
|
programs.gamescope = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
capSysNice = lib.mkDefault false;
|
capSysNice = lib.mkDefault false;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
mangohud
|
mangohud
|
||||||
goverlay
|
goverlay
|
||||||
prismlauncher
|
prismlauncher
|
||||||
glxinfo
|
glxinfo
|
||||||
vulkan-tools
|
vulkan-tools
|
||||||
legendary-gl
|
legendary-gl
|
||||||
heroic
|
heroic
|
||||||
];
|
];
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,35 +1,45 @@
|
|||||||
{ lib, pkgs, config, ... }:
|
{ lib, pkgs, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.nixfiles.sessions.hyprland;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
# imports = [
|
||||||
./desktop-common.nix
|
# ./desktop-common.nix
|
||||||
# FIXME make this into an option
|
# # FIXME make this into an option
|
||||||
./wm-common.nix
|
# ./wm-common.nix
|
||||||
];
|
# ];
|
||||||
|
|
||||||
services.xserver.displayManager.sddm.enable = true;
|
options.nixfiles.sessions.hyprland = {
|
||||||
|
enable = lib.mkEnableOption "hyprland configuration";
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
enableNvidiaPatches = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.portal = {
|
config = lib.mkIf cfg.enable {
|
||||||
enable = true;
|
services.xserver.displayManager.sddm.enable = true;
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
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
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
kitty
|
|
||||||
dunst
|
|
||||||
polkit-kde-agent
|
|
||||||
eww
|
|
||||||
hyprpaper
|
|
||||||
rofi
|
|
||||||
hyprpicker
|
|
||||||
udiskie
|
|
||||||
polkit-kde-agent
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
@ -2,38 +2,48 @@
|
|||||||
let
|
let
|
||||||
sleep = "${pkgs.coreutils}/bin/sleep";
|
sleep = "${pkgs.coreutils}/bin/sleep";
|
||||||
systemctl = "${pkgs.systemd}/bin/systemctl";
|
systemctl = "${pkgs.systemd}/bin/systemctl";
|
||||||
|
inherit (lib) mkIf mkEnableOption mkForce mkDefault;
|
||||||
|
cfg = config.nixfiles.session.plasma;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
# imports = [
|
||||||
./desktop-common.nix
|
# ./desktop-common.nix
|
||||||
];
|
# ];
|
||||||
|
|
||||||
services.xserver.displayManager.sddm.enable = true;
|
options.nixfiles.session.plasma = {
|
||||||
services.xserver.desktopManager.plasma5.enable = true;
|
enable = mkEnableOption "KDE Plasma session";
|
||||||
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; [
|
config = mkIf cfg.enable {
|
||||||
# this fixes tiny file dialogs for Minecraft
|
nixfiles.common.desktop.enable = true;
|
||||||
libsForQt5.kdialog
|
|
||||||
];
|
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,16 +1,23 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.nixfiles.common.remoteAccess;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
# Enable the OpenSSH daemon.
|
config = lib.mkIf cfg.enable {
|
||||||
# services.openssh.enable = true;
|
# Enable the OpenSSH daemon.
|
||||||
services.openssh = {
|
# services.openssh.enable = true;
|
||||||
enable = true;
|
services.openssh = {
|
||||||
openFirewall = true;
|
enable = true;
|
||||||
settings = {
|
openFirewall = true;
|
||||||
|
settings = {
|
||||||
|
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.tailscale.enable = true;
|
||||||
|
|
||||||
|
networking.wireguard.enable = true;
|
||||||
};
|
};
|
||||||
|
options = {
|
||||||
services.tailscale.enable = true;
|
nixfiles.common.remoteAccess = mkEnbaleOption "remote access options" ; };
|
||||||
|
|
||||||
networking.wireguard.enable = true;
|
|
||||||
}
|
}
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
# 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.
|
|
@ -1,90 +0,0 @@
|
|||||||
{ 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 = 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;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
{ pkgs, config, lib, options, ... }@args:
|
|
||||||
let
|
|
||||||
cfg = config.nixfiles;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
];
|
|
||||||
config = {};
|
|
||||||
options.nixfiles = {
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
{ 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 = {
|
|
||||||
packageSets.multimedia.enable = true;
|
|
||||||
common = {
|
|
||||||
syncthing.enable = true;
|
|
||||||
bluetooth.enable = true;
|
|
||||||
sound.enable = 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
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
let
|
|
||||||
cfg = config.nixfiles.common.bluetooth;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.nixfiles.common.bluetooth = {
|
|
||||||
enable = lib.mkEnableOption "Bluetooth";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
hardware.bluetooth = {
|
|
||||||
enable = lib.mkDefault true;
|
|
||||||
powerOnBoot = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
let
|
|
||||||
cfg = config.nixfiles.common.nvidia;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# imports = [
|
|
||||||
# ../opengl.nix
|
|
||||||
# ];
|
|
||||||
|
|
||||||
# Load nvidia driver for Xorg and Wayland
|
|
||||||
options.nixfiles.common.nvidia = {
|
|
||||||
modesetting.enable = lib.mkEnableOption "NVIDIA configuration with modesetting";
|
|
||||||
};
|
|
||||||
config = lib.mkIf cfg.modesetting.enable {
|
|
||||||
services.xserver.videoDrivers = ["nvidia"];
|
|
||||||
|
|
||||||
nixfiles.common.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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
let
|
|
||||||
cfg = config.nixfiles.common.me;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.nixfiles.common.me = 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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
{ 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,15 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
let
|
|
||||||
cfg = config.nixfiles.common.opengl;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.nixfiles.common.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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
{ 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,34 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
let
|
|
||||||
cfg = config.nixfiles.common.sound;
|
|
||||||
inherit (lib) mkEnableOption mkIf mkDefault;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Enable sound.
|
|
||||||
# sound.enable = true;
|
|
||||||
# hardware.pulseaudio.enable = true;
|
|
||||||
|
|
||||||
options.nixfiles.common.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,40 +0,0 @@
|
|||||||
{ 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
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
{ 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 {
|
|
||||||
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
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -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,9 +0,0 @@
|
|||||||
{ config, lib, pkgs, outputs, vars, ...}@args:
|
|
||||||
{
|
|
||||||
imports = [ outputs.nixosModules.adb ];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
programs.adb.enable = true;
|
|
||||||
users.users.${vars.username}.extraGroups = [ "adbusers" ];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
{ config, lib, pkgs, ...}:
|
|
||||||
{
|
|
||||||
environment = {
|
|
||||||
enableDebugInfo = true;
|
|
||||||
systemPackages = with pkgs; [
|
|
||||||
gdb
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
{ 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,23 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
with lib; 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 = mkEnbaleOption "remote access options" ; };
|
|
||||||
}
|
|
@ -1,21 +0,0 @@
|
|||||||
{ pkgs, lib, config, options, ...}:
|
|
||||||
let
|
|
||||||
inherit (lib) mkDefault mkIf mkEnableOption;
|
|
||||||
cfg = config.nixfiles.common.window-manager;
|
|
||||||
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.window-manager.enable = mkEnableOption "common window manager configuration";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,15 +1,21 @@
|
|||||||
{ pkgs, lib, config, options, ...}:
|
{ pkgs, lib, config, options, ...}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkDefault;
|
inherit (lib) mkDefault mkIf mkEnableOption;
|
||||||
|
cfg = config.nixfiles.common.window-manager;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# Common options for standalone window managers; many of these (or
|
config = mkIf cfg.enable {
|
||||||
# alternatives thereof) are pulled in by desktop environments.
|
# Common options for standalone window managers; many of these (or
|
||||||
services = {
|
# alternatives thereof) are pulled in by desktop environments.
|
||||||
power-profiles-daemon.enable = mkDefault true;
|
services = {
|
||||||
blueman.enable = mkDefault config.hardware.bluetooth.enable;
|
power-profiles-daemon.enable = mkDefault true;
|
||||||
|
blueman.enable = mkDefault config.hardware.bluetooth.enable;
|
||||||
|
};
|
||||||
|
programs = {
|
||||||
|
nm-applet.enable = mkDefault config.networking.networkmanager.enable;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
programs = {
|
options = {
|
||||||
nm-applet.enable = mkDefault config.networking.networkmanager.enable;
|
nixfiles.common.window-manager.enable = mkEnableOption "common window manager configuration";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user