build a brandnew architecture for configurations.
This commit is contained in:
		
							parent
							
								
									08aacf8c0d
								
							
						
					
					
						commit
						6dbbce42cf
					
				
					 43 changed files with 425 additions and 643 deletions
				
			
		| 
						 | 
				
			
			@ -1,201 +0,0 @@
 | 
			
		|||
# Edit this configuration file to define what should be installed on
 | 
			
		||||
# your system.  Help is available in the configuration.nix(5) man page
 | 
			
		||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  # Configure network proxy if necessary
 | 
			
		||||
  # networking.proxy.default = "http://user:password@proxy:port/";
 | 
			
		||||
  # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
 | 
			
		||||
  programs.virt-manager.enable = true;
 | 
			
		||||
  virtualisation = {
 | 
			
		||||
    libvirtd.enable = true;
 | 
			
		||||
    spiceUSBRedirection.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  i18n.inputMethod = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    type = "fcitx5";
 | 
			
		||||
    fcitx5 = {
 | 
			
		||||
      addons = with pkgs; [
 | 
			
		||||
        libsForQt5.fcitx5-qt
 | 
			
		||||
        fcitx5-gtk
 | 
			
		||||
        fcitx5-configtool
 | 
			
		||||
        fcitx5-chinese-addons
 | 
			
		||||
        (fcitx5-rime.override {
 | 
			
		||||
          rimeDataPkgs =
 | 
			
		||||
            [
 | 
			
		||||
              rime-data
 | 
			
		||||
            ]
 | 
			
		||||
            ++ (with (pkgs.callPackage inputs.nur-xddxdd { }); [
 | 
			
		||||
              rime-ice
 | 
			
		||||
              rime-zhwiki
 | 
			
		||||
              rime-moegirl
 | 
			
		||||
            ]);
 | 
			
		||||
        })
 | 
			
		||||
      ];
 | 
			
		||||
      waylandFrontend = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Enable the X11 windowing system.
 | 
			
		||||
  # You can disable this if you're only using the Wayland session.
 | 
			
		||||
  services.xserver = {
 | 
			
		||||
    display = 0;
 | 
			
		||||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Enable the KDE Plasma Desktop Environment.
 | 
			
		||||
  # services.displayManager.sddm.enable = true;
 | 
			
		||||
  # services.desktopManager.plasma6.enable = true;
 | 
			
		||||
  services.desktopManager.cosmic.enable = true;
 | 
			
		||||
  services.displayManager.cosmic-greeter.enable = true;
 | 
			
		||||
  programs.niri.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Configure keymap in X11
 | 
			
		||||
  services.xserver.xkb = {
 | 
			
		||||
    layout = "cn";
 | 
			
		||||
    variant = "";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Enable CUPS to print documents.
 | 
			
		||||
  services.printing.enable = true;
 | 
			
		||||
 | 
			
		||||
  services.openssh = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      PasswordAuthentication = false;
 | 
			
		||||
      KbdInteractiveAuthentication = false;
 | 
			
		||||
      X11Forwarding = true;
 | 
			
		||||
      PermitRootLogin = "no";
 | 
			
		||||
      LogLevel = "VERBOSE";
 | 
			
		||||
      Macs = [
 | 
			
		||||
        "hmac-sha2-512-etm@openssh.com"
 | 
			
		||||
        "hmac-sha2-256-etm@openssh.com"
 | 
			
		||||
        "umac-128-etm@openssh.com"
 | 
			
		||||
        "hmac-sha2-512"
 | 
			
		||||
        "hmac-sha2-256"
 | 
			
		||||
        "umac-128@openssh.com"
 | 
			
		||||
      ];
 | 
			
		||||
      Ciphers = [
 | 
			
		||||
        "chacha20-poly1305@openssh.com"
 | 
			
		||||
        "aes256-gcm@openssh.com"
 | 
			
		||||
        "aes128-gcm@openssh.com"
 | 
			
		||||
        "aes256-ctr"
 | 
			
		||||
        "aes192-ctr"
 | 
			
		||||
        "aes128-ctr"
 | 
			
		||||
      ];
 | 
			
		||||
      KexAlgorithms = [ "curve25519-sha256@libssh.org"
 | 
			
		||||
        "ecdh-sha2-nistp521"
 | 
			
		||||
        "ecdh-sha2-nistp384"
 | 
			
		||||
        "ecdh-sha2-nistp256"
 | 
			
		||||
        "diffie-hellman-group-exchange-sha256"
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
    ports = [ 3022 ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  programs.localsend.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Enable sound with pipewire.
 | 
			
		||||
  services.pulseaudio.enable = false;
 | 
			
		||||
  security.rtkit.enable = true;
 | 
			
		||||
  services.pipewire = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    alsa.enable = true;
 | 
			
		||||
    alsa.support32Bit = true;
 | 
			
		||||
    pulse.enable = true;
 | 
			
		||||
    # If you want to use JACK applications, uncomment this
 | 
			
		||||
    #jack.enable = true;
 | 
			
		||||
 | 
			
		||||
    # use the example session manager (no others are packaged yet so this is enabled by default,
 | 
			
		||||
    # no need to redefine it in your config for now)
 | 
			
		||||
    #media-session.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Enable touchpad support (enabled default in most desktopManager).
 | 
			
		||||
  # services.xserver.libinput.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Define a user account. Don't forget to set a password with ‘passwd’.
 | 
			
		||||
  users.users.david = {
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    description = "david";
 | 
			
		||||
    extraGroups = [
 | 
			
		||||
      "networkmanager"
 | 
			
		||||
      "libvirtd"
 | 
			
		||||
      "wheel"
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Install firefox.
 | 
			
		||||
  programs.firefox.enable = true;
 | 
			
		||||
 | 
			
		||||
  # List packages installed in system profile. To search, run:
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    nix-output-monitor
 | 
			
		||||
    wget
 | 
			
		||||
    git
 | 
			
		||||
    vim
 | 
			
		||||
    helix
 | 
			
		||||
    nixd
 | 
			
		||||
    nixfmt-rfc-style
 | 
			
		||||
    fontconfig
 | 
			
		||||
    noto-fonts-cjk-sans
 | 
			
		||||
    noto-fonts-cjk-serif
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  fonts = {
 | 
			
		||||
    enableDefaultPackages = false;
 | 
			
		||||
    packages = with pkgs; [
 | 
			
		||||
      nerd-fonts.fira-code
 | 
			
		||||
      noto-fonts
 | 
			
		||||
      noto-fonts-cjk-sans
 | 
			
		||||
      noto-fonts-cjk-serif
 | 
			
		||||
      noto-fonts-emoji
 | 
			
		||||
      lxgw-wenkai
 | 
			
		||||
    ];
 | 
			
		||||
    fontconfig.defaultFonts = pkgs.lib.mkForce {
 | 
			
		||||
      serif = [
 | 
			
		||||
        "LXGW WenKai"
 | 
			
		||||
        "Noto Serif CJK SC"
 | 
			
		||||
        "Noto Serif"
 | 
			
		||||
      ];
 | 
			
		||||
      sansSerif = [
 | 
			
		||||
        "Noto Serif CJK SC"
 | 
			
		||||
        "Noto Serif"
 | 
			
		||||
      ];
 | 
			
		||||
      monospace = [
 | 
			
		||||
        "FiraCode Nerd Font"
 | 
			
		||||
      ];
 | 
			
		||||
      emoji = [ "Noto Color Emoji" ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  environment.variables.EDITOR = "hx";
 | 
			
		||||
  # Some programs need SUID wrappers, can be configured further or are
 | 
			
		||||
  # started in user sessions.
 | 
			
		||||
  # programs.mtr.enable = true;
 | 
			
		||||
  # programs.gnupg.agent = {
 | 
			
		||||
  #   enable = true;
 | 
			
		||||
  #   enableSSHSupport = true;
 | 
			
		||||
  # };
 | 
			
		||||
 | 
			
		||||
  # List services that you want to enable:
 | 
			
		||||
 | 
			
		||||
  # This value determines the NixOS release from which the default
 | 
			
		||||
  # settings for stateful data, like file locations and database versions
 | 
			
		||||
  # on your system were taken. It‘s perfectly fine and recommended to leave
 | 
			
		||||
  # this value at the release version of the first install of this system.
 | 
			
		||||
  # Before changing this value read the documentation for this option
 | 
			
		||||
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
 | 
			
		||||
 | 
			
		||||
  system.stateVersion = "24.11"; # Did you read the comment?
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										72
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										72
									
								
								flake.nix
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -67,10 +67,12 @@
 | 
			
		|||
    }@inputs:
 | 
			
		||||
    let
 | 
			
		||||
      inherit (self) outputs;
 | 
			
		||||
      rootPath = ./.;
 | 
			
		||||
    in
 | 
			
		||||
    flake-parts.lib.mkFlake { inherit inputs; } {
 | 
			
		||||
      systems = flake-utils.lib.defaultSystems;
 | 
			
		||||
      flake = {
 | 
			
		||||
      flake =
 | 
			
		||||
        {
 | 
			
		||||
          nix.settings = {
 | 
			
		||||
            # substituters shared in home-manager and nixos configuration
 | 
			
		||||
            substituters =
 | 
			
		||||
| 
						 | 
				
			
			@ -110,6 +112,9 @@
 | 
			
		|||
                nixpkgs.lib.nixosSystem {
 | 
			
		||||
                  modules =
 | 
			
		||||
                    [
 | 
			
		||||
                      outputs.nixosModules.default
 | 
			
		||||
                    ]
 | 
			
		||||
                    ++ [
 | 
			
		||||
                      (
 | 
			
		||||
                        let
 | 
			
		||||
                          dirPath = nixosConfigDir + "/${hostName}";
 | 
			
		||||
| 
						 | 
				
			
			@ -117,17 +122,70 @@
 | 
			
		|||
                        in
 | 
			
		||||
                        if builtins.pathExists dirPath then dirPath else filePath
 | 
			
		||||
                      )
 | 
			
		||||
                    ./configuration.nix
 | 
			
		||||
                    ./users
 | 
			
		||||
                  ]
 | 
			
		||||
                  ++ [
 | 
			
		||||
                    outputs.nixosModules.default
 | 
			
		||||
                    ];
 | 
			
		||||
                  specialArgs = {
 | 
			
		||||
                  inherit inputs outputs;
 | 
			
		||||
                    inherit inputs outputs rootPath;
 | 
			
		||||
                  };
 | 
			
		||||
                }
 | 
			
		||||
              );
 | 
			
		||||
        }
 | 
			
		||||
        // (
 | 
			
		||||
          let
 | 
			
		||||
            mkHomeConfig =
 | 
			
		||||
              {
 | 
			
		||||
                hostName,
 | 
			
		||||
                unixName ? "david",
 | 
			
		||||
                system ? "x86_64-linux",
 | 
			
		||||
                nixpkgs ? inputs.nixpkgs,
 | 
			
		||||
                home-manager ? inputs.home-manager,
 | 
			
		||||
              }:
 | 
			
		||||
              {
 | 
			
		||||
                "${unixName}@${hostName}" = home-manager.lib.homeManagerConfiguration {
 | 
			
		||||
                  pkgs = nixpkgs.legacyPackages."${system}";
 | 
			
		||||
                  modules =
 | 
			
		||||
                    [
 | 
			
		||||
                      (./home + "/${unixName}/configurations/${hostName}")
 | 
			
		||||
                    ]
 | 
			
		||||
                    ++ (with outputs.homeManagerModules; [
 | 
			
		||||
                      default
 | 
			
		||||
                      "${unixName}"
 | 
			
		||||
                    ]);
 | 
			
		||||
                  extraSpecialArgs = {
 | 
			
		||||
                    inherit
 | 
			
		||||
                      inputs
 | 
			
		||||
                      outputs
 | 
			
		||||
                      unixName
 | 
			
		||||
                      hostName
 | 
			
		||||
                      system
 | 
			
		||||
                      rootPath
 | 
			
		||||
                      ;
 | 
			
		||||
                  };
 | 
			
		||||
                };
 | 
			
		||||
              };
 | 
			
		||||
          in
 | 
			
		||||
          {
 | 
			
		||||
            homeConfigurations = nixpkgs.foldr (a: b: a // b) { } (
 | 
			
		||||
              map (hostName: mkHomeConfig { inherit hostName; }) [ "Tytonidae" ]
 | 
			
		||||
            );
 | 
			
		||||
            homeManagerModules =
 | 
			
		||||
              {
 | 
			
		||||
                default = import ./home/modules;
 | 
			
		||||
              }
 | 
			
		||||
              // (
 | 
			
		||||
                let
 | 
			
		||||
                  allEntries = builtins.readDir ./home;
 | 
			
		||||
                  allUsers = nixpkgs.lib.filterAttrs (
 | 
			
		||||
                    key: value: value == "directory" && key != "modules"
 | 
			
		||||
                  ) allEntries;
 | 
			
		||||
                in
 | 
			
		||||
                builtins.listToAttrs (
 | 
			
		||||
                  map (name: {
 | 
			
		||||
                    name = name;
 | 
			
		||||
                    value = import ./home + "/${name}/modules";
 | 
			
		||||
                  }) (builtins.attrNames allUsers)
 | 
			
		||||
                )
 | 
			
		||||
              );
 | 
			
		||||
          }
 | 
			
		||||
        );
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  config,
 | 
			
		||||
  ghostty,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +61,7 @@
 | 
			
		|||
    qq
 | 
			
		||||
    telegram-desktop
 | 
			
		||||
    taplo
 | 
			
		||||
    ghostty.packages."${pkgs.system}".default
 | 
			
		||||
    inputs.ghostty.packages."${pkgs.system}".default
 | 
			
		||||
  ];
 | 
			
		||||
  programs.ssh = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
{ pkgs, firefox-addons, ... }:
 | 
			
		||||
{ pkgs, inputs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.firefox = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -11,7 +11,7 @@
 | 
			
		|||
      isDefault = true;
 | 
			
		||||
      extensions =
 | 
			
		||||
        let
 | 
			
		||||
          addons = (pkgs.callPackage firefox-addons { }).firefox-addons;
 | 
			
		||||
          addons = (pkgs.callPackage inputs.firefox-addons { }).firefox-addons;
 | 
			
		||||
        in
 | 
			
		||||
        [
 | 
			
		||||
          addons.immersive-translate
 | 
			
		||||
							
								
								
									
										1
									
								
								home/david/modules/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								home/david/modules/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
{ ... }: { }
 | 
			
		||||
							
								
								
									
										1
									
								
								home/modules/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								home/modules/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
{ ... }: { }
 | 
			
		||||
| 
						 | 
				
			
			@ -5,29 +5,53 @@
 | 
			
		|||
      nixos-hardware.nixosModules.asus-fx506hm
 | 
			
		||||
    ])
 | 
			
		||||
    ++ [
 | 
			
		||||
      ./i18n.nix
 | 
			
		||||
      ./gui.nix
 | 
			
		||||
      ./users
 | 
			
		||||
      ./openssh.nix
 | 
			
		||||
      ./kvm.nix
 | 
			
		||||
      ./dae
 | 
			
		||||
      ./nh.nix
 | 
			
		||||
      ./steam.nix
 | 
			
		||||
      ./spotify.nix
 | 
			
		||||
 | 
			
		||||
      # Include the hardware related config
 | 
			
		||||
      ./hardware-configuration.nix
 | 
			
		||||
      ./networking.nix
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
  youthlic.home-manager = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    unixName = "david";
 | 
			
		||||
    hostName = "Tytonidae";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  networking.hostName = "Tytonidae";
 | 
			
		||||
 | 
			
		||||
  time.timeZone = "Asia/Shanghai";
 | 
			
		||||
 | 
			
		||||
  i18n = {
 | 
			
		||||
    defaultLocale = "C.UTF-8";
 | 
			
		||||
    extraLocaleSettings = {
 | 
			
		||||
      LC_ADDRESS = "zh_CN.UTF-8";
 | 
			
		||||
      LC_IDENTIFICATION = "zh_CN.UTF-8";
 | 
			
		||||
      LC_MEASUREMENT = "zh_CN.UTF-8";
 | 
			
		||||
      LC_MONETARY = "zh_CN.UTF-8";
 | 
			
		||||
      LC_NAME = "zh_CN.UTF-8";
 | 
			
		||||
      LC_NUMERIC = "zh_CN.UTF-8";
 | 
			
		||||
      LC_PAPER = "zh_CN.UTF-8";
 | 
			
		||||
      LC_TELEPHONE = "zh_CN.UTF-8";
 | 
			
		||||
      LC_TIME = "zh_CN.UTF-8";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  services.printing.enable = true;
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    nix-output-monitor
 | 
			
		||||
    wget
 | 
			
		||||
    git
 | 
			
		||||
    vim
 | 
			
		||||
    helix
 | 
			
		||||
    nixd
 | 
			
		||||
    nixfmt-rfc-style
 | 
			
		||||
 | 
			
		||||
    element-desktop
 | 
			
		||||
    discord-ptb
 | 
			
		||||
    asusctl
 | 
			
		||||
    vlc
 | 
			
		||||
    btop
 | 
			
		||||
    handbrake
 | 
			
		||||
    wechat-uos
 | 
			
		||||
    nvtopPackages.full
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  environment.variables.EDITOR = "hx";
 | 
			
		||||
 | 
			
		||||
  nixpkgs = {
 | 
			
		||||
    config = {
 | 
			
		||||
| 
						 | 
				
			
			@ -40,4 +64,13 @@
 | 
			
		|||
    loader.systemd-boot.enable = true;
 | 
			
		||||
    loader.efi.canTouchEfiVariables = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # This value determines the NixOS release from which the default
 | 
			
		||||
  # settings for stateful data, like file locations and database versions
 | 
			
		||||
  # on your system were taken. It‘s perfectly fine and recommended to leave
 | 
			
		||||
  # this value at the release version of the first install of this system.
 | 
			
		||||
  # Before changing this value read the documentation for this option
 | 
			
		||||
  # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
 | 
			
		||||
 | 
			
		||||
  system.stateVersion = "24.11"; # Did you read the comment?
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										69
									
								
								nixos/configurations/Tytonidae/gui.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								nixos/configurations/Tytonidae/gui.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  # Enable the X11 windowing system.
 | 
			
		||||
  # You can disable this if you're only using the Wayland session.
 | 
			
		||||
  services.xserver = {
 | 
			
		||||
    display = 0;
 | 
			
		||||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
  # Enable the KDE Plasma Desktop Environment.
 | 
			
		||||
  # services.displayManager.sddm.enable = true;
 | 
			
		||||
  # services.desktopManager.plasma6.enable = true;
 | 
			
		||||
  services.desktopManager.cosmic.enable = true;
 | 
			
		||||
  services.displayManager.cosmic-greeter.enable = true;
 | 
			
		||||
  programs.niri.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Configure keymap in X11
 | 
			
		||||
  services.xserver.xkb = {
 | 
			
		||||
    layout = "cn";
 | 
			
		||||
    variant = "";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    fontconfig
 | 
			
		||||
  ];
 | 
			
		||||
  programs.firefox.enable = true;
 | 
			
		||||
  programs.localsend.enable = true;
 | 
			
		||||
 | 
			
		||||
  fonts = {
 | 
			
		||||
    enableDefaultPackages = false;
 | 
			
		||||
    packages = with pkgs; [
 | 
			
		||||
      nerd-fonts.fira-code
 | 
			
		||||
      noto-fonts
 | 
			
		||||
      noto-fonts-cjk-sans
 | 
			
		||||
      noto-fonts-cjk-serif
 | 
			
		||||
      noto-fonts-emoji
 | 
			
		||||
      lxgw-wenkai
 | 
			
		||||
    ];
 | 
			
		||||
    fontconfig.defaultFonts = pkgs.lib.mkForce {
 | 
			
		||||
      serif = [
 | 
			
		||||
        "LXGW WenKai"
 | 
			
		||||
        "Noto Serif CJK SC"
 | 
			
		||||
        "Noto Serif"
 | 
			
		||||
      ];
 | 
			
		||||
      sansSerif = [
 | 
			
		||||
        "Noto Serif CJK SC"
 | 
			
		||||
        "Noto Serif"
 | 
			
		||||
      ];
 | 
			
		||||
      monospace = [
 | 
			
		||||
        "FiraCode Nerd Font"
 | 
			
		||||
      ];
 | 
			
		||||
      emoji = [ "Noto Color Emoji" ];
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  services.pulseaudio.enable = false;
 | 
			
		||||
  security.rtkit.enable = true;
 | 
			
		||||
  services.pipewire = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    alsa.enable = true;
 | 
			
		||||
    alsa.support32Bit = true;
 | 
			
		||||
    pulse.enable = true;
 | 
			
		||||
    # If you want to use JACK applications, uncomment this
 | 
			
		||||
    #jack.enable = true;
 | 
			
		||||
 | 
			
		||||
    # use the example session manager (no others are packaged yet so this is enabled by default,
 | 
			
		||||
    # no need to redefine it in your config for now)
 | 
			
		||||
    #media-session.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										42
									
								
								nixos/configurations/Tytonidae/i18n.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								nixos/configurations/Tytonidae/i18n.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
{ pkgs, inputs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  i18n = {
 | 
			
		||||
    defaultLocale = "C.UTF-8";
 | 
			
		||||
    extraLocaleSettings = {
 | 
			
		||||
      LC_ADDRESS = "zh_CN.UTF-8";
 | 
			
		||||
      LC_IDENTIFICATION = "zh_CN.UTF-8";
 | 
			
		||||
      LC_MEASUREMENT = "zh_CN.UTF-8";
 | 
			
		||||
      LC_MONETARY = "zh_CN.UTF-8";
 | 
			
		||||
      LC_NAME = "zh_CN.UTF-8";
 | 
			
		||||
      LC_NUMERIC = "zh_CN.UTF-8";
 | 
			
		||||
      LC_PAPER = "zh_CN.UTF-8";
 | 
			
		||||
      LC_TELEPHONE = "zh_CN.UTF-8";
 | 
			
		||||
      LC_TIME = "zh_CN.UTF-8";
 | 
			
		||||
    };
 | 
			
		||||
    inputMethod = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      type = "fcitx5";
 | 
			
		||||
      fcitx5 = {
 | 
			
		||||
        addons = with pkgs; [
 | 
			
		||||
          libsForQt5.fcitx5-qt
 | 
			
		||||
          fcitx5-gtk
 | 
			
		||||
          fcitx5-configtool
 | 
			
		||||
          fcitx5-chinese-addons
 | 
			
		||||
          (fcitx5-rime.override {
 | 
			
		||||
            rimeDataPkgs =
 | 
			
		||||
              [
 | 
			
		||||
                rime-data
 | 
			
		||||
              ]
 | 
			
		||||
              ++ (with (pkgs.callPackage inputs.nur-xddxdd { }); [
 | 
			
		||||
                rime-ice
 | 
			
		||||
                rime-zhwiki
 | 
			
		||||
                rime-moegirl
 | 
			
		||||
              ]);
 | 
			
		||||
          })
 | 
			
		||||
        ];
 | 
			
		||||
        waylandFrontend = true;
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								nixos/configurations/Tytonidae/kvm.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								nixos/configurations/Tytonidae/kvm.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.virt-manager.enable = true;
 | 
			
		||||
  virtualisation = {
 | 
			
		||||
    libvirtd.enable = true;
 | 
			
		||||
    spiceUSBRedirection.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								nixos/configurations/Tytonidae/openssh.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								nixos/configurations/Tytonidae/openssh.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  services.openssh = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    settings = {
 | 
			
		||||
      PasswordAuthentication = false;
 | 
			
		||||
      KbdInteractiveAuthentication = false;
 | 
			
		||||
      X11Forwarding = true;
 | 
			
		||||
      PermitRootLogin = "no";
 | 
			
		||||
      LogLevel = "VERBOSE";
 | 
			
		||||
      Macs = [
 | 
			
		||||
        "hmac-sha2-512-etm@openssh.com"
 | 
			
		||||
        "hmac-sha2-256-etm@openssh.com"
 | 
			
		||||
        "umac-128-etm@openssh.com"
 | 
			
		||||
        "hmac-sha2-512"
 | 
			
		||||
        "hmac-sha2-256"
 | 
			
		||||
        "umac-128@openssh.com"
 | 
			
		||||
      ];
 | 
			
		||||
      Ciphers = [
 | 
			
		||||
        "chacha20-poly1305@openssh.com"
 | 
			
		||||
        "aes256-gcm@openssh.com"
 | 
			
		||||
        "aes128-gcm@openssh.com"
 | 
			
		||||
        "aes256-ctr"
 | 
			
		||||
        "aes192-ctr"
 | 
			
		||||
        "aes128-ctr"
 | 
			
		||||
      ];
 | 
			
		||||
      KexAlgorithms = [
 | 
			
		||||
        "curve25519-sha256@libssh.org"
 | 
			
		||||
        "ecdh-sha2-nistp521"
 | 
			
		||||
        "ecdh-sha2-nistp384"
 | 
			
		||||
        "ecdh-sha2-nistp256"
 | 
			
		||||
        "diffie-hellman-group-exchange-sha256"
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
    ports = [ 3022 ];
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								nixos/configurations/Tytonidae/users/david.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								nixos/configurations/Tytonidae/users/david.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
{ pkgs, ... }:
 | 
			
		||||
{
 | 
			
		||||
  users.users.david = {
 | 
			
		||||
    isNormalUser = true;
 | 
			
		||||
    description = "david";
 | 
			
		||||
    extraGroups = [
 | 
			
		||||
      "networkmanager"
 | 
			
		||||
      "libvirtd"
 | 
			
		||||
      "wheel"
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  programs.fish.enable = true;
 | 
			
		||||
  users.users.david.shell = pkgs.fish;
 | 
			
		||||
  users.users.david.openssh.authorizedKeys.keyFiles = [
 | 
			
		||||
    ./tytonidae.pub
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								nixos/configurations/Tytonidae/users/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								nixos/configurations/Tytonidae/users/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./david.nix
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -14,6 +14,7 @@
 | 
			
		|||
    ])
 | 
			
		||||
    ++ [
 | 
			
		||||
      ./nix.nix
 | 
			
		||||
      ./home.nix
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
  config = {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										64
									
								
								nixos/modules/home.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								nixos/modules/home.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,64 @@
 | 
			
		|||
{
 | 
			
		||||
  inputs,
 | 
			
		||||
  outputs,
 | 
			
		||||
  lib,
 | 
			
		||||
  config,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  rootPath,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  options.youthlic.home-manager = {
 | 
			
		||||
    enable = lib.mkOption {
 | 
			
		||||
      type = lib.types.bool;
 | 
			
		||||
      default = false;
 | 
			
		||||
      example = true;
 | 
			
		||||
      description = ''
 | 
			
		||||
        whether enable home-manager or not
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    unixName = lib.mkOption {
 | 
			
		||||
      type = lib.types.str;
 | 
			
		||||
      default = "david";
 | 
			
		||||
      example = "youthlic";
 | 
			
		||||
      description = ''
 | 
			
		||||
        unix name of home-manager user
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
    hostName = lib.mkOption {
 | 
			
		||||
      type = lib.types.str;
 | 
			
		||||
      example = "Tytonidae";
 | 
			
		||||
      description = ''
 | 
			
		||||
        host name of home-manager user
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  config =
 | 
			
		||||
    let
 | 
			
		||||
      cfg = config.youthlic.home-manager;
 | 
			
		||||
      unixName = cfg.unixName;
 | 
			
		||||
      hostName = cfg.hostName;
 | 
			
		||||
    in
 | 
			
		||||
    lib.mkIf cfg.enable {
 | 
			
		||||
      home-manager = {
 | 
			
		||||
        useGlobalPkgs = true;
 | 
			
		||||
        useUserPackages = true;
 | 
			
		||||
        users."${cfg.unixName}" = (
 | 
			
		||||
          { ... }:
 | 
			
		||||
          {
 | 
			
		||||
            imports = [
 | 
			
		||||
              (rootPath + "/home/${unixName}/modules")
 | 
			
		||||
              (rootPath + "/home/${unixName}/configurations/${hostName}")
 | 
			
		||||
            ];
 | 
			
		||||
          }
 | 
			
		||||
        );
 | 
			
		||||
        extraSpecialArgs = {
 | 
			
		||||
          inherit outputs inputs;
 | 
			
		||||
          inherit (cfg) unixName hostName;
 | 
			
		||||
          inherit (pkgs) system;
 | 
			
		||||
        };
 | 
			
		||||
        backupFileExtension = "backup";
 | 
			
		||||
        sharedModules = [ outputs.homeManagerModules.default ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								nixpkgs.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								nixpkgs.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
let
 | 
			
		||||
  lock = (builtins.fromJSON (builtins.readFile ./flake.lock)).nodes.nixpkgs.locked;
 | 
			
		||||
in
 | 
			
		||||
import (fetchTarball {
 | 
			
		||||
  url = "https://github.com/nixos/nixpkgs/archive/${lock.rev}.tar.gz";
 | 
			
		||||
  sha256 = lock.narHash;
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										7
									
								
								pkgs/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								pkgs/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
{
 | 
			
		||||
  pkgs ? (import ./../nixpkgs.nix) { },
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  # example = pkgs.callPackage ./example.nix { };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,35 +0,0 @@
 | 
			
		|||
{
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
  ...
 | 
			
		||||
}:
 | 
			
		||||
{
 | 
			
		||||
  imports = [
 | 
			
		||||
    {
 | 
			
		||||
      home-manager.useGlobalPkgs = true;
 | 
			
		||||
      home-manager.useUserPackages = true;
 | 
			
		||||
      home-manager.users.david = import ./home-manager;
 | 
			
		||||
      home-manager.extraSpecialArgs = inputs;
 | 
			
		||||
      home-manager.backupFileExtension = "backup";
 | 
			
		||||
    }
 | 
			
		||||
    ./steam.nix
 | 
			
		||||
    ./spotify.nix
 | 
			
		||||
    ./nh.nix
 | 
			
		||||
    ./dae
 | 
			
		||||
  ];
 | 
			
		||||
  programs.fish.enable = true;
 | 
			
		||||
  users.users.david.shell = pkgs.fish;
 | 
			
		||||
  users.users.david.openssh.authorizedKeys.keyFiles = [
 | 
			
		||||
    ./tytonidae.pub
 | 
			
		||||
  ];
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    element-desktop
 | 
			
		||||
    discord-ptb
 | 
			
		||||
    asusctl
 | 
			
		||||
    vlc
 | 
			
		||||
    btop
 | 
			
		||||
    handbrake
 | 
			
		||||
    wechat-uos
 | 
			
		||||
    nvtopPackages.full
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,16 +0,0 @@
 | 
			
		|||
{ ... }:
 | 
			
		||||
{
 | 
			
		||||
  programs.emacs = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
  };
 | 
			
		||||
  services.emacs = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    client = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
  programs.doom-emacs = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    doomDir = ./doom;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,77 +0,0 @@
 | 
			
		|||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
 | 
			
		||||
 | 
			
		||||
;; Place your private configuration here! Remember, you do not need to run 'doom
 | 
			
		||||
;; sync' after modifying this file!
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
 | 
			
		||||
;; clients, file templates and snippets. It is optional.
 | 
			
		||||
;; (setq user-full-name "John Doe"
 | 
			
		||||
;;       user-mail-address "john@doe.com")
 | 
			
		||||
 | 
			
		||||
;; Doom exposes five (optional) variables for controlling fonts in Doom:
 | 
			
		||||
;;
 | 
			
		||||
;; - `doom-font' -- the primary font to use
 | 
			
		||||
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
 | 
			
		||||
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
 | 
			
		||||
;;   presentations or streaming.
 | 
			
		||||
;; - `doom-symbol-font' -- for symbols
 | 
			
		||||
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
 | 
			
		||||
;;
 | 
			
		||||
;; See 'C-h v doom-font' for documentation and more examples of what they
 | 
			
		||||
;; accept. For example:
 | 
			
		||||
;;
 | 
			
		||||
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
 | 
			
		||||
;;      doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
 | 
			
		||||
;;
 | 
			
		||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
 | 
			
		||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
 | 
			
		||||
;; refresh your font settings. If Emacs still can't find your font, it likely
 | 
			
		||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
 | 
			
		||||
 | 
			
		||||
;; There are two ways to load a theme. Both assume the theme is installed and
 | 
			
		||||
;; available. You can either set `doom-theme' or manually load a theme with the
 | 
			
		||||
;; `load-theme' function. This is the default:
 | 
			
		||||
(setq doom-theme 'doom-ayu-mirage)
 | 
			
		||||
 | 
			
		||||
;; This determines the style of line numbers in effect. If set to `nil', line
 | 
			
		||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
 | 
			
		||||
(setq display-line-numbers-type 'relative)
 | 
			
		||||
 | 
			
		||||
;; If you use `org' and don't want your org files in the default location below,
 | 
			
		||||
;; change `org-directory'. It must be set before org loads!
 | 
			
		||||
(setq org-directory "~/org/")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
 | 
			
		||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
 | 
			
		||||
;;
 | 
			
		||||
;;   (after! PACKAGE
 | 
			
		||||
;;     (setq x y))
 | 
			
		||||
;;
 | 
			
		||||
;; The exceptions to this rule:
 | 
			
		||||
;;
 | 
			
		||||
;;   - Setting file/directory variables (like `org-directory')
 | 
			
		||||
;;   - Setting variables which explicitly tell you to set them before their
 | 
			
		||||
;;     package is loaded (see 'C-h v VARIABLE' to look up their documentation).
 | 
			
		||||
;;   - Setting doom variables (which start with 'doom-' or '+').
 | 
			
		||||
;;
 | 
			
		||||
;; Here are some additional functions/macros that will help you configure Doom.
 | 
			
		||||
;;
 | 
			
		||||
;; - `load!' for loading external *.el files relative to this one
 | 
			
		||||
;; - `use-package!' for configuring packages
 | 
			
		||||
;; - `after!' for running code after a package has loaded
 | 
			
		||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
 | 
			
		||||
;;   this file. Emacs searches the `load-path' when you load packages with
 | 
			
		||||
;;   `require' or `use-package'.
 | 
			
		||||
;; - `map!' for binding new keys
 | 
			
		||||
;;
 | 
			
		||||
;; To get information about any of these functions/macros, move the cursor over
 | 
			
		||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
 | 
			
		||||
;; This will open documentation for it, including demos of how they are used.
 | 
			
		||||
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
 | 
			
		||||
;; etc).
 | 
			
		||||
;;
 | 
			
		||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
 | 
			
		||||
;; they are implemented.
 | 
			
		||||
(setq doom-font "FiraCode Nerd Font:size=18")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,193 +0,0 @@
 | 
			
		|||
;;; init.el -*- lexical-binding: t; -*-
 | 
			
		||||
 | 
			
		||||
;; This file controls what Doom modules are enabled and what order they load
 | 
			
		||||
;; in. Remember to run 'doom sync' after modifying it!
 | 
			
		||||
 | 
			
		||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
 | 
			
		||||
;;      documentation. There you'll find a link to Doom's Module Index where all
 | 
			
		||||
;;      of our modules are listed, including what flags they support.
 | 
			
		||||
 | 
			
		||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
 | 
			
		||||
;;      'C-c c k' for non-vim users) to view its documentation. This works on
 | 
			
		||||
;;      flags as well (those symbols that start with a plus).
 | 
			
		||||
;;
 | 
			
		||||
;;      Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
 | 
			
		||||
;;      directory (for easy access to its source code).
 | 
			
		||||
 | 
			
		||||
(doom! :input
 | 
			
		||||
       ;;bidi              ; (tfel ot) thgir etirw uoy gnipleh
 | 
			
		||||
       ;;chinese
 | 
			
		||||
       ;;japanese
 | 
			
		||||
       ;;layout            ; auie,ctsrnm is the superior home row
 | 
			
		||||
 | 
			
		||||
       :completion
 | 
			
		||||
       company           ; the ultimate code completion backend
 | 
			
		||||
       (corfu +orderless)  ; complete with cap(f), cape and a flying feather!
 | 
			
		||||
       ;;helm              ; the *other* search engine for love and life
 | 
			
		||||
       ;;ido               ; the other *other* search engine...
 | 
			
		||||
       ;;ivy               ; a search engine for love and life
 | 
			
		||||
       vertico           ; the search engine of the future
 | 
			
		||||
 | 
			
		||||
       :ui
 | 
			
		||||
       ;;deft              ; notational velocity for Emacs
 | 
			
		||||
       doom              ; what makes DOOM look the way it does
 | 
			
		||||
       doom-dashboard    ; a nifty splash screen for Emacs
 | 
			
		||||
       ;;doom-quit         ; DOOM quit-message prompts when you quit Emacs
 | 
			
		||||
       ;;(emoji +unicode)  ; 🙂
 | 
			
		||||
       hl-todo           ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
 | 
			
		||||
       indent-guides     ; highlighted indent columns
 | 
			
		||||
       ligatures         ; ligatures and symbols to make your code pretty again
 | 
			
		||||
       ;;minimap           ; show a map of the code on the side
 | 
			
		||||
       modeline          ; snazzy, Atom-inspired modeline, plus API
 | 
			
		||||
       ;;nav-flash         ; blink cursor line after big motions
 | 
			
		||||
       ;;neotree           ; a project drawer, like NERDTree for vim
 | 
			
		||||
       ophints           ; highlight the region an operation acts on
 | 
			
		||||
       (popup +defaults)   ; tame sudden yet inevitable temporary windows
 | 
			
		||||
       ;;tabs              ; a tab bar for Emacs
 | 
			
		||||
       treemacs          ; a project drawer, like neotree but cooler
 | 
			
		||||
       unicode           ; extended unicode support for various languages
 | 
			
		||||
       (vc-gutter +pretty) ; vcs diff in the fringe
 | 
			
		||||
       vi-tilde-fringe   ; fringe tildes to mark beyond EOB
 | 
			
		||||
       ;;window-select     ; visually switch windows
 | 
			
		||||
       workspaces        ; tab emulation, persistence & separate workspaces
 | 
			
		||||
       zen               ; distraction-free coding or writing
 | 
			
		||||
 | 
			
		||||
       :editor
 | 
			
		||||
       (evil +everywhere); come to the dark side, we have cookies
 | 
			
		||||
       file-templates    ; auto-snippets for empty files
 | 
			
		||||
       fold              ; (nigh) universal code folding
 | 
			
		||||
       (format +onsave)  ; automated prettiness
 | 
			
		||||
       ;;god               ; run Emacs commands without modifier keys
 | 
			
		||||
       ;;lispy             ; vim for lisp, for people who don't like vim
 | 
			
		||||
       ;;multiple-cursors  ; editing in many places at once
 | 
			
		||||
       ;;objed             ; text object editing for the innocent
 | 
			
		||||
       ;;parinfer          ; turn lisp into python, sort of
 | 
			
		||||
       ;;rotate-text       ; cycle region at point between text candidates
 | 
			
		||||
       snippets          ; my elves. They type so I don't have to
 | 
			
		||||
       word-wrap         ; soft wrapping with language-aware indent
 | 
			
		||||
 | 
			
		||||
       :emacs
 | 
			
		||||
       dired             ; making dired pretty [functional]
 | 
			
		||||
       electric          ; smarter, keyword-based electric-indent
 | 
			
		||||
       ;;eww               ; the internet is gross
 | 
			
		||||
       ;;ibuffer           ; interactive buffer management
 | 
			
		||||
       undo              ; persistent, smarter undo for your inevitable mistakes
 | 
			
		||||
       vc                ; version-control and Emacs, sitting in a tree
 | 
			
		||||
 | 
			
		||||
       :term
 | 
			
		||||
       ;;eshell            ; the elisp shell that works everywhere
 | 
			
		||||
       ;;shell             ; simple shell REPL for Emacs
 | 
			
		||||
       ;;term              ; basic terminal emulator for Emacs
 | 
			
		||||
       vterm             ; the best terminal emulation in Emacs
 | 
			
		||||
 | 
			
		||||
       :checkers
 | 
			
		||||
       syntax              ; tasing you for every semicolon you forget
 | 
			
		||||
       ;;(spell +flyspell) ; tasing you for misspelling mispelling
 | 
			
		||||
       ;;grammar           ; tasing grammar mistake every you make
 | 
			
		||||
 | 
			
		||||
       :tools
 | 
			
		||||
       ;;ansible
 | 
			
		||||
       ;;biblio            ; Writes a PhD for you (citation needed)
 | 
			
		||||
       ;;collab            ; buffers with friends
 | 
			
		||||
       ;;debugger          ; FIXME stepping through code, to help you add bugs
 | 
			
		||||
       ;;direnv
 | 
			
		||||
       ;;docker
 | 
			
		||||
       ;;editorconfig      ; let someone else argue about tabs vs spaces
 | 
			
		||||
       ;;ein               ; tame Jupyter notebooks with emacs
 | 
			
		||||
       (eval +overlay)     ; run code, run (also, repls)
 | 
			
		||||
       lookup              ; navigate your code and its documentation
 | 
			
		||||
       ;;lsp               ; M-x vscode
 | 
			
		||||
       magit             ; a git porcelain for Emacs
 | 
			
		||||
       ;;make              ; run make tasks from Emacs
 | 
			
		||||
       ;;pass              ; password manager for nerds
 | 
			
		||||
       ;;pdf               ; pdf enhancements
 | 
			
		||||
       ;;prodigy           ; FIXME managing external services & code builders
 | 
			
		||||
       ;;terraform         ; infrastructure as code
 | 
			
		||||
       ;;tmux              ; an API for interacting with tmux
 | 
			
		||||
       ;;tree-sitter       ; syntax and parsing, sitting in a tree...
 | 
			
		||||
       ;;upload            ; map local to remote projects via ssh/ftp
 | 
			
		||||
 | 
			
		||||
       :os
 | 
			
		||||
       (:if (featurep :system 'macos) macos)  ; improve compatibility with macOS
 | 
			
		||||
       ;;tty               ; improve the terminal Emacs experience
 | 
			
		||||
 | 
			
		||||
       :lang
 | 
			
		||||
       ;;agda              ; types of types of types of types...
 | 
			
		||||
       ;;beancount         ; mind the GAAP
 | 
			
		||||
       ;;(cc +lsp)         ; C > C++ == 1
 | 
			
		||||
       ;;clojure           ; java with a lisp
 | 
			
		||||
       ;;common-lisp       ; if you've seen one lisp, you've seen them all
 | 
			
		||||
       ;;coq               ; proofs-as-programs
 | 
			
		||||
       ;;crystal           ; ruby at the speed of c
 | 
			
		||||
       ;;csharp            ; unity, .NET, and mono shenanigans
 | 
			
		||||
       ;;data              ; config/data formats
 | 
			
		||||
       ;;(dart +flutter)   ; paint ui and not much else
 | 
			
		||||
       ;;dhall
 | 
			
		||||
       ;;elixir            ; erlang done right
 | 
			
		||||
       ;;elm               ; care for a cup of TEA?
 | 
			
		||||
       emacs-lisp        ; drown in parentheses
 | 
			
		||||
       ;;erlang            ; an elegant language for a more civilized age
 | 
			
		||||
       ;;ess               ; emacs speaks statistics
 | 
			
		||||
       ;;factor
 | 
			
		||||
       ;;faust             ; dsp, but you get to keep your soul
 | 
			
		||||
       ;;fortran           ; in FORTRAN, GOD is REAL (unless declared INTEGER)
 | 
			
		||||
       ;;fsharp            ; ML stands for Microsoft's Language
 | 
			
		||||
       ;;fstar             ; (dependent) types and (monadic) effects and Z3
 | 
			
		||||
       ;;gdscript          ; the language you waited for
 | 
			
		||||
       ;;(go +lsp)         ; the hipster dialect
 | 
			
		||||
       ;;(graphql +lsp)    ; Give queries a REST
 | 
			
		||||
       ;;(haskell +lsp)    ; a language that's lazier than I am
 | 
			
		||||
       ;;hy                ; readability of scheme w/ speed of python
 | 
			
		||||
       ;;idris             ; a language you can depend on
 | 
			
		||||
       ;;json              ; At least it ain't XML
 | 
			
		||||
       ;;(java +lsp)       ; the poster child for carpal tunnel syndrome
 | 
			
		||||
       ;;javascript        ; all(hope(abandon(ye(who(enter(here))))))
 | 
			
		||||
       ;;julia             ; a better, faster MATLAB
 | 
			
		||||
       ;;kotlin            ; a better, slicker Java(Script)
 | 
			
		||||
       ;;latex             ; writing papers in Emacs has never been so fun
 | 
			
		||||
       ;;lean              ; for folks with too much to prove
 | 
			
		||||
       ;;ledger            ; be audit you can be
 | 
			
		||||
       ;;lua               ; one-based indices? one-based indices
 | 
			
		||||
       markdown          ; writing docs for people to ignore
 | 
			
		||||
       ;;nim               ; python + lisp at the speed of c
 | 
			
		||||
       ;;nix               ; I hereby declare "nix geht mehr!"
 | 
			
		||||
       ;;ocaml             ; an objective camel
 | 
			
		||||
       org               ; organize your plain life in plain text
 | 
			
		||||
       ;;php               ; perl's insecure younger brother
 | 
			
		||||
       ;;plantuml          ; diagrams for confusing people more
 | 
			
		||||
       ;;graphviz          ; diagrams for confusing yourself even more
 | 
			
		||||
       ;;purescript        ; javascript, but functional
 | 
			
		||||
       ;;python            ; beautiful is better than ugly
 | 
			
		||||
       ;;qt                ; the 'cutest' gui framework ever
 | 
			
		||||
       ;;racket            ; a DSL for DSLs
 | 
			
		||||
       ;;raku              ; the artist formerly known as perl6
 | 
			
		||||
       ;;rest              ; Emacs as a REST client
 | 
			
		||||
       ;;rst               ; ReST in peace
 | 
			
		||||
       ;;(ruby +rails)     ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
 | 
			
		||||
       (rust +lsp)       ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
 | 
			
		||||
       ;;scala             ; java, but good
 | 
			
		||||
       ;;(scheme +guile)   ; a fully conniving family of lisps
 | 
			
		||||
       sh                ; she sells {ba,z,fi}sh shells on the C xor
 | 
			
		||||
       ;;sml
 | 
			
		||||
       ;;solidity          ; do you need a blockchain? No.
 | 
			
		||||
       ;;swift             ; who asked for emoji variables?
 | 
			
		||||
       ;;terra             ; Earth and Moon in alignment for performance.
 | 
			
		||||
       ;;web               ; the tubes
 | 
			
		||||
       ;;yaml              ; JSON, but readable
 | 
			
		||||
       ;;zig               ; C, but simpler
 | 
			
		||||
 | 
			
		||||
       :email
 | 
			
		||||
       ;;(mu4e +org +gmail)
 | 
			
		||||
       ;;notmuch
 | 
			
		||||
       ;;(wanderlust +gmail)
 | 
			
		||||
 | 
			
		||||
       :app
 | 
			
		||||
       ;;calendar
 | 
			
		||||
       ;;emms
 | 
			
		||||
       ;;everywhere        ; *leave* Emacs!? You must be joking
 | 
			
		||||
       ;;irc               ; how neckbeards socialize
 | 
			
		||||
       ;;(rss +org)        ; emacs as an RSS reader
 | 
			
		||||
 | 
			
		||||
       :config
 | 
			
		||||
       ;;literate
 | 
			
		||||
       (default +bindings +smartparens))
 | 
			
		||||
| 
						 | 
				
			
			@ -1,49 +0,0 @@
 | 
			
		|||
;; -*- no-byte-compile: t; -*-
 | 
			
		||||
;;; $DOOMDIR/packages.el
 | 
			
		||||
 | 
			
		||||
;; To install a package with Doom you must declare them here and run 'doom sync'
 | 
			
		||||
;; on the command line, then restart Emacs for the changes to take effect -- or
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
 | 
			
		||||
;; (package! some-package)
 | 
			
		||||
 | 
			
		||||
;; To install a package directly from a remote git repo, you must specify a
 | 
			
		||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
 | 
			
		||||
;; https://github.com/radian-software/straight.el#the-recipe-format
 | 
			
		||||
;; (package! another-package
 | 
			
		||||
;;   :recipe (:host github :repo "username/repo"))
 | 
			
		||||
 | 
			
		||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
 | 
			
		||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
 | 
			
		||||
;; `:files' in the `:recipe':
 | 
			
		||||
;; (package! this-package
 | 
			
		||||
;;   :recipe (:host github :repo "username/repo"
 | 
			
		||||
;;            :files ("some-file.el" "src/lisp/*.el")))
 | 
			
		||||
 | 
			
		||||
;; If you'd like to disable a package included with Doom, you can do so here
 | 
			
		||||
;; with the `:disable' property:
 | 
			
		||||
;; (package! builtin-package :disable t)
 | 
			
		||||
 | 
			
		||||
;; You can override the recipe of a built in package without having to specify
 | 
			
		||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
 | 
			
		||||
;; from Doom or MELPA/ELPA/Emacsmirror:
 | 
			
		||||
;; (package! builtin-package :recipe (:nonrecursive t))
 | 
			
		||||
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
 | 
			
		||||
 | 
			
		||||
;; Specify a `:branch' to install a package from a particular branch or tag.
 | 
			
		||||
;; This is required for some packages whose default branch isn't 'master' (which
 | 
			
		||||
;; our package manager can't deal with; see radian-software/straight.el#279)
 | 
			
		||||
;; (package! builtin-package :recipe (:branch "develop"))
 | 
			
		||||
 | 
			
		||||
;; Use `:pin' to specify a particular commit to install.
 | 
			
		||||
;; (package! builtin-package :pin "1a2b3c4d5e")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
;; Doom's packages are pinned to a specific commit and updated from release to
 | 
			
		||||
;; release. The `unpin!' macro allows you to unpin single packages...
 | 
			
		||||
;; (unpin! pinned-package)
 | 
			
		||||
;; ...or multiple packages
 | 
			
		||||
;; (unpin! pinned-package another-pinned-package)
 | 
			
		||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
 | 
			
		||||
;; (unpin! t)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue