1702 lines
		
	
	
	
		
			46 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			1702 lines
		
	
	
	
		
			46 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, lib, pkgs, inputs, niri, ... }:
 | 
						||
 | 
						||
let
 | 
						||
  laptop = builtins.readFile "/etc/hostname" == ''
 | 
						||
    syl
 | 
						||
  '';
 | 
						||
in {
 | 
						||
  imports = [
 | 
						||
    ./modules/hyprland.nix
 | 
						||
    ./modules/niri.nix
 | 
						||
    ./modules/rofi.nix
 | 
						||
    # ags.homeManagerModules.default
 | 
						||
    # ./modules/plasma.nix
 | 
						||
  ];
 | 
						||
  # Home Manager needs a bit of information about you and the
 | 
						||
  # paths it should manage.
 | 
						||
  home.username = "chris";
 | 
						||
  home.homeDirectory = "/home/chris";
 | 
						||
 | 
						||
  # This value determines the Home Manager release that your
 | 
						||
  # configuration is compatible with. This helps avoid breakage
 | 
						||
  # when a new Home Manager release introduces backwards
 | 
						||
  # incompatible changes.
 | 
						||
  #
 | 
						||
  # You can update Home Manager without changing this value. See
 | 
						||
  # the Home Manager release notes for a list of state version
 | 
						||
  # changes in each release.
 | 
						||
  home.stateVersion = "21.11"; # Did you read the comment?
 | 
						||
 | 
						||
  # Let Home Manager install and manage itself.
 | 
						||
  programs.home-manager.enable = true;
 | 
						||
 | 
						||
  xdg = {
 | 
						||
    userDirs = {
 | 
						||
      enable = true;
 | 
						||
      desktop = "${config.home.homeDirectory}";
 | 
						||
      documents = "${config.home.homeDirectory}/docs";
 | 
						||
      download = "${config.home.homeDirectory}/dls";
 | 
						||
      music = "${config.home.homeDirectory}/music";
 | 
						||
      pictures = "${config.home.homeDirectory}/pics";
 | 
						||
      publicShare = "${config.home.homeDirectory}";
 | 
						||
      templates = "${config.home.homeDirectory}";
 | 
						||
      videos = "${config.home.homeDirectory}/vids";
 | 
						||
    };
 | 
						||
    portal = {
 | 
						||
      enable = true;
 | 
						||
      configPackages = [ pkgs.cosmic-session pkgs.xdg-desktop-portal-cosmic pkgs.kdePackages.kwallet ];
 | 
						||
      config = {
 | 
						||
        common = {
 | 
						||
          default = [ "kde" ];
 | 
						||
          "org.freedesktop.impl.portal.FileChooser" = [ "kde" ];
 | 
						||
          "org.freedesktop.impl.portal.Access" = [ "kde" ];
 | 
						||
          "org.freedesktop.impl.portal.OpenUri" = [ "kde" ];
 | 
						||
          "org.freedesktop.impl.portal.Desktop" = [ "kde" ];
 | 
						||
        };
 | 
						||
      };
 | 
						||
      extraPortals = [ pkgs.kdePackages.xdg-desktop-portal-kde pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-cosmic ];
 | 
						||
      xdgOpenUsePortal = true;
 | 
						||
    };
 | 
						||
    mimeApps = {
 | 
						||
      enable = true;
 | 
						||
      associations.added = {
 | 
						||
        "video/mp4" = "mpv.desktop";
 | 
						||
        "video/webm" = "mpv.desktop";
 | 
						||
        "video/mkv" = "mpv.desktop";
 | 
						||
        "video/x-matroska" = "mpv.desktop";
 | 
						||
        "video/quicktime" = "mpv.desktop";
 | 
						||
        "video/mpeg" = "mpv.desktop";
 | 
						||
        "video/ogg" = "mpv.desktop";
 | 
						||
        "video/VP9" = "mpv.desktop";
 | 
						||
        "video/VP8" = "mpv.desktop";
 | 
						||
        "video/AV1" = "mpv.desktop";
 | 
						||
        "video/H265" = "mpv.desktop";
 | 
						||
        "video/H264" = "mpv.desktop";
 | 
						||
        "video/vnd.youtube.yt" = "mpv.desktop";
 | 
						||
        "inode/directory" = "dolphin.desktop";
 | 
						||
        "image/gif" = "imv-rifle.desktop";
 | 
						||
        "image/jpeg" = "imv-rifle.desktop";
 | 
						||
        "image/heif" = "imv-rifle.desktop";
 | 
						||
        "image/png" = "imv-rifle.desktop";
 | 
						||
        "image/webp" = "imv-rifle.desktop";
 | 
						||
        "audio/vorbis" = "mpv-slow.desktop";
 | 
						||
        "audio/mp3" = "mpv-slow.desktop";
 | 
						||
        "audio/m4a" = "mpv-slow.desktop";
 | 
						||
        "audio/flac" = "mpv-slow.desktop";
 | 
						||
        "audio/wav" = "mpv-slow.desktop";
 | 
						||
        "audio/opus" = "mpv-slow.desktop";
 | 
						||
        "audio/x-opus" = "mpv-slow.desktop";
 | 
						||
        "audio/x-opus+ogg" = "mpv-slow.desktop";
 | 
						||
        "x-scheme-handler/http" = "librewolf.desktop";
 | 
						||
        "x-scheme-handler/https" = "librewolf.desktop";
 | 
						||
        "text/html" = "librewolf.desktop";
 | 
						||
        "text/org" = "emacsclient.desktop";
 | 
						||
        "text/md" = "emacsclient.desktop";
 | 
						||
        "text/txt" = "emacsclient.desktop";
 | 
						||
        "text/rs" = "emacsclient.desktop";
 | 
						||
        "text/plain" = "emacsclient.desktop";
 | 
						||
        "application/pdf" = "okular.desktop";
 | 
						||
        "x-scheme-handler/about" = "librewolf.desktop";
 | 
						||
        "x-scheme-handler/unknown" = "librewolf.desktop";
 | 
						||
        "x-scheme-handler/magnet" = "torrent.desktop";
 | 
						||
        "application/vnd.openxmlformats-officedocuments.spreadsheetml.sheet" = "libreoffice.desktop";
 | 
						||
      };
 | 
						||
      defaultApplications = {
 | 
						||
        "video/mp4" = "mpv.desktop";
 | 
						||
        "video/webm" = "mpv.desktop";
 | 
						||
        "video/mkv" = "mpv.desktop";
 | 
						||
        "video/x-matroska" = "mpv.desktop";
 | 
						||
        "video/quicktime" = "mpv.desktop";
 | 
						||
        "video/mpeg" = "mpv.desktop";
 | 
						||
        "video/ogg" = "mpv.desktop";
 | 
						||
        "video/VP9" = "mpv.desktop";
 | 
						||
        "video/VP8" = "mpv.desktop";
 | 
						||
        "video/AV1" = "mpv.desktop";
 | 
						||
        "video/H265" = "mpv.desktop";
 | 
						||
        "video/H264" = "mpv.desktop";
 | 
						||
        "video/vnd.youtube.yt" = "mpv.desktop";
 | 
						||
        "inode/directory" = "dolphin.desktop";
 | 
						||
        "image/gif" = "imv-rifle.desktop";
 | 
						||
        "image/jpeg" = "imv-rifle.desktop";
 | 
						||
        "image/heif" = "imv-rifle.desktop";
 | 
						||
        "image/png" = "imv-rifle.desktop";
 | 
						||
        "image/webp" = "imv-rifle.desktop";
 | 
						||
        "audio/vorbis" = "mpv-slow.desktop";
 | 
						||
        "audio/mp3" = "mpv-slow.desktop";
 | 
						||
        "audio/m4a" = "mpv-slow.desktop";
 | 
						||
        "audio/flac" = "mpv-slow.desktop";
 | 
						||
        "audio/wav" = "mpv-slow.desktop";
 | 
						||
        "audio/opus" = "mpv-slow.desktop";
 | 
						||
        "x-scheme-handler/http" = "librewolf.desktop";
 | 
						||
        "x-scheme-handler/https" = "librewolf.desktop";
 | 
						||
        "text/html" = "librewolf.desktop";
 | 
						||
        "text/org" = "emacsclient.desktop";
 | 
						||
        "text/md" = "emacsclient.desktop";
 | 
						||
        "text/txt" = "emacsclient.desktop";
 | 
						||
        "text/rs" = "emacsclient.desktop";
 | 
						||
        "text/plain" = "emacsclient.desktop";
 | 
						||
        "application/pdf" = "okular.desktop";
 | 
						||
        "x-scheme-handler/about" = "librewolf.desktop";
 | 
						||
        "x-scheme-handler/unknown" = "librewolf.desktop";
 | 
						||
        "x-scheme-handler/magnet" = "torrent.desktop";
 | 
						||
        "application/vnd.openxmlformats-officedocuments.spreadsheetml.sheet" = "libreoffice.desktop";
 | 
						||
      };
 | 
						||
    };
 | 
						||
 | 
						||
  };
 | 
						||
 | 
						||
  # home.file.".config/xdg-desktop-portal/portals.conf" = {
 | 
						||
  #   text = ''
 | 
						||
  #   [preferred]
 | 
						||
  #   org.freedesktop.impl.portal.FileChooser=kde
 | 
						||
  #   '';
 | 
						||
  # };
 | 
						||
 | 
						||
  programs.gpg = { enable = true; };
 | 
						||
 | 
						||
  services.gpg-agent = {
 | 
						||
    enable = true;
 | 
						||
    pinentryPackage = pkgs.pinentry-emacs;
 | 
						||
    # extraConfig = ''
 | 
						||
    #   pinentry-program ${pkgs.pinentry.qt}/bin/pinentry
 | 
						||
    # '';
 | 
						||
  };
 | 
						||
 | 
						||
  qt = {
 | 
						||
    enable = true;
 | 
						||
    style.package = with pkgs; [
 | 
						||
      darkly-qt5
 | 
						||
      darkly
 | 
						||
    ];
 | 
						||
    platformTheme.name = "qtct";
 | 
						||
  };
 | 
						||
 | 
						||
  accounts.email = {
 | 
						||
    maildirBasePath = "mail";
 | 
						||
    accounts = {
 | 
						||
      personal = {
 | 
						||
        address = "chris@cochrun.xyz";
 | 
						||
        userName = "chris@cochrun.xyz";
 | 
						||
        mbsync.enable = true;
 | 
						||
        mu.enable = true;
 | 
						||
        flavor = "plain";
 | 
						||
        primary = true;
 | 
						||
        passwordCommand = "${pkgs.rbw}/bin/rbw get 'Office 365'";
 | 
						||
        realName = "Chris Cochrun";
 | 
						||
        signature = {
 | 
						||
          text = ''
 | 
						||
            Praising God in all things,
 | 
						||
            Chris Cochrun
 | 
						||
          '';
 | 
						||
          delimiter = ''
 | 
						||
            ***
 | 
						||
          '';
 | 
						||
          showSignature = "append";
 | 
						||
        };
 | 
						||
        imap = {
 | 
						||
          host = "mail.cochrun.xyz";
 | 
						||
          port = 993;
 | 
						||
          tls = {
 | 
						||
            enable = true;
 | 
						||
            # certificatesFile = ./certs.txt;
 | 
						||
          };
 | 
						||
        };
 | 
						||
        smtp = {
 | 
						||
          host = "mail.cochrun.xyz";
 | 
						||
          port = 25;
 | 
						||
          tls = {
 | 
						||
            enable = true;
 | 
						||
            # certificatesFile = ./certs.txt;
 | 
						||
          };
 | 
						||
        };
 | 
						||
        mbsync = {
 | 
						||
          create = "maildir";
 | 
						||
          remove = "both";
 | 
						||
          expunge = "both";
 | 
						||
        };
 | 
						||
        maildir.path = "cochrun";
 | 
						||
      };
 | 
						||
 | 
						||
      work = {
 | 
						||
        address = "chris@tfcconnection.org";
 | 
						||
        userName = "chris@tfcconnection.org";
 | 
						||
        mbsync.enable = true;
 | 
						||
        mu.enable = true;
 | 
						||
        flavor = "outlook.office365.com";
 | 
						||
        passwordCommand = "cat ~/.config/access";
 | 
						||
        realName = "Chris Cochrun";
 | 
						||
        imap = {
 | 
						||
          host = "outlook.office365.com";
 | 
						||
          port = 993;
 | 
						||
          tls.enable = true;
 | 
						||
        };
 | 
						||
        smtp = {
 | 
						||
          host = "smtp.office365.com";
 | 
						||
          port = 587;
 | 
						||
          tls.enable = true;
 | 
						||
        };
 | 
						||
        mbsync = {
 | 
						||
          create = "maildir";
 | 
						||
          remove = "both";
 | 
						||
          expunge = "both";
 | 
						||
          extraConfig.account = { AuthMechs = "XOAUTH2"; };
 | 
						||
        };
 | 
						||
        maildir.path = "office";
 | 
						||
        signature = {
 | 
						||
          text = ''
 | 
						||
            Praising God in all things,
 | 
						||
            Chris Cochrun
 | 
						||
          '';
 | 
						||
          delimiter = ''
 | 
						||
            ***
 | 
						||
          '';
 | 
						||
          showSignature = "append";
 | 
						||
        };
 | 
						||
      };
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  programs.git = {
 | 
						||
    enable = true;
 | 
						||
    userName = "Chris Cochrun";
 | 
						||
    userEmail = "chris@cochrun.xyz";
 | 
						||
  };
 | 
						||
 | 
						||
  home.packages = with pkgs; [ ];
 | 
						||
 | 
						||
  programs.mu.enable = true;
 | 
						||
 | 
						||
  programs.mbsync = {
 | 
						||
    package = pkgs.isync.override { withCyrusSaslXoauth2 = true; };
 | 
						||
    enable = true;
 | 
						||
  };
 | 
						||
  programs.msmtp.enable = true;
 | 
						||
  services.mbsync.enable = true;
 | 
						||
 | 
						||
  programs.obs-studio = {
 | 
						||
    enable = true;
 | 
						||
    plugins = [ pkgs.obs-studio-plugins.obs-move-transition ];
 | 
						||
  };
 | 
						||
 | 
						||
  programs.zed-editor = {
 | 
						||
    enable = true;
 | 
						||
  };
 | 
						||
 | 
						||
  # home.file.".config/mpv" = {
 | 
						||
  #   source = ../.config/mpv;
 | 
						||
  # };
 | 
						||
 | 
						||
  programs.mpv = {
 | 
						||
    enable = true;
 | 
						||
    scripts = with pkgs.mpvScripts; [
 | 
						||
      thumbfast
 | 
						||
      videoclip
 | 
						||
      mpris
 | 
						||
      quality-menu
 | 
						||
      modernx-zydezu
 | 
						||
      sponsorblock
 | 
						||
    ];
 | 
						||
    config = {
 | 
						||
      osc = "no";
 | 
						||
      vo = "gpu";
 | 
						||
      af = "scaletempo2";
 | 
						||
      input-ipc-server = "/tmp/mpvsocket";
 | 
						||
      hwdec = "auto";
 | 
						||
      rtsp-transport = "udp";
 | 
						||
      speed = 1.95;
 | 
						||
      gpu-context = "wayland";
 | 
						||
 | 
						||
      ytdl-format =
 | 
						||
        "bestvideo[height<=?720][fps<=?30][vcodec!=?vp9]+bestaudio/best";
 | 
						||
 | 
						||
    };
 | 
						||
    profiles = {
 | 
						||
      fast.speed = 1.95;
 | 
						||
 | 
						||
      slow.speed = 1;
 | 
						||
 | 
						||
      wc = {
 | 
						||
        speed = 1;
 | 
						||
        osd-level = 0;
 | 
						||
        load-scripts = "no";
 | 
						||
        profile = "low-latency";
 | 
						||
        demuxer-lavf-format = "video4linux2";
 | 
						||
        demuxer-lavf-o-set =
 | 
						||
          "input_format=mjpeg,video_size=1920x1080,framerate=60";
 | 
						||
        fps = 60;
 | 
						||
      };
 | 
						||
    };
 | 
						||
    scriptOpts = {
 | 
						||
      videoclip = {
 | 
						||
        video_folder_path = "/home/chris/vids";
 | 
						||
        audio_folder_path = "/home/chris/music";
 | 
						||
      };
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  # home.file.".config/ags" = {
 | 
						||
  #   source = ../.config/ags;
 | 
						||
  # };
 | 
						||
  # services.kdeconnect.enable = true;
 | 
						||
 | 
						||
  services = {
 | 
						||
    syncthing = {
 | 
						||
      enable = true;
 | 
						||
      # dataDir = "/home/chris";
 | 
						||
      # openDefaultPorts = true;
 | 
						||
      # configDir = "/home/chris/.config/syncthing";
 | 
						||
      # user = "chris";
 | 
						||
      # group = "users";
 | 
						||
      guiAddress = "0.0.0.0:8384";
 | 
						||
      overrideFolders = true;
 | 
						||
      overrideDevices = true;
 | 
						||
      tray.enable = true;
 | 
						||
      settings = {
 | 
						||
        devices = {
 | 
						||
          kaladin = {
 | 
						||
            id = (if laptop then
 | 
						||
              "PMB4FRV-2CAPFCQ-UFELVNI-YAQRRHE-MMMXQ4P-RXEXBZV-QEUL6QN-KZEW5AM"
 | 
						||
            else
 | 
						||
              "");
 | 
						||
          };
 | 
						||
          syl = {
 | 
						||
            id = (if laptop then
 | 
						||
              ""
 | 
						||
            else
 | 
						||
              "FPELBL2-Y6BMDOB-4TXM75K-VZV7IR3-JDMM35Z-TUEZKXX-YAPUTL6-K5SFQAN");
 | 
						||
          };
 | 
						||
          shadow = {
 | 
						||
            id =
 | 
						||
              "B24VU6Z-URTMEXN-ZYKRWX7-XWSTHXD-XKX67EB-XSKMT4V-KWKGX7Q-W7DB2QV";
 | 
						||
          };
 | 
						||
          tablet = {
 | 
						||
            id =
 | 
						||
              "4HEXCNH-MCVBZQX-LQ735TG-P2VTJ7N-CZ5MK4P-ICZAPC7-YCXVEWV-7NILMA5";
 | 
						||
          };
 | 
						||
          kohlin = {
 | 
						||
            id =
 | 
						||
              "BSWKBRR-2IJBCHA-UQY7DE7-CV2U2IL-PMFQFCJ-D5ZZJMU-FPYRUPC-MCC32QQ";
 | 
						||
          };
 | 
						||
          dalinar = {
 | 
						||
            id =
 | 
						||
              "MPRMA33-XHW6SRE-D2EDBCP-TSMRNGI-ZCE2TAN-FE4BMKA-PSKGYJW-CRIEJQL";
 | 
						||
          };
 | 
						||
        };
 | 
						||
        folders = {
 | 
						||
          docs = {
 | 
						||
            path = "${config.home.homeDirectory}/docs";
 | 
						||
            devices =
 | 
						||
              [ (if laptop then "kaladin" else "syl") "shadow" "dalinar" ];
 | 
						||
            # versioning = {
 | 
						||
            #   type = "staggered";
 | 
						||
            #   fsPath = "~/.local/share/syncthing/backup";
 | 
						||
            #   params = {
 | 
						||
            #     cleanInterval = 3600;
 | 
						||
            #     maxAge = 31536000;
 | 
						||
            #   };
 | 
						||
            # };
 | 
						||
          };
 | 
						||
          music = {
 | 
						||
            id = "teqqy-rzvec";
 | 
						||
            path = "${config.home.homeDirectory}/music";
 | 
						||
            devices =
 | 
						||
              [ "dalinar" (if laptop then "kaladin" else "syl") "shadow" ];
 | 
						||
          };
 | 
						||
        };
 | 
						||
      };
 | 
						||
    };
 | 
						||
    easyeffects.enable = true;
 | 
						||
    nextcloud-client = {
 | 
						||
      enable = true;
 | 
						||
      startInBackground = true;
 | 
						||
    };
 | 
						||
 | 
						||
    mpd.enable = true;
 | 
						||
    pueue.enable = true;
 | 
						||
 | 
						||
    # For matrix clients that don't have e2ee
 | 
						||
    pantalaimon = {
 | 
						||
      enable = false;
 | 
						||
      settings = {
 | 
						||
        Default = {
 | 
						||
          LogLevel = "Debug";
 | 
						||
          SSL = true;
 | 
						||
        };
 | 
						||
        local-matrix = {
 | 
						||
          Homeserver = "https://matrix.tfcconnection.org";
 | 
						||
          ListenAddress = "127.0.0.1";
 | 
						||
          ListenPort = 8008;
 | 
						||
          # SSL = true;
 | 
						||
          # IgnoreVerification = true;
 | 
						||
        };
 | 
						||
      };
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  # stylix = {
 | 
						||
  #   enable = true;
 | 
						||
  #   polarity = "dark";
 | 
						||
  #   base16Scheme = {
 | 
						||
  #     base00 = "282a36";
 | 
						||
  #     base01 = "34353e";
 | 
						||
  #     base02 = "43454f";
 | 
						||
  #     base03 = "78787e";
 | 
						||
  #     base04 = "a5a5a9";
 | 
						||
  #     base05 = "e2e4e5";
 | 
						||
  #     base06 = "eff0eb";
 | 
						||
  #     base07 = "f1f1f0";
 | 
						||
  #     base08 = "ff5c57";
 | 
						||
  #     base09 = "ff9f43";
 | 
						||
  #     base0A = "f3f99d";
 | 
						||
  #     base0B = "5af78e";
 | 
						||
  #     base0C = "9aedfe";
 | 
						||
  #     base0D = "57c7ff";
 | 
						||
  #     base0E = "ff6ac1";
 | 
						||
  #     base0F = "b2643c";
 | 
						||
  #   };
 | 
						||
  #   image = config.lib.stylix.pixel "base0D";
 | 
						||
  #   # targets.tofi.enable = false;
 | 
						||
  # };
 | 
						||
 | 
						||
  # programs.tofi.enable = true;
 | 
						||
 | 
						||
  #services.espanso = {
 | 
						||
  #  enable = true;
 | 
						||
  #  settings = {
 | 
						||
  #    toggle_key = "RIGHT_CTRL";
 | 
						||
  #    matches = [
 | 
						||
  #      { # dates
 | 
						||
  #        trigger = ":date";
 | 
						||
  #        replace = "{{mydate}}";
 | 
						||
  #        vars = [{
 | 
						||
 | 
						||
  #          name = "mydate";
 | 
						||
  #          type = "date";
 | 
						||
  #          params = {format = "%m/%d/%Y";};
 | 
						||
  #        }];
 | 
						||
  #      }
 | 
						||
  #      { # Shell commands
 | 
						||
  #        trigger = ":shell";
 | 
						||
  #        replace = "{{output}}";
 | 
						||
  #        vars = [{
 | 
						||
  #          name = "output";
 | 
						||
  #          type = "shell";
 | 
						||
  #          params = { cmd = "echo Hello from your shell";};
 | 
						||
  #        }];
 | 
						||
  #      }
 | 
						||
  #      { # simple text
 | 
						||
  #        trigger = ":gml";
 | 
						||
  #        replace = "ccochrun21@gmail.com";
 | 
						||
  #      }
 | 
						||
  #      {
 | 
						||
  #        trigger = ":otl";
 | 
						||
  #        replace = "chris.cochrun@outlook.com";
 | 
						||
  #      }
 | 
						||
  #      {
 | 
						||
  #        trigger = ":tfcml";
 | 
						||
  #        replace = "chris@tfcconnection.org";
 | 
						||
  #      }
 | 
						||
  #      {
 | 
						||
  #        trigger = ":name";
 | 
						||
  #        replace = "Chris Cochrun";
 | 
						||
  #      }
 | 
						||
  #      {
 | 
						||
  #        trigger = ":cn";
 | 
						||
  #        replace = "A Giant Gummy Lizard";
 | 
						||
  #      }
 | 
						||
  #    ];
 | 
						||
  #  };
 | 
						||
  #};
 | 
						||
 | 
						||
  home.pointerCursor = {
 | 
						||
    gtk.enable = true;
 | 
						||
    package = pkgs.phinger-cursors;
 | 
						||
    name = "phinger-cursors-light";
 | 
						||
    size = 32;
 | 
						||
  };
 | 
						||
 | 
						||
  dconf.settings = {
 | 
						||
    "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; };
 | 
						||
  };
 | 
						||
 | 
						||
  gtk = {
 | 
						||
    enable = true;
 | 
						||
    cursorTheme = {
 | 
						||
      name = "phinger-cursors-light";
 | 
						||
      package = pkgs.phinger-cursors;
 | 
						||
      size = 32;
 | 
						||
    };
 | 
						||
    font = {
 | 
						||
      name = "VictorMono Nerd Font";
 | 
						||
      size = 11;
 | 
						||
    };
 | 
						||
    iconTheme = {
 | 
						||
      name = "Papirus-Dark";
 | 
						||
      package = pkgs.papirus-icon-theme;
 | 
						||
    };
 | 
						||
    # theme.name = "Breeze";
 | 
						||
    gtk3.extraConfig = {
 | 
						||
      gtk-application-prefer-dark-theme = true;
 | 
						||
      gtk-button-images = true;
 | 
						||
      gtk-decoration-layout = "icon:minimize,maximize,close";
 | 
						||
      gtk-enable-animations = true;
 | 
						||
      gtk-enable-event-sounds = 1;
 | 
						||
      gtk-menu-images = true;
 | 
						||
      gtk-primary-button-warps-slider = true;
 | 
						||
      gtk-xft-antialias = 1;
 | 
						||
      gtk-xft-dpi = 98304;
 | 
						||
      gtk-xft-hinting = 1;
 | 
						||
      gtk-xft-hintstyle = "hintfull";
 | 
						||
      gtk-xft-rgba = "rgb";
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  services.cliphist = { enable = true; };
 | 
						||
 | 
						||
  home.file.".config/bottom" = {
 | 
						||
    source = ../.config/bottom;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".mozilla/firefox/nw77o6yc.default/chrome" = {
 | 
						||
    source = ../.config/firefox/chrome;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".mozilla/firefox/nw77o6yc.default/user.js" = {
 | 
						||
    text = ''
 | 
						||
      // userchrome.css usercontent.css activate
 | 
						||
      user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
 | 
						||
 | 
						||
      // disable new sidebar
 | 
						||
      user_pref("sidebar.revamp", false);
 | 
						||
 | 
						||
      // Fill SVG Color
 | 
						||
      user_pref("svg.context-properties.content.enabled", true);
 | 
						||
 | 
						||
      // CSS's `:has()` selector 
 | 
						||
      user_pref("layout.css.has-selector.enabled", true);
 | 
						||
 | 
						||
      // Integrated calculator at urlbar
 | 
						||
      user_pref("browser.urlbar.suggest.calculator", true);
 | 
						||
 | 
						||
      // Integrated unit convertor at urlbar
 | 
						||
      user_pref("browser.urlbar.unitConversion.enabled", true);
 | 
						||
 | 
						||
      // Trim  URL
 | 
						||
      user_pref("browser.urlbar.trimHttps", true);
 | 
						||
      user_pref("browser.urlbar.trimURLs", true);
 | 
						||
 | 
						||
      // GTK rounded corners
 | 
						||
      user_pref("widget.gtk.rounded-bottom-corners.enabled", true);
 | 
						||
 | 
						||
      // Who is bogus? (fixes Sidebery tab dragging on Linux)
 | 
						||
      user_pref("widget.gtk.ignore-bogus-leave-notify", 1);
 | 
						||
    '';
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".librewolf/nw77o6yc.default/chrome" = {
 | 
						||
    source = ../.config/firefox/chrome;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".librewolf/nw77o6yc.default/user.js" = {
 | 
						||
    text = ''
 | 
						||
      // userchrome.css usercontent.css activate
 | 
						||
      user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
 | 
						||
 | 
						||
      // disable new sidebar
 | 
						||
      user_pref("sidebar.revamp", false);
 | 
						||
 | 
						||
      // Fill SVG Color
 | 
						||
      user_pref("svg.context-properties.content.enabled", true);
 | 
						||
 | 
						||
      // CSS's `:has()` selector 
 | 
						||
      user_pref("layout.css.has-selector.enabled", true);
 | 
						||
 | 
						||
      // Integrated calculator at urlbar
 | 
						||
      user_pref("browser.urlbar.suggest.calculator", true);
 | 
						||
 | 
						||
      // Integrated unit convertor at urlbar
 | 
						||
      user_pref("browser.urlbar.unitConversion.enabled", true);
 | 
						||
 | 
						||
      // Trim  URL
 | 
						||
      user_pref("browser.urlbar.trimHttps", true);
 | 
						||
      user_pref("browser.urlbar.trimURLs", true);
 | 
						||
 | 
						||
      // GTK rounded corners
 | 
						||
      user_pref("widget.gtk.rounded-bottom-corners.enabled", true);
 | 
						||
 | 
						||
      // Who is bogus? (fixes Sidebery tab dragging on Linux)
 | 
						||
      user_pref("widget.gtk.ignore-bogus-leave-notify", 1);
 | 
						||
      user_pref("shyfox.remove.window.controls", true);
 | 
						||
      user_pref("dom.webgpu.enabled", true);
 | 
						||
      user_pref("dom.webgpu.indirect_draw.enabled", true);
 | 
						||
      user_pref("dom.webgpu.workers.enabled", true);
 | 
						||
    '';
 | 
						||
  };
 | 
						||
  
 | 
						||
  home.file.".config/tridactyl" = {
 | 
						||
    source = ../.config/tridactyl;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  # home.file.".librewolf/native-messaging-hosts/tridactyl.json" = {
 | 
						||
  #   source = pkgs.tridactyl-native;
 | 
						||
  # };
 | 
						||
 | 
						||
  programs.librewolf = {
 | 
						||
    enable = true;
 | 
						||
    package = pkgs.librewolf-wayland.override {
 | 
						||
      nativeMessagingHosts =
 | 
						||
        [ pkgs.kdePackages.plasma-browser-integration pkgs.tridactyl-native ];
 | 
						||
    };
 | 
						||
    profiles.chris = {
 | 
						||
      name = "default";
 | 
						||
      path = "nw77o6yc.default";
 | 
						||
      isDefault = true;
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  programs.eww = {
 | 
						||
    enable = true;
 | 
						||
    # configDir = ../.config/eww;
 | 
						||
  };
 | 
						||
 | 
						||
  programs.waybar = {
 | 
						||
    enable = true;
 | 
						||
    settings = {
 | 
						||
      mainBar = {
 | 
						||
        layer = "top";
 | 
						||
        output = [ "DP-1" "eDP-1" ];
 | 
						||
        position = if laptop then "bottom" else "top";
 | 
						||
        height = 15;
 | 
						||
        width = if laptop then 1450 else 2200;
 | 
						||
        # Choose the order of the modules "custom/wintitle", 
 | 
						||
        # modules-left = [ "hyprland/workspaces" "hyprland/window" ];
 | 
						||
        modules-left = [ "hyprland/workspaces" "hyprland/window" "niri/window" ];
 | 
						||
        modules-center = [ "clock" ];
 | 
						||
        modules-right =
 | 
						||
          [ "cpu" "memory" "pulseaudio" "backlight" "battery" "tray" ];
 | 
						||
        margin-top = if laptop then -5 else 5;
 | 
						||
        margin-bottom = if laptop then 4 else 0;
 | 
						||
        margin-left = 6;
 | 
						||
        margin-right = 6;
 | 
						||
        "niri/window" = { format = " <span style='italic'>{title}</span>"; icon = true; };
 | 
						||
        "hyprland/window" = { format = "<span style='italic'>{title}</span>"; icon = true; };
 | 
						||
        workspaces = { format = " {name} "; };
 | 
						||
        "hyprland/workspaces" = {
 | 
						||
          format = "{icon}";
 | 
						||
          format-icons = {
 | 
						||
            "1" = "";
 | 
						||
            "2" = "";
 | 
						||
            "3" = "";
 | 
						||
            "4" = "";
 | 
						||
            "5" = "";
 | 
						||
            "6" = "";
 | 
						||
            "7" = "";
 | 
						||
            "8" = "";
 | 
						||
            "9" = "";
 | 
						||
          };
 | 
						||
          all-outputs = true;
 | 
						||
          # on-scroll-up = "hyprctl dispatch workspace e+1";
 | 
						||
          # on-scroll-down = "hyprctl dispatch workspace e-1";
 | 
						||
        };
 | 
						||
        "niri/workspaces" = {
 | 
						||
          format = "{icon}";
 | 
						||
          format-icons = {
 | 
						||
            "main" = "";
 | 
						||
            "2" = "";
 | 
						||
            "3" = "";
 | 
						||
            "4" = "";
 | 
						||
            "5" = "";
 | 
						||
            "6" = "";
 | 
						||
            "7" = "";
 | 
						||
            "8" = "";
 | 
						||
            "9" = "";
 | 
						||
          };
 | 
						||
          all-outputs = true;
 | 
						||
          # on-scroll-up = "hyprctl dispatch workspace e+1";
 | 
						||
          # on-scroll-down = "hyprctl dispatch workspace e-1";
 | 
						||
        };
 | 
						||
        tray = {
 | 
						||
          icon-size = 20;
 | 
						||
          spacing = 10;
 | 
						||
        };
 | 
						||
        clock = {
 | 
						||
          tooltip-format = ''
 | 
						||
            <big>{:%Y %B}</big>
 | 
						||
            <tt><small>{calendar}</small></tt>'';
 | 
						||
          format-alt = "{:%Y-%m-%d}";
 | 
						||
          format = "{:%b %e, %I:%M %p}";
 | 
						||
        };
 | 
						||
        cpu = { format = "  {usage}%"; on-click = "alacritty --class btop -e btop"; };
 | 
						||
        memory = { format = "  {}%"; on-click = "alacritty --class btop -e btop"; };
 | 
						||
        "custom/gpu" = {
 | 
						||
          exec = "cat /sys/class/hwmon/hwmon0/device/gpu_busy_percent";
 | 
						||
          format = "  {}%";
 | 
						||
          return-type = "";
 | 
						||
          interval = 1;
 | 
						||
          on-click = "alacritty --class btop -e nvtop";
 | 
						||
        };
 | 
						||
        temperature = {
 | 
						||
          # "thermal-zone": 2,
 | 
						||
          # "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input",
 | 
						||
          critical-threshold = 80;
 | 
						||
          # "format-critical": "{temperatureC}°C {icon}",
 | 
						||
          format = "{icon} {temperatureC}°C";
 | 
						||
          format-icons = [ "" "" "" ];
 | 
						||
        };
 | 
						||
        backlight = {
 | 
						||
          # "device": "acpi_video1",
 | 
						||
          format = "{icon} {PERCENT}%";
 | 
						||
          format-icons = [ "" "" ];
 | 
						||
        };
 | 
						||
        disk = {
 | 
						||
          format = " {percentage_used}%";
 | 
						||
          tooltip-format = "{used} out of {total} with {free} left";
 | 
						||
        };
 | 
						||
        battery = {
 | 
						||
          states = {
 | 
						||
            good = 95;
 | 
						||
            warning = 30;
 | 
						||
            critical = 15;
 | 
						||
          };
 | 
						||
          format = "{icon} {capacity}%";
 | 
						||
          format-charging = "{icon} {capacity}%";
 | 
						||
          format-plugged = " {capacity}%";
 | 
						||
          format-alt = "{time} {icon}";
 | 
						||
          format-good = "{icon} {capacity}%";
 | 
						||
          format-full = " {capacity}%";
 | 
						||
          format-icons = [ "" "" "" "" "" ];
 | 
						||
          format-charging-icons = [ "" "" "" "" "" ];
 | 
						||
        };
 | 
						||
        network = {
 | 
						||
          # "interface": "wlp2*", // (Optional) To force the use of this interface
 | 
						||
          format-wifi = "  ({signalStrength}%)";
 | 
						||
          format-ethernet = " {ipaddr}";
 | 
						||
          format-linked = "{ifname} (No IP)";
 | 
						||
          format-disconnected = "Disconnected ";
 | 
						||
          format-alt = "{ifname}: {essid} {ipaddr}/{cidr}";
 | 
						||
        };
 | 
						||
        pulseaudio = {
 | 
						||
          scroll-step = 1;
 | 
						||
          format = "{icon}  {volume}%";
 | 
						||
          format-muted = " muted";
 | 
						||
          format-source = "";
 | 
						||
          format-source-muted = "";
 | 
						||
          format-icons = {
 | 
						||
            headphone = [ "" "" "" ];
 | 
						||
            phone = "";
 | 
						||
            portable = "";
 | 
						||
            car = "";
 | 
						||
            default = [ "" "" "" ];
 | 
						||
          };
 | 
						||
          on-click = "alacritty --class pulsemixer -e pulsemixer";
 | 
						||
          ignored-sinks = [ "Easy Effects Sink" ];
 | 
						||
        };
 | 
						||
      };
 | 
						||
    };
 | 
						||
    style = ''
 | 
						||
      @define-color base00 #282a36;
 | 
						||
      @define-color base01 #34353e;
 | 
						||
      @define-color base02 #43454f;
 | 
						||
      @define-color base03 #78787e;
 | 
						||
      @define-color base04 #a5a5a9;
 | 
						||
      @define-color base05 #e2e4e5;
 | 
						||
      @define-color base06 #eff0eb;
 | 
						||
      @define-color base07 #f1f1f0;
 | 
						||
      @define-color base08 #ff5c57;
 | 
						||
      @define-color base09 #ff9f43;
 | 
						||
      @define-color base0A #f3f99d;
 | 
						||
      @define-color base0B #5af78e;
 | 
						||
      @define-color base0C #9aedfe;
 | 
						||
      @define-color base0D #57c7ff;
 | 
						||
      @define-color base0E #ff6ac1;
 | 
						||
      @define-color base0F #b2643c;
 | 
						||
      @define-color basetransparent rgba(40, 42, 54, 0.0);
 | 
						||
      @define-color backtransparent rgba(40, 42, 54, 0.7);
 | 
						||
      * {
 | 
						||
          border:        1px;
 | 
						||
          border-radius: 20px;
 | 
						||
          font-family:   VictorMono Nerd Font;
 | 
						||
          font-size:     15px;
 | 
						||
          font-weight:   normal;
 | 
						||
          box-shadow:    none;
 | 
						||
          text-shadow:   none;
 | 
						||
          transition-duration: 0s;
 | 
						||
          padding-top: 0px;
 | 
						||
          padding-bottom: 0px;
 | 
						||
      }
 | 
						||
 | 
						||
 | 
						||
      window {
 | 
						||
          background: transparent;
 | 
						||
          /* border-radius: 20px; */
 | 
						||
      }
 | 
						||
 | 
						||
      #window {
 | 
						||
          padding-left: 3px;
 | 
						||
      }
 | 
						||
 | 
						||
      window#waybar > box {
 | 
						||
          color:      @base05;
 | 
						||
          margin: 12px 14px 14px 14px;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
     .modules-right {
 | 
						||
          padding-top: 2px;
 | 
						||
          padding-bottom: 2px;
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 5px;
 | 
						||
          margin-right: 0px;
 | 
						||
          background: @backtransparent;
 | 
						||
          box-shadow: 5px 5px 4px 4px #202020;
 | 
						||
          border-radius: 20px;
 | 
						||
     }
 | 
						||
 | 
						||
     .modules-center {
 | 
						||
          padding-top: 2px;
 | 
						||
          padding-bottom: 2px;
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 2px;
 | 
						||
          background: @backtransparent;
 | 
						||
          box-shadow: 5px 5px 4px 4px #202020;
 | 
						||
          border-radius: 20px;
 | 
						||
     }
 | 
						||
 | 
						||
      .modules-left {
 | 
						||
          padding-top: 2px;
 | 
						||
          padding-bottom: 2px;
 | 
						||
          padding-right: 10px;
 | 
						||
          padding-left: 5px;
 | 
						||
          background: @backtransparent;
 | 
						||
          box-shadow: 5px 5px 4px 4px #202020;
 | 
						||
          border-radius: 20px;
 | 
						||
     }
 | 
						||
 | 
						||
      tooltip {
 | 
						||
        background: @base00;
 | 
						||
        border: 1px solid @base0D;
 | 
						||
      }
 | 
						||
 | 
						||
      tooltip label {
 | 
						||
        padding: 10px;
 | 
						||
      }
 | 
						||
 | 
						||
      #workspaces {
 | 
						||
          border-radius: 20px;
 | 
						||
          padding-right: 10px;
 | 
						||
          background: transparent;
 | 
						||
          transition: none;
 | 
						||
          color: @base0C;
 | 
						||
      }
 | 
						||
 | 
						||
      #tags {
 | 
						||
          border-radius: 20px;
 | 
						||
          margin-left: 6px;
 | 
						||
          padding-right: 10px;
 | 
						||
          background: transparent;
 | 
						||
          transition: none;
 | 
						||
      }
 | 
						||
 | 
						||
      #workspaces button {
 | 
						||
          padding: 0 0.7em;
 | 
						||
          transition: none;
 | 
						||
          color:      rgba(217, 216, 216, 0.4);
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #tags button {
 | 
						||
          transition: none;
 | 
						||
          color:      rgba(217, 216, 216, 0.4);
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #workspaces button.visible {
 | 
						||
          color: @base0C;
 | 
						||
      }
 | 
						||
 | 
						||
      #tags button.occupied {
 | 
						||
          color:      rgba(217, 216, 216, 1);
 | 
						||
      }
 | 
						||
 | 
						||
      #workspaces button.focused {
 | 
						||
          color: @base09;
 | 
						||
      }
 | 
						||
 | 
						||
      #tags button.focused {
 | 
						||
          color: @base0C;
 | 
						||
      }
 | 
						||
 | 
						||
      #workspaces button:hover {
 | 
						||
          transition: none;
 | 
						||
          box-shadow: inherit;
 | 
						||
          text-shadow: inherit;
 | 
						||
          color: @base0E;
 | 
						||
      }
 | 
						||
 | 
						||
      #workspaces button.urgent {
 | 
						||
          color:      @base08;
 | 
						||
      }
 | 
						||
 | 
						||
      #mode, #battery, #cpu, #memory, #network, #pulseaudio, #idle_inhibitor, #backlight, #custom-storage, #disk, #custom-weather, #custom-mail {
 | 
						||
          margin:     0px 3px 0px 3px;
 | 
						||
          /* min-width:  25px; */
 | 
						||
      }
 | 
						||
 | 
						||
      #clock {
 | 
						||
          margin-left: 2px;
 | 
						||
          margin-right: 2px;
 | 
						||
          padding-left: 10px;
 | 
						||
          padding-right: 10px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base0B;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #backlight {
 | 
						||
          margin-left: 2px;
 | 
						||
          margin-right: 2px;
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 5px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base08;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #battery.warning {
 | 
						||
          color:       @base09;
 | 
						||
      }
 | 
						||
 | 
						||
      #battery.critical {
 | 
						||
          color:      @base08;
 | 
						||
      }
 | 
						||
 | 
						||
      #battery.charging {
 | 
						||
          color:      @base0B;
 | 
						||
      }
 | 
						||
 | 
						||
      #pulseaudio {
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 0px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base0A;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #network {
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 5px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base0B;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #cpu {
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 5px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base09;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #custom-gpu {
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 5px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base08;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #battery {
 | 
						||
          padding-left: 0px;
 | 
						||
          padding-right: 0px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base0D;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #battery.bat2 {
 | 
						||
          margin-right: 10px;
 | 
						||
      }
 | 
						||
 | 
						||
      #memory {
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 5px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base0C;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #disk {
 | 
						||
          padding-left: 5px;
 | 
						||
          padding-right: 5px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base0E;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
      #tray {
 | 
						||
          padding-left: 15px;
 | 
						||
          padding-right: 5px;
 | 
						||
          border-radius: 20px;
 | 
						||
          transition: none;
 | 
						||
          color: @base0E;
 | 
						||
          background: transparent;
 | 
						||
      }
 | 
						||
 | 
						||
    '';
 | 
						||
  };
 | 
						||
 | 
						||
  programs.rbw = {
 | 
						||
    enable = true;
 | 
						||
    settings = {
 | 
						||
      email = "chris@tfcconnection.org";
 | 
						||
      base_url = "https://bitwarden.tfcconnection.org";
 | 
						||
      identity_url = null;
 | 
						||
      lock_timeout = 9600;
 | 
						||
      pinentry = pkgs.pinentry-qt;
 | 
						||
    };
 | 
						||
  };
 | 
						||
  # home.file.".config/rbw" = {
 | 
						||
  #   source = ../.config/rbw;
 | 
						||
  #   recursive = true;
 | 
						||
  # };
 | 
						||
 | 
						||
  # home.file.".config/fish/config.fish" = {
 | 
						||
  #   source = ../.config/fish/config.fish;
 | 
						||
  # };
 | 
						||
 | 
						||
  home.file.".config/fish/functions" = { source = ../.config/fish/functions; };
 | 
						||
 | 
						||
  # programs.ags = {
 | 
						||
  #   enable = true;
 | 
						||
  #   extraPackages = with pkgs; [
 | 
						||
  #     gtksourceview
 | 
						||
  #     webkitgtk
 | 
						||
  #     accountsservice
 | 
						||
  #   ];
 | 
						||
  # };
 | 
						||
 | 
						||
  programs.fish = {
 | 
						||
    enable = true;
 | 
						||
    interactiveShellInit = ''
 | 
						||
      function fish_greeting -d "what's up, fish?"
 | 
						||
          # set_color $fish_color_autosuggestion[1]
 | 
						||
          # uname -npsr
 | 
						||
          # uptime
 | 
						||
          # set_color normal
 | 
						||
      end
 | 
						||
 | 
						||
      function fish_title
 | 
						||
          if [ "$theme_display_virtualenv" = 'no' -o -z "$VIRTUAL_ENV" ]
 | 
						||
              printf '(%s) %s' $_ (prompt_pwd)
 | 
						||
          else
 | 
						||
              printf '(%s) %s' (basename "$VIRTUAL_ENV") (prompt_pwd)
 | 
						||
          end
 | 
						||
      end
 | 
						||
 | 
						||
      function _prompt_whoami -a sep_color -a color -d "Display user@host if on a SSH session"
 | 
						||
          if set -q SSH_TTY
 | 
						||
              echo -n -s $color (whoami)@(hostnamectl --static) $sep_color '|'
 | 
						||
          end
 | 
						||
      end
 | 
						||
 | 
						||
      function _git_branch_name
 | 
						||
          echo (command git symbolic-ref HEAD 2> /dev/null | sed -e 's|^refs/heads/||')
 | 
						||
      end
 | 
						||
 | 
						||
      function _is_git_dirty
 | 
						||
          echo (command git status -s --ignore-submodules=dirty 2> /dev/null)
 | 
						||
      end
 | 
						||
 | 
						||
      function _git_ahead_count -a remote -a branch_name
 | 
						||
          echo (command git log $remote/$branch_name..HEAD 2> /dev/null | \
 | 
						||
              grep '^commit' | wc -l | tr -d ' ')
 | 
						||
      end
 | 
						||
 | 
						||
      function _git_dirty_remotes -a remote_color -a ahead_color
 | 
						||
          set current_branch (command git rev-parse --abbrev-ref HEAD 2> /dev/null)
 | 
						||
          set current_ref (command git rev-parse HEAD 2> /dev/null)
 | 
						||
 | 
						||
          for remote in (git remote | grep 'origin\|upstream')
 | 
						||
 | 
						||
          set -l git_ahead_count (_git_ahead_count $remote $current_branch)
 | 
						||
 | 
						||
          set remote_branch "refs/remotes/$remote/$current_branch"
 | 
						||
          set remote_ref (git for-each-ref --format='%(objectname)' $remote_branch)
 | 
						||
          if test "$remote_ref" != \'\'
 | 
						||
              if test "$remote_ref" != $current_ref
 | 
						||
                  if [ $git_ahead_count != 0 ]
 | 
						||
                      echo -n "$remote_color!"
 | 
						||
                      echo -n "$ahead_color+$git_ahead_count$normal"
 | 
						||
                  end
 | 
						||
              end
 | 
						||
          end
 | 
						||
          end
 | 
						||
      end
 | 
						||
 | 
						||
      function _prompt_git -a gray normal orange red yellow
 | 
						||
          test "$theme_display_git" = no; and return
 | 
						||
          set -l git_branch (_git_branch_name)
 | 
						||
          test -z $git_branch; and return
 | 
						||
          if test "$theme_display_git_dirty" = no
 | 
						||
              echo -n -s $gray '‹' $yellow $git_branch $gray '› '
 | 
						||
              return
 | 
						||
          end
 | 
						||
          set dirty_remotes (_git_dirty_remotes $red $orange)
 | 
						||
          if [ (_is_git_dirty) ]
 | 
						||
              echo -n -s $gray '‹' $yellow $git_branch $red '*' $dirty_remotes $gray '› '
 | 
						||
          else
 | 
						||
              echo -n -s $gray '‹' $yellow $git_branch $red $dirty_remotes $gray '› '
 | 
						||
          end
 | 
						||
      end
 | 
						||
 | 
						||
      function _prompt_pwd
 | 
						||
          set_color -o cyan
 | 
						||
          printf '%s' (prompt_pwd)
 | 
						||
      end
 | 
						||
 | 
						||
      function _prompt_status_arrows -a exit_code
 | 
						||
          if test $exit_code -ne 0
 | 
						||
              set arrow_colors green
 | 
						||
          else
 | 
						||
              set arrow_colors green
 | 
						||
          end
 | 
						||
 | 
						||
          for arrow_color in $arrow_colors
 | 
						||
              set_color $arrow_color
 | 
						||
              printf '»'
 | 
						||
          end
 | 
						||
      end
 | 
						||
 | 
						||
      function fish_prompt
 | 
						||
          set -l exit_code $status
 | 
						||
 | 
						||
          set -l gray (set_color 666)
 | 
						||
          set -l blue (set_color blue)
 | 
						||
          set -l red (set_color red)
 | 
						||
          set -l normal (set_color normal)
 | 
						||
          set -l yellow (set_color yellow)
 | 
						||
          set -l orange (set_color ff9900)
 | 
						||
          set -l green (set_color green)
 | 
						||
 | 
						||
          printf $gray'['
 | 
						||
 | 
						||
          _prompt_whoami $gray $green
 | 
						||
 | 
						||
          if test "$theme_display_pwd_on_second_line" != yes
 | 
						||
              _prompt_pwd
 | 
						||
              printf '%s' $gray
 | 
						||
          end
 | 
						||
 | 
						||
          printf '%s] ⚡️ %0.3fs' $gray (math $CMD_DURATION / 1000)
 | 
						||
 | 
						||
          if set -q SCORPHISH_GIT_INFO_ON_FIRST_LINE
 | 
						||
              set theme_display_git_on_first_line
 | 
						||
          end
 | 
						||
 | 
						||
          if set -q theme_display_git_on_first_line
 | 
						||
              _prompt_git $gray $normal $orange $red $yellow
 | 
						||
          end
 | 
						||
 | 
						||
          if test "$theme_display_pwd_on_second_line" = yes
 | 
						||
              printf $gray'\n‹'
 | 
						||
              _prompt_pwd
 | 
						||
              printf $gray'›'
 | 
						||
          end
 | 
						||
 | 
						||
          printf '\n'
 | 
						||
          if not set -q theme_display_git_on_first_line
 | 
						||
              _prompt_git $gray $normal $orange $red $yellow
 | 
						||
          end
 | 
						||
          _prompt_status_arrows $exit_code
 | 
						||
          printf ' '
 | 
						||
 | 
						||
          set_color normal
 | 
						||
      end
 | 
						||
 | 
						||
      function fish_right_prompt
 | 
						||
          set -l exit_code $status
 | 
						||
          if test $exit_code -ne 0
 | 
						||
              set_color red
 | 
						||
          else
 | 
						||
              set_color green
 | 
						||
          end
 | 
						||
          printf '%d' $exit_code
 | 
						||
          set_color -o 666
 | 
						||
          echo '|'
 | 
						||
          set_color -o 777
 | 
						||
          printf '%s' (date +%H:%M:%S)
 | 
						||
          set_color normal
 | 
						||
      end
 | 
						||
 | 
						||
      ### VI MODES
 | 
						||
      # Emulates vim's cursor shape behavior
 | 
						||
      # Set the normal and visual mode cursors to a block
 | 
						||
      set fish_cursor_default block
 | 
						||
      # Set the insert mode cursor to a line
 | 
						||
      set fish_cursor_insert line
 | 
						||
      # Set the replace mode cursor to an underscore
 | 
						||
      set fish_cursor_replace_one underscore
 | 
						||
      # The following variable can be used to configure cursor shape in
 | 
						||
      # visual mode, but due to fish_cursor_default, is redundant here
 | 
						||
      set fish_cursor_visual block
 | 
						||
 | 
						||
      ### BANG BANG FUNCTIONS
 | 
						||
      function __history_previous_command
 | 
						||
          switch (commandline -t)
 | 
						||
              case "!"
 | 
						||
                  commandline -t $history[1]
 | 
						||
                  commandline -f repaint
 | 
						||
              case "*"
 | 
						||
                  commandline -i !
 | 
						||
          end
 | 
						||
      end
 | 
						||
 | 
						||
      function __history_previous_command_arguments
 | 
						||
          switch (commandline -t)
 | 
						||
              case "!"
 | 
						||
                  commandline -t ""
 | 
						||
                  commandline -f history-token-search-backward
 | 
						||
              case "*"
 | 
						||
                  commandline -i '$'
 | 
						||
          end
 | 
						||
      end
 | 
						||
 | 
						||
      ### bindings
 | 
						||
      function fish_user_key_bindings
 | 
						||
          fish_vi_key_bindings
 | 
						||
          bind -M insert ! __history_previous_command
 | 
						||
          bind -M insert '$' __history_previous_command_arguments
 | 
						||
      end
 | 
						||
 | 
						||
      ${pkgs.any-nix-shell}/bin/any-nix-shell fish --info-right | source
 | 
						||
 | 
						||
      starship init fish | source
 | 
						||
    '';
 | 
						||
 | 
						||
    shellAliases = {
 | 
						||
      ls = "eza -l";
 | 
						||
      la = "eza -la";
 | 
						||
      mpf = "mpv --profile=fast";
 | 
						||
      mps = "mpv --profile=slow";
 | 
						||
      ec = "emacsclient -t";
 | 
						||
      ecc = "emacsclient -c";
 | 
						||
      # mkdir = "mkdir -p";
 | 
						||
      nupd = "update-nix";
 | 
						||
      nupg = "upgrade-nix";
 | 
						||
      suspend = "systemctl suspend";
 | 
						||
      sysuse = "systemctl --user";
 | 
						||
      myip = "curl icanhazip.com";
 | 
						||
      nixs = "nix search nixpkgs";
 | 
						||
      # ytd = "yt-dlp -o '~/Videos/%(title)s.%(ext)s'";
 | 
						||
    };
 | 
						||
 | 
						||
  };
 | 
						||
 | 
						||
  programs.nushell = {
 | 
						||
    enable = true;
 | 
						||
    shellAliases = {
 | 
						||
      # ls = "eza -l";
 | 
						||
      # la = "ls -la";
 | 
						||
      mpf = "mpv --profile=fast";
 | 
						||
      mps = "mpv --profile=slow";
 | 
						||
      ec = "emacsclient -t";
 | 
						||
      ecc = "emacsclient -c";
 | 
						||
      # mkdir = "mkdir -p";
 | 
						||
      nupd = "update-nix";
 | 
						||
      nupg = "upgrade-nix";
 | 
						||
      suspend = "systemctl suspend";
 | 
						||
      sysuse = "systemctl --user";
 | 
						||
      myip = "curl icanhazip.com";
 | 
						||
      nixs = "nix search nixpkgs";
 | 
						||
      # ytd = "yt-dlp -o '~/Videos/%(title)s.%(ext)s'";
 | 
						||
    };
 | 
						||
    configFile = {
 | 
						||
      text = ''
 | 
						||
        let fish_completer = {|spans|
 | 
						||
            fish --command $'complete "--do-complete=($spans | str join " ")"'
 | 
						||
            | $"value(char tab)description(char newline)" + $in
 | 
						||
            | from tsv --flexible --no-infer
 | 
						||
        }
 | 
						||
 | 
						||
        $env.config = {
 | 
						||
          show_banner: false
 | 
						||
        }
 | 
						||
 | 
						||
        # def start_zellij [] {
 | 
						||
        #   if 'ZELLIJ' not-in ($env | columns) {
 | 
						||
        #     if 'ZELLIJ_AUTO_ATTACH' in ($env | columns) and $env.ZELLIJ_AUTO_ATTACH == 'true' {
 | 
						||
        #       zellij attach -c
 | 
						||
        #     } else {
 | 
						||
        #       zellij
 | 
						||
        #     }
 | 
						||
         
 | 
						||
        #     if 'ZELLIJ_AUTO_EXIT' in ($env | columns) and $env.ZELLIJ_AUTO_EXIT == 'true' {
 | 
						||
        #       exit
 | 
						||
        #     }
 | 
						||
        #   }
 | 
						||
        # }
 | 
						||
 | 
						||
        # start_zellij
 | 
						||
      '';
 | 
						||
    };
 | 
						||
    environmentVariables = { EDITOR = ''"emacsclient -t"''; };
 | 
						||
  };
 | 
						||
 | 
						||
  # home.file.".config/dunst" = {
 | 
						||
  #   source = ../.config/dunst;
 | 
						||
  # };
 | 
						||
 | 
						||
  services.dunst = {
 | 
						||
    enable = true;
 | 
						||
    iconTheme = {
 | 
						||
      package = pkgs.papirus-icon-theme;
 | 
						||
      name = "Papirus-Dark";
 | 
						||
      size = "16x16";
 | 
						||
    };
 | 
						||
    settings = {
 | 
						||
      global = {
 | 
						||
        monitor = 1;
 | 
						||
        follow = "none";
 | 
						||
        width = "(0, 300)";
 | 
						||
        height = "(0, 500)";
 | 
						||
        offset = "20x50";
 | 
						||
        origin = if laptop then "bottom-right" else "top-right";
 | 
						||
        notification_limit = 0;
 | 
						||
        progress_bar = true;
 | 
						||
        progress_bar_height = 10;
 | 
						||
        progress_bar_frame_width = 1;
 | 
						||
        progress_bar_min_width = 150;
 | 
						||
        progress_bar_max_width = 300;
 | 
						||
        transparency = 30;
 | 
						||
        separator_height = 2;
 | 
						||
        padding = 10;
 | 
						||
        horizontal_padding = 8;
 | 
						||
        text_icon_padding = 8;
 | 
						||
        frame_width = 0;
 | 
						||
        frame_color = "#282a36aa";
 | 
						||
        gap_size = 8;
 | 
						||
        separator_color = "frame";
 | 
						||
        sort = "yes";
 | 
						||
        font = "VictorMono Nerd Font 10";
 | 
						||
        markup = "full";
 | 
						||
        format = ''
 | 
						||
          <b>%s</b>
 | 
						||
          %b'';
 | 
						||
        alignment = "center";
 | 
						||
        vertical_alignment = "center";
 | 
						||
        corner_radius = 18;
 | 
						||
        dmenu = "${pkgs.rofi}/bin/rofi -dmenu -p dunst:";
 | 
						||
      };
 | 
						||
      urgency_low = {
 | 
						||
        background = "#282a36aa";
 | 
						||
        foreground = "#57c7ff";
 | 
						||
        timeout = 10;
 | 
						||
      };
 | 
						||
 | 
						||
      urgency_normal = {
 | 
						||
        background = "#282a36aa";
 | 
						||
        foreground = "#5af78e";
 | 
						||
        timeout = 10;
 | 
						||
      };
 | 
						||
 | 
						||
      urgency_critical = {
 | 
						||
        background = "#282a36aa";
 | 
						||
        foreground = "#ff5c57";
 | 
						||
        frame_color = "#ff0000";
 | 
						||
        timeout = 0;
 | 
						||
      };
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  programs.atuin = {
 | 
						||
    enable = true;
 | 
						||
    enableNushellIntegration = true;
 | 
						||
  };
 | 
						||
 | 
						||
  programs.direnv = {
 | 
						||
    enable = true;
 | 
						||
    nix-direnv.enable = true;
 | 
						||
    enableNushellIntegration = true;
 | 
						||
  };
 | 
						||
 | 
						||
  programs.carapace = {
 | 
						||
    enable = true;
 | 
						||
    enableNushellIntegration = true;
 | 
						||
  };
 | 
						||
 | 
						||
  # programs.qutebrowser.enable = true;
 | 
						||
  home.file.".config/qutebrowser/config.py" = {
 | 
						||
    source = ../.config/qutebrowser/config.py;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".config/qutebrowser/css" = {
 | 
						||
    source = ../.config/qutebrowser/css;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".local/share/qutebrowser/greasemonkey" = {
 | 
						||
    source = ../.config/qutebrowser/greasemonkey;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".config/imv" = {
 | 
						||
    source = ../.config/imv;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".config/macchina" = {
 | 
						||
    source = ../.config/macchina;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  #home.file.".config/awesome" = {
 | 
						||
  #  source = ../awesome;
 | 
						||
  #  recursive = true;
 | 
						||
  #};
 | 
						||
 | 
						||
  home.file.".config/awesome/bling" = {
 | 
						||
    source = ../.config/awesome/bling;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  home.file.".config/awesome/rubato" = {
 | 
						||
    source = ../.config/awesome/rubato;
 | 
						||
    recursive = true;
 | 
						||
  };
 | 
						||
 | 
						||
  # home.file.".config/alacritty" = {
 | 
						||
  #   source = ../.config/alacritty;
 | 
						||
  # };
 | 
						||
 | 
						||
  home.file.".config/picom.conf" = { source = ../.config/picom.conf; };
 | 
						||
 | 
						||
  # home.file.".config/networkmanager-dmenu/config.ini" = {
 | 
						||
  #   source = ../networkmanager-dmenu/config.ini;
 | 
						||
  # };
 | 
						||
 | 
						||
  home.file."bin" = {
 | 
						||
    source = ../scripts;
 | 
						||
    recursive = false;
 | 
						||
  };
 | 
						||
 | 
						||
  home.shellAliases = {
 | 
						||
    # ls = "eza -l";
 | 
						||
    # la = "eza -la";
 | 
						||
    mpf = "mpv --profile=fast";
 | 
						||
    mps = "mpv --profile=slow";
 | 
						||
    ec = "emacsclient -t";
 | 
						||
    ecc = "emacsclient -c";
 | 
						||
    # mkdir = "mkdir -pv";
 | 
						||
    nupd = "update-nix";
 | 
						||
    nupg = "upgrade-nix";
 | 
						||
    suspend = "systemctl suspend";
 | 
						||
    sysuse = "systemctl --user";
 | 
						||
    myip = "curl icanhazip.com";
 | 
						||
    nixs = "nix search nixpkgs";
 | 
						||
    # ytd = ''yt-dlp -o "~/vids/%(title)s.%(ext)s" $1'';
 | 
						||
  };
 | 
						||
 | 
						||
  programs.alacritty = {
 | 
						||
    enable = true;
 | 
						||
    settings = {
 | 
						||
      window = {
 | 
						||
        opacity = 0.9;
 | 
						||
        dynamic_title = true;
 | 
						||
        padding.x = 10;
 | 
						||
        padding.y = 10;
 | 
						||
        dynamic_padding = true;
 | 
						||
      };
 | 
						||
      terminal.shell.program = "nu";
 | 
						||
      font = {
 | 
						||
        normal = {
 | 
						||
          family = "VictorMono Nerd Font";
 | 
						||
          style = "Regular";
 | 
						||
        };
 | 
						||
        bold = {
 | 
						||
          family = "VictorMono Nerd Font";
 | 
						||
          style = "Bold";
 | 
						||
        };
 | 
						||
        italic = {
 | 
						||
          family = "VictorMono Nerd Font";
 | 
						||
          style = "Italic";
 | 
						||
        };
 | 
						||
        size = 12.0;
 | 
						||
      };
 | 
						||
      colors = {
 | 
						||
        transparent_background_colors = true;
 | 
						||
        draw_bold_text_with_bright_colors = true;
 | 
						||
        primary = {
 | 
						||
          background = "#282a36";
 | 
						||
          foreground = "#eff0eb";
 | 
						||
        };
 | 
						||
        cursor.cursor = "#97979b";
 | 
						||
        selection = {
 | 
						||
          text = "#282a36";
 | 
						||
          background = "#feffff";
 | 
						||
        };
 | 
						||
        normal = {
 | 
						||
          black = "#282a36";
 | 
						||
          red = "#ff5c57";
 | 
						||
          green = "#5af78e";
 | 
						||
          yellow = "#f3f99d";
 | 
						||
          blue = "#57c7ff";
 | 
						||
          magenta = "#ff6ac1";
 | 
						||
          cyan = "#9aedfe";
 | 
						||
          white = "#f1f1f0";
 | 
						||
        };
 | 
						||
        bright = {
 | 
						||
          black = "#686868";
 | 
						||
          red = "#ff5c57";
 | 
						||
          green = "#5af78e";
 | 
						||
          yellow = "#f3f99d";
 | 
						||
          blue = "#57c7ff";
 | 
						||
          magenta = "#ff6ac1";
 | 
						||
          cyan = "#9aedfe";
 | 
						||
          white = "#eff0eb";
 | 
						||
        };
 | 
						||
      };
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  programs.starship = {
 | 
						||
    enable = true;
 | 
						||
    enableNushellIntegration = true;
 | 
						||
    enableBashIntegration = true;
 | 
						||
    enableFishIntegration = true;
 | 
						||
    settings = {
 | 
						||
      format = ''
 | 
						||
        [\[](fg:#78787e) $username$hostname$directory[\]](fg:#78787e) [$cmd_duration$time$status](italic fg:#78787e)
 | 
						||
        $character
 | 
						||
      '';
 | 
						||
      right_format = ''
 | 
						||
        $git_branch$git_status$rust$nix_shell
 | 
						||
      '';
 | 
						||
      cmd_duration = {
 | 
						||
        format = " $duration";
 | 
						||
        min_time = 0;
 | 
						||
        show_notifications = true;
 | 
						||
        min_time_to_notify = 20000;
 | 
						||
      };
 | 
						||
      time = { format = "| $time"; };
 | 
						||
      status = { format = "| $status"; };
 | 
						||
      scan_timeout = 10;
 | 
						||
      rust = { format = "[$symbol($version )]($style)"; };
 | 
						||
      cmake = {
 | 
						||
        format = "";
 | 
						||
        disabled = true;
 | 
						||
      };
 | 
						||
      nix_shell = {
 | 
						||
        format = "[$symbol$state( ($name))]($style) ";
 | 
						||
        impure_msg = " ";
 | 
						||
        pure_msg = " ";
 | 
						||
      };
 | 
						||
      hostname = { format = "@[$ssh_symbol$hostname]($style) > '"; };
 | 
						||
      git_branch = { format = "[$symbol$branch(:$remote_branch)]($style) "; };
 | 
						||
      git_status = {
 | 
						||
        format = "[\\[$all_status$ahead_behind\\]]($style) |(dimmed gray) ";
 | 
						||
      };
 | 
						||
      character = {
 | 
						||
        success_symbol = "[](bold green)";
 | 
						||
        error_symbol = "[x](bold red)";
 | 
						||
      };
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  programs.bash = {
 | 
						||
    enable = true;
 | 
						||
    bashrcExtra = ''
 | 
						||
      # export ENV_EFI_CODE_SECURE=/run/libvirt/nix-ovmf/OVMF_CODE.fd ENV_EFI_VARS_SECURE=/run/libvirt/nix-ovmf/OVMF_VARS.fd
 | 
						||
      case "$-" in
 | 
						||
        *i*)
 | 
						||
        eval "$(starship init bash)"
 | 
						||
        macchina;;
 | 
						||
      esac
 | 
						||
      # export LESS_TERMCAP_mb=$'\e[1;32m'
 | 
						||
      # export LESS_TERMCAP_md=$'\e[1;32m'
 | 
						||
      # export LESS_TERMCAP_me=$'\e[0m'
 | 
						||
      # export LESS_TERMCAP_se=$'\e[0m'
 | 
						||
      # export LESS_TERMCAP_so=$'\e[01;33m'
 | 
						||
      # export LESS_TERMCAP_ue=$'\e[0m'
 | 
						||
      # export LESS_TERMCAP_us=$'\e[1;4;31m'
 | 
						||
    '';
 | 
						||
  };
 | 
						||
 | 
						||
  xdg.desktopEntries = {
 | 
						||
    mpv-slow = {
 | 
						||
      name = "MPV";
 | 
						||
      genericName = "Play from MPV but at normal speed";
 | 
						||
      exec = "alacritty -e mpv --profile=slow %U";
 | 
						||
      terminal = true;
 | 
						||
      categories = [ "Application" ];
 | 
						||
      noDisplay = true;
 | 
						||
      mimeType = [
 | 
						||
        "audio/ogg"
 | 
						||
        "audio/mpeg"
 | 
						||
        "audio/opus"
 | 
						||
        "audio/x-opus+ogg"
 | 
						||
        "audio/x-wav"
 | 
						||
      ];
 | 
						||
    };
 | 
						||
    imv-rifle = {
 | 
						||
      name = "IMV";
 | 
						||
      genericName = "Show images in current directory in IMV";
 | 
						||
      exec = "/home/chris/bin/rifle-imv %U";
 | 
						||
      terminal = false;
 | 
						||
      noDisplay = true;
 | 
						||
      categories = [ "Application" ];
 | 
						||
      mimeType = [ "image/gif" "image/jpeg" "image/png" "image/heif" ];
 | 
						||
    };
 | 
						||
  };
 | 
						||
 | 
						||
  systemd.user.services = {
 | 
						||
    ydotoold = {
 | 
						||
      Unit = {
 | 
						||
        Description = "An auto-input utility for wayland";
 | 
						||
        Documentation = [ "man:ydotool(1)" "man:ydotoold(8)" ];
 | 
						||
      };
 | 
						||
 | 
						||
      Service = {
 | 
						||
        ExecStart =
 | 
						||
          "/run/current-system/sw/bin/ydotoold --socket-path /tmp/ydotools";
 | 
						||
      };
 | 
						||
 | 
						||
      Install = { WantedBy = [ "default.target" ]; };
 | 
						||
    };
 | 
						||
 | 
						||
    jellyfin-mpv-shim = {
 | 
						||
      Unit = {
 | 
						||
        Description = "Play Jellyfin media in mpv";
 | 
						||
        After = "graphical-session-pre.target";
 | 
						||
      };
 | 
						||
 | 
						||
      Service = { ExecStart = "/run/current-system/sw/bin/jellyfin-mpv-shim"; };
 | 
						||
 | 
						||
      Install = { WantedBy = [ "graphical-session.target" ]; };
 | 
						||
    };
 | 
						||
 | 
						||
    # nextcloud-client = {
 | 
						||
    #   Unit = {
 | 
						||
    #     Description = "Nextcloud Client";
 | 
						||
    #     After = [ "graphical-session.target" ];
 | 
						||
    #     # PartOf = [ "plasma-workspace.target" ];
 | 
						||
    #   };
 | 
						||
    #   Service = {
 | 
						||
    #     Environment = ["PATH=/etc/profiles/per-user/chris/bin"
 | 
						||
    #                    "WAYLAND_DISPLAY=wayland-1"];
 | 
						||
    #   };
 | 
						||
    # };
 | 
						||
  };
 | 
						||
 | 
						||
}
 |