mass reformat
This commit is contained in:
parent
ed1c53e94c
commit
9cb456ad60
14
common.nix
14
common.nix
@ -1,7 +1,11 @@
|
|||||||
{ config, pkgs, lib, options, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ ./modules ];
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
options,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
imports = [./modules];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
services.haveged.enable = lib.mkDefault true;
|
services.haveged.enable = lib.mkDefault true;
|
||||||
@ -34,7 +38,7 @@
|
|||||||
daemonIOSchedPriority = lib.mkDefault 7;
|
daemonIOSchedPriority = lib.mkDefault 7;
|
||||||
daemonIOSchedClass = lib.mkDefault "idle";
|
daemonIOSchedClass = lib.mkDefault "idle";
|
||||||
daemonCPUSchedPolicy = lib.mkDefault "idle";
|
daemonCPUSchedPolicy = lib.mkDefault "idle";
|
||||||
trustedUsers = [ "root" "builder" "@wheel" ];
|
trustedUsers = ["root" "builder" "@wheel"];
|
||||||
|
|
||||||
extraOptions = ''
|
extraOptions = ''
|
||||||
builders-use-substitutes = true
|
builders-use-substitutes = true
|
||||||
@ -100,7 +104,7 @@
|
|||||||
# Use a firewall
|
# Use a firewall
|
||||||
networking.firewall.enable = lib.mkDefault true;
|
networking.firewall.enable = lib.mkDefault true;
|
||||||
networking.firewall.allowPing = true;
|
networking.firewall.allowPing = true;
|
||||||
networking.firewall.allowedTCPPorts = lib.mkDefault [ 22 ];
|
networking.firewall.allowedTCPPorts = lib.mkDefault [22];
|
||||||
|
|
||||||
programs.fish.enable = lib.mkDefault true;
|
programs.fish.enable = lib.mkDefault true;
|
||||||
users.defaultUserShell = lib.mkOverride 900 pkgs.fish;
|
users.defaultUserShell = lib.mkOverride 900 pkgs.fish;
|
||||||
|
@ -59,7 +59,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, ... }@inputs: {
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
...
|
||||||
|
} @ inputs: {
|
||||||
nixosModules = {
|
nixosModules = {
|
||||||
ezpassthru = import ./modules/ezpassthru.nix;
|
ezpassthru = import ./modules/ezpassthru.nix;
|
||||||
ezwg = import ./modules/ezwg.nix;
|
ezwg = import ./modules/ezwg.nix;
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
inputs:
|
inputs: {
|
||||||
{ config, lib, pkgs, ... }:
|
config,
|
||||||
|
lib,
|
||||||
{
|
pkgs,
|
||||||
imports = [ (import ./modules inputs) ];
|
...
|
||||||
|
}: {
|
||||||
|
imports = [(import ./modules inputs)];
|
||||||
|
|
||||||
programs.direnv = {
|
programs.direnv = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
@ -52,7 +54,7 @@ inputs:
|
|||||||
notify-desktop
|
notify-desktop
|
||||||
];
|
];
|
||||||
|
|
||||||
home.sessionVariables = { TERM = "xterm-256color"; };
|
home.sessionVariables = {TERM = "xterm-256color";};
|
||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -1,24 +1,43 @@
|
|||||||
inputs:
|
inputs: {
|
||||||
{ config, lib, pkgs, ... }:
|
config,
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.ezcolors;
|
cfg = config.ezcolors;
|
||||||
|
|
||||||
pow = n: i: if i == 1 then n else if i == 0 then 1 else n * pow n (i - 1);
|
pow = n: i:
|
||||||
|
if i == 1
|
||||||
|
then n
|
||||||
|
else if i == 0
|
||||||
|
then 1
|
||||||
|
else n * pow n (i - 1);
|
||||||
|
|
||||||
alf = [ "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f" ];
|
alf = ["0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f"];
|
||||||
fil = c: lib.imap0 (n: x: if (lib.toLower x) == (lib.toLower c) then n else null) alf;
|
fil = c:
|
||||||
|
lib.imap0 (n: x:
|
||||||
|
if (lib.toLower x) == (lib.toLower c)
|
||||||
|
then n
|
||||||
|
else null)
|
||||||
|
alf;
|
||||||
fin = c: builtins.elemAt (builtins.filter (x: x != null) (fil c)) 0;
|
fin = c: builtins.elemAt (builtins.filter (x: x != null) (fil c)) 0;
|
||||||
add = l: lib.foldr ({ n, x }: c: (x * (pow 16 n)) + c) 0 (lib.imap0 (n: x: { inherit n x; }) l);
|
add = l:
|
||||||
|
lib.foldr ({
|
||||||
|
n,
|
||||||
|
x,
|
||||||
|
}: c: (x * (pow 16 n)) + c)
|
||||||
|
0 (lib.imap0 (n: x: {inherit n x;}) l);
|
||||||
calc = s: add (builtins.map fin (builtins.filter (x: builtins.isString x && builtins.stringLength x == 1) (builtins.split "" s)));
|
calc = s: add (builtins.map fin (builtins.filter (x: builtins.isString x && builtins.stringLength x == 1) (builtins.split "" s)));
|
||||||
|
|
||||||
splitHex = c:
|
splitHex = c: let
|
||||||
let
|
|
||||||
s' = builtins.match "(..)(..)(..)|(.)(.)(.)" c;
|
s' = builtins.match "(..)(..)(..)|(.)(.)(.)" c;
|
||||||
ss = builtins.elemAt s';
|
ss = builtins.elemAt s';
|
||||||
o = if ss 0 == null then 3 else 0;
|
o =
|
||||||
in
|
if ss 0 == null
|
||||||
{
|
then 3
|
||||||
|
else 0;
|
||||||
|
in {
|
||||||
r = ss (0 + o);
|
r = ss (0 + o);
|
||||||
g = ss (1 + o);
|
g = ss (1 + o);
|
||||||
b = ss (2 + o);
|
b = ss (2 + o);
|
||||||
@ -28,35 +47,35 @@ let
|
|||||||
|
|
||||||
hexToAlphaCss = c: a: with hexToRgb c; "rgba(${r}, ${g}, ${b}, ${a})";
|
hexToAlphaCss = c: a: with hexToRgb c; "rgba(${r}, ${g}, ${b}, ${a})";
|
||||||
|
|
||||||
makeScheme = base16: lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex" v) base16 //
|
makeScheme = base16:
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex-r" (splitHex v).r) base16 //
|
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex" v) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex-g" (splitHex v).g) base16 //
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex-r" (splitHex v).r) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex-b" (splitHex v).b) base16 //
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex-g" (splitHex v).g) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-rgb-r" (hexToRgb v).r) base16 //
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-hex-b" (splitHex v).b) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-rgb-g" (hexToRgb v).g) base16 //
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-rgb-r" (hexToRgb v).r) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-rgb-b" (hexToRgb v).b) base16 //
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-rgb-g" (hexToRgb v).g) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-dec-r" ((hexToRgb v).r / 255.0)) base16 //
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-rgb-b" (hexToRgb v).b) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-dec-g" ((hexToRgb v).g / 255.0)) base16 //
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-dec-r" ((hexToRgb v).r / 255.0)) base16
|
||||||
lib.mapAttrs' (k: v: lib.nameValuePair "${k}-dec-b" ((hexToRgb v).b / 255.0)) base16;
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-dec-g" ((hexToRgb v).g / 255.0)) base16
|
||||||
|
// lib.mapAttrs' (k: v: lib.nameValuePair "${k}-dec-b" ((hexToRgb v).b / 255.0)) base16;
|
||||||
|
|
||||||
mustache = scheme: src:
|
mustache = scheme: src:
|
||||||
pkgs.stdenv.mkDerivation (
|
pkgs.stdenv.mkDerivation {
|
||||||
{
|
|
||||||
# TODO add template name
|
# TODO add template name
|
||||||
name = "base16-generated";
|
name = "base16-generated";
|
||||||
inherit src;
|
inherit src;
|
||||||
data = pkgs.writeText "base16-generated-data" (builtins.toJSON scheme);
|
data = pkgs.writeText "base16-generated-data" (builtins.toJSON scheme);
|
||||||
phases = [ "buildPhase" ];
|
phases = ["buildPhase"];
|
||||||
buildPhase = "${pkgs.mustache-go}/bin/mustache $data $src > $out";
|
buildPhase = "${pkgs.mustache-go}/bin/mustache $data $src > $out";
|
||||||
}
|
};
|
||||||
);
|
|
||||||
|
|
||||||
|
scheme =
|
||||||
scheme = (makeScheme cfg.base16 // {
|
makeScheme cfg.base16
|
||||||
|
// {
|
||||||
scheme-name = "base16 generated";
|
scheme-name = "base16 generated";
|
||||||
scheme-slug = "idk";
|
scheme-slug = "idk";
|
||||||
scheme-author = "nixos";
|
scheme-author = "nixos";
|
||||||
});
|
};
|
||||||
|
|
||||||
genTheme = repo: mustache scheme "${repo}/templates/default.mustache";
|
genTheme = repo: mustache scheme "${repo}/templates/default.mustache";
|
||||||
|
|
||||||
@ -75,8 +94,7 @@ let
|
|||||||
homepage = "https://github.com/thefryscorer/schemer2";
|
homepage = "https://github.com/thefryscorer/schemer2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.ezcolors = {
|
options.ezcolors = {
|
||||||
enable = mkEnableOption "Enable automatic colors";
|
enable = mkEnableOption "Enable automatic colors";
|
||||||
|
|
||||||
@ -125,10 +143,9 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config =
|
config = let
|
||||||
let
|
|
||||||
colorsJson = builtins.toFile "colors.json" (builtins.toJSON cfg.base16);
|
colorsJson = builtins.toFile "colors.json" (builtins.toJSON cfg.base16);
|
||||||
themeHashOut = pkgs.runCommand "theme-hash" { } ''
|
themeHashOut = pkgs.runCommand "theme-hash" {} ''
|
||||||
cat ${colorsJson} | ${pkgs.coreutils}/bin/sha256sum | ${pkgs.coreutils}/bin/head -c 8 > $out
|
cat ${colorsJson} | ${pkgs.coreutils}/bin/sha256sum | ${pkgs.coreutils}/bin/head -c 8 > $out
|
||||||
'';
|
'';
|
||||||
themeHash = builtins.readFile themeHashOut;
|
themeHash = builtins.readFile themeHashOut;
|
||||||
@ -224,13 +241,13 @@ in
|
|||||||
"other-user-pill-bg-color" = "#${cfg.base16.base04}";
|
"other-user-pill-bg-color" = "#${cfg.base16.base04}";
|
||||||
"togglesw-off-color" = "#${cfg.base16.base04}";
|
"togglesw-off-color" = "#${cfg.base16.base04}";
|
||||||
|
|
||||||
"username-colors" = [ "#${cfg.base16.base08}" "#${cfg.base16.base09}" "#${cfg.base16.base0A}" "#${cfg.base16.base0B}" "#${cfg.base16.base0C}" "#${cfg.base16.base0D}" "#${cfg.base16.base0E}" "#${cfg.base16.base0F}" ];
|
"username-colors" = ["#${cfg.base16.base08}" "#${cfg.base16.base09}" "#${cfg.base16.base0A}" "#${cfg.base16.base0B}" "#${cfg.base16.base0C}" "#${cfg.base16.base0D}" "#${cfg.base16.base0E}" "#${cfg.base16.base0F}"];
|
||||||
# "avatar-background-colors" = [ "#${cfg.base16.base03}" "#${cfg.base16.base04}" "#${cfg.base16.base05}" ];
|
# "avatar-background-colors" = [ "#${cfg.base16.base03}" "#${cfg.base16.base04}" "#${cfg.base16.base05}" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
elementConfig = {
|
elementConfig = {
|
||||||
settingDefaults.custom_themes = [ elementTheme ];
|
settingDefaults.custom_themes = [elementTheme];
|
||||||
|
|
||||||
settingDefaults.theme = "${elementTheme.name}";
|
settingDefaults.theme = "${elementTheme.name}";
|
||||||
default_theme = "${elementTheme.name}";
|
default_theme = "${elementTheme.name}";
|
||||||
@ -239,16 +256,20 @@ in
|
|||||||
show_labs_settings = true;
|
show_labs_settings = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
base16FromImageSrc = pkgs.runCommand "auto-image-base16" { } ''
|
base16FromImageSrc = pkgs.runCommand "auto-image-base16" {} ''
|
||||||
${schemer2}/bin/schemer2 -format img::colors -in ${cfg.baseColors} -out colors.txt && ${pkgs.python3}/bin/python3 ${inputs.auto-base16-theme}/AutoBase16Theme.py ${inputs.auto-base16-theme}/templates/base16-template.yaml auto-image-base16.yaml
|
${schemer2}/bin/schemer2 -format img::colors -in ${cfg.baseColors} -out colors.txt && ${pkgs.python3}/bin/python3 ${inputs.auto-base16-theme}/AutoBase16Theme.py ${inputs.auto-base16-theme}/templates/base16-template.yaml auto-image-base16.yaml
|
||||||
${pkgs.yaml2json}/bin/yaml2json < auto-image-base16.yaml > $out
|
${pkgs.yaml2json}/bin/yaml2json < auto-image-base16.yaml > $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
base16FromImage = lib.filterAttrs (k: v: k != "scheme" && k != "author") (builtins.fromJSON (builtins.readFile base16FromImageSrc));
|
base16FromImage = lib.filterAttrs (k: v: k != "scheme" && k != "author") (builtins.fromJSON (builtins.readFile base16FromImageSrc));
|
||||||
in
|
in
|
||||||
mkMerge [(mkIf cfg.enable {
|
mkMerge [
|
||||||
|
(mkIf cfg.enable {
|
||||||
# Read only utility attributes
|
# Read only utility attributes
|
||||||
ezcolors.base16 = if builtins.typeOf cfg.baseColors == "set" then cfg.baseColors else base16FromImage;
|
ezcolors.base16 =
|
||||||
|
if builtins.typeOf cfg.baseColors == "set"
|
||||||
|
then cfg.baseColors
|
||||||
|
else base16FromImage;
|
||||||
ezcolors.base16Rgb = builtins.mapAttrs (n: c: hexToRgb c) cfg.base16;
|
ezcolors.base16Rgb = builtins.mapAttrs (n: c: hexToRgb c) cfg.base16;
|
||||||
ezcolors.base16Split = builtins.mapAttrs (n: c: splitHex c) cfg.base16;
|
ezcolors.base16Split = builtins.mapAttrs (n: c: splitHex c) cfg.base16;
|
||||||
|
|
||||||
@ -317,17 +338,15 @@ in
|
|||||||
# GTK
|
# GTK
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme =
|
theme = let
|
||||||
let
|
|
||||||
generated-gtk-theme = pkgs.callPackage "${inputs.rycee}/pkgs/materia-theme" {
|
generated-gtk-theme = pkgs.callPackage "${inputs.rycee}/pkgs/materia-theme" {
|
||||||
configBase16 = {
|
configBase16 = {
|
||||||
name = "Generated";
|
name = "Generated";
|
||||||
kind = "dark";
|
kind = "dark";
|
||||||
colors = builtins.mapAttrs (k: v: { hex.rgb = v; }) cfg.base16;
|
colors = builtins.mapAttrs (k: v: {hex.rgb = v;}) cfg.base16;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
name = "Generated";
|
name = "Generated";
|
||||||
package = generated-gtk-theme;
|
package = generated-gtk-theme;
|
||||||
};
|
};
|
||||||
@ -348,7 +367,8 @@ in
|
|||||||
"workbench.colorTheme" = "nix colors";
|
"workbench.colorTheme" = "nix colors";
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file = lib.mkMerge
|
home.file =
|
||||||
|
lib.mkMerge
|
||||||
[
|
[
|
||||||
(
|
(
|
||||||
mkIf config.programs.vscode.enable {
|
mkIf config.programs.vscode.enable {
|
||||||
@ -375,7 +395,8 @@ in
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
}) (mkIf (cfg.enable && cfg.plasma) {
|
})
|
||||||
|
(mkIf (cfg.enable && cfg.plasma) {
|
||||||
programs.plasma.files.kdeglobals = with (lib.mapAttrs (n: c: "#${c}") cfg.base16); {
|
programs.plasma.files.kdeglobals = with (lib.mapAttrs (n: c: "#${c}") cfg.base16); {
|
||||||
# programs.plasma.files.kdeglobals = with (lib.mapAttrs (n: c: "${toString c.r},${toString c.g},${toString c.b}") cfg.base16Rgb); {
|
# programs.plasma.files.kdeglobals = with (lib.mapAttrs (n: c: "${toString c.r},${toString c.g},${toString c.b}") cfg.base16Rgb); {
|
||||||
General = {
|
General = {
|
||||||
@ -483,5 +504,6 @@ in
|
|||||||
ForegroundVisited = base0E;
|
ForegroundVisited = base0E;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})];
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
inputs:
|
inputs: {
|
||||||
{ config, lib, pkgs, ... }:
|
config,
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.de2u;
|
cfg = config.de2u;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.de2u = {
|
options.de2u = {
|
||||||
enable = mkEnableOption "Enable de2 user stuff";
|
enable = mkEnableOption "Enable de2 user stuff";
|
||||||
|
|
||||||
@ -33,14 +35,19 @@ in
|
|||||||
'');
|
'');
|
||||||
};
|
};
|
||||||
Install = rec {
|
Install = rec {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = ["graphical-session.target"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.firefox = {
|
programs.firefox = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
|
|
||||||
package = lib.mkDefault ((if pkgs ? librewolf then pkgs.librewolf else pkgs.firefox).override {
|
package = lib.mkDefault ((
|
||||||
|
if pkgs ? librewolf
|
||||||
|
then pkgs.librewolf
|
||||||
|
else pkgs.firefox
|
||||||
|
)
|
||||||
|
.override {
|
||||||
cfg = {
|
cfg = {
|
||||||
enableGnomeExtensions = true;
|
enableGnomeExtensions = true;
|
||||||
pipewireSupport = true;
|
pipewireSupport = true;
|
||||||
@ -138,12 +145,20 @@ in
|
|||||||
|
|
||||||
xdg.configFile."gtk-4.0/gtk.css".text = ''
|
xdg.configFile."gtk-4.0/gtk.css".text = ''
|
||||||
/* UNITE windowDecorations */
|
/* UNITE windowDecorations */
|
||||||
@import url('${config.home.homeDirectory}/.nix-profile/share/gnome-shell/extensions/unite@hardpixel.eu/styles/gtk4/buttons-right/${if (cfg.tiling && !cfg.touch) then "always" else "both"}.css');
|
@import url('${config.home.homeDirectory}/.nix-profile/share/gnome-shell/extensions/unite@hardpixel.eu/styles/gtk4/buttons-right/${
|
||||||
|
if (cfg.tiling && !cfg.touch)
|
||||||
|
then "always"
|
||||||
|
else "both"
|
||||||
|
}.css');
|
||||||
/* windowDecorations UNITE */
|
/* windowDecorations UNITE */
|
||||||
'';
|
'';
|
||||||
gtk.gtk3.extraCss = ''
|
gtk.gtk3.extraCss = ''
|
||||||
/* UNITE windowDecorations */
|
/* UNITE windowDecorations */
|
||||||
@import url('${config.home.homeDirectory}/.nix-profile/share/gnome-shell/extensions/unite@hardpixel.eu/styles/gtk3/buttons-right/${if (cfg.tiling && !cfg.touch) then "always" else "both"}.css');
|
@import url('${config.home.homeDirectory}/.nix-profile/share/gnome-shell/extensions/unite@hardpixel.eu/styles/gtk3/buttons-right/${
|
||||||
|
if (cfg.tiling && !cfg.touch)
|
||||||
|
then "always"
|
||||||
|
else "both"
|
||||||
|
}.css');
|
||||||
/* windowDecorations UNITE */
|
/* windowDecorations UNITE */
|
||||||
'';
|
'';
|
||||||
home.activation.gtk3css-over-unite = {
|
home.activation.gtk3css-over-unite = {
|
||||||
@ -151,22 +166,21 @@ in
|
|||||||
$DRY_RUN_CMD rm -f ~/.config/gtk-3.0/gtk.css
|
$DRY_RUN_CMD rm -f ~/.config/gtk-3.0/gtk.css
|
||||||
$DRY_RUN_CMD rm -f ~/.config/gtk-4.0/gtk.css
|
$DRY_RUN_CMD rm -f ~/.config/gtk-4.0/gtk.css
|
||||||
'';
|
'';
|
||||||
before = [ "checkLinkTargets" ];
|
before = ["checkLinkTargets"];
|
||||||
after = [ ];
|
after = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."mimeapps.list".force = true;
|
xdg.configFile."mimeapps.list".force = true;
|
||||||
xdg.mimeApps = let
|
xdg.mimeApps = let
|
||||||
browser =
|
browser =
|
||||||
if config.programs.firefox.enable then
|
if config.programs.firefox.enable
|
||||||
|
then
|
||||||
(
|
(
|
||||||
if config.programs.firefox.package.pname == "firefox" then
|
if config.programs.firefox.package.pname == "firefox"
|
||||||
"firefox.desktop"
|
then "firefox.desktop"
|
||||||
else
|
else "librewolf.desktop"
|
||||||
"librewolf.desktop"
|
|
||||||
)
|
)
|
||||||
else
|
else "chromium-browser.desktop";
|
||||||
"chromium-browser.desktop";
|
|
||||||
|
|
||||||
apps = {
|
apps = {
|
||||||
"text/plain" = "org.gnome.TextEditor.desktop";
|
"text/plain" = "org.gnome.TextEditor.desktop";
|
||||||
@ -244,7 +258,10 @@ in
|
|||||||
tray-pos = "center";
|
tray-pos = "center";
|
||||||
};
|
};
|
||||||
"org/gnome/shell/extensions/user-theme" = {
|
"org/gnome/shell/extensions/user-theme" = {
|
||||||
name = if config.ezcolors.enable then "Generated" else "Default";
|
name =
|
||||||
|
if config.ezcolors.enable
|
||||||
|
then "Generated"
|
||||||
|
else "Default";
|
||||||
};
|
};
|
||||||
"org/gnome/shell/extensions/just-perfection" = {
|
"org/gnome/shell/extensions/just-perfection" = {
|
||||||
# activities-button = !cfg.tiling; # conflicts with unite?
|
# activities-button = !cfg.tiling; # conflicts with unite?
|
||||||
@ -257,7 +274,7 @@ in
|
|||||||
};
|
};
|
||||||
"org/gnome/shell" = {
|
"org/gnome/shell" = {
|
||||||
disable-user-extensions = false;
|
disable-user-extensions = false;
|
||||||
disabled-extensions = [ "" ];
|
disabled-extensions = [""];
|
||||||
enabled-extensions = [
|
enabled-extensions = [
|
||||||
"pop-shell@system76.com"
|
"pop-shell@system76.com"
|
||||||
"rrc@ogarcia.me"
|
"rrc@ogarcia.me"
|
||||||
@ -289,9 +306,18 @@ in
|
|||||||
only-on-primary = cfg.tiling;
|
only-on-primary = cfg.tiling;
|
||||||
};
|
};
|
||||||
"org/gnome/shell/extensions/unite" = {
|
"org/gnome/shell/extensions/unite" = {
|
||||||
hide-window-titlebars = if (cfg.tiling && !cfg.touch) then "always" else "both";
|
hide-window-titlebars =
|
||||||
hide-activities-button = if (cfg.tiling || cfg.touch) then "never" else "always";
|
if (cfg.tiling && !cfg.touch)
|
||||||
show-window-buttons = if cfg.tiling then "never" else "both";
|
then "always"
|
||||||
|
else "both";
|
||||||
|
hide-activities-button =
|
||||||
|
if (cfg.tiling || cfg.touch)
|
||||||
|
then "never"
|
||||||
|
else "always";
|
||||||
|
show-window-buttons =
|
||||||
|
if cfg.tiling
|
||||||
|
then "never"
|
||||||
|
else "both";
|
||||||
notifications-position = "center";
|
notifications-position = "center";
|
||||||
restrict-to-primary-screen = false;
|
restrict-to-primary-screen = false;
|
||||||
show-legacy-tray = false;
|
show-legacy-tray = false;
|
||||||
@ -315,7 +341,10 @@ in
|
|||||||
snap-color = "rgba(0,0,0,0)";
|
snap-color = "rgba(0,0,0,0)";
|
||||||
};
|
};
|
||||||
"org/gnome/desktop/wm/preferences" = {
|
"org/gnome/desktop/wm/preferences" = {
|
||||||
focus-mode = if cfg.tiling then "sloppy" else "click";
|
focus-mode =
|
||||||
|
if cfg.tiling
|
||||||
|
then "sloppy"
|
||||||
|
else "click";
|
||||||
resize-with-right-button = true;
|
resize-with-right-button = true;
|
||||||
num-workspaces = 9;
|
num-workspaces = 9;
|
||||||
};
|
};
|
||||||
@ -327,80 +356,82 @@ in
|
|||||||
enabled = true;
|
enabled = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
"org/gnome/desktop/wm/keybindings" =
|
"org/gnome/desktop/wm/keybindings" = let
|
||||||
let
|
|
||||||
workspaceAttrsList = lib.flatten (map
|
workspaceAttrsList = lib.flatten (map
|
||||||
(n: [
|
(n: [
|
||||||
(lib.nameValuePair "move-to-workspace-${n}" [ "<Shift><Super>${n}" ])
|
(lib.nameValuePair "move-to-workspace-${n}" ["<Shift><Super>${n}"])
|
||||||
(lib.nameValuePair "switch-to-workspace-${n}" [ "<Super>${n}" ])
|
(lib.nameValuePair "switch-to-workspace-${n}" ["<Super>${n}"])
|
||||||
])
|
])
|
||||||
(map (n: toString n) (lib.range 1 9)));
|
(map (n: toString n) (lib.range 1 9)));
|
||||||
in
|
in
|
||||||
lib.listToAttrs workspaceAttrsList // {
|
lib.listToAttrs workspaceAttrsList
|
||||||
minimize = [ "<Super>comma" ];
|
// {
|
||||||
maximize = [ "" ];
|
minimize = ["<Super>comma"];
|
||||||
unmaximize = [ "" ];
|
maximize = [""];
|
||||||
move-to-monitor-up = [ "" ];
|
unmaximize = [""];
|
||||||
move-to-monitor-down = [ "" ];
|
move-to-monitor-up = [""];
|
||||||
move-to-monitor-left = [ "" ];
|
move-to-monitor-down = [""];
|
||||||
move-to-monitor-right = [ "" ];
|
move-to-monitor-left = [""];
|
||||||
move-to-workspace-down = [ "" ];
|
move-to-monitor-right = [""];
|
||||||
move-to-workspace-up = [ "" ];
|
move-to-workspace-down = [""];
|
||||||
switch-to-workspace-down = [ "<Primary><Super>Down" "<Primary><Super>j" ];
|
move-to-workspace-up = [""];
|
||||||
switch-to-workspace-up = [ "<Primary><Super>Up" "<Primary><Super>k" ];
|
switch-to-workspace-down = ["<Primary><Super>Down" "<Primary><Super>j"];
|
||||||
toggle-maximized = [ "<Super>m" ];
|
switch-to-workspace-up = ["<Primary><Super>Up" "<Primary><Super>k"];
|
||||||
close = [ "<Super>q" ];
|
toggle-maximized = ["<Super>m"];
|
||||||
cycle-windows = [ "" ];
|
close = ["<Super>q"];
|
||||||
panel-run-dialog = [ "<Super>d" ];
|
cycle-windows = [""];
|
||||||
move-to-workspace-right = [ "" ];
|
panel-run-dialog = ["<Super>d"];
|
||||||
move-to-workspace-left = [ "" ];
|
move-to-workspace-right = [""];
|
||||||
switch-to-workspace-right = [ "" ];
|
move-to-workspace-left = [""];
|
||||||
switch-to-workspace-left = [ "" ];
|
switch-to-workspace-right = [""];
|
||||||
|
switch-to-workspace-left = [""];
|
||||||
|
|
||||||
# And deal with the remaining alt keys, screw alt keys
|
# And deal with the remaining alt keys, screw alt keys
|
||||||
cycle-windows-backward = [ "" ];
|
cycle-windows-backward = [""];
|
||||||
activate-window-menu = [ "" ];
|
activate-window-menu = [""];
|
||||||
cycle-panels = [ "" ];
|
cycle-panels = [""];
|
||||||
cycle-panels-backward = [ "" ];
|
cycle-panels-backward = [""];
|
||||||
switch-panels = [ "" ];
|
switch-panels = [""];
|
||||||
switch-panels-backward = [ "" ];
|
switch-panels-backward = [""];
|
||||||
switch-applications = [ "<Super>Tab" ];
|
switch-applications = ["<Super>Tab"];
|
||||||
switch-applications-backward = [ "<Shift><Super>Tab" ];
|
switch-applications-backward = ["<Shift><Super>Tab"];
|
||||||
cycle-group = [ "" ];
|
cycle-group = [""];
|
||||||
cycle-group-backward = [ "" ];
|
cycle-group-backward = [""];
|
||||||
switch-group = [ "" ];
|
switch-group = [""];
|
||||||
switch-group-backward = [ "" ];
|
switch-group-backward = [""];
|
||||||
begin-resize = [ "" ];
|
begin-resize = [""];
|
||||||
begin-move = [ "" ];
|
begin-move = [""];
|
||||||
};
|
};
|
||||||
"org/gnome/mutter/keybindings" = {
|
"org/gnome/mutter/keybindings" = {
|
||||||
toggle-tiled-left = [ "" ];
|
toggle-tiled-left = [""];
|
||||||
toggle-tiled-right = [ "" ];
|
toggle-tiled-right = [""];
|
||||||
};
|
};
|
||||||
"org/gnome/mutter/wayland/keybindings" = {
|
"org/gnome/mutter/wayland/keybindings" = {
|
||||||
restore-shortcuts = [ "" ];
|
restore-shortcuts = [""];
|
||||||
};
|
};
|
||||||
"org/gnome/shell/keybindings" = lib.listToAttrs (map (n: lib.nameValuePair "switch-to-application-${toString n}" [ "" ]) (lib.range 1 9)) // {
|
"org/gnome/shell/keybindings" =
|
||||||
open-application-menu = [ "" ];
|
lib.listToAttrs (map (n: lib.nameValuePair "switch-to-application-${toString n}" [""]) (lib.range 1 9))
|
||||||
toggle-message-tray = [ "<Super>v" ];
|
// {
|
||||||
toggle-overview = [ "" ];
|
open-application-menu = [""];
|
||||||
|
toggle-message-tray = ["<Super>v"];
|
||||||
|
toggle-overview = [""];
|
||||||
};
|
};
|
||||||
"org/gnome/settings-daemon/plugins/media-keys" = {
|
"org/gnome/settings-daemon/plugins/media-keys" = {
|
||||||
play = [ "<Super>backslash" ];
|
play = ["<Super>backslash"];
|
||||||
next = [ "<Super>bracketright" ];
|
next = ["<Super>bracketright"];
|
||||||
previous = [ "<Super>bracketleft" ];
|
previous = ["<Super>bracketleft"];
|
||||||
|
|
||||||
volume-down = [ "<Super>minus" ];
|
volume-down = ["<Super>minus"];
|
||||||
volume-up = [ "<Super>equal" ];
|
volume-up = ["<Super>equal"];
|
||||||
|
|
||||||
screensaver = [ "<Super>Escape" ];
|
screensaver = ["<Super>Escape"];
|
||||||
home = [ "<Super>f" ];
|
home = ["<Super>f"];
|
||||||
email = [ "<Super>e" ];
|
email = ["<Super>e"];
|
||||||
www = [ "<Super>b" ];
|
www = ["<Super>b"];
|
||||||
|
|
||||||
rotate-video-lock-static = [ "" ];
|
rotate-video-lock-static = [""];
|
||||||
|
|
||||||
screenshot-clip = [ "Print" ];
|
screenshot-clip = ["Print"];
|
||||||
};
|
};
|
||||||
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
|
"org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
|
||||||
binding = "<Super>t";
|
binding = "<Super>t";
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
|
inputs: {
|
||||||
inputs:
|
config,
|
||||||
{ config, lib, pkgs, ... }:
|
lib,
|
||||||
with lib;
|
pkgs,
|
||||||
let
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.de3u;
|
cfg = config.de3u;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
imports = [
|
imports = [
|
||||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||||
];
|
];
|
||||||
@ -106,15 +107,14 @@ in
|
|||||||
};
|
};
|
||||||
General = {
|
General = {
|
||||||
BrowserApplication =
|
BrowserApplication =
|
||||||
if config.programs.firefox.enable then
|
if config.programs.firefox.enable
|
||||||
|
then
|
||||||
(
|
(
|
||||||
if config.programs.firefox.package.pname == "firefox" then
|
if config.programs.firefox.package.pname == "firefox"
|
||||||
"firefox.desktop"
|
then "firefox.desktop"
|
||||||
else
|
else "librewolf.desktop"
|
||||||
"librewolf.desktop"
|
|
||||||
)
|
)
|
||||||
else
|
else "chromium-browser.desktop";
|
||||||
"chromium-browser.desktop";
|
|
||||||
TerminalApplication = "kermit";
|
TerminalApplication = "kermit";
|
||||||
TerminalService = "kermit.desktop";
|
TerminalService = "kermit.desktop";
|
||||||
};
|
};
|
||||||
@ -133,21 +133,21 @@ in
|
|||||||
|
|
||||||
shortcuts = {
|
shortcuts = {
|
||||||
"org.kde.krunner.desktop"."_launch" = ["Meta+D" "Search" "Alt+Space"];
|
"org.kde.krunner.desktop"."_launch" = ["Meta+D" "Search" "Alt+Space"];
|
||||||
"org.kde.plasma.emojier.desktop"."_launch" = [ ];
|
"org.kde.plasma.emojier.desktop"."_launch" = [];
|
||||||
|
|
||||||
plasmashell = {
|
plasmashell = {
|
||||||
"activate task manager entry 1" = [ ];
|
"activate task manager entry 1" = [];
|
||||||
"activate task manager entry 2" = [ ];
|
"activate task manager entry 2" = [];
|
||||||
"activate task manager entry 3" = [ ];
|
"activate task manager entry 3" = [];
|
||||||
"activate task manager entry 4" = [ ];
|
"activate task manager entry 4" = [];
|
||||||
"activate task manager entry 5" = [ ];
|
"activate task manager entry 5" = [];
|
||||||
"activate task manager entry 6" = [ ];
|
"activate task manager entry 6" = [];
|
||||||
"activate task manager entry 7" = [ ];
|
"activate task manager entry 7" = [];
|
||||||
"activate task manager entry 8" = [ ];
|
"activate task manager entry 8" = [];
|
||||||
"activate task manager entry 9" = [ ];
|
"activate task manager entry 9" = [];
|
||||||
"activate task manager entry 10" = [ ];
|
"activate task manager entry 10" = [];
|
||||||
"next activity" = [ ];
|
"next activity" = [];
|
||||||
"manage activities" = [ ];
|
"manage activities" = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
kwin = {
|
kwin = {
|
||||||
@ -183,11 +183,11 @@ in
|
|||||||
view_zoom_out = "Meta+_";
|
view_zoom_out = "Meta+_";
|
||||||
|
|
||||||
"Window to Next Screen" = "Meta+>";
|
"Window to Next Screen" = "Meta+>";
|
||||||
"Window to Previous Screen" ="Meta+<";
|
"Window to Previous Screen" = "Meta+<";
|
||||||
"Switch to Next Screen" = "Meta+.";
|
"Switch to Next Screen" = "Meta+.";
|
||||||
"Switch to Previous Screen" ="Meta+,";
|
"Switch to Previous Screen" = "Meta+,";
|
||||||
|
|
||||||
"Show Desktop" = [ ];
|
"Show Desktop" = [];
|
||||||
|
|
||||||
"Window On All Desktops" = "Meta+A";
|
"Window On All Desktops" = "Meta+A";
|
||||||
};
|
};
|
||||||
@ -220,21 +220,21 @@ in
|
|||||||
|
|
||||||
push_window_to_master = "Meta+M";
|
push_window_to_master = "Meta+M";
|
||||||
|
|
||||||
move_window_to_next_pos = [ ];
|
move_window_to_next_pos = [];
|
||||||
move_window_to_prev_pos = [ ];
|
move_window_to_prev_pos = [];
|
||||||
decrease_master_win_count = [ ];
|
decrease_master_win_count = [];
|
||||||
increase_master_win_count = [ ];
|
increase_master_win_count = [];
|
||||||
rotate = [ ];
|
rotate = [];
|
||||||
rotate_part = [ ];
|
rotate_part = [];
|
||||||
rotate_reverse = [ ];
|
rotate_reverse = [];
|
||||||
toggle_float_layout = [ ];
|
toggle_float_layout = [];
|
||||||
toggle_monocle_layout = [ ];
|
toggle_monocle_layout = [];
|
||||||
toggle_quarter_layout = [ ];
|
toggle_quarter_layout = [];
|
||||||
toggle_spiral_layout = [ ];
|
toggle_spiral_layout = [];
|
||||||
toggle_spread_layout = [ ];
|
toggle_spread_layout = [];
|
||||||
toggle_stair_layout = [ ];
|
toggle_stair_layout = [];
|
||||||
toggle_three_column_layout = [ ];
|
toggle_three_column_layout = [];
|
||||||
toggle_tile_layout = [ ];
|
toggle_tile_layout = [];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -247,7 +247,7 @@ in
|
|||||||
'');
|
'');
|
||||||
};
|
};
|
||||||
Install = rec {
|
Install = rec {
|
||||||
WantedBy = [ "graphical-session.target" ];
|
WantedBy = ["graphical-session.target"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -332,15 +332,14 @@ in
|
|||||||
xdg.configFile."mimeapps.list".force = true;
|
xdg.configFile."mimeapps.list".force = true;
|
||||||
xdg.mimeApps = let
|
xdg.mimeApps = let
|
||||||
browser =
|
browser =
|
||||||
if config.programs.firefox.enable then
|
if config.programs.firefox.enable
|
||||||
|
then
|
||||||
(
|
(
|
||||||
if config.programs.firefox.package.pname == "firefox" then
|
if config.programs.firefox.package.pname == "firefox"
|
||||||
"firefox.desktop"
|
then "firefox.desktop"
|
||||||
else
|
else "librewolf.desktop"
|
||||||
"librewolf.desktop"
|
|
||||||
)
|
)
|
||||||
else
|
else "chromium-browser.desktop";
|
||||||
"chromium-browser.desktop";
|
|
||||||
|
|
||||||
apps = {
|
apps = {
|
||||||
"text/plain" = "org.kde.kate.desktop";
|
"text/plain" = "org.kde.kate.desktop";
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
inputs:
|
inputs: {
|
||||||
{ config, lib, pkgs, ... }:
|
config,
|
||||||
|
lib,
|
||||||
{
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
(lib.mkAliasOptionModule [ "ezpcusr" "gaming" ] [ "gaming" "enable" ])
|
(lib.mkAliasOptionModule ["ezpcusr" "gaming"] ["gaming" "enable"])
|
||||||
(lib.mkAliasOptionModule [ "ezpcusr" "newWine" ] [ "gaming" "newWine" ])
|
(lib.mkAliasOptionModule ["ezpcusr" "newWine"] ["gaming" "newWine"])
|
||||||
|
|
||||||
(import ./ezpcusr.nix inputs)
|
(import ./ezpcusr.nix inputs)
|
||||||
(import ./colors.nix inputs)
|
(import ./colors.nix inputs)
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
inputs:
|
inputs: {
|
||||||
{ config, lib, pkgs, ... }:
|
config,
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.ezpcusr;
|
cfg = config.ezpcusr;
|
||||||
|
|
||||||
lockCommand = "${pkgs.swaylock-effects}/bin/swaylock --clock --indicator --screenshots --effect-scale 0.8 --effect-blur 8x3 --effect-vignette 0.2:0.5 --fade-in 0.5 --text-color ${config.ezcolors.base16.base08} --inside-color ${config.ezcolors.base16.base00} --ring-color ${config.ezcolors.base16.base01} --datestr \"%Y-%m-%e\" --timestr \"%I:%M %p\"";
|
lockCommand = "${pkgs.swaylock-effects}/bin/swaylock --clock --indicator --screenshots --effect-scale 0.8 --effect-blur 8x3 --effect-vignette 0.2:0.5 --fade-in 0.5 --text-color ${config.ezcolors.base16.base08} --inside-color ${config.ezcolors.base16.base00} --ring-color ${config.ezcolors.base16.base01} --datestr \"%Y-%m-%e\" --timestr \"%I:%M %p\"";
|
||||||
@ -30,7 +33,8 @@ let
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
scrsaveup =
|
scrsaveup =
|
||||||
if cfg.uploadScript != null then
|
if cfg.uploadScript != null
|
||||||
|
then
|
||||||
pkgs.writeScript "scr-save-up.sh" ''
|
pkgs.writeScript "scr-save-up.sh" ''
|
||||||
#!${pkgs.zsh}/bin/zsh
|
#!${pkgs.zsh}/bin/zsh
|
||||||
LOC=$(${getscrloc})
|
LOC=$(${getscrloc})
|
||||||
@ -38,8 +42,7 @@ let
|
|||||||
${cfg.uploadScript} $LOC | xargs echo -n | ${pkgs.wl-clipboard}/bin/wl-copy
|
${cfg.uploadScript} $LOC | xargs echo -n | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||||
notify-send "Screenshot Uploaded!"
|
notify-send "Screenshot Uploaded!"
|
||||||
''
|
''
|
||||||
else
|
else null;
|
||||||
null;
|
|
||||||
|
|
||||||
scrvidsaveclip = pkgs.writeScript "scr-vid-save-clip.sh" ''
|
scrvidsaveclip = pkgs.writeScript "scr-vid-save-clip.sh" ''
|
||||||
#!${pkgs.zsh}/bin/zsh
|
#!${pkgs.zsh}/bin/zsh
|
||||||
@ -49,7 +52,8 @@ let
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
scrvidsaveup =
|
scrvidsaveup =
|
||||||
if cfg.uploadScript != null then
|
if cfg.uploadScript != null
|
||||||
|
then
|
||||||
pkgs.writeScript "scr-vid-save-up.sh" ''
|
pkgs.writeScript "scr-vid-save-up.sh" ''
|
||||||
#!${pkgs.zsh}/bin/zsh
|
#!${pkgs.zsh}/bin/zsh
|
||||||
LOC=$(${getscrloc} mp4)
|
LOC=$(${getscrloc} mp4)
|
||||||
@ -57,15 +61,15 @@ let
|
|||||||
${cfg.uploadScript} $LOC | ${pkgs.findutils}/bin/xargs echo -n | ${pkgs.wl-clipboard}/bin/wl-copy
|
${cfg.uploadScript} $LOC | ${pkgs.findutils}/bin/xargs echo -n | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||||
notify-send "Screen Recording Uploaded!"
|
notify-send "Screen Recording Uploaded!"
|
||||||
''
|
''
|
||||||
else
|
else null;
|
||||||
null;
|
|
||||||
|
|
||||||
scrvidstop = pkgs.writeScript "scr-vid-stop.sh" ''
|
scrvidstop = pkgs.writeScript "scr-vid-stop.sh" ''
|
||||||
#!${pkgs.zsh}/bin/zsh
|
#!${pkgs.zsh}/bin/zsh
|
||||||
${pkgs.procps}/bin/pkill -2 wf-recorder
|
${pkgs.procps}/bin/pkill -2 wf-recorder
|
||||||
'';
|
'';
|
||||||
|
|
||||||
ezDrv = pkgs.runCommand "ez-commands" { } (''
|
ezDrv = pkgs.runCommand "ez-commands" {} (
|
||||||
|
''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
ln -s ${selshot} $out/bin/selshot
|
ln -s ${selshot} $out/bin/selshot
|
||||||
ln -s ${selvid} $out/bin/selvid
|
ln -s ${selvid} $out/bin/selvid
|
||||||
@ -73,25 +77,26 @@ let
|
|||||||
ln -s ${scrsaveclip} $out/bin/scrsaveclip
|
ln -s ${scrsaveclip} $out/bin/scrsaveclip
|
||||||
ln -s ${scrvidsaveclip} $out/bin/scrvidsaveclip
|
ln -s ${scrvidsaveclip} $out/bin/scrvidsaveclip
|
||||||
ln -s ${scrvidstop} $out/bin/scrvidstop
|
ln -s ${scrvidstop} $out/bin/scrvidstop
|
||||||
'' + (
|
''
|
||||||
if cfg.uploadScript != null then ''
|
+ (
|
||||||
|
if cfg.uploadScript != null
|
||||||
|
then ''
|
||||||
ln -s ${cfg.uploadScript} $out/bin/upload_file
|
ln -s ${cfg.uploadScript} $out/bin/upload_file
|
||||||
|
|
||||||
ln -s ${scrsaveup} $out/bin/scrsaveup
|
ln -s ${scrsaveup} $out/bin/scrsaveup
|
||||||
ln -s ${scrvidsaveup} $out/bin/scrvidsaveup
|
ln -s ${scrvidsaveup} $out/bin/scrvidsaveup
|
||||||
'' else ""
|
''
|
||||||
|
else ""
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.ezpcusr = {
|
options.ezpcusr = {
|
||||||
enable = mkEnableOption "Enable simple PC user config";
|
enable = mkEnableOption "Enable simple PC user config";
|
||||||
|
|
||||||
uploadScript = mkOption {
|
uploadScript = mkOption {
|
||||||
type = types.nullOr types.package;
|
type = types.nullOr types.package;
|
||||||
default = null;
|
default = null;
|
||||||
description =
|
description = "A path to a script that takes a path to a file and returns a URL";
|
||||||
"A path to a script that takes a path to a file and returns a URL";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
screenshotsPath = mkOption {
|
screenshotsPath = mkOption {
|
||||||
@ -102,18 +107,18 @@ in
|
|||||||
|
|
||||||
outputOptions = mkOption {
|
outputOptions = mkOption {
|
||||||
description = "Additional output options";
|
description = "Additional output options";
|
||||||
default = { };
|
default = {};
|
||||||
type = types.attrsOf (types.attrsOf types.str);
|
type = types.attrsOf (types.attrsOf types.str);
|
||||||
};
|
};
|
||||||
|
|
||||||
waybarConfig = mkOption {
|
waybarConfig = mkOption {
|
||||||
description = "Waybar config";
|
description = "Waybar config";
|
||||||
default = { };
|
default = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
screensaver = mkOption {
|
screensaver = mkOption {
|
||||||
description = "ezpcusr screensaver";
|
description = "ezpcusr screensaver";
|
||||||
default = { };
|
default = {};
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
@ -137,7 +142,7 @@ in
|
|||||||
|
|
||||||
favIcons = mkOption {
|
favIcons = mkOption {
|
||||||
description = "Your favourite icons pack";
|
description = "Your favourite icons pack";
|
||||||
default = { };
|
default = {};
|
||||||
type = types.submodule {
|
type = types.submodule {
|
||||||
options = {
|
options = {
|
||||||
name = mkOption {
|
name = mkOption {
|
||||||
@ -194,8 +199,7 @@ in
|
|||||||
|
|
||||||
modifier = lib.mkDefault "Mod4";
|
modifier = lib.mkDefault "Mod4";
|
||||||
|
|
||||||
keybindings =
|
keybindings = let
|
||||||
let
|
|
||||||
# ugly stupid way of doing things but im lazy
|
# ugly stupid way of doing things but im lazy
|
||||||
bwRofi = pkgs.writeScript "bw-rofi" ''
|
bwRofi = pkgs.writeScript "bw-rofi" ''
|
||||||
#!${pkgs.bash}/bin/bash
|
#!${pkgs.bash}/bin/bash
|
||||||
@ -231,27 +235,40 @@ in
|
|||||||
|
|
||||||
modifier = config.wayland.windowManager.sway.config.modifier;
|
modifier = config.wayland.windowManager.sway.config.modifier;
|
||||||
|
|
||||||
alphabet = [ "Ctrl" "Alt" "Ctrl+Alt" ];
|
alphabet = ["Ctrl" "Alt" "Ctrl+Alt"];
|
||||||
genKeyAttrs = move: lib.listToAttrs (
|
genKeyAttrs = move:
|
||||||
|
lib.listToAttrs (
|
||||||
map
|
map
|
||||||
(
|
(
|
||||||
n: {
|
n: {
|
||||||
name = "${modifier}${if move then "+Shift" else ""}+${builtins.elemAt alphabet ((n - 11) / 10)}+${toString (lib.mod n 10)}";
|
name = "${modifier}${
|
||||||
value = "${if move then "move container to " else ""}workspace ${toString n}";
|
if move
|
||||||
|
then "+Shift"
|
||||||
|
else ""
|
||||||
|
}+${builtins.elemAt alphabet ((n - 11) / 10)}+${toString (lib.mod n 10)}";
|
||||||
|
value = "${
|
||||||
|
if move
|
||||||
|
then "move container to "
|
||||||
|
else ""
|
||||||
|
}workspace ${toString n}";
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
(lib.lists.range 11 (10 * (builtins.length alphabet) + 10))
|
(lib.lists.range 11 (10 * (builtins.length alphabet) + 10))
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
lib.mkOptionDefault (
|
lib.mkOptionDefault (
|
||||||
genKeyAttrs true // genKeyAttrs false // (
|
genKeyAttrs true
|
||||||
|
// genKeyAttrs false
|
||||||
|
// (
|
||||||
let
|
let
|
||||||
volumeUp = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
volumeUp = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%";
|
||||||
volumeDown = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
volumeDown = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
"Print" = "exec ${scrsaveclip}";
|
"Print" = "exec ${scrsaveclip}";
|
||||||
"Shift+Print" = if cfg.uploadScript != null then "exec ${scrsaveup}" else "nop";
|
"Shift+Print" =
|
||||||
|
if cfg.uploadScript != null
|
||||||
|
then "exec ${scrsaveup}"
|
||||||
|
else "nop";
|
||||||
|
|
||||||
"Ctrl+Print" = "exec ${scrvidsaveclip}";
|
"Ctrl+Print" = "exec ${scrvidsaveclip}";
|
||||||
"Ctrl+Alt+Print" = "exec ${scrvidstop}";
|
"Ctrl+Alt+Print" = "exec ${scrvidstop}";
|
||||||
@ -261,10 +278,8 @@ in
|
|||||||
|
|
||||||
"XF86AudioRaiseVolume" = volumeUp;
|
"XF86AudioRaiseVolume" = volumeUp;
|
||||||
"XF86AudioLowerVolume" = volumeDown;
|
"XF86AudioLowerVolume" = volumeDown;
|
||||||
"XF86AudioMute" =
|
"XF86AudioMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
||||||
"exec ${pkgs.pulseaudio}/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle";
|
"XF86AudioMicMute" = "exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
||||||
"XF86AudioMicMute" =
|
|
||||||
"exec ${pkgs.pulseaudio}/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle";
|
|
||||||
|
|
||||||
"XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 10";
|
"XF86MonBrightnessDown" = "exec ${pkgs.light}/bin/light -U 10";
|
||||||
"XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 10";
|
"XF86MonBrightnessUp" = "exec ${pkgs.light}/bin/light -A 10";
|
||||||
@ -272,12 +287,9 @@ in
|
|||||||
"${modifier}+apostrophe" = "exec ${pkgs.light}/bin/light -A 10";
|
"${modifier}+apostrophe" = "exec ${pkgs.light}/bin/light -A 10";
|
||||||
|
|
||||||
# Previous/next but change the shuffle/random state before action (and change back afterwards)
|
# Previous/next but change the shuffle/random state before action (and change back afterwards)
|
||||||
"${modifier}+Shift+bracketright" =
|
"${modifier}+Shift+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
||||||
"exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
"${modifier}+Shift+bracketleft" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl previous && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
||||||
"${modifier}+Shift+bracketleft" =
|
"Shift+XF86AudioNext" = "exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
||||||
"exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl previous && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
|
||||||
"Shift+XF86AudioNext" =
|
|
||||||
"exec ${pkgs.playerctl}/bin/playerctl shuffle Toggle && ${pkgs.playerctl}/bin/playerctl next && ${pkgs.playerctl}/bin/playerctl shuffle Toggle";
|
|
||||||
|
|
||||||
# Previous/next
|
# Previous/next
|
||||||
"${modifier}+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
"${modifier}+bracketright" = "exec ${pkgs.playerctl}/bin/playerctl next";
|
||||||
@ -296,18 +308,15 @@ in
|
|||||||
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
"XF86AudioPause" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||||
"${modifier}+backslash" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
"${modifier}+backslash" = "exec ${pkgs.playerctl}/bin/playerctl play-pause";
|
||||||
|
|
||||||
"${modifier}+Ctrl+Shift+m" =
|
"${modifier}+Ctrl+Shift+m" = let
|
||||||
let
|
|
||||||
ripMusicAdvanced = pkgs.writeShellScript "rip-music-advanced.sh" ''
|
ripMusicAdvanced = pkgs.writeShellScript "rip-music-advanced.sh" ''
|
||||||
CURRENT=$(${pkgs.mpc_cli}/bin/mpc -f '%file%' current)
|
CURRENT=$(${pkgs.mpc_cli}/bin/mpc -f '%file%' current)
|
||||||
URLIFIED=$(${pkgs.gnused}/bin/sed 's/youtube:video:/https:\/\/youtube.com\/watch?v=/'<<<$CURRENT)
|
URLIFIED=$(${pkgs.gnused}/bin/sed 's/youtube:video:/https:\/\/youtube.com\/watch?v=/'<<<$CURRENT)
|
||||||
PARAMS=$(${pkgs.rofi}/bin/rofi -dmenu)
|
PARAMS=$(${pkgs.rofi}/bin/rofi -dmenu)
|
||||||
echo y | ${inputs.mudl.defaultPackage.${pkgs.system}}/bin/mudl "$URLIFIED" "$PARAMS"
|
echo y | ${inputs.mudl.defaultPackage.${pkgs.system}}/bin/mudl "$URLIFIED" "$PARAMS"
|
||||||
'';
|
'';
|
||||||
in
|
in "exec ${ripMusicAdvanced}";
|
||||||
"exec ${ripMusicAdvanced}";
|
"${modifier}+Ctrl+m" = let
|
||||||
"${modifier}+Ctrl+m" =
|
|
||||||
let
|
|
||||||
ripMusic = pkgs.writeShellScript "rip-music.sh" ''
|
ripMusic = pkgs.writeShellScript "rip-music.sh" ''
|
||||||
CURRENT=$(${pkgs.mpc_cli}/bin/mpc -f '%file%' current)
|
CURRENT=$(${pkgs.mpc_cli}/bin/mpc -f '%file%' current)
|
||||||
URLIFIED=$(${pkgs.gnused}/bin/sed 's/youtube:video:/https:\/\/youtube.com\/watch?v=/'<<<$CURRENT)
|
URLIFIED=$(${pkgs.gnused}/bin/sed 's/youtube:video:/https:\/\/youtube.com\/watch?v=/'<<<$CURRENT)
|
||||||
@ -320,21 +329,17 @@ in
|
|||||||
echo y | ${inputs.mudl.defaultPackage.${pkgs.system}}/bin/mudl "$URLIFIED" "$ALBUM"
|
echo y | ${inputs.mudl.defaultPackage.${pkgs.system}}/bin/mudl "$URLIFIED" "$ALBUM"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
in
|
in "exec ${ripMusic}";
|
||||||
"exec ${ripMusic}";
|
|
||||||
|
|
||||||
"${modifier}+m" =
|
"${modifier}+m" = let
|
||||||
let
|
|
||||||
musicRofi = pkgs.writeShellScript "music-rofi" ''
|
musicRofi = pkgs.writeShellScript "music-rofi" ''
|
||||||
SONGN=$(${pkgs.mpc_cli}/bin/mpc -f "%position% - %artist% - %album% - %title%" playlist | ${pkgs.rofi}/bin/rofi -dmenu -i | ${pkgs.coreutils}/bin/cut -d " " -f 1)
|
SONGN=$(${pkgs.mpc_cli}/bin/mpc -f "%position% - %artist% - %album% - %title%" playlist | ${pkgs.rofi}/bin/rofi -dmenu -i | ${pkgs.coreutils}/bin/cut -d " " -f 1)
|
||||||
[ ! -z "$SONGN" ] && ${pkgs.mpc_cli}/bin/mpc play "$SONGN"
|
[ ! -z "$SONGN" ] && ${pkgs.mpc_cli}/bin/mpc play "$SONGN"
|
||||||
'';
|
'';
|
||||||
in
|
in "exec ${musicRofi}";
|
||||||
"exec ${musicRofi}";
|
|
||||||
"${modifier}+k" = "exec ${pkgs.mpc_cli}/bin/mpc clear";
|
"${modifier}+k" = "exec ${pkgs.mpc_cli}/bin/mpc clear";
|
||||||
"${config.wayland.windowManager.sway.config.modifier}+Shift+k" = lib.mkForce "exec ${pkgs.mpc_cli}/bin/mpc ls \"Local media/Tracks\" | ${pkgs.mpc_cli}/bin/mpc add";
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+k" = lib.mkForce "exec ${pkgs.mpc_cli}/bin/mpc ls \"Local media/Tracks\" | ${pkgs.mpc_cli}/bin/mpc add";
|
||||||
"${config.wayland.windowManager.sway.config.modifier}+Shift+m" =
|
"${config.wayland.windowManager.sway.config.modifier}+Shift+m" = let
|
||||||
let
|
|
||||||
mopidySearch = pkgs.writeShellScript "mopidy-search.sh" ''
|
mopidySearch = pkgs.writeShellScript "mopidy-search.sh" ''
|
||||||
QUERY=$(${pkgs.rofi}/bin/rofi -dmenu)
|
QUERY=$(${pkgs.rofi}/bin/rofi -dmenu)
|
||||||
[ -z "$QUERY" ] && exit
|
[ -z "$QUERY" ] && exit
|
||||||
@ -354,8 +359,7 @@ in
|
|||||||
PLAYLIST_ENTRY_POSITION=$(echo "$PLAYLIST_ENTRY" | ${pkgs.gawk}/bin/awk -F' / ' '{print $1}')
|
PLAYLIST_ENTRY_POSITION=$(echo "$PLAYLIST_ENTRY" | ${pkgs.gawk}/bin/awk -F' / ' '{print $1}')
|
||||||
${pkgs.mpc_cli}/bin/mpc play "$PLAYLIST_ENTRY_POSITION"
|
${pkgs.mpc_cli}/bin/mpc play "$PLAYLIST_ENTRY_POSITION"
|
||||||
'';
|
'';
|
||||||
in
|
in "exec ${mopidySearch}";
|
||||||
"exec ${mopidySearch}";
|
|
||||||
|
|
||||||
"${modifier}+p" = "exec ${bwRofi}";
|
"${modifier}+p" = "exec ${bwRofi}";
|
||||||
"${modifier}+t" = "exec ${bwRofiOtp}";
|
"${modifier}+t" = "exec ${bwRofiOtp}";
|
||||||
@ -372,7 +376,7 @@ in
|
|||||||
|
|
||||||
menu = "${pkgs.rofi}/bin/rofi -show drun -show-icons -run-command '${pkgs.sway}/bin/swaymsg exec -- {cmd}'";
|
menu = "${pkgs.rofi}/bin/rofi -show drun -show-icons -run-command '${pkgs.sway}/bin/swaymsg exec -- {cmd}'";
|
||||||
|
|
||||||
bars = [ ];
|
bars = [];
|
||||||
|
|
||||||
gaps = {
|
gaps = {
|
||||||
smartGaps = lib.mkDefault true;
|
smartGaps = lib.mkDefault true;
|
||||||
@ -401,9 +405,9 @@ in
|
|||||||
position = "left";
|
position = "left";
|
||||||
height = null;
|
height = null;
|
||||||
|
|
||||||
modules-left = [ "sway/workspaces" "custom/spacer" "custom/weather-temp" "custom/weather-precip" "custom/weather-wind" ];
|
modules-left = ["sway/workspaces" "custom/spacer" "custom/weather-temp" "custom/weather-precip" "custom/weather-wind"];
|
||||||
modules-center = [ "clock#1" "clock#2" "custom/spacer" "custom/media" "custom/spacer" "clock#3" "custom/spacer" "clock#4" ];
|
modules-center = ["clock#1" "clock#2" "custom/spacer" "custom/media" "custom/spacer" "clock#3" "custom/spacer" "clock#4"];
|
||||||
modules-right = [ "pulseaudio" "custom/spacer" "memory" "custom/spacer" "cpu" ] ++ lib.optionals cfg.battery [ "custom/spacer" "battery" ] ++ [ "custom/spacer" "tray" ];
|
modules-right = ["pulseaudio" "custom/spacer" "memory" "custom/spacer" "cpu"] ++ lib.optionals cfg.battery ["custom/spacer" "battery"] ++ ["custom/spacer" "tray"];
|
||||||
|
|
||||||
modules = {
|
modules = {
|
||||||
"custom/spacer" = {
|
"custom/spacer" = {
|
||||||
@ -489,7 +493,7 @@ in
|
|||||||
critical = 10;
|
critical = 10;
|
||||||
};
|
};
|
||||||
format = "{icon} {capacity}%";
|
format = "{icon} {capacity}%";
|
||||||
format-icons = [ "" "" "" "" "" ];
|
format-icons = ["" "" "" "" ""];
|
||||||
};
|
};
|
||||||
|
|
||||||
tray = {
|
tray = {
|
||||||
@ -497,8 +501,8 @@ in
|
|||||||
spacing = 5;
|
spacing = 5;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
}
|
||||||
} // cfg.waybarConfig)
|
// cfg.waybarConfig)
|
||||||
];
|
];
|
||||||
|
|
||||||
style = ''
|
style = ''
|
||||||
@ -581,7 +585,7 @@ in
|
|||||||
programs.mako = {
|
programs.mako = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
maxVisible = lib.mkDefault 6;
|
maxVisible = lib.mkDefault 6;
|
||||||
extraConfig = lib.generators.toKeyValue { } {
|
extraConfig = lib.generators.toKeyValue {} {
|
||||||
on-button-middle = "dismiss-all";
|
on-button-middle = "dismiss-all";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -591,8 +595,8 @@ in
|
|||||||
ExecStart = "${pkgs.mako}/bin/mako";
|
ExecStart = "${pkgs.mako}/bin/mako";
|
||||||
};
|
};
|
||||||
Install = {
|
Install = {
|
||||||
After = [ "sway-session.target" ];
|
After = ["sway-session.target"];
|
||||||
WantedBy = [ "sway-session.target" ];
|
WantedBy = ["sway-session.target"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -663,14 +667,12 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.configFile."neofetch/config.conf".text =
|
xdg.configFile."neofetch/config.conf".text = let
|
||||||
let
|
|
||||||
image = builtins.path {
|
image = builtins.path {
|
||||||
name = "nixos_circlejerk.png";
|
name = "nixos_circlejerk.png";
|
||||||
path = ../data/nixos_circlejerk.png;
|
path = ../data/nixos_circlejerk.png;
|
||||||
};
|
};
|
||||||
in
|
in ''
|
||||||
''
|
|
||||||
image_source="${image}"
|
image_source="${image}"
|
||||||
image_backend="kitty"
|
image_backend="kitty"
|
||||||
'';
|
'';
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
inputs:
|
inputs: {
|
||||||
{ config, lib, pkgs, ... }:
|
config,
|
||||||
with lib;
|
lib,
|
||||||
let
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.gaming;
|
cfg = config.gaming;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.gaming = {
|
options.gaming = {
|
||||||
enable = mkEnableOption "Enable gaming stuff";
|
enable = mkEnableOption "Enable gaming stuff";
|
||||||
|
|
||||||
@ -33,9 +35,11 @@ in
|
|||||||
STAGING_RT_PRIORITY_SERVER = 90;
|
STAGING_RT_PRIORITY_SERVER = 90;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages =
|
home.packages = let
|
||||||
let
|
newwine = pkgs.winePackages.full.override {
|
||||||
newwine = (pkgs.winePackages.full.override { wineBuild = "wineWow"; wineRelease = "staging"; });
|
wineBuild = "wineWow";
|
||||||
|
wineRelease = "staging";
|
||||||
|
};
|
||||||
newwinetricks = pkgs.winetricks.overrideAttrs (old: rec {
|
newwinetricks = pkgs.winetricks.overrideAttrs (old: rec {
|
||||||
pathAdd = "${newwine}/bin:" + old.pathAdd;
|
pathAdd = "${newwine}/bin:" + old.pathAdd;
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
@ -55,7 +59,8 @@ in
|
|||||||
'';
|
'';
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
with pkgs; [
|
with pkgs;
|
||||||
|
[
|
||||||
oldwine
|
oldwine
|
||||||
oldwinetricks
|
oldwinetricks
|
||||||
|
|
||||||
@ -63,23 +68,25 @@ in
|
|||||||
|
|
||||||
tuxpaint
|
tuxpaint
|
||||||
extremetuxracer
|
extremetuxracer
|
||||||
] ++ lib.optionals cfg.newWine [
|
]
|
||||||
|
++ lib.optionals cfg.newWine [
|
||||||
(
|
(
|
||||||
pkgs.runCommand "new-wine-stuff"
|
pkgs.runCommand "new-wine-stuff"
|
||||||
{ } ''
|
{} ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
ln -s ${newwine}/bin/wine $out/bin/new-wine
|
ln -s ${newwine}/bin/wine $out/bin/new-wine
|
||||||
ln -s ${newwine}/bin/winecfg $out/bin/new-winecfg
|
ln -s ${newwine}/bin/winecfg $out/bin/new-winecfg
|
||||||
ln -s ${newwinetricks}/bin/winetricks $out/bin/new-winetricks
|
ln -s ${newwinetricks}/bin/winetricks $out/bin/new-winetricks
|
||||||
''
|
''
|
||||||
)
|
)
|
||||||
] ++ lib.optional cfg.steamService (pkgs.writeShellScriptBin "steam" "${pkgs.systemd}/bin/systemctl --user start steam");
|
]
|
||||||
|
++ lib.optional cfg.steamService (pkgs.writeShellScriptBin "steam" "${pkgs.systemd}/bin/systemctl --user start steam");
|
||||||
|
|
||||||
systemd.user.services.scc = mkIf cfg.scService {
|
systemd.user.services.scc = mkIf cfg.scService {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "User-mode driver and GTK3 based GUI for Steam Controller";
|
Description = "User-mode driver and GTK3 based GUI for Steam Controller";
|
||||||
After = [ "graphical-session-pre.target" ];
|
After = ["graphical-session-pre.target"];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = ["graphical-session.target"];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
@ -89,20 +96,19 @@ in
|
|||||||
RestartSec = 5;
|
RestartSec = 5;
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
Install = {WantedBy = ["graphical-session.target"];};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services.steam = mkIf cfg.steamService {
|
systemd.user.services.steam = mkIf cfg.steamService {
|
||||||
Unit = {
|
Unit = {
|
||||||
Description = "Start Steam gaming platform";
|
Description = "Start Steam gaming platform";
|
||||||
After = [ "graphical-session-pre.target" ];
|
After = ["graphical-session-pre.target"];
|
||||||
PartOf = [ "graphical-session.target" ];
|
PartOf = ["graphical-session.target"];
|
||||||
};
|
};
|
||||||
|
|
||||||
Service = {
|
Service = {
|
||||||
Type = "simple";
|
Type = "simple";
|
||||||
ExecStart =
|
ExecStart = let
|
||||||
let
|
|
||||||
steamStart = pkgs.writeShellScript "steam-start" ''
|
steamStart = pkgs.writeShellScript "steam-start" ''
|
||||||
${pkgs.systemd}/bin/systemctl --user stop scc
|
${pkgs.systemd}/bin/systemctl --user stop scc
|
||||||
# no sleep is needed here because steam is slow as fuck lol
|
# no sleep is needed here because steam is slow as fuck lol
|
||||||
@ -110,8 +116,7 @@ in
|
|||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
lib.mkIf cfg.scService "${steamStart}";
|
lib.mkIf cfg.scService "${steamStart}";
|
||||||
ExecStop =
|
ExecStop = let
|
||||||
let
|
|
||||||
steamStop = pkgs.writeShellScript "steam-stop" ''
|
steamStop = pkgs.writeShellScript "steam-stop" ''
|
||||||
${pkgs.coreutils}/bin/sleep 5 # give time for controller to reset
|
${pkgs.coreutils}/bin/sleep 5 # give time for controller to reset
|
||||||
${pkgs.systemd}/bin/systemctl --user start scc
|
${pkgs.systemd}/bin/systemctl --user start scc
|
||||||
@ -120,7 +125,7 @@ in
|
|||||||
lib.mkIf cfg.scService "${steamStop}";
|
lib.mkIf cfg.scService "${steamStop}";
|
||||||
};
|
};
|
||||||
|
|
||||||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
Install = {WantedBy = ["graphical-session.target"];};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.programs.kermit;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.programs.kermit;
|
||||||
|
in {
|
||||||
options.programs.kermit = {
|
options.programs.kermit = {
|
||||||
enable = lib.mkEnableOption "A VTE-based, simple and froggy terminal emulator 🐸";
|
enable = lib.mkEnableOption "A VTE-based, simple and froggy terminal emulator 🐸";
|
||||||
|
|
||||||
settings = lib.mkOption {
|
settings = lib.mkOption {
|
||||||
default = { };
|
default = {};
|
||||||
type = with lib.types; attrsOf str;
|
type = with lib.types; attrsOf str;
|
||||||
description = ''
|
description = ''
|
||||||
The settings that Kermit should use.
|
The settings that Kermit should use.
|
||||||
@ -25,16 +27,20 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
xdg.configFile."kermit.conf".text = (lib.generators.toKeyValue
|
xdg.configFile."kermit.conf".text =
|
||||||
|
(lib.generators.toKeyValue
|
||||||
{
|
{
|
||||||
mkKeyValue = lib.generators.mkKeyValueDefault { } " ";
|
mkKeyValue = lib.generators.mkKeyValueDefault {} " ";
|
||||||
}
|
}
|
||||||
cfg.settings) + cfg.extraConfig;
|
cfg.settings)
|
||||||
|
+ cfg.extraConfig;
|
||||||
|
|
||||||
home.packages = [ (pkgs.kermit-terminal.overrideAttrs (super: {
|
home.packages = [
|
||||||
|
(pkgs.kermit-terminal.overrideAttrs (super: {
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
sed -i 's/\/usr\/bin\///' $out/share/applications/kermit.desktop
|
sed -i 's/\/usr\/bin\///' $out/share/applications/kermit.desktop
|
||||||
'';
|
'';
|
||||||
})) ];
|
}))
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,12 @@
|
|||||||
{ config, pkgs, lib, ... }: {
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
home.packages = with pkgs; [ zsh-powerlevel9k ];
|
home.packages = with pkgs; [zsh-powerlevel9k];
|
||||||
|
|
||||||
programs.htop = {
|
programs.htop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -24,7 +29,7 @@
|
|||||||
"Memory"
|
"Memory"
|
||||||
"Uptime"
|
"Uptime"
|
||||||
];
|
];
|
||||||
right_meters = [ "RightCPUs" "Blank" "CPU" ];
|
right_meters = ["RightCPUs" "Blank" "CPU"];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
home.packages = with pkgs; [ zsh-powerlevel9k ];
|
home.packages = with pkgs; [zsh-powerlevel9k];
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
inputs:
|
inputs: {
|
||||||
{ config, pkgs, lib, ... }:
|
config,
|
||||||
|
pkgs,
|
||||||
let
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
# TODO: find a better source
|
# TODO: find a better source
|
||||||
mimeTypes = pkgs.fetchurl {
|
mimeTypes = pkgs.fetchurl {
|
||||||
url =
|
url = "https://raw.githubusercontent.com/eprints/eprints3.4/master/lib/mime.types";
|
||||||
"https://raw.githubusercontent.com/eprints/eprints3.4/master/lib/mime.types";
|
|
||||||
sha256 = "0cdhq71wk5h3zcfrz8dyqc3vrjyikwjqsla855v036r54lch0kn2";
|
sha256 = "0cdhq71wk5h3zcfrz8dyqc3vrjyikwjqsla855v036r54lch0kn2";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -13,8 +14,7 @@ let
|
|||||||
#!${pkgs.zsh}/bin/zsh
|
#!${pkgs.zsh}/bin/zsh
|
||||||
git commit -am "$*"
|
git commit -am "$*"
|
||||||
'';
|
'';
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
@ -56,12 +56,12 @@ in
|
|||||||
"vim.ignorecase" = true;
|
"vim.ignorecase" = true;
|
||||||
"vim.normalModeKeyBindings" = [
|
"vim.normalModeKeyBindings" = [
|
||||||
{
|
{
|
||||||
before = [ "<Tab>" ];
|
before = ["<Tab>"];
|
||||||
commands = [ "workbench.action.nextEditorInGroup" ];
|
commands = ["workbench.action.nextEditorInGroup"];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
before = [ "<S-Tab>" ];
|
before = ["<S-Tab>"];
|
||||||
commands = [ "workbench.action.previousEditorInGroup" ];
|
commands = ["workbench.action.previousEditorInGroup"];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -77,9 +77,10 @@ in
|
|||||||
"elmLS.elmReviewPath" = "${pkgs.elmPackages.elm-review}/bin/elm-review";
|
"elmLS.elmReviewPath" = "${pkgs.elmPackages.elm-review}/bin/elm-review";
|
||||||
"elmLS.elmFormatPath" = "${pkgs.elmPackages.elm-format}/bin/elm-format";
|
"elmLS.elmFormatPath" = "${pkgs.elmPackages.elm-format}/bin/elm-format";
|
||||||
|
|
||||||
"rust-analyzer.diagnostics.disabled" = [ "unresolved-proc-macro" ];
|
"rust-analyzer.diagnostics.disabled" = ["unresolved-proc-macro"];
|
||||||
};
|
};
|
||||||
extensions = with pkgs.vscode-extensions; [
|
extensions = with pkgs.vscode-extensions;
|
||||||
|
[
|
||||||
vscodevim.vim
|
vscodevim.vim
|
||||||
jnoortheen.nix-ide
|
jnoortheen.nix-ide
|
||||||
haskell.haskell
|
haskell.haskell
|
||||||
@ -94,7 +95,8 @@ in
|
|||||||
exec rust-analyzer "$@"
|
exec rust-analyzer "$@"
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
]
|
||||||
|
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
{
|
{
|
||||||
name = "vscode-autohide";
|
name = "vscode-autohide";
|
||||||
publisher = "sirmspencer";
|
publisher = "sirmspencer";
|
||||||
@ -178,10 +180,11 @@ in
|
|||||||
pname = "firenvim";
|
pname = "firenvim";
|
||||||
src = inputs.firenvim;
|
src = inputs.firenvim;
|
||||||
# yes im stupid
|
# yes im stupid
|
||||||
version = builtins.readFile (pkgs.runCommand "firenvim-version" { } ''
|
version = builtins.readFile (pkgs.runCommand "firenvim-version" {} ''
|
||||||
${pkgs.jq}/bin/jq -j .version < ${inputs.firenvim}/package.json > $out
|
${pkgs.jq}/bin/jq -j .version < ${inputs.firenvim}/package.json > $out
|
||||||
'');
|
'');
|
||||||
})
|
}
|
||||||
|
)
|
||||||
vim-gitgutter
|
vim-gitgutter
|
||||||
];
|
];
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
@ -219,7 +222,7 @@ in
|
|||||||
|
|
||||||
ezfonts.font = {
|
ezfonts.font = {
|
||||||
name = "Anonymice Nerd Font";
|
name = "Anonymice Nerd Font";
|
||||||
package = pkgs.nerdfonts.override { fonts = [ "AnonymousPro" ]; };
|
package = pkgs.nerdfonts.override {fonts = ["AnonymousPro"];};
|
||||||
size = 11;
|
size = 11;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -268,6 +271,6 @@ in
|
|||||||
lfs.enable = true;
|
lfs.enable = true;
|
||||||
userName = "notgne2";
|
userName = "notgne2";
|
||||||
userEmail = "gen2@gen2.space";
|
userEmail = "gen2@gen2.space";
|
||||||
ignores = [ ".envrc" ];
|
ignores = [".envrc"];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let cfg = config.de2;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.de2;
|
||||||
in {
|
in {
|
||||||
options.de2.enable = mkEnableOption "Enable de2 system stuff";
|
options.de2.enable = mkEnableOption "Enable de2 system stuff";
|
||||||
|
|
||||||
@ -13,7 +18,7 @@ in {
|
|||||||
|
|
||||||
i18n.inputMethod = {
|
i18n.inputMethod = {
|
||||||
enabled = "ibus";
|
enabled = "ibus";
|
||||||
ibus.engines = with pkgs.ibus-engines; [ typing-booster uniemoji ];
|
ibus.engines = with pkgs.ibus-engines; [typing-booster uniemoji];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
@ -26,13 +31,17 @@ in {
|
|||||||
services.power-profiles-daemon.enable = lib.mkDefault false;
|
services.power-profiles-daemon.enable = lib.mkDefault false;
|
||||||
|
|
||||||
# for KDE connect
|
# for KDE connect
|
||||||
networking.firewall.allowedTCPPortRanges = [{
|
networking.firewall.allowedTCPPortRanges = [
|
||||||
|
{
|
||||||
from = 1714;
|
from = 1714;
|
||||||
to = 1764;
|
to = 1764;
|
||||||
}];
|
}
|
||||||
networking.firewall.allowedUDPPortRanges = [{
|
];
|
||||||
|
networking.firewall.allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
from = 1714;
|
from = 1714;
|
||||||
to = 1764;
|
to = 1764;
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,18 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let cfg = config.de3;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.de3;
|
||||||
in {
|
in {
|
||||||
options.de3.enable = mkEnableOption "Enable de3 system stuff";
|
options.de3.enable = mkEnableOption "Enable de3 system stuff";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
i18n.inputMethod = {
|
i18n.inputMethod = {
|
||||||
enabled = "ibus";
|
enabled = "ibus";
|
||||||
ibus.engines = with pkgs.ibus-engines; [ typing-booster uniemoji ];
|
ibus.engines = with pkgs.ibus-engines; [typing-booster uniemoji];
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.portal.enable = lib.mkDefault true;
|
xdg.portal.enable = lib.mkDefault true;
|
||||||
@ -27,13 +32,17 @@ in {
|
|||||||
services.power-profiles-daemon.enable = lib.mkDefault false;
|
services.power-profiles-daemon.enable = lib.mkDefault false;
|
||||||
|
|
||||||
# for KDE connect
|
# for KDE connect
|
||||||
networking.firewall.allowedTCPPortRanges = [{
|
networking.firewall.allowedTCPPortRanges = [
|
||||||
|
{
|
||||||
from = 1714;
|
from = 1714;
|
||||||
to = 1764;
|
to = 1764;
|
||||||
}];
|
}
|
||||||
networking.firewall.allowedUDPPortRanges = [{
|
];
|
||||||
|
networking.firewall.allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
from = 1714;
|
from = 1714;
|
||||||
to = 1764;
|
to = 1764;
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
./ezwg.nix
|
./ezwg.nix
|
||||||
./kiosk.nix
|
./kiosk.nix
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let cfg = config.services.ezpassthru;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.services.ezpassthru;
|
||||||
in {
|
in {
|
||||||
options.services.ezpassthru = {
|
options.services.ezpassthru = {
|
||||||
enable = mkEnableOption
|
enable =
|
||||||
|
mkEnableOption
|
||||||
"Enable simple VM PCI passthrough config (NOTE: this is only for ppl with a primary AMD/Intel, and a non-primary NVidia)";
|
"Enable simple VM PCI passthrough config (NOTE: this is only for ppl with a primary AMD/Intel, and a non-primary NVidia)";
|
||||||
|
|
||||||
PCIs = mkOption {
|
PCIs = mkOption {
|
||||||
@ -26,7 +32,7 @@ in {
|
|||||||
"vfio"
|
"vfio"
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.kernelParams = [ "intel_iommu=on" "amd_iommu=on" "pcie_aspm=off" ];
|
boot.kernelParams = ["intel_iommu=on" "amd_iommu=on" "pcie_aspm=off"];
|
||||||
|
|
||||||
boot.extraModprobeConfig = "options vfio-pci ids=${
|
boot.extraModprobeConfig = "options vfio-pci ids=${
|
||||||
builtins.concatStringsSep "," (builtins.attrNames cfg.PCIs)
|
builtins.concatStringsSep "," (builtins.attrNames cfg.PCIs)
|
||||||
|
103
modules/ezpw.nix
103
modules/ezpw.nix
@ -1,6 +1,11 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let cfg = config.services.ezpw;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.services.ezpw;
|
||||||
in {
|
in {
|
||||||
options.services.ezpw = {
|
options.services.ezpw = {
|
||||||
enable = mkEnableOption "Enable pipewire";
|
enable = mkEnableOption "Enable pipewire";
|
||||||
@ -13,8 +18,7 @@ in {
|
|||||||
|
|
||||||
usbSoundcard = mkOption {
|
usbSoundcard = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description =
|
description = "Doubles the audio rate for alsa outputs in low latency mode";
|
||||||
"Doubles the audio rate for alsa outputs in low latency mode";
|
|
||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -38,9 +42,10 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config =
|
config = let
|
||||||
let qr = "${toString cfg.quantum}/${toString cfg.rate}";
|
qr = "${toString cfg.quantum}/${toString cfg.rate}";
|
||||||
in mkIf cfg.enable {
|
in
|
||||||
|
mkIf cfg.enable {
|
||||||
hardware.pulseaudio.enable = lib.mkDefault false;
|
hardware.pulseaudio.enable = lib.mkDefault false;
|
||||||
sound.enable = lib.mkDefault false;
|
sound.enable = lib.mkDefault false;
|
||||||
|
|
||||||
@ -71,26 +76,26 @@ in {
|
|||||||
"rt.time.soft" = 200000;
|
"rt.time.soft" = 200000;
|
||||||
"rt.time.hard" = 200000;
|
"rt.time.hard" = 200000;
|
||||||
};
|
};
|
||||||
flags = [ "ifexists" "nofail" ];
|
flags = ["ifexists" "nofail"];
|
||||||
}
|
}
|
||||||
{ name = "libpipewire-module-protocol-native"; }
|
{name = "libpipewire-module-protocol-native";}
|
||||||
{ name = "libpipewire-module-profiler"; }
|
{name = "libpipewire-module-profiler";}
|
||||||
{ name = "libpipewire-module-metadata"; }
|
{name = "libpipewire-module-metadata";}
|
||||||
{ name = "libpipewire-module-spa-device-factory"; }
|
{name = "libpipewire-module-spa-device-factory";}
|
||||||
{ name = "libpipewire-module-spa-node-factory"; }
|
{name = "libpipewire-module-spa-node-factory";}
|
||||||
{ name = "libpipewire-module-client-node"; }
|
{name = "libpipewire-module-client-node";}
|
||||||
{ name = "libpipewire-module-client-device"; }
|
{name = "libpipewire-module-client-device";}
|
||||||
{
|
{
|
||||||
name = "libpipewire-module-portal";
|
name = "libpipewire-module-portal";
|
||||||
flags = [ "ifexists" "nofail" ];
|
flags = ["ifexists" "nofail"];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "libpipewire-module-access";
|
name = "libpipewire-module-access";
|
||||||
args = { };
|
args = {};
|
||||||
}
|
}
|
||||||
{ name = "libpipewire-module-adapter"; }
|
{name = "libpipewire-module-adapter";}
|
||||||
{ name = "libpipewire-module-link-factory"; }
|
{name = "libpipewire-module-link-factory";}
|
||||||
{ name = "libpipewire-module-session-manager"; }
|
{name = "libpipewire-module-session-manager";}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -104,19 +109,19 @@ in {
|
|||||||
"rt.time.soft" = 200000;
|
"rt.time.soft" = 200000;
|
||||||
"rt.time.hard" = 200000;
|
"rt.time.hard" = 200000;
|
||||||
};
|
};
|
||||||
flags = [ "ifexists" "nofail" ];
|
flags = ["ifexists" "nofail"];
|
||||||
}
|
}
|
||||||
{ name = "libpipewire-module-protocol-native"; }
|
{name = "libpipewire-module-protocol-native";}
|
||||||
{ name = "libpipewire-module-client-node"; }
|
{name = "libpipewire-module-client-node";}
|
||||||
{ name = "libpipewire-module-adapter"; }
|
{name = "libpipewire-module-adapter";}
|
||||||
{ name = "libpipewire-module-metadata"; }
|
{name = "libpipewire-module-metadata";}
|
||||||
{
|
{
|
||||||
name = "libpipewire-module-protocol-pulse";
|
name = "libpipewire-module-protocol-pulse";
|
||||||
args = {
|
args = {
|
||||||
"pulse.min.req" = qr;
|
"pulse.min.req" = qr;
|
||||||
"pulse.default.req" = qr;
|
"pulse.default.req" = qr;
|
||||||
"pulse.min.quantum" = qr;
|
"pulse.min.quantum" = qr;
|
||||||
"server.address" = [ "unix:native" ];
|
"server.address" = ["unix:native"];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@ -129,58 +134,68 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
media-session.config.alsa-monitor = mkIf cfg.lowLatency {
|
media-session.config.alsa-monitor = mkIf cfg.lowLatency {
|
||||||
rules = [{
|
rules = [
|
||||||
matches = [{ node.name = "alsa_output.*"; }];
|
{
|
||||||
|
matches = [{node.name = "alsa_output.*";}];
|
||||||
actions = {
|
actions = {
|
||||||
update-props = {
|
update-props = {
|
||||||
"audio.format" = "S32LE";
|
"audio.format" = "S32LE";
|
||||||
"audio.rate" = cfg.rate * (if cfg.usbSoundcard then 2 else 1);
|
"audio.rate" =
|
||||||
|
cfg.rate
|
||||||
|
* (
|
||||||
|
if cfg.usbSoundcard
|
||||||
|
then 2
|
||||||
|
else 1
|
||||||
|
);
|
||||||
"api.alsa.period-size" = cfg.periodSize;
|
"api.alsa.period-size" = cfg.periodSize;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
media-session.config.bluez-monitor = {
|
media-session.config.bluez-monitor = {
|
||||||
properties = {
|
properties = {
|
||||||
"bluez5.codecs" = [ "sbc" "aac" "ldac" "aptx" "aptx_hd" ];
|
"bluez5.codecs" = ["sbc" "aac" "ldac" "aptx" "aptx_hd"];
|
||||||
"bluez5.mdbc-support" = true;
|
"bluez5.mdbc-support" = true;
|
||||||
};
|
};
|
||||||
rules = [
|
rules = [
|
||||||
{
|
{
|
||||||
actions = {
|
actions = {
|
||||||
update-props = {
|
update-props = {
|
||||||
"bluez5.auto-connect" = [ "hsp_hs" "hfp_hf" "a2dp_sink" ];
|
"bluez5.auto-connect" = ["hsp_hs" "hfp_hf" "a2dp_sink"];
|
||||||
"bluez5.hw-volume" =
|
"bluez5.hw-volume" = ["hsp_ag" "hfp_ag" "a2dp_source" "a2dp_sink"];
|
||||||
[ "hsp_ag" "hfp_ag" "a2dp_source" "a2dp_sink" ];
|
|
||||||
"bluez5.autoswitch-profile" = true;
|
"bluez5.autoswitch-profile" = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
matches = [{ "device.name" = "~bluez_card.*"; }];
|
matches = [{"device.name" = "~bluez_card.*";}];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
actions = { update-props = { "node.pause-on-idle" = false; }; };
|
actions = {update-props = {"node.pause-on-idle" = false;};};
|
||||||
matches = [
|
matches = [
|
||||||
{ "node.name" = "~bluez_input.*"; }
|
{"node.name" = "~bluez_input.*";}
|
||||||
{ "node.name" = "~bluez_output.*"; }
|
{"node.name" = "~bluez_output.*";}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs;
|
environment.systemPackages = with pkgs; [
|
||||||
[
|
|
||||||
# pactl is required for pipewire-pulse
|
# pactl is required for pipewire-pulse
|
||||||
pulseaudio
|
pulseaudio
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.etc."wireplumber/main.lua.d/51-alsa-config.lua" =
|
environment.etc."wireplumber/main.lua.d/51-alsa-config.lua" = mkIf cfg.lowLatency {
|
||||||
mkIf cfg.lowLatency {
|
|
||||||
text = ''
|
text = ''
|
||||||
alsa_monitor.properties = {
|
alsa_monitor.properties = {
|
||||||
["audio.rate"] = ${
|
["audio.rate"] = ${
|
||||||
toString (cfg.rate * (if cfg.usbSoundcard then 2 else 1))
|
toString (cfg.rate
|
||||||
|
* (
|
||||||
|
if cfg.usbSoundcard
|
||||||
|
then 2
|
||||||
|
else 1
|
||||||
|
))
|
||||||
},
|
},
|
||||||
["audio.format"] = "S32LE",
|
["audio.format"] = "S32LE",
|
||||||
["api.alsa.headroom"] = 512,
|
["api.alsa.headroom"] = 512,
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.services.ezwg;
|
cfg = config.services.ezwg;
|
||||||
|
|
||||||
peerNameReplacement = lib.replaceChars [ "/" "-" " " "+" "=" ] [
|
peerNameReplacement = lib.replaceChars ["/" "-" " " "+" "="] [
|
||||||
"-"
|
"-"
|
||||||
"\\x2d"
|
"\\x2d"
|
||||||
"\\x20"
|
"\\x20"
|
||||||
@ -11,10 +15,8 @@ let
|
|||||||
"\\x3d"
|
"\\x3d"
|
||||||
];
|
];
|
||||||
|
|
||||||
ranges = serverIPs:
|
ranges = serverIPs: let
|
||||||
let
|
generateRangesScript = builtins.toFile "exclusionary-wildcard-ranges-generator.py" ''
|
||||||
generateRangesScript =
|
|
||||||
builtins.toFile "exclusionary-wildcard-ranges-generator.py" ''
|
|
||||||
import ipaddress
|
import ipaddress
|
||||||
serverNetworks = [${map (ip: "ip_network('${ip}/32')") serverIPs}]
|
serverNetworks = [${map (ip: "ip_network('${ip}/32')") serverIPs}]
|
||||||
ranges = [ipaddress.ip_network('0.0.0.0/0')]
|
ranges = [ipaddress.ip_network('0.0.0.0/0')]
|
||||||
@ -22,21 +24,19 @@ let
|
|||||||
ranges = map(lambda r: list(r.address_exclude(serverNetwork)), ranges)
|
ranges = map(lambda r: list(r.address_exclude(serverNetwork)), ranges)
|
||||||
print(':'.join(ranges))
|
print(':'.join(ranges))
|
||||||
'';
|
'';
|
||||||
rangesOutput = pkgs.runCommand "exclusionary-wildcard-ranges" { } ''
|
rangesOutput = pkgs.runCommand "exclusionary-wildcard-ranges" {} ''
|
||||||
${pkgs.python3}/bin/python3 ${generateRangesScript} > $out
|
${pkgs.python3}/bin/python3 ${generateRangesScript} > $out
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
lib.splitString ":" (builtins.readFile "${rangesOutput}");
|
lib.splitString ":" (builtins.readFile "${rangesOutput}");
|
||||||
|
|
||||||
subnet = vlanIP: vlanSize:
|
subnet = vlanIP: vlanSize: let
|
||||||
let
|
generateSubnetScript = builtins.toFile "subnet-without-host-bits-generator.py" ''
|
||||||
generateSubnetScript =
|
|
||||||
builtins.toFile "subnet-without-host-bits-generator.py" ''
|
|
||||||
import ipaddress
|
import ipaddress
|
||||||
n1 = ipaddress.ip_network('${vlanIP}/${toString vlanSize}', False)
|
n1 = ipaddress.ip_network('${vlanIP}/${toString vlanSize}', False)
|
||||||
print(n1, end="")
|
print(n1, end="")
|
||||||
'';
|
'';
|
||||||
subnetOutput = pkgs.runCommand "subnet-without-host-bits" { } ''
|
subnetOutput = pkgs.runCommand "subnet-without-host-bits" {} ''
|
||||||
${pkgs.python3}/bin/python3 ${generateSubnetScript} > $out
|
${pkgs.python3}/bin/python3 ${generateSubnetScript} > $out
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
@ -61,7 +61,7 @@ let
|
|||||||
instanceOpts.options = {
|
instanceOpts.options = {
|
||||||
servers = mkOption {
|
servers = mkOption {
|
||||||
description = "Configuration of servers to connect to";
|
description = "Configuration of servers to connect to";
|
||||||
default = { };
|
default = {};
|
||||||
type = with types; listOf (submodule serverOpts);
|
type = with types; listOf (submodule serverOpts);
|
||||||
};
|
};
|
||||||
autoStart = mkOption {
|
autoStart = mkOption {
|
||||||
@ -88,13 +88,12 @@ let
|
|||||||
description = "The IP to use on the wg VLAN";
|
description = "The IP to use on the wg VLAN";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.services.ezwg = {
|
options.services.ezwg = {
|
||||||
enable = mkEnableOption "Enable simple Wireguard connection";
|
enable = mkEnableOption "Enable simple Wireguard connection";
|
||||||
instances = mkOption {
|
instances = mkOption {
|
||||||
description = "Configuration of instances of Wireguard";
|
description = "Configuration of instances of Wireguard";
|
||||||
default = { };
|
default = {};
|
||||||
type = with types; attrsOf (submodule instanceOpts);
|
type = with types; attrsOf (submodule instanceOpts);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -102,40 +101,51 @@ in
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
networking.firewall.checkReversePath = false;
|
networking.firewall.checkReversePath = false;
|
||||||
|
|
||||||
systemd.paths = mapAttrs'
|
systemd.paths =
|
||||||
|
mapAttrs'
|
||||||
(instName: inst: {
|
(instName: inst: {
|
||||||
name = "wireguard-${instName}";
|
name = "wireguard-${instName}";
|
||||||
value = if inst.autoStart then { } else { wantedBy = mkForce [ ]; };
|
value =
|
||||||
|
if inst.autoStart
|
||||||
|
then {}
|
||||||
|
else {wantedBy = mkForce [];};
|
||||||
})
|
})
|
||||||
cfg.instances;
|
cfg.instances;
|
||||||
|
|
||||||
systemd.services = lib.listToAttrs (flatten (mapAttrsToList
|
systemd.services = lib.listToAttrs (flatten (mapAttrsToList
|
||||||
(instName: inst:
|
(instName: inst:
|
||||||
[{
|
[
|
||||||
|
{
|
||||||
name = "wireguard-${instName}";
|
name = "wireguard-${instName}";
|
||||||
value = if inst.autoStart then { } else { wantedBy = mkForce [ ]; };
|
value =
|
||||||
}] ++ map
|
if inst.autoStart
|
||||||
|
then {}
|
||||||
|
else {wantedBy = mkForce [];};
|
||||||
|
}
|
||||||
|
]
|
||||||
|
++ map
|
||||||
(server: {
|
(server: {
|
||||||
name =
|
name = "wireguard-${instName}-peer${peerNameReplacement server.publicKey}";
|
||||||
"wireguard-${instName}-peer${peerNameReplacement server.publicKey}";
|
value =
|
||||||
value = if inst.autoStart then { } else { wantedBy = mkForce [ ]; };
|
if inst.autoStart
|
||||||
|
then {}
|
||||||
|
else {wantedBy = mkForce [];};
|
||||||
})
|
})
|
||||||
inst.servers)
|
inst.servers)
|
||||||
cfg.instances));
|
cfg.instances));
|
||||||
|
|
||||||
networking.wireguard.interfaces = mapAttrs
|
networking.wireguard.interfaces =
|
||||||
(instName: inst:
|
mapAttrs
|
||||||
let
|
(instName: inst: let
|
||||||
allowedIPs =
|
allowedIPs =
|
||||||
if inst.proxy then
|
if inst.proxy
|
||||||
ranges (map (s: s.ip) inst.servers)
|
then ranges (map (s: s.ip) inst.servers)
|
||||||
else
|
else [(subnet inst.vlanIP inst.vlanSize)];
|
||||||
[ (subnet inst.vlanIP inst.vlanSize) ];
|
in {
|
||||||
in
|
ips = ["${inst.vlanIP}/${toString inst.vlanSize}"];
|
||||||
{
|
|
||||||
ips = [ "${inst.vlanIP}/${toString inst.vlanSize}" ];
|
|
||||||
privateKeyFile = inst.privateKeyFile;
|
privateKeyFile = inst.privateKeyFile;
|
||||||
peers = map
|
peers =
|
||||||
|
map
|
||||||
(server: {
|
(server: {
|
||||||
inherit allowedIPs;
|
inherit allowedIPs;
|
||||||
publicKey = server.publicKey;
|
publicKey = server.publicKey;
|
||||||
@ -145,6 +155,5 @@ in
|
|||||||
inst.servers;
|
inst.servers;
|
||||||
})
|
})
|
||||||
cfg.instances;
|
cfg.instances;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,23 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
cfg = config.fuckingprint;
|
cfg = config.fuckingprint;
|
||||||
|
|
||||||
fixPlatforms = p:
|
fixPlatforms = p:
|
||||||
p.overrideAttrs (super:
|
p.overrideAttrs (super:
|
||||||
super // {
|
super
|
||||||
meta = super.meta // {
|
// {
|
||||||
platforms = super.meta.platforms ++ [ "x86_64-linux" ];
|
meta =
|
||||||
|
super.meta
|
||||||
|
// {
|
||||||
|
platforms = super.meta.platforms ++ ["x86_64-linux"];
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
options.fuckingprint.enable = mkEnableOption "Make my fucking printer work";
|
options.fuckingprint.enable = mkEnableOption "Make my fucking printer work";
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
@ -101,6 +107,6 @@ in
|
|||||||
hplipWithPlugin
|
hplipWithPlugin
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
services.udev.packages = [ pkgs.utsushi ];
|
services.udev.packages = [pkgs.utsushi];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let cfg = config.services.kiosk;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.services.kiosk;
|
||||||
in {
|
in {
|
||||||
options.services.kiosk = {
|
options.services.kiosk = {
|
||||||
enable = mkEnableOption "Enable simple kiosk display";
|
enable = mkEnableOption "Enable simple kiosk display";
|
||||||
@ -60,10 +65,14 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
displayManager.xserverArgs = if cfg.cursor then [ ] else [ "-nocursor" ];
|
displayManager.xserverArgs =
|
||||||
|
if cfg.cursor
|
||||||
|
then []
|
||||||
|
else ["-nocursor"];
|
||||||
displayManager.defaultSession = "kiosk+ratpoison";
|
displayManager.defaultSession = "kiosk+ratpoison";
|
||||||
|
|
||||||
desktopManager.session = [{
|
desktopManager.session = [
|
||||||
|
{
|
||||||
name = "kiosk";
|
name = "kiosk";
|
||||||
start = ''
|
start = ''
|
||||||
# dont blank the screen after 5min
|
# dont blank the screen after 5min
|
||||||
@ -74,7 +83,8 @@ in {
|
|||||||
|
|
||||||
${cfg.session}
|
${cfg.session}
|
||||||
'';
|
'';
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
with lib;
|
config,
|
||||||
let cfg = config.workstation;
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib; let
|
||||||
|
cfg = config.workstation;
|
||||||
in {
|
in {
|
||||||
options.workstation = {
|
options.workstation = {
|
||||||
enable = mkEnableOption "make my computer work";
|
enable = mkEnableOption "make my computer work";
|
||||||
@ -105,7 +110,7 @@ in {
|
|||||||
# Optimizes running games
|
# Optimizes running games
|
||||||
programs.gamemode = {
|
programs.gamemode = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
settings = { general.renice = 10; };
|
settings = {general.renice = 10;};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Allows realtime stuff, useful for games, audio etc
|
# Allows realtime stuff, useful for games, audio etc
|
||||||
@ -175,14 +180,18 @@ in {
|
|||||||
"lp"
|
"lp"
|
||||||
];
|
];
|
||||||
|
|
||||||
subUidRanges = [{
|
subUidRanges = [
|
||||||
|
{
|
||||||
startUid = 100000;
|
startUid = 100000;
|
||||||
count = 65536;
|
count = 65536;
|
||||||
}];
|
}
|
||||||
subGidRanges = [{
|
];
|
||||||
|
subGidRanges = [
|
||||||
|
{
|
||||||
startGid = 100000;
|
startGid = 100000;
|
||||||
count = 65536;
|
count = 65536;
|
||||||
}];
|
}
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# brightness
|
# brightness
|
||||||
@ -258,7 +267,7 @@ in {
|
|||||||
|
|
||||||
# Shit breaks without this lol
|
# Shit breaks without this lol
|
||||||
programs.dconf.enable = lib.mkDefault true;
|
programs.dconf.enable = lib.mkDefault true;
|
||||||
services.dbus.packages = with pkgs; [ dconf ];
|
services.dbus.packages = with pkgs; [dconf];
|
||||||
|
|
||||||
boot.kernel.sysctl = {
|
boot.kernel.sysctl = {
|
||||||
# better default swap
|
# better default swap
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
users.users.chekkie = {
|
users.users.chekkie = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
useDefaultShell = true;
|
useDefaultShell = true;
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
# config for me
|
# config for me
|
||||||
users.users.glooder = {
|
users.users.glooder = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
{ config, pkgs, lib, ... }:
|
|
||||||
|
|
||||||
{
|
{
|
||||||
nix.trustedUsers = [ "notgne2" ];
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
nix.trustedUsers = ["notgne2"];
|
||||||
|
|
||||||
users.users.notgne2 = {
|
users.users.notgne2 = {
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user