Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Foreword

This repository contains my personal configuration for my systems, so its really important that you know it's personal and not everything will fit your needs. Therefore most things will not work out of the box without some changes, so be warned!!!!

warning

Also to note that this configuration will not work if you do not change any of the secrets since they are encrypted.

What does this repo provided

  • Several applications and tools for my needs, but you can choose the one that best suits your needs
    • neovim, micro and vscode for text editing
    • firefox and chromium for web browsing
    • alacritty, kitty and wezterm for terminal emulators
    • bash, zsh, fish and nushell for shells
  • Modular configuration, so you can add or remove parts of the configuration
  • Sensible defaults, so you can get started quickly
  • Docs kind of
  • Catppuccin everywhere, with a hint of evergarden
  • 📚 docs The documentation for the dotfiles
  • 🏠 home Where all home-manager configurations lie
  • 🖥️ systems
    • ☀️ Amaterasu My high-end gaming machine
    • 🏡 Cottage A Lowend laptop, its not great but it gets the job done
    • 🐉 Hydra A super mid spec laptop
    • Lilith A NixOS ISO image that can be quickly deployed and accessed via ssh
    • ⚖️ minerva A server configuration for some of my infrastructure
    • 𖤍 Valkyrie A WSL2 system, designed to be a development environment on Windows
    • 💮 Tatsumaki A MacBook Air, configured to last a whole day of university
    • wisp A WSL2 system, on cottage
  • 🔌 modules
    • base The base configuration settings, which are common between all systems
    • darwin Pre-made modules for exclusively darwin systems
    • nixos Pre cooked modules for exclusively nixos systems
    • iso Pre-configured modules prepared for making NixOS iso images
    • extra Extra configuration modules, for home-manager and Nix Darwin and NixOS
    • home Modules for home-manager
    • flake NixOS parts breaking down the complex configuration into smaller more manageable chunks
      • checks Checks for the flake
      • 📚 lib Useful repeated functions
      • 📦 packages Packages that are not available in the official Nixpkgs
      • 👾 modules Exported modules for NixOS, home-manager and Nix Darwin
      • 💾 programs Additional flake-modules to configure

When writing a module, you should follow these guidelines:

  • Use a tree like structure for the head lambda args if and only if it is needed.
{
  lib,
  pkgs,
  inputs,
  ...
}:
{
  /* ommitted config */
}
  • imports should do its best to avoid going backwards in the flake's file structure.

NixOS

You might want to use the lilith iso configuration, provided in this repository

  • To build it you can run nix build .#images.lilith.
  • Or you can download it from the release page.

If you opted to use the lilith iso image, you can use the iznix-install script to install it on your system. Otherwise, you can follow the steps below.

  1. Install NixOS, you might need to follow the manual
  2. Clone this repository to ~/.config/flake
  3. Run sudo nixos-rebuild switch --flake ~/.config/flake#<host>

Dual boot

If you would like to set up duel boot with Windows, you should consider enabling secure boot. To do so you should follow the lanzaboote guide.

  1. Locate the Windows EFI partition
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
  1. Mount the Windows EFI partition
sudo mkdir /mnt/winboot
sudo mount /dev/nvme0n1p1 /mnt/winboot
  1. Copy the Windows EFI files to the NixOS EFI partition
sudo rsync -av /mnt/winboot/EFI/Microsoft/ /boot/EFI/Microsoft/
  1. Finally, clean up
sudo umount /mnt/winboot
sudo rmdir /mnt/winboot

macOS

  1. Install Lix the package manager
curl -sSf -L https://install.lix.systems/lix | sh -s -- install
  1. Then enter a nix development shell in order to use git and other required tools
nix develop
  1. Now we need to switch to the configuration, remember to replace <host> with the system you are configuring
just provision <host>
SKHD ShortcutHyprland ShortcutWhat it does
CMD+RETURNSUPER+RETURNopen terminal
SUPER+Bopen browser
SUPER+Copen editor
SUPER+Oopen notes
SUPER+Eopen file manager
CMD+QSUPER+Qquit
CMD+DSUPER+Dlauncher
SUPER+Ffull screen
CMD+CTRL+[number]SUPER+[number]open workspace [number]
CMD+SHIFT+[number]SUPER+SHIFT+[number]move to workspace [number]

In the past this repo used to hold templates. Now the templates are located at tgirlcloud/nix-templates. Overall the commands remain the same except for the repo to use.

  • nix flake init -t github:tgirlcloud/nix-templates#<template> to initialize a new project with the template
  • nix flake new -t github:tgirlcloud/nix-templates#<template> <out dir> to create a new project in the specified directory

For the full list of templates check the nix-templates repo directory or run nix flake show github:tgirlcloud/nix-templates.

The systems are configured in /systems/<hostname>.

To set up a system configuration it must be declared in /systems/default.nix.

  • arch:

    • default: "x86_64"
    • options: "x86_64", "aarch64"
  • class:

    • default: "nixos"
    • options: "nixos", "darwin", "iso", "wsl"
  • system:

    • default: constructSystem config.easyHosts.hosts.<hostname>.target config.easy-hosts.hosts.<hostname>.arch
    • note: This is a function that constructs the system configuration, it will make x86_64-linux by from the target and arch attributes or aarch64-darwin
  • deployable:

    • default: false
  • modules:

    • default: "[ ]"
    • options:
  • specialArgs:

    • default: "{ }"

tip

Please consult easy-hosts for more information on how to set up a system configuration.

The user side is configured in /home/<user>.

To set up a user configuration it must be declared in /modules/base/users/options.nix and /modules/base/users/<user>.nix can be used for anything that is not preconfigured by /modules/base/users/mkusers.nix.

You should also add your user into the users.nix file for your system. Whilst following the template:

{
  garden.system = {
    mainUser = "robin";
    users = [ "robin" ];
  };

  # you can add a home-manager configuration here for the user if it needs
  # anything special
  home-manager.users.robin.garden = {};
}

Adding packages to your user or system profile is different then most other flakes. In this flake we use the garden.packages attribute to add our packages, which take a attrset. This prevents us from having duplicate listsings of packages, and also lets us think a little less when writing home-manger or nixos/darwin module code.

An example of this may look like the following:

{ pkgs, ... }:
{
  garden.packages = {
    inherit (pkgs) git;

    wrapped-nvim = pkgs.symlinkJoin {
      name = "wrapped-nvim";
      paths = [ pkgs.nvim pkgs.astro-language-server ];
    };
  };
}

To uninstall nix darwin run the following command:

nix run github:LnL7/nix-darwin#darwin-uninstaller

lib.hardware:

lib.hardware.isx86Linux

check if the host platform is linux and x86

Arguments

  • [pkgs] the package set

Type

isx86Linux :: AttrSet -> Bool

Example

isx86Linux pkgs
=> true

lib.hardware.primaryMonitor

assume the first monitor in the list of monitors is primary get its name from the list of monitors

Arguments

  • [config] the configuration that nixosConfigurations provides

Type

primaryMonitor :: AttrSet -> String

Example

primaryMonitor osConfig
=> "DP-1"

lib.hardware.ldTernary

ldTernary, short for linux darwin ternary

Inputs

  • [pkgs] is the package set
  • [l] the value to return if the host platform is linux
  • [d] the value to return if the host platform is darwin

Type

ldTernary :: AttrSet -> Any -> Any -> Any

Example

ldTernary pkgs "linux" "darwin"
=> "linux"

lib.helpers:

lib.helpers.mkPub

Create a public key for a given host

Arguments

  • [host] the host to create the public key for
  • [key] this is a attrset with the key type and key

Type

mkPub :: (String -> AttrSet -> AttrSet) -> String -> AttrSet -> AttrSet

Example

mkPub "github.com" {
  type = "rsa";
  key = "AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==";
}
=> {
  "github.com-rsa" = {
    hostNames = [ "github.com" ];
    publicKey = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==";
  };
}

lib.helpers.mkPubs

Create public keys for a given host

Arguments

  • [host] the host to create the public keys for
  • [keys] the list of keys to create

Type

mkPubs :: (String -> List) -> String -> List -> AttrSet

Example

mkPubs "github.com" [
  {
    type = "rsa";
    key = "AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==";
  }
  {
    type = "ed25519";
    key = "AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl";
  }
]
=> {
  "github.com-ed25519" = {
    hostNames = [ "github.com" ];
    publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl";
  };
  "github.com-rsa" = {
    hostNames = [ "github.com" ];
    publicKey = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==";
  };
}

lib.helpers.giturl

Create git url aliases for a given domain

Arguments

  • [domain] the domain to create the alias for
  • [alias] the alias to use
  • [user] the user to use, this defaults to "git"
  • [port] the port to use, this is optional

Type

giturl :: (String -> String -> String -> Int) -> AttrSet

Example

giturl { domain = "github.com"; alias = "gh"; }
=> {
  "https://github.com/".insteadOf = "gh:";
  "ssh://git@github.com/".pushInsteadOf = "gh:";
}

lib.helpers.filterNixFiles

filter files for the .nix suffix

Arguments

  • [k] they key, which is the file name
  • [v] the value, which is the type of the file

Type

filterNixFiles :: String -> String -> Bool

Example

filterNixFiles "default.nix" "regular"
=> true

lib.helpers.importNixFiles

Import all file that filterNixFiles allows for

Arguments

  • [path] the path to the directory

Type

importNixFiles :: String -> List

Example

importNixFiles ./.
=> [ {...} ]

lib.helpers.importNixFilesAndDirs

import all nix files and directories

Arguments

  • [dir] the directory to search for nix files

Type

importNixFilesAndDirs :: String -> List

Example

importNixFilesAndDirs ./.
=> [ "flake.nix" ]

lib.helpers.boolToNum

return an int based on boolean value

Arguments

  • [bool] the boolean value

Type

boolToNum :: Bool -> Int

Example

boolToNum true
=> 1

lib.helpers.containsStrings

a function that checks if a list contains a list of given strings

Arguments

  • [list] the list to search in
  • [targetStrings] the list of strings to search for

Type

containsStrings :: List -> List -> Bool

Example

containsStrings ["a" "b" "c"] ["a" "b"]
=> true

lib.helpers.indexOf

a function that returns the index of an element in a list

Arguments

  • [list] the list to search in
  • [elem] the element to search for

Type

indexOf :: List -> Any -> Int

Example

indexOf [1 2 3] 2
=> 1

lib.helpers.intListToStringList

convert a list of integers to a list of string

Arguments

  • [list] the list of integers

Type

intListToStringList :: List -> List

Example

intListToStringList [1 2 3]
=> ["1" "2" "3"]

lib.programs:

lib.secrets:

lib.secrets.mkUserSecret

Create secrets for use with agenix.

Arguments

  • [file] the age file to use for the secret
  • [mode] the permissions of the secret, this defaults to "400"

Type

mkUserSecret :: (String -> String -> String -> String) -> AttrSet

Example

mkUserSecret { file = "./my-secret.age"; }
=> {
  file = "./my-secret.age";
  mode = "400";
}

lib.secrets.mkSystemSecret

Create secrets for use with agenix.

Arguments

  • [file] the age file to use for the secret
  • [owner] the owner of the secret, this defaults to "root"
  • [group] the group of the secret, this defaults to "root"
  • [mode] the permissions of the secret, this defaults to "400"

Type

mkSystemSecret :: (String -> String -> String -> String) -> AttrSet

Example

mkSystemSecret { file = "./my-secret.age"; }
=> {
  file = "./my-secret.age";
  owner = "root";
  group = "root";
  mode = "400";
}

lib.services:

lib.services.mkServiceOption

A quick way to use my services abstraction

Arguments

  • [name]: The name of the service

Type

mkServiceOption :: String -> (Int -> String -> String -> AttrSet) -> AttrSet

lib.validators:

lib.validators.ifTheyExist

a function that will append a list of groups if they exist in config.users.groups

Arguments

  • [config] the configuration that nixosConfigurations provides
  • [groups] a list of groups to check for

Type

ifTheyExist :: AttrSet -> List -> List

Example

ifTheyExist config ["wheel" "users"]
=> ["wheel"]

lib.validators.anyHome

check if a predicate for any user config is true

Arguments

  • [conf] the configuration that nixosConfigurations provides
  • [cond] predicate function to check against config variable

Type

anyHome :: AttrSet -> (Any -> Bool) -> Bool

Example

anyHome config (cfg: cfg.programs.hyprland.enable)
=> true

nixos

garden.packages

A set of packages to install in the garden environment.

Type: attribute set of package

Default: { }

Declared by:

garden.device.capabilities.bluetooth

Whether or not the system has bluetooth support

Type: boolean

Default: true

Declared by:

garden.device.capabilities.tpm

Whether the system has tpm support

Type: boolean

Default: false

Declared by:

garden.device.capabilities.yubikey

Whether to enable yubikey support.

Type: boolean

Default: false

Example: true

Declared by:

garden.device.cpu

The manufacturer of the primary system gpu

Type: null or one of “intel”, “vm-intel”, “amd”, “vm-amd”

Default: null

Declared by:

garden.device.gpu

The manufacturer of the primary system gpu

Type: null or one of “amd”, “intel”, “nvidia”

Default: null

Declared by:

garden.device.keyboard

the keyboard layout to use for a given system

Type: one of “us”, “gb”

Default: "gb"

Declared by:

garden.device.monitors

this does not affect any drivers and such, it is only necessary for declaring things like monitors in window manager configurations you can avoid declaring this, but I’d rather if you did declare

Type: list of string

Default: [ ]

Declared by:

garden.environment.flakePath

The path to the configuration

Type: string

Default: "/Users/isabel/.config/flake"

Declared by:

garden.environment.loginManager

The login manager to be used by the system.

Type: null or one of “greetd”, “cosmic-greeter”

Declared by:

garden.profiles.gaming.enable

Whether to enable Gaming.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.graphical.enable

Whether to enable Graphical interface.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.headless.enable

Whether to enable Headless.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.laptop.enable

Whether to enable Laptop.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.enable

Whether to enable Server.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.hetzner.enable

Whether to enable Hetzner.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.hetzner.ipv4

The IPv4 address to assign to the server. This should be a single IP address, not a range.

Type: string

Declared by:

garden.profiles.server.hetzner.ipv6

The IPv6 address to assign to the server. This should be a single IP address, not a range.

Type: string

Declared by:

garden.profiles.server.oracle.enable

Whether to enable Oracle.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.workstation.enable

Whether to enable Workstation.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.cosmic.enable

Whether to enable enable cosmic desktop environment.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.akkoma.enable

Whether to enable Enable the akkoma service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.akkoma.domain

Domain name for the akkoma service

Type: string

Default: "networking.domain"

Declared by:

garden.services.akkoma.host

The host for akkoma service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.akkoma.port

The port for akkoma service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.anubis.enable

Whether to enable Enable the anubis service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.anubis.domain

Domain name for the anubis service

Type: string

Default: "networking.domain"

Declared by:

garden.services.anubis.host

The host for anubis service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.anubis.port

The port for anubis service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.attic.enable

Whether to enable Enable the attic service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.attic.domain

Domain name for the attic service

Type: string

Default: "networking.domain"

Declared by:

garden.services.attic.host

The host for attic service

Type: string

Default: "[::]"

Declared by:

garden.services.attic.port

The port for attic service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 8080

Declared by:

garden.services.atuin.enable

Whether to enable Enable the atuin service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.atuin.domain

Domain name for the atuin service

Type: string

Default: "networking.domain"

Declared by:

garden.services.atuin.host

The host for atuin service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.atuin.port

The port for atuin service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 43473

Declared by:

garden.services.blahaj.enable

Whether to enable Enable the blahaj service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.blahaj.domain

Domain name for the blahaj service

Type: string

Default: "networking.domain"

Declared by:

garden.services.blahaj.host

The host for blahaj service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.blahaj.port

The port for blahaj service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.cloudflared.enable

Whether to enable Enable the cloudflared service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.cloudflared.domain

Domain name for the cloudflared service

Type: string

Default: "networking.domain"

Declared by:

garden.services.cloudflared.host

The host for cloudflared service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.cloudflared.port

The port for cloudflared service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.forgejo.enable

Whether to enable Enable the forgejo service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.forgejo.domain

Domain name for the forgejo service

Type: string

Default: "networking.domain"

Declared by:

garden.services.forgejo.host

The host for forgejo service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.forgejo.port

The port for forgejo service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 7000

Declared by:

garden.services.grafana.enable

Whether to enable Enable the grafana service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.grafana.domain

Domain name for the grafana service

Type: string

Default: "networking.domain"

Declared by:

garden.services.grafana.host

The host for grafana service

Type: string

Default: "0.0.0.0"

Declared by:

garden.services.grafana.port

The port for grafana service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 3100

Declared by:

garden.services.headscale.enable

Whether to enable Enable the headscale service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.headscale.domain

Domain name for the headscale service

Type: string

Default: "networking.domain"

Declared by:

garden.services.headscale.host

The host for headscale service

Type: string

Default: "0.0.0.0"

Declared by:

garden.services.headscale.port

The port for headscale service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 8085

Declared by:

garden.services.isabelroses-website.enable

Whether to enable Enable the isabelroses-website service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.isabelroses-website.domain

Domain name for the isabelroses-website service

Type: string

Default: "networking.domain"

Declared by:

garden.services.isabelroses-website.host

The host for isabelroses-website service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.isabelroses-website.port

The port for isabelroses-website service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.kanidm.enable

Whether to enable Enable the kanidm service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.kanidm.domain

Domain name for the kanidm service

Type: string

Default: "networking.domain"

Declared by:

garden.services.kanidm.host

The host for kanidm service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.kanidm.port

The port for kanidm service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 8443

Declared by:

garden.services.loki.enable

Whether to enable Enable the loki service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.loki.domain

Domain name for the loki service

Type: string

Default: "networking.domain"

Declared by:

garden.services.loki.host

The host for loki service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.loki.port

The port for loki service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 3030

Declared by:

garden.services.mailserver.enable

Whether to enable Enable the mailserver service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.mailserver.domain

Domain name for the mailserver service

Type: string

Default: "networking.domain"

Declared by:

garden.services.mailserver.host

The host for mailserver service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.mailserver.port

The port for mailserver service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.matrix.enable

Whether to enable Enable the matrix service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.matrix.domain

Domain name for the matrix service

Type: string

Default: "networking.domain"

Declared by:

garden.services.matrix.host

The host for matrix service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.matrix.port

The port for matrix service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 8008

Declared by:

garden.services.mediawiki.enable

Whether to enable Enable the mediawiki service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.mediawiki.domain

Domain name for the mediawiki service

Type: string

Default: "networking.domain"

Declared by:

garden.services.mediawiki.host

The host for mediawiki service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.mediawiki.port

The port for mediawiki service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.nginx.enable

Whether to enable Enable the nginx service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.nginx.domain

Domain name for the nginx service

Type: string

Default: "networking.domain"

Declared by:

garden.services.nginx.host

The host for nginx service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.nginx.port

The port for nginx service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.nixpkgs-prs-bot.enable

Whether to enable Enable the nixpkgs-prs-bot service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.nixpkgs-prs-bot.bsky.enable

Whether to enable bsky.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.nixpkgs-prs-bot.domain

Domain name for the nixpkgs-prs-bot service

Type: string

Default: "networking.domain"

Declared by:

garden.services.nixpkgs-prs-bot.fedi.enable

Whether to enable fedi.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.nixpkgs-prs-bot.host

The host for nixpkgs-prs-bot service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.nixpkgs-prs-bot.port

The port for nixpkgs-prs-bot service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.ntfy.enable

Whether to enable Enable the nixpkgs-prs-bot service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.ntfy.domain

Domain name for the nixpkgs-prs-bot service

Type: string

Default: "networking.domain"

Declared by:

garden.services.ntfy.host

The host for nixpkgs-prs-bot service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.ntfy.port

The port for nixpkgs-prs-bot service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 2586

Declared by:

garden.services.photoprism.enable

Whether to enable Enable the photoprism service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.photoprism.domain

Domain name for the photoprism service

Type: string

Default: "networking.domain"

Declared by:

garden.services.photoprism.host

The host for photoprism service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.photoprism.port

The port for photoprism service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 2342

Declared by:

garden.services.postgresql.enable

Whether to enable Enable the postgresql service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.postgresql.domain

Domain name for the postgresql service

Type: string

Default: "networking.domain"

Declared by:

garden.services.postgresql.host

The host for postgresql service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.postgresql.port

The port for postgresql service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.prometheus.enable

Whether to enable Enable the prometheus service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.prometheus.domain

Domain name for the prometheus service

Type: string

Default: "networking.domain"

Declared by:

garden.services.prometheus.host

The host for prometheus service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.prometheus.port

The port for prometheus service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 9100

Declared by:

garden.services.redis.enable

Whether to enable Enable the redis service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.redis.domain

Domain name for the redis service

Type: string

Default: "networking.domain"

Declared by:

garden.services.redis.host

The host for redis service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.redis.port

The port for redis service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.syncthing.enable

Whether to enable Enable the syncthing service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.syncthing.domain

Domain name for the syncthing service

Type: string

Default: "networking.domain"

Declared by:

garden.services.syncthing.host

The host for syncthing service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.syncthing.port

The port for syncthing service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 0

Declared by:

garden.services.uptime-kuma.enable

Whether to enable Enable the uptime-kuma service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.uptime-kuma.domain

Domain name for the uptime-kuma service

Type: string

Default: "networking.domain"

Declared by:

garden.services.uptime-kuma.host

The host for uptime-kuma service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.uptime-kuma.port

The port for uptime-kuma service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 3500

Declared by:

garden.services.vaultwarden.enable

Whether to enable Enable the vaultwarden service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.vaultwarden.domain

Domain name for the vaultwarden service

Type: string

Default: "networking.domain"

Declared by:

garden.services.vaultwarden.host

The host for vaultwarden service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.vaultwarden.port

The port for vaultwarden service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 8222

Declared by:

garden.services.vikunja.enable

Whether to enable Enable the vikunja service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.vikunja.domain

Domain name for the vikunja service

Type: string

Default: "networking.domain"

Declared by:

garden.services.vikunja.host

The host for vikunja service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.vikunja.port

The port for vikunja service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 3456

Declared by:

garden.services.wakapi.enable

Whether to enable Enable the wakapi service.

Type: boolean

Default: false

Example: true

Declared by:

garden.services.wakapi.domain

Domain name for the wakapi service

Type: string

Default: "networking.domain"

Declared by:

garden.services.wakapi.host

The host for wakapi service

Type: string

Default: "127.0.0.1"

Declared by:

garden.services.wakapi.port

The port for wakapi service

Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)

Default: 15912

Declared by:

garden.system.activation.diff.enable

Whether to enable Enable a system diff.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.bluetooth.enable

Whether to enable Should the device load bluetooth drivers and enable blueman.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.enableKernelTweaks

Whether to enable security and performance related kernel parameters.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.extraKernelParams

Extra kernel parameters to be passed to the kernel. This is useful for passing additional parameters to the kernel that are not covered by the default parameters.

Type: list of string

Default: [ ]

Declared by:

garden.system.boot.extraModprobeConfig

Extra modprobe config that will be passed to system modprobe config.

Type: string

Default: "options hid_apple fnmode=1"

Declared by:

garden.system.boot.extraModulePackages

Extra kernel modules to be loaded.

Type: list of package

Default: [ ]

Example: with config.boot.kernelPackages; [acpi_call]

Declared by:

garden.system.boot.grub.device

The device to install the bootloader to.

Type: null or string

Default: "nodev"

Declared by:

garden.system.boot.initrd.enableTweaks

Whether to enable quality of life tweaks for the initrd stage.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.initrd.optimizeCompressor

Whether to enable initrd compression algorithm optimizations for size. Enabling this option will force initrd to use zstd (default) with level 19 and -T0 (STDIN). This will reduce thee initrd size greatly at the cost of compression speed. Not recommended for low-end hardware. .

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.kernel

The kernel to use for the system.

Type: raw value

Default: "pkgs.linuxPackages_latest"

Declared by:

garden.system.boot.loadRecommendedModules

Whether to enable kernel modules that accommodate for most use cases.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.loader

The bootloader that should be used for the device.

Type: one of “none”, “grub”, “systemd-boot”

Default: "none"

Declared by:

garden.system.boot.memtest.enable

Whether to enable memtest86+.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.memtest.package

The memtest86plus package to use.

Type: package

Default: pkgs.memtest86plus

Declared by:

garden.system.boot.recommendedLoaderConfig

Whether to enable tweaks for common bootloader configs per my liking.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.secureBoot

Whether to enable secure-boot and load necessary packages, say good bye to systemd-boot .

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.silentBoot

Whether to enable almost entirely silent boot process through quiet kernel parameter .

Type: boolean

Default: false

Example: true

Declared by:

garden.system.boot.tmpOnTmpfs

Whether to enable /tmp living on tmpfs. false means it will be cleared manually on each reboot.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.emulation.enable

Whether to enable emulation of additional arcitechtures via binfmt. enabling this option will make it so that the system can build for additional systems such as aarc64 on x86_64 and vice versa. .

Type: boolean

Default: false

Example: true

Declared by:

garden.system.emulation.systems

the systems to enable emulation for

Type: list of string

Default:

[
  "aarch64-linux"
  "i686-linux"
]

Declared by:

garden.system.mainUser

The username of the main user for your system

Type: value “isabel” (singular enum)

Default: "isabel"

Declared by:

garden.system.networking.optimizeTcp

Whether to enable Enable tcp optimizations.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.networking.tailscale.enable

Whether to enable Tailscale VPN.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.networking.tailscale.defaultFlags

A list of command-line flags that will be passed to the Tailscale daemon on startup using the config.services.tailscale.extraUpFlags. If isServer is set to true, the server-specific values will be appended to the list defined in this option.

Type: list of string

Default:

[
  "--ssh"
]

Declared by:

garden.system.networking.tailscale.isClient

Whether the target host should utilize Tailscale client features"; This option is mutually exclusive with tailscale.isServer as they both configure Taiscale, but with different flags

Type: boolean

Default: false

Example: true

Declared by:

garden.system.networking.tailscale.isServer

Whether the target host should utilize Tailscale server features. This option is mutually exclusive with tailscale.isClient as they both configure Taiscale, but with different flags

Type: boolean

Default: true

Example: true

Declared by:

garden.system.networking.wirelessBackend

Backend that will be used for wireless connections using either networking.wireless or networking.networkmanager.wifi.backend Defaults to wpa_supplicant until iwd is stable.

Type: one of “iwd”, “wpa_supplicant”

Default: "wpa_supplicant"

Declared by:

garden.system.printing.enable

Whether to enable printing.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.printing.extraDrivers

A list of additional drivers to install for printing

Type: attribute set of absolute path

Default: { }

Declared by:

garden.system.security.auditd.enable

Whether to enable Enable the audit daemon.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.security.auditd.autoPrune.enable

Whether to enable Enable auto-pruning of audit logs.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.security.auditd.autoPrune.dates

How often the audit log should be pruned

Type: string

Default: "daily"

Example: "weekly"

Declared by:

garden.system.security.auditd.autoPrune.size

The maximum size of the audit log in bytes

Type: signed integer

Default: 524288000

Declared by:

garden.system.security.fixWebcam

Whether to enable Fix the broken webcam by un-blacklisting the related kernel module…

Type: boolean

Default: false

Example: true

Declared by:

garden.system.tools.enable

Whether to enable tools.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.tools.minimal

Whether to enable limit to minimal system tooling.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.users

A list of users that you wish to declare as your non-system users. The first username in the list will be treated as your main user unless garden.system.mainUser is set.

Type: list of string

Default:

[
  "isabel"
]

Declared by:

darwin

garden.packages

A set of packages to install in the garden environment.

Type: attribute set of package

Default: { }

Declared by:

garden.environment.flakePath

The path to the configuration

Type: string

Default: "/Users/isabel/.config/flake"

Declared by:

garden.profiles.gaming.enable

Whether to enable Gaming.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.graphical.enable

Whether to enable Graphical interface.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.headless.enable

Whether to enable Headless.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.laptop.enable

Whether to enable Laptop.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.enable

Whether to enable Server.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.hetzner.enable

Whether to enable Hetzner.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.oracle.enable

Whether to enable Oracle.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.workstation.enable

Whether to enable Workstation.

Type: boolean

Default: false

Example: true

Declared by:

garden.system.activation.diff.enable

Whether to enable Enable a system diff.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.mainUser

The username of the main user for your system

Type: value “isabel” (singular enum)

Default: "isabel"

Declared by:

garden.system.tools.enable

Whether to enable tools.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.tools.minimal

Whether to enable limit to minimal system tooling.

Type: boolean

Default: true

Example: true

Declared by:

garden.system.users

A list of users that you wish to declare as your non-system users. The first username in the list will be treated as your main user unless garden.system.mainUser is set.

Type: list of string

Default:

[
  "isabel"
]

Declared by:

home-manager

garden.packages

A set of packages to install in the garden environment.

Type: attribute set of package

Default: { }

Declared by:

garden.profiles.gaming.enable

Whether to enable Gaming.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.graphical.enable

Whether to enable Graphical interface.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.headless.enable

Whether to enable Headless.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.laptop.enable

Whether to enable Laptop.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.enable

Whether to enable Server.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.hetzner.enable

Whether to enable Hetzner.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.server.oracle.enable

Whether to enable Oracle.

Type: boolean

Default: false

Example: true

Declared by:

garden.profiles.workstation.enable

Whether to enable Workstation.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.bash.enable

Whether to enable Enable bash.

Type: boolean

Default: true

Example: true

Declared by:

garden.programs.bash.package

The bash package to use.

Type: package

Default: pkgs.bash

Declared by:

garden.programs.chromium.enable

Whether to enable Enable chromium.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.chromium.package

The chromium package to use.

Type: package

Default: pkgs.chromium

Declared by:

garden.programs.cocogitto.enable

Whether to enable Enable cocogitto.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.cocogitto.package

The cocogitto package to use.

Type: package

Default: pkgs.cocogitto

Declared by:

garden.programs.defaults.bar

default bar for the system

Type: null or one of “waybar”, “ags”

Default: "ags"

Declared by:

garden.programs.defaults.browser

default browser for the system

Type: one of “firefox”, “chromium”, “thorium”

Default: "chromium"

Declared by:

garden.programs.defaults.editor

default editor for the system

Type: one of “nvim”, “codium”

Default: "nvim"

Declared by:

garden.programs.defaults.fileManager

default fileManager for the system

Type: one of “cosmic-files”, “dolphin”, “nemo”

Default: "cosmic-files"

Declared by:

garden.programs.defaults.launcher

default launcher for the system

Type: null or one of “rofi”, “wofi”, “cosmic-launcher”

Default: "rofi"

Declared by:

garden.programs.defaults.manpager

default manpager for the system

Type: string

Default: "nvim +Man!"

Declared by:

garden.programs.defaults.noiseSuppressor

The noise suppressor to be used for desktop systems with sound enabled.

Type: null or one of “rnnoise”, “noisetorch”

Default: "rnnoise"

Declared by:

garden.programs.defaults.pager

default pager for the system

Type: string

Default: "less -FR"

Declared by:

garden.programs.defaults.screenLocker

The lockscreen module to be loaded by home-manager.

Type: null or one of “swaylock”, “gtklock”, “cosmic-greeter”

Default: "gtklock"

Declared by:

garden.programs.defaults.shell

default shell for the system

Type: one of “bash”, “zsh”, “fish”, “nushell”

Default: "bash"

Declared by:

garden.programs.defaults.terminal

default terminal for the system

Type: one of “ghostty”, “alacritty”, “kitty”, “wezterm”, “foot”

Default: "ghostty"

Declared by:

garden.programs.discord.enable

Whether to enable Enable discord.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.discord.package

The discord package to use.

Type: package

Default: pkgs.discord

Declared by:

garden.programs.discord.withMoonlight

Whether to enable Enable Moonlight.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.discord.withOpenASAR

Whether to enable Enable OpenASAR.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.discord.withVencord

Whether to enable Enable Vencord.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.fht-compositor.enable

Whether to enable fht-compositor.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.firefox.enable

Whether to enable Enable firefox.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.firefox.package

The firefox package to use.

Type: package

Default: pkgs.firefox

Declared by:

garden.programs.fish.enable

Whether to enable Enable fish.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.fish.package

The fish package to use.

Type: package

Default: pkgs.fish

Declared by:

garden.programs.ghostty.enable

Whether to enable Enable ghostty.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.ghostty.package

The ghostty package to use.

Type: package

Default: pkgs.ghostty

Declared by:

garden.programs.git.enable

Whether to enable Enable git.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.git.package

The git package to use.

Type: package

Default: pkgs.git

Declared by:

garden.programs.git.signingKey

The default gpg key used for signing commits

Type: string

Default: ""

Declared by:

garden.programs.hyprland.enable

Whether to enable Enable hyprland.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.hyprland.package

The hyprland package to use.

Type: package

Default: pkgs.hyprland

Declared by:

garden.programs.micro.enable

Whether to enable Enable micro.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.micro.package

The micro package to use.

Type: package

Default: pkgs.micro

Declared by:

garden.programs.neovim.enable

Whether to enable Enable neovim.

Type: boolean

Default: true

Example: true

Declared by:

garden.programs.neovim.package

The neovim package to use.

Type: package

Default: pkgs.neovim

Declared by:

garden.programs.neovim.gui.enable

Whether to enable Enable neovide.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.neovim.gui.package

The neovide package to use.

Type: package

Default: pkgs.neovide

Declared by:

garden.programs.neovim.gui.settings

Settings to pass to neovide

Type: attribute set of string

Default: { }

Declared by:

garden.programs.notes.enable

Whether to enable enable notes programs.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.nushell.enable

Whether to enable Enable nushell.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.nushell.package

The nushell package to use.

Type: package

Default: pkgs.nushell

Declared by:

garden.programs.obsidian.enable

Whether to enable Enable obsidian.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.obsidian.package

The obsidian package to use.

Type: package

Default: pkgs.obsidian

Declared by:

garden.programs.obsidian.runtimeInputs

Additional runtime inputs for the obsidian package.

Type: list of package

Default: [ ]

Declared by:

garden.programs.pentesting.enable

Whether to enable Enable packages designed for pentesting.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.rofi.enable

Whether to enable Enable rofi.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.rofi.package

The rofi package to use.

Type: package

Default: pkgs.rofi

Declared by:

garden.programs.vscode.enable

Whether to enable Enable vscode.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.vscode.package

The vscode package to use.

Type: package

Default: pkgs.vscode

Declared by:

garden.programs.waybar.enable

Whether to enable Enable waybar.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.waybar.package

The waybar package to use.

Type: package

Default: pkgs.waybar

Declared by:

garden.programs.wezterm.enable

Whether to enable Enable wezterm.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.wezterm.package

The wezterm package to use.

Type: package

Default: pkgs.wezterm

Declared by:

garden.programs.wofi.enable

Whether to enable Enable wofi.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.wofi.package

The wofi package to use.

Type: package

Default: pkgs.wofi

Declared by:

garden.programs.zed.enable

Whether to enable Enable zed-editor.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.zed.package

The zed-editor package to use.

Type: package

Default: pkgs.zed-editor

Declared by:

garden.programs.zk.enable

Whether to enable Enable zk.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.zk.package

The zk package to use.

Type: package

Default: pkgs.zk

Declared by:

garden.programs.zsh.enable

Whether to enable Enable zsh.

Type: boolean

Default: false

Example: true

Declared by:

garden.programs.zsh.package

The zsh package to use.

Type: package

Default: pkgs.zsh

Declared by:

garden.style.fonts.enable

Whether to enable fontconfig.

Type: boolean

Default: false

Example: true

Declared by:

garden.style.fonts.package

The package that provides the font

Type: package

Default: <derivation MapleMono-TTF-7.2>

Declared by:

garden.style.fonts.bold

The name of the bold font

Type: string

Default: "Maple Mono Bold"

Declared by:

garden.style.fonts.bold-italic

The name of the bold italic font

Type: string

Default: "Maple Mono Bold Italic"

Declared by:

garden.style.fonts.italic

The name of the italic font

Type: string

Default: "Maple Mono Italic"

Declared by:

garden.style.fonts.name

The name of the font

Type: string

Default: "Maple Mono"

Declared by:

garden.style.fonts.size

The size of the font

Type: signed integer

Default: 14

Declared by:

Resources

A collection of resources from people who just make good stuff.

Projects / Configurations

These are some configuration or projects that I have taken inspiration from or find to be of a high quality that people should also consider reading.

People

Thanks to all these people otherwise this config and I would be lost.

  • comfysage, for making my day that bit brighter and occasionally putting me on your back
  • getchoo, for making catppucin/nix and helping a ton
  • nullishamy, for tricking me into using NixOS
  • nekowinston, for fixing half my problems
  • jakehamilton, for teaching me too much about modules
  • nyxkrage, for being there to answer my questions
  • NotAShelf, lots of valuable information
  • Minion3665, for making me write better docs
  • Thorn, picrewnix????

I use lix.

[!NOTE] Furthermore this is with a custom patch set through izlix. Though I don't recommend using izlix. If you want the patches you may copy them for personal use.

This flake makes a point of using lix where possible.

To do so we add the following snippet taken from modules/base/nix/overlays/default.nix. What this does is use lix where possible rather than nix.

_: prev: {
  # in order to reduce our closure size, we can override these packages to
  # use the nix package that we have installed, this will trigget a rebuild
  # of the packages that depend on them so hopefully its worth it for that
  # system space
  nixVersions = prev.nixVersions // {
    stable = config.nix.package;
  };

  # make sure to restore nix for linking back to nix from nixpkgs as its
  # used for other things then the cli implementaion
  nixForLinking = prev.nixVersions.stable;
}

Preview image images/lightmode.png images/blur images/nvim image of my flakes topology