Applied formatting
This commit is contained in:
parent
e1b1e7cc38
commit
16de891fc7
14
default.nix
14
default.nix
|
@ -1,11 +1,11 @@
|
||||||
{ ... }:
|
{ ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# Import modules
|
# Import modules
|
||||||
./modules/default.nix
|
./modules/default.nix
|
||||||
|
|
||||||
# Import custom packages
|
# Import custom packages
|
||||||
./pkgs/default.nix
|
./pkgs/default.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,4 +26,4 @@
|
||||||
configuration = ../users/jan.nix;
|
configuration = ../users/jan.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.base;
|
cfg = config.modules.base;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.base = {
|
options.modules.base = {
|
||||||
enable = mkEnableOption "base";
|
enable = mkEnableOption "base";
|
||||||
};
|
};
|
||||||
|
@ -32,7 +38,7 @@ in {
|
||||||
programs.dconf.enable = true;
|
programs.dconf.enable = true;
|
||||||
xdg.portal = {
|
xdg.portal = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
extraPortals = with pkgs; [
|
extraPortals = with pkgs; [
|
||||||
xdg-desktop-portal-gtk
|
xdg-desktop-portal-gtk
|
||||||
xdg-desktop-portal-wlr
|
xdg-desktop-portal-wlr
|
||||||
|
@ -45,4 +51,4 @@ in {
|
||||||
"nvidia-settings"
|
"nvidia-settings"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.clean-tmp;
|
cfg = config.modules.clean-tmp;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.clean-tmp = {
|
options.modules.clean-tmp = {
|
||||||
enable = mkEnableOption "clean-tmp";
|
enable = mkEnableOption "clean-tmp";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable { boot.tmp.cleanOnBoot = true; };
|
||||||
boot.tmp.cleanOnBoot = true;
|
}
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.silent-boot;
|
cfg = config.modules.silent-boot;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.silent-boot = {
|
options.modules.silent-boot = {
|
||||||
enable = mkEnableOption "silent-boot";
|
enable = mkEnableOption "silent-boot";
|
||||||
};
|
};
|
||||||
|
@ -11,7 +17,7 @@ in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
boot = {
|
boot = {
|
||||||
loader.timeout = 0;
|
loader.timeout = 0;
|
||||||
|
|
||||||
consoleLogLevel = 0;
|
consoleLogLevel = 0;
|
||||||
initrd.verbose = false;
|
initrd.verbose = false;
|
||||||
initrd.checkJournalingFS = false;
|
initrd.checkJournalingFS = false;
|
||||||
|
@ -28,4 +34,4 @@ in {
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.systemd-boot;
|
cfg = config.modules.systemd-boot;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.systemd-boot = {
|
options.modules.systemd-boot = {
|
||||||
enable = mkEnableOption "systemd-boot";
|
enable = mkEnableOption "systemd-boot";
|
||||||
};
|
};
|
||||||
|
@ -15,4 +21,4 @@ in {
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.brightnessctl;
|
cfg = config.modules.brightnessctl;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.brightnessctl = {
|
options.modules.brightnessctl = {
|
||||||
enable = mkEnableOption "brightnessctl";
|
enable = mkEnableOption "brightnessctl";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable { environment.systemPackages = [ pkgs.brightnessctl ]; };
|
||||||
environment.systemPackages = [
|
}
|
||||||
pkgs.brightnessctl
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib; {
|
with lib;
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# Import modules
|
# Import modules
|
||||||
./base/default.nix
|
./base/default.nix
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.fontconfig;
|
cfg = config.modules.fontconfig;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.fontconfig = {
|
options.modules.fontconfig = {
|
||||||
enable = mkEnableOption "fontconfig";
|
enable = mkEnableOption "fontconfig";
|
||||||
};
|
};
|
||||||
|
@ -12,10 +18,10 @@ in {
|
||||||
fonts.fontconfig.enable = cfg.enable;
|
fonts.fontconfig.enable = cfg.enable;
|
||||||
fonts.enableDefaultPackages = false;
|
fonts.enableDefaultPackages = false;
|
||||||
fonts.fontconfig.defaultFonts = {
|
fonts.fontconfig.defaultFonts = {
|
||||||
serif = mkDefault [];
|
serif = mkDefault [ ];
|
||||||
sansSerif = mkDefault [];
|
sansSerif = mkDefault [ ];
|
||||||
monospace = mkDefault [];
|
monospace = mkDefault [ ];
|
||||||
emoji = mkDefault [];
|
emoji = mkDefault [ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
|
@ -6,7 +11,7 @@
|
||||||
# Set up graphics
|
# Set up graphics
|
||||||
hardware.graphics.enable32Bit = true;
|
hardware.graphics.enable32Bit = true;
|
||||||
hardware.graphics.enable = true;
|
hardware.graphics.enable = true;
|
||||||
services.xserver.videoDrivers = ["nvidia"];
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
hardware.nvidia = {
|
hardware.nvidia = {
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
powerManagement.enable = false;
|
powerManagement.enable = false;
|
||||||
|
@ -24,4 +29,4 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.greetd;
|
cfg = config.modules.greetd;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.greetd = {
|
options.modules.greetd = {
|
||||||
enable = mkEnableOption "greetd";
|
enable = mkEnableOption "greetd";
|
||||||
command = mkOption {
|
command = mkOption {
|
||||||
|
@ -22,4 +28,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,22 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.tuigreet;
|
cfg = config.modules.tuigreet;
|
||||||
in {
|
in
|
||||||
options.modules.tuigreet = {
|
{
|
||||||
enable = mkEnableOption "tuigreet";
|
options.modules.tuigreet = {
|
||||||
|
enable = mkEnableOption "tuigreet";
|
||||||
greeting = mkOption {
|
greeting = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "Hewwo! >_< :3";
|
default = "Hewwo! >_< :3";
|
||||||
description = "Greeting message to show.";
|
description = "Greeting message to show.";
|
||||||
};
|
};
|
||||||
command = mkOption {
|
command = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "~/.initrc";
|
default = "~/.initrc";
|
||||||
|
@ -28,4 +34,4 @@ in {
|
||||||
# Enable silent boot to prevent late log messages from messing up tuigreet
|
# Enable silent boot to prevent late log messages from messing up tuigreet
|
||||||
modules.silent-boot.enable = true;
|
modules.silent-boot.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
config = {
|
config = {
|
||||||
|
@ -6,4 +11,4 @@
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
i18n.defaultLocale = "en_US.UTF-8";
|
||||||
console.keyMap = "us";
|
console.keyMap = "us";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.neovim;
|
cfg = config.modules.neovim;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.neovim = {
|
options.modules.neovim = {
|
||||||
enable = mkEnableOption "neovim";
|
enable = mkEnableOption "neovim";
|
||||||
};
|
};
|
||||||
|
@ -14,4 +20,4 @@ in {
|
||||||
defaultEditor = true;
|
defaultEditor = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.pipewire;
|
cfg = config.modules.pipewire;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.pipewire = {
|
options.modules.pipewire = {
|
||||||
enable = mkEnableOption "pipewire";
|
enable = mkEnableOption "pipewire";
|
||||||
};
|
};
|
||||||
|
@ -15,4 +21,4 @@ in {
|
||||||
pulse.enable = true;
|
pulse.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,18 +1,24 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.unfree;
|
cfg = config.modules.unfree;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.unfree = {
|
options.modules.unfree = {
|
||||||
enable = mkEnableOption "unfree";
|
enable = mkEnableOption "unfree";
|
||||||
allowedPackages = mkOption {
|
allowedPackages = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [ ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (getName pkg) cfg.allowedPackages;
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (getName pkg) cfg.allowedPackages;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,24 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
# Nixvim
|
# Nixvim
|
||||||
nixvim = import (builtins.fetchGit {
|
nixvim = import (builtins.fetchGit { url = "https://github.com/nix-community/nixvim"; });
|
||||||
url = "https://github.com/nix-community/nixvim";
|
|
||||||
});
|
|
||||||
|
|
||||||
# Stylix
|
# Stylix
|
||||||
stylix = import (pkgs.fetchFromGitHub {
|
stylix = import (
|
||||||
owner = "danth";
|
pkgs.fetchFromGitHub {
|
||||||
repo = "stylix";
|
owner = "danth";
|
||||||
rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116";
|
repo = "stylix";
|
||||||
sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5";
|
rev = "1ff9d37d27377bfe8994c24a8d6c6c1734ffa116";
|
||||||
});
|
sha256 = "0dz8h1ga8lnfvvmvsf6iqvnbvxrvx3qxi0y8s8b72066mqgvy8y5";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
# User configuration
|
# User configuration
|
||||||
userModule = types.submodule {
|
userModule = types.submodule {
|
||||||
|
@ -36,7 +41,8 @@ let
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# Import home manager
|
# Import home manager
|
||||||
<home-manager/nixos>
|
<home-manager/nixos>
|
||||||
|
@ -48,7 +54,7 @@ in {
|
||||||
options = {
|
options = {
|
||||||
machine.users = mkOption {
|
machine.users = mkOption {
|
||||||
type = types.attrsOf userModule;
|
type = types.attrsOf userModule;
|
||||||
default = {};
|
default = { };
|
||||||
description = "Users configured on this system.";
|
description = "Users configured on this system.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
{ input, pkgs, config, ... }:
|
{
|
||||||
|
input,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# Import all modules
|
# Import all modules
|
||||||
./desktop/default.nix
|
./desktop/default.nix
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.waybar;
|
cfg = config.modules.waybar;
|
||||||
theme = config.theming;
|
theme = config.theming;
|
||||||
colors = theme.colors;
|
colors = theme.colors;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.waybar = {
|
options.modules.waybar = {
|
||||||
enable = mkEnableOption "waybar";
|
enable = mkEnableOption "waybar";
|
||||||
};
|
};
|
||||||
|
@ -22,9 +28,7 @@ in {
|
||||||
mainBar = {
|
mainBar = {
|
||||||
layer = "top";
|
layer = "top";
|
||||||
spacing = 16;
|
spacing = 16;
|
||||||
modules-left = [
|
modules-left = [ "river/tags" ];
|
||||||
"river/tags"
|
|
||||||
];
|
|
||||||
modules-center = [
|
modules-center = [
|
||||||
#"river/window"
|
#"river/window"
|
||||||
"mpris"
|
"mpris"
|
||||||
|
@ -61,14 +65,30 @@ in {
|
||||||
#default = [ "" "" ];
|
#default = [ "" "" ];
|
||||||
headphone = "";
|
headphone = "";
|
||||||
headphone-muted = "";
|
headphone-muted = "";
|
||||||
default = [ "" "" "" ];
|
default = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
battery = {
|
battery = {
|
||||||
format = "{icon} {capacity}%"; # Spacing achieved using "Thin Space"
|
format = "{icon} {capacity}%"; # Spacing achieved using "Thin Space"
|
||||||
format-charging = " {capacity}%"; # Spacing achieved using "Thin Space"
|
format-charging = " {capacity}%"; # Spacing achieved using "Thin Space"
|
||||||
#format-icons = [ "" "" "" "" "" "" "" "" "" "" "" ];
|
#format-icons = [ "" "" "" "" "" "" "" "" "" "" "" ];
|
||||||
format-icons = [ "" "" "" "" "" "" "" "" "" "" "" ];
|
format-icons = [
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
""
|
||||||
|
];
|
||||||
interval = 1;
|
interval = 1;
|
||||||
};
|
};
|
||||||
clock = {
|
clock = {
|
||||||
|
@ -117,4 +137,4 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, pkgs, config, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.desktop;
|
cfg = config.modules.desktop;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# Import desktop environment modules
|
# Import desktop environment modules
|
||||||
./bar/waybar.nix
|
./bar/waybar.nix
|
||||||
|
@ -21,18 +27,23 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
home.packages = optionals cfg.wayland (with pkgs; [
|
home.packages = optionals cfg.wayland (
|
||||||
pkgs.wl-clipboard
|
with pkgs;
|
||||||
pkgs.wtype
|
[
|
||||||
]);
|
pkgs.wl-clipboard
|
||||||
|
pkgs.wtype
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
home.file.".initrc" = {
|
home.file.".initrc" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
executable = true;
|
executable = true;
|
||||||
text = ''
|
text =
|
||||||
#!${pkgs.bash}/bin/bash
|
''
|
||||||
|
#!${pkgs.bash}/bin/bash
|
||||||
|
|
||||||
'' + cfg.initScript;
|
''
|
||||||
|
+ cfg.initScript;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,20 @@
|
||||||
{ lib, pkgs, config, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.waylock;
|
cfg = config.modules.waylock;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.waylock = {
|
options.modules.waylock = {
|
||||||
enable = mkEnableOption "waylock";
|
enable = mkEnableOption "waylock";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
home.packages = mkIf cfg.enable (with pkgs; [
|
home.packages = mkIf cfg.enable (with pkgs; [ waylock ]);
|
||||||
waylock
|
|
||||||
]);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.modules.river;
|
cfg = config.modules.river;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.river.enable = lib.mkEnableOption "river";
|
options.modules.river.enable = lib.mkEnableOption "river";
|
||||||
|
|
||||||
# osConfig = lib.mkIf cfg.enable {
|
# osConfig = lib.mkIf cfg.enable {
|
||||||
|
@ -12,7 +18,7 @@ in {
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
# Set desktop type to wayland
|
# Set desktop type to wayland
|
||||||
modules.desktop.wayland = true;
|
modules.desktop.wayland = true;
|
||||||
|
|
||||||
# TODO: Move elsewhere and make keybindings more configurable
|
# TODO: Move elsewhere and make keybindings more configurable
|
||||||
modules.rofi.enable = true;
|
modules.rofi.enable = true;
|
||||||
|
|
||||||
|
@ -40,152 +46,190 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = false;
|
systemd.enable = false;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
settings = let
|
settings =
|
||||||
layout = "rivertile";
|
let
|
||||||
layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}";
|
layout = "rivertile";
|
||||||
modes = ["normal" "locked"];
|
layoutOptions = "-outer-padding ${toString config.theming.layout.windowPadding} -view-padding ${toString config.theming.layout.windowPadding}";
|
||||||
tags = [1 2 3 4 5 6 7 8 9];
|
modes = [
|
||||||
waylockOptions = "-init-color 0x${colors.bg} -input-color 0x${colors.focused} -fail-color 0x${colors.bg}";
|
"normal"
|
||||||
|
"locked"
|
||||||
|
];
|
||||||
|
tags = [
|
||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
6
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
];
|
||||||
|
waylockOptions = "-init-color 0x${colors.bg} -input-color 0x${colors.focused} -fail-color 0x${colors.bg}";
|
||||||
|
|
||||||
colors = config.theming.colors;
|
colors = config.theming.colors;
|
||||||
|
|
||||||
# Quick pow function
|
# Quick pow function
|
||||||
pow2 = power:
|
pow2 = power: if power != 0 then 2 * (pow2 (power - 1)) else 1;
|
||||||
if power != 0
|
|
||||||
then 2 * (pow2 (power - 1))
|
|
||||||
else 1;
|
|
||||||
|
|
||||||
# Modifiers
|
# Modifiers
|
||||||
main = "Super";
|
main = "Super";
|
||||||
ssm = "Super+Shift";
|
ssm = "Super+Shift";
|
||||||
sas = "Super+Alt+Shift";
|
sas = "Super+Alt+Shift";
|
||||||
sam = "Super+Alt";
|
sam = "Super+Alt";
|
||||||
scm = "Super+Control";
|
scm = "Super+Control";
|
||||||
scam = "Super+Control+Alt";
|
scam = "Super+Control+Alt";
|
||||||
ssc = "Super+Shift+Control";
|
ssc = "Super+Shift+Control";
|
||||||
in {
|
in
|
||||||
default-layout = "${layout}";
|
{
|
||||||
set-repeat = "50 300";
|
default-layout = "${layout}";
|
||||||
xcursor-theme = "BreezeX-RosePine-Linux 24";
|
set-repeat = "50 300";
|
||||||
keyboard-layout = "-options \"caps:escape\" us";
|
xcursor-theme = "BreezeX-RosePine-Linux 24";
|
||||||
|
keyboard-layout = "-options \"caps:escape\" us";
|
||||||
|
|
||||||
border-width = toString config.theming.layout.borderSize;
|
border-width = toString config.theming.layout.borderSize;
|
||||||
background-color = "0x${colors.bg}";
|
background-color = "0x${colors.bg}";
|
||||||
border-color-focused = "0x${colors.fg}";
|
border-color-focused = "0x${colors.fg}";
|
||||||
border-color-unfocused = "0x${colors.unfocused}"; # TODO: Change to use named color;
|
border-color-unfocused = "0x${colors.unfocused}"; # TODO: Change to use named color;
|
||||||
border-color-urgent = "0x${colors.fg}";
|
border-color-urgent = "0x${colors.fg}";
|
||||||
|
|
||||||
spawn = [
|
spawn = [
|
||||||
"\"${layout} ${layoutOptions}\""
|
"\"${layout} ${layoutOptions}\""
|
||||||
"waybar"
|
"waybar"
|
||||||
];
|
];
|
||||||
map = (lib.attrsets.recursiveUpdate ({
|
map = (
|
||||||
normal = {
|
lib.attrsets.recursiveUpdate
|
||||||
"${main} Q" = "close";
|
({
|
||||||
"${ssm} E" = "exit";
|
normal =
|
||||||
|
{
|
||||||
|
"${main} Q" = "close";
|
||||||
|
"${ssm} E" = "exit";
|
||||||
|
|
||||||
# Basic utilities
|
# Basic utilities
|
||||||
"${main} X " = "spawn \"waylock -fork-on-lock ${waylockOptions}\"";
|
"${main} X " = "spawn \"waylock -fork-on-lock ${waylockOptions}\"";
|
||||||
"${ssm} Return" = "spawn foot";
|
"${ssm} Return" = "spawn foot";
|
||||||
"${main} P" = "spawn \"rofi -show drun\"";
|
"${main} P" = "spawn \"rofi -show drun\"";
|
||||||
"${ssm} P" = "spawn rofi-rbw";
|
"${ssm} P" = "spawn rofi-rbw";
|
||||||
|
|
||||||
# Window focus
|
# Window focus
|
||||||
"${main} J" = "focus-view next";
|
"${main} J" = "focus-view next";
|
||||||
"${main} K" = "focus-view previous";
|
"${main} K" = "focus-view previous";
|
||||||
|
|
||||||
# Swap windows
|
# Swap windows
|
||||||
"${ssm} J" = "swap next";
|
"${ssm} J" = "swap next";
|
||||||
"${ssm} K" = "swap previous";
|
"${ssm} K" = "swap previous";
|
||||||
"${main} Return" = "zoom";
|
"${main} Return" = "zoom";
|
||||||
|
|
||||||
# Main ratio
|
# Main ratio
|
||||||
"${main} H" = "send-layout-cmd rivertile 'main-ratio -0.05'";
|
"${main} H" = "send-layout-cmd rivertile 'main-ratio -0.05'";
|
||||||
"${main} L" = "send-layout-cmd rivertile 'main-ratio +0.05'";
|
"${main} L" = "send-layout-cmd rivertile 'main-ratio +0.05'";
|
||||||
|
|
||||||
# Main count
|
# Main count
|
||||||
"${ssm} H" = "send-layout-cmd rivertile 'main-count +1'";
|
"${ssm} H" = "send-layout-cmd rivertile 'main-count +1'";
|
||||||
"${ssm} L" = "send-layout-cmd rivertile 'main-count -1'";
|
"${ssm} L" = "send-layout-cmd rivertile 'main-count -1'";
|
||||||
|
|
||||||
# Tags
|
# Tags
|
||||||
"${main} 0" = "set-focused-tags ${toString (pow2 32 - 1)}";
|
"${main} 0" = "set-focused-tags ${toString (pow2 32 - 1)}";
|
||||||
"${ssm} 0" = "set-view-tags ${toString (pow2 32 - 1)}";
|
"${ssm} 0" = "set-view-tags ${toString (pow2 32 - 1)}";
|
||||||
|
|
||||||
# Orientation
|
# Orientation
|
||||||
"${main} Up" = "send-layout-cmd rivertile \"main-location top\"";
|
"${main} Up" = "send-layout-cmd rivertile \"main-location top\"";
|
||||||
"${main} Right" = "send-layout-cmd rivertile \"main-location right\"";
|
"${main} Right" = "send-layout-cmd rivertile \"main-location right\"";
|
||||||
"${main} Down" = "send-layout-cmd rivertile \"main-location bottom\"";
|
"${main} Down" = "send-layout-cmd rivertile \"main-location bottom\"";
|
||||||
"${main} Left" = "send-layout-cmd rivertile \"main-location left\"";
|
"${main} Left" = "send-layout-cmd rivertile \"main-location left\"";
|
||||||
|
|
||||||
# Move floating windows
|
# Move floating windows
|
||||||
"${sam} H" = "move left 100";
|
"${sam} H" = "move left 100";
|
||||||
"${sam} J" = "move down 100";
|
"${sam} J" = "move down 100";
|
||||||
"${sam} K" = "move up 100";
|
"${sam} K" = "move up 100";
|
||||||
"${sam} L" = "move right 100";
|
"${sam} L" = "move right 100";
|
||||||
|
|
||||||
# Snap floating windows
|
# Snap floating windows
|
||||||
"${scam} H" = "snap left";
|
"${scam} H" = "snap left";
|
||||||
"${scam} J" = "snap down";
|
"${scam} J" = "snap down";
|
||||||
"${scam} K" = "snap up";
|
"${scam} K" = "snap up";
|
||||||
"${scam} L" = "snap right";
|
"${scam} L" = "snap right";
|
||||||
|
|
||||||
# Resize floating windows
|
# Resize floating windows
|
||||||
"${sas} H" = "resize horizontal -100";
|
"${sas} H" = "resize horizontal -100";
|
||||||
"${sas} J" = "resize vertical 100";
|
"${sas} J" = "resize vertical 100";
|
||||||
"${sas} K" = "resize vertical -100";
|
"${sas} K" = "resize vertical -100";
|
||||||
"${sas} L" = "resize horizontal 100";
|
"${sas} L" = "resize horizontal 100";
|
||||||
|
|
||||||
# Toggle modes
|
# Toggle modes
|
||||||
"${main} Space" = "toggle-float";
|
"${main} Space" = "toggle-float";
|
||||||
"${main} F" = "toggle-fullscreen";
|
"${main} F" = "toggle-fullscreen";
|
||||||
} // builtins.listToAttrs (builtins.concatLists (map (tag: [
|
}
|
||||||
{ name = "${main} ${toString tag}"; value = "set-focused-tags ${toString (pow2 (tag - 1))}"; }
|
// builtins.listToAttrs (
|
||||||
{ name = "${ssm} ${toString tag}"; value = "set-view-tags ${toString (pow2 (tag - 1))}"; }
|
builtins.concatLists (
|
||||||
{ name = "${scm} ${toString tag}"; value = "toggle-focused-tags ${toString (pow2 (tag - 1))}"; }
|
map (tag: [
|
||||||
{ name = "${ssc} ${toString tag}"; value = "toggle-view-tags ${toString (pow2 (tag - 1))}"; }
|
{
|
||||||
]) tags));
|
name = "${main} ${toString tag}";
|
||||||
}) (builtins.listToAttrs (map (mode: {
|
value = "set-focused-tags ${toString (pow2 (tag - 1))}";
|
||||||
name = "${mode}";
|
}
|
||||||
value = {
|
{
|
||||||
# Control volume
|
name = "${ssm} ${toString tag}";
|
||||||
"None XF86AudioRaiseVolume" = "spawn \"pulsemixer --change-volume +5\"";
|
value = "set-view-tags ${toString (pow2 (tag - 1))}";
|
||||||
"None XF86AudioLowerVolume" = "spawn \"pulsemixer --change-volume -5\"";
|
}
|
||||||
"None XF86AudioMute" = "spawn \"pulsemixer --toggle-mute\"";
|
{
|
||||||
|
name = "${scm} ${toString tag}";
|
||||||
|
value = "toggle-focused-tags ${toString (pow2 (tag - 1))}";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "${ssc} ${toString tag}";
|
||||||
|
value = "toggle-view-tags ${toString (pow2 (tag - 1))}";
|
||||||
|
}
|
||||||
|
]) tags
|
||||||
|
)
|
||||||
|
);
|
||||||
|
})
|
||||||
|
(
|
||||||
|
builtins.listToAttrs (
|
||||||
|
map (mode: {
|
||||||
|
name = "${mode}";
|
||||||
|
value = {
|
||||||
|
# Control volume
|
||||||
|
"None XF86AudioRaiseVolume" = "spawn \"pulsemixer --change-volume +5\"";
|
||||||
|
"None XF86AudioLowerVolume" = "spawn \"pulsemixer --change-volume -5\"";
|
||||||
|
"None XF86AudioMute" = "spawn \"pulsemixer --toggle-mute\"";
|
||||||
|
|
||||||
# Control brightness
|
# Control brightness
|
||||||
"None XF86MonBrightnessUp" = "spawn \"brightnessctl set +5%\"";
|
"None XF86MonBrightnessUp" = "spawn \"brightnessctl set +5%\"";
|
||||||
"None XF86MonBrightnessDown" = "spawn \"brightnessctl set 5%-\"";
|
"None XF86MonBrightnessDown" = "spawn \"brightnessctl set 5%-\"";
|
||||||
|
|
||||||
# Control music playback
|
# Control music playback
|
||||||
"None XF86Messenger" = "spawn \"playerctl previous\"";
|
"None XF86Messenger" = "spawn \"playerctl previous\"";
|
||||||
"None XF86Go" = "spawn \"playerctl play-pause\"";
|
"None XF86Go" = "spawn \"playerctl play-pause\"";
|
||||||
"None Cancel" = "spawn \"playerctl next\"";
|
"None Cancel" = "spawn \"playerctl next\"";
|
||||||
|
};
|
||||||
|
}) modes
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
map-pointer = {
|
||||||
|
normal = {
|
||||||
|
"${main} BTN_LEFT" = "move-view";
|
||||||
|
"${main} BTN_RIGHT" = "resize-view";
|
||||||
|
"${main} BTN_MIDDLE" = "toggle-float";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}) modes)));
|
input = {
|
||||||
map-pointer = {
|
"'*'" = {
|
||||||
normal = {
|
accel-profile = "adaptive";
|
||||||
"${main} BTN_LEFT" = "move-view";
|
pointer-accel = "0.5";
|
||||||
"${main} BTN_RIGHT" = "resize-view";
|
scroll-factor = "0.8";
|
||||||
"${main} BTN_MIDDLE" = "toggle-float";
|
};
|
||||||
|
"'*Synaptics*'" = {
|
||||||
|
natural-scroll = "enabled";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
rule-add = {
|
||||||
|
"-app-id" = {
|
||||||
|
"'bar'" = "csd";
|
||||||
|
"'*'" = "ssd";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
input = {
|
|
||||||
"'*'" = {
|
|
||||||
accel-profile = "adaptive";
|
|
||||||
pointer-accel = "0.5";
|
|
||||||
scroll-factor = "0.8";
|
|
||||||
};
|
|
||||||
"'*Synaptics*'" = {
|
|
||||||
natural-scroll = "enabled";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
rule-add = {
|
|
||||||
"-app-id" = {
|
|
||||||
"'bar'" = "csd";
|
|
||||||
"'*'" = "ssd";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.discord;
|
cfg = config.modules.discord;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.discord = {
|
options.modules.discord = {
|
||||||
enable = mkEnableOption "discord";
|
enable = mkEnableOption "discord";
|
||||||
};
|
};
|
||||||
|
@ -11,8 +17,6 @@ in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.unfree.allowedPackages = [ "discord" ];
|
modules.unfree.allowedPackages = [ "discord" ];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [ discord ];
|
||||||
discord
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.feishin;
|
cfg = config.modules.feishin;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.feishin.enable = mkEnableOption "feishin";
|
options.modules.feishin.enable = mkEnableOption "feishin";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable { home.packages = with pkgs; [ feishin ]; };
|
||||||
home.packages = with pkgs; [
|
}
|
||||||
feishin
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.modules.firefox;
|
cfg = config.modules.firefox;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.firefox.enable = lib.mkEnableOption "firefox";
|
options.modules.firefox.enable = lib.mkEnableOption "firefox";
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
@ -32,19 +38,19 @@ in {
|
||||||
DisableTelemetry = true;
|
DisableTelemetry = true;
|
||||||
DisplayBookmarksToolbar = "never";
|
DisplayBookmarksToolbar = "never";
|
||||||
DisplayMenuBar = "never";
|
DisplayMenuBar = "never";
|
||||||
DNSOverHTTPS = { Enabled = false; };
|
DNSOverHTTPS = {
|
||||||
|
Enabled = false;
|
||||||
|
};
|
||||||
DontCheckDefaultBrowser = true;
|
DontCheckDefaultBrowser = true;
|
||||||
PasswordManagerEnabled = false;
|
PasswordManagerEnabled = false;
|
||||||
TranslateEnabled = true;
|
TranslateEnabled = true;
|
||||||
UseSystemPrintDialog = true;
|
UseSystemPrintDialog = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
profiles.nixos = {
|
profiles.nixos = {
|
||||||
search.default = "DuckDuckGo";
|
search.default = "DuckDuckGo";
|
||||||
|
|
||||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
extensions = with pkgs.nur.repos.rycee.firefox-addons; [ ublock-origin ];
|
||||||
ublock-origin
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
"browser.tabs.inTitlebar" = 0;
|
"browser.tabs.inTitlebar" = 0;
|
||||||
|
@ -57,4 +63,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
|
@ -15,8 +20,11 @@ let
|
||||||
</alias>
|
</alias>
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configContent = concatStrings (map (font: aliasConfig config.theming.fonts.pkgs.${font}) config.theming.fonts.installed);
|
configContent = concatStrings (
|
||||||
in {
|
map (font: aliasConfig config.theming.fonts.pkgs.${font}) config.theming.fonts.installed
|
||||||
|
);
|
||||||
|
in
|
||||||
|
{
|
||||||
options.modules.fontconfig = {
|
options.modules.fontconfig = {
|
||||||
enable = mkEnableOption "fontconfig";
|
enable = mkEnableOption "fontconfig";
|
||||||
};
|
};
|
||||||
|
@ -26,18 +34,10 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
defaultFonts = {
|
defaultFonts = {
|
||||||
serif = [
|
serif = [ config.theming.fonts.serif.name ];
|
||||||
config.theming.fonts.serif.name
|
sansSerif = [ config.theming.fonts.sansSerif.name ];
|
||||||
];
|
monospace = [ config.theming.fonts.monospace.name ];
|
||||||
sansSerif = [
|
emoji = [ config.theming.fonts.emoji.name ];
|
||||||
config.theming.fonts.sansSerif.name
|
|
||||||
];
|
|
||||||
monospace = [
|
|
||||||
config.theming.fonts.monospace.name
|
|
||||||
];
|
|
||||||
emoji = [
|
|
||||||
config.theming.fonts.emoji.name
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,10 +48,10 @@ in {
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
|
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
|
||||||
<fontconfig>
|
<fontconfig>
|
||||||
|
|
||||||
${configContent}
|
${configContent}
|
||||||
</fontconfig>
|
</fontconfig>
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,33 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.foot;
|
cfg = config.modules.foot;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.foot.enable = mkEnableOption "foot";
|
options.modules.foot.enable = mkEnableOption "foot";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.foot = {
|
programs.foot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
main = let
|
main =
|
||||||
font = config.theming.fonts.monospace.name;
|
let
|
||||||
size = toString config.theming.fonts.monospace.recommendedSize;
|
font = config.theming.fonts.monospace.name;
|
||||||
in {
|
size = toString config.theming.fonts.monospace.recommendedSize;
|
||||||
font = mkForce "${font}:style=Regular:size=${size}";
|
in
|
||||||
font-bold = "${font}:style=Bold:size=${size}";
|
{
|
||||||
font-italic = "${font}:style=Italic:size=${size}";
|
font = mkForce "${font}:style=Regular:size=${size}";
|
||||||
font-bold-italic = "${font}:style=Bold Italic:size=${size}";
|
font-bold = "${font}:style=Bold:size=${size}";
|
||||||
};
|
font-italic = "${font}:style=Italic:size=${size}";
|
||||||
|
font-bold-italic = "${font}:style=Bold Italic:size=${size}";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.nix;
|
cfg = config.modules.nix;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.nix = {
|
options.modules.nix = {
|
||||||
enable = mkEnableOption "nix";
|
enable = mkEnableOption "nix";
|
||||||
};
|
};
|
||||||
|
@ -18,9 +24,7 @@ in {
|
||||||
|
|
||||||
# VSCode configuration
|
# VSCode configuration
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
extensions = with pkgs.vscode-extensions; [
|
extensions = with pkgs.vscode-extensions; [ jnoortheen.nix-ide ];
|
||||||
jnoortheen.nix-ide
|
|
||||||
];
|
|
||||||
|
|
||||||
userSettings = {
|
userSettings = {
|
||||||
"[nix]" = {
|
"[nix]" = {
|
||||||
|
@ -43,4 +47,4 @@ in {
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.rust;
|
cfg = config.modules.rust;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.rust = {
|
options.modules.rust = {
|
||||||
enable = mkEnableOption "rust";
|
enable = mkEnableOption "rust";
|
||||||
};
|
};
|
||||||
|
@ -11,21 +17,18 @@ in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
# Development packages
|
# Development packages
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
rustc
|
rustc
|
||||||
cargo
|
cargo
|
||||||
rust-analyzer
|
rust-analyzer
|
||||||
rustfmt
|
rustfmt
|
||||||
];
|
];
|
||||||
|
|
||||||
# VSCode configuration
|
# VSCode configuration
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
extensions = with pkgs.vscode-extensions; [
|
extensions = with pkgs.vscode-extensions; [ rust-lang.rust-analyzer ];
|
||||||
rust-lang.rust-analyzer
|
|
||||||
];
|
|
||||||
|
|
||||||
userSettings = {
|
userSettings = {
|
||||||
"[rust]" = {
|
"[rust]" = { };
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -36,4 +39,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.mako;
|
cfg = config.modules.mako;
|
||||||
theme = config.theming;
|
theme = config.theming;
|
||||||
colors = theme.colors;
|
colors = theme.colors;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.mako.enable = mkEnableOption "mako";
|
options.modules.mako.enable = mkEnableOption "mako";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -22,4 +28,4 @@ in {
|
||||||
font = "${theme.fonts.monospace.name} ${toString theme.fonts.monospace.recommendedSize}";
|
font = "${theme.fonts.monospace.name} ${toString theme.fonts.monospace.recommendedSize}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.neovim;
|
cfg = config.modules.neovim;
|
||||||
theme = config.theming;
|
theme = config.theming;
|
||||||
colors = theme.colors;
|
colors = theme.colors;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.neovim = {
|
options.modules.neovim = {
|
||||||
enable = mkEnableOption "neovim";
|
enable = mkEnableOption "neovim";
|
||||||
};
|
};
|
||||||
|
@ -17,8 +23,7 @@ in {
|
||||||
viAlias = true;
|
viAlias = true;
|
||||||
vimAlias = true;
|
vimAlias = true;
|
||||||
|
|
||||||
extraPackages = with pkgs; [
|
extraPackages = with pkgs; [ ];
|
||||||
];
|
|
||||||
|
|
||||||
opts = {
|
opts = {
|
||||||
number = true;
|
number = true;
|
||||||
|
@ -179,4 +184,4 @@ in {
|
||||||
};
|
};
|
||||||
programs.neovim.defaultEditor = true;
|
programs.neovim.defaultEditor = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.obsidian;
|
cfg = config.modules.obsidian;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.obsidian = {
|
options.modules.obsidian = {
|
||||||
enable = mkEnableOption "obsidian";
|
enable = mkEnableOption "obsidian";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable { home.packages = with pkgs; [ obsidian ]; };
|
||||||
home.packages = with pkgs; [
|
}
|
||||||
obsidian
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,10 +1,16 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.qutebrowser;
|
cfg = config.modules.qutebrowser;
|
||||||
theme = config.theming;
|
theme = config.theming;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.qutebrowser.enable = mkEnableOption "qutebrowser";
|
options.modules.qutebrowser.enable = mkEnableOption "qutebrowser";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -19,4 +25,4 @@ in {
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.rofi;
|
cfg = config.modules.rofi;
|
||||||
theme = config.theming;
|
theme = config.theming;
|
||||||
colors = theme.colors;
|
colors = theme.colors;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.rofi.enable = mkEnableOption "rofi";
|
options.modules.rofi.enable = mkEnableOption "rofi";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -13,41 +19,43 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.rofi-wayland;
|
package = pkgs.rofi-wayland;
|
||||||
font = "${theme.fonts.monospace.name} ${toString theme.fonts.monospace.recommendedSize}";
|
font = "${theme.fonts.monospace.name} ${toString theme.fonts.monospace.recommendedSize}";
|
||||||
theme = let
|
theme =
|
||||||
inherit (config.lib.formats.rasi) mkLiteral;
|
let
|
||||||
in {
|
inherit (config.lib.formats.rasi) mkLiteral;
|
||||||
"*" = {
|
in
|
||||||
background-color = mkLiteral "rgba(0, 0, 0, 0%)";
|
{
|
||||||
border-color = mkLiteral "#${colors.fg}";
|
"*" = {
|
||||||
text-color = mkLiteral "#${colors.fg}";
|
background-color = mkLiteral "rgba(0, 0, 0, 0%)";
|
||||||
|
border-color = mkLiteral "#${colors.fg}";
|
||||||
|
text-color = mkLiteral "#${colors.fg}";
|
||||||
|
};
|
||||||
|
mainbox = {
|
||||||
|
background-color = mkLiteral "#${colors.bg}";
|
||||||
|
border = mkLiteral "${toString theme.layout.borderSize}px";
|
||||||
|
};
|
||||||
|
element-text = {
|
||||||
|
highlight = mkLiteral "#${colors.accent}";
|
||||||
|
};
|
||||||
|
inputbar = {
|
||||||
|
children = mkLiteral "[textbox-search, entry]";
|
||||||
|
};
|
||||||
|
listview = {
|
||||||
|
padding = mkLiteral "2px 0px";
|
||||||
|
};
|
||||||
|
textbox-search = {
|
||||||
|
expand = false;
|
||||||
|
content = "> ";
|
||||||
|
};
|
||||||
|
"inputbar, message" = {
|
||||||
|
padding = mkLiteral "2px";
|
||||||
|
};
|
||||||
|
element = {
|
||||||
|
padding = mkLiteral "0px 2px";
|
||||||
|
};
|
||||||
|
"element selected" = {
|
||||||
|
background-color = mkLiteral "#${colors.unfocused}";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
mainbox = {
|
|
||||||
background-color = mkLiteral "#${colors.bg}";
|
|
||||||
border = mkLiteral "${toString theme.layout.borderSize}px";
|
|
||||||
};
|
|
||||||
element-text = {
|
|
||||||
highlight = mkLiteral "#${colors.accent}";
|
|
||||||
};
|
|
||||||
inputbar = {
|
|
||||||
children = mkLiteral "[textbox-search, entry]";
|
|
||||||
};
|
|
||||||
listview = {
|
|
||||||
padding = mkLiteral "2px 0px";
|
|
||||||
};
|
|
||||||
textbox-search = {
|
|
||||||
expand = false;
|
|
||||||
content = "> ";
|
|
||||||
};
|
|
||||||
"inputbar, message" = {
|
|
||||||
padding = mkLiteral "2px";
|
|
||||||
};
|
|
||||||
element = {
|
|
||||||
padding = mkLiteral "0px 2px";
|
|
||||||
};
|
|
||||||
"element selected" = {
|
|
||||||
background-color = mkLiteral "#${colors.unfocused}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,21 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.rofi-rbw;
|
cfg = config.modules.rofi-rbw;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.rofi-rbw.enable = mkEnableOption "rofi-rbw";
|
options.modules.rofi-rbw.enable = mkEnableOption "rofi-rbw";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.rofi.enable = true;
|
modules.rofi.enable = true;
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [ pkgs.rofi-rbw ];
|
||||||
pkgs.rofi-rbw
|
|
||||||
];
|
|
||||||
|
|
||||||
# TODO: Move to separate module and make configurable
|
# TODO: Move to separate module and make configurable
|
||||||
programs.rbw = {
|
programs.rbw = {
|
||||||
|
@ -24,4 +28,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,18 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.bash;
|
cfg = config.modules.bash;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.bash = {
|
options.modules.bash = {
|
||||||
enable = mkEnableOption "bash";
|
enable = mkEnableOption "bash";
|
||||||
};
|
};
|
||||||
|
|
||||||
config.programs.bash.enable = cfg.enable;
|
config.programs.bash.enable = cfg.enable;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.fish;
|
cfg = config.modules.fish;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.fish = {
|
options.modules.fish = {
|
||||||
enable = mkEnableOption "fish";
|
enable = mkEnableOption "fish";
|
||||||
|
|
||||||
|
@ -31,9 +37,18 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
plugins = [
|
plugins = [
|
||||||
(mkIf cfg.plugins.done { name = "done"; src = pkgs.fishPlugins.done.src; })
|
(mkIf cfg.plugins.done {
|
||||||
(mkIf cfg.plugins.fzf { name = "fzf"; src = pkgs.fishPlugins.fzf-fish.src; })
|
name = "done";
|
||||||
(mkIf cfg.plugins.grc { name = "grc"; src = pkgs.fishPlugins.grc.src; })
|
src = pkgs.fishPlugins.done.src;
|
||||||
|
})
|
||||||
|
(mkIf cfg.plugins.fzf {
|
||||||
|
name = "fzf";
|
||||||
|
src = pkgs.fishPlugins.fzf-fish.src;
|
||||||
|
})
|
||||||
|
(mkIf cfg.plugins.grc {
|
||||||
|
name = "grc";
|
||||||
|
src = pkgs.fishPlugins.grc.src;
|
||||||
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -43,4 +58,4 @@ in {
|
||||||
(mkIf cfg.plugins.grc grc)
|
(mkIf cfg.plugins.grc grc)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib; {
|
with lib;
|
||||||
|
{
|
||||||
options.modules.steam = {
|
options.modules.steam = {
|
||||||
enable = mkEnableOption "steam";
|
enable = mkEnableOption "steam";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,4 +7,4 @@
|
||||||
./steam.nix
|
./steam.nix
|
||||||
./waylock.nix
|
./waylock.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
enabled = any (user: user.modules.river.enable) (attrValues config.home-manager.users);
|
enabled = any (user: user.modules.river.enable) (attrValues config.home-manager.users);
|
||||||
in {
|
in
|
||||||
config = mkIf enabled {
|
{
|
||||||
programs.river.enable = true;
|
config = mkIf enabled { programs.river.enable = true; };
|
||||||
};
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
enabled = any (user: user.modules.steam.enable) (attrValues config.home-manager.users);
|
enabled = any (user: user.modules.steam.enable) (attrValues config.home-manager.users);
|
||||||
in {
|
in
|
||||||
config = mkIf enabled {
|
{
|
||||||
programs.steam.enable = true;
|
config = mkIf enabled { programs.steam.enable = true; };
|
||||||
};
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
enabled = any (user: user.modules.waylock.enable) (attrValues config.home-manager.users);
|
enabled = any (user: user.modules.waylock.enable) (attrValues config.home-manager.users);
|
||||||
in {
|
in
|
||||||
config = mkIf enabled {
|
{
|
||||||
security.pam.services.waylock = {};
|
config = mkIf enabled { security.pam.services.waylock = { }; };
|
||||||
};
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
|
@ -30,7 +35,7 @@ let
|
||||||
};
|
};
|
||||||
fallbackFonts = mkOption {
|
fallbackFonts = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [ ];
|
||||||
description = "Fallback fonts for specified font.";
|
description = "Fallback fonts for specified font.";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -63,25 +68,35 @@ let
|
||||||
] ++ map (font: font.name) cfg.fonts.extraFonts;
|
] ++ map (font: font.name) cfg.fonts.extraFonts;
|
||||||
|
|
||||||
# Flatten dependencies of fonts
|
# Flatten dependencies of fonts
|
||||||
fontPackages = converge (fonts:
|
fontPackages =
|
||||||
listToAttrs (map (font: {
|
converge
|
||||||
name = font;
|
(
|
||||||
value = true;
|
fonts:
|
||||||
}) (
|
listToAttrs (
|
||||||
flatten (map (font:
|
map
|
||||||
[ font.name ]
|
(font: {
|
||||||
++ cfg.fonts.pkgs.${font.name}.fallbackFonts
|
name = font;
|
||||||
) (attrsToList fonts))
|
value = true;
|
||||||
))
|
})
|
||||||
) (listToAttrs (map (font: {
|
(
|
||||||
name = font;
|
flatten (map (font: [ font.name ] ++ cfg.fonts.pkgs.${font.name}.fallbackFonts) (attrsToList fonts))
|
||||||
value = true;
|
)
|
||||||
}) enabledFonts));
|
)
|
||||||
|
)
|
||||||
|
(
|
||||||
|
listToAttrs (
|
||||||
|
map (font: {
|
||||||
|
name = font;
|
||||||
|
value = true;
|
||||||
|
}) enabledFonts
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
# Convert set of fonts to list of packages
|
# Convert set of fonts to list of packages
|
||||||
fontNameList = map (font: font.name) (attrsToList fontPackages);
|
fontNameList = map (font: font.name) (attrsToList fontPackages);
|
||||||
fontPackageList = map (font: cfg.fonts.pkgs.${font}.package) fontNameList;
|
fontPackageList = map (font: cfg.fonts.pkgs.${font}.package) fontNameList;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
# Import all themes
|
# Import all themes
|
||||||
./themes/gruvbox.nix
|
./themes/gruvbox.nix
|
||||||
|
@ -90,123 +105,129 @@ in {
|
||||||
|
|
||||||
options.modules.theming.enable = mkEnableOption "theming";
|
options.modules.theming.enable = mkEnableOption "theming";
|
||||||
|
|
||||||
options.theming = let colors = config.theming.schemeColors; in {
|
options.theming =
|
||||||
darkMode = mkOption {
|
let
|
||||||
type = types.bool;
|
colors = config.theming.schemeColors;
|
||||||
default = false;
|
in
|
||||||
example = true;
|
{
|
||||||
description = "Whether the app should use dark mode.";
|
darkMode = mkOption {
|
||||||
};
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = "Whether the app should use dark mode.";
|
||||||
|
};
|
||||||
|
|
||||||
colorScheme = mkOption {
|
colorScheme = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
description = "Base 16 color scheme to use for styling. See stylix documentation for more information.";
|
description = "Base 16 color scheme to use for styling. See stylix documentation for more information.";
|
||||||
};
|
};
|
||||||
|
|
||||||
clientSideDecorations = mkOption {
|
clientSideDecorations = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = "Whether to enable client side decorations for windows.";
|
description = "Whether to enable client side decorations for windows.";
|
||||||
};
|
};
|
||||||
|
|
||||||
schemeColors = mkOption {
|
schemeColors = mkOption {
|
||||||
type = types.attrsOf types.anything;
|
type = types.attrsOf types.anything;
|
||||||
default = config.lib.stylix.colors;
|
default = config.lib.stylix.colors;
|
||||||
description = "Generated colors from scheme";
|
description = "Generated colors from scheme";
|
||||||
};
|
};
|
||||||
|
|
||||||
colors = {
|
colors = {
|
||||||
bg = mkOption {
|
bg = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = colors.base00;
|
default = colors.base00;
|
||||||
|
};
|
||||||
|
fg = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = colors.base05;
|
||||||
|
};
|
||||||
|
accent = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = colors.base09;
|
||||||
|
};
|
||||||
|
focused = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = cfg.colors.fg;
|
||||||
|
};
|
||||||
|
unfocused = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = colors.base02;
|
||||||
|
};
|
||||||
|
alert = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "ffffff"; # TODO: Derive color from theme
|
||||||
|
};
|
||||||
};
|
};
|
||||||
fg = mkOption {
|
|
||||||
type = types.str;
|
layout = {
|
||||||
default = colors.base05;
|
borderRadius = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 0;
|
||||||
|
description = "Border radius of windows.";
|
||||||
|
};
|
||||||
|
|
||||||
|
borderSize = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 1;
|
||||||
|
description = "Size of borders used throughout UI.";
|
||||||
|
};
|
||||||
|
|
||||||
|
windowPadding = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 2;
|
||||||
|
description = "Margin of each window, actual space between windows will be twice this number.";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
accent = mkOption {
|
|
||||||
type = types.str;
|
fonts = {
|
||||||
default = colors.base09;
|
pkgs = mkOption {
|
||||||
};
|
type = types.attrsOf fontModule;
|
||||||
focused = mkOption {
|
default = builtins.listToAttrs (
|
||||||
type = types.str;
|
map (module: {
|
||||||
default = cfg.colors.fg;
|
name = module.name;
|
||||||
};
|
value = module;
|
||||||
unfocused = mkOption {
|
}) (map (module: (import module) { inherit lib config pkgs; }) fontModules)
|
||||||
type = types.str;
|
);
|
||||||
default = colors.base02;
|
description = "All available font modules.";
|
||||||
};
|
};
|
||||||
alert = mkOption {
|
|
||||||
type = types.str;
|
installed = mkOption {
|
||||||
default = "ffffff"; # TODO: Derive color from theme
|
type = types.listOf types.str;
|
||||||
|
default = fontNameList;
|
||||||
|
description = "List of installed fonts.";
|
||||||
|
};
|
||||||
|
|
||||||
|
serif = mkOption {
|
||||||
|
type = fontModule;
|
||||||
|
description = "Default serif font";
|
||||||
|
};
|
||||||
|
|
||||||
|
sansSerif = mkOption {
|
||||||
|
type = fontModule;
|
||||||
|
description = "Default sansSerif font.";
|
||||||
|
};
|
||||||
|
|
||||||
|
monospace = mkOption {
|
||||||
|
type = fontModule;
|
||||||
|
description = "Default monospace font.";
|
||||||
|
};
|
||||||
|
|
||||||
|
emoji = mkOption {
|
||||||
|
type = fontModule;
|
||||||
|
description = "Default emoji font.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraFonts = mkOption {
|
||||||
|
type = types.listOf fontModule;
|
||||||
|
default = [ ];
|
||||||
|
description = "Additional fonts to install.";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
layout = {
|
|
||||||
borderRadius = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 0;
|
|
||||||
description = "Border radius of windows.";
|
|
||||||
};
|
|
||||||
|
|
||||||
borderSize = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 1;
|
|
||||||
description = "Size of borders used throughout UI.";
|
|
||||||
};
|
|
||||||
|
|
||||||
windowPadding = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 2;
|
|
||||||
description = "Margin of each window, actual space between windows will be twice this number.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts = {
|
|
||||||
pkgs = mkOption {
|
|
||||||
type = types.attrsOf fontModule;
|
|
||||||
default = builtins.listToAttrs (map (module: {
|
|
||||||
name = module.name;
|
|
||||||
value = module;
|
|
||||||
}) (map (module: (import module) { inherit lib config pkgs; }) fontModules));
|
|
||||||
description = "All available font modules.";
|
|
||||||
};
|
|
||||||
|
|
||||||
installed = mkOption {
|
|
||||||
type = types.listOf types.str;
|
|
||||||
default = fontNameList;
|
|
||||||
description = "List of installed fonts.";
|
|
||||||
};
|
|
||||||
|
|
||||||
serif = mkOption {
|
|
||||||
type = fontModule;
|
|
||||||
description = "Default serif font";
|
|
||||||
};
|
|
||||||
|
|
||||||
sansSerif = mkOption {
|
|
||||||
type = fontModule;
|
|
||||||
description = "Default sansSerif font.";
|
|
||||||
};
|
|
||||||
|
|
||||||
monospace = mkOption {
|
|
||||||
type = fontModule;
|
|
||||||
description = "Default monospace font.";
|
|
||||||
};
|
|
||||||
|
|
||||||
emoji = mkOption {
|
|
||||||
type = fontModule;
|
|
||||||
description = "Default emoji font.";
|
|
||||||
};
|
|
||||||
|
|
||||||
extraFonts = mkOption {
|
|
||||||
type = types.listOf fontModule;
|
|
||||||
default = [];
|
|
||||||
description = "Additional fonts to install.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf config.modules.theming.enable {
|
config = mkIf config.modules.theming.enable {
|
||||||
# Enable fontconfig
|
# Enable fontconfig
|
||||||
modules.fontconfig.enable = true;
|
modules.fontconfig.enable = true;
|
||||||
|
@ -229,30 +250,32 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
# Configure gtk theme
|
# Configure gtk theme
|
||||||
gtk = let
|
gtk =
|
||||||
disableCSD = ''
|
let
|
||||||
headerbar.default-decoration {
|
disableCSD = ''
|
||||||
margin-bottom: 50px;
|
headerbar.default-decoration {
|
||||||
margin-top: -100px;
|
margin-bottom: 50px;
|
||||||
}
|
margin-top: -100px;
|
||||||
|
}
|
||||||
|
|
||||||
window.csd,
|
window.csd,
|
||||||
window.csd decoration {
|
window.csd decoration {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
in {
|
in
|
||||||
enable = true;
|
{
|
||||||
|
enable = true;
|
||||||
|
|
||||||
theme = {
|
theme = {
|
||||||
name = if cfg.darkMode then "Adwaita-dark" else "Adwaita-light";
|
name = if cfg.darkMode then "Adwaita-dark" else "Adwaita-light";
|
||||||
package = pkgs.gnome-themes-extra;
|
package = pkgs.gnome-themes-extra;
|
||||||
|
};
|
||||||
|
|
||||||
|
gtk3.extraCss = mkIf (!cfg.clientSideDecorations) disableCSD;
|
||||||
|
gtk4.extraCss = mkIf (!cfg.clientSideDecorations) disableCSD;
|
||||||
};
|
};
|
||||||
|
|
||||||
gtk3.extraCss = mkIf (! cfg.clientSideDecorations) disableCSD;
|
|
||||||
gtk4.extraCss = mkIf (! cfg.clientSideDecorations) disableCSD;
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: This should just straight up not be here
|
# TODO: This should just straight up not be here
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -289,10 +312,22 @@ in {
|
||||||
polarity = if cfg.darkMode then "dark" else "light";
|
polarity = if cfg.darkMode then "dark" else "light";
|
||||||
|
|
||||||
fonts = {
|
fonts = {
|
||||||
serif = getAttrs [ "name" "package" ] cfg.fonts.serif;
|
serif = getAttrs [
|
||||||
sansSerif = getAttrs [ "name" "package" ] cfg.fonts.sansSerif;
|
"name"
|
||||||
monospace = getAttrs [ "name" "package" ] cfg.fonts.monospace;
|
"package"
|
||||||
emoji = getAttrs [ "name" "package" ] cfg.fonts.emoji;
|
] cfg.fonts.serif;
|
||||||
|
sansSerif = getAttrs [
|
||||||
|
"name"
|
||||||
|
"package"
|
||||||
|
] cfg.fonts.sansSerif;
|
||||||
|
monospace = getAttrs [
|
||||||
|
"name"
|
||||||
|
"package"
|
||||||
|
] cfg.fonts.monospace;
|
||||||
|
emoji = getAttrs [
|
||||||
|
"name"
|
||||||
|
"package"
|
||||||
|
] cfg.fonts.emoji;
|
||||||
|
|
||||||
sizes = {
|
sizes = {
|
||||||
applications = mkDefault cfg.fonts.serif.recommendedSize;
|
applications = mkDefault cfg.fonts.serif.recommendedSize;
|
||||||
|
|
|
@ -4,6 +4,5 @@
|
||||||
name = "Cozette Vector";
|
name = "Cozette Vector";
|
||||||
package = pkgs.cozette;
|
package = pkgs.cozette;
|
||||||
recommendedSize = 9;
|
recommendedSize = 9;
|
||||||
fallbackFonts = [
|
fallbackFonts = [ ];
|
||||||
];
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -4,7 +4,5 @@
|
||||||
name = "Cozette";
|
name = "Cozette";
|
||||||
package = pkgs.cozette;
|
package = pkgs.cozette;
|
||||||
recommendedSize = 9;
|
recommendedSize = 9;
|
||||||
fallbackFonts = [
|
fallbackFonts = [ "Cozette Vector" ];
|
||||||
"Cozette Vector"
|
}
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "DejaVu Sans";
|
name = "DejaVu Sans";
|
||||||
package = pkgs.dejavu_fonts;
|
package = pkgs.dejavu_fonts;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "DejaVu Serif";
|
name = "DejaVu Serif";
|
||||||
package = pkgs.dejavu_fonts;
|
package = pkgs.dejavu_fonts;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,4 +9,4 @@
|
||||||
"wenquanyi bitmap song"
|
"wenquanyi bitmap song"
|
||||||
"Symbols Nerd Font Mono"
|
"Symbols Nerd Font Mono"
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,5 @@
|
||||||
name = "Fira Code";
|
name = "Fira Code";
|
||||||
package = pkgs.fira-code;
|
package = pkgs.fira-code;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [
|
fallbackFonts = [ "Symbols Nerd Font Mono" ];
|
||||||
"Symbols Nerd Font Mono"
|
}
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "Symbols Nerd Font Mono";
|
name = "Symbols Nerd Font Mono";
|
||||||
package = pkgs.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; };
|
package = pkgs.nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; };
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "Noto Color Emoji";
|
name = "Noto Color Emoji";
|
||||||
package = pkgs.noto-fonts-color-emoji;
|
package = pkgs.noto-fonts-color-emoji;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "wenquanyi bitmap song";
|
name = "wenquanyi bitmap song";
|
||||||
package = pkgs.wqy-bitmapsong;
|
package = pkgs.wqy-bitmapsong;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "WenQuanYi Micro Hei Mono";
|
name = "WenQuanYi Micro Hei Mono";
|
||||||
package = pkgs.wqy-microhei;
|
package = pkgs.wqy-microhei;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "WenQuanYi Micro Hei";
|
name = "WenQuanYi Micro Hei";
|
||||||
package = pkgs.wqy-microhei;
|
package = pkgs.wqy-microhei;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "WenQuanYi Zen Hei Mono";
|
name = "WenQuanYi Zen Hei Mono";
|
||||||
package = pkgs.wqy-zenhei;
|
package = pkgs.wqy-zenhei;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "WenQuanYi Zen Hei Sharp";
|
name = "WenQuanYi Zen Hei Sharp";
|
||||||
package = pkgs.wqy-zenhei;
|
package = pkgs.wqy-zenhei;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
name = "WenQuanYi Zen Hei";
|
name = "WenQuanYi Zen Hei";
|
||||||
package = pkgs.wqy-zenhei;
|
package = pkgs.wqy-zenhei;
|
||||||
recommendedSize = 12;
|
recommendedSize = 12;
|
||||||
fallbackFonts = [];
|
fallbackFonts = [ ];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,25 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.theming.themes.catppuccin;
|
cfg = config.theming.themes.catppuccin;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options = {
|
options = {
|
||||||
theming.themes.catppuccin = {
|
theming.themes.catppuccin = {
|
||||||
enable = mkEnableOption "catppuccin";
|
enable = mkEnableOption "catppuccin";
|
||||||
flavor = mkOption {
|
flavor = mkOption {
|
||||||
type = types.enum [ "latte" "frappe" "macchiato" "mocha" ];
|
type = types.enum [
|
||||||
|
"latte"
|
||||||
|
"frappe"
|
||||||
|
"macchiato"
|
||||||
|
"mocha"
|
||||||
|
];
|
||||||
default = "mocha";
|
default = "mocha";
|
||||||
description = "The flavor of catppuccin theme.";
|
description = "The flavor of catppuccin theme.";
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,16 +1,26 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.theming.themes.gruvbox;
|
cfg = config.theming.themes.gruvbox;
|
||||||
mode = if cfg.darkMode then "dark" else "light";
|
mode = if cfg.darkMode then "dark" else "light";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options = {
|
options = {
|
||||||
theming.themes.gruvbox = {
|
theming.themes.gruvbox = {
|
||||||
enable = mkEnableOption "gruvbox-hard";
|
enable = mkEnableOption "gruvbox-hard";
|
||||||
darkMode = mkEnableOption "dark mode";
|
darkMode = mkEnableOption "dark mode";
|
||||||
contrast = mkOption {
|
contrast = mkOption {
|
||||||
type = types.enum [ "hard" "medium" "soft" ];
|
type = types.enum [
|
||||||
|
"hard"
|
||||||
|
"medium"
|
||||||
|
"soft"
|
||||||
|
];
|
||||||
default = "hard";
|
default = "hard";
|
||||||
description = "The contrast level of the theme.";
|
description = "The contrast level of the theme.";
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,10 +1,16 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.vscode;
|
cfg = config.modules.vscode;
|
||||||
theme = config.theming;
|
theme = config.theming;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.vscode = {
|
options.modules.vscode = {
|
||||||
enable = mkEnableOption "vscode";
|
enable = mkEnableOption "vscode";
|
||||||
codeFont = mkOption {
|
codeFont = mkOption {
|
||||||
|
@ -19,28 +25,24 @@ in {
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.unfree.allowedPackages = [ "vscode" ];
|
modules.unfree.allowedPackages = [ "vscode" ];
|
||||||
|
|
||||||
theming.fonts.extraFonts = [
|
theming.fonts.extraFonts = [ cfg.codeFont ];
|
||||||
cfg.codeFont
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.vscode = {
|
programs.vscode = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
mutableExtensionsDir = false;
|
mutableExtensionsDir = false;
|
||||||
extensions = with pkgs.vscode-extensions; [
|
extensions = with pkgs.vscode-extensions; [ eamodio.gitlens ];
|
||||||
eamodio.gitlens
|
|
||||||
];
|
|
||||||
|
|
||||||
userSettings = {
|
userSettings = {
|
||||||
# Font setup
|
# Font setup
|
||||||
# TODO: Move the conversion factor to theme settings
|
# TODO: Move the conversion factor to theme settings
|
||||||
"editor.fontFamily" = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'";
|
"editor.fontFamily" = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'";
|
||||||
"editor.fontSize" = mkForce (cfg.codeFont.recommendedSize); # Convert pt to px
|
"editor.fontSize" = mkForce (cfg.codeFont.recommendedSize); # Convert pt to px
|
||||||
"editor.fontLigatures" = true;
|
"editor.fontLigatures" = true;
|
||||||
"terminal.integrated.fontFamily" = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'";
|
"terminal.integrated.fontFamily" = mkForce "'${cfg.codeFont.name}', '${cfg.fallbackFont.name}'";
|
||||||
"terminal.integrated.fontSize" = mkForce (cfg.codeFont.recommendedSize); # Convert pt to px
|
"terminal.integrated.fontSize" = mkForce (cfg.codeFont.recommendedSize); # Convert pt to px
|
||||||
|
|
||||||
# Formatting
|
# Formatting
|
||||||
"editor.formatOnSave" = true;
|
"editor.formatOnSave" = true;
|
||||||
"editor.tabSize" = 4;
|
"editor.tabSize" = 4;
|
||||||
|
@ -50,4 +52,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.winbox;
|
cfg = config.modules.winbox;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.winbox = {
|
options.modules.winbox = {
|
||||||
enable = mkEnableOption "winbox";
|
enable = mkEnableOption "winbox";
|
||||||
};
|
};
|
||||||
|
@ -11,8 +17,6 @@ in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
modules.unfree.allowedPackages = [ "winbox" ];
|
modules.unfree.allowedPackages = [ "winbox" ];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [ winbox ];
|
||||||
winbox
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
{config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.modules.zathura;
|
cfg = config.modules.zathura;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.zathura.enable = lib.mkEnableOption "zathura";
|
options.modules.zathura.enable = lib.mkEnableOption "zathura";
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
@ -14,4 +20,4 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.tailscale;
|
cfg = config.modules.tailscale;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.tailscale = {
|
options.modules.tailscale = {
|
||||||
enable = mkEnableOption "tailscale";
|
enable = mkEnableOption "tailscale";
|
||||||
};
|
};
|
||||||
|
@ -14,4 +20,4 @@ in {
|
||||||
useRoutingFeatures = "client";
|
useRoutingFeatures = "client";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,9 +1,15 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.modules.wpa_supplicant;
|
cfg = config.modules.wpa_supplicant;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
options.modules.wpa_supplicant = {
|
options.modules.wpa_supplicant = {
|
||||||
enable = mkEnableOption "wpa_supplicant";
|
enable = mkEnableOption "wpa_supplicant";
|
||||||
};
|
};
|
||||||
|
@ -15,4 +21,4 @@ in {
|
||||||
allowAuxiliaryImperativeNetworks = true;
|
allowAuxiliaryImperativeNetworks = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
# let
|
# let
|
||||||
|
@ -17,8 +22,8 @@ with lib;
|
||||||
# }
|
# }
|
||||||
{
|
{
|
||||||
nixpkgs.config.packageOverrides = pkgs: rec {
|
nixpkgs.config.packageOverrides = pkgs: rec {
|
||||||
wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix {};
|
wqy-zenhei = pkgs.callPackage ./fonts/wqy-zenhei.nix { };
|
||||||
wqy-microhei = pkgs.callPackage ./fonts/wqy-microhei.nix {};
|
wqy-microhei = pkgs.callPackage ./fonts/wqy-microhei.nix { };
|
||||||
wqy-bitmapsong = pkgs.callPackage ./fonts/wqy-bitmapsong.nix {};
|
wqy-bitmapsong = pkgs.callPackage ./fonts/wqy-bitmapsong.nix { };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation rec {
|
pkgs.stdenv.mkDerivation rec {
|
||||||
pname = "wqy-bitmapsong-pcf";
|
pname = "wqy-bitmapsong-pcf";
|
||||||
|
@ -30,4 +35,4 @@ pkgs.stdenv.mkDerivation rec {
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
install -Dm644 *.otb -t $out/share/fonts/
|
install -Dm644 *.otb -t $out/share/fonts/
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation rec {
|
pkgs.stdenv.mkDerivation rec {
|
||||||
pname = "wqy-microhei";
|
pname = "wqy-microhei";
|
||||||
|
@ -6,7 +11,7 @@ pkgs.stdenv.mkDerivation rec {
|
||||||
|
|
||||||
src = pkgs.fetchurl {
|
src = pkgs.fetchurl {
|
||||||
url = "mirror://sourceforge/wqy/${pname}-${version}.tar.gz";
|
url = "mirror://sourceforge/wqy/${pname}-${version}.tar.gz";
|
||||||
hash = "sha256-KAKsgCOqNqZupudEWFTjoHjTd///QhaTQb0jeHH3IT4=";
|
hash = "sha256-KAKsgCOqNqZupudEWFTjoHjTd///QhaTQb0jeHH3IT4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
@ -16,4 +21,4 @@ pkgs.stdenv.mkDerivation rec {
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation rec {
|
pkgs.stdenv.mkDerivation rec {
|
||||||
pname = "wqy-zenhei";
|
pname = "wqy-zenhei";
|
||||||
|
@ -16,4 +21,4 @@ pkgs.stdenv.mkDerivation rec {
|
||||||
|
|
||||||
runHook postInstall
|
runHook postInstall
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,19 +39,23 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# Theme configuration
|
# Theme configuration
|
||||||
theming = let fontpkgs = config.theming.fonts.pkgs; in {
|
theming =
|
||||||
# Fonts
|
let
|
||||||
fonts.serif = fontpkgs."DejaVu Serif";
|
fontpkgs = config.theming.fonts.pkgs;
|
||||||
fonts.sansSerif = fontpkgs."DejaVu Sans";
|
in
|
||||||
fonts.monospace = fontpkgs."Dina";
|
{
|
||||||
fonts.emoji = fontpkgs."Dina";
|
# Fonts
|
||||||
fonts.extraFonts = [];
|
fonts.serif = fontpkgs."DejaVu Serif";
|
||||||
|
fonts.sansSerif = fontpkgs."DejaVu Sans";
|
||||||
# Color scheme
|
fonts.monospace = fontpkgs."Dina";
|
||||||
themes.catppuccin = {
|
fonts.emoji = fontpkgs."Dina";
|
||||||
enable = true;
|
fonts.extraFonts = [ ];
|
||||||
flavor = "frappe";
|
|
||||||
|
# Color scheme
|
||||||
|
themes.catppuccin = {
|
||||||
|
enable = true;
|
||||||
|
flavor = "frappe";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue