chore: refactor user modules
This commit is contained in:
		
							parent
							
								
									15a39660eb
								
							
						
					
					
						commit
						f396b3a8fb
					
				
							
								
								
									
										12
									
								
								flake.nix
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								flake.nix
									
									
									
									
									
								
							@ -88,10 +88,9 @@
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
 | 
			
		||||
        extraSpecialArgs = {
 | 
			
		||||
          inherit inputs outputs;
 | 
			
		||||
          home-conf = "minimal";
 | 
			
		||||
        };
 | 
			
		||||
        modules = [
 | 
			
		||||
          ./users/phundrak/alys.nix
 | 
			
		||||
          ./users/phundrak/host/alys.nix
 | 
			
		||||
          inputs.sops-nix.homeManagerModules.sops
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
@ -99,10 +98,9 @@
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
 | 
			
		||||
        extraSpecialArgs = {
 | 
			
		||||
          inherit inputs outputs;
 | 
			
		||||
          home-conf = "fullHome";
 | 
			
		||||
        };
 | 
			
		||||
        modules = [
 | 
			
		||||
          ./users/phundrak/marpa.nix
 | 
			
		||||
          ./users/phundrak/host/marpa.nix
 | 
			
		||||
          inputs.sops-nix.homeManagerModules.sops
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
@ -110,10 +108,9 @@
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
 | 
			
		||||
        extraSpecialArgs = {
 | 
			
		||||
          inherit inputs outputs;
 | 
			
		||||
          home-conf = "fullHome";
 | 
			
		||||
        };
 | 
			
		||||
        modules = [
 | 
			
		||||
          ./users/phundrak/gampo.nix
 | 
			
		||||
          ./users/phundrak/host/gampo.nix
 | 
			
		||||
          inputs.sops-nix.homeManagerModules.sops
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
@ -121,10 +118,9 @@
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.x86_64-linux;
 | 
			
		||||
        extraSpecialArgs = {
 | 
			
		||||
          inherit inputs outputs;
 | 
			
		||||
          home-conf = "minimal";
 | 
			
		||||
        };
 | 
			
		||||
        modules = [
 | 
			
		||||
          ./users/phundrak/tilo.nix
 | 
			
		||||
          ./users/phundrak/host/tilo.nix
 | 
			
		||||
          inputs.sops-nix.homeManagerModules.sops
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
@ -23,7 +23,7 @@ in {
 | 
			
		||||
        description = "Lucien Cartier-Tilet";
 | 
			
		||||
        extraGroups = ["networkmanager" "wheel" "docker" "dialout" "podman"];
 | 
			
		||||
        shell = pkgs.zsh;
 | 
			
		||||
        openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ./keys;
 | 
			
		||||
        openssh.authorizedKeys.keyFiles = lib.filesystem.listFilesRecursive ../../keys;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    programs.zsh.enable = true;
 | 
			
		||||
 | 
			
		||||
@ -5,9 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.bat;
 | 
			
		||||
  cfg = config.home.cli.bat;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.bat.extras = mkEnableOption "Enables extra packages for bat.";
 | 
			
		||||
  options.home.cli.bat.extras = mkEnableOption "Enables extra packages for bat.";
 | 
			
		||||
  config.programs.bat = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    config = {
 | 
			
		||||
							
								
								
									
										29
									
								
								users/modules/cli/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								users/modules/cli/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.cli;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./bat.nix
 | 
			
		||||
    ./btop.nix
 | 
			
		||||
    ./direnv.nix
 | 
			
		||||
    ./eza.nix
 | 
			
		||||
    ./mu.nix
 | 
			
		||||
    ./nh.nix
 | 
			
		||||
    ./nix-index.nix
 | 
			
		||||
    ./scripts
 | 
			
		||||
    ./tealdeer.nix
 | 
			
		||||
    ./yt-dlp.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.home.cli.fullDesktop = mkEnableOption "Enable all optional modules and options";
 | 
			
		||||
  config.home.cli = {
 | 
			
		||||
    bat.extras = mkDefault cfg.fullDesktop;
 | 
			
		||||
    mu.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    scripts.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    yt-dlp.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								users/modules/cli/mu.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								users/modules/cli/mu.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.cli.mu;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.cli.mu.enable = mkEnableOption "Enable mu";
 | 
			
		||||
  config.programs.mu.enable = cfg.enable;
 | 
			
		||||
}
 | 
			
		||||
@ -4,9 +4,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.nh;
 | 
			
		||||
  cfg = config.home.cli.nh;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.nh.flake = mkOption {
 | 
			
		||||
  options.home.cli.nh.flake = mkOption {
 | 
			
		||||
    type = types.path;
 | 
			
		||||
    default = "/home/phundrak/.dotfiles";
 | 
			
		||||
    example = "/etc/nixos";
 | 
			
		||||
							
								
								
									
										10
									
								
								users/modules/cli/nix-index.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								users/modules/cli/nix-index.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
{inputs, ...}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    inputs.nix-index-database.homeModules.nix-index
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  programs = {
 | 
			
		||||
    nix-index.enable = true;
 | 
			
		||||
    nix-index-database.comma.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								users/modules/cli/scripts/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								users/modules/cli/scripts/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,15 @@
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.cli.scripts;
 | 
			
		||||
  files = filesystem.listFilesRecursive ./.;
 | 
			
		||||
  scriptFiles = builtins.filter (path: baseNameOf path != "default.nix") files;
 | 
			
		||||
  scripts = map (file: (import file {inherit pkgs config;})) scriptFiles;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.cli.scripts.enable = mkEnableOption "Add custom scripts to PATH";
 | 
			
		||||
  config.home.packages = mkIf cfg.enable scripts;
 | 
			
		||||
}
 | 
			
		||||
@ -1,10 +1,10 @@
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  emacsPackage,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
pkgs.writeShellScriptBin "launch-with-emacsclient" ''
 | 
			
		||||
  filename="$1"
 | 
			
		||||
  line="$2"
 | 
			
		||||
  column="$3"
 | 
			
		||||
  ${emacsPackage}/bin/emacsclient +$line:$column "$filename"''
 | 
			
		||||
  ${config.home.dev.editors.emacs.package}/bin/emacsclient +$line:$column "$filename"''
 | 
			
		||||
							
								
								
									
										18
									
								
								users/modules/cli/yt-dlp.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								users/modules/cli/yt-dlp.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.cli.yt-dlp;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.cli.yt-dlp.enable = mkEnableOption "Enable yt-dlp";
 | 
			
		||||
  config.programs.yt-dlp = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    settings = {
 | 
			
		||||
      embed-thumbnail = true;
 | 
			
		||||
      embed-subs = true;
 | 
			
		||||
      sub-langs = "all";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,17 +1,29 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./basics.nix
 | 
			
		||||
    ./bat.nix
 | 
			
		||||
    ./btop.nix
 | 
			
		||||
    ./direnv.nix
 | 
			
		||||
    ./eza.nix
 | 
			
		||||
    ./gpg.nix
 | 
			
		||||
    ./mopidy.nix
 | 
			
		||||
    ./nh.nix
 | 
			
		||||
    ./nix-index.nix
 | 
			
		||||
    ./cli
 | 
			
		||||
    ./desktop
 | 
			
		||||
    ./dev
 | 
			
		||||
    ./media
 | 
			
		||||
    ./services
 | 
			
		||||
    ./security
 | 
			
		||||
    ./shell
 | 
			
		||||
    ./ssh.nix
 | 
			
		||||
    ./tealdeer.nix
 | 
			
		||||
    ./vcs
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.home.fullDesktop = mkEnableOption "Enable most modules";
 | 
			
		||||
  config.home = {
 | 
			
		||||
    cli.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
    desktop.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
    dev.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
    media.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
    security.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
    services.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								users/modules/desktop/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								users/modules/desktop/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.desktop;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./emoji.nix
 | 
			
		||||
    ./eww.nix
 | 
			
		||||
    ./hyprland.nix
 | 
			
		||||
    ./kdeconnect.nix
 | 
			
		||||
    ./kitty.nix
 | 
			
		||||
    ./obs.nix
 | 
			
		||||
    ./qt.nix
 | 
			
		||||
    ./swaync.nix
 | 
			
		||||
    ./waybar.nix
 | 
			
		||||
    ./wlsunset.nix
 | 
			
		||||
    ./wofi.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.home.desktop.fullDesktop = mkEnableOption "Enable options for graphical environments";
 | 
			
		||||
  config.home.desktop = {
 | 
			
		||||
    eww.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    hyprland.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    kdeconnect.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    kitty.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    obs.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    qt.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								users/modules/desktop/eww.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								users/modules/desktop/eww.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.desktop.eww;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.desktop.eww.enable = mkEnableOption "Enable eww support";
 | 
			
		||||
  config.programs.eww = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    configDir = ./eww-config;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -5,8 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.hyprland;
 | 
			
		||||
  rofi-emoji = import ../scripts/rofi-emoji.nix {inherit pkgs;};
 | 
			
		||||
  cfg = config.home.desktop.hyprland;
 | 
			
		||||
  rofi-emoji = import ../cli/scripts/rofi-emoji.nix {inherit pkgs;};
 | 
			
		||||
  laptops = ["gampo"];
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./swaync.nix
 | 
			
		||||
@ -14,33 +15,34 @@ in {
 | 
			
		||||
    ./wlsunset.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.modules.hyprland = {
 | 
			
		||||
  options.home.desktop.hyprland = {
 | 
			
		||||
    enable = mkEnableOption "Enables Hyprland";
 | 
			
		||||
    swaync = mkEnableOption "Enables swaync";
 | 
			
		||||
    emacsPkg = mkOption {
 | 
			
		||||
      type = types.package;
 | 
			
		||||
      default = pkgs.emacs;
 | 
			
		||||
      default = config.home.dev.editors.emacs.package or pkgs.emacs;
 | 
			
		||||
      # default = pkgs.emacs;
 | 
			
		||||
      example = pkgs.emacs;
 | 
			
		||||
    };
 | 
			
		||||
    host = mkOption {
 | 
			
		||||
      type = types.enum ["tilo" "gampo"];
 | 
			
		||||
      default = "tilo";
 | 
			
		||||
      type = types.enum ["gampo" "marpa"];
 | 
			
		||||
      description = ''
 | 
			
		||||
        Which host is Hyprland running on.
 | 
			
		||||
 | 
			
		||||
        This helps determine the monitors layout.
 | 
			
		||||
        This helps determine the monitors layout and enable battery support in waybar.
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    waybar = {
 | 
			
		||||
      enable = mkEnableOption "Enables waybar.";
 | 
			
		||||
      battery = mkEnableOption "Enables battery support.";
 | 
			
		||||
      style = mkOption {
 | 
			
		||||
        type = types.path;
 | 
			
		||||
        example = ./style.css;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
    home.desktop = {
 | 
			
		||||
      swaync.enable = mkDefault true;
 | 
			
		||||
      waybar = {
 | 
			
		||||
        enable = mkDefault true;
 | 
			
		||||
        battery = mkDefault (builtins.elem cfg.host laptops);
 | 
			
		||||
      };
 | 
			
		||||
      wlsunset.enable = mkDefault true;
 | 
			
		||||
      wofi.enable = mkDefault true;
 | 
			
		||||
    };
 | 
			
		||||
    wayland.windowManager.hyprland = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      xwayland.enable = true;
 | 
			
		||||
@ -58,7 +60,7 @@ in {
 | 
			
		||||
        };
 | 
			
		||||
        monitor =
 | 
			
		||||
          {
 | 
			
		||||
            "tilo" = [
 | 
			
		||||
            "marpa" = [
 | 
			
		||||
              "DP-1, 3440x1440@144, 1080x550, 1"
 | 
			
		||||
              "DP-2, 2560x1080@60, 0x0, 1, transform, 1"
 | 
			
		||||
            ];
 | 
			
		||||
@ -286,12 +288,5 @@ in {
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    modules = {
 | 
			
		||||
      swaync.enable = cfg.swaync;
 | 
			
		||||
      waybar = mkIf cfg.waybar.enable {
 | 
			
		||||
        inherit (cfg.waybar) enable battery style;
 | 
			
		||||
      };
 | 
			
		||||
      wlsunset.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								users/modules/desktop/kdeconnect.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								users/modules/desktop/kdeconnect.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.desktop.kdeconnect;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.desktop.kdeconnect.enable = mkEnableOption "Enable KDE Connect";
 | 
			
		||||
  config.services.kdeconnect = mkIf cfg.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    indicator = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,6 +1,15 @@
 | 
			
		||||
{pkgs, ...}: {
 | 
			
		||||
  programs.kitty = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.desktop.kitty;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.desktop.kitty.enable = mkEnableOption "Enable kitty terminal";
 | 
			
		||||
  config.programs.kitty = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    themeFile = "Nord";
 | 
			
		||||
    font = {
 | 
			
		||||
      package = pkgs.cascadia-code;
 | 
			
		||||
							
								
								
									
										23
									
								
								users/modules/desktop/obs.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								users/modules/desktop/obs.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.desktop.obs;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.desktop.obs.enable = mkEnableOption "Enables OBS Studio";
 | 
			
		||||
  config.programs.obs-studio = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    plugins = with pkgs.obs-studio-plugins; [
 | 
			
		||||
      input-overlay
 | 
			
		||||
      obs-backgroundremoval
 | 
			
		||||
      obs-mute-filter
 | 
			
		||||
      obs-pipewire-audio-capture
 | 
			
		||||
      obs-source-clone
 | 
			
		||||
      obs-source-record
 | 
			
		||||
      obs-tuna
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								users/modules/desktop/qt.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								users/modules/desktop/qt.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.desktop.qt;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.desktop.qt.enable = mkEnableOption "Enable Qt support";
 | 
			
		||||
  config.qt.enable = cfg.enable;
 | 
			
		||||
}
 | 
			
		||||
@ -5,12 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.swaync;
 | 
			
		||||
  cfg = config.home.desktop.swaync;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.swaync = {
 | 
			
		||||
    enable = mkEnableOption "Enables swaync";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  options.home.desktop.swaync.enable = mkEnableOption "Enables swaync";
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
    services.swaync.enable = true;
 | 
			
		||||
    home.packages = [pkgs.swaynotificationcenter];
 | 
			
		||||
@ -4,9 +4,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.waybar;
 | 
			
		||||
  cfg = config.home.desktop.waybar;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.waybar = {
 | 
			
		||||
  options.home.desktop.waybar = {
 | 
			
		||||
    enable = mkEnableOption "Enables waybar.";
 | 
			
		||||
    battery = mkEnableOption "Enables battery support.";
 | 
			
		||||
    style = mkOption {
 | 
			
		||||
@ -4,9 +4,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.wlsunset;
 | 
			
		||||
  cfg = config.home.desktop.wlsunset;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.wlsunset = {
 | 
			
		||||
  options.home.desktop.wlsunset = {
 | 
			
		||||
    enable = mkEnableOption "Enables wlsunset";
 | 
			
		||||
    latitude = mkOption {
 | 
			
		||||
      type = with types; nullOr (oneOf [str ints.unsigned float]);
 | 
			
		||||
@ -1,10 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  programs.wofi = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.desktop.wofi;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.desktop.wofi.enable = mkEnableOption "Enable wofi support";
 | 
			
		||||
  config.programs.wofi = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    settings = {
 | 
			
		||||
      modi = "ssh,drun,combi";
 | 
			
		||||
      sidebar-mode = false;
 | 
			
		||||
      width = 30;
 | 
			
		||||
      width = 50;
 | 
			
		||||
      line-margin = 10;
 | 
			
		||||
      lines = 6;
 | 
			
		||||
      columns = 2;
 | 
			
		||||
							
								
								
									
										20
									
								
								users/modules/dev/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								users/modules/dev/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.dev;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./editors
 | 
			
		||||
    ./ollama.nix
 | 
			
		||||
    ./vcs
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.home.dev.fullDesktop = mkEnableOption "Enables everything except AI";
 | 
			
		||||
  config.home.dev = {
 | 
			
		||||
    vcs.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
    editors.fullDesktop = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								users/modules/dev/editors/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								users/modules/dev/editors/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,20 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.dev.editors;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./emacs.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.home.dev.editors.fullDesktop = mkEnableOption "Enable all editors";
 | 
			
		||||
  config.home.dev.editors.emacs = {
 | 
			
		||||
    enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    service = mkDefault cfg.fullDesktop;
 | 
			
		||||
    mu4eMime = mkDefault cfg.fullDesktop;
 | 
			
		||||
    org-protocol = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -11,9 +11,9 @@ with lib; let
 | 
			
		||||
      epkgs.pdf-tools
 | 
			
		||||
    ]
 | 
			
		||||
  ));
 | 
			
		||||
  cfg = config.modules.emacs;
 | 
			
		||||
  cfg = config.home.dev.editors.emacs;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.emacs = {
 | 
			
		||||
  options.home.dev.editors.emacs = {
 | 
			
		||||
    enable = mkEnableOption "enables Emacs";
 | 
			
		||||
    package = mkOption {
 | 
			
		||||
      type = types.package;
 | 
			
		||||
@ -25,6 +25,7 @@ in {
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    home.packages = [pkgs.emacs-all-the-icons-fonts];
 | 
			
		||||
    programs.emacs = mkIf cfg.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      inherit (cfg) package;
 | 
			
		||||
@ -4,9 +4,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.ollama;
 | 
			
		||||
  cfg = config.home.dev.ollama;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.ollama = {
 | 
			
		||||
  options.home.dev.ollama = {
 | 
			
		||||
    enable = mkEnableOption "Enables Ollama";
 | 
			
		||||
    gpu = mkOption {
 | 
			
		||||
      type = types.nullOr types.enum ["none" "amd" "nvidia"];
 | 
			
		||||
							
								
								
									
										53
									
								
								users/modules/dev/vcs/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								users/modules/dev/vcs/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.dev.vcs;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [./git.nix ./jujutsu.nix];
 | 
			
		||||
 | 
			
		||||
  options.home.dev.vcs = {
 | 
			
		||||
    fullDesktop = mkEnableOption "Enable all optional values";
 | 
			
		||||
    name = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "Lucien Cartier-Tilet";
 | 
			
		||||
    };
 | 
			
		||||
    email = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "lucien@phundrak.com";
 | 
			
		||||
    };
 | 
			
		||||
    editor = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs";
 | 
			
		||||
    };
 | 
			
		||||
    publicKey = {
 | 
			
		||||
      content = mkOption {
 | 
			
		||||
        type = types.nullOr types.str;
 | 
			
		||||
        example = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGj+J6N6SO+4P8dOZqfR1oiay2yxhhHnagH52avUqw5h";
 | 
			
		||||
        default = null;
 | 
			
		||||
      };
 | 
			
		||||
      file = mkOption {
 | 
			
		||||
        type = with types; nullOr path;
 | 
			
		||||
        default = "/home/phundrak/.ssh/id_ed25519.pub";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config.home.dev.vcs = {
 | 
			
		||||
    git = {
 | 
			
		||||
      enable = mkDefault true;
 | 
			
		||||
      inherit (cfg) name email editor;
 | 
			
		||||
      publicKeyFile = cfg.publicKey.file;
 | 
			
		||||
      cliff = mkDefault cfg.fullDesktop;
 | 
			
		||||
      completeConfig = mkDefault cfg.fullDesktop;
 | 
			
		||||
    };
 | 
			
		||||
    jj = {
 | 
			
		||||
      enable = mkDefault true;
 | 
			
		||||
      inherit (cfg) name email editor;
 | 
			
		||||
      signing.sshKey = mkDefault (cfg.publicKey.file or cfg.publicKey.content);
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -5,9 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.git;
 | 
			
		||||
  cfg = config.home.dev.vcs.git;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.git = {
 | 
			
		||||
  options.home.dev.vcs.git = {
 | 
			
		||||
    enable = mkEnableOption "enables git";
 | 
			
		||||
    email = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
@ -57,7 +57,11 @@ in {
 | 
			
		||||
    };
 | 
			
		||||
    completeConfig = mkEnableOption "Complete configuration for workstations";
 | 
			
		||||
    emacs = {
 | 
			
		||||
      integration = mkEnableOption "enables Emacs integration";
 | 
			
		||||
      integration = mkOption {
 | 
			
		||||
        description = "enables Emacs integration";
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        default = config.home.dev.editors.emacs.enable;
 | 
			
		||||
      };
 | 
			
		||||
      pkg = mkOption {
 | 
			
		||||
        type = types.package;
 | 
			
		||||
        default = pkgs.emacs;
 | 
			
		||||
@ -111,7 +115,7 @@ in {
 | 
			
		||||
        };
 | 
			
		||||
        commit.gpgsign = cfg.publicKeyFile != null;
 | 
			
		||||
        gpg.format = "ssh";
 | 
			
		||||
        gpg.ssh.allowedSignersFile = (mkIf (cfg.publicKeyFile != null)) "~/.ssh/allowed_signers";
 | 
			
		||||
        gpg.ssh.allowedSignersFile = "${config.home.homeDirectory}/.ssh/allowed_signers";
 | 
			
		||||
        init.defaultBranch = "main";
 | 
			
		||||
        pull.rebase = true;
 | 
			
		||||
        push = {
 | 
			
		||||
@ -5,9 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.jj;
 | 
			
		||||
  cfg = config.home.dev.vcs.jj;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.jj = {
 | 
			
		||||
  options.home.dev.vcs.jj = {
 | 
			
		||||
    enable = mkEnableOption "enables jj";
 | 
			
		||||
    name = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
@ -19,7 +19,10 @@ in {
 | 
			
		||||
    };
 | 
			
		||||
    editor = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs";
 | 
			
		||||
      default =
 | 
			
		||||
        if config.home.dev.editors.emacs.enable
 | 
			
		||||
        then "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs"
 | 
			
		||||
        else "${pkgs.nano}/bin/nano";
 | 
			
		||||
    };
 | 
			
		||||
    signing = {
 | 
			
		||||
      enable = mkEnableOption "enables signing jj commits";
 | 
			
		||||
@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  programs.eww = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    configDir = ./eww-config;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,3 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  services.flatpak.enable = true;
 | 
			
		||||
}
 | 
			
		||||
@ -1,12 +0,0 @@
 | 
			
		||||
{pkgs, ...}: {
 | 
			
		||||
  programs.gpg = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    mutableKeys = true;
 | 
			
		||||
    mutableTrust = true;
 | 
			
		||||
  };
 | 
			
		||||
  services.gpg-agent = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    enableSshSupport = true;
 | 
			
		||||
    pinentry.package = pkgs.pinentry-emacs;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,6 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  services.kdeconnect = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    indicator = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								users/modules/media/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								users/modules/media/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.media;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./mopidy.nix
 | 
			
		||||
    ./mpd.nix
 | 
			
		||||
    ./mpd-mpris.nix
 | 
			
		||||
    ./mpv.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.home.media.fullDesktop = mkEnableOption "Enables everything";
 | 
			
		||||
  config.home.media = {
 | 
			
		||||
    mopidy.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    mpd.enable = mkDefault (cfg.fullDesktop or cfg.mpd-mpris.enable);
 | 
			
		||||
    mpv.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -5,9 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.mopidy;
 | 
			
		||||
  cfg = config.home.media.mopidy;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.mopidy = {
 | 
			
		||||
  options.home.media.mopidy = {
 | 
			
		||||
    enable = mkEnableOption "Enables Mopidy.";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								users/modules/media/mpd-mpris.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								users/modules/media/mpd-mpris.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,16 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.media.mpd-mpris;
 | 
			
		||||
  cfgMpd = config.home.media.mpd;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.media.mpd-mpris.enable = mkOption {
 | 
			
		||||
    type = types.bool;
 | 
			
		||||
    default = cfgMpd.enable;
 | 
			
		||||
    example = false;
 | 
			
		||||
  };
 | 
			
		||||
  config.services.mpd-mpris.enable = cfg.enable;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								users/modules/media/mpd.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								users/modules/media/mpd.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,30 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.media.mpd;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.media.mpd.enable = mkEnableOption "Enables MPD";
 | 
			
		||||
  config.services.mpd = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    musicDirectory = "${config.home.homeDirectory}/Music";
 | 
			
		||||
    playlistDirectory = "${config.home.homeDirectory}/Music/playlists";
 | 
			
		||||
    network.startWhenNeeded = true;
 | 
			
		||||
    extraConfig = ''
 | 
			
		||||
      follow_outside_symlinks "yes"
 | 
			
		||||
      follow_inside_symlinks "yes"
 | 
			
		||||
 | 
			
		||||
      bind_to_address "localhost"
 | 
			
		||||
      auto_update "yes"
 | 
			
		||||
 | 
			
		||||
      audio_output {
 | 
			
		||||
        type "fifo"
 | 
			
		||||
        name "my_fifo"
 | 
			
		||||
        path "/tmp/mpd.fifo"
 | 
			
		||||
        format "44100:16:2"
 | 
			
		||||
      }
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,6 +1,15 @@
 | 
			
		||||
{pkgs, ...}: {
 | 
			
		||||
  programs.mpv = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.media.mpv;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.media.mpv.enable = mkEnableOption "Enable MPV";
 | 
			
		||||
  config.programs.mpv = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    config = {
 | 
			
		||||
      force-window = "immediate";
 | 
			
		||||
      force-seekable = true; # force streams to be seekable
 | 
			
		||||
@ -16,7 +25,7 @@
 | 
			
		||||
      screenshot-format = "png";
 | 
			
		||||
      screenshot-high-bit-depth = true;
 | 
			
		||||
      screenshot-png-compression = 6;
 | 
			
		||||
      screenshot-directory = "~/Pictures/Screenshots/mpv";
 | 
			
		||||
      screenshot-directory = "${config.home.homeDirectory}/Pictures/Screenshots/mpv";
 | 
			
		||||
 | 
			
		||||
      deband = true;
 | 
			
		||||
      deband-iterations = 2;
 | 
			
		||||
@ -1,21 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  services.mpd = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    musicDirectory = "/home/phundrak/Music";
 | 
			
		||||
    playlistDirectory = "/home/phundrak/Music/playlists";
 | 
			
		||||
    extraConfig = ''
 | 
			
		||||
      follow_outside_symlinks "yes"
 | 
			
		||||
      follow_inside_symlinks "yes"
 | 
			
		||||
 | 
			
		||||
      bind_to_address "localhost"
 | 
			
		||||
      auto_update "yes"
 | 
			
		||||
 | 
			
		||||
      audio_output {
 | 
			
		||||
        type "fifo"
 | 
			
		||||
        name "my_fifo"
 | 
			
		||||
        path "/tmp/mpd.fifo"
 | 
			
		||||
        format "44100:16:2"
 | 
			
		||||
      }
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +0,0 @@
 | 
			
		||||
{inputs, ...}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    inputs.nix-index-database.homeModules.nix-index
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  programs.nix-index.enable = true;
 | 
			
		||||
  programs.nix-index-database.comma.enable = true;
 | 
			
		||||
}
 | 
			
		||||
@ -1,3 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  qt.enable = true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								users/modules/security/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								users/modules/security/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.security;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./gpg.nix
 | 
			
		||||
    ./ssh.nix
 | 
			
		||||
  ];
 | 
			
		||||
  options.home.security.fullDesktop = mkEnableOption "Enable all modules";
 | 
			
		||||
  config.home.security = {
 | 
			
		||||
    gpg.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    ssh.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								users/modules/security/gpg.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								users/modules/security/gpg.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.security.gpg;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.security.gpg = {
 | 
			
		||||
    enable = mkEnableOption "Enable GPG";
 | 
			
		||||
    pinentry.package = mkOption {
 | 
			
		||||
      type = types.package;
 | 
			
		||||
      default =
 | 
			
		||||
        if config.home.dev.editors.emacs.enable
 | 
			
		||||
        then pkgs.pinentry-emacs
 | 
			
		||||
        else pkgs.pinentry-gtk2;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
    programs.gpg = {
 | 
			
		||||
      inherit (cfg) enable;
 | 
			
		||||
      mutableKeys = true;
 | 
			
		||||
      mutableTrust = true;
 | 
			
		||||
    };
 | 
			
		||||
    services.gpg-agent = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      enableSshSupport = true;
 | 
			
		||||
      pinentry.package = cfg.pinentry.package;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -4,9 +4,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.ssh;
 | 
			
		||||
  cfg = config.home.security.ssh;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.ssh = {
 | 
			
		||||
  options.home.security.ssh = {
 | 
			
		||||
    enable = mkEnableOption "enables SSH";
 | 
			
		||||
    hosts = mkOption {
 | 
			
		||||
      type = types.nullOr types.path;
 | 
			
		||||
@ -17,7 +17,7 @@ in {
 | 
			
		||||
  config = {
 | 
			
		||||
    programs.ssh = mkIf cfg.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      includes = mkIf (cfg.hosts != null) [cfg.hosts];
 | 
			
		||||
      includes = lists.optional (cfg.hosts != null) cfg.hosts;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								users/modules/services/blanket.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								users/modules/services/blanket.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.services.blanket;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.services.blanket.enable = mkEnableOption "Enable blanket";
 | 
			
		||||
  config.services.blanket.enable = cfg.enable;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								users/modules/services/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								users/modules/services/default.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.services;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./blanket.nix
 | 
			
		||||
    ./mbsync.nix
 | 
			
		||||
    ./mpris-proxy.nix
 | 
			
		||||
    ./playerctld.nix
 | 
			
		||||
  ];
 | 
			
		||||
  options.home.services.fullDesktop = mkEnableOption "Enable all modules";
 | 
			
		||||
  config.home.services = {
 | 
			
		||||
    blanket.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    mbsync.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    mpris-proxy.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    playerctld.enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -4,26 +4,14 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.mbsync;
 | 
			
		||||
  cfg = config.home.services.mbsync;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.mbsync = {
 | 
			
		||||
  options.home.services.mbsync = {
 | 
			
		||||
    enable = mkEnableOption "Enables mbsync";
 | 
			
		||||
    passwordFile = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      example = "/var/email/password";
 | 
			
		||||
    };
 | 
			
		||||
    service.enable = mkOption {
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
      default = true;
 | 
			
		||||
    };
 | 
			
		||||
    host = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "mail.phundrak.com";
 | 
			
		||||
    };
 | 
			
		||||
    user = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "lucien@phundrak.com";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = mkIf cfg.enable {
 | 
			
		||||
							
								
								
									
										11
									
								
								users/modules/services/mpris-proxy.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								users/modules/services/mpris-proxy.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.services.mpris-proxy;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.services.mpris-proxy.enable = mkEnableOption "Enable MPRIS forwarding towards bluetooth and MIDI";
 | 
			
		||||
  config.services.mpris-proxy.enable = cfg.enable;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								users/modules/services/playerctld.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								users/modules/services/playerctld.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.services.playerctld;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.services.playerctld.enable = mkEnableOption "Enable playerctld daemon";
 | 
			
		||||
  config.services.playerctld.enable = cfg.enable;
 | 
			
		||||
}
 | 
			
		||||
@ -4,9 +4,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.bash;
 | 
			
		||||
  cfg = config.home.shell.bash;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.bash = {
 | 
			
		||||
  options.home.shell.bash = {
 | 
			
		||||
    enable = mkEnableOption "Enables bash";
 | 
			
		||||
    aliases = mkOption {
 | 
			
		||||
      type = types.attrsOf types.str;
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@ with lib; let
 | 
			
		||||
    please = "sudo -A";
 | 
			
		||||
    wget = "wget --hsts-file=\"$XDG_DATA_HOME/wget-hsts\" -c";
 | 
			
		||||
  };
 | 
			
		||||
  cfg = config.modules.shell;
 | 
			
		||||
  cfg = config.home.shell;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./bash.nix
 | 
			
		||||
@ -69,73 +69,22 @@ in {
 | 
			
		||||
    ./starship.nix
 | 
			
		||||
    ./tmux.nix
 | 
			
		||||
    ./zsh.nix
 | 
			
		||||
    ./zoxide.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  options.modules.shell = {
 | 
			
		||||
    eatIntegration = mkEnableOption "Enable Emacs Eat integration in Bash or Zsh";
 | 
			
		||||
    enableBash = mkOption {
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
      default = true;
 | 
			
		||||
      description = "Enables bash";
 | 
			
		||||
  options.home.shell.fullDesktop = mkEnableOption "Enable all shells";
 | 
			
		||||
  config.home.shell = {
 | 
			
		||||
    enableShellIntegration = cfg.bash.enable or cfg.zsh.enable or cfg.fish.enable;
 | 
			
		||||
    bash = {
 | 
			
		||||
      aliases = mkDefault aliases;
 | 
			
		||||
      enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    };
 | 
			
		||||
    enableFish = mkOption {
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
      default = true;
 | 
			
		||||
      description = "Enables fish";
 | 
			
		||||
    fish = {
 | 
			
		||||
      abbrs = mkDefault aliases;
 | 
			
		||||
      enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    };
 | 
			
		||||
    enableZsh = mkOption {
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
      default = true;
 | 
			
		||||
      description = "Enables zsh";
 | 
			
		||||
    };
 | 
			
		||||
    starship = {
 | 
			
		||||
      enable = mkEnableOption "Enables the starship prompt.";
 | 
			
		||||
      jjIntegration = mkEnableOption "Enables Jujutsu integration in starship.";
 | 
			
		||||
    };
 | 
			
		||||
    tmux.enable = mkEnableOption "Enables tmux";
 | 
			
		||||
    zoxide = {
 | 
			
		||||
      enable = mkOption {
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        default = true;
 | 
			
		||||
        description = "enables zoxide";
 | 
			
		||||
      };
 | 
			
		||||
      replaceCd = mkOption {
 | 
			
		||||
        type = types.bool;
 | 
			
		||||
        default = true;
 | 
			
		||||
        description = "makes zoxide replace cd";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
    home.shell = {
 | 
			
		||||
      enableFishIntegration = mkDefault cfg.enableFish;
 | 
			
		||||
      enableBashIntegration = mkDefault cfg.enableBash;
 | 
			
		||||
      enableZshIntegration = mkDefault cfg.enableZsh;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    modules = {
 | 
			
		||||
      fish = {
 | 
			
		||||
        enable = mkDefault cfg.enableFish;
 | 
			
		||||
        abbrs = mkDefault aliases;
 | 
			
		||||
      };
 | 
			
		||||
      bash = {
 | 
			
		||||
        enable = mkDefault cfg.enableBash;
 | 
			
		||||
        aliases = mkDefault aliases;
 | 
			
		||||
      };
 | 
			
		||||
      zsh = {
 | 
			
		||||
        enable = mkDefault cfg.enableZsh;
 | 
			
		||||
        abbrs = mkDefault aliases;
 | 
			
		||||
      };
 | 
			
		||||
      tmux.enable = cfg.tmux.enable;
 | 
			
		||||
      inherit (cfg) starship;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    programs.zoxide = mkIf cfg.zoxide.enable {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      options = mkIf cfg.zoxide.replaceCd [
 | 
			
		||||
        "--cmd cd"
 | 
			
		||||
      ];
 | 
			
		||||
    zsh = {
 | 
			
		||||
      abbrs = mkDefault aliases;
 | 
			
		||||
      enable = mkDefault cfg.fullDesktop;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,9 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.fish;
 | 
			
		||||
  cfg = config.home.shell.fish;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.fish = {
 | 
			
		||||
  options.home.shell.fish = {
 | 
			
		||||
    enable = lib.mkEnableOption "enables fish";
 | 
			
		||||
    abbrs = lib.mkOption {
 | 
			
		||||
      type = types.attrsOf types.str;
 | 
			
		||||
 | 
			
		||||
@ -4,17 +4,21 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.starship;
 | 
			
		||||
  cfg = config.home.shell.starship;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.starship = {
 | 
			
		||||
  options.home.shell.starship = {
 | 
			
		||||
    enable = mkEnableOption "Enables the starship prompt.";
 | 
			
		||||
    jjIntegration = mkEnableOption "Enables Jujutsu integration in starship.";
 | 
			
		||||
    jjIntegration = mkOption {
 | 
			
		||||
      description = "Enable Jujutsu integration in starship";
 | 
			
		||||
      default = config.programs.jujutsu.enable;
 | 
			
		||||
      type = types.bool;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config.programs.starship = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    enableTransience = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
    settings = mkIf cfg.jjIntegration {
 | 
			
		||||
      custom.jj = {
 | 
			
		||||
        description = "The current jj status";
 | 
			
		||||
        detect_folders = [".jj"];
 | 
			
		||||
 | 
			
		||||
@ -5,9 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.tmux;
 | 
			
		||||
  cfg = config.home.shell.tmux;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.tmux.enable = mkEnableOption "Enable tmux";
 | 
			
		||||
  options.home.shell.tmux.enable = mkEnableOption "Enable tmux";
 | 
			
		||||
  config.programs.tmux = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    baseIndex = 1;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								users/modules/shell/zoxide.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								users/modules/shell/zoxide.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,19 @@
 | 
			
		||||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.home.shell.zoxide;
 | 
			
		||||
in {
 | 
			
		||||
  options.home.shell.zoxide = {
 | 
			
		||||
    enable = mkEnableOption "Enable zoxide";
 | 
			
		||||
    replaceCd = mkEnableOption "Replace cd with zoxide";
 | 
			
		||||
  };
 | 
			
		||||
  config.programs.zoxide = mkIf cfg.enable {
 | 
			
		||||
    inherit (cfg) enable;
 | 
			
		||||
    options = mkIf cfg.replaceCd [
 | 
			
		||||
      "--cmd cd"
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -5,9 +5,9 @@
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.zsh;
 | 
			
		||||
  cfg = config.home.shell.zsh;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.zsh = {
 | 
			
		||||
  options.home.shell.zsh = {
 | 
			
		||||
    enable = lib.mkEnableOption "Enables zsh";
 | 
			
		||||
    abbrs = lib.mkOption {
 | 
			
		||||
      type = types.attrsOf types.str;
 | 
			
		||||
@ -24,70 +24,73 @@ in {
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config.programs.zsh = lib.mkIf cfg.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    autocd = true;
 | 
			
		||||
    autosuggestion = {
 | 
			
		||||
  config = lib.mkIf cfg.enable {
 | 
			
		||||
    programs.zsh = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      strategy = ["match_prev_cmd" "completion"];
 | 
			
		||||
    };
 | 
			
		||||
    enableCompletion = true;
 | 
			
		||||
    history = {
 | 
			
		||||
      findNoDups = true;
 | 
			
		||||
      ignoreAllDups = true;
 | 
			
		||||
      ignoreDups = true;
 | 
			
		||||
      ignoreSpace = true;
 | 
			
		||||
      path = "${config.xdg.dataHome}/zsh/zsh_history";
 | 
			
		||||
      saveNoDups = true;
 | 
			
		||||
    };
 | 
			
		||||
    historySubstringSearch.enable = true;
 | 
			
		||||
    initContent = with lib;
 | 
			
		||||
      concatLines [
 | 
			
		||||
        ''
 | 
			
		||||
          bindkey -e
 | 
			
		||||
          bindkey '^p' history-search-backward
 | 
			
		||||
          bindkey '^n' history-search-forward
 | 
			
		||||
      autocd = true;
 | 
			
		||||
      autosuggestion = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        strategy = ["match_prev_cmd" "completion"];
 | 
			
		||||
      };
 | 
			
		||||
      enableCompletion = true;
 | 
			
		||||
      enableVteIntegration = true;
 | 
			
		||||
      history = {
 | 
			
		||||
        findNoDups = true;
 | 
			
		||||
        ignoreAllDups = true;
 | 
			
		||||
        ignoreDups = true;
 | 
			
		||||
        ignoreSpace = true;
 | 
			
		||||
        path = "${config.xdg.dataHome}/zsh/zsh_history";
 | 
			
		||||
        saveNoDups = true;
 | 
			
		||||
      };
 | 
			
		||||
      historySubstringSearch.enable = true;
 | 
			
		||||
      initContent = with lib;
 | 
			
		||||
        concatLines [
 | 
			
		||||
          ''
 | 
			
		||||
            bindkey -e
 | 
			
		||||
            bindkey '^p' history-search-backward
 | 
			
		||||
            bindkey '^n' history-search-forward
 | 
			
		||||
 | 
			
		||||
          # Completion styling
 | 
			
		||||
          zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
 | 
			
		||||
          zstyle ':completion:*' list-colors "''${(s.:.)LS_COLORS}"
 | 
			
		||||
          zstyle ':completion:*' menu no
 | 
			
		||||
          zstyle ':fzf-tab:complete:cd:*' fzf-preview '${pkgs.eza}/bin/eza $realpath'
 | 
			
		||||
        ''
 | 
			
		||||
        (strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"'')
 | 
			
		||||
        cfg.zshrcExtra
 | 
			
		||||
      ];
 | 
			
		||||
    oh-my-zsh = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
            # Completion styling
 | 
			
		||||
            zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}'
 | 
			
		||||
            zstyle ':completion:*' list-colors "''${(s.:.)LS_COLORS}"
 | 
			
		||||
            zstyle ':completion:*' menu no
 | 
			
		||||
            zstyle ':fzf-tab:complete:cd:*' fzf-preview '${pkgs.eza}/bin/eza $realpath'
 | 
			
		||||
          ''
 | 
			
		||||
          (strings.optionalString cfg.eatIntegration ''[ -n "$EAT_SHELL_INTEGRATION_DIR" ] && source "$EAT_SHELL_INTEGRATION_DIR/zsh"'')
 | 
			
		||||
          cfg.zshrcExtra
 | 
			
		||||
        ];
 | 
			
		||||
      oh-my-zsh = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        plugins = [
 | 
			
		||||
          "dirhistory"
 | 
			
		||||
          "sudo"
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
      plugins = [
 | 
			
		||||
        "dirhistory"
 | 
			
		||||
        "sudo"
 | 
			
		||||
        {
 | 
			
		||||
          name = "fzf-tab";
 | 
			
		||||
          src = pkgs.fetchFromGitHub {
 | 
			
		||||
            owner = "Aloxaf";
 | 
			
		||||
            repo = "fzf-tab";
 | 
			
		||||
            rev = "v1.2.0";
 | 
			
		||||
            sha256 = "sha256-q26XVS/LcyZPRqDNwKKA9exgBByE0muyuNb0Bbar2lY=";
 | 
			
		||||
          };
 | 
			
		||||
        }
 | 
			
		||||
        {
 | 
			
		||||
          name = "zsh-autopair";
 | 
			
		||||
          src = pkgs.fetchFromGitHub {
 | 
			
		||||
            owner = "hlissner";
 | 
			
		||||
            repo = "zsh-autopair";
 | 
			
		||||
            rev = "449a7c3d095bc8f3d78cf37b9549f8bb4c383f3d";
 | 
			
		||||
            sha256 = "sha256-3zvOgIi+q7+sTXrT+r/4v98qjeiEL4Wh64rxBYnwJvQ=";
 | 
			
		||||
          };
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
    plugins = [
 | 
			
		||||
      {
 | 
			
		||||
        name = "fzf-tab";
 | 
			
		||||
        src = pkgs.fetchFromGitHub {
 | 
			
		||||
          owner = "Aloxaf";
 | 
			
		||||
          repo = "fzf-tab";
 | 
			
		||||
          rev = "v1.2.0";
 | 
			
		||||
          sha256 = "sha256-q26XVS/LcyZPRqDNwKKA9exgBByE0muyuNb0Bbar2lY=";
 | 
			
		||||
        };
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "zsh-autopair";
 | 
			
		||||
        src = pkgs.fetchFromGitHub {
 | 
			
		||||
          owner = "hlissner";
 | 
			
		||||
          repo = "zsh-autopair";
 | 
			
		||||
          rev = "449a7c3d095bc8f3d78cf37b9549f8bb4c383f3d";
 | 
			
		||||
          sha256 = "sha256-3zvOgIi+q7+sTXrT+r/4v98qjeiEL4Wh64rxBYnwJvQ=";
 | 
			
		||||
        };
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
    syntaxHighlighting.enable = true;
 | 
			
		||||
    zsh-abbr = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      abbreviations = cfg.abbrs;
 | 
			
		||||
      syntaxHighlighting.enable = true;
 | 
			
		||||
      zsh-abbr = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        abbreviations = cfg.abbrs;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,113 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.vcs;
 | 
			
		||||
in {
 | 
			
		||||
  imports = [./git.nix ./jujutsu.nix];
 | 
			
		||||
 | 
			
		||||
  options.modules.vcs = {
 | 
			
		||||
    git = {
 | 
			
		||||
      enable = mkEnableOption "enables git";
 | 
			
		||||
      cliff = mkEnableOption "enables git-cliff support";
 | 
			
		||||
      sendmail = {
 | 
			
		||||
        enable = mkOption {
 | 
			
		||||
          type = types.bool;
 | 
			
		||||
          default = true;
 | 
			
		||||
        };
 | 
			
		||||
        server = mkOption {
 | 
			
		||||
          type = types.nullOr types.str;
 | 
			
		||||
          default = "mail.phundrak.com";
 | 
			
		||||
        };
 | 
			
		||||
        user = mkOption {
 | 
			
		||||
          type = types.nullOr types.str;
 | 
			
		||||
          default = null;
 | 
			
		||||
        };
 | 
			
		||||
        encryption = mkOption {
 | 
			
		||||
          type = types.enum ["tls" "ssl" "none"];
 | 
			
		||||
          default = "none";
 | 
			
		||||
        };
 | 
			
		||||
        port = mkOption {
 | 
			
		||||
          type = types.nullOr types.int;
 | 
			
		||||
          default = 587;
 | 
			
		||||
        };
 | 
			
		||||
        passwordFile = mkOption {
 | 
			
		||||
          type = types.nullOr types.path;
 | 
			
		||||
          default = null;
 | 
			
		||||
          description = ''
 | 
			
		||||
            Path to a file containing the password necessary for authenticating
 | 
			
		||||
            against the mailserver.
 | 
			
		||||
 | 
			
		||||
            This file should contain the password only, with no newline.
 | 
			
		||||
          '';
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      browser = mkOption {
 | 
			
		||||
        type = types.nullOr types.str;
 | 
			
		||||
        example = "${pkgs.firefox}/bin/firefox";
 | 
			
		||||
        default = null;
 | 
			
		||||
      };
 | 
			
		||||
      completeConfig = mkEnableOption "Complete configuration for workstations";
 | 
			
		||||
      mergeTool = mkOption {
 | 
			
		||||
        type = types.str;
 | 
			
		||||
        default = "ediff";
 | 
			
		||||
      };
 | 
			
		||||
      emacs = {
 | 
			
		||||
        integration = mkEnableOption "enables Emacs integration";
 | 
			
		||||
        pkg = mkOption {
 | 
			
		||||
          type = types.package;
 | 
			
		||||
          default = pkgs.emacs;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    jj.enable = mkEnableOption "enables jujutsu";
 | 
			
		||||
    name = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "Lucien Cartier-Tilet";
 | 
			
		||||
    };
 | 
			
		||||
    email = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "lucien@phundrak.com";
 | 
			
		||||
    };
 | 
			
		||||
    editor = mkOption {
 | 
			
		||||
      type = types.str;
 | 
			
		||||
      default = "${pkgs.emacs}/bin/emacsclient -c -a ${pkgs.emacs}/bin/emacs";
 | 
			
		||||
    };
 | 
			
		||||
    publicKey = {
 | 
			
		||||
      content = mkOption {
 | 
			
		||||
        type = types.nullOr types.str;
 | 
			
		||||
        example = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGj+J6N6SO+4P8dOZqfR1oiay2yxhhHnagH52avUqw5h";
 | 
			
		||||
        default = null;
 | 
			
		||||
      };
 | 
			
		||||
      file = mkOption {
 | 
			
		||||
        type = with types; nullOr path;
 | 
			
		||||
        default = "/home/phundrak/.ssh/id_ed25519.pub";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config = lib.mkIf (cfg.git.enable || cfg.jj.enable) {
 | 
			
		||||
    home.file.".ssh/allowed_signers".text = mkIf (cfg.publicKey.content != null) (mkDefault ''
 | 
			
		||||
      ${cfg.email} namespaces="git" ${cfg.publicKey.content}
 | 
			
		||||
    '');
 | 
			
		||||
    modules = {
 | 
			
		||||
      git = mkIf cfg.git.enable {
 | 
			
		||||
        inherit (cfg.git) enable cliff sendmail browser completeConfig emacs mergeTool;
 | 
			
		||||
        inherit (cfg) email name editor;
 | 
			
		||||
        publicKeyFile = cfg.publicKey.file;
 | 
			
		||||
      };
 | 
			
		||||
      jj = mkIf cfg.jj.enable {
 | 
			
		||||
        inherit (cfg.jj) enable;
 | 
			
		||||
        inherit (cfg) name email editor;
 | 
			
		||||
        signing.enable = cfg.publicKey.content != null;
 | 
			
		||||
        signing.sshKey =
 | 
			
		||||
          if (cfg.publicKey.file == null)
 | 
			
		||||
          then cfg.publicKey.content
 | 
			
		||||
          else cfg.publicKey.file;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,10 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  programs.yt-dlp = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      embed-thumbnail = true;
 | 
			
		||||
      embed-subs = true;
 | 
			
		||||
      sub-langs = "all";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  imports = [./light-home.nix];
 | 
			
		||||
  home.phundrak.sshKey = {
 | 
			
		||||
    content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTv1lb6d99O84jeh6GdjPm8Gnt/HncSRhGhmoTq7BMK lucien@phundrak.com";
 | 
			
		||||
    file = "/home/phundrak/.ssh/id_ed25519.pub";
 | 
			
		||||
  };
 | 
			
		||||
  modules.nh.flake = "/home/phundrak/.dotfiles";
 | 
			
		||||
}
 | 
			
		||||
@ -7,7 +7,7 @@
 | 
			
		||||
    Sent from GNU/Emacs
 | 
			
		||||
 | 
			
		||||
    *** Sauvez un arbre, mangez un castor ***
 | 
			
		||||
    ***      Save a tree, eat a beaver    ***
 | 
			
		||||
    ***     Save a tree, eat a beaver     ***
 | 
			
		||||
  '';
 | 
			
		||||
in {
 | 
			
		||||
  home.file.".signature" = {
 | 
			
		||||
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  imports = [./home.nix];
 | 
			
		||||
  home.phundrak.sshKey = {
 | 
			
		||||
    content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBPhP4p9KGk6jSOxJzBu+RzJPHI6baT0o+xrgPeNRwfq lucien@phundrak.com";
 | 
			
		||||
    file = "/home/phundrak/.ssh/id_ed25519.pub";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,6 @@
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  config,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
@ -18,10 +17,9 @@
 | 
			
		||||
        epkgs.pdf-tools
 | 
			
		||||
      ]
 | 
			
		||||
    ));
 | 
			
		||||
    askpass = import ../scripts/askpass.nix {inherit pkgs;};
 | 
			
		||||
    launchWithEmacsclient = import ../scripts/launch-with-emacsclient.nix {
 | 
			
		||||
      inherit pkgs;
 | 
			
		||||
      emacsPackage = emacsPkg;
 | 
			
		||||
    askpass = import ../modules/cli/scripts/askpass.nix {inherit pkgs;};
 | 
			
		||||
    launchWithEmacsclient = import ../modules/cli/scripts/launch-with-emacsclient.nix {
 | 
			
		||||
      inherit pkgs config;
 | 
			
		||||
    };
 | 
			
		||||
  in {
 | 
			
		||||
    sops.secrets = {
 | 
			
		||||
@ -30,83 +28,21 @@
 | 
			
		||||
      "mopidy/spotify" = {};
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    home.sessionVariables = {
 | 
			
		||||
      EDITOR = "${emacsPkg}/bin/emacsclient -c -a ${emacsPkg}/bin/emacs";
 | 
			
		||||
      LAUNCH_EDITOR = "${launchWithEmacsclient}/bin/launch-with-emacsclient";
 | 
			
		||||
      SUDO_ASKPASS = "${askpass}/bin/askpass";
 | 
			
		||||
      LSP_USE_PLISTS = "true";
 | 
			
		||||
    };
 | 
			
		||||
    home = {
 | 
			
		||||
      sessionVariables = {
 | 
			
		||||
        EDITOR = "${emacsPkg}/bin/emacsclient -c -a ${emacsPkg}/bin/emacs";
 | 
			
		||||
        LAUNCH_EDITOR = "${launchWithEmacsclient}/bin/launch-with-emacsclient";
 | 
			
		||||
        SUDO_ASKPASS = "${askpass}/bin/askpass";
 | 
			
		||||
        LSP_USE_PLISTS = "true";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    modules = {
 | 
			
		||||
      shell = {
 | 
			
		||||
        eatIntegration = true;
 | 
			
		||||
        starship.jjIntegration = true;
 | 
			
		||||
      };
 | 
			
		||||
      bat.extras = true;
 | 
			
		||||
      packages.emacsPackage = emacsPkg;
 | 
			
		||||
      mopidy.enable = true;
 | 
			
		||||
      ollama.enable = true;
 | 
			
		||||
 | 
			
		||||
      emacs = {
 | 
			
		||||
      desktop.waybar.style = ./config/waybar/style.css;
 | 
			
		||||
      dev.ollama = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        service = true;
 | 
			
		||||
        package = emacsPkg;
 | 
			
		||||
        mu4eMime = true;
 | 
			
		||||
        org-protocol = true;
 | 
			
		||||
        gpu = "amd";
 | 
			
		||||
      };
 | 
			
		||||
      hyprland = {
 | 
			
		||||
        inherit emacsPkg;
 | 
			
		||||
        enable = true;
 | 
			
		||||
        swaync = true;
 | 
			
		||||
        waybar = {
 | 
			
		||||
          enable = true;
 | 
			
		||||
          battery = true;
 | 
			
		||||
          style = ./config/waybar/style.css;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
      mbsync = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        passwordFile = config.sops.secrets.emailPassword.path;
 | 
			
		||||
      };
 | 
			
		||||
      ssh = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        hosts = config.sops.secrets."ssh/hosts".path;
 | 
			
		||||
      };
 | 
			
		||||
      vcs.git = {
 | 
			
		||||
        browser = "${inputs.zen-browser.packages.${pkgs.system}.default}/bin/zen";
 | 
			
		||||
        emacs = {
 | 
			
		||||
          integration = true;
 | 
			
		||||
          pkg = emacsPkg;
 | 
			
		||||
        };
 | 
			
		||||
        cliff = true;
 | 
			
		||||
        sendmail = {
 | 
			
		||||
          enable = true;
 | 
			
		||||
          passwordFile = config.sops.secrets.emailPassword.path;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    programs = {
 | 
			
		||||
      zsh.enableVteIntegration = true;
 | 
			
		||||
      mu.enable = true;
 | 
			
		||||
      obs-studio = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        plugins = with pkgs; [
 | 
			
		||||
          obs-studio-plugins.input-overlay
 | 
			
		||||
          obs-studio-plugins.obs-backgroundremoval
 | 
			
		||||
          obs-studio-plugins.obs-mute-filter
 | 
			
		||||
          obs-studio-plugins.obs-pipewire-audio-capture
 | 
			
		||||
          obs-studio-plugins.obs-source-clone
 | 
			
		||||
          obs-studio-plugins.obs-source-record
 | 
			
		||||
          obs-studio-plugins.obs-tuna
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    services = {
 | 
			
		||||
      blanket.enable = true;
 | 
			
		||||
      mpris-proxy.enable = true;
 | 
			
		||||
      playerctld.enable = true;
 | 
			
		||||
      fullDesktop = true;
 | 
			
		||||
      shell.fish.enable = true;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    manual.html.enable = true;
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								users/phundrak/host/alys.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								users/phundrak/host/alys.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
{config, ...}: {
 | 
			
		||||
  imports = [../light-home.nix];
 | 
			
		||||
  home = {
 | 
			
		||||
    cli.nh.flake = "${config.home.homeDirectory}/nixos";
 | 
			
		||||
    phundrak.sshKey = {
 | 
			
		||||
      content = builtins.readFile ../../../keys/id_alys.pub;
 | 
			
		||||
      # file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								users/phundrak/host/gampo.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								users/phundrak/host/gampo.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{config, ...}: {
 | 
			
		||||
  imports = [../home.nix];
 | 
			
		||||
  home = {
 | 
			
		||||
    cli.nh.flake = "${config.home.homeDirectory}/nixos";
 | 
			
		||||
    desktop.hyprland.host = "gampo";
 | 
			
		||||
    phundrak.sshKey = {
 | 
			
		||||
      content = builtins.readFile ../../../keys/id_gampo.pub;
 | 
			
		||||
      # file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								users/phundrak/host/marpa.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								users/phundrak/host/marpa.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
{config, ...}: {
 | 
			
		||||
  imports = [../home.nix];
 | 
			
		||||
  home = {
 | 
			
		||||
    cli.nh.flake = "${config.home.homeDirectory}/nixos";
 | 
			
		||||
    desktop.hyprland.host = "marpa";
 | 
			
		||||
    phundrak.sshKey = {
 | 
			
		||||
      content = builtins.readFile ../../../keys/id_marpa.pub;
 | 
			
		||||
      # file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								users/phundrak/host/tilo.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								users/phundrak/host/tilo.nix
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
{config, ...}: {
 | 
			
		||||
  imports = [../light-home.nix];
 | 
			
		||||
  home = {
 | 
			
		||||
    cli.nh.flake = "${config.home.homeDirectory}/nixos";
 | 
			
		||||
    phundrak.sshKey = {
 | 
			
		||||
      content = builtins.readFile ../../../keys/id_tilo.pub;
 | 
			
		||||
      # file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -33,11 +33,10 @@ in {
 | 
			
		||||
      age = {
 | 
			
		||||
        # automatically import user SSH keys as age keys
 | 
			
		||||
        sshKeyPaths = [
 | 
			
		||||
          "/home/phundrak/.ssh/id_ed25519"
 | 
			
		||||
          "${config.home.homeDirectory}/.ssh/id_ed25519"
 | 
			
		||||
        ];
 | 
			
		||||
        # this will use an age key that is expected to already be in the filesystem
 | 
			
		||||
        # keyFile = "/home/phundrak/.config/sops/age/keys.txt";
 | 
			
		||||
        keyFile = "/home/phundrak/.local/sops-nix/key.txt";
 | 
			
		||||
        keyFile = "${config.home.homeDirectory}/.local/sops-nix/key.txt";
 | 
			
		||||
        # generate a new key if the key specified above does not exist
 | 
			
		||||
        generateKey = true;
 | 
			
		||||
      };
 | 
			
		||||
@ -47,23 +46,35 @@ in {
 | 
			
		||||
      username = "phundrak";
 | 
			
		||||
      homeDirectory = "/home/phundrak";
 | 
			
		||||
      packages = [pkgs.tree pkgs.ncdu];
 | 
			
		||||
      stateVersion = "24.11"; # Please read the comment before changing.
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    modules = {
 | 
			
		||||
      shell = {
 | 
			
		||||
        starship.enable = true;
 | 
			
		||||
        tmux.enable = true;
 | 
			
		||||
      };
 | 
			
		||||
      vcs = {
 | 
			
		||||
        git.enable = true;
 | 
			
		||||
      phundrak.sshKey.file = "${config.home.homeDirectory}/.ssh/id_ed25519.pub";
 | 
			
		||||
 | 
			
		||||
      dev.vcs = {
 | 
			
		||||
        jj.enable = true;
 | 
			
		||||
        git.enable = true;
 | 
			
		||||
        publicKey = cfg.sshKey;
 | 
			
		||||
      };
 | 
			
		||||
      ssh = {
 | 
			
		||||
 | 
			
		||||
      security.ssh = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        hosts = config.sops.secrets."ssh/hosts".path;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      shell = {
 | 
			
		||||
        bash.enable = true;
 | 
			
		||||
        zsh.enable = true;
 | 
			
		||||
        starship = {
 | 
			
		||||
          enable = true;
 | 
			
		||||
          jjIntegration = true;
 | 
			
		||||
        };
 | 
			
		||||
        tmux.enable = true;
 | 
			
		||||
        zoxide = {
 | 
			
		||||
          enable = true;
 | 
			
		||||
          replaceCd = true;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      stateVersion = "24.11"; # Do not modify!
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    manual.manpages.enable = true;
 | 
			
		||||
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  imports = [./home.nix];
 | 
			
		||||
  home.phundrak.sshKey = {
 | 
			
		||||
    content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBPhP4p9KGk6jSOxJzBu+RzJPHI6baT0o+xrgPeNRwfq lucien@phundrak.com";
 | 
			
		||||
    file = "/home/phundrak/.ssh/id_ed25519.pub";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -2,109 +2,90 @@
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
with lib; let
 | 
			
		||||
  cfg = config.modules.packages;
 | 
			
		||||
in {
 | 
			
		||||
  options.modules.packages.emacsPackage = mkOption {
 | 
			
		||||
    type = types.package;
 | 
			
		||||
    default = pkgs.emacs;
 | 
			
		||||
  };
 | 
			
		||||
  config.home.packages = with pkgs; let
 | 
			
		||||
    scripts = import ../scripts {
 | 
			
		||||
      inherit pkgs;
 | 
			
		||||
      config.emacsPkg = cfg.emacsPackage;
 | 
			
		||||
    };
 | 
			
		||||
  in
 | 
			
		||||
    [
 | 
			
		||||
      flatpak
 | 
			
		||||
with lib; {
 | 
			
		||||
  home.packages = with pkgs; [
 | 
			
		||||
    # Terminal stuff
 | 
			
		||||
    duf
 | 
			
		||||
    ffmpeg
 | 
			
		||||
    ripgrep-all
 | 
			
		||||
    unzip
 | 
			
		||||
 | 
			
		||||
      # LSP servers
 | 
			
		||||
      bash-language-server
 | 
			
		||||
      docker-language-server
 | 
			
		||||
      kdePackages.qtdeclarative # For QML LSP
 | 
			
		||||
      nil # Nix
 | 
			
		||||
      python3 # for Emacs and LSP
 | 
			
		||||
      yaml-language-server # Yaml (Docker, GitHub Actions, ...)
 | 
			
		||||
    # Fonts
 | 
			
		||||
    #nerdfonts
 | 
			
		||||
    noto-fonts-cjk-sans
 | 
			
		||||
    noto-fonts-cjk-serif
 | 
			
		||||
    tibetan-machine
 | 
			
		||||
 | 
			
		||||
      # Terminal stuff
 | 
			
		||||
      duf
 | 
			
		||||
      ffmpeg
 | 
			
		||||
      ripgrep-all
 | 
			
		||||
      unzip
 | 
			
		||||
    # Browsers
 | 
			
		||||
    amfora
 | 
			
		||||
 | 
			
		||||
      # Fonts
 | 
			
		||||
      #nerdfonts
 | 
			
		||||
      noto-fonts-cjk-sans
 | 
			
		||||
      noto-fonts-cjk-serif
 | 
			
		||||
      tibetan-machine
 | 
			
		||||
    # Media
 | 
			
		||||
    ani-cli
 | 
			
		||||
    audacity
 | 
			
		||||
    plexamp
 | 
			
		||||
    plex-desktop
 | 
			
		||||
    spicetify-cli
 | 
			
		||||
    spotify
 | 
			
		||||
    pavucontrol # Volume control
 | 
			
		||||
 | 
			
		||||
      # Browsers
 | 
			
		||||
      amfora
 | 
			
		||||
    # Social
 | 
			
		||||
    vesktop # Discord alternative that works well with wayland
 | 
			
		||||
    element-desktop
 | 
			
		||||
    signal-desktop-bin
 | 
			
		||||
 | 
			
		||||
      # Media
 | 
			
		||||
      ani-cli
 | 
			
		||||
      audacity
 | 
			
		||||
      plexamp
 | 
			
		||||
      plex-desktop
 | 
			
		||||
      spicetify-cli
 | 
			
		||||
      spotify
 | 
			
		||||
      pavucontrol # Volume control
 | 
			
		||||
    # Misc
 | 
			
		||||
    bitwarden
 | 
			
		||||
    gplates
 | 
			
		||||
    libnotify
 | 
			
		||||
    nextcloud-client
 | 
			
		||||
    onlyoffice-bin
 | 
			
		||||
    scrcpy
 | 
			
		||||
    syncthing
 | 
			
		||||
    watchmate
 | 
			
		||||
    inputs.zen-browser.packages.${system}.default
 | 
			
		||||
    inputs.pumo-system-info.packages.${system}.default
 | 
			
		||||
    inputs.quickshell.packages.${system}.default
 | 
			
		||||
 | 
			
		||||
      # Social
 | 
			
		||||
      vesktop # Discord alternative that works well with wayland
 | 
			
		||||
      element-desktop
 | 
			
		||||
      signal-desktop-bin
 | 
			
		||||
    # Games
 | 
			
		||||
    atlauncher
 | 
			
		||||
    heroic
 | 
			
		||||
    modrinth-app
 | 
			
		||||
    openmw
 | 
			
		||||
    openttd-jgrpp
 | 
			
		||||
    moonlight-qt
 | 
			
		||||
 | 
			
		||||
      # Misc
 | 
			
		||||
      bitwarden
 | 
			
		||||
      gplates
 | 
			
		||||
      libnotify
 | 
			
		||||
      nextcloud-client
 | 
			
		||||
      onlyoffice-bin
 | 
			
		||||
      scrcpy
 | 
			
		||||
      syncthing
 | 
			
		||||
      watchmate
 | 
			
		||||
      inputs.zen-browser.packages.${system}.default
 | 
			
		||||
      inputs.pumo-system-info.packages.${system}.default
 | 
			
		||||
      inputs.quickshell.packages.${system}.default
 | 
			
		||||
    # Gnome stuff
 | 
			
		||||
    gnome-tweaks
 | 
			
		||||
    gnomeExtensions.docker
 | 
			
		||||
    gnomeExtensions.syncthing-indicator
 | 
			
		||||
    gnomeExtensions.tray-icons-reloaded
 | 
			
		||||
    gthumb
 | 
			
		||||
 | 
			
		||||
      # Games
 | 
			
		||||
      atlauncher
 | 
			
		||||
      heroic
 | 
			
		||||
      modrinth-app
 | 
			
		||||
      openmw
 | 
			
		||||
      openttd-jgrpp
 | 
			
		||||
      moonlight-qt
 | 
			
		||||
    # Graphics
 | 
			
		||||
    inkscape
 | 
			
		||||
    gimp
 | 
			
		||||
    gimpPlugins.fourier
 | 
			
		||||
    gimpPlugins.farbfeld
 | 
			
		||||
 | 
			
		||||
      # Emacs stuff
 | 
			
		||||
      emacs-all-the-icons-fonts
 | 
			
		||||
    # Dev
 | 
			
		||||
    devenv
 | 
			
		||||
    dive # A tool for exploring each layer in a docker image
 | 
			
		||||
    grype # Vulnerability scanner for container images and filesystems
 | 
			
		||||
    kicad # Working on my custom keyboard
 | 
			
		||||
    podman-desktop
 | 
			
		||||
    podman-compose
 | 
			
		||||
    tectonic # better LaTeX engine
 | 
			
		||||
    virt-manager
 | 
			
		||||
    zeal
 | 
			
		||||
 | 
			
		||||
      # Gnome stuff
 | 
			
		||||
      gnome-tweaks
 | 
			
		||||
      gnomeExtensions.docker
 | 
			
		||||
      gnomeExtensions.syncthing-indicator
 | 
			
		||||
      gnomeExtensions.tray-icons-reloaded
 | 
			
		||||
      gthumb
 | 
			
		||||
 | 
			
		||||
      # Graphics
 | 
			
		||||
      inkscape
 | 
			
		||||
      gimp
 | 
			
		||||
      gimpPlugins.fourier
 | 
			
		||||
      gimpPlugins.farbfeld
 | 
			
		||||
 | 
			
		||||
      # Dev
 | 
			
		||||
      devenv
 | 
			
		||||
      dive # A tool for exploring each layer in a docker image
 | 
			
		||||
      grype # Vulnerability scanner for container images and filesystems
 | 
			
		||||
      kicad # Working on my custom keyboard
 | 
			
		||||
      podman-desktop
 | 
			
		||||
      podman-compose
 | 
			
		||||
      tectonic # better LaTeX engine
 | 
			
		||||
      virt-manager
 | 
			
		||||
      zeal
 | 
			
		||||
    ]
 | 
			
		||||
    ++ scripts;
 | 
			
		||||
    ## LSP servers
 | 
			
		||||
    bash-language-server
 | 
			
		||||
    docker-language-server
 | 
			
		||||
    kdePackages.qtdeclarative # For QML LSP
 | 
			
		||||
    nil # Nix
 | 
			
		||||
    python3 # for Emacs and LSP
 | 
			
		||||
    yaml-language-server # Yaml (Docker, GitHub Actions, ...)
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,12 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  modules = {
 | 
			
		||||
    emacs.enable = true;
 | 
			
		||||
    kdeconnect.enable = true;
 | 
			
		||||
    kitty.enable = true;
 | 
			
		||||
    mbsync.enable = true;
 | 
			
		||||
    mpd.enable = true;
 | 
			
		||||
    mpv.enable = true;
 | 
			
		||||
    wofi.enable = true;
 | 
			
		||||
    yt-dlp.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@ -1,8 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  imports = [./light-home.nix];
 | 
			
		||||
  home.phundrak.sshKey = {
 | 
			
		||||
    content = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILw9oiK8tZ5Vpz82RaRLpITU8qeJrT2hjvudGEDQu2QW lucien@phundrak.com";
 | 
			
		||||
    file = "/home/phundrak/.ssh/id_ed25519.pub";
 | 
			
		||||
  };
 | 
			
		||||
  modules.nh.flake = "/tank/phundrak/nixos";
 | 
			
		||||
}
 | 
			
		||||
@ -1,19 +0,0 @@
 | 
			
		||||
{
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  ...
 | 
			
		||||
}: let
 | 
			
		||||
  askpass = import ./askpass.nix {inherit pkgs;};
 | 
			
		||||
in [
 | 
			
		||||
  askpass
 | 
			
		||||
  (import ./backup.nix {inherit pkgs;})
 | 
			
		||||
  (import ./keygen.nix {inherit pkgs;})
 | 
			
		||||
  (import ./launch-with-emacsclient.nix {
 | 
			
		||||
    inherit pkgs;
 | 
			
		||||
    emacsPackage = config.emacsPkg;
 | 
			
		||||
  })
 | 
			
		||||
  (import ./mp42webm.nix {inherit pkgs;})
 | 
			
		||||
  (import ./plock.nix {inherit pkgs;})
 | 
			
		||||
  (import ./screenshot.nix {inherit pkgs;})
 | 
			
		||||
  (import ./sshbind.nix {inherit pkgs;})
 | 
			
		||||
]
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user