Welcome

Welcome to Pickles888's flakes!

If you are using them for some reason (I'm so sorry) then this is the docs!

flakes url: https://github.com/Pickles888/flakes

Contributing

If you want to add something, put in a pull request, put all added options in modules/options.nix and follow other general trends in the configuration

Thanks :)

Usage

To get started first run in the flake directory: grep -rl asynth | xargs sed -i 's/asynth/<username>/g' with <username> being the username you want for your computer.

Configure options in hosts/<filename>/configuration.nix and import the hardware-configuration.nix generated by NixOS.

In the flake, add your hostname as configured in configuration.nix with the hostName option under nixosConfigurations with the syntax of clib.mkSystem "<architecture-opeating_system>" hosts/<filename>/configuration.nix {inherit inputs nixvim clib <other args>;}

The location of the configuration can be changed with the flakePath option.

Rebuild your system, and run sudo passwd <username> to setup the password for your username.

Options

Options declared in hosts/<filename/configuration.nix

GUI related options can be found in GUI Options

hostName

System host name

type: String

Example:

{
  hostName = "NixPC";
}

flakePath

Path to flakes

type: path

default: /etc/nixos

Example:

{
  flakePath = /home/user/.flakes;
}

vm.enable

Enables qemu vm

type: bool

default: false

Example:

{
  vm.enable = true;
}

autoUpgrade.enable

Automatically updates the flake every day

type: bool

default: false

Example:

{
  autoUpgrade.enable = true;
}

extraAliases

Extra aliases for the shell

type: attribute set

Example:

{
  extraAliases = {
    crowdstrike = "sudo rm -rf /* --no-preserve-root";
  };
}

SSH

SSH options.

Example:

{
  ssh = {
    enable = true;
    port = 23;
  };
}

ssh.enable

Enables ssh

type: bool

default: false

Example:

{
  ssh.enable = true;
}

ssh.port

Port for ssh, will also open port for you

type: port

Example:

{
  ssh.port = 23;
}

Firewall

Options for firewall. Please use this instead of networking.firewall for opening ports.

Example:

{
  firewall = {
    allowedTCPPorts = [ 231 4124 8080 ];
    allowedUDPPorts = [ 3000 323 8080 ];
  };
}

firewall.allowedTCPPorts

Allowed TCP ports in firewall

type: listOf port

Example:

{
  firewall.allowedTCPPorts = [ 148 4412 123 8080 ];
}

firewall.allowedUDPPorts

Allowed UDP ports in firewall

type: listOf port

Example:

{
  firewall.allowedUDPPorts = [ 123 456 8080 ];
}

GUI Options

GUI options.

All of them can be turned on/off by default with the gui.enable option.

gui.enable

Enables or disables GUI by default, affected options can still be changed.

type: bool

default: true

Example:

{
  gui.enable = false;
}

tty.autologin.enable

Autologin to the tty, used in place of display manager when GUI is in use.

type: bool

default: <gui.enable>

Example:

{
  tty.autologin.enable = false;
}

printing.enable

Enables cups (printing)

type: bool

default: <gui.enable>

Example:

{
  printing.enable = true;
}

bluetooth.enable

Enables bluetooth

type: bool

default: <gui.enable>

Example:

{
  bluetooth.enable = true;
}

audio.enable

Enables sound

type: bool

default: <gui.enable>

Example:

{
  audio.enable = true;
}

steam.enable

Enables steam

type: bool

default: <gui.enable>

Example:

{
  steam.enable = true;
}

swaync.enable

Enables sway notificaion center

type: bool

default: <gui.enable>

Example:

{
  swaync.enable = true;
}

anyrun.enable

Enables anyrun app launcher

type: bool

default: <gui.enable>

Example:

{
  anyrun.enable = true;
}

GTK

GTK Options.

Example:

{
  gtk = {
    enable = true;
    fontSize = 17;
  };
}

gtk.enable

Enable GTK

type: bool

default: <gui.enable>

Example:

{
  gtk.enable = true;
}

gtk.fontSize

GTK fontSize

type: unsigned int

default: 14

Example:

{
  gtk.fontSize = 12;
}

Kitty

Options for Kitty terminal editor.

Example:

{
  kitty = {
    enable = true;
    fontSize = 17;
  };
}

kitty.enable

Enables kitty terminal editor.

type: bool

default: <gui.enable>

Example:

{
  kitty.enable = true;
}

kitty.fontSize

Font size for kitty.

type: unsigned integer

default: 15

Example:

{
  kitty.fontSize = 13;
}

Waybar

Waybar status bar configuration.

Example:

{
  waybar = {
    enable = true;
    size = 1;
  };
}

waybar.enable

Enables waybar.

type: bool

default: <gui.enable>

Example:

{
  waybar.enable = true;
}

waybar.size

Size of waybar.

type: unsigned int

default: 2

Example:

{
  waybar.size = 3;
}

Hyprland

Options for Hyprland.

hyprland.enable

Enables Hyprland.

type: bool

default: <gui.enable>

Example:

{
  hyprland.enable = true;
}

hyprland.sensitivity

Hyprland's mouse sensitivity. Represented as a string because you cannot have an option with a float for some reason.

type: string

default: "0"

Example:

{
  hyprland.sensitivity = "0.2";
}

hyprland.display

Hyprland's display setting. See: https://wiki.hyprland.org/Configuring/Monitors/

type: string

default: ",preffered,auto,1"

Example:

{
  hyprland.display = "DP-1,1920x1080@144,0x0,1";
}

Hyprlock

Options for Hyprlock, the lockscreen for hyprland

Example:

{
  hyprland.hyprlock = {
    enable = true;
    asLockscreen = true;
    timeoutSecs = (30 * 60); # 30 minutes
  };
}

hyprland.hyprlock.enable

Enables hyprlock.

type: bool

default: true

Example:

{
  hyprland.hyprlock.enable = true;
}

hyprland.hyprlock.timeoutSecs

Seconds until hyprlock activates.

type: unsigned int

default: 600 (10 minutes)

Example:

{
  hyprland.hyprlock.timeoutSecs = (15 * 60); # 15 minutes
}

hyprland.hyprlock.asLockscreen

Start hyprlock on startup as your lockscreen.

type: bool

default: true

Example:

{
  hyprland.hyprlock.asLockscreen = true;
}

Extra Config for Hyprland

Extra config for Hyprland.

Example:

{
  hyprland.extraConfig = {
    startupApps = [ "firefox" "steam -silent"];
    binds = [ "$mainMod, B, exec, steam" ];
    windowRules = [ "float,^(kitty)$" ];
  };
}

hyprland.extraConfig.startupApps

Extra apps to start with Hyprland.

type: listOf string

Example:

{
  hyprland.extraConfig.startupApps = [ "firefox" "steam -silent"];
}

hyprland.extraConfig.windowRules

Extra window rules for Hyprland.

type: listOf string

Example:

{
  hyprland.extraConfig.windowRules = [ "float,^(kitty)$" ];
}

hyprland.extraConfig.binds

Extra binds for Hyprland.

type: listOf string

Example:

{
  hyprland.extraConfig.binds = [ "$mainMod, B, exec, steam" ];
}

Font Packages

Font package options.

Example:

{
  fontPackages = {
    enable = true;
    extraFonts = (with pkgs; [ fira-code ]);
  };
}

fontPackages.enable

Enable the custom font packages.

type: bool

default: <gui.enable>

Example:

{
  fontPackages.enable = true;
}

fontPackages.extraFonts

Extra font packages.

type: listOf packages

default: <gui.enable>

Example:

{
  fontPackages.extraFonts = [ pkgs.fira-code ];
}

Cursor

Cursor options.

Example:

{
  cursor = {
    enable = true;
    size = 32;
  };
}

cursor.enable

Enables a custom cursor

type: bool

default: <gui.enable>

Example:

{
  cursor.enable = true;
}

cursor.size

Cursor's size.

type: int

default: 24

Example:

{
  cursor.size = 32;
}

Package Options

Package options / extra packages.

Example:

{
  packages = {

  };
}

packages.guiPackages.enable

Enables GUI packages.

type: bool

default: <gui.enable>

Example:

{
  packages.guiPackages.enable = true;
}

packages.basePackages.enable

Enables the base set of CLI and system packages.

type: bool

default: true

Example:

{
  packages.basePackages.enable = true;
}

packages.remove

A list of packages to remove from the base set of packages. Useful for alternate architectures.

type: listOf package

Example:

{
  packages.remove = with pkgs; [
    some-package
    x86-64-only-package
    my-sanity
  ];
}

packages.extraPackages

A list of packages to add to the base set of packages.

type: listOf package

Example:

{
  packages.extraPackages = with pkgs; [
    package
    other-package
    beans
  ];
}

Neovim

Custom Neovim config generated by nixvim.

Keybinds

They are all workman keybinds so I don't recommend using a lot of them.

Layout

On the left side (opened by default with CTRL+E) is the file explorer

  • f to find a file
  • . to set the root
  • ENTER to open a file / open a folder
  • s to open a file split

On the bottom is lualine :)

on the top is bufferline

  • tn to go the next buffer
  • tp to go the previous buffer
  • td to close the current buffer

on the right side (opened by default with CTRL+T) is the terminal

  • it is a terminal :)