BROKEN: Expanding desktop option
This commit is contained in:
parent
ebf027263f
commit
73dd477f9e
44 changed files with 272 additions and 296 deletions
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
|
||||||
|
|
@ -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 = {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -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?)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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}
|
||||||
];
|
];
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 {}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
|
||||||
|
|
@ -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 --";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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 = {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,10 @@ in {
|
||||||
networking.hostName = "vm";
|
networking.hostName = "vm";
|
||||||
|
|
||||||
niksos = {
|
niksos = {
|
||||||
desktop = true;
|
desktop = {
|
||||||
|
enable = true;
|
||||||
|
hyprland = true;
|
||||||
|
};
|
||||||
neovim = true;
|
neovim = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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"];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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";};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,5 +7,6 @@
|
||||||
./programs
|
./programs
|
||||||
./server
|
./server
|
||||||
./services
|
./services
|
||||||
|
./desktop
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
18
system/desktop/default.nix
Normal file
18
system/desktop/default.nix
Normal 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.";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -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 = {
|
||||||
16
system/desktop/hyprland.nix
Normal file
16
system/desktop/hyprland.nix
Normal 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.
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -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 = {
|
||||||
33
system/desktop/plasma6.nix
Normal file
33
system/desktop/plasma6.nix
Normal 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
22
system/desktop/polkit.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -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 = {
|
||||||
|
|
@ -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 = [
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
|
|
||||||
|
|
@ -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"];
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
programs.command-not-found.enable = false;
|
|
||||||
programs.nix-index = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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:.
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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.
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -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";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./greetd.nix
|
|
||||||
./kanata.nix
|
./kanata.nix
|
||||||
./pipewire.nix
|
|
||||||
./power.nix
|
./power.nix
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
];
|
];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue