BROKEN: Expanding desktop option

This commit is contained in:
Jurn Wubben 2025-05-24 00:03:47 +02:00
parent 562a8b7a2e
commit d0a41df000
44 changed files with 272 additions and 296 deletions

View file

@ -1,5 +1,4 @@
{ {
osConfig,
pkgs, pkgs,
lib, lib,
... ...
@ -7,7 +6,7 @@
profileName = "jsw.nixos-default"; profileName = "jsw.nixos-default";
in { in {
programs.firefox = { programs.firefox = {
enable = osConfig.niksos.desktop; enable = true;
package = pkgs.wrapFirefox pkgs.firefox-unwrapped { package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
extraPolicies = { extraPolicies = {
DisableFirefoxStudies = true; DisableFirefoxStudies = true;

View file

@ -4,7 +4,7 @@
... ...
}: { }: {
programs.mpv = { programs.mpv = {
enable = osConfig.niksos.desktop; enable = true;
config = { config = {
vo = "gpu"; vo = "gpu";
profile = "gpu-hq"; profile = "gpu-hq";

View file

@ -1,7 +1,6 @@
{osConfig, ...}: { {osConfig, ...}: {
programs.nixcord = { programs.nixcord = {
enable = osConfig.niksos.neovim; enable = true;
discord.enable = false; discord.enable = false;
vesktop.enable = true; vesktop.enable = true;
vesktopConfig = { vesktopConfig = {

View file

@ -4,7 +4,7 @@
osConfig, osConfig,
... ...
}: { }: {
home.packages = lib.mkIf osConfig.niksos.desktop [ home.packages = [
pkgs.spotify pkgs.spotify
pkgs.signal-desktop pkgs.signal-desktop
]; ];

View file

@ -1,6 +1,5 @@
{osConfig, ...}: { {
services.udiskie = { services.udiskie = {
enable = osConfig.niksos.desktop;
tray = "never"; #NOTE: Don't have a bar (yet?) tray = "never"; #NOTE: Don't have a bar (yet?)
}; };
} }

View file

@ -10,21 +10,21 @@
pkgs.gh pkgs.gh
pkgs.ripgrep pkgs.ripgrep
pkgs.p7zip pkgs.p7zip
pkgs.rsync
pkgs.usbutils pkgs.usbutils
pkgs.pciutils pkgs.pciutils
pkgs.inetutils pkgs.inetutils
pkgs.aria2 pkgs.aria2
pkgs.dua pkgs.dua
pkgs.file pkgs.file
]
++ lib.optionals osConfig.niksos.desktop [
inputs.somcli.defaultPackage.${pkgs.system}
pkgs.ffmpeg pkgs.ffmpeg
pkgs.gurk-rs pkgs.gurk-rs
pkgs.playerctl pkgs.playerctl
] ]
++ lib.optionals osConfig.niksos.bluetooth [ ++ lib.optionals osConfig.niksos.bluetooth [
pkgs.ear2ctl pkgs.ear2ctl
]
++ lib.optionals osConfig.niksos.portable [
inputs.somcli.defaultPackage.${pkgs.system}
]; ];
;
} }

View file

@ -32,7 +32,9 @@
nixpkgsFromInputsPath = flake.inputs.nixpkgs.outPath or ""; nixpkgsFromInputsPath = flake.inputs.nixpkgs.outPath or "";
nixpkgs = nixpkgs =
flake.pkgs.${currentSystem}.nixpkgs flake.pkgs.${
currentSystem
}.nixpkgs
or ( or (
if nixpkgsFromInputsPath != "" if nixpkgsFromInputsPath != ""
then import nixpkgsFromInputsPath {} then import nixpkgsFromInputsPath {}

View file

@ -5,7 +5,7 @@
... ...
}: { }: {
stylix = { stylix = {
enable = osConfig.niksos.desktop; enable = true;
autoEnable = lib.mkDefault true; autoEnable = lib.mkDefault true;
image = ./background.png; image = ./background.png;

View file

@ -5,7 +5,7 @@
... ...
}: let }: let
inherit (lib) mkIf; inherit (lib) mkIf;
inherit (osConfig.niksos) desktop; cfg = osConfig.niksos.desktop.hyprland;
in { in {
imports = [ imports = [
./fuzzel.nix ./fuzzel.nix
@ -14,11 +14,11 @@ in {
./mako.nix ./mako.nix
]; ];
home.packages = mkIf desktop [ home.packages = mkIf cfg [
pkgs.wl-clipboard pkgs.wl-clipboard
]; ];
home.sessionVariables = mkIf desktop { home.sessionVariables = mkIf cfg { #FIXME: migrate to hyprconf
QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORM = "wayland";
SDL_VIDEODRIVER = "wayland"; SDL_VIDEODRIVER = "wayland";
XDG_SESSION_TYPE = "wayland"; XDG_SESSION_TYPE = "wayland";

View file

@ -5,7 +5,7 @@
... ...
}: { }: {
programs.fuzzel = { programs.fuzzel = {
enable = osConfig.niksos.desktop; enable = osConfig.niksos.desktop.hyprland;
settings.main = { settings.main = {
launch-prefix = "${lib.getExe pkgs.uwsm} app --"; launch-prefix = "${lib.getExe pkgs.uwsm} app --";
}; };

View file

@ -8,6 +8,7 @@
}: let }: let
inherit (lib) getExe; inherit (lib) getExe;
inherit (config.lib.stylix.colors) base0D; inherit (config.lib.stylix.colors) base0D;
inherit (osConfig.niksos) desktop games portable fingerprint;
runOnce = program: "pgrep ${program} || uwsm app -- ${program}"; runOnce = program: "pgrep ${program} || uwsm app -- ${program}";
uwsm = getExe pkgs.uwsm; uwsm = getExe pkgs.uwsm;
@ -35,11 +36,11 @@
nmtui = termapp "${pkgs.networkmanager}/bin/nmtui"; nmtui = termapp "${pkgs.networkmanager}/bin/nmtui";
somcli = let somcli = let
interactiveSom = pkgs.writeShellScriptBin "somcli" '' somSleep = pkgs.writeShellScriptBin "somsleep" ''
${getExe inputs.somcli.defaultPackage.${pkgs.system}} && sleep 5 ${getExe inputs.somcli.defaultPackage.${pkgs.system}} && sleep 5
''; '';
termSom = pkgs.writeShellScriptBin "somfoot" '' termSom = pkgs.writeShellScriptBin "somfoot" ''
${foot} -a "foot-somcli" ${getExe interactiveSom} ${foot} -a "foot-somcli" ${getExe somSleep}
''; '';
in in
appE termSom; appE termSom;
@ -61,7 +62,7 @@
) )
10); 10);
in { in {
config = lib.mkIf osConfig.niksos.desktop { config = lib.mkIf desktop {
home.file.".XCompose".text = '' home.file.".XCompose".text = ''
<Multi_key> <s> <h> <r> <u> <g> : "¯\\_()_/¯" # Shrug. <Multi_key> <s> <h> <r> <u> <g> : "¯\\_()_/¯" # Shrug.
''; '';
@ -88,7 +89,6 @@ in {
"$mod, Return, exec, ${foot}" "$mod, Return, exec, ${foot}"
"$mod Shift, Return, exec, ${firefox}" "$mod Shift, Return, exec, ${firefox}"
"$mod, Escape, exec, ${hyprlock}" "$mod, Escape, exec, ${hyprlock}"
"$mod Shift, S, exec, ${somcli}"
"$mod, A, exec, ${pulsemixer}" "$mod, A, exec, ${pulsemixer}"
"$mod, B, exec, ${bluetui}" "$mod, B, exec, ${bluetui}"
@ -111,13 +111,18 @@ in {
"$mod SHIFT, j, movewindow, d" "$mod SHIFT, j, movewindow, d"
] ]
++ workspaces ++ workspaces
++ lib.optionals osConfig.niksos.games (let ++ lib.optionals games (let
suyu = "${appE pkgs.suyu} -ql"; suyu = "${appE pkgs.suyu} -ql";
dolphin = appE pkgs.dolphin-emu; dolphin = appE pkgs.dolphin-emu;
in [ in [
"Super, s, exec, ${suyu}" "Super, s, exec, ${suyu}"
"Super, d, exec, ${dolphin}" "Super, d, exec, ${dolphin}"
]); ])
++ lib.optionals portable [
"$mod Shift, S, exec, ${somcli}"
] ++ lib.optionals fingerprint [
", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" #NOTE: Also check home/wayland/hyprland/settings + system/hardware/fingerprint
];
bindl = [ bindl = [
# media controls # media controls

View file

@ -15,7 +15,7 @@ in {
]; ];
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = osConfig.niksos.desktop; enable = osConfig.niksos.desktop.hyprland;
settings = { settings = {
env = [ env = [
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1" "QT_WAYLAND_DISABLE_WINDOWDECORATION,1"

View file

@ -1,4 +1,4 @@
{ {lib, osConfig, ...}: {
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
xwayland = { xwayland = {
force_zero_scaling = true; force_zero_scaling = true;
@ -93,6 +93,10 @@
"float, class:com.github.phase1geo.annotator" "float, class:com.github.phase1geo.annotator"
"float, class:foot-somcli" "float, class:foot-somcli"
"size >30% >30%, class:foot-somcli" "size >30% >30%, class:foot-somcli"
] ++ lib.optionals osConfig.niksos.fingerprint [
"float, class:foot-fprintd"
]; ];
#NOTE: Also check home/wayland/hyprland/binds + system/hardware/fingerprint
}; };
} }

View file

@ -1,12 +1,12 @@
{ {
config,
osConfig, osConfig,
config,
... ...
}: let }: let
inherit (config.lib.stylix.colors) base05; inherit (config.lib.stylix.colors) base05;
in { in {
programs.hyprlock = { programs.hyprlock = {
enable = osConfig.niksos.desktop; enable = osConfig.niksos.desktop.hyprland;
settings = { settings = {
general = { general = {

View file

@ -1,6 +1,6 @@
{osConfig, ...}: { {osConfig, ...}:{
services.mako = { services.mako = {
enable = osConfig.niksos.desktop; enable = osConfig.niksos.desktop.hyprland;
settings.defaultTimeout = 5000; settings.defaultTimeout = 5000;
}; };
} }

View file

@ -54,7 +54,10 @@ in {
networking.hostName = "vm"; networking.hostName = "vm";
niksos = { niksos = {
desktop = true; desktop = {
enable = true;
hyprland = true;
};
neovim = true; neovim = true;
}; };

View file

@ -13,7 +13,7 @@
# settings.ffmepg.accel = "nvenc"; # settings.ffmepg.accel = "nvenc";
settings.ffmpeg.preferredHwDevice = "/dev/dri/renderD128"; settings.ffmpeg.preferredHwDevice = "/dev/dri/renderD128";
accelerationDevices = [ accelerationDevices = [
"/dev/dri/renderD128" "/dev/dri/renderD128"
]; ];
}; };

View file

@ -1,30 +1,34 @@
# Do not modify this file! It was generated by nixos-generate-config # Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes # and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead. # to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{ {
imports = config,
[ (modulesPath + "/installer/scan/not-detected.nix") lib,
]; pkgs,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "sd_mod" ]; boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "sd_mod"];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = fileSystems."/" = {
{ device = "/dev/disk/by-uuid/33b7e681-d92a-40db-a172-b797591a1e2e"; device = "/dev/disk/by-uuid/33b7e681-d92a-40db-a172-b797591a1e2e";
fsType = "ext4"; fsType = "ext4";
}; };
fileSystems."/boot" = fileSystems."/boot" = {
{ device = "/dev/disk/by-uuid/0BEA-7525"; device = "/dev/disk/by-uuid/0BEA-7525";
fsType = "vfat"; fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ]; options = ["fmask=0022" "dmask=0022"];
}; };
swapDevices = [ ]; swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted 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 # (the default) this is the recommended approach. When using systemd-networkd it's

View file

@ -13,13 +13,17 @@ in {
]; ];
niksos = { niksos = {
bluetooth = true;
fingerprint = true; fingerprint = true;
games = true; bluetooth = true;
desktop = true;
portable = true; portable = true;
neovim = true; neovim = true;
kde = true; games = true;
desktop = {
enable = true;
hyprland = true;
kde = false;
};
}; };
home-manager.users.jsw.wayland.windowManager.hyprland.settings.monitor = ["eDP-1,2880x1920@120,0x0,1.5,vrr,1"]; home-manager.users.jsw.wayland.windowManager.hyprland.settings.monitor = ["eDP-1,2880x1920@120,0x0,1.5,vrr,1"];

View file

@ -1,4 +1,6 @@
{ {
#NOTE: This config serves as a list of all of the available options
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
]; ];
@ -6,9 +8,21 @@
boot.plymouth.enable = false; boot.plymouth.enable = false;
services.fwupd.enable = false; services.fwupd.enable = false;
# Other stuff that's enabled by default because i'll use it but it's still bloat is (note that this list shares a lot of resources): niksos = {
# - graphics drivers (~1.8gb) bluetooth = false;
# - networkmanager (~1.25gb) desktop = { enable = false; hyprland = false; kde = false; };
# - polkit (~1.25gb) fingerprint = false;
# - other stuff.. total: 4.68gb games = false;
graphics = { enable = false; intel = false; nvidia = false; };
neovim = false;
portable = false;
server = false;
};
#NOTE: Old info
## Other stuff that's enabled by default because i'll use it but it's still bloat is (note that this list shares a lot of resources):
## - graphics drivers (~1.8gb)
## - networkmanager (~1.25gb)
## - polkit (~1.25gb)
## - other stuff.. total: 4.68gb
} }

View file

@ -4,8 +4,10 @@
... ...
}: { }: {
environment.defaultPackages = [ environment.defaultPackages = [
pkgs.git # We need git for flakes
pkgs.neovim pkgs.neovim
inputs.agenix.packages.${pkgs.system}.default inputs.agenix.packages.${pkgs.system}.default
pkgs.rsync
]; # Still have to be able to edit configs. ]; # Still have to be able to edit configs.
environment.sessionVariables = {EDITOR = "nvim";}; environment.sessionVariables = {EDITOR = "nvim";};
} }

View file

@ -7,5 +7,6 @@
./programs ./programs
./server ./server
./services ./services
./desktop
]; ];
} }

View file

@ -0,0 +1,18 @@
{lib, ...}: let
mkEO = lib.mkEnableOption;
in {
imports = [
./greetd.nix
./hyprland.nix
./pipewire.nix
./plasma6.nix
./polkit.nix
./xdg.nix
];
options.niksos.desktop = {
enable = mkEO "enable desktop related programs.";
hyprland = mkEO "enable hyprland related programs.";
kde = mkEO "enable kde specialisation.";
};
}

View file

@ -2,8 +2,10 @@
config, config,
lib, lib,
... ...
}: { }: let
config = lib.mkIf config.niksos.desktop { cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
config = lib.mkIf cfg {
# greetd display manager # greetd display manager
services.greetd = let services.greetd = let
session = { session = {

View file

@ -0,0 +1,16 @@
{
config,
pkgs,
lib,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
config = lib.mkIf cfg {
programs.hyprland = {
enable = true;
withUWSM = true;
};
environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland.
};
}

View file

@ -3,8 +3,10 @@
lib, lib,
pkgs, pkgs,
... ...
}: { }: let
config = lib.mkIf config.niksos.desktop { cfg = config.niksos.desktop.enable;
in {
config = lib.mkIf cfg {
security.rtkit.enable = true; security.rtkit.enable = true;
services.pipewire = { services.pipewire = {

View file

@ -0,0 +1,33 @@
{
lib,
pkgs,
config,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.kde.enable;
in {
config = lib.mkIf cfg {
niksos.desktop.hyprland = lib.mkForce false;
specialisation.de.configuration = {
services = {
greetd = let
session = {
command = "${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland";
user = "jsw";
};
in {
enable = true;
settings = {
terminal.vt = 1;
default_session = session;
initial_session = session;
};
};
desktopManager.plasma6.enable = true;
};
home-manager.users.jsw.stylix.autoEnable = false;
};
};
}

22
system/desktop/polkit.nix Normal file
View file

@ -0,0 +1,22 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
systemd.user.services.polkit-gnome-authentication-agent-1 = lib.mkIf cfg {
description = "polkit-gnome-authentication-agent-1";
wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"];
after = ["graphical-session.target"];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
}

View file

@ -3,8 +3,10 @@
config, config,
lib, lib,
... ...
}: { }: let
xdg.portal = lib.mkIf config.niksos.desktop { cfg = config.niksos.desktop.enable && config.niksos.desktop.hyprland.enable;
in {
xdg.portal = lib.mkIf cfg {
enable = true; enable = true;
xdgOpenUsePortal = true; xdgOpenUsePortal = true;
config = { config = {

View file

@ -9,13 +9,14 @@
uwsm = lib.getExe pkgs.uwsm; uwsm = lib.getExe pkgs.uwsm;
foot = lib.getExe pkgs.foot; foot = lib.getExe pkgs.foot;
in { in {
options.niksos.fingerprint = mkEnableOption "fingerprint support."; #NOTE: Also check home/wayland/hyprland/settings + home/wayland/hyprland/binds
options.niksos.fingerprint = mkEnableOption "fingerprint support.";
config = mkIf fingerprint { config = mkIf fingerprint {
services.fprintd.enable = true; services.fprintd.enable = true;
home-manager.users.jsw.wayland.windowManager.hyprland.settings = mkIf desktop { home-manager.users.jsw.wayland.windowManager.hyprland.settings = mkIf desktop.hyprland {
bind = [ bind = mkIf fingerprint [
", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'" ", XF86PowerOff, exec, ${uwsm} app -- pgrep fprintd-verify && exit 0 || ${foot} -a 'foot-fprintd' sh -c 'fprintd-verify && systemctl sleep'"
]; ];
windowrule = [ windowrule = [

View file

@ -3,14 +3,13 @@
pkgs, pkgs,
lib, lib,
... ...
}: let }: let
inherit (lib) optionals mkEnableOption mkDefault; inherit (lib) optionals mkEnableOption mkDefault;
graphics = config.niksos.graphics; graphics = config.niksos.graphics;
enable = graphics.enable; enable = graphics.enable;
nvidia = graphics.enable && graphics.nvidia; nvidia = graphics.enable && graphics.nvidia;
intel = graphics.enable && graphics.intel; intel = graphics.enable && graphics.intel;
in { in {
options.niksos.graphics = { options.niksos.graphics = {
enable = mkEnableOption "core graphics"; enable = mkEnableOption "core graphics";

View file

@ -3,9 +3,9 @@
imports = [ imports = [
./avahi.nix ./avahi.nix
./tailscale.nix ./tailscale.nix
./wireguard.nix
]; ];
#FIXME:
networking = { networking = {
# use quad9 with DNS over TLS # use quad9 with DNS over TLS
nameservers = ["9.9.9.9#dns.quad9.net"]; nameservers = ["9.9.9.9#dns.quad9.net"];

View file

@ -1,72 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
inherit (lib) mkIf optionals;
inherit (config.networking) hostName;
iptables = lib.getExe' pkgs.iptables "iptables";
port = 53;
server = "lapserv";
serverCfg = {
externalInterface = "eth0";
privateKeyFile = config.age.secrets.wg-lapserv-private.path;
publicKey = "aM+OrvByr63RxKsU9hu0A1lKJr8fPHifHDhBekkHR0c=";
publicIp = "80.242.224.170";
ip = "10.100.0.1";
};
deviceConfig = {
laptop = {
publicKey = config.age.secrets.wg-laptop-private.path;
privateKeyFile = "1su1FfHuEYIvJLaZPwpN86kmH19d/NH/zuh9DjIOyQI=";
ip = "10.100.0.2";
};
};
isServer = server == config.networking.hostName;
currentConfig =
if isServer
then serverCfg
else deviceConfig.${hostName};
in {
networking.nat = mkIf isServer {
enable = true;
inherit (serverCfg) externalInterface;
internalInterfaces = ["wg0"];
};
networking.firewall.allowedUDPPorts = [port];
networking.wireguard.interfaces.wg0 = {
inherit (currentConfig) privateKeyFile;
listenPort = port;
ips = ["${currentConfig.ip}/24"];
peers =
[]
++ (optionals isServer (builtins.concatMap (x: {
inherit (x) publicKey;
allowedIPs = ["${x.ip}/32"];
})
(builtins.attrValues
deviceConfig)))
++ (optionals (!isServer) [
{
inherit (serverCfg) publicKey;
allowedIPs = ["0.0.0.0/0"];
endpoint = "${serverCfg.publicIp}:${builtins.toString port}";
persistentKeepalive = 25;
}
]);
postSetup = mkIf isServer ''
${iptables} -t nat -A POSTROUTING -s 10.100.0.0/24 -o ${serverCfg.externalInterface} -j MASQUERADE
'';
postShutdown = mkIf isServer ''
${iptables} -t nat -D POSTROUTING -s 10.100.0.0/24 -o ${serverCfg.externalInterface} -j MASQUERADE
'';
};
}

View file

@ -9,9 +9,11 @@
./nh.nix ./nh.nix
./nixpkgs.nix ./nixpkgs.nix
./substituters.nix ./substituters.nix
./nix-index.nix
]; ];
# Really annoying message when command not found
programs.command-not-found.enable = false;
# we need git for flakes # we need git for flakes
environment.systemPackages = [pkgs.git]; environment.systemPackages = [pkgs.git];

View file

@ -1,7 +0,0 @@
{
programs.command-not-found.enable = false;
programs.nix-index = {
enable = true;
enableFishIntegration = true;
};
}

View file

@ -3,10 +3,6 @@
./fish.nix ./fish.nix
./games.nix ./games.nix
./home-manager.nix ./home-manager.nix
./hyprland.nix
./neovim.nix ./neovim.nix
./plasma6.nix
./polkit.nix
./xdg.nix
]; ];
} }

View file

@ -3,65 +3,66 @@
pkgs, pkgs,
lib, lib,
... ...
}: { }: let
cfg = config.niksos.games && config.niksos.desktop.enable;
in {
options.niksos.games = lib.mkEnableOption "gaming related stuff."; options.niksos.games = lib.mkEnableOption "gaming related stuff.";
config = lib.mkIf config.niksos.games { config = lib.mkIf cfg {
# nixpkgs.overlays = [ # nixpkgs.overlays = [
# (final: prev: let # (final: prev: let
# version = "1.4.2"; # version = "1.4.2";
# hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c="; # hash = "sha256-xe0qlbtt06CUK8bXyaGDtCcHOXpSnkbuvcxaDJjeS/c=";
# npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI="; # npmHash = "sha256-/+NhlQydGS6+2jEjpbwycwKplVo/++wcdPiBNY3R3FI=";
# cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo="; # cargoHash = "sha256-VwzGbm34t7mg9ndmTkht6Ho32NQ+6uxuPTKi3+VrhYo=";
# in { # in {
# gale = prev.gale.overrideAttrs (new: old: { # gale = prev.gale.overrideAttrs (new: old: {
# src = prev.fetchFromGitHub { # src = prev.fetchFromGitHub {
# inherit version hash; # inherit version hash;
# owner = "Kesomannen"; # owner = "Kesomannen";
# repo = "gale"; # repo = "gale";
# rev = "1.4.2"; # rev = "1.4.2";
# }; # };
# npmDeps = prev.fetchNpmDeps { # npmDeps = prev.fetchNpmDeps {
# hash = npmHash; # hash = npmHash;
# name = "${new.pname}-${new.version}-npm-deps"; # name = "${new.pname}-${new.version}-npm-deps";
# inherit (new) src; # inherit (new) src;
# }; # };
# cargoDeps = prev.rustPlatform.fetchCargoVendor { # cargoDeps = prev.rustPlatform.fetchCargoVendor {
# inherit # inherit
# (new) # (new)
# pname # pname
# version # version
# src # src
# cargoRoot # cargoRoot
# ; # ;
# hash = cargoHash; # hash = cargoHash;
# }; # };
# }); # });
# }) # })
# ]; # ];
users.users.jsw.packages = [pkgs.gale];
programs = { programs = {
gamescope = { gamescope = {
enable = true; enable = true;
capSysNice = true; capSysNice = true;
args = [ args = [
"--rt" "--rt"
"--expose-wayland" "--expose-wayland"
]; ];
};
steam = {
enable = true;
extraCompatPackages = [
pkgs.proton-ge-bin
];
gamescopeSession.enable = true;
};
}; };
environment.variables = {
steam = { "STEAM_FORCE_DESKTOP_UI_SCALING" = "1.5"; #FIXME:.
enable = true;
extraCompatPackages = [
pkgs.proton-ge-bin
];
gamescopeSession.enable = true;
}; };
}; };
environment.variables = {
"STEAM_FORCE_DESKTOP_UI_SCALING" = "1.5"; #FIXME:.
};
};
} }

View file

@ -1,13 +1,13 @@
{ {
inputs, inputs,
specialArgs, specialArgs,
lib,
config,
... ...
}: { }: let
imports = [ cfg = config.niksos.desktop.enable;
inputs.hm.nixosModules.default in {
]; home-manager = lib.mkIf cfg {
home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
useUserPackages = true; useUserPackages = true;
extraSpecialArgs = specialArgs; extraSpecialArgs = specialArgs;
@ -16,5 +16,5 @@
users.jsw = import ../../home; users.jsw = import ../../home;
}; };
programs.dconf.enable = true; # else gtk-managed stuff won't work programs.dconf.enable = cfg; # else gtk-managed stuff won't work
} }

View file

@ -1,19 +0,0 @@
{
config,
pkgs,
lib,
...
}: {
options.niksos.desktop = lib.mkEnableOption "desktop related stuff.";
config = lib.mkIf config.niksos.desktop {
programs.hyprland = {
enable = true;
withUWSM = true;
};
environment.systemPackages = [
#FIXME: migrated to home-manager
pkgs.kitty # This is the default config's terminal and also my main one.
];
environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Makes electron apps use wayland.
};
}

View file

@ -1,4 +1,5 @@
{lib, ...}: { {lib, ...}: {
options.niksos.neovim = lib.mkEnableOption "the neovim editor"; options.niksos.neovim = lib.mkEnableOption "the neovim editor";
# The actual config resides in NixOS/home/programs/neovim. # The actual config resides in NixOS/home/programs/neovim.
# NOTE: This is for the customisation of the neovim editor, which uses a lot of disk space. Barebones version will be installed anyhow.
} }

View file

@ -1,33 +0,0 @@
{
lib,
pkgs,
config,
...
}: {
options.niksos.kde = lib.mkEnableOption "a kde specialisation. Will enable desktop settings.";
config.specialisation.de.configuration = lib.mkIf config.niksos.kde {
niksos.desktop = lib.mkForce true;
services = {
greetd = let
session = {
command = "${pkgs.kdePackages.plasma-workspace}/bin/startplasma-wayland";
user = "jsw";
};
in {
settings = lib.mkForce {
terminal.vt = 1;
default_session = session;
initial_session = session;
};
};
desktopManager.plasma6.enable = true;
};
home-manager.users.jsw = {
stylix.autoEnable = false;
};
};
}

View file

@ -1,22 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
systemd = {
user.services.polkit-gnome-authentication-agent-1 = lib.mkIf config.niksos.desktop {
description = "polkit-gnome-authentication-agent-1";
wantedBy = ["graphical-session.target"];
wants = ["graphical-session.target"];
after = ["graphical-session.target"];
serviceConfig = {
Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Restart = "on-failure";
RestartSec = 1;
TimeoutStopSec = 10;
};
};
};
}

View file

@ -49,7 +49,7 @@ in {
ExecStart = "${bash} -c 'cd ${dataDir} && deno run -A ${programDir}/src/main.ts'"; ExecStart = "${bash} -c 'cd ${dataDir} && deno run -A ${programDir}/src/main.ts'";
User = "dcbot"; User = "dcbot";
Group = "dcbot"; Group = "dcbot";
Restart = "always"; Restart = "always";
}; };
}; };

View file

@ -1,8 +1,6 @@
{ {
imports = [ imports = [
./greetd.nix
./kanata.nix ./kanata.nix
./pipewire.nix
./power.nix ./power.nix
./ssh.nix ./ssh.nix
]; ];