completely refactor and modularize flake
This commit is contained in:
		
							parent
							
								
									3b1ed7e281
								
							
						
					
					
						commit
						b7210fcf8e
					
				
					 141 changed files with 884 additions and 2605 deletions
				
			
		
							
								
								
									
										11
									
								
								modules/default/common/autoupdate.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								modules/default/common/autoupdate.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  system.autoUpgrade = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    dates = "04:00";
 | 
			
		||||
    flake = "git+ssh://gitea@git.huwe.mooo.com/willifan/nix-config";
 | 
			
		||||
    persistent = true;
 | 
			
		||||
    randomizedDelaySec = "5min";
 | 
			
		||||
    fixedRandomDelay = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								modules/default/common/boot.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								modules/default/common/boot.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  boot = {
 | 
			
		||||
    loader.systemd-boot.enable = true;
 | 
			
		||||
    loader.efi.canTouchEfiVariables = true;
 | 
			
		||||
    initrd.systemd.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										35
									
								
								modules/default/common/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								modules/default/common/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,35 @@
 | 
			
		|||
{ lib, config, hostname, ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
    
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./desktop
 | 
			
		||||
    ./nixvim
 | 
			
		||||
    ./server
 | 
			
		||||
 | 
			
		||||
    ./autoupdate.nix
 | 
			
		||||
    ./boot.nix
 | 
			
		||||
    ./envvar.nix
 | 
			
		||||
    ./garbage-collect.nix
 | 
			
		||||
    ./keyd.nix
 | 
			
		||||
    ./locales.nix
 | 
			
		||||
    ./mimetype.nix
 | 
			
		||||
    ./optimise.nix
 | 
			
		||||
    ./options.nix
 | 
			
		||||
    ./packages.nix
 | 
			
		||||
    ./sops.nix
 | 
			
		||||
    ./stylix.nix
 | 
			
		||||
    ./syncthing.nix
 | 
			
		||||
    ./users.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  networking = {
 | 
			
		||||
    networkmanager.enable = true;
 | 
			
		||||
    hostName = "${hostname}";
 | 
			
		||||
  };
 | 
			
		||||
  console.keyMap = "de";
 | 
			
		||||
  nix.settings.experimental-features = [ "nix-command" "flakes" ];
 | 
			
		||||
  nixpkgs.config.allowUnfree = true;
 | 
			
		||||
  system.stateVersion = "23.11";
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										39
									
								
								modules/default/common/desktop/applications.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								modules/default/common/desktop/applications.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,39 @@
 | 
			
		|||
{ lib, config, pkgs, attrs, system, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages =
 | 
			
		||||
    (with pkgs; [
 | 
			
		||||
 | 
			
		||||
      bc
 | 
			
		||||
      jq
 | 
			
		||||
      xorg.xrandr
 | 
			
		||||
 | 
			
		||||
      feh
 | 
			
		||||
 | 
			
		||||
      enpass
 | 
			
		||||
      vesktop
 | 
			
		||||
      obsidian
 | 
			
		||||
      kicad
 | 
			
		||||
      protonmail-desktop
 | 
			
		||||
      signal-desktop
 | 
			
		||||
 | 
			
		||||
      piper
 | 
			
		||||
 | 
			
		||||
      qemu
 | 
			
		||||
 | 
			
		||||
      libreoffice
 | 
			
		||||
      blender
 | 
			
		||||
      gimp
 | 
			
		||||
      inkscape
 | 
			
		||||
      prusa-slicer
 | 
			
		||||
      UVtools
 | 
			
		||||
      audacity
 | 
			
		||||
 | 
			
		||||
      glib
 | 
			
		||||
    ])
 | 
			
		||||
    ++
 | 
			
		||||
    [
 | 
			
		||||
      attrs.zen.packages.${system}.specific
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								modules/default/common/desktop/boot.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								modules/default/common/desktop/boot.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  boot = {
 | 
			
		||||
    plymouth = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
#      theme = "bgrt";
 | 
			
		||||
#      logo = "${pkgs.nixos-icons}/share/icons/hicolor/48x48/apps/nix-snowflake-white.png";
 | 
			
		||||
#      font = "${pkgs.dejavu_fonts.minimal}/share/fonts/truetype/DejaVuSans.ttf";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    consoleLogLevel = 0;
 | 
			
		||||
    initrd.verbose = false;
 | 
			
		||||
    kernelParams = [
 | 
			
		||||
      "quiet"
 | 
			
		||||
      "splash"
 | 
			
		||||
      "boot.shell_on_fail"
 | 
			
		||||
      "loglevel=3"
 | 
			
		||||
      "rd.systemd.show_status=false"
 | 
			
		||||
      "rd.udev.log_level=3"
 | 
			
		||||
      "udev.log_priority=3"
 | 
			
		||||
    ];
 | 
			
		||||
    # Hide the OS choice for bootloaders.
 | 
			
		||||
    # It's still possible to open the bootloader list by pressing any key
 | 
			
		||||
    # It will just not appear on screen unless a key is pressed
 | 
			
		||||
    loader.timeout = 0;
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								modules/default/common/desktop/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								modules/default/common/desktop/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./applications.nix
 | 
			
		||||
    ./boot.nix
 | 
			
		||||
    ./emulation.nix
 | 
			
		||||
    ./hyprland.nix
 | 
			
		||||
    ./keyboard.nix
 | 
			
		||||
    ./nfs-client.nix
 | 
			
		||||
    ./nix-ld.nix
 | 
			
		||||
    ./pipewire.nix
 | 
			
		||||
    ./polkit.nix
 | 
			
		||||
    ./printers.nix
 | 
			
		||||
    ./remoteBuilder.nix
 | 
			
		||||
    ./ssh-server.nix
 | 
			
		||||
    ./thunar.nix
 | 
			
		||||
  ];
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								modules/default/common/desktop/emulation.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/default/common/desktop/emulation.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    melonDS
 | 
			
		||||
    dolphin-emu
 | 
			
		||||
    lime3ds
 | 
			
		||||
    cemu
 | 
			
		||||
    steam-rom-manager
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								modules/default/common/desktop/games/ROG_Pugio_II_fixes.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								modules/default/common/desktop/games/ROG_Pugio_II_fixes.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
 | 
			
		||||
  services.udev.extraRules = ''
 | 
			
		||||
    # Disable mouse as gamepad
 | 
			
		||||
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1906", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-joystick'"
 | 
			
		||||
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1908", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-joystick'"
 | 
			
		||||
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1906", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-event-joystick'"
 | 
			
		||||
    ACTION=="add", SUBSYSTEM=="input", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="1908", RUN+="/bin/sh -c 'chmod 000 /dev/input/by-id/usb-ASUSTeK_ROG_PUGIO_II-if03-event-joystick'"
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  services.ratbagd = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.libratbag.overrideAttrs (previousAttrs: {
 | 
			
		||||
      postInstall = ''
 | 
			
		||||
        # Ensure the target directory exists
 | 
			
		||||
        mkdir -p $out/share/libratbag/
 | 
			
		||||
        # cat the custom configuration file
 | 
			
		||||
        cat << EOF > $out/share/libratbag/asus-rog-pugio-II.device
 | 
			
		||||
[Device]
 | 
			
		||||
Name=ASUS ROG Pugio II
 | 
			
		||||
DeviceMatch=usb:0b05:1906;usb:0b05:1908
 | 
			
		||||
Driver=asus
 | 
			
		||||
 | 
			
		||||
[Driver/asus]
 | 
			
		||||
Profiles=3
 | 
			
		||||
Buttons=10
 | 
			
		||||
Leds=3
 | 
			
		||||
Dpis=4
 | 
			
		||||
Wireless=1
 | 
			
		||||
DpiRange=100:16000@100
 | 
			
		||||
ButtonMapping=f0;f1;f2;e4;e5;e6;0;e8;e9;e1;e2
 | 
			
		||||
EOF
 | 
			
		||||
      '';
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								modules/default/common/desktop/games/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								modules/default/common/desktop/games/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
 | 
			
		||||
    ./ROG_Pugio_II_fixes.nix
 | 
			
		||||
    ./mangohud.nix
 | 
			
		||||
    ./minecraft.nix
 | 
			
		||||
    ./moonlight.nix
 | 
			
		||||
    ./steam.nix
 | 
			
		||||
    ./tetrio.nix
 | 
			
		||||
    ./yuzu.nix
 | 
			
		||||
 | 
			
		||||
  ];
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								modules/default/common/desktop/games/mangohud.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/default/common/desktop/games/mangohud.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    mangohud
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								modules/default/common/desktop/games/minecraft.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/default/common/desktop/games/minecraft.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    prismlauncher
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								modules/default/common/desktop/games/moonlight.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								modules/default/common/desktop/games/moonlight.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = [
 | 
			
		||||
    pkgs.moonlight-qt
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								modules/default/common/desktop/games/steam.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								modules/default/common/desktop/games/steam.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  programs.steam = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    gamescopeSession = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  hardware.steam-hardware.enable = true;
 | 
			
		||||
 | 
			
		||||
  services.udev.extraRules = ''
 | 
			
		||||
    SUBSYSTEM=="tty", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2102", MODE="0660", TAG+="uaccess"
 | 
			
		||||
  '';
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								modules/default/common/desktop/games/tetrio.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								modules/default/common/desktop/games/tetrio.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = [
 | 
			
		||||
    pkgs.tetrio-desktop
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								modules/default/common/desktop/games/yuzu.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/default/common/desktop/games/yuzu.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    yuzu
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								modules/default/common/desktop/hyprland.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								modules/default/common/desktop/hyprland.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.desktop.autologin.enable {
 | 
			
		||||
 | 
			
		||||
  security.pam.services.hyprlock = {};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  services.greetd = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
     settings = rec {
 | 
			
		||||
      initial_session = {
 | 
			
		||||
        command = ''Hyprland'';
 | 
			
		||||
        user = "willifan";
 | 
			
		||||
      };
 | 
			
		||||
      default_session = initial_session;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								modules/default/common/desktop/keyboard.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/default/common/desktop/keyboard.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    qmk-udev-rules
 | 
			
		||||
    vial
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  hardware.keyboard.qmk.enable = true;
 | 
			
		||||
  services.udev.extraRules = ''
 | 
			
		||||
    KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{serial}=="*vial:f64c2b3c*", MODE="0660", GROUP="users", TAG+="uaccess", TAG+="udev-acl"
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								modules/default/common/desktop/nfs-client.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								modules/default/common/desktop/nfs-client.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    nfs-utils
 | 
			
		||||
  ];
 | 
			
		||||
  services.autofs = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    autoMaster = let
 | 
			
		||||
      mapConf = pkgs.writeText "auto.nfs" ''
 | 
			
		||||
        roms    -fstype=nfs4    192.168.178.19:/roms  
 | 
			
		||||
      '';
 | 
			
		||||
    in ''
 | 
			
		||||
      /mnt/nfs ${mapConf}
 | 
			
		||||
    ''; 
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								modules/default/common/desktop/nix-ld.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/default/common/desktop/nix-ld.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  programs.nix-ld.enable = true;
 | 
			
		||||
 | 
			
		||||
  programs.nix-ld.libraries = with pkgs; [
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								modules/default/common/desktop/pipewire.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/default/common/desktop/pipewire.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  security.rtkit.enable = true;
 | 
			
		||||
  services.pipewire = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    alsa.enable = true;
 | 
			
		||||
    alsa.support32Bit = true;
 | 
			
		||||
    pulse.enable = true;
 | 
			
		||||
    wireplumber.enable = true;
 | 
			
		||||
    # If you want to use JACK applications, uncomment this
 | 
			
		||||
    #jack.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								modules/default/common/desktop/polkit.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								modules/default/common/desktop/polkit.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    polkit_gnome
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  security.polkit.enable = true;
 | 
			
		||||
  systemd = {
 | 
			
		||||
    user.services.polkit-gnome-authentication-agent-1 = {
 | 
			
		||||
      description = "polkit-gnome-authentication-agent-1";
 | 
			
		||||
      wantedBy = [ "graphical-session.target" ];
 | 
			
		||||
      wants = [ "graphical-session.target" ];
 | 
			
		||||
      after = [ "graphical-session.target" ];
 | 
			
		||||
      serviceConfig = {
 | 
			
		||||
        Type = "simple";
 | 
			
		||||
        ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
 | 
			
		||||
        Restart = "on-failure";
 | 
			
		||||
        RestartSec = 1;
 | 
			
		||||
        TimeoutStopSec = 10;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								modules/default/common/desktop/printers.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/default/common/desktop/printers.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  services.printing = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    drivers = [ pkgs.gutenprint pkgs.gutenprintBin ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.avahi = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    nssmdns4 = true;
 | 
			
		||||
    openFirewall = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								modules/default/common/desktop/remoteBuilder.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								modules/default/common/desktop/remoteBuilder.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
	nix.buildMachines = [ {
 | 
			
		||||
	  hostName = "Anton";
 | 
			
		||||
    sshUser = "builder";
 | 
			
		||||
	  systems = [ "x86_64-linux" "aarch64-linux" ];
 | 
			
		||||
    protocol = "ssh";
 | 
			
		||||
	  # if the builder supports building for multiple architectures, 
 | 
			
		||||
	  # replace the previous line by, e.g.
 | 
			
		||||
	  # systems = ["x86_64-linux" "aarch64-linux"];
 | 
			
		||||
	  maxJobs = 1;
 | 
			
		||||
	  speedFactor = 2;
 | 
			
		||||
	  supportedFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ];
 | 
			
		||||
	  mandatoryFeatures = [ ];
 | 
			
		||||
	}];
 | 
			
		||||
	nix.distributedBuilds = true;
 | 
			
		||||
	# optional, useful when the builder has a faster internet connection than yours
 | 
			
		||||
	nix.extraOptions = ''
 | 
			
		||||
	  builders-use-substitutes = true
 | 
			
		||||
	'';
 | 
			
		||||
  boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								modules/default/common/desktop/ssh-server.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								modules/default/common/desktop/ssh-server.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
 | 
			
		||||
  services.openssh = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    ports = [ 22 ];
 | 
			
		||||
    settings = {
 | 
			
		||||
      PasswordAuthentication = false;
 | 
			
		||||
      AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ]
 | 
			
		||||
      UseDns = true;
 | 
			
		||||
      X11Forwarding = false;
 | 
			
		||||
      PermitRootLogin = "prohibit-password"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  users.users.willifan.openssh.authorizedKeys.keys = [
 | 
			
		||||
    "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMRriQfw3pusl04fGhCNVoRRpye71ZwkDXAtKB/FP1DLXA4cYrwjLzv/fG1hXi7lAMp2vLiABAg/UaTE8roGzlt62XsFNwc1TI5M8m67J0kLkCtz3MkIixe/3GOFXr03g80DPncLyoIYPvvNd/TftTBK4yrrZPvMJaRrZhW/QdLPQpdHalcNRZ4bnBOCtCoqQ6RGrRi2EeKaJDYIFNl13b9FxrXEJcXnbSDdr1KI3q7a+vkefI2knUf2Uk7ufOWTQ1aqc0heGtCNlHzwZUzW/dfrpPmoVPq3Fqxqd9uXqxMk1Z3VnOwWcK3VXfzzBXKTsX0MaUgF1EqxibkYs9bDZqLEXoRucBqk3wwMPy8RJXqQOupoqa2xEOoduBf1qDHEEm69coHCpPm2mQVUrwsPrmTHmOjh9ir0mkVBDRgHvhq/ctQTVO5/SE2NCgPdlvUV5s44LLsUyxBp5JWwXZWlVys+7Dhil6mtRDcH4CXceJn0VZ61Zv2jrCTxQjKsroitSkNbpAkKajQ9moLMAblsSwJzl3uvJJ3ydlxjZefwTO/GjyuJMY2sIU2Tu0YbIVgMyq5L782LduVlyWj+RLWoEu19OfMqQvTWhJnQPAbR82qGzlfTGRLUxoY+G5MYipJwgrBQ2TnpWvfpTrZxFrglSfekz0v54lWzNZpW+irImh4w== willifan@proton.me"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  nix.settings.trusted-users = [ "willifan" ];
 | 
			
		||||
  
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								modules/default/common/desktop/thunar.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								modules/default/common/desktop/thunar.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
lib.mkIf config.desktop.enable {
 | 
			
		||||
  services.gvfs.enable = true;
 | 
			
		||||
 | 
			
		||||
  services.tumbler.enable = true;
 | 
			
		||||
 | 
			
		||||
  programs.file-roller.enable = true;
 | 
			
		||||
 | 
			
		||||
  programs.thunar = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    plugins = with pkgs.xfce; [
 | 
			
		||||
      thunar-archive-plugin
 | 
			
		||||
      thunar-volman
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								modules/default/common/envvar.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								modules/default/common/envvar.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  environment.sessionVariables = {
 | 
			
		||||
    NIXOS_OZONE_WL = "1";
 | 
			
		||||
    XDG_CACHE_HOME  = "$HOME/.cache";
 | 
			
		||||
    XDG_CONFIG_HOME = "$HOME/.config";
 | 
			
		||||
    XDG_DATA_HOME   = "$HOME/.local/share";
 | 
			
		||||
    XDG_STATE_HOME  = "$HOME/.local/state";
 | 
			
		||||
 | 
			
		||||
    # Not officially in the specification
 | 
			
		||||
    #XDG_BIN_HOME    = "$HOME/.local/bin";
 | 
			
		||||
    #PATH = [ 
 | 
			
		||||
    #  "${XDG_BIN_HOME}"
 | 
			
		||||
    #];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								modules/default/common/garbage-collect.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								modules/default/common/garbage-collect.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  nix.gc = {
 | 
			
		||||
    automatic = true;
 | 
			
		||||
    dates = "04:30";
 | 
			
		||||
    persistent = true;
 | 
			
		||||
    options = "--delete-older-than 30d";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23
									
								
								modules/default/common/keyd.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								modules/default/common/keyd.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  services.keyd = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    keyboards.default = {
 | 
			
		||||
      ids = [ "*" ];
 | 
			
		||||
      settings = {
 | 
			
		||||
        main = {
 | 
			
		||||
          rightalt = "overload(altgr, rightalt)";
 | 
			
		||||
	        capslock = "overload(control, esc)";
 | 
			
		||||
	      };
 | 
			
		||||
	      altgr = {
 | 
			
		||||
          a = ''macro(compose a ")'';
 | 
			
		||||
          o = ''macro(compose o ")'';
 | 
			
		||||
      	  u = ''macro(compose u ")'';
 | 
			
		||||
      	  s = ''macro(compose s s)'';
 | 
			
		||||
	      };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								modules/default/common/locales.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								modules/default/common/locales.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  time.timeZone = "Europe/Berlin";
 | 
			
		||||
  i18n.defaultLocale = "en_US.UTF-8";
 | 
			
		||||
  i18n.extraLocaleSettings = {
 | 
			
		||||
    LC_ADDRESS = "de_DE.UTF-8";
 | 
			
		||||
    LC_IDENTIFICATION = "de_DE.UTF-8";
 | 
			
		||||
    LC_MEASUREMENT = "de_DE.UTF-8";
 | 
			
		||||
    LC_MONETARY = "de_DE.UTF-8";
 | 
			
		||||
    LC_NAME = "de_DE.UTF-8";
 | 
			
		||||
    LC_NUMERIC = "de_DE.UTF-8";
 | 
			
		||||
    LC_PAPER = "de_DE.UTF-8";
 | 
			
		||||
    LC_TELEPHONE = "de_DE.UTF-8";
 | 
			
		||||
    LC_TIME = "de_DE.UTF-8";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								modules/default/common/mimetype.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								modules/default/common/mimetype.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  xdg.mime.defaultApplications = {
 | 
			
		||||
    "application/pdf" = "zen.desktop";
 | 
			
		||||
    "text/html" = "zen.desktop";
 | 
			
		||||
    "x-scheme-handler/http" = "zen.desktop";
 | 
			
		||||
    "x-scheme-handler/https" = "zen.desktop";
 | 
			
		||||
    "x-scheme-handler/about" = "zen.desktop";
 | 
			
		||||
    "x-scheme-handler/unknown" = "zen.desktop";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  environment.sessionVariables.DEFAULT_BROWSER = "zen";
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								modules/default/common/nixvim/TODO.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								modules/default/common/nixvim/TODO.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
# Plugins
 | 
			
		||||
add cmp
 | 
			
		||||
try out nvimtree
 | 
			
		||||
add lualine
 | 
			
		||||
add autopairs
 | 
			
		||||
indent blankline??
 | 
			
		||||
todo comments
 | 
			
		||||
undo tree
 | 
			
		||||
bufferline?
 | 
			
		||||
startup?
 | 
			
		||||
KEYBINDS
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								modules/default/common/nixvim/autopairs.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								modules/default/common/nixvim/autopairs.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.nixvim.plugins.nvim-autopairs = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      disable_filetype = ["TelescopePrompt" "vim"];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										49
									
								
								modules/default/common/nixvim/cmp.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								modules/default/common/nixvim/cmp.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,49 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.nixvim.plugins = {
 | 
			
		||||
    cmp = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        autoEnableSources = true;
 | 
			
		||||
        experimental = {ghost_text = false;};
 | 
			
		||||
        performance = {
 | 
			
		||||
          debounce = 60;
 | 
			
		||||
          fetchingTimeout = 200;
 | 
			
		||||
          maxViewEntries = 30;
 | 
			
		||||
        };
 | 
			
		||||
        snippet = {expand = "luasnip";};
 | 
			
		||||
        formatting = {fields = ["kind" "abbr" "menu"];};
 | 
			
		||||
        sources = [
 | 
			
		||||
          {name = "git";}
 | 
			
		||||
          {name = "nvim_lsp";}
 | 
			
		||||
          {name = "emoji";}
 | 
			
		||||
          {
 | 
			
		||||
            name = "buffer"; # text within current buffer
 | 
			
		||||
            option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
 | 
			
		||||
            keywordLength = 3;
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            name = "path"; # file system paths
 | 
			
		||||
            keywordLength = 3;
 | 
			
		||||
          }
 | 
			
		||||
          {
 | 
			
		||||
            name = "luasnip"; # snippets
 | 
			
		||||
            keywordLength = 3;
 | 
			
		||||
          }
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        window = {
 | 
			
		||||
          completion = {border = "solid";};
 | 
			
		||||
          documentation = {border = "solid";};
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
    cmp-nvim-lsp = {enable = true;}; # lsp
 | 
			
		||||
    cmp-buffer = {enable = true;};
 | 
			
		||||
    cmp-path = {enable = true;}; # file system paths
 | 
			
		||||
    cmp_luasnip = {enable = true;}; # snippets
 | 
			
		||||
    cmp-cmdline = {enable = false;}; # autocomplete for cmdline
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								modules/default/common/nixvim/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								modules/default/common/nixvim/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.nixvim = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    defaultEditor = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./autopairs.nix
 | 
			
		||||
    ./cmp.nix
 | 
			
		||||
    ./filetype.nix
 | 
			
		||||
    ./gitsigns.nix
 | 
			
		||||
    ./illuminate.nix
 | 
			
		||||
    ./lsp.nix
 | 
			
		||||
    ./navic.nix
 | 
			
		||||
    ./neotree.nix
 | 
			
		||||
    ./settings.nix
 | 
			
		||||
    ./treesitter.nix
 | 
			
		||||
    ./whichkey.nix
 | 
			
		||||
    ./yazi.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								modules/default/common/nixvim/filetype.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								modules/default/common/nixvim/filetype.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.nixvim.files = {
 | 
			
		||||
    "ftplugin/nix.lua" = {
 | 
			
		||||
      opts = {
 | 
			
		||||
        expandtab = true;
 | 
			
		||||
        shiftwidth = 2;
 | 
			
		||||
        tabstop = 2;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								modules/default/common/nixvim/gitsigns.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								modules/default/common/nixvim/gitsigns.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.nixvim.plugins.gitsigns = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      signs = {
 | 
			
		||||
        add = {
 | 
			
		||||
          text = " ";
 | 
			
		||||
        };
 | 
			
		||||
        change = {
 | 
			
		||||
          text = " ";
 | 
			
		||||
        };
 | 
			
		||||
        delete = {
 | 
			
		||||
          text = " ";
 | 
			
		||||
        };
 | 
			
		||||
        untracked = {
 | 
			
		||||
          text = "";
 | 
			
		||||
        };
 | 
			
		||||
        topdelete = {
 | 
			
		||||
          text = " ";
 | 
			
		||||
        };
 | 
			
		||||
        changedelete = {
 | 
			
		||||
          text = " ";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								modules/default/common/nixvim/illuminate.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								modules/default/common/nixvim/illuminate.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.nixvim.plugins = {
 | 
			
		||||
    illuminate = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      underCursor = false;
 | 
			
		||||
      filetypesDenylist = [
 | 
			
		||||
        "Outline"
 | 
			
		||||
        "TelescopePrompt"
 | 
			
		||||
        "alpha"
 | 
			
		||||
        "harpoon"
 | 
			
		||||
        "reason"
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										80
									
								
								modules/default/common/nixvim/lsp.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								modules/default/common/nixvim/lsp.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,80 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.nixvim = {
 | 
			
		||||
    plugins = {
 | 
			
		||||
      lsp-lines = {enable = true;};
 | 
			
		||||
      lsp-format = {enable = true;};
 | 
			
		||||
      lsp = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        inlayHints = true;
 | 
			
		||||
        servers = {
 | 
			
		||||
      	  clangd = {enable = true;};
 | 
			
		||||
          html = {enable = true;};
 | 
			
		||||
          lua_ls = {enable = true;};
 | 
			
		||||
	        nixd = {enable = true;};
 | 
			
		||||
          pyright = {enable = true;};
 | 
			
		||||
          gopls = {enable = true;};
 | 
			
		||||
          jsonls = {enable = true;};
 | 
			
		||||
      	  rust_analyzer = {
 | 
			
		||||
            enable = true;
 | 
			
		||||
            installCargo = true;
 | 
			
		||||
            installRustc = true;
 | 
			
		||||
          };
 | 
			
		||||
          yamlls = {enable = true;};
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        keymaps = {
 | 
			
		||||
          silent = true;
 | 
			
		||||
          lspBuf = {
 | 
			
		||||
            gd = {
 | 
			
		||||
              action = "definition";
 | 
			
		||||
              desc = "Goto Definition";
 | 
			
		||||
            };
 | 
			
		||||
            gr = {
 | 
			
		||||
              action = "references";
 | 
			
		||||
              desc = "Goto References";
 | 
			
		||||
            };
 | 
			
		||||
            gD = {
 | 
			
		||||
              action = "declaration";
 | 
			
		||||
              desc = "Goto Declaration";
 | 
			
		||||
            };
 | 
			
		||||
            gI = {
 | 
			
		||||
              action = "implementation";
 | 
			
		||||
              desc = "Goto Implementation";
 | 
			
		||||
            };
 | 
			
		||||
            gT = {
 | 
			
		||||
              action = "type_definition";
 | 
			
		||||
              desc = "Type Definition";
 | 
			
		||||
            };
 | 
			
		||||
            K = {
 | 
			
		||||
              action = "hover";
 | 
			
		||||
              desc = "Hover";
 | 
			
		||||
            };
 | 
			
		||||
            "<leader>cw" = {
 | 
			
		||||
              action = "workspace_symbol";
 | 
			
		||||
              desc = "Workspace Symbol";
 | 
			
		||||
            };
 | 
			
		||||
            "<leader>cr" = {
 | 
			
		||||
              action = "rename";
 | 
			
		||||
              desc = "Rename";
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
          diagnostic = {
 | 
			
		||||
            "<leader>cd" = {
 | 
			
		||||
              action = "open_float";
 | 
			
		||||
              desc = "Line Diagnostics";
 | 
			
		||||
            };
 | 
			
		||||
            "[d" = {
 | 
			
		||||
              action = "goto_next";
 | 
			
		||||
              desc = "Next Diagnostic";
 | 
			
		||||
            };
 | 
			
		||||
            "]d" = {
 | 
			
		||||
              action = "goto_prev";
 | 
			
		||||
              desc = "Previous Diagnostic";
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								modules/default/common/nixvim/navic.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								modules/default/common/nixvim/navic.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.nixvim.plugins = {
 | 
			
		||||
    navic = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        separator = "  ";
 | 
			
		||||
        highlight = true;
 | 
			
		||||
        lsp = {
 | 
			
		||||
          autoAttach = true;
 | 
			
		||||
        };
 | 
			
		||||
        icons = {
 | 
			
		||||
          Array = "  ";
 | 
			
		||||
          Boolean = "  ";
 | 
			
		||||
          Class = "  ";
 | 
			
		||||
          Constant = "  ";
 | 
			
		||||
          Constructor = "  ";
 | 
			
		||||
          Enum = " ";
 | 
			
		||||
          EnumMember = " ";
 | 
			
		||||
          Event = " ";
 | 
			
		||||
          Field = " ";
 | 
			
		||||
          File = " ";
 | 
			
		||||
          Function = " ";
 | 
			
		||||
          Interface = " ";
 | 
			
		||||
          Key = "  ";
 | 
			
		||||
          Method = " ";
 | 
			
		||||
          Module = " ";
 | 
			
		||||
          Namespace = " ";
 | 
			
		||||
          Null = " ";
 | 
			
		||||
          Number = " ";
 | 
			
		||||
          Object = "  ";
 | 
			
		||||
          Operator = " ";
 | 
			
		||||
          Package = " ";
 | 
			
		||||
          String = " ";
 | 
			
		||||
          Struct = " ";
 | 
			
		||||
          TypeParameter = " ";
 | 
			
		||||
          Variable = " ";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								modules/default/common/nixvim/neotree.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								modules/default/common/nixvim/neotree.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.nixvim = {
 | 
			
		||||
    plugins = {
 | 
			
		||||
      neo-tree = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        sources = ["filesystem" "buffers" "git_status" "document_symbols"];
 | 
			
		||||
        addBlankLineAtTop = false;
 | 
			
		||||
 | 
			
		||||
        filesystem = {
 | 
			
		||||
          bindToCwd = false;
 | 
			
		||||
          followCurrentFile = {
 | 
			
		||||
            enabled = true;
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        defaultComponentConfigs = {
 | 
			
		||||
          indent = {
 | 
			
		||||
            withExpanders = true;
 | 
			
		||||
            expanderCollapsed = "";
 | 
			
		||||
            expanderExpanded = "";
 | 
			
		||||
            expanderHighlight = "NeoTreeExpander";
 | 
			
		||||
          };
 | 
			
		||||
 | 
			
		||||
          gitStatus = {
 | 
			
		||||
            symbols = {
 | 
			
		||||
              added = " ";
 | 
			
		||||
              conflict = " ";
 | 
			
		||||
              deleted = "";
 | 
			
		||||
              ignored = " ";
 | 
			
		||||
              modified = " ";
 | 
			
		||||
              renamed = "";
 | 
			
		||||
              staged = "";
 | 
			
		||||
              unstaged = "";
 | 
			
		||||
              untracked = " ";
 | 
			
		||||
            };
 | 
			
		||||
          };
 | 
			
		||||
	};
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										101
									
								
								modules/default/common/nixvim/settings.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								modules/default/common/nixvim/settings.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,101 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.nixvim = {
 | 
			
		||||
    config = {
 | 
			
		||||
      extraConfigLuaPre =
 | 
			
		||||
        # lua
 | 
			
		||||
        ''
 | 
			
		||||
          vim.fn.sign_define("diagnosticsignerror", { text = " ", texthl = "diagnosticerror", linehl = "", numhl = "" })
 | 
			
		||||
          vim.fn.sign_define("diagnosticsignwarn", { text = " ", texthl = "diagnosticwarn", linehl = "", numhl = "" })
 | 
			
		||||
          vim.fn.sign_define("diagnosticsignhint", { text = "", texthl = "diagnostichint", linehl = "", numhl = "" })
 | 
			
		||||
          vim.fn.sign_define("diagnosticsigninfo", { text = " ", texthl = "diagnosticinfo", linehl = "", numhl = "" })
 | 
			
		||||
        '';
 | 
			
		||||
 | 
			
		||||
      clipboard = {
 | 
			
		||||
        providers.wl-copy.enable = true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      opts = {
 | 
			
		||||
        # Show line numbers
 | 
			
		||||
        number = true;
 | 
			
		||||
 | 
			
		||||
        # Show relative line numbers
 | 
			
		||||
        relativenumber = true;
 | 
			
		||||
 | 
			
		||||
        # Use the system clipboard
 | 
			
		||||
        clipboard = "unnamedplus";
 | 
			
		||||
 | 
			
		||||
        # Number of spaces that represent a <TAB>
 | 
			
		||||
        tabstop = 2;
 | 
			
		||||
        softtabstop = 2;
 | 
			
		||||
 | 
			
		||||
        # Show tabline always
 | 
			
		||||
        showtabline = 2;
 | 
			
		||||
 | 
			
		||||
        # Use spaces instead of tabs
 | 
			
		||||
        expandtab = true;
 | 
			
		||||
 | 
			
		||||
        # Enable smart indentation
 | 
			
		||||
        smartindent = true;
 | 
			
		||||
 | 
			
		||||
        # Number of spaces to use for each step of (auto)indent
 | 
			
		||||
        shiftwidth = 2;
 | 
			
		||||
 | 
			
		||||
        # Enable break indent
 | 
			
		||||
        breakindent = true;
 | 
			
		||||
 | 
			
		||||
        # Highlight the screen line of the cursor
 | 
			
		||||
        cursorline = true;
 | 
			
		||||
 | 
			
		||||
        # Minimum number of screen lines to keep above and below the cursor
 | 
			
		||||
        scrolloff = 8;
 | 
			
		||||
 | 
			
		||||
        # Enable mouse support
 | 
			
		||||
        mouse = "a";
 | 
			
		||||
 | 
			
		||||
        # Set folding method to manual
 | 
			
		||||
        foldmethod = "manual";
 | 
			
		||||
 | 
			
		||||
        # Disable folding by default
 | 
			
		||||
        foldenable = false;
 | 
			
		||||
 | 
			
		||||
        # Wrap long lines at a character in 'breakat'
 | 
			
		||||
        linebreak = true;
 | 
			
		||||
 | 
			
		||||
        # Disable spell checking
 | 
			
		||||
        spell = false;
 | 
			
		||||
 | 
			
		||||
        # Disable swap file creation
 | 
			
		||||
        swapfile = false;
 | 
			
		||||
 | 
			
		||||
        # Time in milliseconds to wait for a mapped sequence to complete
 | 
			
		||||
        timeoutlen = 300;
 | 
			
		||||
 | 
			
		||||
        # Enable 24-bit RGB color in the TUI
 | 
			
		||||
        termguicolors = true;
 | 
			
		||||
 | 
			
		||||
        # Don't show mode in the command line
 | 
			
		||||
        showmode = false;
 | 
			
		||||
 | 
			
		||||
        # Open new split below the current window
 | 
			
		||||
        splitbelow = true;
 | 
			
		||||
 | 
			
		||||
        # Keep the screen when splitting
 | 
			
		||||
        splitkeep = "screen";
 | 
			
		||||
 | 
			
		||||
        # Open new split to the right of the current window
 | 
			
		||||
        splitright = true;
 | 
			
		||||
 | 
			
		||||
        # Hide command line unless needed
 | 
			
		||||
        cmdheight = 0;
 | 
			
		||||
 | 
			
		||||
        # Remove EOB
 | 
			
		||||
        fillchars = {
 | 
			
		||||
          eob = " ";
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								modules/default/common/nixvim/treesitter.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/default/common/nixvim/treesitter.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.nixvim.plugins = {
 | 
			
		||||
    treesitter = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      settings = {
 | 
			
		||||
        indent.enable = true;
 | 
			
		||||
        highlight.enable = true;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								modules/default/common/nixvim/whichkey.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/default/common/nixvim/whichkey.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{  
 | 
			
		||||
  
 | 
			
		||||
  programs.nixvim.plugins = {
 | 
			
		||||
    which-key = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								modules/default/common/nixvim/yazi.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/default/common/nixvim/yazi.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.nixvim.plugins = {
 | 
			
		||||
    yazi = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								modules/default/common/optimise.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/default/common/optimise.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  nix.optimise = {
 | 
			
		||||
    automatic = true;
 | 
			
		||||
    dates = [ "05:00" ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								modules/default/common/options.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/default/common/options.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
{ lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
  options = {
 | 
			
		||||
    desktop.enable = lib.mkOption {
 | 
			
		||||
      default = false;
 | 
			
		||||
      type = lib.types.bool;
 | 
			
		||||
    };
 | 
			
		||||
    server.enable = lib.mkOption {
 | 
			
		||||
      default = false;
 | 
			
		||||
      type = lib.types.bool;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								modules/default/common/packages.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								modules/default/common/packages.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
{ pkgs, ...}:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    tealdeer
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								modules/default/common/server/builder.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								modules/default/common/server/builder.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.server.enable {
 | 
			
		||||
  users.users.builder = {
 | 
			
		||||
    group = "builder";
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    homeMode = "111";
 | 
			
		||||
    openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCRgaPLmdimjvCM7jvlXkRPbw0KOmMdtgTcBahgIWNm8QAFkPX8T42RNDgTb7QG+XqRU4+t4VgM0xt6ldcOTrrcJ2bHW8ybeXM5DU7z2f0aCp3OULosbDHoWiEdxvNmIHcFKgMbL7K/ieVYx5wrPkU+63inK5GrzWIaOOd8O4Q/z7M/XIwOAz2Kb3B4muCG9b9cKAGodOkRT81aJsK0aE84Cy4DbzCgz34FWvfGPWSHQZ/fLNlKrtKI0lCEG5r7r1Tw1wXDAFb7d+enypUwy+KlQDJLkDp0O1dJPEmY0RKXMRL2xFl3jrQ4LgOAyWhXF2ERc2bkky4YaIQfLX3NaMRqVRmUCVpnGRcYqdbn2ulsUOmC0Or/bnJa7/sKFBhFb8aEoxD7/w4h5ugh0xVWMFvwjDb0gymXjNPgvefagAhi8qhxf/6X4AZK4x7y/tcIKpW3QfyrdX7bWQ7itBpMPtYH6WWyoKfypnAGeUtdwcXsb5cwGoJ4s9S/E1CwyZxdC38ydrDYFeRih7+KDHnOqZFnLwBb6yLdpvUhyMkksAzVxh8cvObVgjUFQMAwKvLKVzlv28BLgaWj+K+oFakytRtYZv7CsCneZyL3s/nDKs2ChhYgiXvVicZi+sC8FXZIl6wXWHYj5i/p5A/6ulVFgkfDna051hNewerXuTlyMMbTRw== willifan@pm.me" ];
 | 
			
		||||
  };
 | 
			
		||||
  users.groups.builder = { };
 | 
			
		||||
  nix.settings.trusted-users = [ "builder" "willifan" ];
 | 
			
		||||
 | 
			
		||||
  boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
 | 
			
		||||
  nix.settings.extra-platforms = config.boot.binfmt.emulatedSystems;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								modules/default/common/server/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								modules/default/common/server/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./builder.nix
 | 
			
		||||
    ./ssh-server.nix
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								modules/default/common/server/ssh-server.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								modules/default/common/server/ssh-server.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
lib.mkIf config.server.enable {
 | 
			
		||||
 | 
			
		||||
  services.openssh = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    ports = [ 22 ];
 | 
			
		||||
    settings = {
 | 
			
		||||
      PasswordAuthentication = false;
 | 
			
		||||
      AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ]
 | 
			
		||||
      UseDns = true;
 | 
			
		||||
      X11Forwarding = false;
 | 
			
		||||
      PermitRootLogin = "prohibit-password"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  users.users.willifan.openssh.authorizedKeys.keys = [
 | 
			
		||||
    "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDMRriQfw3pusl04fGhCNVoRRpye71ZwkDXAtKB/FP1DLXA4cYrwjLzv/fG1hXi7lAMp2vLiABAg/UaTE8roGzlt62XsFNwc1TI5M8m67J0kLkCtz3MkIixe/3GOFXr03g80DPncLyoIYPvvNd/TftTBK4yrrZPvMJaRrZhW/QdLPQpdHalcNRZ4bnBOCtCoqQ6RGrRi2EeKaJDYIFNl13b9FxrXEJcXnbSDdr1KI3q7a+vkefI2knUf2Uk7ufOWTQ1aqc0heGtCNlHzwZUzW/dfrpPmoVPq3Fqxqd9uXqxMk1Z3VnOwWcK3VXfzzBXKTsX0MaUgF1EqxibkYs9bDZqLEXoRucBqk3wwMPy8RJXqQOupoqa2xEOoduBf1qDHEEm69coHCpPm2mQVUrwsPrmTHmOjh9ir0mkVBDRgHvhq/ctQTVO5/SE2NCgPdlvUV5s44LLsUyxBp5JWwXZWlVys+7Dhil6mtRDcH4CXceJn0VZ61Zv2jrCTxQjKsroitSkNbpAkKajQ9moLMAblsSwJzl3uvJJ3ydlxjZefwTO/GjyuJMY2sIU2Tu0YbIVgMyq5L782LduVlyWj+RLWoEu19OfMqQvTWhJnQPAbR82qGzlfTGRLUxoY+G5MYipJwgrBQ2TnpWvfpTrZxFrglSfekz0v54lWzNZpW+irImh4w== willifan@proton.me"
 | 
			
		||||
    "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCd8g40ehDWL44XbzDY4qbka6FD4oCGA8stA5EqKdORhUqXAqEjw8s8kqNbok13RtSRpC5cgt8dsXG+lXL7A5oldq1u02+yl3YJtyt0nl+cH0WUEHdx7z3uWZPfI2WJh7Q14n0bl/31Rnxsw2A93JTrWqRCs4sV8CG4K8b5WhQSTJEbSO61z7tMEETfag+20FSA2sPP+QZCbxIGdRfTx/aA2pUlkSy5ih0WjwCJlI2wkTQsdsmHuZnPse0QRejbORSfHc/jh7KFFV/KR/UHs4X1EH4dOo4lebigUdtoUwlK9ciBaK1fFCLERJNWMCJOK5zfd3nUEbk7+hXVkAPTB/mDxYub8trpZSCu+3X3z10GM/AuSlk/8lrNQxUpovLffb8bJWSdAH7QdMM/fdgt0YHxt/FEpz5fiB7RHxQ4w/CQC+a+FOVDGFddd4uinX+999ZpshHKnB+R0Yi/7C+XoyhgytNATsPQlWYF367DWXA4cfSmpxchmi1EK4M0XBC8UxtF/EW0ULV2WFAFrO77LKKZ0UkjT7UWv6F3CofY1tAI4Kem6ervegXlasUe3AogiTuIvXfQm5kUk2fgK//VTe4vqQY+BqezHDYgSVbB/FASd0Z5vv+f7zRdqOhLH3ybkjTeQ4MlS0HHO2BCaAKjCmSBBn6w2pC92Qz32uK28w7yhQ== root@Lenni"
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								modules/default/common/sops.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								modules/default/common/sops.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  sops.defaultSopsFile = ../../../secrets/secrets.yaml;
 | 
			
		||||
  sops.defaultSopsFormat = "yaml";
 | 
			
		||||
 | 
			
		||||
  sops.age.keyFile = "/home/willifan/.config/sops/age/keys.txt";
 | 
			
		||||
 | 
			
		||||
  sops.secrets."ssh/root/private" = {
 | 
			
		||||
    owner = "root";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  sops.secrets."syncthing/password" = {
 | 
			
		||||
    mode = "440";
 | 
			
		||||
    group = "syncthing";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  users.groups.syncthing = { };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										33
									
								
								modules/default/common/stylix.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								modules/default/common/stylix.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
let
 | 
			
		||||
  wallpaper = pkgs.fetchurl {
 | 
			
		||||
    url = "https://files.huwe.mooo.com/Oneshot.png";
 | 
			
		||||
    hash = "sha256-LaIzLCW86sbldE9lk7psbYKaTCjwaPLcoD3il6FalTw=";
 | 
			
		||||
  };
 | 
			
		||||
  plymouth_logo = pkgs.fetchurl {
 | 
			
		||||
    url = "https://files.huwe.mooo.com/outlinenobackground.png";
 | 
			
		||||
    hash = "sha256-HdErySgSwNSPEHyBywLyZCAss4vUhsY8BvCPe5hST6Q=";
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  stylix = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
 | 
			
		||||
    autoEnable = true;
 | 
			
		||||
 | 
			
		||||
    base16Scheme = "${pkgs.base16-schemes}/share/themes/pasque.yaml";
 | 
			
		||||
    override = {
 | 
			
		||||
      base0D = "F3196E";
 | 
			
		||||
      base0F = "CFAACF";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    image = wallpaper;
 | 
			
		||||
 | 
			
		||||
    polarity = "dark";
 | 
			
		||||
 | 
			
		||||
    targets.plymouth.logo = plymouth_logo;
 | 
			
		||||
    
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										65
									
								
								modules/default/common/syncthing.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								modules/default/common/syncthing.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,65 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
let
 | 
			
		||||
  deviceList = builtins.attrNames config.common.syncthing.devices;
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  options = {
 | 
			
		||||
    common.syncthing = {
 | 
			
		||||
 | 
			
		||||
      enable = lib.mkEnableOption "enable syncthing";
 | 
			
		||||
 | 
			
		||||
      devices = lib.mkOption {
 | 
			
		||||
        type = lib.types.attrsOf (lib.types.submodule {
 | 
			
		||||
          
 | 
			
		||||
          options.id = lib.mkOption { type = lib.types.str; };
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
        
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  config.home-manager.users.willifan.services.syncthing = lib.mkIf config.common.syncthing.enable {
 | 
			
		||||
    enable = lib.mkDefault true;
 | 
			
		||||
    overrideDevices = lib.mkDefault true;
 | 
			
		||||
    overrideFolders = lib.mkDefault true;
 | 
			
		||||
    passwordFile = config.sops.secrets."syncthing/password".path;
 | 
			
		||||
    settings = {
 | 
			
		||||
      gui.user = "willifan";
 | 
			
		||||
      devices = config.common.syncthing.devices;
 | 
			
		||||
      folders = lib.mkDefault {
 | 
			
		||||
        "Documents" = {
 | 
			
		||||
          id = "jtl6g-qjmwo";
 | 
			
		||||
          path = "/mnt/data/Documents";
 | 
			
		||||
          devices = deviceList;
 | 
			
		||||
        };
 | 
			
		||||
        "Enpass" = lib.mkDefault {
 | 
			
		||||
          id = "ciksm-xsw4m";
 | 
			
		||||
          path = "/mnt/data/Enpass";
 | 
			
		||||
          devices = deviceList;
 | 
			
		||||
        };
 | 
			
		||||
        "Pictures" = lib.mkDefault {
 | 
			
		||||
          id = "po4qj-q9t0t";
 | 
			
		||||
          path = "/mnt/data/Pictures";
 | 
			
		||||
          devices = deviceList;
 | 
			
		||||
        };
 | 
			
		||||
        "Videos" = lib.mkDefault {
 | 
			
		||||
          id = "4wqf5-xasng";
 | 
			
		||||
          path = "/mnt/data/Videos";
 | 
			
		||||
          devices = deviceList;
 | 
			
		||||
        };
 | 
			
		||||
        "Notes" = lib.mkDefault {
 | 
			
		||||
          id = "oc61n-iewgj";
 | 
			
		||||
          path = "/mnt/data/Notes";
 | 
			
		||||
          devices = deviceList;
 | 
			
		||||
        };
 | 
			
		||||
        "Music" = lib.mkDefault {
 | 
			
		||||
          id = "xxh8a-3y2tq";
 | 
			
		||||
          path = "/mnt/data/Music";
 | 
			
		||||
          devices = deviceList;
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								modules/default/common/users.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/default/common/users.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  users.users.willifan = {
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    description = "willifan";
 | 
			
		||||
    extraGroups = [ "networkmanager" "wheel" "syncthing" ];
 | 
			
		||||
    shell = pkgs.bash;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								modules/default/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								modules/default/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./common
 | 
			
		||||
    ./home-manager
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								modules/default/home-manager/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								modules/default/home-manager/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./desktop
 | 
			
		||||
    ./shell
 | 
			
		||||
    ./tmux
 | 
			
		||||
    ./utils
 | 
			
		||||
      ./git.nix
 | 
			
		||||
      ./stylix.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  home-manager.users.willifan = { 
 | 
			
		||||
    imports = [
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    home.stateVersion = "23.11";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										17
									
								
								modules/default/home-manager/desktop/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								modules/default/home-manager/desktop/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,17 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./hyprland
 | 
			
		||||
 | 
			
		||||
    ./options.nix
 | 
			
		||||
      ./kitty.nix
 | 
			
		||||
      ./vscodium.nix
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    imports = [
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								modules/default/home-manager/desktop/hyprland/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								modules/default/home-manager/desktop/hyprland/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,21 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  #home-manager.users.willifan = {
 | 
			
		||||
    imports = [
 | 
			
		||||
      ./fuzzel.nix
 | 
			
		||||
      ./hyprexit.nix
 | 
			
		||||
      ./hypridle.nix
 | 
			
		||||
      ./hyprlock.nix
 | 
			
		||||
      ./hyprpaper.nix
 | 
			
		||||
      ./mako.nix
 | 
			
		||||
      ./utils.nix
 | 
			
		||||
      ./wlogout.nix
 | 
			
		||||
    ./options.nix
 | 
			
		||||
      ./hyprland.nix
 | 
			
		||||
    ];
 | 
			
		||||
  #};
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								modules/default/home-manager/desktop/hyprland/fuzzel.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								modules/default/home-manager/desktop/hyprland/fuzzel.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  programs.fuzzel = lib.mkIf config.desktop.fuzzel.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      main = {
 | 
			
		||||
        lines = 12;
 | 
			
		||||
	      width = 45;
 | 
			
		||||
	      line-height = 20;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								modules/default/home-manager/desktop/hyprland/hyprexit.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								modules/default/home-manager/desktop/hyprland/hyprexit.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  home.packages = lib.mkIf config.desktop.hyprexit.enable [
 | 
			
		||||
    (pkgs.writeShellScriptBin "hyprexit" ''
 | 
			
		||||
      ${pkgs.hyprland}/bin/hyprctl dispatch exit
 | 
			
		||||
      ${pkgs.systemd}/bin/loginctl terminate-user willifan
 | 
			
		||||
    '')
 | 
			
		||||
  ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								modules/default/home-manager/desktop/hyprland/hypridle.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								modules/default/home-manager/desktop/hyprland/hypridle.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,40 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  services.hypridle = lib.mkIf config.desktop.hypridle.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
        
 | 
			
		||||
      general = {
 | 
			
		||||
        lock_cmd = "pidof hyprlock || hyprlock";       # avoid starting multiple hyprlock instances.
 | 
			
		||||
        before_sleep_cmd = "loginctl lock-session && sleep 2";    # lock before suspend.
 | 
			
		||||
        after_sleep_cmd = "hyprctl dispatch dpms on";  # to avoid having to press a key twice to turn on the display.
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      listener = [
 | 
			
		||||
        #{
 | 
			
		||||
        #  timeout = 150;                                # 2.5min.
 | 
			
		||||
        #  on-timeout = brightnessctl -s set 10;         # set monitor backlight to minimum, avoid 0 on OLED monitor.
 | 
			
		||||
        #  on-resume = brightnessctl -r;                 # monitor backlight restor.
 | 
			
		||||
        #}
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          timeout = 300;                                 # 5min
 | 
			
		||||
          on-timeout = "loginctl lock-session";            # lock screen when timeout has passed
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
          timeout = 380;                                 # 5.5min
 | 
			
		||||
          on-timeout = "hyprctl dispatch dpms off";        # screen off when timeout has passed
 | 
			
		||||
          on-resume = "hyprctl dispatch dpms on";          # screen on when activity is detected after timeout has fired.
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        {
 | 
			
		||||
            timeout = 600;                               # 30min
 | 
			
		||||
            on-timeout = "systemctl suspend-then-hibernate"; # suspend pc
 | 
			
		||||
        }
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										263
									
								
								modules/default/home-manager/desktop/hyprland/hyprland.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										263
									
								
								modules/default/home-manager/desktop/hyprland/hyprland.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,263 @@
 | 
			
		|||
{ pkgs, lib, config, ...}:
 | 
			
		||||
lib.mkIf config.desktop.hyprland.enable {
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  wayland.windowManager.hyprland = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    systemd.variables = ["--all"];
 | 
			
		||||
    package = pkgs.hyprland;
 | 
			
		||||
    settings = {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      "$SCRIPTS" = "$XDG_CONFIG_HOME/desktop-utils/scripts";
 | 
			
		||||
 | 
			
		||||
      misc = {
 | 
			
		||||
      	disable_hyprland_logo=true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      monitor = [
 | 
			
		||||
        ", preffered, auto, 1"
 | 
			
		||||
      ] ++ lib.optionals config.desktop.hyprland.hardware.Lenni.enable [
 | 
			
		||||
        "eDP-1, preferred, 0x0, 1.6"
 | 
			
		||||
      ] ++ lib.optionals config.desktop.hyprland.hardware.Puenktchen.enable [
 | 
			
		||||
        "desc:ViewSonic Corporation VX2705-2KP W6Z205100250, 2560x1440@144Hz, 0x384, 1.25"
 | 
			
		||||
        "desc:ViewSonic Corporation VX2705-2KP W6Z210400766, 2560x1440@144Hz, 2048x384, 1.25"
 | 
			
		||||
        "desc:BNQ BenQ BL2283 CAM01567019, 1920x1080@60Hz, 4096x0, 1.0, transform, 3"
 | 
			
		||||
      ];
 | 
			
		||||
      # Execute your favorite apps at launch
 | 
			
		||||
      exec-once = [
 | 
			
		||||
        ''hyprctl dispatch exec "[workspace 1 silent] zen"''
 | 
			
		||||
        ''hyprctl dispatch exec "[workspace 2 silent] kitty"''
 | 
			
		||||
        #''hyprctl dispatch exec "[workspace 3 silent] "''
 | 
			
		||||
        #''hyprctl dispatch exec "[workspace 4 silent] "''
 | 
			
		||||
        #''hyprctl dispatch exec "[workspace 8 silent] "''
 | 
			
		||||
        ''hyprctl dispatch exec "[workspace 9 silent] vesktop"''
 | 
			
		||||
        ''hyprctl dispatch exec "[workspace special:ctrl silent] thunar"''
 | 
			
		||||
        ''hyprctl dispatch exec "[workspace special:alt silent] obsidian"''
 | 
			
		||||
        #''hyprctl dispatch exec "[workspace special:altgr silent]"''
 | 
			
		||||
        #''hyprctl dispatch exec "[workspace special:strg silent] "''
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      xwayland.force_zero_scaling = true;
 | 
			
		||||
 | 
			
		||||
      input = {
 | 
			
		||||
        kb_layout = "us";
 | 
			
		||||
        kb_variant = "";
 | 
			
		||||
        kb_model = "";
 | 
			
		||||
        kb_options = "compose:menu";
 | 
			
		||||
        kb_rules = "";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        follow_mouse = 1;
 | 
			
		||||
 | 
			
		||||
        touchdevice.transform = lib.mkIf config.desktop.hyprland.hardware.Lillie.enable 3;
 | 
			
		||||
 | 
			
		||||
        touchpad.natural_scroll = "yes";
 | 
			
		||||
            
 | 
			
		||||
        sensitivity = -0.8; # -1.0 - 1.0, 0 means no modification.
 | 
			
		||||
        numlock_by_default = 1;
 | 
			
		||||
        special_fallthrough = true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      general = {
 | 
			
		||||
 | 
			
		||||
        gaps_in = 2;
 | 
			
		||||
        gaps_out = 5;
 | 
			
		||||
        border_size = 2;
 | 
			
		||||
#        "col.active_border" = "rgba(ffa44bee)";
 | 
			
		||||
#        "col.inactive_border" = "rgba(595959aa)";
 | 
			
		||||
 | 
			
		||||
        layout = "dwindle";
 | 
			
		||||
 | 
			
		||||
        resize_on_border = true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      decoration = {
 | 
			
		||||
 | 
			
		||||
        rounding = 10;
 | 
			
		||||
 | 
			
		||||
        blur = {
 | 
			
		||||
        	enabled = false;
 | 
			
		||||
          size = 3;
 | 
			
		||||
        	passes = 1;
 | 
			
		||||
        	new_optimizations = 1;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        shadow.enabled = true;
 | 
			
		||||
        shadow.range = 4;
 | 
			
		||||
        shadow.render_power = 3;
 | 
			
		||||
#        "col.shadow" = "rgba(1a1a1aee)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      misc = {
 | 
			
		||||
        vfr = true;
 | 
			
		||||
        mouse_move_enables_dpms = true;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      animations = {
 | 
			
		||||
        enabled = "yes";
 | 
			
		||||
 | 
			
		||||
        bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
 | 
			
		||||
 | 
			
		||||
        animation = [
 | 
			
		||||
          "windows, 1, 7, myBezier"
 | 
			
		||||
          "windowsOut, 1, 7, default, popin 80%"
 | 
			
		||||
          "border, 1, 10, default"
 | 
			
		||||
          "borderangle, 1, 8, default"
 | 
			
		||||
          "fade, 1, 7, default"
 | 
			
		||||
          "workspaces, 1, 6, default"
 | 
			
		||||
          "specialWorkspace, 1, 8, default, slidefadevert 20%"
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      dwindle = {
 | 
			
		||||
        pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
 | 
			
		||||
        preserve_split = "yes"; # you probably want this
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      gestures = {
 | 
			
		||||
        workspace_swipe = "on";
 | 
			
		||||
        workspace_swipe_create_new = "false";
 | 
			
		||||
        workspace_swipe_touch = lib.mkIf config.desktop.hyprland.hardware.Lillie.enable "true";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      device = lib.mkIf config.desktop.hyprland.hardware.Lenni.enable {
 | 
			
		||||
        name = "pixa3854:00-093a:0274-touchpad";
 | 
			
		||||
        sensitivity = 0;
 | 
			
		||||
        natural_scroll = "yes";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      windowrule = [
 | 
			
		||||
        "idleinhibit fullscreen, ^(firefox)$"
 | 
			
		||||
        "float, ^(thunar)$"
 | 
			
		||||
        "stayfocused, title:^(Enpass Assistant)$"
 | 
			
		||||
        "pin, title:^(Enpass Assistant)$"
 | 
			
		||||
        "center, title:^(Enpass Assistant)$"
 | 
			
		||||
        "float, ^(Enpass)$"
 | 
			
		||||
        "center, ^(Enpass)$"
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      windowrulev2 = [
 | 
			
		||||
        "center, xwayland:(1)"
 | 
			
		||||
        "nofocus,class:^jetbrains-(?!toolbox),floating:1,title:^win\d+$"
 | 
			
		||||
        ''workspace +0, workspace:name:special:ctrl, floating:0''
 | 
			
		||||
        ''float, workspace:name:special:altgr, onworkspace:w[2]''
 | 
			
		||||
        ''float, workspace:name:special:strg, onworkspace:w[1]''
 | 
			
		||||
        ''workspace +0, workspace:name:special:strg, floating:0''
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      "$mainMod" = "SUPER";
 | 
			
		||||
 | 
			
		||||
      bind = [
 | 
			
		||||
        ''$mainMod, Q, exec, kitty''
 | 
			
		||||
        ''$mainMod, C, killactive, ''
 | 
			
		||||
        ''$mainMod, M, exit, ''
 | 
			
		||||
        ''$mainMod, E, exec, thunar''
 | 
			
		||||
        ''$mainMod, V, togglefloating, ''
 | 
			
		||||
        ''$mainMod, R, exec, fuzzel''
 | 
			
		||||
        ''$mainMod, P, exec, Enpass''
 | 
			
		||||
        ''$mainMod, F, fullscreen''
 | 
			
		||||
 | 
			
		||||
        # Move focus with mainMod + arrow keys
 | 
			
		||||
        ''$mainMod, h, movefocus, l''
 | 
			
		||||
        ''$mainMod, l, movefocus, r''
 | 
			
		||||
        ''$mainMod, k, movefocus, u''
 | 
			
		||||
        ''$mainMod, j, movefocus, d''
 | 
			
		||||
 | 
			
		||||
        '', XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle''
 | 
			
		||||
        '', XF86AudioPrev, exec, playerctl previous''
 | 
			
		||||
        '', XF86AudioPlay, exec, playerctl play-pause''
 | 
			
		||||
        '', XF86AudioNext, exec, playerctl next''
 | 
			
		||||
        '', print, exec, grim -g "$(slurp)" - | wl-copy -t image/png''
 | 
			
		||||
 | 
			
		||||
        # Switch workspaces with mainMod + [0-9]
 | 
			
		||||
        ''$mainMod, 1, exec, $SCRIPTS/workspaces.sh 1''
 | 
			
		||||
        ''$mainMod, 2, exec, $SCRIPTS/workspaces.sh 2''
 | 
			
		||||
        ''$mainMod, 3, exec, $SCRIPTS/workspaces.sh 3''
 | 
			
		||||
        ''$mainMod, 4, exec, $SCRIPTS/workspaces.sh 4''
 | 
			
		||||
        ''$mainMod, 5, exec, $SCRIPTS/workspaces.sh 5''
 | 
			
		||||
        ''$mainMod, 6, exec, $SCRIPTS/workspaces.sh 6''
 | 
			
		||||
        ''$mainMod, 7, exec, $SCRIPTS/workspaces.sh 7''
 | 
			
		||||
        ''$mainMod, 8, exec, $SCRIPTS/workspaces.sh 8''
 | 
			
		||||
        ''$mainMod, 9, exec, $SCRIPTS/workspaces.sh 9''
 | 
			
		||||
 | 
			
		||||
        # Move active window to a workspace with mainMod + SHIFT + [0-9]
 | 
			
		||||
        ''$mainMod SHIFT, 1, movetoworkspace, 1''
 | 
			
		||||
        ''$mainMod SHIFT, 2, movetoworkspace, 2''
 | 
			
		||||
        ''$mainMod SHIFT, 3, movetoworkspace, 3''
 | 
			
		||||
        ''$mainMod SHIFT, 4, movetoworkspace, 4''
 | 
			
		||||
        ''$mainMod SHIFT, 5, movetoworkspace, 5''
 | 
			
		||||
        ''$mainMod SHIFT, 6, movetoworkspace, 6''
 | 
			
		||||
        ''$mainMod SHIFT, 7, movetoworkspace, 7''
 | 
			
		||||
        ''$mainMod SHIFT, 8, movetoworkspace, 8''
 | 
			
		||||
        ''$mainMod SHIFT, 9, movetoworkspace, 9''
 | 
			
		||||
 | 
			
		||||
        # Monitor focus
 | 
			
		||||
        ''$mainMod ALT, 1, focusmonitor, 0''
 | 
			
		||||
        ''$mainMod ALT, 2, focusmonitor, 1''
 | 
			
		||||
        ''$mainMod ALT, 3, focusmonitor, 2''
 | 
			
		||||
        ''$mainMod ALT, 4, focusmonitor, 3''
 | 
			
		||||
        ''$mainMod ALT, 5, focusmonitor, 4''
 | 
			
		||||
        ''$mainMod ALT, 6, focusmonitor, 5''
 | 
			
		||||
        ''$mainMod ALT, 7, focusmonitor, 6''
 | 
			
		||||
        ''$mainMod ALT, 8, focusmonitor, 7''
 | 
			
		||||
        ''$mainMod ALT, 9, focusmonitor, 8''
 | 
			
		||||
        ''$mainMod ALT, 0, focusmonitor, 9''
 | 
			
		||||
 | 
			
		||||
        # Scroll through existing workspaces with mainMod + scroll
 | 
			
		||||
        ''$mainMod, mouse_down, workspace, e+1''
 | 
			
		||||
        ''$mainMod, mouse_up, workspace, e-1''
 | 
			
		||||
      ];
 | 
			
		||||
        
 | 
			
		||||
      binde = [
 | 
			
		||||
        '', XF86AudioLowerVolume, exec, $SCRIPTS/volume.sh -5''
 | 
			
		||||
        '', XF86AudioRaiseVolume, exec, $SCRIPTS/volume.sh 5''
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      bindel = [
 | 
			
		||||
        '', XF86MonBrightnessDown, exec, $SCRIPTS/brightness.sh -4800''
 | 
			
		||||
        '', XF86MonBrightnessUp, exec, $SCRIPTS/brightness.sh 4800''
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      bindr = [
 | 
			
		||||
        ''SUPERCTRL, Control_L, togglespecialworkspace, ctrl''
 | 
			
		||||
        ''SUPERALT, Alt_L, togglespecialworkspace, alt''
 | 
			
		||||
        ''SUPERALT, ALT_R, togglespecialworkspace, altgr''
 | 
			
		||||
        ''SUPERCTRL, Control_R, togglespecialworkspace, strg''
 | 
			
		||||
      ];
 | 
			
		||||
        
 | 
			
		||||
      bindm = [
 | 
			
		||||
        # Move/resize windows with mainMod + LMB/RMB and dragging
 | 
			
		||||
        ''$mainMod, mouse:272, movewindow''
 | 
			
		||||
        ''$mainMod, mouse:273, resizewindow''
 | 
			
		||||
      ];
 | 
			
		||||
        
 | 
			
		||||
      # ------------------------------------------
 | 
			
		||||
      #  ########################################
 | 
			
		||||
      #  #######	    Workspaces	    ###########
 | 
			
		||||
      #  ########################################
 | 
			
		||||
      # ------------------------------------------
 | 
			
		||||
 | 
			
		||||
      workspace = [
 | 
			
		||||
        "1, persistent:true"
 | 
			
		||||
        "2, persistent:true"
 | 
			
		||||
        "3, persistent:true"
 | 
			
		||||
        "4, persistent:true"
 | 
			
		||||
        "5, persistent:true"
 | 
			
		||||
        "6, persistent:true"
 | 
			
		||||
        "7, persistent:true"
 | 
			
		||||
        "8, persistent:true"
 | 
			
		||||
        "8, persistent:true"
 | 
			
		||||
        "9, persistent:true"
 | 
			
		||||
 | 
			
		||||
        "name:special:ctrl, persistent:true"
 | 
			
		||||
        "name:special:alt, persistent:true"
 | 
			
		||||
        "name:special:altgr, persistent:true"
 | 
			
		||||
        "name:special:strg, persistent:true"
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								modules/default/home-manager/desktop/hyprland/hyprlock.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								modules/default/home-manager/desktop/hyprland/hyprlock.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,56 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  programs.hyprlock = lib.mkIf config.desktop.hyprlock.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      background = {
 | 
			
		||||
        monitor = "";
 | 
			
		||||
        # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
 | 
			
		||||
        blur_passes = 3; # 0 disables blurring
 | 
			
		||||
        blur_size = 7;
 | 
			
		||||
        noise = 0.0117;
 | 
			
		||||
        contrast = 0.8916;
 | 
			
		||||
        brightness = 0.8172;
 | 
			
		||||
        vibrancy = 0.1696;
 | 
			
		||||
        vibrancy_darkness = 0.0;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      input-field = {
 | 
			
		||||
        monitor = "";
 | 
			
		||||
        size = "300, 75";
 | 
			
		||||
        outline_thickness = 3;
 | 
			
		||||
        dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
 | 
			
		||||
        dots_spacing = 0.15; # Scale of dots' absolute size, 0.0 - 1.0
 | 
			
		||||
        dots_center = false;
 | 
			
		||||
        dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
 | 
			
		||||
        fade_on_empty = true;
 | 
			
		||||
        fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
 | 
			
		||||
        placeholder_text = "<i>Input Password...</i>"; # Text rendered in the input box when it's empty.
 | 
			
		||||
        hide_input = false;
 | 
			
		||||
        rounding = -1; # -1 means complete rounding (circle/oval)
 | 
			
		||||
        fail_text = "<i>$FAIL <b>($ATTEMPTS)</b></i>"; # can be set to empty
 | 
			
		||||
        fail_transition = 300; # transition time in ms between normal outer_color and fail_color
 | 
			
		||||
        capslock_color = -1;
 | 
			
		||||
        numlock_color = -1;
 | 
			
		||||
        bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
 | 
			
		||||
        invert_numlock = false; # change color if numlock is off
 | 
			
		||||
        position = "0, -20";
 | 
			
		||||
        halign = "center";
 | 
			
		||||
        valign = "center";  
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      label = {
 | 
			
		||||
        monitor = "";
 | 
			
		||||
        text = "Hi there, $USER";
 | 
			
		||||
        color = "rgba(200, 200, 200, 1.0)";
 | 
			
		||||
        font_size = 25;
 | 
			
		||||
        font_family = "Noto Sans";
 | 
			
		||||
        position = "0, 80";
 | 
			
		||||
        halign = "center";
 | 
			
		||||
        valign = "center";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								modules/default/home-manager/desktop/hyprland/hyprpaper.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								modules/default/home-manager/desktop/hyprland/hyprpaper.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  services.hyprpaper = lib.mkIf config.desktop.hyprpaper.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
 | 
			
		||||
      splash = true;
 | 
			
		||||
 | 
			
		||||
      ipc = "off";
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								modules/default/home-manager/desktop/hyprland/mako.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								modules/default/home-manager/desktop/hyprland/mako.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  services.mako = lib.mkIf config.desktop.mako.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    borderRadius = 10;
 | 
			
		||||
    borderSize = 2;
 | 
			
		||||
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										65
									
								
								modules/default/home-manager/desktop/hyprland/options.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								modules/default/home-manager/desktop/hyprland/options.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,65 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  options = {
 | 
			
		||||
    desktop = {
 | 
			
		||||
      autologin.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      fuzzel.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      hyprexit.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      hypridle.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      hyprland = {
 | 
			
		||||
        enable = lib.mkOption {
 | 
			
		||||
          default = config.desktop.enable;
 | 
			
		||||
          type = lib.types.bool;
 | 
			
		||||
        };
 | 
			
		||||
        hardware = {
 | 
			
		||||
          Lenni.enable = lib.mkOption {
 | 
			
		||||
            default = false;
 | 
			
		||||
            type = lib.types.bool;
 | 
			
		||||
          };
 | 
			
		||||
          Puenktchen.enable = lib.mkOption {
 | 
			
		||||
            default = false;
 | 
			
		||||
            type = lib.types.bool;
 | 
			
		||||
          };
 | 
			
		||||
          Lillie.enable = lib.mkOption{
 | 
			
		||||
            default = false;
 | 
			
		||||
            type = lib.types.bool;
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      hyprlock.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      hyprpaper.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      mako.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      utils.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
      wlogout.enable = lib.mkOption {
 | 
			
		||||
        default = config.desktop.enable;
 | 
			
		||||
        type = lib.types.bool;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								modules/default/home-manager/desktop/hyprland/utils.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								modules/default/home-manager/desktop/hyprland/utils.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  home.packages = lib.mkIf config.desktop.utils.enable [
 | 
			
		||||
    
 | 
			
		||||
    pkgs.hyprpicker
 | 
			
		||||
    pkgs.hyprcursor
 | 
			
		||||
 | 
			
		||||
    pkgs.grim
 | 
			
		||||
    pkgs.slurp
 | 
			
		||||
    pkgs.wl-clipboard
 | 
			
		||||
    pkgs.playerctl
 | 
			
		||||
 | 
			
		||||
    pkgs.dconf
 | 
			
		||||
    
 | 
			
		||||
    pkgs.jq
 | 
			
		||||
    
 | 
			
		||||
    pkgs.pulseaudio
 | 
			
		||||
    pkgs.inotify-tools
 | 
			
		||||
    pkgs.papirus-icon-theme
 | 
			
		||||
    pkgs.eww
 | 
			
		||||
  ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										83
									
								
								modules/default/home-manager/desktop/hyprland/wlogout.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								modules/default/home-manager/desktop/hyprland/wlogout.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  programs.wlogout = lib.mkIf config.desktop.wlogout.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    layout = [
 | 
			
		||||
      {
 | 
			
		||||
        label = "shutdown";
 | 
			
		||||
        action = "systemctl poweroff";
 | 
			
		||||
        text = "Shutdown";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        label = "hyprland";
 | 
			
		||||
        action = "hyprctl dispatch exit";
 | 
			
		||||
        text = "Exit Hyprland";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        label = "whatever";
 | 
			
		||||
        action = "";
 | 
			
		||||
        text = "whatever";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        label = "reboot";
 | 
			
		||||
        action = "systemctl reboot";
 | 
			
		||||
        text = "Reboot";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        label = "suspend";
 | 
			
		||||
        action = "systemctl suspend";
 | 
			
		||||
        text = "Suspend";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        label = "hibernate";
 | 
			
		||||
        action = "systemctl hibernate";
 | 
			
		||||
        text = "Hibernate";
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    style = ''
 | 
			
		||||
      @import url("file:///home/willifan/.config/gtk-4.0/gtk.css");
 | 
			
		||||
      * {
 | 
			
		||||
      	background-image: none;
 | 
			
		||||
      	box-shadow: none;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      window {
 | 
			
		||||
      	background-color: rgba(12, 12, 12, 0.9);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      button {
 | 
			
		||||
        border-radius: 10px;
 | 
			
		||||
        border-color: #ffa44b;
 | 
			
		||||
      	border-style: solid;
 | 
			
		||||
        border-width: 2px;
 | 
			
		||||
      	background-repeat: no-repeat;
 | 
			
		||||
      	background-position: center;
 | 
			
		||||
      	background-size: 25%;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      button:focus, button:active, button:hover {
 | 
			
		||||
      	/*background-color: #3700B3;*/
 | 
			
		||||
      	outline-style: none;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      #suspend {
 | 
			
		||||
        background-image: image(url("/home/willifan/.config/desktop-utils/images/suspend.png"));
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      #hibernate {
 | 
			
		||||
        background-image: image(url("/home/willifan/.config/desktop-utils/images/hibernate.png"));
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      #shutdown {
 | 
			
		||||
        background-image: image(url("/home/willifan/.config/desktop-utils/images/shutdown.png"));
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      #reboot {
 | 
			
		||||
        background-image: image(url("/home/willifan/.config/desktop-utils/images/reboot.png"));
 | 
			
		||||
      }
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								modules/default/home-manager/desktop/kitty.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								modules/default/home-manager/desktop/kitty.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  programs.kitty = lib.mkIf config.desktop.kitty.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      enable_audio_bell = false;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								modules/default/home-manager/desktop/options.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								modules/default/home-manager/desktop/options.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
  options = {
 | 
			
		||||
    desktop = {
 | 
			
		||||
      kitty.enable = lib.mkEnableOption { default = config.desktop.enable; };
 | 
			
		||||
      vscodium.enable = lib.mkEnableOption { default = config.desktop.enable; };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								modules/default/home-manager/desktop/vscodium.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								modules/default/home-manager/desktop/vscodium.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,62 @@
 | 
			
		|||
{ lib, config, pkgs, ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
  programs.vscode = lib.mkIf config.desktop.vscodium.enable {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.vscodium;
 | 
			
		||||
 | 
			
		||||
    userSettings = {
 | 
			
		||||
      "[nix]"."editor.tabSize" = 2;
 | 
			
		||||
      "explorer.confirmDragAndDrop" = false;
 | 
			
		||||
      "cmake.showOptionsMovedNotification" = false;
 | 
			
		||||
      "extensions.autoUpdate" = false;
 | 
			
		||||
    };
 | 
			
		||||
    extensions = with pkgs.vscode-extensions; [
 | 
			
		||||
      # System
 | 
			
		||||
      arrterian.nix-env-selector
 | 
			
		||||
      bbenoist.nix
 | 
			
		||||
      #fireblast.hyprlang-vscode
 | 
			
		||||
      #eww-yuck.yuck
 | 
			
		||||
 | 
			
		||||
      #Rust
 | 
			
		||||
      rust-lang.rust-analyzer
 | 
			
		||||
      serayuzgur.crates
 | 
			
		||||
      bungcip.better-toml
 | 
			
		||||
      vadimcn.vscode-lldb
 | 
			
		||||
      usernamehw.errorlens
 | 
			
		||||
 | 
			
		||||
      #C/C++
 | 
			
		||||
      ms-vscode.cpptools
 | 
			
		||||
      twxs.cmake
 | 
			
		||||
      ms-vscode.cmake-tools
 | 
			
		||||
 | 
			
		||||
      #Shell
 | 
			
		||||
      timonwong.shellcheck
 | 
			
		||||
      mads-hartmann.bash-ide-vscode
 | 
			
		||||
 | 
			
		||||
      #Git
 | 
			
		||||
      #phil294.git-log--graph
 | 
			
		||||
    ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
 | 
			
		||||
      {
 | 
			
		||||
        name = "hyprlang-vscode";
 | 
			
		||||
        publisher = "fireblast";
 | 
			
		||||
        version = "0.0.1";
 | 
			
		||||
        sha256 = "lSMihMIue0qu9+97EgT5dqjbzsey0TLZDpJby+Piip4=";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "yuck";
 | 
			
		||||
        publisher = "eww-yuck";
 | 
			
		||||
        version = "0.0.3";
 | 
			
		||||
        sha256 = "DITgLedaO0Ifrttu+ZXkiaVA7Ua5RXc4jXQHPYLqrcM=";
 | 
			
		||||
      }
 | 
			
		||||
      {
 | 
			
		||||
        name = "git-log--graph";
 | 
			
		||||
        publisher = "phil294";
 | 
			
		||||
        version = "0.1.15";
 | 
			
		||||
        sha256 = "lvjDkvXSX7rw7HyyK3WWQLnGezvL6FPEgtjIi8KWkU0=";
 | 
			
		||||
      }
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								modules/default/home-manager/git.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								modules/default/home-manager/git.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = { 
 | 
			
		||||
  programs.git = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.gitAndTools.gitFull;
 | 
			
		||||
    userName = "willifan";
 | 
			
		||||
    userEmail = "willifan@pm.me";
 | 
			
		||||
    extraConfig = {
 | 
			
		||||
      init.defaultBranch = "main";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								modules/default/home-manager/options.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								modules/default/home-manager/options.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
{ lib, ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								modules/default/home-manager/shell/bash.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								modules/default/home-manager/shell/bash.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  
 | 
			
		||||
  programs = {
 | 
			
		||||
    bash = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
     shellAliases = {
 | 
			
		||||
        ls = "eza";
 | 
			
		||||
     };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    starship = {
 | 
			
		||||
      enableBashIntegration = true;
 | 
			
		||||
    };
 | 
			
		||||
      
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
#  programs.bash.blesh.enable = true;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								modules/default/home-manager/shell/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								modules/default/home-manager/shell/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    imports = [
 | 
			
		||||
      ./bash.nix
 | 
			
		||||
      ./eza.nix
 | 
			
		||||
      ./hyfetch.nix
 | 
			
		||||
      ./nushell.nix
 | 
			
		||||
      ./ssh.nix
 | 
			
		||||
      ./starship.nix
 | 
			
		||||
      ./zoxide.nix
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										8
									
								
								modules/default/home-manager/shell/eza.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								modules/default/home-manager/shell/eza.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.eza = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										53
									
								
								modules/default/home-manager/shell/hyfetch.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								modules/default/home-manager/shell/hyfetch.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,53 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  programs.hyfetch = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      preset = "transgender";
 | 
			
		||||
      mode = "rgb";
 | 
			
		||||
      light_dark = "dark";
 | 
			
		||||
      lightness = 0.69;
 | 
			
		||||
      color_align = {
 | 
			
		||||
        mode = "horizontal";
 | 
			
		||||
        custom_colors = [];
 | 
			
		||||
        fore_back = null;
 | 
			
		||||
      };
 | 
			
		||||
      backend = "fastfetch";
 | 
			
		||||
      args = null;
 | 
			
		||||
      distro = null;
 | 
			
		||||
      pride_month_shown = [];
 | 
			
		||||
      pride_month_disable = false;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  programs.fastfetch = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      modules = [
 | 
			
		||||
        "title"
 | 
			
		||||
	      "separator"
 | 
			
		||||
	      "os"
 | 
			
		||||
        "host"
 | 
			
		||||
	      {
 | 
			
		||||
          type = "localip";
 | 
			
		||||
          showIpv6 = false;
 | 
			
		||||
          showMac = false;
 | 
			
		||||
          showSpeed = false;
 | 
			
		||||
          showMtu = false;
 | 
			
		||||
          showLoop = false;
 | 
			
		||||
          showFlags = false;
 | 
			
		||||
	      }
 | 
			
		||||
    	  "kernel"
 | 
			
		||||
	      "uptime"
 | 
			
		||||
    	  "packages"
 | 
			
		||||
	      "shell"
 | 
			
		||||
    	  "wm"
 | 
			
		||||
	      "cpu"
 | 
			
		||||
	      "gpu"
 | 
			
		||||
  	    "memory"
 | 
			
		||||
  	    "break"
 | 
			
		||||
	      "colors"
 | 
			
		||||
    	];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								modules/default/home-manager/shell/nushell.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								modules/default/home-manager/shell/nushell.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,13 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs = {
 | 
			
		||||
    nushell = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
    };
 | 
			
		||||
    starship = {
 | 
			
		||||
      enableNushellIntegration = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								modules/default/home-manager/shell/ssh.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								modules/default/home-manager/shell/ssh.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,3 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										159
									
								
								modules/default/home-manager/shell/starship.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								modules/default/home-manager/shell/starship.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,159 @@
 | 
			
		|||
{ lib, config, ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.starship = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      format = lib.concatStrings [
 | 
			
		||||
	      "[  ](fg:twelve bg:trans_blue)"
 | 
			
		||||
        "[ ](bg:trans_blue)[ ](fg:trans_blue bg:trans_pink)"
 | 
			
		||||
        "$hostname"
 | 
			
		||||
        "[ ](bg:trans_pink)[ ](fg:trans_pink bg:trans_white)"
 | 
			
		||||
        "$directory"
 | 
			
		||||
        "[ ](bg:trans_white)[ ](fg:trans_white bg:trans_pink)"
 | 
			
		||||
        "("
 | 
			
		||||
            "$git_branch"
 | 
			
		||||
            "$git_status"
 | 
			
		||||
        ")"
 | 
			
		||||
        "[ ](bg:trans_pink)[ ](fg:trans_pink bg:trans_blue)"
 | 
			
		||||
        "$character"
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      right_format = lib.concatStrings [
 | 
			
		||||
        "$cmd_duration"
 | 
			
		||||
        "("
 | 
			
		||||
          "$python"
 | 
			
		||||
          "$conda"
 | 
			
		||||
          "$c"
 | 
			
		||||
	        "$cmake"
 | 
			
		||||
          "$golang"
 | 
			
		||||
          "$haskell"
 | 
			
		||||
          "$rust"
 | 
			
		||||
        ")"
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      palette = "stylix";
 | 
			
		||||
 | 
			
		||||
      # Disables the blank line at the start of the prompt
 | 
			
		||||
      add_newline = true;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
      palettes.stylix = {
 | 
			
		||||
        first = config.lib.stylix.colors.withHashtag.base00;
 | 
			
		||||
        second = config.lib.stylix.colors.withHashtag.base01;
 | 
			
		||||
        third = config.lib.stylix.colors.withHashtag.base02;
 | 
			
		||||
        fourth = config.lib.stylix.colors.withHashtag.base03; 
 | 
			
		||||
        fifth = config.lib.stylix.colors.withHashtag.base04;
 | 
			
		||||
        sixth = config.lib.stylix.colors.withHashtag.base05;
 | 
			
		||||
        seventh = config.lib.stylix.colors.withHashtag.base06;
 | 
			
		||||
        eighth = config.lib.stylix.colors.withHashtag.base07;
 | 
			
		||||
      	baseeight = config.lib.stylix.colors.withHashtag.base08;
 | 
			
		||||
      	basenine = config.lib.stylix.colors.withHashtag.base09;
 | 
			
		||||
      	ten = config.lib.stylix.colors.withHashtag.base0A;
 | 
			
		||||
      	eleven = config.lib.stylix.colors.withHashtag.base0B;
 | 
			
		||||
        twelve = config.lib.stylix.colors.withHashtag.base0C;
 | 
			
		||||
        thirteen = config.lib.stylix.colors.withHashtag.base0D;
 | 
			
		||||
      	fourteen = config.lib.stylix.colors.withHashtag.base0E;
 | 
			
		||||
        fifteen = config.lib.stylix.colors.withHashtag.base0F;
 | 
			
		||||
       	trans_blue = "#55CDFD";
 | 
			
		||||
      	trans_pink = "#F6AAB7";
 | 
			
		||||
      	trans_white = "#FFFFFF";
 | 
			
		||||
      	pride_red = "#FF1E26";
 | 
			
		||||
      	pride_orange = "#FE941E";
 | 
			
		||||
      	pride_yellow = "#FFFF00";
 | 
			
		||||
      	pride_green = "#06BD00";
 | 
			
		||||
      	pride_blue = "#001A98";
 | 
			
		||||
      	pride_violet = "#760088";
 | 
			
		||||
        # Text color:
 | 
			
		||||
        black = "#272D37";
 | 
			
		||||
        white = "#CBF4F8";
 | 
			
		||||
        github = "#B02B10";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      hostname = {
 | 
			
		||||
        ssh_only = false;
 | 
			
		||||
        style = "bg:trans_pink fg:twelve";
 | 
			
		||||
        format = "[$hostname](bold $style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      directory = {
 | 
			
		||||
        style = "bg:trans_white fg:twelve";
 | 
			
		||||
        format = "[  $path](bold $style)($style)[$read_only](bold $style)";
 | 
			
		||||
        truncation_symbol = "…/";
 | 
			
		||||
        truncate_to_repo = true;
 | 
			
		||||
        read_only =" ";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      c = {
 | 
			
		||||
        symbol = " ";
 | 
			
		||||
        version_format = "\${raw}";
 | 
			
		||||
        style = "bg:fourth fg:white";
 | 
			
		||||
        format = "[$symbol($version) ]($style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      cmake = {
 | 
			
		||||
        symbol = "△ ";
 | 
			
		||||
        version_format = "\${raw}";
 | 
			
		||||
        style = "bg:fourth fg:white";
 | 
			
		||||
        format = "[$symbol($version) ]($style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      golang = {
 | 
			
		||||
        symbol = " ";
 | 
			
		||||
        version_format = "\${raw}";
 | 
			
		||||
        style = "bg:fourth fg:white";
 | 
			
		||||
        format = "[$symbol($version) ]($style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      python = {
 | 
			
		||||
        symbol = " ";
 | 
			
		||||
        version_format = "\${raw}";
 | 
			
		||||
        style = "bg:fourth fg:white";
 | 
			
		||||
        python_binary = ["./venv/bin/python" "./env/Scripts/python" "python" "python3" "python2"];
 | 
			
		||||
        format = "[$symbol($version)]($style)[ (\($virtualenv\)) ](bg:fourth fg:white)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      conda = {
 | 
			
		||||
        symbol = " ";
 | 
			
		||||
        style = "bg:fourth fg:white";
 | 
			
		||||
        ignore_base = false;
 | 
			
		||||
        format = "[$symbol ($environment) ]($style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      haskell = {
 | 
			
		||||
        symbol = " ";
 | 
			
		||||
        version_format = "\${raw}";
 | 
			
		||||
        style = "bg:fourth fg:white";
 | 
			
		||||
        format = "[$symbol($version) ]($style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      rust = {
 | 
			
		||||
        symbol = " ";
 | 
			
		||||
        version_format = "\${raw}";
 | 
			
		||||
        style = "bg:fourth fg:white";
 | 
			
		||||
        format = "[$symbol($version) ]($style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      git_branch = {
 | 
			
		||||
        symbol = " ";
 | 
			
		||||
        style = "bg:trans_pink fg:twelve";
 | 
			
		||||
        format = "[$symbol $branch ](bold $style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      git_status = {
 | 
			
		||||
        style = "bold bg:trans_pink fg:twelve";
 | 
			
		||||
        format = "([\($all_status$ahead_behind\)](bold $style))";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      cmd_duration = {
 | 
			
		||||
        style = "bg:eighth fg:twelve";
 | 
			
		||||
        format = "[  $duration ](bold $style)";
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      character = {
 | 
			
		||||
        success_symbol = "[:3 ](bold fg:twelve bg:trans_blue)[](fg:trans_blue)";
 | 
			
		||||
        error_symbol = "[:o ](bold fg:twelve bg:trans_blue)[](fg:trans_blue)";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								modules/default/home-manager/shell/zoxide.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								modules/default/home-manager/shell/zoxide.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  programs.zoxide = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    options = [
 | 
			
		||||
      "--cmd cd"
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										68
									
								
								modules/default/home-manager/stylix.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								modules/default/home-manager/stylix.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
let
 | 
			
		||||
  wallpaper = pkgs.fetchurl {
 | 
			
		||||
    url = "https://files.huwe.mooo.com/Oneshot.png";
 | 
			
		||||
    hash = "sha256-LaIzLCW86sbldE9lk7psbYKaTCjwaPLcoD3il6FalTw=";
 | 
			
		||||
  };
 | 
			
		||||
in
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  home-manager.users.willifan = { 
 | 
			
		||||
  stylix = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
 | 
			
		||||
    autoEnable = true;
 | 
			
		||||
 | 
			
		||||
    base16Scheme = "${pkgs.base16-schemes}/share/themes/pasque.yaml";
 | 
			
		||||
    override = {
 | 
			
		||||
      base0D = "F3196E";
 | 
			
		||||
      base0F = "CFAACF";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    cursor = {
 | 
			
		||||
      name = "Bibata-Modern-Classic";
 | 
			
		||||
      package = pkgs.bibata-cursors;
 | 
			
		||||
      size = 18;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    fonts = {
 | 
			
		||||
#      packages = [ pkgs.nerdfonts ];
 | 
			
		||||
#       emoji = {
 | 
			
		||||
#         package = pkgs.;
 | 
			
		||||
#         name = "";
 | 
			
		||||
#       };
 | 
			
		||||
      monospace = {
 | 
			
		||||
        package = pkgs.nerd-fonts.jetbrains-mono;
 | 
			
		||||
        name = "JetBrainsMono Nerd Font";
 | 
			
		||||
      };
 | 
			
		||||
#       sansSerif = {
 | 
			
		||||
#         package = pkgs.;
 | 
			
		||||
#         name = "";
 | 
			
		||||
#       };
 | 
			
		||||
#       serif = {
 | 
			
		||||
#         package = pkgs.;
 | 
			
		||||
#         name = "";
 | 
			
		||||
#       };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    image = wallpaper;
 | 
			
		||||
 | 
			
		||||
    opacity = {
 | 
			
		||||
      applications = 0.9;
 | 
			
		||||
      desktop = 0.9;
 | 
			
		||||
      popups = 0.9;
 | 
			
		||||
      terminal = 0.9;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    polarity = "dark";
 | 
			
		||||
 | 
			
		||||
    iconTheme = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      dark = "Papirus-Dark";
 | 
			
		||||
      package = pkgs.papirus-icon-theme;
 | 
			
		||||
    };
 | 
			
		||||
    
 | 
			
		||||
  };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								modules/default/home-manager/tmux/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/default/home-manager/tmux/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    programs.tmux = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								modules/default/home-manager/utils/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								modules/default/home-manager/utils/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  home-manager.users.willifan = {
 | 
			
		||||
    services.avizo.enable = true;
 | 
			
		||||
    programs.bat.enable = true;
 | 
			
		||||
    programs.btop.enable = true;
 | 
			
		||||
    programs.yazi.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue