chore: nix fmt
This commit is contained in:
parent
a80bd4ed3b
commit
7266fff06e
128 changed files with 3402 additions and 2013 deletions
|
@ -1,16 +1,31 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.users;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.users.home.persistApp = {
|
||||
files = mkOption {
|
||||
type = with types; listOf (oneOf [ str (attrsOf str) ]);
|
||||
type =
|
||||
with types;
|
||||
listOf (oneOf [
|
||||
str
|
||||
(attrsOf str)
|
||||
]);
|
||||
default = [ ];
|
||||
};
|
||||
directories = mkOption {
|
||||
type = with types; listOf (oneOf [ str (attrsOf str) ]);
|
||||
type =
|
||||
with types;
|
||||
listOf (oneOf [
|
||||
str
|
||||
(attrsOf str)
|
||||
]);
|
||||
default = [ ];
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ...}: with lib; {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
{
|
||||
# git signing configuration
|
||||
programs.git = {
|
||||
signing = {
|
||||
|
@ -15,10 +19,11 @@
|
|||
gpg = {
|
||||
format = "ssh";
|
||||
# compiled from trusted keys in auth module
|
||||
ssh.allowedSignersFile = toString (pkgs.writeText
|
||||
"allowed_signers" (foldr (key: folded:
|
||||
folded + "koishi@514fpv.one ${key}\n") ""
|
||||
config.passthrough.publicKeys));
|
||||
ssh.allowedSignersFile = toString (
|
||||
pkgs.writeText "allowed_signers" (
|
||||
foldr (key: folded: folded + "koishi@514fpv.one ${key}\n") "" config.passthrough.publicKeys
|
||||
)
|
||||
);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -32,6 +37,9 @@
|
|||
};
|
||||
|
||||
wayland.windowManager.sway.config.window.commands = mkIf config.passthrough.gui [
|
||||
{ criteria.title = "Bitwarden"; command = "floating enable"; }
|
||||
{
|
||||
criteria.title = "Bitwarden";
|
||||
command = "floating enable";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
{ config
|
||||
, ... }: {
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
# this module passes openssh public keys to home-manager
|
||||
users.homeModules = [ {
|
||||
passthrough.publicKeys = config.global.auth.openssh.publicKeys;
|
||||
} ];
|
||||
users.homeModules = [
|
||||
{
|
||||
passthrough.publicKeys = config.global.auth.openssh.publicKeys;
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.btop;
|
||||
in mkIf cfg.enable {
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.btop;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.btop = {
|
||||
enable = mkEnableOption "btop" // { default = !config.home.util.minimal; };
|
||||
enable = mkEnableOption "btop" // {
|
||||
default = !config.home.util.minimal;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
|
|
|
@ -1,10 +1,17 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.catppuccin;
|
||||
palette = (lib.importJSON "${config.catppuccin.sources.palette}/palette.json").${config.catppuccin.flavor}.colors;
|
||||
in mkIf cfg.enable {
|
||||
palette =
|
||||
(lib.importJSON "${config.catppuccin.sources.palette}/palette.json")
|
||||
.${config.catppuccin.flavor}.colors;
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
gtk.theme = { inherit (cfg.gtk) package name; };
|
||||
qt.style.name = "kvantum";
|
||||
qt.platformTheme.name = "kvantum";
|
||||
|
@ -13,38 +20,90 @@ in mkIf cfg.enable {
|
|||
# sway colour palette override
|
||||
wayland.windowManager.sway.config = {
|
||||
colors = {
|
||||
focused = { border = "$lavender"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$lavender"; };
|
||||
focusedInactive = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; };
|
||||
unfocused = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$rosewater"; childBorder = "$overlay0"; };
|
||||
urgent = { border = "$peach"; background = "$base"; text = "$peach"; indicator = "$overlay0"; childBorder = "$peach"; };
|
||||
placeholder = { border = "$overlay0"; background = "$base"; text = "$text"; indicator = "$overlay0"; childBorder = "$overlay0"; };
|
||||
background = "$base";
|
||||
focused = {
|
||||
border = "$lavender";
|
||||
background = "$base";
|
||||
text = "$text";
|
||||
indicator = "$rosewater";
|
||||
childBorder = "$lavender";
|
||||
};
|
||||
focusedInactive = {
|
||||
border = "$overlay0";
|
||||
background = "$base";
|
||||
text = "$text";
|
||||
indicator = "$rosewater";
|
||||
childBorder = "$overlay0";
|
||||
};
|
||||
unfocused = {
|
||||
border = "$overlay0";
|
||||
background = "$base";
|
||||
text = "$text";
|
||||
indicator = "$rosewater";
|
||||
childBorder = "$overlay0";
|
||||
};
|
||||
urgent = {
|
||||
border = "$peach";
|
||||
background = "$base";
|
||||
text = "$peach";
|
||||
indicator = "$overlay0";
|
||||
childBorder = "$peach";
|
||||
};
|
||||
placeholder = {
|
||||
border = "$overlay0";
|
||||
background = "$base";
|
||||
text = "$text";
|
||||
indicator = "$overlay0";
|
||||
childBorder = "$overlay0";
|
||||
};
|
||||
background = "$base";
|
||||
};
|
||||
|
||||
bars = mkForce [ {
|
||||
colors = {
|
||||
background = "$base";
|
||||
statusline = "$text";
|
||||
focusedStatusline = "$text";
|
||||
focusedSeparator = "$base";
|
||||
focusedWorkspace = { border = "$base"; background = "$base"; text = "$green"; };
|
||||
activeWorkspace = { border = "$base"; background = "$base"; text = "$blue"; };
|
||||
inactiveWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; };
|
||||
urgentWorkspace = { border = "$base"; background = "$base"; text = "$surface1"; };
|
||||
bindingMode = { border = "$base"; background = "$base"; text = "$surface1"; };
|
||||
};
|
||||
bars = mkForce [
|
||||
{
|
||||
colors = {
|
||||
background = "$base";
|
||||
statusline = "$text";
|
||||
focusedStatusline = "$text";
|
||||
focusedSeparator = "$base";
|
||||
focusedWorkspace = {
|
||||
border = "$base";
|
||||
background = "$base";
|
||||
text = "$green";
|
||||
};
|
||||
activeWorkspace = {
|
||||
border = "$base";
|
||||
background = "$base";
|
||||
text = "$blue";
|
||||
};
|
||||
inactiveWorkspace = {
|
||||
border = "$base";
|
||||
background = "$base";
|
||||
text = "$surface1";
|
||||
};
|
||||
urgentWorkspace = {
|
||||
border = "$base";
|
||||
background = "$base";
|
||||
text = "$surface1";
|
||||
};
|
||||
bindingMode = {
|
||||
border = "$base";
|
||||
background = "$base";
|
||||
text = "$surface1";
|
||||
};
|
||||
};
|
||||
|
||||
mode = "dock";
|
||||
position = "bottom";
|
||||
workspaceButtons = true;
|
||||
workspaceNumbers = true;
|
||||
statusCommand = "${pkgs.i3status}/bin/i3status";
|
||||
fonts = {
|
||||
names = [ "monospace" ];
|
||||
size = 8.0;
|
||||
};
|
||||
trayOutput = "primary";
|
||||
} ];
|
||||
mode = "dock";
|
||||
position = "bottom";
|
||||
workspaceButtons = true;
|
||||
workspaceNumbers = true;
|
||||
statusCommand = "${pkgs.i3status}/bin/i3status";
|
||||
fonts = {
|
||||
names = [ "monospace" ];
|
||||
size = 8.0;
|
||||
};
|
||||
trayOutput = "primary";
|
||||
}
|
||||
];
|
||||
|
||||
output."*".bg = mkForce "${./flake.png} fill";
|
||||
gaps.inner = 12;
|
||||
|
|
|
@ -1,32 +1,41 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
gui = with config.global.gpu; enable && session;
|
||||
cfg = config.home.catppuccin;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.catppuccin = {
|
||||
enable = mkEnableOption "catppuccin colour scheme" // { default = gui; };
|
||||
enable = mkEnableOption "catppuccin colour scheme" // {
|
||||
default = gui;
|
||||
};
|
||||
|
||||
gtk = {
|
||||
package = mkOption {
|
||||
type = with types; package;
|
||||
default = (pkgs.catppuccin-gtk.overrideAttrs {
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "catppuccin";
|
||||
repo = "gtk";
|
||||
rev = "v1.0.3";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-q5/VcFsm3vNEw55zq/vcM11eo456SYE5TQA3g2VQjGc=";
|
||||
};
|
||||
default =
|
||||
(pkgs.catppuccin-gtk.overrideAttrs {
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "catppuccin";
|
||||
repo = "gtk";
|
||||
rev = "v1.0.3";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-q5/VcFsm3vNEw55zq/vcM11eo456SYE5TQA3g2VQjGc=";
|
||||
};
|
||||
|
||||
postUnpack = "";
|
||||
}).override {
|
||||
accents = [ "pink" ];
|
||||
size = "compact";
|
||||
#tweaks = [ "rimless" "black" ];
|
||||
variant = "mocha";
|
||||
};
|
||||
postUnpack = "";
|
||||
}).override
|
||||
{
|
||||
accents = [ "pink" ];
|
||||
size = "compact";
|
||||
#tweaks = [ "rimless" "black" ];
|
||||
variant = "mocha";
|
||||
};
|
||||
description = "catppuccin gtk theme package";
|
||||
};
|
||||
name = mkOption {
|
||||
|
@ -59,9 +68,12 @@ in {
|
|||
catppuccin.enable = cfg.enable;
|
||||
|
||||
# gtk and cursor themes
|
||||
environment.systemPackages = with cfg; mkIf enable [
|
||||
gtk.package cursor.package
|
||||
];
|
||||
environment.systemPackages =
|
||||
with cfg;
|
||||
mkIf enable [
|
||||
gtk.package
|
||||
cursor.package
|
||||
];
|
||||
|
||||
# override greetd theme
|
||||
programs.regreet = mkIf cfg.enable {
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ...}: lib.mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.passthrough.gui {
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
package = pkgs.google-chrome;
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
gui = with config.global.gpu; enable && session;
|
||||
in {
|
||||
in
|
||||
{
|
||||
users.home.persist.directories = mkIf gui [ ".config/google-chrome" ];
|
||||
security.chromiumSuidSandbox.enable = mkIf gui true;
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
programs.foot = {
|
||||
enable = true;
|
||||
settings.main.term = "xterm-256color";
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.gnome;
|
||||
in {
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./impl/home.nix
|
||||
./impl/dconf.nix
|
||||
|
|
|
@ -1,286 +1,341 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.gnome;
|
||||
bg = ../../../share/54345906_p0.jpg;
|
||||
in mkIf cfg.enable {
|
||||
dconf.settings = let
|
||||
p = "org/gnome";
|
||||
pd = "${p}/desktop";
|
||||
ps = "${p}/shell";
|
||||
pse = "${ps}/extensions";
|
||||
ptl = "${p}/terminal/legacy";
|
||||
ptlp = "${ptl}/profiles:";
|
||||
in {
|
||||
"${pd}/peripherals/mouse".natural-scroll = true;
|
||||
"${pd}/peripherals/touchpad".tap-to-click = true;
|
||||
"${p}/epiphany".ask-for-default = false;
|
||||
"${p}/evolution-data-server".migrated = true;
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
dconf.settings =
|
||||
let
|
||||
p = "org/gnome";
|
||||
pd = "${p}/desktop";
|
||||
ps = "${p}/shell";
|
||||
pse = "${ps}/extensions";
|
||||
ptl = "${p}/terminal/legacy";
|
||||
ptlp = "${ptl}/profiles:";
|
||||
in
|
||||
{
|
||||
"${pd}/peripherals/mouse".natural-scroll = true;
|
||||
"${pd}/peripherals/touchpad".tap-to-click = true;
|
||||
"${p}/epiphany".ask-for-default = false;
|
||||
"${p}/evolution-data-server".migrated = true;
|
||||
|
||||
"${p}/nautilus/preferences" = {
|
||||
default-folder-viewer = "icon-view";
|
||||
migrated-gtk-settings = true;
|
||||
search-filter-time-type = "last_modified";
|
||||
"${p}/nautilus/preferences" = {
|
||||
default-folder-viewer = "icon-view";
|
||||
migrated-gtk-settings = true;
|
||||
search-filter-time-type = "last_modified";
|
||||
};
|
||||
|
||||
"${pd}/background" = {
|
||||
color-shading-type = "solid";
|
||||
picture-options = "zoom";
|
||||
picture-uri = "file://${bg}";
|
||||
picture-uri-dark = "file://${bg}";
|
||||
primary-color = "#000000000000";
|
||||
secondary-color = "#000000000000";
|
||||
};
|
||||
|
||||
"${pd}/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
cursor-theme = "Bibata-Modern-Classic";
|
||||
font-antialiasing = "grayscale";
|
||||
font-hinting = "slight";
|
||||
gtk-theme = "adw-gtk3-dark";
|
||||
icon-theme = "Papirus-Dark";
|
||||
};
|
||||
|
||||
"${pd}/screensaver" = {
|
||||
color-shading-type = "solid";
|
||||
lock-enabled = false;
|
||||
picture-options = "zoom";
|
||||
picture-uri = "file://${bg}";
|
||||
primary-color = "#000000000000";
|
||||
secondary-color = "#000000000000";
|
||||
};
|
||||
|
||||
"${pd}/wm/preferences" = {
|
||||
action-double-click-titlebar = "toggle-maximize";
|
||||
action-middle-click-titlebar = "minimize";
|
||||
button-layout = "close:appmenu";
|
||||
resize-with-right-button = true;
|
||||
};
|
||||
|
||||
"${pd}/wm/keybindings" = {
|
||||
panel-run-dialog = [ ];
|
||||
begin-resize = [ "<Super>r" ];
|
||||
close = [ "<Shift><Super>q" ];
|
||||
minimize = [ "<Super>BackSpace" ];
|
||||
move-to-workspace-1 = [ "<Shift><Super>1" ];
|
||||
move-to-workspace-2 = [ "<Shift><Super>2" ];
|
||||
move-to-workspace-3 = [ "<Shift><Super>3" ];
|
||||
move-to-workspace-4 = [ "<Shift><Super>4" ];
|
||||
move-to-workspace-left = [ "<Shift><Super>h" ];
|
||||
move-to-workspace-right = [ "<Shift><Super>l" ];
|
||||
switch-to-workspace-1 = [ "<Super>1" ];
|
||||
switch-to-workspace-2 = [ "<Super>2" ];
|
||||
switch-to-workspace-3 = [ "<Super>3" ];
|
||||
switch-to-workspace-4 = [ "<Super>4" ];
|
||||
toggle-maximized = [ "<Super>f" ];
|
||||
};
|
||||
|
||||
"${ps}/keybindings" = {
|
||||
switch-to-application-1 = [ ];
|
||||
switch-to-application-2 = [ ];
|
||||
switch-to-application-3 = [ ];
|
||||
switch-to-application-4 = [ ];
|
||||
switch-to-application-5 = [ ];
|
||||
switch-to-application-6 = [ ];
|
||||
switch-to-application-7 = [ ];
|
||||
switch-to-application-8 = [ ];
|
||||
switch-to-application-9 = [ ];
|
||||
toggle-application-view = [ "<Super>d" ];
|
||||
};
|
||||
|
||||
"${p}/settings-daemon/plugins/media-keys" = {
|
||||
custom-keybindings = [
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
|
||||
];
|
||||
logout = [ ];
|
||||
screensaver = [ "<Control><Alt>l" ];
|
||||
};
|
||||
|
||||
"${p}/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
|
||||
binding = "<Super>Return";
|
||||
command = "kgx";
|
||||
name = "Launch console";
|
||||
};
|
||||
|
||||
"${p}/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
|
||||
binding = "<Super>q";
|
||||
command = "google-chrome-stable";
|
||||
name = "Launch Google Chrome";
|
||||
};
|
||||
|
||||
"${ptlp}" = {
|
||||
#default = "95894cfd-82f7-430d-af6e-84d168bc34f5";
|
||||
list = [
|
||||
"de8a9081-8352-4ce4-9519-5de655ad9361"
|
||||
"71a9971e-e829-43a9-9b2f-4565c855d664"
|
||||
"5083e06b-024e-46be-9cd2-892b814f1fc8"
|
||||
"95894cfd-82f7-430d-af6e-84d168bc34f5"
|
||||
];
|
||||
};
|
||||
|
||||
"${ptlp}/:5083e06b-024e-46be-9cd2-892b814f1fc8" = {
|
||||
background-color = "#24273a";
|
||||
cursor-background-color = "#f4dbd6";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#24273a";
|
||||
foreground-color = "#cad3f5";
|
||||
highlight-background-color = "#24273a";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#5b6078";
|
||||
palette = [
|
||||
"#494d64"
|
||||
"#ed8796"
|
||||
"#a6da95"
|
||||
"#eed49f"
|
||||
"#8aadf4"
|
||||
"#f5bde6"
|
||||
"#8bd5ca"
|
||||
"#b8c0e0"
|
||||
"#5b6078"
|
||||
"#ed8796"
|
||||
"#a6da95"
|
||||
"#eed49f"
|
||||
"#8aadf4"
|
||||
"#f5bde6"
|
||||
"#8bd5ca"
|
||||
"#a5adcb"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Macchiato";
|
||||
};
|
||||
|
||||
"${ptlp}/:71a9971e-e829-43a9-9b2f-4565c855d664" = {
|
||||
background-color = "#303446";
|
||||
cursor-background-color = "#f2d5cf";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#303446";
|
||||
default-size-columns = 150;
|
||||
default-size-rows = 35;
|
||||
foreground-color = "#c6d0f5";
|
||||
highlight-background-color = "#303446";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#626880";
|
||||
palette = [
|
||||
"#51576d"
|
||||
"#e78284"
|
||||
"#a6d189"
|
||||
"#e5c890"
|
||||
"#8caaee"
|
||||
"#f4b8e4"
|
||||
"#81c8be"
|
||||
"#b5bfe2"
|
||||
"#626880"
|
||||
"#e78284"
|
||||
"#a6d189"
|
||||
"#e5c890"
|
||||
"#8caaee"
|
||||
"#f4b8e4"
|
||||
"#81c8be"
|
||||
"#a5adce"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Frappe";
|
||||
};
|
||||
|
||||
"${ptlp}/:95894cfd-82f7-430d-af6e-84d168bc34f5" = {
|
||||
background-color = "#1e1e2e";
|
||||
cursor-background-color = "#f5e0dc";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#1e1e2e";
|
||||
foreground-color = "#cdd6f4";
|
||||
highlight-background-color = "#1e1e2e";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#585b70";
|
||||
palette = [
|
||||
"#45475a"
|
||||
"#f38ba8"
|
||||
"#a6e3a1"
|
||||
"#f9e2af"
|
||||
"#89b4fa"
|
||||
"#f5c2e7"
|
||||
"#94e2d5"
|
||||
"#bac2de"
|
||||
"#585b70"
|
||||
"#f38ba8"
|
||||
"#a6e3a1"
|
||||
"#f9e2af"
|
||||
"#89b4fa"
|
||||
"#f5c2e7"
|
||||
"#94e2d5"
|
||||
"#a6adc8"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Mocha";
|
||||
};
|
||||
|
||||
"${ptlp}/:de8a9081-8352-4ce4-9519-5de655ad9361" = {
|
||||
background-color = "#eff1f5";
|
||||
cursor-background-color = "#dc8a78";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#eff1f5";
|
||||
foreground-color = "#4c4f69";
|
||||
highlight-background-color = "#eff1f5";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#acb0be";
|
||||
palette = [
|
||||
"#5c5f77"
|
||||
"#d20f39"
|
||||
"#40a02b"
|
||||
"#df8e1d"
|
||||
"#1e66f5"
|
||||
"#ea76cb"
|
||||
"#179299"
|
||||
"#acb0be"
|
||||
"#6c6f85"
|
||||
"#d20f39"
|
||||
"#40a02b"
|
||||
"#df8e1d"
|
||||
"#1e66f5"
|
||||
"#ea76cb"
|
||||
"#179299"
|
||||
"#bcc0cc"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Latte";
|
||||
};
|
||||
|
||||
"${ps}" = {
|
||||
disabled-extensions = [
|
||||
"light-style@gnome-shell-extensions.gcampax.github.com"
|
||||
"places-menu@gnome-shell-extensions.gcampax.github.com"
|
||||
"windowsNavigator@gnome-shell-extensions.gcampax.github.com"
|
||||
"window-list@gnome-shell-extensions.gcampax.github.com"
|
||||
"workspace-indicator@gnome-shell-extensions.gcampax.github.com"
|
||||
"dash-to-dock@micxgx.gmail.com"
|
||||
];
|
||||
enabled-extensions = [
|
||||
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
||||
"apps-menu@gnome-shell-extensions.gcampax.github.com"
|
||||
"drive-menu@gnome-shell-extensions.gcampax.github.com"
|
||||
"appindicatorsupport@rgcjonas.gmail.com"
|
||||
"dash-to-panel@jderose9.github.com"
|
||||
"caffeine@patapon.info"
|
||||
"PrivacyMenu@stuarthayhurst"
|
||||
];
|
||||
last-selected-power-profile = "performance";
|
||||
welcome-dialog-last-shown-version = "45.3";
|
||||
};
|
||||
|
||||
#"${pse}/user-theme".name = "catppuccin-mocha-pink-compact";
|
||||
|
||||
"${pse}/caffeine" = {
|
||||
screen-blank = "never";
|
||||
};
|
||||
|
||||
"${pse}/dash-to-dock" = {
|
||||
background-opacity = 0.80000000000000004;
|
||||
dash-max-icon-size = 48;
|
||||
dock-position = "BOTTOM";
|
||||
height-fraction = 0.90000000000000002;
|
||||
multi-monitor = false;
|
||||
running-indicator-style = "DOTS";
|
||||
custom-theme-shrink = true;
|
||||
};
|
||||
|
||||
"${pse}/dash-to-panel" = {
|
||||
animate-appicon-hover = false;
|
||||
animate-appicon-hover-animation-type = "SIMPLE";
|
||||
appicon-margin = 0;
|
||||
appicon-padding = 4;
|
||||
appicon-style = "NORMAL";
|
||||
available-monitors = [ 0 ];
|
||||
dot-position = "BOTTOM";
|
||||
dot-style-focused = "METRO";
|
||||
dot-style-unfocused = "DOTS";
|
||||
group-apps = true;
|
||||
hide-overview-on-startup = true;
|
||||
hotkeys-overlay-combo = "TEMPORARILY";
|
||||
intellihide = true;
|
||||
intellihide-behaviour = "FOCUSED_WINDOWS";
|
||||
intellihide-hide-from-windows = true;
|
||||
isolate-workspaces = false;
|
||||
leftbox-padding = -1;
|
||||
overview-click-to-exit = true;
|
||||
panel-anchors = ''{"0":"MIDDLE"}'';
|
||||
panel-element-positions = ''{"0":[{"element":"showAppsButton","visible":true,"position":"stackedTL"},{"element":"activitiesButton","visible":true,"position":"stackedTL"},{"element":"leftBox","visible":false,"position":"stackedTL"},{"element":"taskbar","visible":true,"position":"centerMonitor"},{"element":"centerBox","visible":true,"position":"stackedBR"},{"element":"rightBox","visible":true,"position":"stackedBR"},{"element":"dateMenu","visible":true,"position":"stackedBR"},{"element":"systemMenu","visible":true,"position":"stackedBR"},{"element":"desktopButton","visible":false,"position":"stackedBR"}]}'';
|
||||
panel-lengths = ''{"0":100}'';
|
||||
panel-positions = ''{"0":"BOTTOM"}'';
|
||||
panel-sizes = ''{"0":42}'';
|
||||
primary-monitor = 0;
|
||||
secondarymenu-contains-showdetails = true;
|
||||
show-showdesktop-hover = true;
|
||||
status-icon-padding = -1;
|
||||
stockgs-force-hotcorner = false;
|
||||
stockgs-keep-dash = false;
|
||||
stockgs-keep-top-panel = false;
|
||||
stockgs-panelbtn-click-only = false;
|
||||
trans-bg-color = "#2a2a2a";
|
||||
trans-dynamic-anim-target = 1.0;
|
||||
trans-dynamic-behavior = "MAXIMIZED_WINDOWS";
|
||||
trans-gradient-bottom-color = "#000000";
|
||||
trans-gradient-bottom-opacity = 0.5;
|
||||
trans-gradient-top-opacity = 0.0;
|
||||
trans-panel-opacity = 0.0;
|
||||
trans-use-custom-bg = true;
|
||||
trans-use-custom-gradient = true;
|
||||
trans-use-custom-opacity = true;
|
||||
trans-use-dynamic-opacity = true;
|
||||
tray-padding = -1;
|
||||
window-preview-title-position = "TOP";
|
||||
};
|
||||
};
|
||||
|
||||
"${pd}/background" = {
|
||||
color-shading-type = "solid";
|
||||
picture-options = "zoom";
|
||||
picture-uri = "file://${bg}";
|
||||
picture-uri-dark = "file://${bg}";
|
||||
primary-color = "#000000000000";
|
||||
secondary-color = "#000000000000";
|
||||
};
|
||||
|
||||
"${pd}/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
cursor-theme = "Bibata-Modern-Classic";
|
||||
font-antialiasing = "grayscale";
|
||||
font-hinting = "slight";
|
||||
gtk-theme = "adw-gtk3-dark";
|
||||
icon-theme = "Papirus-Dark";
|
||||
};
|
||||
|
||||
"${pd}/screensaver" = {
|
||||
color-shading-type = "solid";
|
||||
lock-enabled = false;
|
||||
picture-options = "zoom";
|
||||
picture-uri = "file://${bg}";
|
||||
primary-color = "#000000000000";
|
||||
secondary-color = "#000000000000";
|
||||
};
|
||||
|
||||
"${pd}/wm/preferences" = {
|
||||
action-double-click-titlebar = "toggle-maximize";
|
||||
action-middle-click-titlebar = "minimize";
|
||||
button-layout = "close:appmenu";
|
||||
resize-with-right-button = true;
|
||||
};
|
||||
|
||||
"${pd}/wm/keybindings" = {
|
||||
panel-run-dialog = [ ];
|
||||
begin-resize = [ "<Super>r" ];
|
||||
close = [ "<Shift><Super>q" ];
|
||||
minimize = [ "<Super>BackSpace" ];
|
||||
move-to-workspace-1 = [ "<Shift><Super>1" ];
|
||||
move-to-workspace-2 = [ "<Shift><Super>2" ];
|
||||
move-to-workspace-3 = [ "<Shift><Super>3" ];
|
||||
move-to-workspace-4 = [ "<Shift><Super>4" ];
|
||||
move-to-workspace-left = [ "<Shift><Super>h" ];
|
||||
move-to-workspace-right = [ "<Shift><Super>l" ];
|
||||
switch-to-workspace-1 = [ "<Super>1" ];
|
||||
switch-to-workspace-2 = [ "<Super>2" ];
|
||||
switch-to-workspace-3 = [ "<Super>3" ];
|
||||
switch-to-workspace-4 = [ "<Super>4" ];
|
||||
toggle-maximized = [ "<Super>f" ];
|
||||
};
|
||||
|
||||
"${ps}/keybindings" = {
|
||||
switch-to-application-1 = [ ];
|
||||
switch-to-application-2 = [ ];
|
||||
switch-to-application-3 = [ ];
|
||||
switch-to-application-4 = [ ];
|
||||
switch-to-application-5 = [ ];
|
||||
switch-to-application-6 = [ ];
|
||||
switch-to-application-7 = [ ];
|
||||
switch-to-application-8 = [ ];
|
||||
switch-to-application-9 = [ ];
|
||||
toggle-application-view = [ "<Super>d" ];
|
||||
};
|
||||
|
||||
"${p}/settings-daemon/plugins/media-keys" = {
|
||||
custom-keybindings = [
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/"
|
||||
"/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/"
|
||||
];
|
||||
logout = [ ];
|
||||
screensaver = [ "<Control><Alt>l" ];
|
||||
};
|
||||
|
||||
"${p}/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
|
||||
binding = "<Super>Return";
|
||||
command = "kgx";
|
||||
name = "Launch console";
|
||||
};
|
||||
|
||||
"${p}/settings-daemon/plugins/media-keys/custom-keybindings/custom1" = {
|
||||
binding = "<Super>q";
|
||||
command = "google-chrome-stable";
|
||||
name = "Launch Google Chrome";
|
||||
};
|
||||
|
||||
"${ptlp}" = {
|
||||
#default = "95894cfd-82f7-430d-af6e-84d168bc34f5";
|
||||
list = [
|
||||
"de8a9081-8352-4ce4-9519-5de655ad9361"
|
||||
"71a9971e-e829-43a9-9b2f-4565c855d664"
|
||||
"5083e06b-024e-46be-9cd2-892b814f1fc8"
|
||||
"95894cfd-82f7-430d-af6e-84d168bc34f5"
|
||||
];
|
||||
};
|
||||
|
||||
"${ptlp}/:5083e06b-024e-46be-9cd2-892b814f1fc8" = {
|
||||
background-color = "#24273a";
|
||||
cursor-background-color = "#f4dbd6";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#24273a";
|
||||
foreground-color = "#cad3f5";
|
||||
highlight-background-color = "#24273a";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#5b6078";
|
||||
palette = [
|
||||
"#494d64" "#ed8796" "#a6da95" "#eed49f"
|
||||
"#8aadf4" "#f5bde6" "#8bd5ca" "#b8c0e0"
|
||||
"#5b6078" "#ed8796" "#a6da95" "#eed49f"
|
||||
"#8aadf4" "#f5bde6" "#8bd5ca" "#a5adcb"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Macchiato";
|
||||
};
|
||||
|
||||
"${ptlp}/:71a9971e-e829-43a9-9b2f-4565c855d664" = {
|
||||
background-color = "#303446";
|
||||
cursor-background-color = "#f2d5cf";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#303446";
|
||||
default-size-columns = 150;
|
||||
default-size-rows = 35;
|
||||
foreground-color = "#c6d0f5";
|
||||
highlight-background-color = "#303446";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#626880";
|
||||
palette = [
|
||||
"#51576d" "#e78284" "#a6d189" "#e5c890"
|
||||
"#8caaee" "#f4b8e4" "#81c8be" "#b5bfe2"
|
||||
"#626880" "#e78284" "#a6d189" "#e5c890"
|
||||
"#8caaee" "#f4b8e4" "#81c8be" "#a5adce"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Frappe";
|
||||
};
|
||||
|
||||
"${ptlp}/:95894cfd-82f7-430d-af6e-84d168bc34f5" = {
|
||||
background-color = "#1e1e2e";
|
||||
cursor-background-color = "#f5e0dc";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#1e1e2e";
|
||||
foreground-color = "#cdd6f4";
|
||||
highlight-background-color = "#1e1e2e";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#585b70";
|
||||
palette = [
|
||||
"#45475a" "#f38ba8" "#a6e3a1" "#f9e2af"
|
||||
"#89b4fa" "#f5c2e7" "#94e2d5" "#bac2de"
|
||||
"#585b70" "#f38ba8" "#a6e3a1" "#f9e2af"
|
||||
"#89b4fa" "#f5c2e7" "#94e2d5" "#a6adc8"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Mocha";
|
||||
};
|
||||
|
||||
"${ptlp}/:de8a9081-8352-4ce4-9519-5de655ad9361" = {
|
||||
background-color = "#eff1f5";
|
||||
cursor-background-color = "#dc8a78";
|
||||
cursor-colors-set = true;
|
||||
cursor-foreground-color = "#eff1f5";
|
||||
foreground-color = "#4c4f69";
|
||||
highlight-background-color = "#eff1f5";
|
||||
highlight-colors-set = true;
|
||||
highlight-foreground-color = "#acb0be";
|
||||
palette = [
|
||||
"#5c5f77" "#d20f39" "#40a02b" "#df8e1d"
|
||||
"#1e66f5" "#ea76cb" "#179299" "#acb0be"
|
||||
"#6c6f85" "#d20f39" "#40a02b" "#df8e1d"
|
||||
"#1e66f5" "#ea76cb" "#179299" "#bcc0cc"
|
||||
];
|
||||
use-theme-colors = false;
|
||||
visible-name = "Catppuccin Latte";
|
||||
};
|
||||
|
||||
"${ps}" = {
|
||||
disabled-extensions = [
|
||||
"light-style@gnome-shell-extensions.gcampax.github.com"
|
||||
"places-menu@gnome-shell-extensions.gcampax.github.com"
|
||||
"windowsNavigator@gnome-shell-extensions.gcampax.github.com"
|
||||
"window-list@gnome-shell-extensions.gcampax.github.com"
|
||||
"workspace-indicator@gnome-shell-extensions.gcampax.github.com"
|
||||
"dash-to-dock@micxgx.gmail.com"
|
||||
];
|
||||
enabled-extensions = [
|
||||
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
||||
"apps-menu@gnome-shell-extensions.gcampax.github.com"
|
||||
"drive-menu@gnome-shell-extensions.gcampax.github.com"
|
||||
"appindicatorsupport@rgcjonas.gmail.com"
|
||||
"dash-to-panel@jderose9.github.com"
|
||||
"caffeine@patapon.info"
|
||||
"PrivacyMenu@stuarthayhurst"
|
||||
];
|
||||
last-selected-power-profile = "performance";
|
||||
welcome-dialog-last-shown-version = "45.3";
|
||||
};
|
||||
|
||||
#"${pse}/user-theme".name = "catppuccin-mocha-pink-compact";
|
||||
|
||||
"${pse}/caffeine" = {
|
||||
screen-blank = "never";
|
||||
};
|
||||
|
||||
"${pse}/dash-to-dock" = {
|
||||
background-opacity = 0.80000000000000004;
|
||||
dash-max-icon-size = 48;
|
||||
dock-position = "BOTTOM";
|
||||
height-fraction = 0.90000000000000002;
|
||||
multi-monitor = false;
|
||||
running-indicator-style = "DOTS";
|
||||
custom-theme-shrink = true;
|
||||
};
|
||||
|
||||
"${pse}/dash-to-panel" = {
|
||||
animate-appicon-hover = false;
|
||||
animate-appicon-hover-animation-type = "SIMPLE";
|
||||
appicon-margin = 0;
|
||||
appicon-padding = 4;
|
||||
appicon-style= "NORMAL";
|
||||
available-monitors = [ 0 ];
|
||||
dot-position = "BOTTOM";
|
||||
dot-style-focused = "METRO";
|
||||
dot-style-unfocused = "DOTS";
|
||||
group-apps = true;
|
||||
hide-overview-on-startup = true;
|
||||
hotkeys-overlay-combo = "TEMPORARILY";
|
||||
intellihide = true;
|
||||
intellihide-behaviour = "FOCUSED_WINDOWS";
|
||||
intellihide-hide-from-windows = true;
|
||||
isolate-workspaces = false;
|
||||
leftbox-padding = -1;
|
||||
overview-click-to-exit = true;
|
||||
panel-anchors = ''{"0":"MIDDLE"}'';
|
||||
panel-element-positions = ''{"0":[{"element":"showAppsButton","visible":true,"position":"stackedTL"},{"element":"activitiesButton","visible":true,"position":"stackedTL"},{"element":"leftBox","visible":false,"position":"stackedTL"},{"element":"taskbar","visible":true,"position":"centerMonitor"},{"element":"centerBox","visible":true,"position":"stackedBR"},{"element":"rightBox","visible":true,"position":"stackedBR"},{"element":"dateMenu","visible":true,"position":"stackedBR"},{"element":"systemMenu","visible":true,"position":"stackedBR"},{"element":"desktopButton","visible":false,"position":"stackedBR"}]}'';
|
||||
panel-lengths = ''{"0":100}'';
|
||||
panel-positions = ''{"0":"BOTTOM"}'';
|
||||
panel-sizes = ''{"0":42}'';
|
||||
primary-monitor = 0;
|
||||
secondarymenu-contains-showdetails = true;
|
||||
show-showdesktop-hover = true;
|
||||
status-icon-padding = -1;
|
||||
stockgs-force-hotcorner = false;
|
||||
stockgs-keep-dash = false;
|
||||
stockgs-keep-top-panel = false;
|
||||
stockgs-panelbtn-click-only = false;
|
||||
trans-bg-color = "#2a2a2a";
|
||||
trans-dynamic-anim-target = 1.0;
|
||||
trans-dynamic-behavior = "MAXIMIZED_WINDOWS";
|
||||
trans-gradient-bottom-color = "#000000";
|
||||
trans-gradient-bottom-opacity = 0.5;
|
||||
trans-gradient-top-opacity = 0.0;
|
||||
trans-panel-opacity = 0.0;
|
||||
trans-use-custom-bg = true;
|
||||
trans-use-custom-gradient = true;
|
||||
trans-use-custom-opacity = true;
|
||||
trans-use-dynamic-opacity = true;
|
||||
tray-padding = -1;
|
||||
window-preview-title-position = "TOP";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,23 +1,29 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.gnome;
|
||||
in mkIf cfg.enable {
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
home.packages =
|
||||
with pkgs;
|
||||
with gnome;
|
||||
with gnomeExtensions; [
|
||||
# gtk3 theme
|
||||
adw-gtk3
|
||||
with pkgs;
|
||||
with gnome;
|
||||
with gnomeExtensions;
|
||||
[
|
||||
# gtk3 theme
|
||||
adw-gtk3
|
||||
|
||||
# gnomeExtensions
|
||||
caffeine
|
||||
dash-to-panel
|
||||
dash-to-dock
|
||||
appindicator
|
||||
privacy-settings-menu
|
||||
];
|
||||
# gnomeExtensions
|
||||
caffeine
|
||||
dash-to-panel
|
||||
dash-to-dock
|
||||
appindicator
|
||||
privacy-settings-menu
|
||||
];
|
||||
|
||||
catppuccin.enable = mkForce false;
|
||||
home.pointerCursor = mkForce null;
|
||||
|
@ -26,7 +32,9 @@ in mkIf cfg.enable {
|
|||
home.persistence."/nix/persist/home/${config.home.username}" = {
|
||||
removePrefixDirectory = true;
|
||||
files = [
|
||||
(if config.specialisation != {} then "gnome/.config/monitors.xml" else "extern/.config/monitors.xml")
|
||||
(
|
||||
if config.specialisation != { } then "gnome/.config/monitors.xml" else "extern/.config/monitors.xml"
|
||||
)
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.gnome;
|
||||
in mkIf cfg.enable {
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
global.flatpak.enable = mkDefault true;
|
||||
home.catppuccin.enable = mkDefault false;
|
||||
catppuccin.enable = false;
|
||||
|
@ -17,33 +22,43 @@ in mkIf cfg.enable {
|
|||
xdg.portal.configPackages = with pkgs; [ gnome-session ];
|
||||
services.pulseaudio.enable = false;
|
||||
|
||||
environment.gnome.excludePackages = (with pkgs; [
|
||||
snapshot
|
||||
gnome-tour
|
||||
] ++ optionals config.global.flatpak.enable [
|
||||
baobab
|
||||
simple-scan
|
||||
evince
|
||||
file-roller
|
||||
geary
|
||||
loupe
|
||||
seahorse
|
||||
totem
|
||||
epiphany
|
||||
gnome-calculator
|
||||
gnome-calendar
|
||||
gnome-connections
|
||||
gnome-font-viewer
|
||||
gnome-text-editor
|
||||
gnome-characters
|
||||
gnome-clocks
|
||||
gnome-contacts
|
||||
gnome-logs
|
||||
gnome-maps
|
||||
gnome-music
|
||||
gnome-weather
|
||||
]) ++ (with pkgs.gnome; [ ] ++ optionals config.global.flatpak.enable [
|
||||
]);
|
||||
environment.gnome.excludePackages =
|
||||
(
|
||||
with pkgs;
|
||||
[
|
||||
snapshot
|
||||
gnome-tour
|
||||
]
|
||||
++ optionals config.global.flatpak.enable [
|
||||
baobab
|
||||
simple-scan
|
||||
evince
|
||||
file-roller
|
||||
geary
|
||||
loupe
|
||||
seahorse
|
||||
totem
|
||||
epiphany
|
||||
gnome-calculator
|
||||
gnome-calendar
|
||||
gnome-connections
|
||||
gnome-font-viewer
|
||||
gnome-text-editor
|
||||
gnome-characters
|
||||
gnome-clocks
|
||||
gnome-contacts
|
||||
gnome-logs
|
||||
gnome-maps
|
||||
gnome-music
|
||||
gnome-weather
|
||||
]
|
||||
)
|
||||
++ (
|
||||
with pkgs.gnome;
|
||||
[ ]
|
||||
++ optionals config.global.flatpak.enable [
|
||||
]
|
||||
);
|
||||
|
||||
users.home.persist.directories = [ ".config/dconf" ];
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.gnome;
|
||||
in {
|
||||
in
|
||||
{
|
||||
imports = [ ./impl/nixos.nix ];
|
||||
|
||||
options.home.gnome = {
|
||||
|
@ -16,10 +21,12 @@ in {
|
|||
{ passthrough.gnome = cfg; }
|
||||
];
|
||||
|
||||
specialisation.nognome = with cfg; mkIf enable {
|
||||
configuration = {
|
||||
home.gnome.enable = mkForce false;
|
||||
specialisation.nognome =
|
||||
with cfg;
|
||||
mkIf enable {
|
||||
configuration = {
|
||||
home.gnome.enable = mkForce false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
catppuccin = config.passthrough.catppuccin.enable;
|
||||
in {
|
||||
in
|
||||
{
|
||||
config = mkIf config.passthrough.gui {
|
||||
# cursor theme
|
||||
home.pointerCursor = {
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
gui = with config.global.gpu; enable && session;
|
||||
catppuccin = config.home.catppuccin;
|
||||
in {
|
||||
in
|
||||
{
|
||||
config = {
|
||||
users.homeModules = [
|
||||
# this module passes gui configuration to home-manager
|
||||
|
@ -13,13 +18,18 @@ in {
|
|||
users.adminGroups = mkIf gui [ "video" ];
|
||||
|
||||
# themes and icons
|
||||
environment.systemPackages = with pkgs; mkIf gui ([
|
||||
papirus-icon-theme
|
||||
] ++ optionals (!catppuccin.enable) [
|
||||
whitesur-gtk-theme
|
||||
whitesur-icon-theme
|
||||
bibata-cursors
|
||||
]);
|
||||
environment.systemPackages =
|
||||
with pkgs;
|
||||
mkIf gui (
|
||||
[
|
||||
papirus-icon-theme
|
||||
]
|
||||
++ optionals (!catppuccin.enable) [
|
||||
whitesur-gtk-theme
|
||||
whitesur-icon-theme
|
||||
bibata-cursors
|
||||
]
|
||||
);
|
||||
|
||||
fonts.enableDefaultPackages = mkIf gui true;
|
||||
|
||||
|
|
|
@ -1,13 +1,21 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.gyroflow;
|
||||
in mkIf cfg.enable {
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
# temporarily gone until regression is fixed
|
||||
#home.packages = [ cfg.package ];
|
||||
|
||||
wayland.windowManager.sway.config.window.commands = [
|
||||
{ criteria.app_id = "xyz.gyroflow.gyroflow"; command = "floating enable"; }
|
||||
{
|
||||
criteria.app_id = "xyz.gyroflow.gyroflow";
|
||||
command = "floating enable";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,16 +1,23 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.gyroflow;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.gyroflow = {
|
||||
enable = mkEnableOption "gyroflow stabilisation software";
|
||||
package = mkOption {
|
||||
type = with types; package;
|
||||
default = pkgs.gyroflow.overrideAttrs (finalAttrs: previousAttrs: {
|
||||
buildInputs = previousAttrs.buildInputs ++ [ pkgs.qt6Packages.qtwayland ];
|
||||
});
|
||||
default = pkgs.gyroflow.overrideAttrs (
|
||||
finalAttrs: previousAttrs: {
|
||||
buildInputs = previousAttrs.buildInputs ++ [ pkgs.qt6Packages.qtwayland ];
|
||||
}
|
||||
);
|
||||
description = "gyroflow package";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.headless;
|
||||
in mkIf (cfg.enable != null) {
|
||||
in
|
||||
mkIf (cfg.enable != null) {
|
||||
wayland.windowManager.sway.config = {
|
||||
output = {
|
||||
${cfg.enable}.pos = "0 0";
|
||||
|
@ -13,12 +18,14 @@ in mkIf (cfg.enable != null) {
|
|||
startup = [ { command = "swaymsg create_output && swaymsg output HEADLESS-1 disable"; } ];
|
||||
};
|
||||
|
||||
home.packages = [ (pkgs.writeShellScriptBin "headless" ''
|
||||
swaymsg output HEADLESS-1 enable
|
||||
${pkgs.wayvnc}/bin/wayvnc \
|
||||
--output=HEADLESS-1 \
|
||||
${cfg.extraArgs} \
|
||||
${cfg.host} ${toString cfg.port}
|
||||
swaymsg output HEADLESS-1 disable
|
||||
'') ];
|
||||
home.packages = [
|
||||
(pkgs.writeShellScriptBin "headless" ''
|
||||
swaymsg output HEADLESS-1 enable
|
||||
${pkgs.wayvnc}/bin/wayvnc \
|
||||
--output=HEADLESS-1 \
|
||||
${cfg.extraArgs} \
|
||||
${cfg.host} ${toString cfg.port}
|
||||
swaymsg output HEADLESS-1 disable
|
||||
'')
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.headless;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.headless = {
|
||||
enable = mkOption {
|
||||
type = with types; nullOr str;
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
programs.i3status = {
|
||||
enable = true;
|
||||
enableDefault = false;
|
||||
|
@ -48,8 +52,9 @@
|
|||
position = 5;
|
||||
settings = {
|
||||
format = "%1min %5min %15min";
|
||||
max_threshold =
|
||||
removeSuffix "\n" (builtins.readFile (pkgs.runCommandLocal "nproc" { } "nproc > $out"));
|
||||
max_threshold = removeSuffix "\n" (
|
||||
builtins.readFile (pkgs.runCommandLocal "nproc" { } "nproc > $out")
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -70,7 +75,9 @@
|
|||
|
||||
"tztime local" = {
|
||||
position = 127;
|
||||
settings = { format = "%Y-%m-%d %H:%M:%S"; };
|
||||
settings = {
|
||||
format = "%Y-%m-%d %H:%M:%S";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
programs.imv.enable = true;
|
||||
}
|
||||
|
|
|
@ -1,11 +1,18 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.jetbrains;
|
||||
in mkIf cfg.enable {
|
||||
home.packages = with pkgs.jetbrains; [ pkgs.go ] ++
|
||||
optional cfg.idea idea-community ++
|
||||
optional cfg.clion clion ++
|
||||
optional cfg.goland goland;
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
home.packages =
|
||||
with pkgs.jetbrains;
|
||||
[ pkgs.go ]
|
||||
++ optional cfg.idea idea-community
|
||||
++ optional cfg.clion clion
|
||||
++ optional cfg.goland goland;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,21 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.jetbrains;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.jetbrains = {
|
||||
enable = mkEnableOption "jetbrains text editor";
|
||||
idea = mkEnableOption "intellij idea";
|
||||
clion = mkEnableOption "clion ide";
|
||||
goland = mkEnableOption "goland ide" // { default = true; };
|
||||
goland = mkEnableOption "goland ide" // {
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.libreoffice;
|
||||
enable = cfg.enable && (cfg.allUsers || (config.home.username == "app"));
|
||||
in mkIf enable {
|
||||
in
|
||||
mkIf enable {
|
||||
home.packages = with pkgs; [ libreoffice ];
|
||||
}
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.libreoffice;
|
||||
persist = [ ".config/libreoffice" ];
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.libreoffice = {
|
||||
enable = mkEnableOption "open source office suite";
|
||||
allUsers = mkEnableOption "set up for all users";
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
services.mako = {
|
||||
enable = true;
|
||||
defaultTimeout = 5000;
|
||||
|
|
|
@ -1,16 +1,27 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
inherit (config.passthrough) gui;
|
||||
cfg = config.passthrough.minecraft;
|
||||
enable = cfg.enable && config.home.username == cfg.user;
|
||||
in mkIf enable {
|
||||
home.packages = with pkgs; [
|
||||
jdk8
|
||||
] ++ optional gui prismlauncher;
|
||||
in
|
||||
mkIf enable {
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
jdk8
|
||||
]
|
||||
++ optional gui prismlauncher;
|
||||
|
||||
wayland.windowManager.sway.config.window.commands = mkIf gui [
|
||||
{ criteria.app_id = "org.prismlauncher.PrismLauncher"; command = "floating enable"; }
|
||||
{
|
||||
criteria.app_id = "org.prismlauncher.PrismLauncher";
|
||||
command = "floating enable";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.minecraft;
|
||||
gui = with config.global.gpu; enable && session;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.minecraft = {
|
||||
enable = mkEnableOption "minecraft game launcher and jvm";
|
||||
user = mkOption {
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
programs.mpv = {
|
||||
enable = true;
|
||||
config = {
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
{ pkgs
|
||||
, ... }: {
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.neovim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.plasma;
|
||||
image = ../../share/54345906_p0.jpg;
|
||||
in mkIf cfg.enable {
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
programs.plasma = {
|
||||
# https://github.com/pjones/plasma-manager
|
||||
enable = true;
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, plasma-manager
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
plasma-manager,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.plasma;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.plasma = {
|
||||
enable = mkEnableOption "plasma desktop and configuration";
|
||||
specialise = mkEnableOption "enable plasma in a specialisation";
|
||||
|
|
247
home/profile.nix
247
home/profile.nix
|
@ -1,41 +1,48 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, inputs
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.users;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.users = {
|
||||
profiles = mkOption {
|
||||
type = with types; attrsOf (submodule {
|
||||
options = {
|
||||
uid = mkOption {
|
||||
type = with types; nullOr int;
|
||||
default = null;
|
||||
description = "uid passthrough to base user configuration";
|
||||
type =
|
||||
with types;
|
||||
attrsOf (submodule {
|
||||
options = {
|
||||
uid = mkOption {
|
||||
type = with types; nullOr int;
|
||||
default = null;
|
||||
description = "uid passthrough to base user configuration";
|
||||
};
|
||||
description = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
description = "description passthrough to base user configuration";
|
||||
};
|
||||
admin = mkOption {
|
||||
type = with types; bool;
|
||||
default = false;
|
||||
description = "add user to privileged groups";
|
||||
};
|
||||
sshLogin = mkOption {
|
||||
type = with types; bool;
|
||||
default = false;
|
||||
description = "enable ssh authorized keys for user";
|
||||
};
|
||||
picture = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
description = "path to user profile picture";
|
||||
};
|
||||
};
|
||||
description = mkOption {
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
description = "description passthrough to base user configuration";
|
||||
};
|
||||
admin = mkOption {
|
||||
type = with types; bool;
|
||||
default = false;
|
||||
description = "add user to privileged groups";
|
||||
};
|
||||
sshLogin = mkOption {
|
||||
type = with types; bool;
|
||||
default = false;
|
||||
description = "enable ssh authorized keys for user";
|
||||
};
|
||||
picture = mkOption {
|
||||
type = with types; nullOr path;
|
||||
default = null;
|
||||
description = "path to user profile picture";
|
||||
};
|
||||
};
|
||||
});
|
||||
});
|
||||
description = "preconfigured users with profile options";
|
||||
};
|
||||
|
||||
|
@ -57,11 +64,21 @@ in {
|
|||
};
|
||||
persist = {
|
||||
files = mkOption {
|
||||
type = with types; listOf (oneOf [ str (attrsOf str) ]);
|
||||
type =
|
||||
with types;
|
||||
listOf (oneOf [
|
||||
str
|
||||
(attrsOf str)
|
||||
]);
|
||||
default = [ ];
|
||||
};
|
||||
directories = mkOption {
|
||||
type = with types; listOf (oneOf [ str (attrsOf str) ]);
|
||||
type =
|
||||
with types;
|
||||
listOf (oneOf [
|
||||
str
|
||||
(attrsOf str)
|
||||
]);
|
||||
default = [ ];
|
||||
};
|
||||
};
|
||||
|
@ -74,8 +91,9 @@ in {
|
|||
inherit (opts) uid;
|
||||
description = with opts; mkIf (description != null) description;
|
||||
extraGroups = [ "dialout" ] ++ optionals opts.admin cfg.adminGroups;
|
||||
openssh.authorizedKeys.keys = mkIf (opts.sshLogin && config.services.openssh.enable)
|
||||
config.global.auth.openssh.publicKeys;
|
||||
openssh.authorizedKeys.keys = mkIf (
|
||||
opts.sshLogin && config.services.openssh.enable
|
||||
) config.global.auth.openssh.publicKeys;
|
||||
hashedPasswordFile = "/nix/persist/shadow/${name}";
|
||||
shell = pkgs.zsh;
|
||||
isNormalUser = mkIf (name != "root") true;
|
||||
|
@ -85,98 +103,125 @@ in {
|
|||
|
||||
# base groups
|
||||
adminGroups = [
|
||||
"wheel" "kvm"
|
||||
"wheel"
|
||||
"kvm"
|
||||
"systemd-journal"
|
||||
"networkmanager"
|
||||
];
|
||||
|
||||
# base home modules in current directory
|
||||
homeModules = pipe ./. [
|
||||
builtins.readDir
|
||||
(filterAttrs (n: ty: ty == "directory" && builtins.pathExists ./${n}/home.nix))
|
||||
(mapAttrsToList (n: _: ./${n}/home.nix))
|
||||
] ++ [ {
|
||||
options.passthrough = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
description = "passthrough values from nixos configuration";
|
||||
};
|
||||
} ];
|
||||
homeModules =
|
||||
pipe ./. [
|
||||
builtins.readDir
|
||||
(filterAttrs (n: ty: ty == "directory" && builtins.pathExists ./${n}/home.nix))
|
||||
(mapAttrsToList (n: _: ./${n}/home.nix))
|
||||
]
|
||||
++ [
|
||||
{
|
||||
options.passthrough = mkOption {
|
||||
type = with types; attrsOf anything;
|
||||
description = "passthrough values from nixos configuration";
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
# basic persistence
|
||||
home.persist = {
|
||||
directories = [
|
||||
"src"
|
||||
{ directory = ".gnupg"; mode = "0700"; }
|
||||
{ directory = ".ssh"; mode = "0700"; }
|
||||
{ directory = ".local/share/keyrings"; mode = "0700"; }
|
||||
{
|
||||
directory = ".gnupg";
|
||||
mode = "0700";
|
||||
}
|
||||
{
|
||||
directory = ".ssh";
|
||||
mode = "0700";
|
||||
}
|
||||
{
|
||||
directory = ".local/share/keyrings";
|
||||
mode = "0700";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# mount tmpfs on each user's home directory with appropriate ownership
|
||||
fileSystems = mapAttrs'
|
||||
(name: opts: nameValuePair
|
||||
# nixpkgs quirk: accessing user configuration here causes infinite recursion
|
||||
# this workaround ensures proper home directory path unless overridden elsewhere
|
||||
(if name != "root" then "/home/${name}" else "/root") {
|
||||
device = "homefs";
|
||||
fsType = "tmpfs";
|
||||
options = [ "size=${cfg.home.size}"
|
||||
"uid=${builtins.toString opts.uid}"
|
||||
"gid=${builtins.toString cfg.groups.${cfg.users.${name}.group}.gid}"
|
||||
"mode=700" ];
|
||||
fileSystems = mapAttrs' (
|
||||
name: opts:
|
||||
nameValuePair
|
||||
# nixpkgs quirk: accessing user configuration here causes infinite recursion
|
||||
# this workaround ensures proper home directory path unless overridden elsewhere
|
||||
(if name != "root" then "/home/${name}" else "/root")
|
||||
{
|
||||
device = "homefs";
|
||||
fsType = "tmpfs";
|
||||
options = [
|
||||
"size=${cfg.home.size}"
|
||||
"uid=${builtins.toString opts.uid}"
|
||||
"gid=${builtins.toString cfg.groups.${cfg.users.${name}.group}.gid}"
|
||||
"mode=700"
|
||||
];
|
||||
|
||||
# impermanence sets permissions before filesystems are mounted
|
||||
# this mounts filesystem in initrd therefore working around that bug
|
||||
neededForBoot = true;
|
||||
}) cfg.profiles;
|
||||
# impermanence sets permissions before filesystems are mounted
|
||||
# this mounts filesystem in initrd therefore working around that bug
|
||||
neededForBoot = true;
|
||||
}
|
||||
) cfg.profiles;
|
||||
|
||||
global.fs.zfs.mountpoints = mapAttrs'
|
||||
(name: opts: nameValuePair
|
||||
"/nix/persist/home/${name}"
|
||||
"home/${name}")
|
||||
(filterAttrs (n: _: n != "root") config.users.profiles);
|
||||
global.fs.zfs.mountpoints = mapAttrs' (
|
||||
name: opts: nameValuePair "/nix/persist/home/${name}" "home/${name}"
|
||||
) (filterAttrs (n: _: n != "root") config.users.profiles);
|
||||
|
||||
home-manager.users = mapAttrs (name: opts: {
|
||||
imports = with inputs; cfg.homeModules ++ [
|
||||
impermanence.homeManagerModules.impermanence
|
||||
catppuccin.homeManagerModules.catppuccin
|
||||
];
|
||||
imports =
|
||||
with inputs;
|
||||
cfg.homeModules
|
||||
++ [
|
||||
impermanence.homeManagerModules.impermanence
|
||||
catppuccin.homeManagerModules.catppuccin
|
||||
];
|
||||
home.file.".face" = mkIf (opts.picture != null) {
|
||||
source = opts.picture;
|
||||
};
|
||||
home.stateVersion = "23.11";
|
||||
}) cfg.profiles;
|
||||
|
||||
system.activationScripts = mapAttrs'
|
||||
(name: opts: nameValuePair
|
||||
"${name}-profile-icon"
|
||||
{
|
||||
deps = [ "users" ];
|
||||
text = let
|
||||
iconDest = "/var/lib/AccountsService/icons/${name}";
|
||||
userConf = pkgs.writeText "${name}-config" ''
|
||||
[User]
|
||||
Session=
|
||||
Icon=${iconDest}
|
||||
SystemAccount=false
|
||||
'';
|
||||
in ''
|
||||
install -Dm 0444 ${opts.picture} ${iconDest}
|
||||
install -Dm 0400 ${userConf} /var/lib/AccountsService/users/${name}
|
||||
'';
|
||||
})
|
||||
(filterAttrs (n: _: n != "root") config.users.profiles);
|
||||
system.activationScripts = mapAttrs' (
|
||||
name: opts:
|
||||
nameValuePair "${name}-profile-icon" {
|
||||
deps = [ "users" ];
|
||||
text =
|
||||
let
|
||||
iconDest = "/var/lib/AccountsService/icons/${name}";
|
||||
userConf = pkgs.writeText "${name}-config" ''
|
||||
[User]
|
||||
Session=
|
||||
Icon=${iconDest}
|
||||
SystemAccount=false
|
||||
'';
|
||||
in
|
||||
''
|
||||
install -Dm 0444 ${opts.picture} ${iconDest}
|
||||
install -Dm 0400 ${userConf} /var/lib/AccountsService/users/${name}
|
||||
'';
|
||||
}
|
||||
) (filterAttrs (n: _: n != "root") config.users.profiles);
|
||||
|
||||
# set up standard persistence for users
|
||||
# this is registered internally for each software's configuration
|
||||
environment.persistence."/nix/persist" = {
|
||||
users = (mapAttrs (name: _: cfg.home.persist // {
|
||||
# root workaround, ugly but necessary
|
||||
# cannot get it properly for the same reason
|
||||
# mentioned above in fileSystems
|
||||
home = mkIf (name == "root") "/root";
|
||||
}) cfg.profiles);
|
||||
users = (
|
||||
mapAttrs (
|
||||
name: _:
|
||||
cfg.home.persist
|
||||
// {
|
||||
# root workaround, ugly but necessary
|
||||
# cannot get it properly for the same reason
|
||||
# mentioned above in fileSystems
|
||||
home = mkIf (name == "root") "/root";
|
||||
}
|
||||
) cfg.profiles
|
||||
);
|
||||
|
||||
hideMounts = true;
|
||||
};
|
||||
|
|
|
@ -1,14 +1,27 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.steam;
|
||||
in mkIf cfg.enable {
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
hardware.steam-hardware.enable = true;
|
||||
|
||||
networking.firewall = {
|
||||
allowedTCPPorts = [ 27015 27036 ];
|
||||
allowedTCPPorts = [
|
||||
27015
|
||||
27036
|
||||
];
|
||||
allowedUDPPorts = [ 27015 ];
|
||||
allowedUDPPortRanges = [ { from = 27031; to = 27036; } ];
|
||||
allowedUDPPortRanges = [
|
||||
{
|
||||
from = 27031;
|
||||
to = 27036;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,17 +1,25 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.steam;
|
||||
enable = cfg.enable && (cfg.allUsers || (config.home.username == "app"));
|
||||
package = config.programs.steam.package;
|
||||
in mkIf enable {
|
||||
in
|
||||
mkIf enable {
|
||||
home.packages = with pkgs; [
|
||||
cfg.package
|
||||
cfg.package.run
|
||||
];
|
||||
|
||||
wayland.windowManager.sway.config.window.commands = [
|
||||
{ criteria.class = "steam"; command = "floating enable"; }
|
||||
{
|
||||
criteria.class = "steam";
|
||||
command = "floating enable";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,10 +1,18 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.steam;
|
||||
persist = [ ".steam" ".local/share/Steam" ];
|
||||
in {
|
||||
persist = [
|
||||
".steam"
|
||||
".local/share/Steam"
|
||||
];
|
||||
in
|
||||
{
|
||||
imports = [ ./config.nix ];
|
||||
|
||||
options.home.steam = {
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
wayland.windowManager.sway = {
|
||||
enable = true;
|
||||
|
||||
|
@ -12,33 +16,38 @@
|
|||
config = {
|
||||
defaultWorkspace = "workspace number 1";
|
||||
modifier = "Mod4";
|
||||
keybindings = let
|
||||
modifier = config.wayland.windowManager.sway.config.modifier;
|
||||
in mkOptionDefault {
|
||||
XF86MonBrightnessUp = "light -A 5";
|
||||
XF86MonBrightnessDown = "light -U 5";
|
||||
keybindings =
|
||||
let
|
||||
modifier = config.wayland.windowManager.sway.config.modifier;
|
||||
in
|
||||
mkOptionDefault {
|
||||
XF86MonBrightnessUp = "light -A 5";
|
||||
XF86MonBrightnessDown = "light -U 5";
|
||||
|
||||
"Control+Alt+l" = "exec swaylock -f --grace 0";
|
||||
"Print" = "exec ${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy";
|
||||
"${modifier}+Print" = "exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy";
|
||||
"${modifier}+q" = "exec google-chrome-stable";
|
||||
"${modifier}+Home" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
};
|
||||
|
||||
bars = [ {
|
||||
mode = "dock";
|
||||
position = "bottom";
|
||||
workspaceButtons = true;
|
||||
workspaceNumbers = true;
|
||||
statusCommand = "${pkgs.i3status}/bin/i3status";
|
||||
fonts = {
|
||||
names = [ "monospace" ];
|
||||
size = 8.0;
|
||||
"Control+Alt+l" = "exec swaylock -f --grace 0";
|
||||
"Print" = "exec ${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy";
|
||||
"${modifier}+Print" =
|
||||
"exec ${pkgs.grim}/bin/grim -g \"$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy";
|
||||
"${modifier}+q" = "exec google-chrome-stable";
|
||||
"${modifier}+Home" = "exec ${pkgs.pavucontrol}/bin/pavucontrol";
|
||||
};
|
||||
trayOutput = "primary";
|
||||
# sets transparency
|
||||
colors.background = "00000000";
|
||||
} ];
|
||||
|
||||
bars = [
|
||||
{
|
||||
mode = "dock";
|
||||
position = "bottom";
|
||||
workspaceButtons = true;
|
||||
workspaceNumbers = true;
|
||||
statusCommand = "${pkgs.i3status}/bin/i3status";
|
||||
fonts = {
|
||||
names = [ "monospace" ];
|
||||
size = 8.0;
|
||||
};
|
||||
trayOutput = "primary";
|
||||
# sets transparency
|
||||
colors.background = "00000000";
|
||||
}
|
||||
];
|
||||
|
||||
input."*".natural_scroll = "enabled";
|
||||
input."type:touchpad".tap = "enabled";
|
||||
|
|
|
@ -1,36 +1,48 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
gui = with config.global.gpu; enable && session;
|
||||
nvidia = with config.global.gpu; type == "nvidia" || type == "prime";
|
||||
in mkIf gui {
|
||||
in
|
||||
mkIf gui {
|
||||
services.displayManager.sessionPackages = [
|
||||
(pkgs.writeTextFile {
|
||||
name = "sway-session";
|
||||
destination = "/share/wayland-sessions/sway.desktop";
|
||||
text = ''
|
||||
[Desktop Entry]
|
||||
Name=Sway
|
||||
Comment=An i3-compatible Wayland compositor
|
||||
Exec=${pkgs.writeTextFile {
|
||||
name = "sway-wrapper";
|
||||
executable = true;
|
||||
text = ''
|
||||
#!${pkgs.zsh}/bin/zsh
|
||||
SHLVL=0
|
||||
for profile in ''${(z)NIX_PROFILES}; do
|
||||
fpath+=($profile/share/zsh/site-functions $profile/share/zsh/$ZSH_VERSION/functions $profile/share/zsh/vendor-completions)
|
||||
done
|
||||
exec sway${if nvidia then " --unsupported-gpu" else ""} 2>&1 >> $XDG_CACHE_HOME/sway
|
||||
'';
|
||||
checkPhase = ''
|
||||
${pkgs.stdenv.shellDryRun} "$target"
|
||||
'';
|
||||
}}
|
||||
Type=Application
|
||||
'';
|
||||
} // { providedSessions = [ pkgs.sway.meta.mainProgram ]; })
|
||||
(
|
||||
pkgs.writeTextFile {
|
||||
name = "sway-session";
|
||||
destination = "/share/wayland-sessions/sway.desktop";
|
||||
text = ''
|
||||
[Desktop Entry]
|
||||
Name=Sway
|
||||
Comment=An i3-compatible Wayland compositor
|
||||
Exec=${
|
||||
pkgs.writeTextFile {
|
||||
name = "sway-wrapper";
|
||||
executable = true;
|
||||
text = ''
|
||||
#!${pkgs.zsh}/bin/zsh
|
||||
SHLVL=0
|
||||
for profile in ''${(z)NIX_PROFILES}; do
|
||||
fpath+=($profile/share/zsh/site-functions $profile/share/zsh/$ZSH_VERSION/functions $profile/share/zsh/vendor-completions)
|
||||
done
|
||||
exec sway${if nvidia then " --unsupported-gpu" else ""} 2>&1 >> $XDG_CACHE_HOME/sway
|
||||
'';
|
||||
checkPhase = ''
|
||||
${pkgs.stdenv.shellDryRun} "$target"
|
||||
'';
|
||||
}
|
||||
}
|
||||
Type=Application
|
||||
'';
|
||||
}
|
||||
// {
|
||||
providedSessions = [ pkgs.sway.meta.mainProgram ];
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
programs.light.enable = true;
|
||||
|
|
|
@ -1,24 +1,40 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
services.swayidle = let
|
||||
sway = config.wayland.windowManager.sway.package;
|
||||
swaymsg = "${sway}/bin/swaymsg";
|
||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
in {
|
||||
enable = true;
|
||||
systemdTarget = "sway-session.target";
|
||||
timeouts = [
|
||||
{ timeout = 600; command = "${swaymsg} 'output * dpms off'"; resumeCommand = "${swaymsg} 'output * dpms on'"; }
|
||||
];
|
||||
events = [
|
||||
{ event = "before-sleep"; command = "${swaylock} -f --grace 0"; }
|
||||
];
|
||||
};
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
services.swayidle =
|
||||
let
|
||||
sway = config.wayland.windowManager.sway.package;
|
||||
swaymsg = "${sway}/bin/swaymsg";
|
||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
systemdTarget = "sway-session.target";
|
||||
timeouts = [
|
||||
{
|
||||
timeout = 600;
|
||||
command = "${swaymsg} 'output * dpms off'";
|
||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
||||
}
|
||||
];
|
||||
events = [
|
||||
{
|
||||
event = "before-sleep";
|
||||
command = "${swaylock} -f --grace 0";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# fullscreen as simple idle inhibitor shortcut
|
||||
wayland.windowManager.sway.config.window.commands = [
|
||||
{ criteria.shell = ".*"; command = "inhibit_idle fullscreen"; }
|
||||
{
|
||||
criteria.shell = ".*";
|
||||
command = "inhibit_idle fullscreen";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
programs.swaylock = {
|
||||
enable = true;
|
||||
package = pkgs.swaylock-effects;
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
gui = with config.global.gpu; enable && session;
|
||||
in mkIf gui {
|
||||
in
|
||||
mkIf gui {
|
||||
security.pam.services.swaylock = { };
|
||||
}
|
||||
|
|
|
@ -1,33 +1,61 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.util;
|
||||
in {
|
||||
home.packages = with pkgs; [
|
||||
pv file wget e2fsprogs
|
||||
] ++ optionals (!cfg.minimal) [
|
||||
tio mbuffer sedutil
|
||||
lsscsi zip unzip
|
||||
nix-index dnsutils whois
|
||||
pciutils usbutils nvme-cli
|
||||
] ++ optionals config.passthrough.gui [
|
||||
gtk-engine-murrine
|
||||
gnome-themes-extra
|
||||
in
|
||||
{
|
||||
home.packages =
|
||||
with pkgs;
|
||||
[
|
||||
pv
|
||||
file
|
||||
wget
|
||||
e2fsprogs
|
||||
]
|
||||
++ optionals (!cfg.minimal) [
|
||||
tio
|
||||
mbuffer
|
||||
sedutil
|
||||
lsscsi
|
||||
zip
|
||||
unzip
|
||||
nix-index
|
||||
dnsutils
|
||||
whois
|
||||
pciutils
|
||||
usbutils
|
||||
nvme-cli
|
||||
]
|
||||
++ optionals config.passthrough.gui [
|
||||
gtk-engine-murrine
|
||||
gnome-themes-extra
|
||||
|
||||
mission-planner
|
||||
inav-configurator
|
||||
inav-blackbox-tools
|
||||
(blhelisuite32.override { workdir = "${config.home.homeDirectory}/.blhelisuite32"; })
|
||||
] ++ optionals (config.passthrough.gui && !config.passthrough.flatpak.enable) [
|
||||
xfce.thunar gimp
|
||||
jellyfin-media-player
|
||||
betaflight-configurator
|
||||
expresslrs-configurator
|
||||
];
|
||||
mission-planner
|
||||
inav-configurator
|
||||
inav-blackbox-tools
|
||||
(blhelisuite32.override { workdir = "${config.home.homeDirectory}/.blhelisuite32"; })
|
||||
]
|
||||
++ optionals (config.passthrough.gui && !config.passthrough.flatpak.enable) [
|
||||
xfce.thunar
|
||||
gimp
|
||||
jellyfin-media-player
|
||||
betaflight-configurator
|
||||
expresslrs-configurator
|
||||
];
|
||||
|
||||
wayland.windowManager.sway.config.window.commands = mkIf config.passthrough.gui [
|
||||
{ criteria.class = "BLHeliSuite32xl"; command = "floating enable"; }
|
||||
{ criteria.app_id = "thunar"; command = "floating enable"; }
|
||||
{
|
||||
criteria.class = "BLHeliSuite32xl";
|
||||
command = "floating enable";
|
||||
}
|
||||
{
|
||||
criteria.app_id = "thunar";
|
||||
command = "floating enable";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.util;
|
||||
gui = with config.global.gpu; enable && session;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.util = {
|
||||
minimal = mkEnableOption "minimal system environment with less packages";
|
||||
};
|
||||
|
@ -20,25 +25,26 @@ in {
|
|||
programs.zsh.enable = true;
|
||||
environment.shells = singleton pkgs.zsh;
|
||||
|
||||
users.home.persist.directories = [ ] ++
|
||||
optionals (!cfg.minimal) [
|
||||
".cache/nix-index"
|
||||
] ++
|
||||
optionals gui [
|
||||
# mission-planner
|
||||
".local/share/Mission Planner"
|
||||
# inav-configurator
|
||||
".config/inav-configurator"
|
||||
] ++
|
||||
optionals (gui && !config.global.flatpak.enable) [
|
||||
# jellyfin-media-player
|
||||
".config/jellyfin.org"
|
||||
".local/share/jellyfinmediaplayer"
|
||||
".local/share/Jellyfin Media Player"
|
||||
# expresslrs-configurator
|
||||
".config/ExpressLRS Configurator"
|
||||
# betaflight-configurator
|
||||
".config/betaflight-configurator"
|
||||
];
|
||||
users.home.persist.directories =
|
||||
[ ]
|
||||
++ optionals (!cfg.minimal) [
|
||||
".cache/nix-index"
|
||||
]
|
||||
++ optionals gui [
|
||||
# mission-planner
|
||||
".local/share/Mission Planner"
|
||||
# inav-configurator
|
||||
".config/inav-configurator"
|
||||
]
|
||||
++ optionals (gui && !config.global.flatpak.enable) [
|
||||
# jellyfin-media-player
|
||||
".config/jellyfin.org"
|
||||
".local/share/jellyfinmediaplayer"
|
||||
".local/share/Jellyfin Media Player"
|
||||
# expresslrs-configurator
|
||||
".config/ExpressLRS Configurator"
|
||||
# betaflight-configurator
|
||||
".config/betaflight-configurator"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,58 +1,73 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
dconf.settings = let
|
||||
p = "org/virt-manager/virt-manager";
|
||||
in {
|
||||
${p} = {
|
||||
xmleditor-enabled = true;
|
||||
# swaybar tray doesn't really work
|
||||
system-tray = false;
|
||||
};
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
dconf.settings =
|
||||
let
|
||||
p = "org/virt-manager/virt-manager";
|
||||
in
|
||||
{
|
||||
${p} = {
|
||||
xmleditor-enabled = true;
|
||||
# swaybar tray doesn't really work
|
||||
system-tray = false;
|
||||
};
|
||||
|
||||
"${p}/details".show-toolbar = true;
|
||||
"${p}/console" = {
|
||||
scaling = 0;
|
||||
auto-redirect = false;
|
||||
resize-guest = 1;
|
||||
};
|
||||
"${p}/stats" = {
|
||||
enable-memory-poll = true;
|
||||
enable-disk-poll = true;
|
||||
enable-net-poll = true;
|
||||
};
|
||||
"${p}/vmlist-fields" = {
|
||||
host-cpu-usage = true;
|
||||
memory-usage = true;
|
||||
disk-usage = true;
|
||||
network-traffic = true;
|
||||
};
|
||||
"${p}/details".show-toolbar = true;
|
||||
"${p}/console" = {
|
||||
scaling = 0;
|
||||
auto-redirect = false;
|
||||
resize-guest = 1;
|
||||
};
|
||||
"${p}/stats" = {
|
||||
enable-memory-poll = true;
|
||||
enable-disk-poll = true;
|
||||
enable-net-poll = true;
|
||||
};
|
||||
"${p}/vmlist-fields" = {
|
||||
host-cpu-usage = true;
|
||||
memory-usage = true;
|
||||
disk-usage = true;
|
||||
network-traffic = true;
|
||||
};
|
||||
|
||||
"${p}/new-vm" = {
|
||||
firmware = "uefi";
|
||||
graphics-type = "system";
|
||||
};
|
||||
"${p}/new-vm" = {
|
||||
firmware = "uefi";
|
||||
graphics-type = "system";
|
||||
};
|
||||
|
||||
"${p}/confirm" = {
|
||||
unapplied-dev = true;
|
||||
removedev = true;
|
||||
delete-storage = true;
|
||||
forcepoweroff = false;
|
||||
};
|
||||
"${p}/confirm" = {
|
||||
unapplied-dev = true;
|
||||
removedev = true;
|
||||
delete-storage = true;
|
||||
forcepoweroff = false;
|
||||
};
|
||||
|
||||
"${p}/connections" = let
|
||||
uri = "qemu:///system";
|
||||
in {
|
||||
uris = [ uri ];
|
||||
autoconnect = [ uri ];
|
||||
"${p}/connections" =
|
||||
let
|
||||
uri = "qemu:///system";
|
||||
in
|
||||
{
|
||||
uris = [ uri ];
|
||||
autoconnect = [ uri ];
|
||||
};
|
||||
"${p}/conns/qemu:system".pretty-name = "KVM";
|
||||
};
|
||||
"${p}/conns/qemu:system".pretty-name = "KVM";
|
||||
};
|
||||
|
||||
# floating other than main window
|
||||
wayland.windowManager.sway.config.window.commands = [
|
||||
{ criteria.app_id = "virt-manager"; command = "floating enable"; }
|
||||
{ criteria.app_id = "virt-manager"; criteria.title = "Virtual Machine Manager"; command = "floating disable"; }
|
||||
{
|
||||
criteria.app_id = "virt-manager";
|
||||
command = "floating enable";
|
||||
}
|
||||
{
|
||||
criteria.app_id = "virt-manager";
|
||||
criteria.title = "Virtual Machine Manager";
|
||||
command = "floating disable";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
gui = with config.global.gpu; enable && session;
|
||||
in mkIf gui {
|
||||
in
|
||||
mkIf gui {
|
||||
programs.virt-manager.enable = true;
|
||||
}
|
||||
|
|
|
@ -1,10 +1,15 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.passthrough.vscode;
|
||||
theme = config.passthrough.catppuccin.enable;
|
||||
in mkIf cfg.enable {
|
||||
in
|
||||
mkIf cfg.enable {
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
mutableExtensionsDir = false;
|
||||
|
@ -12,8 +17,11 @@ in mkIf cfg.enable {
|
|||
enableExtensionUpdateCheck = false;
|
||||
package = pkgs.vscodium;
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
catppuccin.catppuccin-vsc catppuccin.catppuccin-vsc-icons
|
||||
bbenoist.nix golang.go rust-lang.rust-analyzer
|
||||
catppuccin.catppuccin-vsc
|
||||
catppuccin.catppuccin-vsc-icons
|
||||
bbenoist.nix
|
||||
golang.go
|
||||
rust-lang.rust-analyzer
|
||||
];
|
||||
userSettings = {
|
||||
"workbench.colorTheme" = mkIf theme "Catppuccin Mocha";
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; let
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.home.vscode;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.home.vscode = {
|
||||
enable = mkEnableOption "vscode text editor";
|
||||
};
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
{ pkgs
|
||||
, lib
|
||||
, config
|
||||
, ... }: with lib; mkIf config.passthrough.gui {
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
mkIf config.passthrough.gui {
|
||||
programs.wofi = {
|
||||
enable = true;
|
||||
settings.mode = "drun";
|
||||
|
|
|
@ -1,21 +1,26 @@
|
|||
{ config
|
||||
, ... }: {
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
xdg = {
|
||||
enable = true;
|
||||
userDirs = let
|
||||
home = config.home.homeDirectory;
|
||||
local = "${home}/local";
|
||||
in {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
download = "${home}/dl";
|
||||
desktop = "${local}/desktop";
|
||||
documents = "${local}/documents";
|
||||
music = "${local}/music";
|
||||
pictures = "${local}/pictures";
|
||||
publicShare = "${local}/public";
|
||||
templates = "${local}/templates";
|
||||
videos = "${local}/videos";
|
||||
};
|
||||
userDirs =
|
||||
let
|
||||
home = config.home.homeDirectory;
|
||||
local = "${home}/local";
|
||||
in
|
||||
{
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
download = "${home}/dl";
|
||||
desktop = "${local}/desktop";
|
||||
documents = "${local}/documents";
|
||||
music = "${local}/music";
|
||||
pictures = "${local}/pictures";
|
||||
publicShare = "${local}/public";
|
||||
templates = "${local}/templates";
|
||||
videos = "${local}/videos";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
{
|
||||
users.home.persist.directories = [ "local" "dl" ];
|
||||
users.home.persist.directories = [
|
||||
"local"
|
||||
"dl"
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,24 +1,32 @@
|
|||
{ config
|
||||
, ... }: {
|
||||
{
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
autocd = false;
|
||||
defaultKeymap = "emacs";
|
||||
localVariables.PROMPT = let
|
||||
op = {
|
||||
res = "%{$reset_color%}";
|
||||
col = color: "%{$fg[${color}]%}";
|
||||
};
|
||||
c = color: text: "${op.col color}${text}${op.res}";
|
||||
in "${c "green" "%n"}${c "cyan" "@"}${c "yellow" "%m"} ${c "magenta" "<3"} %~ ${c "blue" "$PARTICLE"}${c "red" "%#"} ";
|
||||
localVariables.PROMPT =
|
||||
let
|
||||
op = {
|
||||
res = "%{$reset_color%}";
|
||||
col = color: "%{$fg[${color}]%}";
|
||||
};
|
||||
c = color: text: "${op.col color}${text}${op.res}";
|
||||
in
|
||||
"${c "green" "%n"}${c "cyan" "@"}${c "yellow" "%m"} ${c "magenta" "<3"} %~ ${c "blue" "$PARTICLE"}${c "red" "%#"} ";
|
||||
sessionVariables.LIBVIRT_DEFAULT_URI = "qemu:///system";
|
||||
|
||||
history = {
|
||||
extended = true;
|
||||
path = "${config.home.homeDirectory}/.local/state/zsh/history";
|
||||
ignorePatterns = [
|
||||
"rm *" "reboot"
|
||||
"kill *" "killall *" "pkill *"
|
||||
"rm *"
|
||||
"reboot"
|
||||
"kill *"
|
||||
"killall *"
|
||||
"pkill *"
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
{
|
||||
users.home.persist.directories = [ { directory = ".local/state/zsh"; mode = "0700"; } ];
|
||||
users.home.persist.directories = [
|
||||
{
|
||||
directory = ".local/state/zsh";
|
||||
mode = "0700";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue