Compare commits

...

36 Commits

Author SHA1 Message Date
Ryan Yin 48f2cfa99c Merge pull request #96 from ryan4yin/darwin-eval-tests
feat(tests): add eval tests for darwin systems
2024-03-14 01:14:42 +08:00
Ryan Yin a4d3867a73 feat(tests): add eval tests for darwin systems 2024-03-14 01:11:54 +08:00
Ryan Yin 532121ecd4 Merge pull request #95 from ryan4yin/fix-home-manager
fix: macosSystem & colmenaSystem
2024-03-14 01:01:21 +08:00
Ryan Yin 31d83e8afe fix: macosSystem & colmenaSystem 2024-03-14 00:58:33 +08:00
Ryan Yin 1c65d1654a Merge pull request #94 from ryan4yin/add-develop-env-for-ruby
feat: add develop environment for ruby
2024-03-14 00:36:09 +08:00
Ryan Yin 4d3a3750c1 feat: add develop environment for ruby 2024-03-14 00:33:38 +08:00
Ryan Yin bcc8d2302c docs: tests 2024-03-14 00:01:16 +08:00
Ryan Yin 8a26ec8cfa docs: flake outputs 2024-03-13 23:22:38 +08:00
Ryan Yin 5674b63024 docs: tests 2024-03-13 23:18:14 +08:00
Ryan Yin 0e4b5895b6 docs: fix file tree 2024-03-13 23:08:22 +08:00
Ryan Yin 01fbdf5218 Merge pull request #93 from ryan4yin/nixos-tests
feat(WIP): add nixos tests - integration tests
2024-03-13 23:03:41 +08:00
Ryan Yin 2b91d706b0 feat(WIP): add nixos tests - integration tests 2024-03-13 23:02:28 +08:00
Ryan Yin 55eb63a6bd Merge pull request #92 from ryan4yin/rename-haumea-tests
fix: rename haumea tests
2024-03-13 21:51:09 +08:00
Ryan Yin 6a9afbb9a2 fix: rename unitTests to evalTests 2024-03-13 21:48:09 +08:00
Ryan Yin 5200f001c2 feat: add android-tools 2024-03-13 21:43:08 +08:00
Ryan Yin a79a64beaf refactor: rename colmena-meta to colmenaMeta 2024-03-13 18:17:48 +08:00
Ryan Yin bfdf86bf8d Merge pull request #85 from ryan4yin/gitea
feat: gitea
2024-03-13 18:07:28 +08:00
Ryan Yin 05798bb36f feat: gitea 2024-03-13 18:06:35 +08:00
Ryan Yin 44de28ebbc feat: ruby - deploy locally 2024-03-13 17:38:19 +08:00
Ryan Yin a8678cc217 feat: ruby - add emulated system 2024-03-13 17:33:26 +08:00
Ryan Yin 41a9fe1e4b Merge pull request #90 from ryan4yin/action-triggers
feat: update workflows triggers
2024-03-13 17:29:21 +08:00
Ryan Yin 8eae5e8f09 feat: update workflows triggers 2024-03-13 17:28:45 +08:00
Ryan Yin adcfb1ccb3 Merge pull request #88 from ryan4yin/unit-tests
Unit tests
2024-03-13 16:45:56 +08:00
Ryan Yin fff6ad6bff feat: unit tests 2024-03-13 16:44:41 +08:00
Ryan Yin be963c0642 Merge pull request #87 from ryan4yin/refactor-home-module
refactor: home modules
2024-03-13 16:31:44 +08:00
Ryan Yin 093866a2aa refactor: home modules 2024-03-13 16:31:26 +08:00
Ryan Yin 5234fd7279 fix: typo 2024-03-13 16:04:19 +08:00
Ryan Yin 714293a133 fix: typo 2024-03-13 14:21:18 +08:00
Ryan Yin 0fe886e996 Merge pull request #86 from he0119/patch-1
fix: home-module typo
2024-03-13 13:24:53 +08:00
uy_sun 752c9070f4 fix: home-module typo 2024-03-13 13:22:39 +08:00
Ryan Yin fa57812c91 Merge pull request #84 from ryan4yin/refactor-darwin-packages
Refactor: Remove darwin packages
2024-03-11 14:17:15 +08:00
Ryan Yin 1437170127 refactor: remove broken packages via overlays 2024-03-11 14:16:19 +08:00
Ryan Yin 66efe2547c docs: flake outputs 2024-03-11 11:57:25 +08:00
Ryan Yin 5af7c7a427 fix: aarch64-darwin - fern 2024-03-11 11:56:33 +08:00
Ryan Yin 655d733a37 docs: how to add new host 2024-03-11 11:42:12 +08:00
Ryan Yin b29b7e8624 fix: x86_64-darwin - harmonica 2024-03-11 00:28:57 +08:00
115 changed files with 925 additions and 435 deletions
-24
View File
@@ -1,24 +0,0 @@
name: Nix Flake Check
on: [push, pull_request, workflow_dispatch]
jobs:
checks:
name: Check expressions
runs-on: ubuntu-latest
steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Install nix
# uses: cachix/install-nix-action@v24
# with:
# install_url: https://nixos.org/nix/install
# extra_nix_config: |
# access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
# experimental-features = nix-command flakes
- name: Run Nix Flake Check
run: |
echo 'TODO: nix flake check'
# nix flake check
+40
View File
@@ -0,0 +1,40 @@
name: Nix Flake Eval Tests
on:
push:
branches:
- main
paths-ignore:
- "scripts/**"
- "**.md"
- "**.nu"
- 'Justfile'
pull_request:
branches:
- main
paths-ignore:
- "scripts/**"
- "**.md"
- "**.nu"
- 'Justfile'
jobs:
checks:
name: Check expressions
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install nix
uses: cachix/install-nix-action@v24
with:
install_url: https://nixos.org/nix/install
extra_nix_config: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
experimental-features = nix-command flakes
- name: Run Nix Flake Eval Tests
run: |
echo 'Flake Eval Tests'
nix eval .#evalTests --show-trace --print-build-logs --verbose
+6 -3
View File
@@ -1,7 +1,11 @@
name: Mirror this repo to Gitee name: Mirror this repo to Gitee
on: on:
workflow_dispatch: {} push:
push: {} branches:
- main
tags:
- '*'
jobs: jobs:
mirror: mirror:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -26,4 +30,3 @@ jobs:
export GIT_SSH_COMMAND="ssh -v -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no" export GIT_SSH_COMMAND="ssh -v -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no"
git remote add mirror "$INPUT_TARGET_REPO_URL" git remote add mirror "$INPUT_TARGET_REPO_URL"
git push --tags --force --prune mirror "refs/remotes/origin/*:refs/heads/*" git push --tags --force --prune mirror "refs/remotes/origin/*:refs/heads/*"
+4
View File
@@ -119,6 +119,10 @@ aqua:
ruby: ruby:
colmena apply --on '@ruby' --verbose --show-trace colmena apply --on '@ruby' --verbose --show-trace
ruby-local mode="default":
use utils.nu *; \
nixos-switch ruby {{mode}}
kana: kana:
colmena apply --on '@kana' --verbose --show-trace colmena apply --on '@kana' --verbose --show-trace
@@ -4,59 +4,58 @@
nur-ryan4yin, nur-ryan4yin,
... ...
}: { }: {
home.packages = with pkgs; home.packages = with pkgs; [
[ # Misc
# Misc tldr
tldr cowsay
cowsay gnupg
gnupg gnumake
gnumake
# Morden cli tools, replacement of grep/sed/... # Morden cli tools, replacement of grep/sed/...
# Interactively filter its input using fuzzy searching, not limit to filenames. # Interactively filter its input using fuzzy searching, not limit to filenames.
fzf fzf
# search for files by name, faster than find # search for files by name, faster than find
fd fd
# search for files by its content, replacement of grep # search for files by its content, replacement of grep
(ripgrep.override {withPCRE2 = true;}) (ripgrep.override {withPCRE2 = true;})
# A fast and polyglot tool for code searching, linting, rewriting at large scale # A fast and polyglot tool for code searching, linting, rewriting at large scale
# supported languages: only some mainstream languages currently(do not support nix/nginx/yaml/toml/...) # supported languages: only some mainstream languages currently(do not support nix/nginx/yaml/toml/...)
ast-grep ast-grep
sad # CLI search and replace, just like sed, but with diff preview. sad # CLI search and replace, just like sed, but with diff preview.
yq-go # yaml processer https://github.com/mikefarah/yq yq-go # yaml processer https://github.com/mikefarah/yq
just # a command runner like make, but simpler just # a command runner like make, but simpler
delta # A viewer for git and diff output delta # A viewer for git and diff output
lazygit # Git terminal UI. lazygit # Git terminal UI.
hyperfine # command-line benchmarking tool hyperfine # command-line benchmarking tool
gping # ping, but with a graph(TUI) gping # ping, but with a graph(TUI)
doggo # DNS client for humans doggo # DNS client for humans
duf # Disk Usage/Free Utility - a better 'df' alternative duf # Disk Usage/Free Utility - a better 'df' alternative
du-dust # A more intuitive version of `du` in rust du-dust # A more intuitive version of `du` in rust
ncdu # analyzer your disk usage Interactively, via TUI(replacement of `du`) gdu # disk usage analyzer(replacement of `du`)
gdu # disk usage analyzer(replacement of `du`)
# nix related # nix related
# #
# it provides the command `nom` works just like `nix # it provides the command `nom` works just like `nix
# with more details log output # with more details log output
nix-output-monitor nix-output-monitor
hydra-check # check hydra(nix's build farm) for the build status of a package hydra-check # check hydra(nix's build farm) for the build status of a package
nix-index # A small utility to index nix store paths nix-index # A small utility to index nix store paths
nix-init # generate nix derivation from url nix-init # generate nix derivation from url
# https://github.com/nix-community/nix-melt # https://github.com/nix-community/nix-melt
nix-melt # A TUI flake.lock viewer nix-melt # A TUI flake.lock viewer
# https://github.com/utdemir/nix-tree # https://github.com/utdemir/nix-tree
nix-tree # A TUI to visualize the dependency graph of a nix derivation nix-tree # A TUI to visualize the dependency graph of a nix derivation
# productivity # productivity
caddy # A webserver with automatic HTTPS via Let's Encrypt(replacement of nginx) caddy # A webserver with automatic HTTPS via Let's Encrypt(replacement of nginx)
croc # File transfer between computers securely and easily croc # File transfer between computers securely and easily
]
# self-hosted nix cache server # self-hosted nix cache server
++ lib.optionals pkgs.stdenv.isLinux [attic.packages.${pkgs.system}.attic-client]; attic.packages.${pkgs.system}.attic-client
ncdu # analyzer your disk usage Interactively, via TUI(replacement of `du`)
];
programs = { programs = {
# A modern replacement for ls # A modern replacement for ls
-37
View File
@@ -1,37 +0,0 @@
{
lib,
pkgs,
...
}: {
home.packages = with pkgs;
[
# infrastructure as code
# pulumi
# pulumictl
# tf2pulumi
# crd2pulumi
# pulumiPackages.pulumi-random
# pulumiPackages.pulumi-command
# pulumiPackages.pulumi-aws-native
# pulumiPackages.pulumi-language-go
# pulumiPackages.pulumi-language-python
# pulumiPackages.pulumi-language-nodejs
# aws
awscli2
ssm-session-manager-plugin # Amazon SSM Session Manager Plugin
aws-iam-authenticator
eksctl
# aliyun
aliyun-cli
]
++ (
lib.optionals pkgs.stdenv.isLinux [
# cloud tools that nix do not have cache for.
terraform
terraformer # generate terraform configs from existing cloud resources
packer # machine image builder
]
);
}
-71
View File
@@ -1,71 +0,0 @@
{
pkgs,
pkgs-unstable,
...
}: {
#############################################################
#
# Basic settings for development environment
#
# Please avoid to install language specific packages here(globally),
# instead, install them:
# 1. per IDE, such as `programs.neovim.extraPackages`
# 2. per-project, using https://github.com/the-nix-way/dev-templates
#
#############################################################
home.packages = with pkgs;
[
colmena # nixos's remote deployment tool
# db related
dbeaver
mycli
pgcli
mongosh
sqlite
# embedded development
minicom
# ai related
python311Packages.huggingface-hub # huggingface-cli
# misc
pkgs-unstable.devbox
bfg-repo-cleaner # remove large files from git history
k6 # load testing tool
protobuf # protocol buffer compiler
# solve coding extercises - learn by doing
exercism
]
++ (
lib.optionals pkgs.stdenv.isLinux [
# Automatically trims your branches whose tracking remote refs are merged or gone
# It's really useful when you work on a project for a long time.
git-trim
# need to run `conda-install` before using it
# need to run `conda-shell` before using command `conda`
# conda is not available for MacOS
conda
mitmproxy # http/https proxy tool
insomnia # REST client
wireshark # network analyzer
ventoy # create bootable usb
]
);
programs = {
direnv = {
enable = true;
nix-direnv.enable = true;
enableZshIntegration = true;
enableBashIntegration = true;
enableNushellIntegration = true;
};
};
}
-138
View File
@@ -1,138 +0,0 @@
{pkgs, ...}: {
nixpkgs.config = {
programs.npm.npmrc = ''
prefix = ''${HOME}/.npm-global
'';
};
home.packages = with pkgs;
[
#-- c/c++
cmake
cmake-language-server
gnumake
checkmake
# c/c++ compiler, required by nvim-treesitter!
gcc
# c/c++ tools with clang-tools, the unwrapped version won't
# add alias like `cc` and `c++`, so that it won't conflict with gcc
llvmPackages.clang-unwrapped
lldb
#-- python
nodePackages.pyright # python language server
(python311.withPackages (
ps:
with ps; [
ruff-lsp
black # python formatter
jupyter
ipython
pandas
requests
pyquery
pyyaml
## emacs's lsp-bridge dependenciesge
epc
orjson
sexpdata
six
setuptools
paramiko
rapidfuzz
]
))
#-- rust
rust-analyzer
cargo # rust package manager
rustfmt
#-- zig
zls
#-- nix
nil
rnix-lsp
# nixd
statix # Lints and suggestions for the nix programming language
deadnix # Find and remove unused code in .nix source files
alejandra # Nix Code Formatter
#-- golang
go
gomodifytags
iferr # generate error handling code for go
impl # generate function implementation for go
gotools # contains tools like: godoc, goimports, etc.
gopls # go language server
delve # go debugger
# -- java
jdk17
gradle
maven
spring-boot-cli
#-- lua
stylua
lua-language-server
#-- bash
nodePackages.bash-language-server
shellcheck
shfmt
#-- javascript/typescript --#
nodePackages.nodejs
nodePackages.typescript
nodePackages.typescript-language-server
# HTML/CSS/JSON/ESLint language servers extracted from vscode
nodePackages.vscode-langservers-extracted
nodePackages."@tailwindcss/language-server"
emmet-ls
#-- CloudNative
nodePackages.dockerfile-language-server-nodejs
# terraform # install via brew on macOS
terraform-ls
jsonnet
jsonnet-language-server
hadolint # Dockerfile linter
# -- Lisp like Languages
guile
racket-minimal
fnlfmt # fennel
#-- Others
taplo # TOML language server / formatter / validator
nodePackages.yaml-language-server
sqlfluff # SQL linter
actionlint # GitHub Actions linter
buf # protoc plugin for linting and formatting
proselint # English prose linter
#-- Misc
tree-sitter # common language parser/highlighter
nodePackages.prettier # common code formatter
marksman # language server for markdown
glow # markdown previewer
fzf
pandoc # document converter
hugo # static site generator
#-- Optional Requirements:
gdu # disk usage analyzer, required by AstroNvim
(ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern
]
++ (
lib.optionals pkgs.stdenv.isLinux [
#-- verilog / systemverilog
verible
gdb
]
);
}
+14
View File
@@ -0,0 +1,14 @@
{
pkgs,
...
}: {
home.packages = with pkgs; [
# db related
dbeaver
mitmproxy # http/https proxy tool
insomnia # REST client
wireshark # network analyzer
ventoy # create bootable usb
];
}
+32
View File
@@ -0,0 +1,32 @@
{
lib,
pkgs,
...
}: {
home.packages = with pkgs; [
# infrastructure as code
# pulumi
# pulumictl
# tf2pulumi
# crd2pulumi
# pulumiPackages.pulumi-random
# pulumiPackages.pulumi-command
# pulumiPackages.pulumi-aws-native
# pulumiPackages.pulumi-language-go
# pulumiPackages.pulumi-language-python
# pulumiPackages.pulumi-language-nodejs
# aws
awscli2
ssm-session-manager-plugin # Amazon SSM Session Manager Plugin
aws-iam-authenticator
eksctl
# aliyun
aliyun-cli
# cloud tools that nix do not have cache for.
terraform
terraformer # generate terraform configs from existing cloud resources
packer # machine image builder
];
}
+61
View File
@@ -0,0 +1,61 @@
{
pkgs,
pkgs-unstable,
...
}: {
#############################################################
#
# Basic settings for development environment
#
# Please avoid to install language specific packages here(globally),
# instead, install them:
# 1. per IDE, such as `programs.neovim.extraPackages`
# 2. per-project, using https://github.com/the-nix-way/dev-templates
#
#############################################################
home.packages = with pkgs; [
colmena # nixos's remote deployment tool
# db related
mycli
pgcli
mongosh
sqlite
# embedded development
minicom
# ai related
python311Packages.huggingface-hub # huggingface-cli
# misc
pkgs-unstable.devbox
bfg-repo-cleaner # remove large files from git history
k6 # load testing tool
protobuf # protocol buffer compiler
# solve coding extercises - learn by doing
exercism
# Automatically trims your branches whose tracking remote refs are merged or gone
# It's really useful when you work on a project for a long time.
git-trim
# need to run `conda-install` before using it
# need to run `conda-shell` before using command `conda`
# conda is not available for MacOS
conda
];
programs = {
direnv = {
enable = true;
nix-direnv.enable = true;
enableZshIntegration = true;
enableBashIntegration = true;
enableNushellIntegration = true;
};
};
}
+3
View File
@@ -0,0 +1,3 @@
{mylib, ...}: {
imports = mylib.scanPaths ./.;
}
@@ -57,7 +57,7 @@ in {
# :tools lookup & :lang org +roam # :tools lookup & :lang org +roam
sqlite sqlite
# :lang latex & :lang org (latex previews) # :lang latex & :lang org (latex previews)
texlive.combined.scheme-medium # texlive.combined.scheme-medium
]; ];
programs.bash.bashrcExtra = envExtra; programs.bash.bashrcExtra = envExtra;
+133
View File
@@ -0,0 +1,133 @@
{pkgs, ...}: {
nixpkgs.config = {
programs.npm.npmrc = ''
prefix = ''${HOME}/.npm-global
'';
};
home.packages = with pkgs; [
#-- c/c++
cmake
cmake-language-server
gnumake
checkmake
# c/c++ compiler, required by nvim-treesitter!
gcc
# c/c++ tools with clang-tools, the unwrapped version won't
# add alias like `cc` and `c++`, so that it won't conflict with gcc
llvmPackages.clang-unwrapped
lldb
#-- python
nodePackages.pyright # python language server
(python311.withPackages (
ps:
with ps; [
ruff-lsp
black # python formatter
jupyter
ipython
pandas
requests
pyquery
pyyaml
## emacs's lsp-bridge dependenciesge
epc
orjson
sexpdata
six
setuptools
paramiko
rapidfuzz
]
))
#-- rust
rust-analyzer
cargo # rust package manager
rustfmt
#-- nix
nil
rnix-lsp
# nixd
statix # Lints and suggestions for the nix programming language
deadnix # Find and remove unused code in .nix source files
alejandra # Nix Code Formatter
#-- golang
go
gomodifytags
iferr # generate error handling code for go
impl # generate function implementation for go
gotools # contains tools like: godoc, goimports, etc.
gopls # go language server
delve # go debugger
# -- java
jdk17
gradle
maven
spring-boot-cli
#-- lua
stylua
lua-language-server
#-- bash
nodePackages.bash-language-server
shellcheck
shfmt
#-- javascript/typescript --#
nodePackages.nodejs
nodePackages.typescript
nodePackages.typescript-language-server
# HTML/CSS/JSON/ESLint language servers extracted from vscode
nodePackages.vscode-langservers-extracted
nodePackages."@tailwindcss/language-server"
emmet-ls
# -- Lisp like Languages
guile
racket-minimal
fnlfmt # fennel
#-- Others
taplo # TOML language server / formatter / validator
nodePackages.yaml-language-server
sqlfluff # SQL linter
actionlint # GitHub Actions linter
buf # protoc plugin for linting and formatting
proselint # English prose linter
#-- Misc
tree-sitter # common language parser/highlighter
nodePackages.prettier # common code formatter
marksman # language server for markdown
glow # markdown previewer
fzf
pandoc # document converter
hugo # static site generator
#-- Optional Requirements:
gdu # disk usage analyzer, required by AstroNvim
(ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern
#-- CloudNative
nodePackages.dockerfile-language-server-nodejs
# terraform # install via brew on macOS
terraform-ls
jsonnet
jsonnet-language-server
hadolint # Dockerfile linter
#-- zig
zls
#-- verilog / systemverilog
verible
gdb
];
}
+4 -3
View File
@@ -2,8 +2,9 @@
imports = imports =
(mylib.scanPaths ./.) (mylib.scanPaths ./.)
++ [ ++ [
../base/server ../base/core
../base/desktop ../base/tui
../base/core.nix ../base/gui
../base/home.nix
]; ];
} }
+8
View File
@@ -0,0 +1,8 @@
{
imports = [
../base/core
../base/home.nix
./base
];
}
-10
View File
@@ -1,10 +0,0 @@
{
imports = [
../base/server
../base/desktop
../base/core.nix
./base
./desktop
];
}
+5
View File
@@ -0,0 +1,5 @@
{pkgs, ...}: {
home.packages = with pkgs; [
android-tools
];
}
+11
View File
@@ -0,0 +1,11 @@
{
imports = [
../base/core
../base/tui
../base/gui
../base/home.nix
./base
./desktop
];
}
-8
View File
@@ -1,8 +0,0 @@
{
imports = [
../base/server
../base/core.nix
./base
];
}
+10
View File
@@ -0,0 +1,10 @@
{
imports = [
../base/core
../base/tui
../base/home.nix
./base
./desktop
];
}
+28
View File
@@ -0,0 +1,28 @@
{myvars, ...}: {
services.caddy = {
enable = true;
# Reload Caddy instead of restarting it when configuration file changes.
enableReload = true;
user = "caddy"; # User account under which caddy runs.
dataDir = "/var/lib/caddy";
logDir = "/var/log/caddy";
# Additional lines of configuration appended to the global config section of the Caddyfile.
# Refer to https://caddyserver.com/docs/caddyfile/options#global-options for details on supported values.
globalConfig = ''
http_port 80
https_port 443
auto_https off
'';
# ACME related settings.
# email = myvars.useremail;
# acmeCA = "https://acme-v02.api.letsencrypt.org/directory";
virtualHosts."http://git.writefor.fun".extraConfig = ''
encode zstd gzip
reverse_proxy http://localhost:3000
'';
};
networking.firewall.allowedTCPPorts = [80 443];
}
+3
View File
@@ -20,6 +20,9 @@ in {
./hardware-configuration.nix ./hardware-configuration.nix
./disko-fs.nix ./disko-fs.nix
./impermanence.nix ./impermanence.nix
./gitea.nix
./caddy.nix
]; ];
networking = { networking = {
+88
View File
@@ -0,0 +1,88 @@
{pkgs, ...}: let
in {
# https://github.com/NixOS/nixpkgs/blob/nixos-23.11/nixos/modules/services/misc/gitea.nix
services.gitea = {
enable = true;
user = "gitea";
group = "gitea";
stateDir = "/var/lib/gitea";
appName = "Ryan Yin's Gitea Service";
lfs.enable = true;
# Enable a timer that runs gitea dump to generate backup-files of the current gitea database and repositories.
dump = {
enable = false;
interval = "hourly";
file = "gitea-dump";
type = "tar.zst";
};
# Path to a file containing the SMTP password.
# mailerPasswordFile = "";
settings = {
server = {
SSH_PORT = 2222;
PROTOCOL = "http";
HTTP_PORT = 3000;
HTTP_ADDR = "127.0.0.1";
DOMAIN = "git.writefor.fun";
};
# one of "Trace", "Debug", "Info", "Warn", "Error", "Critical"
log.LEVEL = "Info";
session.COOKIE_SECURE = false;
service.DISABLE_REGISTRATION = true;
# "cron.sync_external_users" = {
# RUN_AT_START = true;
# SCHEDULE = "@every 24h";
# UPDATE_EXISTING = true;
# };
mailer = {
ENABLED = true;
MAILER_TYPE = "sendmail";
FROM = "do-not-reply@writefor.fun";
SENDMAIL_PATH = "${pkgs.system-sendmail}/bin/sendmail";
};
other = {
SHOW_FOOTER_VERSION = false;
};
};
database = {
type = "sqlite3";
# create a local database automatically.
createDatabase = true;
};
};
# services.gitea-actions-runner.instances."default" = {
# enable = true;
# name = "default";
# labels = [
# # provide a debian base with nodejs for actions
# "debian-latest:docker://node:18-bullseye"
# # fake the ubuntu name, because node provides no ubuntu builds
# "ubuntu-latest:docker://node:18-bullseye"
# # provide native execution on the host
# "native:host"
# ];
# gitea = "http://git.writefor.fun";
# # Path to an environment file,
# # containing the TOKEN environment variable,
# # that holds a token to register at the configured Gitea instance.
# tokenFile = "xxx"; # use agenix for secrets.
# # Configuration for act_runner daemon.
# # For an example configuration, see:
# # https://gitea.com/gitea/act_runner/src/branch/main/internal/pkg/config/config.example.yaml
# settings = {};
# # List of packages, that are available to actions,
# # when the runner is configured with a host execution label.
# hostPackages = with pkgs; [
# bash
# coreutils
# curl
# gawk
# gitMinimal
# gnused
# nodejs
# wget
# ];
# };
}
+2 -1
View File
@@ -27,7 +27,8 @@
3. If the new host need to use home-manager, add its custom config into `hosts/<name>/home.nix`. 3. If the new host need to use home-manager, add its custom config into `hosts/<name>/home.nix`.
1. Under `outputs/` 1. Under `outputs/`
1. Add a new nix file named `outputs/<system-architecture>/src/<name>.nix`. 1. Add a new nix file named `outputs/<system-architecture>/src/<name>.nix`.
2. Copy the content from one of the existing host's nix file, and modify it to fit the new host. 2. Copy the content from one of the existing similar host, and modify it to fit the new host.
1. Usually, you only need to modify the `name` and `tags` fields.
3. [Optional] Add a new unit test file under `outputs/<system-architecture>/tests/<name>.nix` to test the new host's nix file. 3. [Optional] Add a new unit test file under `outputs/<system-architecture>/tests/<name>.nix` to test the new host's nix file.
4. [Optional] Add a new integration test file under `outputs/<system-architecture>/integration-tests/<name>.nix` to test whether the new host's nix config can be built and deployed correctly. 4. [Optional] Add a new integration test file under `outputs/<system-architecture>/integration-tests/<name>.nix` to test whether the new host's nix config can be built and deployed correctly.
+2
View File
@@ -14,6 +14,8 @@ let
in { in {
imports = mylib.scanPaths ./.; imports = mylib.scanPaths ./.;
# Enable binfmt emulation of aarch64-linux, this is required for cross compilation.
boot.binfmt.emulatedSystems = ["aarch64-linux" "riscv64-linux"];
# supported file systems, so we can mount any removable disks with these filesystems # supported file systems, so we can mount any removable disks with these filesystems
boot.supportedFilesystems = [ boot.supportedFilesystems = [
"ext4" "ext4"
+1 -1
View File
@@ -122,7 +122,7 @@
# The smarthost and SMTP sender used for mail notifications. # The smarthost and SMTP sender used for mail notifications.
smtp_smarthost = "smtp.qq.com:465"; smtp_smarthost = "smtp.qq.com:465";
smtp_from = "$SMTP_SENDER_EMAIL"; smtp_from = "$SMTP_SENDER_EMAIL";
smtp_auth_myvars.username = "$SMTP_AUTH_USERNAME"; smtp_auth_username = "$SMTP_AUTH_USERNAME";
smtp_auth_password = "$SMTP_AUTH_PASSWORD"; smtp_auth_password = "$SMTP_AUTH_PASSWORD";
# smtp.qq.com:465 support SSL only, so we need to disable TLS here. # smtp.qq.com:465 support SSL only, so we need to disable TLS here.
# https://service.mail.qq.com/detail/0/310 # https://service.mail.qq.com/detail/0/310
+5 -5
View File
@@ -1,8 +1,9 @@
# colmena - Remote Deployment via SSH # colmena - Remote Deployment via SSH
{ {
lib,
inputs, inputs,
nixos-modules, nixos-modules,
home-module ? null, home-modules ? null,
myvars, myvars,
system, system,
tags, tags,
@@ -23,17 +24,16 @@ in
imports = imports =
nixos-modules nixos-modules
++ ( ++ (
if (home-module != null) lib.optionals ((lib.lists.length home-modules) > 0)
then [ [
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = specialArgs; home-manager.extraSpecialArgs = specialArgs;
home-manager.users."${myvars.username}" = home-module; home-manager.users."${myvars.username}".imports = home-modules;
} }
] ]
else []
); );
} }
+15 -10
View File
@@ -1,7 +1,8 @@
{ {
lib,
inputs, inputs,
darwin-modules, darwin-modules,
home-module ? null, home-modules ? [],
myvars, myvars,
system, system,
genSpecialArgs, genSpecialArgs,
@@ -25,14 +26,18 @@ in
# discard all the default paths, and only use the one from this flake. # discard all the default paths, and only use the one from this flake.
nix.nixPath = lib.mkForce ["/etc/nix/inputs"]; nix.nixPath = lib.mkForce ["/etc/nix/inputs"];
}) })
]
++ (
lib.optionals ((lib.lists.length home-modules) > 0)
[
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.darwinModules.home-manager home-manager.extraSpecialArgs = specialArgs;
{ home-manager.users."${myvars.username}".imports = home-modules;
home-manager.useGlobalPkgs = true; }
home-manager.useUserPackages = true; ]
);
home-manager.extraSpecialArgs = specialArgs;
home-manager.users."${myvars.username}" = home-module;
}
];
} }
+3 -3
View File
@@ -4,7 +4,7 @@
system, system,
genSpecialArgs, genSpecialArgs,
nixos-modules, nixos-modules,
home-module ? null, home-modules ? [],
myvars, myvars,
... ...
}: let }: let
@@ -26,7 +26,7 @@ in
} }
] ]
++ ( ++ (
lib.optionals (home-module != null) lib.optionals ((lib.lists.length home-modules) > 0)
[ [
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
@@ -34,7 +34,7 @@ in
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = specialArgs; home-manager.extraSpecialArgs = specialArgs;
home-manager.users."${myvars.username}" = home-module; home-manager.users."${myvars.username}".imports = home-modules;
} }
] ]
); );
+32
View File
@@ -0,0 +1,32 @@
{lib, ...}:
# ===================================================================
# Remove packages that are not well supported for the Darwin platform
# ===================================================================
let
brokenPackages = [
"terraform"
"terraformer"
"packer"
"git-trim"
"conda"
"mitmproxy"
"insomnia"
"wireshark"
"ventoy"
"jsonnet"
"zls"
"verible"
"gdb"
];
in {
nixpkgs.overlays = [
(_: super: let
removeUnwantedPackages = pname:
lib.warn "the ${pname} has been removed on the darwin platform"
super.emptyDirectory;
in
lib.genAttrs
brokenPackages
removeUnwantedPackages)
];
}
+92 -17
View File
@@ -1,5 +1,68 @@
# Flake Outputs # Flake Outputs
## Is such a complex and fine-grained structure necessary?
There is no need to do this when you have a small number of machines.
But when you have a large number of machines, it is necessary to manage them in a fine-grained way,
otherwise, it will be difficult to manage and maintain them.
The number of my machines has grown to more than 20,
and the increase in scale has shown signs of getting out of control of complexity,
so it is a natural and reasonable choice to use this fine-grained architecture to manage.
## Tests
Testing is not necessary when your configuration is not complex,
but with the increase in the number and configuration of your machines, testing becomes more and more important.
We have two types of tests: eval tests and nixos tests,
both of which can help us detect many obscure errors early,
so as to avoid testing directly in the real world, and to avoid failures in personal computers and even corporate online environments.
Related projects & docs:
- [haumea](https://github.com/nix-community/haumea): Filesystem-based module system for Nix
- [Unveiling the Power of the NixOS Integration Test Driver (Part 1)](https://nixcademy.com/2023/10/24/nixos-integration-tests/)
- [NixOS Tests - NixOS Manual](https://nixos.org/manual/nixos/stable/#sec-nixos-tests)
### 1. Eval Tests
> TODO: More Tests!
Eval Tests evaluate the expressions and compare the results with the expected results.
It runs fast, but it doesn't build a real machine.
We use eval tests to ensure that some attributes are correctly set for each NixOS host(not Darwin).
How to run all the eval tests:
```bash
nix eval .#evalTests --show-trace --print-build-logs --verbose
```
### 2. NixOS Tests
> WIP: not working yet
NixOS Tests builds and starts virtual machines using our NixOS configuration and run tests on them.
Comparing to eval tests, it runs slow, but it builds a real machine, and we can test the whole system actually works as expected.
Problems:
- [ ] We need a private cache server, so that our NixOS tests do not need to build some custom packages every time we run the tests.
- [ ] Cannot test the whole host, because my host relies on its unique ssh host key to decrypt its agenix secrets.
- [ ] Maybe it's better to test every service separately, not the whole host?
How to run NixOS tests for every host:
```bash
# Format: nix build .#<name>-nixos-tests
nix build .#ruby-nixos-tests
```
## Overview
All the outputs of this flake are defined here. All the outputs of this flake are defined here.
```bash ```bash
@@ -8,27 +71,36 @@ All the outputs of this flake are defined here.
├── default.nix # The entry point, all the outputs are composed here. ├── default.nix # The entry point, all the outputs are composed here.
├── README.md ├── README.md
├── aarch64-darwin # All outputs for macOS Apple Silicon ├── aarch64-darwin # All outputs for macOS Apple Silicon
│   ├── default.nix # The entry point for all outputs for macOS Apple Silicon │   ├── default.nix
│   └── src │   └── src # every host has its own file in this directory
│   └── fern.nix │   └── fern.nix
├── aarch64-linux # All outputs for Linux ARM64 ├── aarch64-linux # All outputs for Linux ARM64
│   ├── default.nix │   ├── default.nix
│   ── src │   ── src # every host has its own file in this directory
│   ├── 12kingdoms-rakushun.nix │   │   ├── 12kingdoms-rakushun.nix
│   └── 12kingdoms-suzu.nix │   │   └── 12kingdoms-suzu.nix
├── riscv64-linux # All outputs for Linux RISCV64 │   └── tests # eval tests
│   └── hostname
│   ├── expected.nix
│   └── expr.nix
├── riscv64-linux # All outputs for Linux RISCV64
│   ├── default.nix │   ├── default.nix
│   ── src │   ── src # every host has its own file in this directory
│   ├── rolling-girls-nozomi.nix │   │   ├── rolling-girls-nozomi.nix
│   └── rolling-girls-yukina.nix │   │   └── rolling-girls-yukina.nix
├── x86_64-darwin # All outputs for macOS Intel │   └── tests # eval tests
│   └── hostname
│   ├── expected.nix
│   └── expr.nix
├── x86_64-darwin # All outputs for macOS Intel
│   ├── default.nix │   ├── default.nix
│   └── src │   └── src
│   └── harnomica.nix │   └── harnomica.nix
└── x86_64-linux # All outputs for Linux x86_64 └── x86_64-linux # All outputs for Linux x86_64
├── default.nix ├── default.nix
├── src ├── nixos-tests
│   ├── 12kindoms-shoukei.nix ├── src # every host has its own file in this directory
│   ├── 12kingdoms-shoukei.nix
│   ├── homelab-tailscale-gw.nix │   ├── homelab-tailscale-gw.nix
│   ├── idols-ai.nix │   ├── idols-ai.nix
│   ├── idols-aquamarine.nix │   ├── idols-aquamarine.nix
@@ -43,9 +115,12 @@ All the outputs of this flake are defined here.
│   ├── kubevirt-shoryu.nix │   ├── kubevirt-shoryu.nix
│   ├── kubevirt-shushou.nix │   ├── kubevirt-shushou.nix
│   └── kubevirt-youko.nix │   └── kubevirt-youko.nix
└── tests └── tests # eval tests
├── home-manager
│   ├── expected.nix
│   └── expr.nix
└── hostname
├── expected.nix
└── expr.nix
12 directories, 28 files
``` ```
+4 -4
View File
@@ -23,8 +23,8 @@ in
inherit data; # for debugging purposes inherit data; # for debugging purposes
# NixOS's unit tests. # NixOS's unit tests.
# unit-tests = haumea.lib.loadEvalTests { evalTests = haumea.lib.loadEvalTests {
# src = ./tests; src = ./tests;
# inputs = args; inputs = args // {inherit outputs;};
# }; };
} }
+1 -1
View File
@@ -22,7 +22,7 @@
"hosts/darwin-${name}" "hosts/darwin-${name}"
]) ])
++ []; ++ [];
home-module.imports = map mylib.relativeToRoot [ home-modules = map mylib.relativeToRoot [
"hosts/darwin-${name}/home.nix" "hosts/darwin-${name}/home.nix"
"home/darwin" "home/darwin"
]; ];
@@ -0,0 +1,10 @@
{
myvars,
lib,
}: let
username = myvars.username;
hosts = [
"fern"
];
in
lib.genAttrs hosts (_: "/Users/${username}")
@@ -0,0 +1,15 @@
{
myvars,
lib,
outputs,
}: let
username = myvars.username;
hosts = [
"fern"
];
in
lib.genAttrs
hosts
(
name: outputs.darwinConfigurations.${name}.config.home-manager.users.${username}.home.homeDirectory
)
@@ -0,0 +1,8 @@
{
lib,
outputs,
}: let
hostsNames = builtins.attrNames outputs.darwinConfigurations;
expected = lib.genAttrs hostsNames (name: name);
in
expected
@@ -0,0 +1,9 @@
{
lib,
outputs,
}:
lib.genAttrs
(builtins.attrNames outputs.darwinConfigurations)
(
name: outputs.darwinConfigurations.${name}.config.networking.hostName
)
+7 -7
View File
@@ -18,9 +18,9 @@
nixosConfigurations = lib.attrsets.mergeAttrsList (map (it: it.nixosConfigurations or {}) dataWithoutPaths); nixosConfigurations = lib.attrsets.mergeAttrsList (map (it: it.nixosConfigurations or {}) dataWithoutPaths);
packages = lib.attrsets.mergeAttrsList (map (it: it.packages or {}) dataWithoutPaths); packages = lib.attrsets.mergeAttrsList (map (it: it.packages or {}) dataWithoutPaths);
# colmena contains some meta info, which need to be merged carefully. # colmena contains some meta info, which need to be merged carefully.
colmena-meta = { colmenaMeta = {
nodeNixpkgs = lib.attrsets.mergeAttrsList (map (it: it.colmena-meta.nodeNixpkgs or {}) dataWithoutPaths); nodeNixpkgs = lib.attrsets.mergeAttrsList (map (it: it.colmenaMeta.nodeNixpkgs or {}) dataWithoutPaths);
nodeSpecialArgs = lib.attrsets.mergeAttrsList (map (it: it.colmena-meta.nodeSpecialArgs or {}) dataWithoutPaths); nodeSpecialArgs = lib.attrsets.mergeAttrsList (map (it: it.colmenaMeta.nodeSpecialArgs or {}) dataWithoutPaths);
}; };
# colmena's per-machine data. # colmena's per-machine data.
colmena = lib.attrsets.mergeAttrsList (map (it: it.colmena or {}) dataWithoutPaths); colmena = lib.attrsets.mergeAttrsList (map (it: it.colmena or {}) dataWithoutPaths);
@@ -31,8 +31,8 @@ in
inherit data; # for debugging purposes inherit data; # for debugging purposes
# NixOS's unit tests. # NixOS's unit tests.
# unit-tests = haumea.lib.loadEvalTests { evalTests = haumea.lib.loadEvalTests {
# src = ./tests; src = ./tests;
# inputs = args; inputs = args // {inherit outputs;};
# }; };
} }
@@ -50,7 +50,7 @@
in { in {
nixosConfigurations.${name} = mylib.nixosSystem rk3588SystemArgs; nixosConfigurations.${name} = mylib.nixosSystem rk3588SystemArgs;
colmena-meta = { colmenaMeta = {
nodeSpecialArgs.${name} = rk3588SpecialArgs; nodeSpecialArgs.${name} = rk3588SpecialArgs;
nodeNixpkgs.${name} = rk3588Pkgs; nodeNixpkgs.${name} = rk3588Pkgs;
}; };
@@ -50,7 +50,7 @@
in { in {
nixosConfigurations.${name} = mylib.nixosSystem rk3588SystemArgs; nixosConfigurations.${name} = mylib.nixosSystem rk3588SystemArgs;
colmena-meta = { colmenaMeta = {
nodeSpecialArgs.${name} = rk3588SpecialArgs; nodeSpecialArgs.${name} = rk3588SpecialArgs;
nodeNixpkgs.${name} = rk3588Pkgs; nodeNixpkgs.${name} = rk3588Pkgs;
}; };
@@ -0,0 +1,8 @@
{
lib,
outputs,
}: let
hostsNames = builtins.attrNames outputs.nixosConfigurations;
expected = lib.genAttrs hostsNames (name: name);
in
expected
@@ -0,0 +1,9 @@
{
lib,
outputs,
}:
lib.genAttrs
(builtins.attrNames outputs.nixosConfigurations)
(
name: outputs.nixosConfigurations.${name}.config.networking.hostName
)
+6 -5
View File
@@ -45,6 +45,7 @@
allSystemNames = builtins.attrNames allSystems; allSystemNames = builtins.attrNames allSystems;
nixosSystemValues = builtins.attrValues nixosSystems; nixosSystemValues = builtins.attrValues nixosSystems;
darwinSystemValues = builtins.attrValues darwinSystems; darwinSystemValues = builtins.attrValues darwinSystems;
allSystemValues = nixosSystemValues ++ darwinSystemValues;
# Helper function to generate a set of attributes for each system # Helper function to generate a set of attributes for each system
forAllSystems = func: (nixpkgs.lib.genAttrs allSystemNames func); forAllSystems = func: (nixpkgs.lib.genAttrs allSystemNames func);
@@ -52,6 +53,9 @@ in {
# add attribute sets into outputs, for debugging # add attribute sets into outputs, for debugging
debugAttrs = {inherit nixosSystems darwinSystems allSystems allSystemNames;}; debugAttrs = {inherit nixosSystems darwinSystems allSystems allSystemNames;};
# Unit Tests for all NixOS systems.
evalTests = lib.lists.all (it: it.evalTests == {}) allSystemValues;
# NixOS Hosts # NixOS Hosts
nixosConfigurations = nixosConfigurations =
lib.attrsets.mergeAttrsList (map (it: it.nixosConfigurations or {}) nixosSystemValues); lib.attrsets.mergeAttrsList (map (it: it.nixosConfigurations or {}) nixosSystemValues);
@@ -71,8 +75,8 @@ in {
) )
// { // {
# per-node nixpkgs & specialArgs # per-node nixpkgs & specialArgs
nodeNixpkgs = lib.attrsets.mergeAttrsList (map (it: it.colmena-meta.nodeNixpkgs or {}) nixosSystemValues); nodeNixpkgs = lib.attrsets.mergeAttrsList (map (it: it.colmenaMeta.nodeNixpkgs or {}) nixosSystemValues);
nodeSpecialArgs = lib.attrsets.mergeAttrsList (map (it: it.colmena-meta.nodeSpecialArgs or {}) nixosSystemValues); nodeSpecialArgs = lib.attrsets.mergeAttrsList (map (it: it.colmenaMeta.nodeSpecialArgs or {}) nixosSystemValues);
}; };
} }
// lib.attrsets.mergeAttrsList (map (it: it.colmena or {}) nixosSystemValues); // lib.attrsets.mergeAttrsList (map (it: it.colmena or {}) nixosSystemValues);
@@ -89,9 +93,6 @@ in {
# Unit Tests, Intergraded Tests, and Pre-commit checks # Unit Tests, Intergraded Tests, and Pre-commit checks
checks = forAllSystems ( checks = forAllSystems (
system: { system: {
# Unit Tests for the system
# unit-tests = allSystems.${system}.unit-tests;
pre-commit-check = pre-commit-hooks.lib.${system}.run { pre-commit-check = pre-commit-hooks.lib.${system}.run {
src = ./.; src = ./.;
hooks = { hooks = {
+7 -7
View File
@@ -18,9 +18,9 @@
nixosConfigurations = lib.attrsets.mergeAttrsList (map (it: it.nixosConfigurations or {}) dataWithoutPaths); nixosConfigurations = lib.attrsets.mergeAttrsList (map (it: it.nixosConfigurations or {}) dataWithoutPaths);
packages = lib.attrsets.mergeAttrsList (map (it: it.packages or {}) dataWithoutPaths); packages = lib.attrsets.mergeAttrsList (map (it: it.packages or {}) dataWithoutPaths);
# colmena contains some meta info, which need to be merged carefully. # colmena contains some meta info, which need to be merged carefully.
colmena-meta = { colmenaMeta = {
nodeNixpkgs = lib.attrsets.mergeAttrsList (map (it: it.colmena-meta.nodeNixpkgs or {}) dataWithoutPaths); nodeNixpkgs = lib.attrsets.mergeAttrsList (map (it: it.colmenaMeta.nodeNixpkgs or {}) dataWithoutPaths);
nodeSpecialArgs = lib.attrsets.mergeAttrsList (map (it: it.colmena-meta.nodeSpecialArgs or {}) dataWithoutPaths); nodeSpecialArgs = lib.attrsets.mergeAttrsList (map (it: it.colmenaMeta.nodeSpecialArgs or {}) dataWithoutPaths);
}; };
# colmena's per-machine data. # colmena's per-machine data.
colmena = lib.attrsets.mergeAttrsList (map (it: it.colmena or {}) dataWithoutPaths); colmena = lib.attrsets.mergeAttrsList (map (it: it.colmena or {}) dataWithoutPaths);
@@ -31,8 +31,8 @@ in
inherit data; # for debugging purposes inherit data; # for debugging purposes
# NixOS's unit tests. # NixOS's unit tests.
# unit-tests = haumea.lib.loadEvalTests { evalTests = haumea.lib.loadEvalTests {
# src = ./tests; src = ./tests;
# inputs = args; inputs = args // {inherit outputs;};
# }; };
} }
@@ -50,7 +50,7 @@
in { in {
nixosConfigurations.${name} = mylib.nixosSystem lpi4aSystemArgs; nixosConfigurations.${name} = mylib.nixosSystem lpi4aSystemArgs;
colmena-meta = { colmenaMeta = {
nodeSpecialArgs.${name} = lpi4aSpecialArgs; nodeSpecialArgs.${name} = lpi4aSpecialArgs;
nodeNixpkgs.${name} = lpi4aPkgs; nodeNixpkgs.${name} = lpi4aPkgs;
}; };
@@ -50,7 +50,7 @@
in { in {
nixosConfigurations.${name} = mylib.nixosSystem lpi4aSystemArgs; nixosConfigurations.${name} = mylib.nixosSystem lpi4aSystemArgs;
colmena-meta = { colmenaMeta = {
nodeSpecialArgs.${name} = lpi4aSpecialArgs; nodeSpecialArgs.${name} = lpi4aSpecialArgs;
nodeNixpkgs.${name} = lpi4aPkgs; nodeNixpkgs.${name} = lpi4aPkgs;
}; };
@@ -0,0 +1,8 @@
{
lib,
outputs,
}: let
hostsNames = builtins.attrNames outputs.nixosConfigurations;
expected = lib.genAttrs hostsNames (name: name);
in
expected
@@ -0,0 +1,9 @@
{
lib,
outputs,
}:
lib.genAttrs
(builtins.attrNames outputs.nixosConfigurations)
(
name: outputs.nixosConfigurations.${name}.config.networking.hostName
)
+4 -4
View File
@@ -23,8 +23,8 @@ in
inherit data; # for debugging purposes inherit data; # for debugging purposes
# NixOS's unit tests. # NixOS's unit tests.
# unit-tests = haumea.lib.loadEvalTests { evalTests = haumea.lib.loadEvalTests {
# src = ./tests; src = ./tests;
# inputs = args; inputs = args // {inherit outputs;};
# }; };
} }

Some files were not shown because too many files have changed in this diff Show More