Compare commits
No commits in common. "2a66fc79e24fb8f65d2ee9a132d70c11498bdd8f" and "e7904182e76d0dfe7c0a6ae35c276e837f76e4fd" have entirely different histories.
2a66fc79e2
...
e7904182e7
15 changed files with 289 additions and 65 deletions
|
@ -25,7 +25,6 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
desktops.hyprland.enable = true;
|
|
||||||
system = {
|
system = {
|
||||||
impermanence.enable = false;
|
impermanence.enable = false;
|
||||||
services = {
|
services = {
|
||||||
|
@ -59,12 +58,28 @@
|
||||||
};
|
};
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
};
|
};
|
||||||
services = {
|
usrEnv = {
|
||||||
locate.enable = true;
|
desktops.hyprland.enable = false;
|
||||||
|
|
||||||
media.mpd = {
|
programs = {
|
||||||
enable = true;
|
launchers = {
|
||||||
|
fuzzel.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
media = {
|
||||||
|
beets.enable = true;
|
||||||
|
mpv.enable = true;
|
||||||
|
ncmpcpp.enable = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
services = {
|
||||||
|
locate.enable = true;
|
||||||
|
|
||||||
|
media.mpd = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
other = {
|
other = {
|
||||||
system.username = "cr";
|
system.username = "cr";
|
||||||
|
|
|
@ -70,13 +70,25 @@ in {
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
hardware.nvidia.enable = true;
|
hardware.nvidia.enable = true;
|
||||||
};
|
};
|
||||||
desktops.hyprland.enable = true;
|
usrEnv = {
|
||||||
|
desktops.hyprland.enable = true;
|
||||||
|
|
||||||
services = {
|
programs = {
|
||||||
locate.enable = true;
|
media = {
|
||||||
media.mpd = {
|
beets.enable = true;
|
||||||
enable = true;
|
mpv.enable = true;
|
||||||
musicDirectory = "/home/${config.modules.other.system.username}/cloud/media/Music";
|
ncmpcpp.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services = {
|
||||||
|
locate.enable = true;
|
||||||
|
kmscon.enable = false;
|
||||||
|
greetd.enable = true;
|
||||||
|
|
||||||
|
media.mpd = {
|
||||||
|
enable = true;
|
||||||
|
musicDirectory = "/home/${config.modules.other.system.username}/cloud/media/Music";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
other = {
|
other = {
|
||||||
|
|
|
@ -25,9 +25,6 @@
|
||||||
mainUser.gitSigningKey = "";
|
mainUser.gitSigningKey = "";
|
||||||
};
|
};
|
||||||
modules = {
|
modules = {
|
||||||
services = {
|
|
||||||
locate.enable = true;
|
|
||||||
};
|
|
||||||
system = {
|
system = {
|
||||||
services.forgejo.enable = true;
|
services.forgejo.enable = true;
|
||||||
programs = {
|
programs = {
|
||||||
|
@ -37,6 +34,13 @@
|
||||||
eza.enable = true;
|
eza.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
usrEnv = {
|
||||||
|
desktops.hyprland.enable = false;
|
||||||
|
|
||||||
|
services = {
|
||||||
|
locate.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
other = {
|
other = {
|
||||||
system = {
|
system = {
|
||||||
username = "cr";
|
username = "cr";
|
||||||
|
|
81
modules/options/usrEnv/desktop.nix
Normal file
81
modules/options/usrEnv/desktop.nix
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.modules.usrEnv;
|
||||||
|
inherit (lib.options) mkOption;
|
||||||
|
inherit (lib.types) bool enum package;
|
||||||
|
in {
|
||||||
|
options.modules.usrEnv = {
|
||||||
|
desktop = mkOption {
|
||||||
|
type = enum ["none" "Hyprland" "awesomewm" "i3"];
|
||||||
|
default = "none";
|
||||||
|
description = ''
|
||||||
|
The desktop environment to be used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
desktops = {
|
||||||
|
hyprland = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = cfg.desktop == "Hyprland";
|
||||||
|
description = ''
|
||||||
|
Whether to enable Hyprland wayland compositor.
|
||||||
|
|
||||||
|
Will be enabled automatically when `modules.usrEnv.desktop`
|
||||||
|
is set to "Hyprland".
|
||||||
|
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = package;
|
||||||
|
default = pkgs.hyprland;
|
||||||
|
description = ''
|
||||||
|
The Hyprland package to be used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
portalPackage = mkOption {
|
||||||
|
type = package;
|
||||||
|
default = pkgs.xdg-desktop-portal-hyprland;
|
||||||
|
description = "The hyprland portal package";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
awesomwm.enable = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = cfg.desktop == "awesomewm";
|
||||||
|
description = ''
|
||||||
|
Whether to enable Awesome window manager
|
||||||
|
|
||||||
|
Will be enabled automatically when `modules.usrEnv.desktop`
|
||||||
|
is set to "awesomewm".
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
i3 = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = cfg.desktop == "i3";
|
||||||
|
description = ''
|
||||||
|
Whether to enable i3 window manager
|
||||||
|
|
||||||
|
Will be enabled automatically when `modules.usrEnv.desktop`
|
||||||
|
is set to "i3".
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = package;
|
||||||
|
default = pkgs.i3;
|
||||||
|
description = ''
|
||||||
|
The i3 package to be used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
8
modules/options/usrEnv/module.nix
Normal file
8
modules/options/usrEnv/module.nix
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
_: {
|
||||||
|
imports = [
|
||||||
|
./desktop.nix
|
||||||
|
./programs/media.nix
|
||||||
|
./programs/launchers.nix
|
||||||
|
./services/default.nix
|
||||||
|
];
|
||||||
|
}
|
10
modules/options/usrEnv/programs/launchers.nix
Normal file
10
modules/options/usrEnv/programs/launchers.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
inherit (lib.options) mkEnableOption;
|
||||||
|
in {
|
||||||
|
options.modules.usrEnv.programs.launchers = {
|
||||||
|
anyrun.enable = mkEnableOption "anyrun application launcher";
|
||||||
|
rofi.enable = mkEnableOption "rofi application launcher";
|
||||||
|
tofi.enable = mkEnableOption "tofi application launcher";
|
||||||
|
fuzzel.enable = mkEnableOption "fuzzel application launcher";
|
||||||
|
};
|
||||||
|
}
|
60
modules/options/usrEnv/programs/media.nix
Normal file
60
modules/options/usrEnv/programs/media.nix
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.options) mkOption mkEnableOption literalExpression;
|
||||||
|
inherit (lib.types) bool listOf package;
|
||||||
|
in {
|
||||||
|
options.modules.usrEnv.programs.media = {
|
||||||
|
addDefaultPackages = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Whether to enable the default list of media-related packages ranging from audio taggers
|
||||||
|
to video editors.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPackages = mkOption {
|
||||||
|
type = listOf package;
|
||||||
|
default = [];
|
||||||
|
description = ''
|
||||||
|
Additional packages that will be appended to media related packages.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
ncmpcpp.enable = mkEnableOption "ncmpcpp TUI music player";
|
||||||
|
|
||||||
|
beets.enable =
|
||||||
|
mkEnableOption ''
|
||||||
|
beets media library system.
|
||||||
|
|
||||||
|
|
||||||
|
Will be enabled automatically if {option}`config.modules.usrEnv.services.mpd.enabled`
|
||||||
|
is set to true
|
||||||
|
''
|
||||||
|
// {default = config.modules.usrEnv.services.media.mpd.enable;};
|
||||||
|
|
||||||
|
mpv = {
|
||||||
|
enable = mkEnableOption "mpv media player";
|
||||||
|
scripts = mkOption {
|
||||||
|
type = listOf package;
|
||||||
|
description = "A list of MPV scripts that will be enabled";
|
||||||
|
example = literalExpression ''[ pkgs.mpvScripts.cutter ]'';
|
||||||
|
default = with pkgs.mpvScripts; [
|
||||||
|
# from nixpkgs
|
||||||
|
cutter # cut and automatically concat videos
|
||||||
|
mpris # MPRIS plugin
|
||||||
|
thumbnail # OSC seekbar thumbnails
|
||||||
|
thumbfast # on-the-fly thumbnailer
|
||||||
|
sponsorblock # skip sponsored segments
|
||||||
|
uosc # proximity UI
|
||||||
|
quality-menu # ytdl-format quality menu
|
||||||
|
seekTo # seek to specific pos.
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
25
modules/options/usrEnv/services/default.nix
Normal file
25
modules/options/usrEnv/services/default.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
|
inherit (lib) types;
|
||||||
|
inherit (config.meta.mainUser) username;
|
||||||
|
in {
|
||||||
|
options.modules.usrEnv.services = {
|
||||||
|
locate.enable = mkEnableOption "Locate service";
|
||||||
|
media = {
|
||||||
|
mpd = {
|
||||||
|
enable = mkEnableOption "mpd service";
|
||||||
|
musicDirectory = mkOption {
|
||||||
|
description = "music directory for mpd";
|
||||||
|
type = types.str;
|
||||||
|
default = "/home/${username}/cloud/media/Music";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
kmscon.enable = mkEnableOption "Kmscon";
|
||||||
|
greetd.enable = mkEnableOption "Greetd";
|
||||||
|
};
|
||||||
|
}
|
25
modules/services/kmscon.nix
Normal file
25
modules/services/kmscon.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
cfg = config.modules.usrEnv.services.kmscon;
|
||||||
|
in {
|
||||||
|
services.kmscon = mkIf cfg.enable {
|
||||||
|
enable = false;
|
||||||
|
hwRender = true;
|
||||||
|
fonts = [
|
||||||
|
{
|
||||||
|
name = "Iosevka";
|
||||||
|
package = pkgs.iosevka;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
extraOptions = "--term xterm-256color";
|
||||||
|
extraConfig = ''
|
||||||
|
font-size=18
|
||||||
|
xkb-layout=${config.console.keyMap}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,11 +4,9 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.modules.services.locate;
|
cfg = config.modules.usrEnv.services.locate;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib) mkIf;
|
||||||
inherit (lib.options) mkEnableOption;
|
|
||||||
in {
|
in {
|
||||||
options.modules.services.locate.enable = mkEnableOption "Locate service";
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
environment.systemPackages = with pkgs; [plocate];
|
environment.systemPackages = with pkgs; [plocate];
|
||||||
services.locate = {
|
services.locate = {
|
||||||
|
|
|
@ -7,5 +7,6 @@ _: {
|
||||||
./mako.nix
|
./mako.nix
|
||||||
./mpd.nix
|
./mpd.nix
|
||||||
./firewall.nix
|
./firewall.nix
|
||||||
|
./kmscon.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,28 +4,12 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.modules.services.media.mpd;
|
cfg = config.modules.usrEnv.services.media.mpd;
|
||||||
inherit (config.meta.mainUser) username;
|
inherit (config.modules.other.system) username;
|
||||||
inherit (lib.modules) mkIf;
|
inherit (lib) mkIf;
|
||||||
inherit (lib.types) str;
|
|
||||||
inherit (lib.options) mkOption mkEnableOption;
|
|
||||||
in {
|
in {
|
||||||
options.modules.services = {
|
|
||||||
media = {
|
|
||||||
mpd = {
|
|
||||||
enable = mkEnableOption "mpd service";
|
|
||||||
musicDirectory = mkOption {
|
|
||||||
description = "music directory for mpd";
|
|
||||||
type = str;
|
|
||||||
default = "/home/${username}/cloud/media/Music";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# command line interface to mpd
|
|
||||||
environment.systemPackages = [pkgs.mpc];
|
environment.systemPackages = [pkgs.mpc];
|
||||||
|
|
||||||
systemd.services.mpd.environment = {
|
systemd.services.mpd.environment = {
|
||||||
# https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609
|
# https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/609
|
||||||
XDG_RUNTIME_DIR = "/run/user/1000";
|
XDG_RUNTIME_DIR = "/run/user/1000";
|
||||||
|
|
26
modules/services/tuigreet.nix
Normal file
26
modules/services/tuigreet.nix
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf getExe;
|
||||||
|
cfg = config.modules.usrEnv.services.greetd;
|
||||||
|
in {
|
||||||
|
services.greetd = mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
restart = true;
|
||||||
|
vt = 2;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
command = ''
|
||||||
|
${getExe pkgs.greetd.tuigreet} \
|
||||||
|
-c \"Hyprland\" \
|
||||||
|
-r
|
||||||
|
-t --time-format "DD.MM.YYYY"
|
||||||
|
--asteriks
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -3,7 +3,7 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.modules.desktops.hyprland;
|
cfg = config.modules.usrEnv.desktops.hyprland;
|
||||||
inherit (builtins) map genList toString;
|
inherit (builtins) map genList toString;
|
||||||
in {
|
in {
|
||||||
programs.hyprland.settings = {
|
programs.hyprland.settings = {
|
||||||
|
|
|
@ -4,11 +4,9 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
cfg = config.modules.desktops.hyprland;
|
cfg = config.modules.usrEnv.desktops.hyprland;
|
||||||
# inherit (inputs.hyprsplit.packages.${pkgs.system}) hyprsplit;
|
# inherit (inputs.hyprsplit.packages.${pkgs.system}) hyprsplit;
|
||||||
inherit (lib.modules) mkIf mkDefault;
|
inherit (lib) mkIf mkDefault;
|
||||||
inherit (lib.options) mkOption;
|
|
||||||
inherit (lib.types) bool enum package;
|
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./binds.nix
|
./binds.nix
|
||||||
|
@ -21,29 +19,6 @@ in {
|
||||||
# we disable the default hyprland module
|
# we disable the default hyprland module
|
||||||
disabledModules = ["programs/hyprland.nix"];
|
disabledModules = ["programs/hyprland.nix"];
|
||||||
|
|
||||||
options.modules.desktops.hyprland = {
|
|
||||||
enable = mkOption {
|
|
||||||
type = bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
Whether to enable Hyprland wayland compositor.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
package = mkOption {
|
|
||||||
type = package;
|
|
||||||
default = pkgs.hyprland;
|
|
||||||
description = ''
|
|
||||||
The Hyprland package to be used.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
portalPackage = mkOption {
|
|
||||||
type = package;
|
|
||||||
default = pkgs.xdg-desktop-portal-hyprland;
|
|
||||||
description = "The hyprland portal package";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue