A function from system to flake-like attributes omitting the <system>
attribute.
Modules defined here have access to the suboptions and some convenient module arguments.
Type: module
Declared by:
- shell, via option flake.flakeModules.shell
- ai/nix-flake.nix, via option flake.flakeModules.ai
- ai/laravel.nix, via option flake.flakeModules.ai
- services/memcached, via option flake.flakeModules.services
- services/redis, via option flake.flakeModules.services
- services/mysql, via option flake.flakeModules.services
- services/elasticsearch, via option flake.flakeModules.services
- services/blackfire, via option flake.flakeModules.services
- services/adminer, via option flake.flakeModules.services
- languages/javascript, via option flake.flakeModules.languages
- languages/php, via option flake.flakeModules.languages
- processes, via option flake.flakeModules.processes
- scripts, via option flake.flakeModules.scripts
- integrations/git-cliff, via option flake.flakeModules.integrations
- integrations/git-hooks, via option flake.flakeModules.integrations
- integrations/treefmt, via option flake.flakeModules.integrations
- integrations/dotenv, via option flake.flakeModules.integrations
- integrations/convco, via option flake.flakeModules.integrations
- integrations/agenix, via option flake.flakeModules.integrations
- just, via option flake.flakeModules.just
- env, via option flake.flakeModules.env
- core/nixpkgs.nix, via option flake.flakeModules.nixpkgs
- options-document.nix
Whether to enable Laravel ai command.
Type: boolean
Default:
false
Example:
true
Declared by:
A good prompt should always be a few shot or multi shot prompt.
Type: strings concatenated with “\n”
Default:
''
user: a command that sends emails.
response: php artisan make:command SendEmails
user: a model for flights include the migration
response: php artisan make:model Flight --migration
user: a model for flights include the migration resource and request
response: php artisan make:model Flight --controller --resource --requests
user: Flight model overview
response: php artisan model:show Flight
user: Flight controller
response: php artisan make:controller FlightController
user: erase and reseed the database forefully
response: php artisan migrate:fresh --seed --force
user: what routes are avliable?
response: php artisan route:list
user: rollback migrations 5 times
response: php artisan migrate:rollback --step=5
user: start a q worker
response: php artisan queue:work''
Declared by:
The system message that will be used at the start of the prompt.
Type: strings concatenated with “\n”
Default:
''
You are a helpful assistant trained to generate Laravel commands based on the users request.
Only respond with the laravel command, NOTHING ELSE, DO NOT wrap it in quotes or backticks.''
Declared by:
The maximum number of tokens that can be generated in the chat completion. The total length of input tokens and generated tokens is limited by the model’s context length.
Type: null or signed integer
Default:
null
Declared by:
The name of the dotenv file to load, or a list of dotenv files to load in order of precedence.
Type: one of “gpt-4-turbo”, “gpt-4o”, “gpt-4o-mini”
Default:
"gpt-4-turbo"
Declared by:
What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
Type: signed integer
Default:
1
Declared by:
Whether to enable NIX ai command.
Type: boolean
Default:
false
Example:
true
Declared by:
A good prompt should always be a few shot or multi shot prompt.
Type: strings concatenated with “\n”
Default:
''
user: show the outputs provided by my flake
response: nix flake show
user: update flake lock file
response: nix flake update
user: build my foo package
response: nix build .#foo
user: garbage collect anything older then 3 days
response: sudo nix-collect-garbage --delete-older-than 3d && nix-collect-garbage -d
user: list all of my systems generations
response: sudo nix-env --list-generations --profile /nix/var/nix/profiles/system
user: repair the nix store
response: nix-store --verify --check-contents --repair''
Declared by:
The system message that will be used at the start of the prompt.
Type: strings concatenated with “\n”
Default:
''
You are a helpful assistant trained to generate Nix commands based on the users request.
Only respond with the nix command, NOTHING ELSE, DO NOT wrap it in quotes or backticks.''
Declared by:
The maximum number of tokens that can be generated in the chat completion. The total length of input tokens and generated tokens is limited by the model’s context length.
Type: null or signed integer
Default:
null
Declared by:
The name of the dotenv file to load, or a list of dotenv files to load in order of precedence.
Type: one of “gpt-4-turbo”, “gpt-4o”, “gpt-4o-mini”
Default:
"gpt-4-turbo"
Declared by:
What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.
Type: signed integer
Default:
1
Declared by:
Whether to enable .env integration, doesn’t support comments or multiline values…
Type: boolean
Default:
false
Example:
true
Declared by:
The name of the dotenv file to load, or a list of dotenv files to load in order of precedence.
Type: string or list of string
Default:
".env"
Declared by:
Environment variables to be exposed inside the developer environment.
Type: lazy attribute set of anything
Default:
{ }
Declared by:
Whether to enable Agenix Integration.
Type: boolean
Default:
false
Example:
true
Declared by:
The age package to use.
Type: package
Default:
pkgs.rage
Declared by:
Command returning the name of the flake, used as part of the secrets path.
Type: string
Default:
"git rev-parse --show-toplevel | xargs basename"
Declared by:
Path to SSH keys to be used as identities in age decryption.
Type: list of string
Default:
[
"$HOME/.ssh/id_ed25519"
"$HOME/.ssh/id_rsa"
]
Declared by:
Attrset of secrets.
Type: attribute set of (submodule)
Example:
{
foo = {
file = "secrets/bar.age";
mode = "0440";
publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDpVA+jisOuuNDeCJ67M11qUP8YY29cipajWzTFAobi"];
};
}
Declared by:
Age file the secret is loaded from.
Type: string
Declared by:
Permissions mode of the decrypted secret in a format understood by chmod.
Type: string
Default:
"0400"
Declared by:
Name of the variable containing the secret.
Type: unspecified value
Default:
<name>
Declared by:
Name of the variable containing the path to the secret.
Type: unspecified value
Default:
<name>_PATH
Declared by:
Path where the decrypted secret is installed.
Type: string
Default:
"${config.snow-blower.integrations.agenix.secretsPath}/<name>"
Declared by:
A list of public keys that are used to encrypt the secret.
Type: list of string
Example:
["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPDpVA+jisOuuNDeCJ67M11qUP8YY29cipajWzTFAobi"]
Declared by:
Where the secrets are stored.
Type: string
Default:
"/run/user/$(id -u)/agenix-shell/$(${config.agenix-shell.flakeName})/$(uuidgen)"
Declared by:
Whether to enable Convco just command.
Type: boolean
Default:
false
Example:
true
Declared by:
The package Convco should use.
Type: package
Default:
<derivation convco-0.5.1>
Declared by:
The name of the file to output the chaneglog to.
Type: string
Default:
"CHANGELOG.md"
Declared by:
Whether to enable Git-Cliff just command.
Type: boolean
Default:
false
Example:
true
Declared by:
The package Git-Cliff should use.
Type: package
Default:
<derivation git-cliff-2.4.0>
Declared by:
The git-cliff config to use.
See https://git-cliff\.org/docs/configuration/
Type: string
Default:
''
[changelog]
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | striptags | trim | upper_first }}
{% for commit in commits %}
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**] {% endif %}\
{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# template for the changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# remove the leading and trailing s
trim = true
[git]
conventional_commits = true
filter_unconventional = true
split_commits = false
commit_parsers = [
{ message = "^feat", group = "<!-- 0 -->🚀 Features" },
{ message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },
{ message = "^doc", group = "<!-- 3 -->📚 Documentation" },
{ message = "^perf", group = "<!-- 4 -->⚡ Performance" },
{ message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },
{ message = "^style", group = "<!-- 5 -->🎨 Styling" },
{ message = "^test", group = "<!-- 6 -->🧪 Testing" },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore\\(deps.*\\)", skip = true },
{ message = "^chore\\(pr\\)", skip = true },
{ message = "^chore\\(pull\\)", skip = true },
{ message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" },
{ body = ".*security", group = "<!-- 8 -->🛡️ Security" },
{ message = "^revert", group = "<!-- 9 -->◀️ Revert" },
]
protect_breaking_commits = false
filter_commits = false
topo_order = false
sort_commits = "oldest"
''
Declared by:
The name of the file to output the chaneglog to.
Type: string
Default:
"CHANGELOG.md"
Declared by:
Whether to enable Enable the GitHub integration. See https://git-cliff\.org/docs/integration/github\.
Type: boolean
Default:
false
Example:
true
Declared by:
Integration of https://github\.com/cachix/git-hooks\.nix
Type: submodule
Default:
{ }
Declared by:
Integration of https://github\.com/numtide/treefmt-nix
Type: submodule
Default:
{ }
Declared by:
Whether to enable enable just command.
Type: boolean
Default:
true
Example:
true
Declared by:
Nixpkgs to use in treefmt
.
Type: lazy attribute set of raw value
Declared by:
The just package to use.
Type: package
Default:
pkgs.just
Declared by:
The name of the common justfile generated by this module.
Type: string
Default:
"just-flake.just"
Declared by:
The recipes that are avaliable to just
Type: attribute set of (submodule)
Default:
{ }
Declared by:
Whether to enable this recipe.
Type: boolean
Default:
false
Example:
true
Declared by:
The justfile representing this recipe.
Type: string or path
Declared by:
The justfile code for importing this recipe’s justfile.
See https://just\.systems/man/en/chapter_53\.html
Type: string (read only)
Default:
""
Declared by:
Whether to enable tools for JavaScript development.
Type: boolean
Default:
false
Example:
true
Declared by:
The Node.js package to use.
Type: package
Default:
pkgs.nodejs-slim
Declared by:
Whether to enable install bun.
Type: boolean
Default:
false
Example:
true
Declared by:
The bun package to use.
Type: package
Default:
pkgs.bun
Declared by:
Whether to enable bun install during snow blower initialisation.
Type: boolean
Default:
false
Example:
true
Declared by:
Whether to enable wrappers for npm, pnpm and Yarn via Node.js Corepack.
Type: boolean
Default:
false
Example:
true
Declared by:
The JavaScript project’s root directory. Defaults to the root of the devenv project. Can be an absolute path or one relative to the root of the snow blower project.
Type: string
Default:
config.snow-blower.paths.root
Example:
"./directory"
Declared by:
Whether to enable install npm.
Type: boolean
Default:
false
Example:
true
Declared by:
The Node.js package to use.
Type: package
Default:
pkgs.nodejs
Declared by:
Whether to enable npm install during snow blower initialisation.
Type: boolean
Default:
false
Example:
true
Declared by:
Whether to enable install pnpm.
Type: boolean
Default:
false
Example:
true
Declared by:
The pnpm package to use.
Type: package
Default:
pkgs.nodePackages.pnpm
Declared by:
Whether to enable pnpm install during snow blower initialisation.
Type: boolean
Default:
false
Example:
true
Declared by:
Whether to enable install yarn.
Type: boolean
Default:
false
Example:
true
Declared by:
The yarn package to use.
Type: package
Default:
pkgs.yarn
Declared by:
Whether to enable yarn install during snow blower initialisation.
Type: boolean
Default:
false
Example:
true
Declared by:
Whether to enable tools for PHP development.
Type: boolean
Default:
false
Example:
true
Declared by:
Allows you to override the default used package
to adjust the settings or add more extensions. You can find the
extensions using devenv search 'php extensions'
Type: package
Default:
pkgs.php
Example:
pkgs.php.buildEnv {
extensions = { all, enabled }: with all; enabled ++ [ xdebug ];
extraConfig = ''
memory_limit=1G
'';
};
Declared by:
Attribute set of packages including composer
Type: submodule
Default:
pkgs
Declared by:
composer package
Type: null or package
Default:
pkgs.phpPackages.composer
Declared by:
PHP extensions to disable.
Type: list of string
Default:
[ ]
Declared by:
PHP extensions to enable.
Type: list of string
Default:
[ ]
Declared by:
PHP.ini directives. Refer to the “List of php.ini directives” of PHP’s
Type: null or strings concatenated with “\n”
Default:
""
Declared by:
The PHP version to use.
Type: string
Default:
""
Declared by:
The process-compose package to use.
Type: package
Default:
pkgs.process-compose
Declared by:
Bash code to execute after stopping processes.
Type: strings concatenated with “\n”
Default:
""
Declared by:
Bash code to execute before starting processes.
Type: strings concatenated with “\n”
Default:
""
Declared by:
Top-level process-compose.yaml options when that implementation is used.
Type: attribute set
Default:
{
version = "0.5";
unix-socket = "${config.snow-blower.paths.runtime}/pc.sock";
tui = true;
}
Example:
{
log_level = "fatal";
log_location = "/path/to/combined/output/logfile.log";
version = "0.5";
}
Declared by:
Processes can be started with just up
and run in foreground mode.
Type: attribute set of (submodule)
Default:
{ }
Declared by:
Bash code to run the process.
Type: string
Declared by:
process-compose.yaml specific process attributes.
Example: https://github\.com/F1bonacc1/process-compose/blob/main/process-compose\.yaml\`
Only used when using process.implementation = "process-compose";
Type: attribute set
Default:
{ }
Example:
{
availability = {
backoff_seconds = 2;
max_restarts = 5;
restart = "on_failure";
};
depends_on = {
some-other-process = {
condition = "process_completed_successfully";
};
};
environment = [
"ENVVAR_FOR_THIS_PROCESS_ONLY=foobar"
];
}
Declared by:
A set of scripts available when the environment is active.
Type: attribute set of (submodule)
Default:
{ }
Declared by:
The package to use to run the script.
Type: package
Default:
<derivation bash-5.2p26>
Declared by:
Override the binary name if it doesn’t match package name
Type: string
Default:
"bash"
Declared by:
Description of the script.
Type: string
Default:
""
Declared by:
Shell code to execute when the script is run.
Type: string
Declared by:
Include this script in just runner.
Type: boolean
Default:
false
Declared by:
Whether to enable Adminer service.
Type: boolean
Default:
false
Example:
true
Declared by:
The package Adminer should use.
Type: package
Default:
<derivation adminer-4.8.1>
Declared by:
The host Adminer will listen on
Type: string
Default:
"127.0.0.1"
Declared by:
The port Adminer will listen on
Type: signed integer
Default:
8080
Declared by:
Whether to enable Blackfire service.
Type: boolean
Default:
false
Example:
true
Declared by:
The package Blackfire should use.
Type: package
Default:
<derivation blackfire-2.28.7>
Declared by:
Whether to enable Enables application performance monitoring, requires special subscription. .
Type: boolean
Default:
false
Example:
true
Declared by:
Sets the client id used to authenticate with Blackfire. You can find your personal client-id at https://blackfire.io/my/settings/credentials.
Type: string
Default:
""
Declared by:
Sets the client token used to authenticate with Blackfire. You can find your personal client-token at https://blackfire.io/my/settings/credentials.
Type: string
Default:
""
Declared by:
The host Blackfire will listen on
Type: string
Default:
"127.0.0.1"
Declared by:
The port Blackfire will listen on
Type: signed integer
Default:
8307
Declared by:
Sets the server id used to authenticate with Blackfire. You can find your personal server-id at https://blackfire.io/my/settings/credentials.
Type: string
Default:
""
Declared by:
Sets the server token used to authenticate with Blackfire. You can find your personal server-token at https://blackfire.io/my/settings/credentials.
Type: string
Default:
""
Declared by:
Whether to enable Elasticsearch service.
Type: boolean
Default:
false
Example:
true
Declared by:
The package Elasticsearch should use.
Type: package
Default:
<derivation elasticsearch-7.17.16>
Declared by:
Elasticsearch name that identifies your cluster for auto-discovery.
Type: string
Default:
"elasticsearch"
Declared by:
Extra command line options for the elasticsearch launcher.
Type: list of string
Default:
[ ]
Declared by:
Extra configuration for elasticsearch.
Type: string
Default:
""
Example:
''
node.name: "elasticsearch"
node.master: true
node.data: false
''
Declared by:
Extra command line options for Java.
Type: list of string
Default:
[ ]
Example:
[
"-Djava.net.preferIPv4Stack=true"
]
Declared by:
The host Elasticsearch will listen on
Type: string
Default:
"127.0.0.1"
Declared by:
Elasticsearch logging configuration.
Type: string
Default:
''
logger.action.name = org.elasticsearch.action
logger.action.level = info
appender.console.type = Console
appender.console.name = console
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
rootLogger.level = info
rootLogger.appenderRef.console.ref = console
''
Declared by:
Extra elasticsearch plugins
Type: list of package
Default:
[ ]
Example:
[ pkgs.elasticsearchPlugins.discovery-ec2 ]
Declared by:
The port Elasticsearch will listen on
Type: signed integer
Default:
9200
Declared by:
Start a single-node cluster
Type: boolean
Default:
true
Declared by:
Elasticsearch port for the node to node communication.
Type: signed integer
Default:
9300
Declared by:
Whether to enable Memcached service.
Type: boolean
Default:
false
Example:
true
Declared by:
The package Memcached should use.
Type: package
Default:
<derivation memcached-1.6.27>
Declared by:
The host Memcached will listen on
Type: string
Default:
"127.0.0.1"
Declared by:
The port Memcached will listen on
Type: signed integer
Default:
11211
Declared by:
Additional arguments passed to memcached
during startup.
Type: list of strings concatenated with “\n”
Default:
[ ]
Example:
[
"--memory-limit=100M"
]
Declared by:
Whether to enable MySQL service.
Type: boolean
Default:
false
Example:
true
Declared by:
The package MySQL should use.
Type: package
Default:
<derivation mariadb-server-10.11.8>
Declared by:
MySQL configuration.
Type: lazy attribute set of lazy attribute set of anything
Default:
{ }
Example:
{
mysqld = {
key_buffer_size = "6G";
table_cache = 1600;
log-error = "/var/log/mysql_err.log";
plugin-load-add = [ "server_audit" "ed25519=auth_ed25519" ];
};
mysqldump = {
quick = true;
max_allowed_packet = "16M";
};
}
Declared by:
Ensures that the specified users exist and have at least the ensured permissions. The MySQL users will be identified using Unix socket authentication. This authenticates the Unix user with the same name only, and that without the need for a password. This option will never delete existing users or remove permissions, especially not when the value of this option is changed. This means that users created and permissions assigned once through this option or otherwise have to be removed manually.
Type: list of (submodule)
Default:
[ ]
Example:
[
{
name = "snow";
ensurePermissions = {
"snow.*" = "ALL PRIVILEGES";
};
}
]
Declared by:
Permissions to ensure for the user, specified as attribute set.
The attribute names specify the database and tables to grant the permissions for,
separated by a dot. You may use wildcards here.
The attribute values specfiy the permissions to grant.
You may specify one or multiple comma-separated SQL privileges here.
For more information on how to specify the target
and on which privileges exist, see the
GRANT syntax.
The attributes are used as GRANT ${attrName} ON ${attrValue}
.
Type: attribute set of string
Default:
{ }
Example:
{
"database.*" = "ALL PRIVILEGES";
"*.*" = "SELECT, LOCK TABLES";
}
Declared by:
Name of the user to ensure.
Type: string
Declared by:
Password of the user to ensure.
Type: null or string
Default:
null
Declared by:
The host MySQL will listen on
Type: string
Default:
"127.0.0.1"
Declared by:
Whether to import tzdata on the first startup of the mysql server
Type: null or boolean
Default:
null
Declared by:
List of database names and their initial schemas that should be used to create databases on the first startup of MySQL. The schema attribute is optional: If not specified, an empty database is created.
Type: list of (submodule)
Default:
[ ]
Example:
[
{ name = "foodatabase"; schema = ./foodatabase.sql; }
{ name = "bardatabase"; }
]
Declared by:
The name of the database to create.
Type: string
Declared by:
The initial schema of the database; if null (the default), an empty database is created.
Type: null or path
Default:
null
Declared by:
The port MySQL will listen on
Type: signed integer
Default:
3306
Declared by:
Whether to use defaults-exta-file for the mysql command instead of defaults-file. This is useful if you want to provide a config file on the command line. However this can problematic if you have MySQL installed globaly because its config might leak into your environment. This option does not affect the mysqld command.
Type: boolean
Default:
false
Declared by:
Whether to enable Redis service.
Type: boolean
Default:
false
Example:
true
Declared by:
The package Redis should use.
Type: package
Default:
<derivation redis-7.2.5>
Declared by:
Additional text to be appended to redis.conf
.
Type: strings concatenated with “\n”
Default:
"locale-collate C"
Declared by:
The host Redis will listen on
Type: string
Default:
"127.0.0.1"
Declared by:
The port Redis will listen on
Type: signed integer
Default:
6379
Declared by:
The development shell with Snow Blower and its underlying programs
Type: package (read only)
Declared by:
Bash code to execute on interactive startups
Type: list of string
Default:
""
Declared by:
Message Of The Day.
This is the welcome message that is being printed when the user opens the shell.
You may use any valid ansi color from the 8-bit ansi color table. For example, to use a green color you would use something like {106}. You may also use {bold}, {italic}, {underline}. Use {reset} to turn off all attributes.
Type: string
Default:
''
❄️ 💨 Snow Blower: All flake no fluff.
''
Declared by:
Bash code to execute on startup.
Type: list of string
Default:
""
Declared by:
The stdenv to use for the developer environment.
Type: package
Default:
<derivation stdenv-linux>
Declared by: