mass reformat
This commit is contained in:
		
							parent
							
								
									ed1c53e94c
								
							
						
					
					
						commit
						9cb456ad60
					
				
					 25 changed files with 1216 additions and 1043 deletions
				
			
		| 
						 | 
					@ -1,6 +1,10 @@
 | 
				
			||||||
{ config, pkgs, lib, options, ... }:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  options,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}: {
 | 
				
			||||||
  imports = [./modules];
 | 
					  imports = [./modules];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  config = {
 | 
					  config = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,7 +1,9 @@
 | 
				
			||||||
inputs:
 | 
					inputs: {
 | 
				
			||||||
{ config, lib, pkgs, ... }:
 | 
					  config,
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
{
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}: {
 | 
				
			||||||
  imports = [(import ./modules inputs)];
 | 
					  imports = [(import ./modules inputs)];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  programs.direnv = {
 | 
					  programs.direnv = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,8 +143,7 @@ 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
 | 
				
			||||||
| 
						 | 
					@ -246,9 +263,13 @@ in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    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,8 +338,7 @@ 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";
 | 
				
			||||||
| 
						 | 
					@ -326,8 +346,7 @@ in
 | 
				
			||||||
                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";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,7 +42,12 @@ in
 | 
				
			||||||
    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 = {
 | 
				
			||||||
| 
						 | 
					@ -158,15 +173,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.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?
 | 
				
			||||||
| 
						 | 
					@ -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,8 +356,7 @@ 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}"])
 | 
				
			||||||
| 
						 | 
					@ -336,7 +364,8 @@ in
 | 
				
			||||||
          ])
 | 
					          ])
 | 
				
			||||||
          (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"];
 | 
					          minimize = ["<Super>comma"];
 | 
				
			||||||
          maximize = [""];
 | 
					          maximize = [""];
 | 
				
			||||||
          unmaximize = [""];
 | 
					          unmaximize = [""];
 | 
				
			||||||
| 
						 | 
					@ -380,7 +409,9 @@ in
 | 
				
			||||||
      "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" =
 | 
				
			||||||
 | 
					        lib.listToAttrs (map (n: lib.nameValuePair "switch-to-application-${toString n}" [""]) (lib.range 1 9))
 | 
				
			||||||
 | 
					        // {
 | 
				
			||||||
          open-application-menu = [""];
 | 
					          open-application-menu = [""];
 | 
				
			||||||
          toggle-message-tray = ["<Super>v"];
 | 
					          toggle-message-tray = ["<Super>v"];
 | 
				
			||||||
          toggle-overview = [""];
 | 
					          toggle-overview = [""];
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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";
 | 
				
			||||||
          };
 | 
					          };
 | 
				
			||||||
| 
						 | 
					@ -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,7 +1,9 @@
 | 
				
			||||||
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"])
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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 {
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					@ -232,26 +236,39 @@ 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}";
 | 
				
			||||||
| 
						 | 
					@ -497,8 +501,8 @@ in
 | 
				
			||||||
                spacing = 5;
 | 
					                spacing = 5;
 | 
				
			||||||
              };
 | 
					              };
 | 
				
			||||||
            };
 | 
					            };
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
        } // cfg.waybarConfig)
 | 
					          // cfg.waybarConfig)
 | 
				
			||||||
      ];
 | 
					      ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      style = ''
 | 
					      style = ''
 | 
				
			||||||
| 
						 | 
					@ -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,7 +68,8 @@ in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          tuxpaint
 | 
					          tuxpaint
 | 
				
			||||||
          extremetuxracer
 | 
					          extremetuxracer
 | 
				
			||||||
      ] ++ lib.optionals cfg.newWine [
 | 
					        ]
 | 
				
			||||||
 | 
					        ++ lib.optionals cfg.newWine [
 | 
				
			||||||
          (
 | 
					          (
 | 
				
			||||||
            pkgs.runCommand "new-wine-stuff"
 | 
					            pkgs.runCommand "new-wine-stuff"
 | 
				
			||||||
            {} ''
 | 
					            {} ''
 | 
				
			||||||
| 
						 | 
					@ -73,7 +79,8 @@ in
 | 
				
			||||||
              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 = {
 | 
				
			||||||
| 
						 | 
					@ -101,8 +108,7 @@ in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,11 @@
 | 
				
			||||||
{ 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 🐸";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,4 +1,9 @@
 | 
				
			||||||
{ 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,6 +1,9 @@
 | 
				
			||||||
{ 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; [
 | 
				
			||||||
| 
						 | 
					@ -79,7 +79,8 @@ in
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      "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";
 | 
				
			||||||
| 
						 | 
					@ -181,7 +183,8 @@ in
 | 
				
			||||||
          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 = ''
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,6 +1,11 @@
 | 
				
			||||||
{ 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";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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 {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -129,16 +134,24 @@ 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 = {
 | 
				
			||||||
| 
						 | 
					@ -151,8 +164,7 @@ in {
 | 
				
			||||||
              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;
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
              };
 | 
					              };
 | 
				
			||||||
| 
						 | 
					@ -169,18 +181,21 @@ in {
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      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,6 +1,10 @@
 | 
				
			||||||
{ 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 ["/" "-" " " "+" "="] [
 | 
				
			||||||
| 
						 | 
					@ -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')]
 | 
				
			||||||
| 
						 | 
					@ -28,10 +30,8 @@ let
 | 
				
			||||||
  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="")
 | 
				
			||||||
| 
						 | 
					@ -88,8 +88,7 @@ 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 {
 | 
				
			||||||
| 
						 | 
					@ -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 // {
 | 
					      // {
 | 
				
			||||||
 | 
					        meta =
 | 
				
			||||||
 | 
					          super.meta
 | 
				
			||||||
 | 
					          // {
 | 
				
			||||||
            platforms = super.meta.platforms ++ ["x86_64-linux"];
 | 
					            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 {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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";
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,6 +1,9 @@
 | 
				
			||||||
{ config, pkgs, lib, ... }:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  config,
 | 
				
			||||||
 | 
					  pkgs,
 | 
				
			||||||
 | 
					  lib,
 | 
				
			||||||
 | 
					  ...
 | 
				
			||||||
 | 
					}: {
 | 
				
			||||||
  nix.trustedUsers = ["notgne2"];
 | 
					  nix.trustedUsers = ["notgne2"];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  users.users.notgne2 = {
 | 
					  users.users.notgne2 = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue