Skip to content

momeemt/config

Repository files navigation

❄️ config

English | 日本語


built with nix

CI Image Ask DeepWiki


This repository contains a set of configurations for declaratively managing systems, user environments, infrastructure, and multiple nodes.

Applying the configuration

Warning

If you want to try this config, it is recommended to use it inside a Docker container as described in the Get Started section.
These configurations heavily depend on personal information of the author, such as user names, paths, and credentials, and cannot be applied to your environment as-is.
However, configuration for tools and systems is factored out into modules. If you have sufficient knowledge of Nix, you can fork this repository, delete unnecessary files, update configuration values, and then apply it on your own responsibility.

To apply these configurations, you need to have Nix installed.
Please install Nix using one of the following methods:

The following operating systems are supported:

First-time setup

First, clone this repository:

git clone https://github.com/momeemt/config

# If gh is available
gh repo clone momeemt/config

# If ghq is available
ghq get momeemt/config

Next, run the following script to apply the configuration.

./assets/scripts/apply.sh

Subsequent updates

Once you enter the devShell, you can use just, a task runner tool.
From the second time onward, you can apply the configuration by running:

just apply

Why Nix/NixOS?

A build system that always produces bit-for-bit identical artifacts on any environment when given the same inputs (source code, build manifests, etc.) is said to provide reproducible builds.
Nix is one of the build systems that enable reproducible builds.

Therefore, a properly pinned Nix configuration can be rebuilt with high reproducibility even as time passes.
It also makes it easy to share the configuration in this repository or other users’ configurations written in Nix.

By using home-manager, you can manage user-space configuration with Nix, and by using NixOS or nix-darwin, you can manage system configuration with Nix as well.

Repository size/freshness map

The official package repository nixpkgs provided by Nix offers more than 120,000 packages as of November 2025.
You can also use it purely as a convenient package manager without using it for system configuration.
If you are interested, refer to the following resources:

Get Started

You can try part of this repository’s configuration in a virtualized environment.

Using Docker

The Docker image defined in .devcontainer/Dockerfile is published on GitHub Container Registry (GHCR).

Warning

When a stable configuration is released, it will be merged into the main branch.
Since no release has been made yet, please use the unstable tag for the time being.

# HEAD of the main branch
docker pull ghcr.io/momeemt/config:latest

# HEAD of the develop branch
docker pull ghcr.io/momeemt/config:unstable

You can also use Development Containers to access the environment inside the container:

devcontainer up --workspace-folder .

Documentation

Documentation for the configuration is available at the following link:

Warning

The documentation is currently under construction and incomplete.

https://config.momee.mt

Development

In a typical workflow, you can enter the development environment using nix-direnv:

echo "use flake" > .envrc
direnv allow

If you want to enter an environment that imports a NixOS module downloaded locally as a git submodule, modify .envrc as follows before applying it. For example:

cat <<EOF > .envrc
use flake . --override-input tmux-nix path:./nix/flakes/tmux-nix
EOF
direnv allow

You can also generate environment definition files using just:

just env

Templates

You can use Nix flake templates from this repository.
For example, the following command generates a flake.nix for a Rust project:

nix flake init --template "github:momeemt/config#rust"

Feedback

😌 If you have suggestions or improvements, feel free to open an issue:

https://github.com/momeemt/config/issues

License

Unless otherwise noted, the source code and resources in this repository are licensed under Apache-2.0.
You are free to use, copy, modify, and redistribute the contents of this repository, including for commercial purposes, as long as you retain the copyright notice, include the license text, and clearly indicate any changes.

However, different licenses may apply in the following cases:

  1. If a file contains an explicit license notice, that notice takes precedence.
  2. If a subdirectory contains a LICENSE file, the license described there applies to the files under that directory.

This license applies only to the extent permitted in the jurisdiction where the user resides.

References

My configuration is based on the following users’ dotfiles and configuration files:

About

Build once, bring everything up.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors 5