Merge branch 'main' into feature/tests
This commit is contained in:
commit
2bdba1fcac
|
@ -9,30 +9,34 @@ in
|
||||||
default = false;
|
default = false;
|
||||||
description = "Feature flag for iso builds";
|
description = "Feature flag for iso builds";
|
||||||
};
|
};
|
||||||
|
|
||||||
options.pub-solar.core.disk-encryption-active = mkOption {
|
options.pub-solar.core.disk-encryption-active = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = "Whether it should be assumed that there is a cryptroot device";
|
description = "Whether it should be assumed that there is a cryptroot device";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
# Enable plymouth for better experience of booting
|
boot = {
|
||||||
boot.plymouth.enable = true;
|
# Enable plymouth for better experience of booting
|
||||||
|
plymouth.enable = true;
|
||||||
|
|
||||||
# Mount / luks device in initrd
|
# Mount / luks device in initrd
|
||||||
# Allow fstrim to work on it.
|
# Allow fstrim to work on it.
|
||||||
# The ! makes this enabled by default
|
# The ! makes this enabled by default
|
||||||
boot.initrd = mkIf (!cfg.iso-options.enable && cfg.disk-encryption-active) {
|
initrd = mkIf (!cfg.iso-options.enable && cfg.disk-encryption-active) {
|
||||||
luks.devices."cryptroot" = {
|
luks.devices."cryptroot" = {
|
||||||
allowDiscards = true;
|
allowDiscards = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
|
# Use latest LTS linux kernel by default
|
||||||
|
kernelPackages = pkgs.linuxPackages_5_15;
|
||||||
|
|
||||||
|
# Support ntfs drives
|
||||||
|
supportedFilesystems = [ "ntfs" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
|
|
||||||
# Use latest LTS linux kernel by default
|
|
||||||
boot.kernelPackages = pkgs.linuxPackages_5_15;
|
|
||||||
|
|
||||||
# Support ntfs drives
|
|
||||||
boot.supportedFilesystems = [ "ntfs" ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./boot.nix
|
./boot.nix
|
||||||
|
./hibernation.nix
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
./i18n.nix
|
./i18n.nix
|
||||||
./networking.nix
|
./networking.nix
|
||||||
|
|
38
modules/core/hibernation.nix
Normal file
38
modules/core/hibernation.nix
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.pub-solar.core.hibernation;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.pub-solar.core.hibernation = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Whether the device can hibernate. This creates a swapfile at /swapfile.";
|
||||||
|
};
|
||||||
|
|
||||||
|
resumeDevice = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "/swapfile";
|
||||||
|
description = "The location of the hibernation resume swap file.";
|
||||||
|
};
|
||||||
|
|
||||||
|
resumeOffset = mkOption {
|
||||||
|
type = types.nullOr types.int;
|
||||||
|
default = null;
|
||||||
|
description = "The swap file offset. Can be found by running `filefrag -v $swap_file_location`. See https://wiki.archlinux.org/title/Power_management/Suspend_and_hibernate#Hibernation_into_swap_file";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
boot = mkIf cfg.enable {
|
||||||
|
resumeDevice = cfg.resumeDevice;
|
||||||
|
kernelParams = [
|
||||||
|
"resume=${cfg.resumeDevice}"
|
||||||
|
] ++ (
|
||||||
|
if (cfg.resumeOffset == null && cfg.enable) then builtins.abort "config.pub-solar.resumeOffset has to be set if config.pub-solar.enable is true."
|
||||||
|
else [ "resume_offset=${cfg.resumeOffset}" ]
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
24
modules/paranoia/default.nix
Normal file
24
modules/paranoia/default.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
psCfg = config.pub-solar;
|
||||||
|
cfg = config.pub-solar.paranoia;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.pub-solar.paranoia = {
|
||||||
|
enable = mkOption {
|
||||||
|
description = ''
|
||||||
|
Only offer hibernation instead of screen locking and sleeping. This only makes sense
|
||||||
|
if your hard drive is encrypted, and ensures that the contents of your drive are
|
||||||
|
encrypted if you are not actively using the device.
|
||||||
|
'';
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
pub-solar.core.hibernation.enable = true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -36,19 +36,3 @@ bindsym $mod+Ctrl+r exec record-screen
|
||||||
# Launcher
|
# Launcher
|
||||||
set $menu exec alacritty --class launcher -e env TERMINAL_COMMAND="alacritty -e" sway-launcher
|
set $menu exec alacritty --class launcher -e env TERMINAL_COMMAND="alacritty -e" sway-launcher
|
||||||
bindsym $mod+Space exec $menu
|
bindsym $mod+Space exec $menu
|
||||||
|
|
||||||
# Set shut down, restart and locking features
|
|
||||||
set $mode_system (l)ock, (e)xit, (s)uspend, (h)ibernate, (r)eboot, (Shift+s)hutdown
|
|
||||||
bindsym $mod+0 mode "$mode_system"
|
|
||||||
mode "$mode_system" {
|
|
||||||
bindsym l exec swaylock-bg, mode "default"
|
|
||||||
bindsym e exec systemctl --user stop graphical-session.target, mode "default"
|
|
||||||
bindsym s exec systemctl suspend, mode "default"
|
|
||||||
bindsym h exec systemctl hibernate, mode "default"
|
|
||||||
bindsym r exec systemctl reboot, mode "default"
|
|
||||||
bindsym Shift+s exec systemctl poweroff, mode "default"
|
|
||||||
|
|
||||||
# exit system mode: "Enter" or "Escape"
|
|
||||||
bindsym Return mode "default"
|
|
||||||
bindsym Escape mode "default"
|
|
||||||
}
|
|
||||||
|
|
21
modules/sway/config/config.d/mode_system.conf.nix
Normal file
21
modules/sway/config/config.d/mode_system.conf.nix
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
{ psCfg, ... }: ''
|
||||||
|
# Set shut down, restart and locking features
|
||||||
|
set $mode_system (e)xit, (h)ibernate, (r)eboot, (Shift+s)hutdown
|
||||||
|
bindsym $mod+0 mode "$mode_system"
|
||||||
|
mode "$mode_system" {
|
||||||
|
bindsym e exec swaymsg exit, mode "default"
|
||||||
|
'' + (if !psCfg.core.hibernation.enable then ''
|
||||||
|
bindsym h exec systemctl hibernate, mode "default"
|
||||||
|
'' else "")
|
||||||
|
+ (if !psCfg.paranoia.enable then ''
|
||||||
|
bindsym l exec swaylock-bg, mode "default"
|
||||||
|
bindsym s exec systemctl suspend, mode "default"
|
||||||
|
'' else "") + ''
|
||||||
|
bindsym r exec systemctl reboot, mode "default"
|
||||||
|
bindsym Shift+s exec systemctl poweroff, mode "default"
|
||||||
|
|
||||||
|
# exit system mode: "Enter" or "Escape"
|
||||||
|
bindsym Return mode "default"
|
||||||
|
bindsym Escape mode "default"
|
||||||
|
}
|
||||||
|
''
|
|
@ -2,25 +2,26 @@
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
psCfg = config.pub-solar;
|
psCfg = config.pub-solar;
|
||||||
cfg = config.pub-solar.sway;
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options.pub-solar.sway = {
|
options.pub-solar.sway = {
|
||||||
enable = mkEnableOption "Life in boxes";
|
enable = mkEnableOption "Life in boxes";
|
||||||
};
|
|
||||||
options.pub-solar.sway.terminal = mkOption {
|
terminal = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = "alacritty";
|
default = "alacritty";
|
||||||
description = "Choose sway's default terminal";
|
description = "Choose sway's default terminal";
|
||||||
};
|
};
|
||||||
options.pub-solar.sway.v4l2loopback.enable = mkOption {
|
|
||||||
type = types.bool;
|
v4l2loopback.enable = mkOption {
|
||||||
default = true;
|
type = types.bool;
|
||||||
description = "WebCam streaming tool";
|
default = true;
|
||||||
|
description = "WebCam streaming tool";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf psCfg.sway.enable (mkMerge [
|
||||||
(mkIf (cfg.v4l2loopback.enable) {
|
(mkIf (psCfg.sway.v4l2loopback.enable) {
|
||||||
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||||
boot.kernelModules = [ "v4l2loopback" ];
|
boot.kernelModules = [ "v4l2loopback" ];
|
||||||
boot.extraModprobeConfig = ''
|
boot.extraModprobeConfig = ''
|
||||||
|
@ -75,7 +76,6 @@ in
|
||||||
xsettingsd
|
xsettingsd
|
||||||
ydotool
|
ydotool
|
||||||
|
|
||||||
swaylock-bg
|
|
||||||
sway-launcher
|
sway-launcher
|
||||||
record-screen
|
record-screen
|
||||||
import-gtk-settings
|
import-gtk-settings
|
||||||
|
@ -86,18 +86,19 @@ in
|
||||||
programs.waybar.enable = true;
|
programs.waybar.enable = true;
|
||||||
#programs.waybar.systemd.enable = true;
|
#programs.waybar.systemd.enable = true;
|
||||||
|
|
||||||
systemd.user.services.mako = import ./mako.service.nix pkgs;
|
systemd.user.services.mako = import ./mako.service.nix { inherit pkgs psCfg; };
|
||||||
systemd.user.services.sway = import ./sway.service.nix pkgs;
|
systemd.user.services.sway = import ./sway.service.nix { inherit pkgs psCfg; };
|
||||||
systemd.user.services.swayidle = import ./swayidle.service.nix pkgs;
|
systemd.user.services.swayidle = import ./swayidle.service.nix { inherit pkgs psCfg; };
|
||||||
systemd.user.services.xsettingsd = import ./xsettingsd.service.nix pkgs;
|
systemd.user.services.xsettingsd = import ./xsettingsd.service.nix { inherit pkgs psCfg; };
|
||||||
systemd.user.services.waybar = import ./waybar.service.nix pkgs;
|
systemd.user.services.waybar = import ./waybar.service.nix { inherit pkgs psCfg; };
|
||||||
systemd.user.targets.sway-session = import ./sway-session.target.nix pkgs;
|
systemd.user.targets.sway-session = import ./sway-session.target.nix { inherit pkgs psCfg; };
|
||||||
|
|
||||||
xdg.configFile."sway/config".text = import ./config/config.nix { inherit config pkgs; };
|
xdg.configFile."sway/config".text = import ./config/config.nix { inherit config pkgs; };
|
||||||
xdg.configFile."sway/config.d/colorscheme.conf".source = ./config/config.d/colorscheme.conf;
|
xdg.configFile."sway/config.d/colorscheme.conf".source = ./config/config.d/colorscheme.conf;
|
||||||
xdg.configFile."sway/config.d/theme.conf".source = ./config/config.d/theme.conf;
|
xdg.configFile."sway/config.d/theme.conf".source = ./config/config.d/theme.conf;
|
||||||
xdg.configFile."sway/config.d/gaps.conf".source = ./config/config.d/gaps.conf;
|
xdg.configFile."sway/config.d/gaps.conf".source = ./config/config.d/gaps.conf;
|
||||||
xdg.configFile."sway/config.d/custom-keybindings.conf".source = ./config/config.d/custom-keybindings.conf;
|
xdg.configFile."sway/config.d/custom-keybindings.conf".source = ./config/config.d/custom-keybindings.conf;
|
||||||
|
xdg.configFile."sway/config.d/mode_system.conf".text = import ./config/config.d/mode_system.conf.nix { inherit psCfg; };
|
||||||
xdg.configFile."sway/config.d/applications.conf".source = ./config/config.d/applications.conf;
|
xdg.configFile."sway/config.d/applications.conf".source = ./config/config.d/applications.conf;
|
||||||
xdg.configFile."sway/config.d/systemd.conf".source = ./config/config.d/systemd.conf;
|
xdg.configFile."sway/config.d/systemd.conf".source = ./config/config.d/systemd.conf;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "set color temperature of display according to time of day";
|
Description = "set color temperature of display according to time of day";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Actions gestures on your touchpad using libinput";
|
Description = "Actions gestures on your touchpad using libinput";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Lightweight Wayland notification daemon";
|
Description = "Lightweight Wayland notification daemon";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "sway compositor session";
|
Description = "sway compositor session";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "sway - SirCmpwn's Wayland window manager";
|
Description = "sway - SirCmpwn's Wayland window manager";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, psCfg, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Idle manager for Wayland";
|
Description = "Idle manager for Wayland";
|
||||||
|
@ -9,8 +9,13 @@ pkgs:
|
||||||
};
|
};
|
||||||
Service = {
|
Service = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
Environment = "PATH=/run/current-system/sw/bin:${pkgs.sway}/bin:${pkgs.swaylock}/bin:${pkgs.swaylock-bg}/bin";
|
Environment = "PATH=/run/current-system/sw/bin:${pkgs.sway}/bin";
|
||||||
ExecStart = ''${pkgs.swayidle}/bin/swayidle -w \
|
ExecStart = if psCfg.paranoia.enable then ''
|
||||||
|
${pkgs.swayidle}/bin/swayidle -w \
|
||||||
|
timeout 120 'swaymsg "output * dpms off"' \
|
||||||
|
timeout 150 'systemctl hibernate' \
|
||||||
|
'' else ''
|
||||||
|
${pkgs.swayidle}/bin/swayidle -w \
|
||||||
timeout 600 'swaylock-bg' \
|
timeout 600 'swaylock-bg' \
|
||||||
timeout 900 'swaymsg "output * dpms off"' \
|
timeout 900 'swaymsg "output * dpms off"' \
|
||||||
resume 'swaymsg "output * dpms on"' \
|
resume 'swaymsg "output * dpms on"' \
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Highly customizable Wayland bar for Sway and Wlroots based compositors.";
|
Description = "Highly customizable Wayland bar for Sway and Wlroots based compositors.";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "X Settings Daemon";
|
Description = "X Settings Daemon";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
pkgs:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "ydotool - Generic command-line automation tool (no X!)";
|
Description = "ydotool - Generic command-line automation tool (no X!)";
|
||||||
|
|
|
@ -13,7 +13,7 @@ with final; {
|
||||||
s = writeShellScriptBin "s" (import ./s.nix final);
|
s = writeShellScriptBin "s" (import ./s.nix final);
|
||||||
sway-launcher = writeScriptBin "sway-launcher" (import ./sway-launcher.nix final);
|
sway-launcher = writeScriptBin "sway-launcher" (import ./sway-launcher.nix final);
|
||||||
sway-service = writeShellScriptBin "sway-service" (import ./sway-service.nix final);
|
sway-service = writeShellScriptBin "sway-service" (import ./sway-service.nix final);
|
||||||
swaylock-bg = writeScriptBin "swaylock-bg" (import ./swaylock-bg.nix final);
|
swaylock-bg = writeShellScriptBin "swaylock-bg" (import ./swaylock-bg.nix final);
|
||||||
toggle-kbd-layout = writeShellScriptBin "toggle-kbd-layout" (import ./toggle-kbd-layout.nix final);
|
toggle-kbd-layout = writeShellScriptBin "toggle-kbd-layout" (import ./toggle-kbd-layout.nix final);
|
||||||
uhk-agent = import ./uhk-agent.nix final;
|
uhk-agent = import ./uhk-agent.nix final;
|
||||||
wcwd = writeShellScriptBin "wcwd" (import ./wcwd.nix final);
|
wcwd = writeShellScriptBin "wcwd" (import ./wcwd.nix final);
|
||||||
|
|
Loading…
Reference in a new issue