commit 93ec4dbe774a44e6e577e10626d79317ea8c3780 Author: Jacob Hrbek Date: Tue Nov 2 04:34:48 2021 +0100 Submitted for issue tracking diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..b9b3e3d --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,5 @@ +pipeline: + build: + image: debian + commands: + - echo "This is the build step" \ No newline at end of file diff --git a/20-editors/emacs/guix/manifest.scm b/20-editors/emacs/guix/manifest.scm new file mode 100644 index 0000000..74807ad --- /dev/null +++ b/20-editors/emacs/guix/manifest.scm @@ -0,0 +1,19 @@ +;;; Standard GNU Guix file defining packages for guix-shell environment + +(use-modules + (guix channels)) + +(list (channel + (name 'guix) + (url "https://git.savannah.gnu.org/git/guix.git") + (commit + "f1bfd9f1948a5ff336d737c0614b9a30c2bb3097") + (introduction + (make-channel-introduction + "9edb3f66fd807b096b48283debdcddccfea34bad" + (openpgp-fingerprint + "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) + +(specifications->manifest + (list "emacs@27.2" + "emacs-treemacs")) diff --git a/20-editors/emacs/guix/manifest.scm~ b/20-editors/emacs/guix/manifest.scm~ new file mode 100644 index 0000000..317ac59 --- /dev/null +++ b/20-editors/emacs/guix/manifest.scm~ @@ -0,0 +1,19 @@ +;;; Standard GNU Guix file defining packages for guix-shell environment + +(use-modules + (guix channels)) + +(list (channel + (name 'guix) + (url "https://git.savannah.gnu.org/git/guix.git") + (commit + "f1bfd9f1948a5ff336d737c0614b9a30c2bb3097") + (introduction + (make-channel-introduction + "9edb3f66fd807b096b48283debdcddccfea34bad" + (openpgp-fingerprint + "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) + +(specifications->manifest + (list "emacs@27.2" + "emacs-dired-sidebar")) diff --git a/20-editors/vscodium b/20-editors/vscodium new file mode 160000 index 0000000..1a53778 --- /dev/null +++ b/20-editors/vscodium @@ -0,0 +1 @@ +Subproject commit 1a53778deccc77ebe495b241c00a61ea7651923c diff --git a/20-editors/zz-README.md b/20-editors/zz-README.md new file mode 100644 index 0000000..5edebe5 --- /dev/null +++ b/20-editors/zz-README.md @@ -0,0 +1 @@ +Directory handling standardized editor configuration separated by solution diff --git a/25-env/development/guix/cargo-make.scm b/25-env/development/guix/cargo-make.scm new file mode 100644 index 0000000..1e4b7cb --- /dev/null +++ b/25-env/development/guix/cargo-make.scm @@ -0,0 +1,69 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright (C) 2021 Jacob Hrbek +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages cargo-make) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix build-system cargo) + #:use-module ((guix licenses) #:prefix license:)) + +(define-public rust-cargo-make-0.35 + (package + (name "rust-cargo-make") + (version "0.35.5") + (source + (origin + (method url-fetch) + (uri (crate-uri "cargo-make" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0vi0i7l01dck1swzjrj0z9033nnszisr34xdw94vnbmjjy6yvg71")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-ansi-term" ,rust-ansi-term-0.12) + ("rust-cargo-metadata" ,rust-cargo-metadata-0.14) + ("rust-ci-info" ,rust-ci-info-0.14) + ("rust-clap" ,rust-clap-2) + ("rust-colored" ,rust-colored-2) + ("rust-dirs-next" ,rust-dirs-next-2) + ("rust-duckscript" ,rust-duckscript-0.7) + ("rust-duckscriptsdk" ,rust-duckscriptsdk-0.8) + ("rust-envmnt" ,rust-envmnt-0.9) + ("rust-fern" ,rust-fern-0.6) + ("rust-fsio" ,rust-fsio-0.3) + ("rust-git-info" ,rust-git-info-0.1) + ("rust-glob" ,rust-glob-0.3) + ("rust-home" ,rust-home-0.5) + ("rust-ignore" ,rust-ignore-0.4) + ("rust-indexmap" ,rust-indexmap-1) + ("rust-log" ,rust-log-0.4) + ("rust-regex" ,rust-regex-1) + ("rust-run-script" ,rust-run-script-0.9) + ("rust-rust-info" ,rust-rust-info-0.3) + ("rust-semver" ,rust-semver-1) + ("rust-serde" ,rust-serde-1) + ("rust-serde-derive" ,rust-serde-derive-1) + ("rust-serde-ignored" ,rust-serde-ignored-0.1) + ("rust-shell2batch" ,rust-shell2batch-0.4) + ("rust-toml" ,rust-toml-0.5)))) + (home-page "https://sagiegurari.github.io/cargo-make") + (synopsis "Rust task runner and build tool.") + (description "Rust task runner and build tool.") + (license license:asl1.0))) + diff --git a/25-env/development/guix/manifest.scm b/25-env/development/guix/manifest.scm new file mode 100644 index 0000000..400831f --- /dev/null +++ b/25-env/development/guix/manifest.scm @@ -0,0 +1,22 @@ +;;; Standard GNU Guix file defining packages for guix-shell environment + +;; NOTE(Krey): For development of 'cargo-make' package, remove once merged +(load "cargo-make.scm") + +(use-modules + (guix channels)) + +(list (channel + (name 'guix) + (url "https://git.savannah.gnu.org/git/guix.git") + (commit + "f1bfd9f1948a5ff336d737c0614b9a30c2bb3097") + (introduction + (make-channel-introduction + "9edb3f66fd807b096b48283debdcddccfea34bad" + (openpgp-fingerprint + "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) + +(specifications->manifest + ;; BLOCKER(Krey): Cargo-make is not defined + (list "rust-cargo-make")) diff --git a/25-env/development/nix/default.nix b/25-env/development/nix/default.nix new file mode 100644 index 0000000..721e235 --- /dev/null +++ b/25-env/development/nix/default.nix @@ -0,0 +1,18 @@ +#!/usr/bin/env nix-shell +# NixOS shell configuration to bootstrap the required dependencies to work with the source code + +{ + nixpkgs ? builtins.fetchGit { + url = "ssh://git@github.com:NixOS/nixpkgs.git"; + ref = "nixos-21.05"; + rev = "66d6ec6ed2ddc77d08cf677cc8230db39f051793"; # 29/10/2021-EU 21:21:40 CEST +}: +with nixpkgs; + stdenv.mkDerivation { + name = "RiXotStudio"; + buildInputs = [ + cargo-make # Used to interpret `Makefile.toml` to interact with the repository + hadolint # Used to lint dockerfiles + docker # Used to run the dockerfiles + ]; + } diff --git a/25-env/development/nix/zz-README.md b/25-env/development/nix/zz-README.md new file mode 100644 index 0000000..64ac733 --- /dev/null +++ b/25-env/development/nix/zz-README.md @@ -0,0 +1 @@ +Directory defining deployment of the development environment using Nix package manager \ No newline at end of file diff --git a/25-env/development/zz-README.md b/25-env/development/zz-README.md new file mode 100644 index 0000000..d94c42d --- /dev/null +++ b/25-env/development/zz-README.md @@ -0,0 +1 @@ +Directory dedicated to solutions providing a development environment \ No newline at end of file diff --git a/25-env/testing/docker/alpine/Dockerfile b/25-env/testing/docker/alpine/Dockerfile new file mode 100644 index 0000000..9151ef7 --- /dev/null +++ b/25-env/testing/docker/alpine/Dockerfile @@ -0,0 +1,52 @@ +# Inspired by https://github.com/bmpvieira/Dockerfiles credit Bruno Viera +#@ All rights reserved (C) Jacob Hrbek in 30/10/2021-EU 01:22:40 UTC + +###! REMOVE(Krey): Scheduled for removal as alpine doesn't have `groupadd` for the script to work + +# 30/10/2021-EU 01:25:30 UTC +FROM alpine:3.14.2 +LABEL Description="Minimal Alpine Linux Image with GUIX package manager designed for testing" +# 30/10/2021-EU 01:24:54 UTC +LABEL Version="30102021012454" + +# OUTSOURCED: Guix's official way to install the package manager on non-GUIX system is using https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh +ENV guixInstall_commit="e4ed0b3969ddbe44347c468c96ccfa057b2dd256" +RUN true \ + && wget "https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh?id=$guixInstall_commit" -o guix-install.sh \ + # Add guix-install dependencies + && apk add \ + bash \ + gnupg \ + # DEPRECATED(Krey): alpine doesn't have groupadd + groupadd \ + xz \ + && chmod +x guix-install.sh \ + && exec guix-install.sh + +# ENV guixVersion="0.8.3" + +# # Get GUIX on the system +# RUN true \ +# && wget "ftp://alpha.gnu.org/gnu/guix/guix-binary-$guixVersion.x86_64-linux.tar.xz" \ +# && tar xpf guix-binary-$guixVersion.x86_64-linux.tar.xz -C guix-binary-0.8.3.x86_64-linux.tar.xz + +# # Add guix +# ENV PATH /root/.guix-profile/bin:$PATH + +# RUN cd /tmp +# RUN wget ftp://alpha.gnu.org/gnu/guix/guix-binary-0.8.3.x86_64-linux.tar.xz +# RUN tar xJf guix-binary-0.8.3.x86_64-linux.tar.xz +# RUN mv var/guix /var/ && mv gnu / +# RUN ln -sf /var/guix/profiles/per-user/root/guix-profile ~root/.guix-profile +# RUN guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub +# RUN addgroup guixbuild +# RUN addgroup guix-builder +# RUN chgrp guix-builder -R /gnu/store +# RUN chmod 1775 /gnu/store +# RUN builders=10 ;\ +# for i in `seq 1 $builders` ; do \ +# adduser -S guix-builder$i guix-builder ;\ +# adduser guix-builder$i guix-builder ;\ +# done +# CMD guix-daemon --build-users-group=guix-builder +# # RUN guix-daemon --build-users-group=guix-builder & guix pull \ No newline at end of file diff --git a/25-env/testing/docker/debian/Dockerfile b/25-env/testing/docker/debian/Dockerfile new file mode 100644 index 0000000..afa09c1 --- /dev/null +++ b/25-env/testing/docker/debian/Dockerfile @@ -0,0 +1,38 @@ +#@ All rights reserved (C) Jacob Hrbek in 30/10/2021-EU 01:22:40 UTC +#@ Copyright (C) Jacob Hrbek in 30/10/2021-EU 13:27:17 UTC released under the GPLv3 license + +### HOTFIX(Krey): The guix-install.sh requires an interactive shell blocking the deployment, this is a hotfix that requires used to invoke `./guix-install.sh` on the environment and go through with the installation + +# 30/10/2021-EU 01:44:14 UTC +FROM debian:bullseye-20211011-slim +LABEL Description="Minimal Debian Linux Image with GUIX package manager designed for testing" +# 30/10/2021-EU 01:24:54 UTC +LABEL Version="30102021012454" + +ENV DEBIAN_FRONTEND="noninteractive" + +# OUTSOURCED(Krey): Guix's official way to install the package manager on non-GUIX system is using https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh +# 30/10/2021-EU 01:24:54 UTC +ENV guixInstall_commit="e4ed0b3969ddbe44347c468c96ccfa057b2dd256" +RUN true \ + && apt-get update \ + && apt-get install --yes --quiet --no-install-recommends \ + wget \ + gnupg \ + xz-utils \ + # NOTE(Krey): We need this otherwise wget will fail with `ERROR: The certificate of '' is not trusted` + ca-certificates \ + && wget "https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh?id=$guixInstall_commit" -O guix-install.sh \ + # Add guix-install dependencies + && chmod +x guix-install.sh \ + && apt-get remove --yes \ + wget \ + gnupg \ + xz-utils \ + && apt-get autoremove --yes \ + && apt-get clean --yes \ + && rm -rf \ + /var/cache/debconf/* \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ No newline at end of file diff --git a/25-env/testing/docker/debian/disabled.Dockerfile b/25-env/testing/docker/debian/disabled.Dockerfile new file mode 100644 index 0000000..8eb9b93 --- /dev/null +++ b/25-env/testing/docker/debian/disabled.Dockerfile @@ -0,0 +1,38 @@ +#@ All rights reserved (C) Jacob Hrbek in 30/10/2021-EU 01:22:40 UTC + +### HALTED(Krey): The guix-install.sh requires an interactive shell blocking the deployment + +# 30/10/2021-EU 01:44:14 UTC +FROM debian:bullseye-20211011-slim +LABEL Description="Minimal Debian Linux Image with GUIX package manager designed for testing" +# 30/10/2021-EU 01:24:54 UTC +LABEL Version="30102021012454" + +ENV DEBIAN_FRONTEND="noninteractive" + +# OUTSOURCED(Krey): Guix's official way to install the package manager on non-GUIX system is using https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh +# 30/10/2021-EU 01:24:54 UTC +ENV guixInstall_commit="e4ed0b3969ddbe44347c468c96ccfa057b2dd256" +RUN true \ + && apt-get update \ + && apt-get install --yes --quiet --no-install-recommends \ + wget \ + gnupg \ + xz-utils \ + # NOTE(Krey): We need this otherwise wget will fail with `ERROR: The certificate of '' is not trusted` + ca-certificates \ + && wget "https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh?id=$guixInstall_commit" -O guix-install.sh \ + # Add guix-install dependencies + && chmod +x guix-install.sh \ + && sh guix-install.sh \ + && apt-get remove --yes \ + wget \ + gnupg \ + xz-utils \ + && apt-get autoremove --yes \ + && apt-get clean --yes \ + && rm -rf \ + /var/cache/debconf/* \ + /var/lib/apt/lists/* \ + /tmp/* \ + /var/tmp/* \ No newline at end of file diff --git a/25-env/testing/docker/guix/Dockerfile.rm b/25-env/testing/docker/guix/Dockerfile.rm new file mode 100644 index 0000000..52e8aad --- /dev/null +++ b/25-env/testing/docker/guix/Dockerfile.rm @@ -0,0 +1,25 @@ +#@ All rights reserved (C) Jacob Hrbek in 30/10/2021-EU 01:22:40 UTC +#@ Copyright (C) Jacob Hrbek in 30/10/2021-EU 13:27:17 UTC released under the GPLv3 license + +###! REMOVE(Krey): The provided tarball is not the whole system so this is futile design + +# 30/10/2021-EU 01:25:30 UTC +FROM alpine:3.14.2 +LABEL Description="Fetcher to fetch the tarball from GNU Guix website" +# 30/10/2021-EU 01:24:54 UTC +LABEL Version="30102021012454" + +ENV guixBinaryVersion="1.3.0" +RUN true \ + && wget "https://ftp.gnu.org/gnu/guix/guix-binary-$guixBinaryVersion.x86_64-linux.tar.xz" -O guix-binary.x86_64-linux.tar.xz \ + && mkdir result \ + && tar xpf guix-binary.x86_64-linux.tar.xz -C result \ + && rm -r guix-binary.x86_64-linux.tar.xz + +FROM scratch +# 30/10/2021-EU 01:24:54 UTC +LABEL Version="30102021012454" + +COPY --from=fetcher /result/ / + +ENTRYPOINT [ "executable" ] \ No newline at end of file diff --git a/25-env/testing/zz-README.md b/25-env/testing/zz-README.md new file mode 100644 index 0000000..9ff1637 --- /dev/null +++ b/25-env/testing/zz-README.md @@ -0,0 +1 @@ +Directory dedicated for solutions that provide a testing environment \ No newline at end of file diff --git a/25-env/zz-README.md b/25-env/zz-README.md new file mode 100644 index 0000000..ff0b576 --- /dev/null +++ b/25-env/zz-README.md @@ -0,0 +1 @@ +Directory dedicated to files used for environment definitions \ No newline at end of file diff --git a/Makefile.toml b/Makefile.toml new file mode 100644 index 0000000..7997e06 --- /dev/null +++ b/Makefile.toml @@ -0,0 +1,37 @@ + +# The Cargo-Make file used to interact with the repository + +# DNM(Krey): UNTESTED!! + + +[tasks.deploy] +description = "Command used to deploy the environment on system defined in environment variables `$HOSTNAME` and `$DOMAIN`" +category = "deployment" +# FIXME-QA(Krey): Convert this on `command` and `args` +script = ''' +#!@shell +guix system reconfigure \ + src/default.scm +''' + +[tasks.test] +description = "Test the current configuration without deploying it" +category = "deployment" +# FIXME-QA(Krey): Convert this on `command` and `args` +script = ''' +#!@shell +guix system build \ + --dry-run ./src/default.scm +''' + +### EDITORS ### +[tasks.editors-emacs] +description = "Opens emacs in the standardized environment on supported Operating Systems" +category = "editors" +script = ''' +#!@shell + +# DNR(Krey): Check for the system +guix shell \ + -m "$projectEditorsDir/emacs/guix/manifest.scm" +''' diff --git a/proposal.md b/proposal.md new file mode 100644 index 0000000..837bf01 --- /dev/null +++ b/proposal.md @@ -0,0 +1,85 @@ +# Proposal to make guix system deployment more flexible + +TLDR: Make `(operating-system)` into a "derivation capable of storing data" that can be triggered using a function `(guix-build-system)` to enable more flexible system management + +### Context and end-goal +I am trying to port my NixOS managing system (https://git.dotya.ml/OpenVolt/nyxtumops) on guix to manage my systems where the expected goal is to be able to use public git repository to manage +200 systems at once through Continuous Integration and Delivery transparently to the user to provide https://snopyta.org -like libre service provider on a federated network to which new members can be added. + +To do this i've defined a programming logic that separates the configuration per hostname and domain with file hierarchy applying configuration further by defining: +1. Global -- Configuration is applies to all systems using the solution + +e.g. /users/kreyren.scm is expected to set user kreyren to all systems + +2. Domain-wide -- Configuration applied only to the defined domain + +e.g. /domains//default.scm is expected to define configuration for the defined domain + +3. Specific to the system -- Applied only to specified system + +e.g. domains//machines//default.scm is expected to define configuration only for the defined system + +See the repository on https://git.dotya.ml/RiXotStudio/grilumops + +### The issue + +The currently used `(operating-system)` is basically a function with a lot of inputs with hard dependency on: +- bootloaders +- host-name +- file-systems +- timezone + +Making it impossible to define a modular and expression independent solution through `(load)`-ing the files e.g. + +Using command `guix system build src/default.scm` to execute following instructions: + +``` +──────────────────────────────────── + │ File: src/default.scm +──────────────────────────────────── +... + 4 │ ;;; This file is the gateway in the system managing solution +,,, + 16 │ (load "users/kreyren.scm") + 17 │ (load "domains/rixotstudio.cz/default.scm") + 18 │ + 19 │ (display "Finished")(newline) +``` + +Where the `(load "users/kreyren.scm") is important as the file is expected to define a `kreyren` user across all systems which is not possible on the current handling to do in modular and expression independent way as: + +#### 1. Requires hard-written definition + +```scm +;; First file +(define-public kreyren (name "kreyren")...) + +;; Second file +(operating-system (users (user-account (source kreyren)))) +``` + +Which breaks modularity as one file can't be used in different parts of the source code and is expression-dependent as it requires hard-written `(source kreyren)` + +#### 2. Requires variable-driven layer + +```scm +;; First file +(define-public my-username "kreyren") +... + +;; Second file +(operating-system (users (user-account (name my-username))))) +``` + +which increases the complexity to the point where it significantly influences maintenance + +#### 3. Defining a solution that constructs the (operating-system) + +```scm + +``` + +which increases the complexity to the point where the managing solution is unmaintainable and impossible to expand on in terms of features + +### Proposed solution + +Define `(operating-system)` into a "data-type capable of manipulating it's stored data" e.g. list, structure, etc.. and a function e.g. `(guix-build-system)` that reads the data from `(operating-system)` and applies it into a system build \ No newline at end of file diff --git a/proposal.md~ b/proposal.md~ new file mode 100644 index 0000000..e69de29 diff --git a/src/#generated.scm# b/src/#generated.scm# new file mode 100644 index 0000000..188c63a --- /dev/null +++ b/src/#generated.scm# @@ -0,0 +1,55 @@ +;; This is an operating system configuration generated +;; by the graphical installer. + +(use-modules (gnu)) +(use-service-modules + cups + desktop + networking + ssh + xorg) + +(operating-system + (locale "en_US.utf8") + (timezone "Europe/Prague") + (keyboard-layout (keyboard-layout "us")) + (host-name "leonid") + (users (cons* (user-account + (name "kreyren") + (comment "Jacob Hrbek") + (group "users") + (home-directory "/home/kreyren") + (supplementary-groups + '("wheel" "netdev" "audio" "video"))) + %base-user-accounts)) + (packages + (append + (list (specification->package "nss-certs")) + %base-packages)) + (services + (append + (list (service xfce-desktop-service-type) + (service openssh-service-type) + (service tor-service-type) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout)))) + %desktop-services)) + (bootloader + (bootloader-configuration + (bootloader grub-bootloader) + (targets (list "/dev/sda")) + (keyboard-layout keyboard-layout))) + (mapped-devices + (list (mapped-device + (source + (uuid "1fe117ac-fe47-4eb3-a63b-b8a34dee4ea8")) + (target "cryptroot") + (type luks-device-mapping)))) + (file-systems + (cons* (file-system + (mount-point "/") + (device "/dev/mapper/cryptroot") + (type "btrfs") + (dependencies mapped-devices)) + %base-file-systems))) diff --git a/src/default.scm b/src/default.scm new file mode 100644 index 0000000..5c2ecfc --- /dev/null +++ b/src/default.scm @@ -0,0 +1,19 @@ +;;; All Rights Reserved (C) Jacob Hrbek in 29/10/2021-EU 21:27:26 UTC +;;; TODO(Krey): Release under FLOSS once finished + +;;; This file is the gateway in the system managing solution + +(use-modules (gnu)) + +;; FIXME(Krey): Process DOMAIN + +;; FIXME(Krey): getenv returns #f if it's variable is unassigned.. i don't know how to check for false +;(if (false? (getenv "HOSTNAME")) +; (throw 1 "Environment variable 'HOSTNAME' is not set, unable to apply sufficient configuration")) + +;(define system-hostname (getenv "HOSTNAME")) + +(load "users/kreyren.scm") +(load "domains/rixotstudio.cz/default.scm") + +(display "Finished")(newline) diff --git a/src/default.scm~ b/src/default.scm~ new file mode 100644 index 0000000..5899ceb --- /dev/null +++ b/src/default.scm~ @@ -0,0 +1,19 @@ +;;; All Rights Reserved (C) Jacob Hrbek in 29/10/2021-EU 21:27:26 UTC +;;; TODO(Krey): Release under FLOSS once finished + +;;; This file is the gateway in the system managing solution + +(use-modules (gnu)) + +;; FIXME(Krey): Process DOMAIN + +;; FIXME(Krey): getenv returns #f if it's variable is unassigned.. i don't know how to check for false +;(if (false? (getenv "HOSTNAME")) +; (throw 1 "Environment variable 'HOSTNAME' is not set, unable to apply sufficient configuration")) + +;(define system-hostname (getenv "HOSTNAME")) + +(load "domains/rixotstudio.cz/default.scm") +(load "users/kreyren.scm") + +(display "Finished")(newline) diff --git a/src/domains/rixotstudio.cz/default.scm b/src/domains/rixotstudio.cz/default.scm new file mode 100644 index 0000000..2d7e841 --- /dev/null +++ b/src/domains/rixotstudio.cz/default.scm @@ -0,0 +1 @@ +(load "machines/personal/leonid/default.scm") diff --git a/src/domains/rixotstudio.cz/default.scm~ b/src/domains/rixotstudio.cz/default.scm~ new file mode 100644 index 0000000..5a10c51 --- /dev/null +++ b/src/domains/rixotstudio.cz/default.scm~ @@ -0,0 +1,4 @@ +;; DND(Krey): Figure out how to source all `*.\.scm` files in the directory +(load "users/kreyren.scm") + +(load (string-append "machines/" system-hostname "/default.scm")) \ No newline at end of file diff --git a/src/domains/rixotstudio.cz/machines/owned/Suomessa/default.scm b/src/domains/rixotstudio.cz/machines/owned/Suomessa/default.scm new file mode 100644 index 0000000..1804aed --- /dev/null +++ b/src/domains/rixotstudio.cz/machines/owned/Suomessa/default.scm @@ -0,0 +1,30 @@ +;;; This file defines a configuration for the Dreamon system +;;; Expected: +;;; - [ ] Submit Guile API to Hetzner +;;; - [ ] A. Integrate the API +;;; - [ ] B. Set up the server manually like a pleb +;;; - [ ] SSH +;;; - [ ] SSH+TOR +;;; - [ ] Bind9 +;;; - [ ] Authoritative DNS for RiXotStudio.cz domain +;;; - [ ] Tor Relay +;;; - [ ] Fira fonts +;;; - [ ] Git Repository Frontend +;;; - [ ] Gitea? +;;; - [ ] cgit? +;;; - [ ] Smithy ? +;;; - [ ] Define our own? +;;; - [ ] PrivateBin +;;; - [ ] Mastodon +;;; - [ ] Matrix Homeserver +;;; - [ ] Decide on the homeserver +;;; - [ ] Discourse +;;; - [ ] NextCloud +;;; - [ ] Invidious +;;; - [ ] Etherdoc +;;; - [ ] Hedgedoc +;;; - [ ] NextCloud +;;; - [ ] SearX +;;; - [ ] Jisi +;;; - [ ] Nitter +;;; - [ ] Bibliogram \ No newline at end of file diff --git a/src/domains/rixotstudio.cz/machines/personal/dreamon/default.scm b/src/domains/rixotstudio.cz/machines/personal/dreamon/default.scm new file mode 100644 index 0000000..e4d3a23 --- /dev/null +++ b/src/domains/rixotstudio.cz/machines/personal/dreamon/default.scm @@ -0,0 +1,11 @@ +;;; This file defines a configuration for the Dreamon system +;;; Expected: +;;; - [ ] XFCE4 +;;; - [ ] SSH +;;; - [ ] SSH+TOR +;;; - [ ] Bind9 +;;; - [ ] Docker +;;; - [ ] Tor Private Bridge +;;; - [ ] Xen +;;; - [ ] Fira fonts +;;; - [ ] Set `load-module module-echo-cancel` for pulseaudio \ No newline at end of file diff --git a/src/domains/rixotstudio.cz/machines/personal/gigatom/default.scm b/src/domains/rixotstudio.cz/machines/personal/gigatom/default.scm new file mode 100644 index 0000000..254d172 --- /dev/null +++ b/src/domains/rixotstudio.cz/machines/personal/gigatom/default.scm @@ -0,0 +1,9 @@ +;;; This file defines a configuration for the Dreamon system +;;; Expected: +;;; - [ ] XFCE4 +;;; - [ ] SSH +;;; - [ ] SSH+TOR +;;; - [ ] Bind9 +;;; - [ ] Tor Private Bridge +;;; - [ ] Fira fonts +;;; - [ ] Set `load-module module-echo-cancel` for pulseaudio \ No newline at end of file diff --git a/src/domains/rixotstudio.cz/machines/personal/leonid/default.scm b/src/domains/rixotstudio.cz/machines/personal/leonid/default.scm new file mode 100644 index 0000000..e882d28 --- /dev/null +++ b/src/domains/rixotstudio.cz/machines/personal/leonid/default.scm @@ -0,0 +1,62 @@ +;;; All Rights Reserved (C) Jacob Hrbek in 29/10/2021-EU 21:27:26 UTC +;;; TODO(Krey): Release under FLOSS once finished + +;;; This file defines a configuration for the Leonid system +;;; Expected: +;;; - [ ] XFCE4 +;;; - [ ] SSH +;;; - [ ] SSH+TOR +;;; - [ ] Bind9 +;;; - [ ] Docker +;;; - [ ] Tor Private Bridge +;;; - [ ] Xen + +(use-service-modules + cups + desktop + networking + ssh + xorg) + +(operating-system + (host-name "leonid") + (timezone "Europe/Prague") + (locale "en_US.utf8") + (keyboard-layout (keyboard-layout "us")) + + (bootloader (bootloader-configuration + (bootloader grub-bootloader) + (targets "/dev/sda") + ;; SECURITY(Krey): Our bootloader is encrypted so we can allow timeout higher than 0 + (timeout 5) + (keyboard-layout keyboard-layout))) + + (mapped-devices + (list (mapped-device + (source (uuid "1fe117ac-fe47-4eb3-a63b-b8a34dee4ea8")) + (target "cryptroot") + (type luks-device-mapping)))) + + (file-systems (cons* (file-system + (mount-point "/") + (device "/dev/mapper/cryptroot") + (type "btrfs") + (dependencies mapped-devices)) + %base-file-systems)) + + (users %base-user-accounts) + + (packages + (append + (list (specification->package "nss-certs")) + %base-packages)) + + (services + (append + (list (service xfce-desktop-service-type) + (service openssh-service-type) + (service tor-service-type) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout)))) + %desktop-services))) diff --git a/src/domains/rixotstudio.cz/machines/personal/leonid/default.scm~ b/src/domains/rixotstudio.cz/machines/personal/leonid/default.scm~ new file mode 100644 index 0000000..1e7ec75 --- /dev/null +++ b/src/domains/rixotstudio.cz/machines/personal/leonid/default.scm~ @@ -0,0 +1,86 @@ +;;; All Rights Reserved (C) Jacob Hrbek in 29/10/2021-EU 21:27:26 UTC +;;; TODO(Krey): Release under FLOSS once finished + +;;; This file defines a configuration for the Leonid system +;;; Expected: +;;; - [ ] XFCE4 +;;; - [ ] SSH +;;; - [ ] SSH+TOR +;;; - [ ] Bind9 +;;; - [ ] Docker +;;; - [ ] Tor Private Bridge +;;; - [ ] Xen + +(use-service-modules + cups + desktop + networking + ssh + xorg) + +(operating-system + (host-name "leonid") + (timezone "Europe/Prague") + (locale "en_US.utf8") + (keyboard-layout (keyboard-layout "us")) + + (bootloader (bootloader-configuration + (bootloader grub-bootloader) + (target "/dev/sda") + ;; SECURITY(Krey): Our bootloader is encrypted so we can allow timeout higher than 0 + (timeout 5)) + (keyboard-layout keyboard-layout))) + + (mapped-devices + (list (mapped-device + (source (uuid "1fe117ac-fe47-4eb3-a63b-b8a34dee4ea8")) + (target "cryptroot") + (type luks-device-mapping))) + + (file-systems (cons* (file-system + (mount-point "/") + (device "/dev/mapper/cryptroot") + (type "btrfs") + (dependencies mapped-devices)) + %base-file-systems)) + + (users (cons %base-user-accounts)) + + (packages + (append + (list (specification->package "nss-certs")) + %base-packages)) + + (services + (append + (list (service xfce-desktop-service-type) + (service openssh-service-type) + (service tor-service-type) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout)))) + %desktop-services))) + + ;(services (cons + ; (service tor-service-type + ; (tor-configuration + ; (config-file (plain-file "tor-config" + ; "HTTPTunnelPort 127.0.0.1:9250")))) + ; (modify-services %base-services + ; (guix-service-type + ; config => (guix-configuration + ; (inherit config) + ; ;; ci.guix.gnu.org's Onion service + ; (substitute-urls "https://bp7o7ckwlewr4slm.onion") + ; (http-proxy "http://localhost:9250")))))) + + ; (services (cons* + ; (service dhcp-client-service-type) + ; (service openssh-service-type + ; (openssh-configuration + ; (openssh openssh-sans-x) + ; (password-authentication? #false) + ; (authorized-keys + ; `(("janedoe" ,(local-file "janedoe_rsa.pub")) + ; ("root" ,(local-file "janedoe_rsa.pub")))))) + ;%base-services))) diff --git a/src/domains/rixotstudio.cz/machines/personal/plusik/default.scm b/src/domains/rixotstudio.cz/machines/personal/plusik/default.scm new file mode 100644 index 0000000..c99fb60 --- /dev/null +++ b/src/domains/rixotstudio.cz/machines/personal/plusik/default.scm @@ -0,0 +1,8 @@ +;;; This file defines a configuration for the Plusik system +;;; Expected: +;;; - [ ] Figure out how to install it on it +;;; - [ ] Boots? +;;; - [ ] SSH +;;; - [ ] SSH+TOR +;;; - [ ] Tor Private Bridge +;;; - [ ] Fira fonts \ No newline at end of file diff --git a/src/domains/rixotstudio.cz/machines/personal/schutr64/default.scm b/src/domains/rixotstudio.cz/machines/personal/schutr64/default.scm new file mode 100644 index 0000000..14cf805 --- /dev/null +++ b/src/domains/rixotstudio.cz/machines/personal/schutr64/default.scm @@ -0,0 +1,6 @@ +;;; This file defines a configuration for the Schutr64 system +;;; Expected: +;;; - [ ] SSH +;;; - [ ] SSH+TOR +;;; - [ ] Tor Private Bridge +;;; - [ ] Fira fonts \ No newline at end of file diff --git a/src/domains/rixotstudio.cz/users/zz-README.md b/src/domains/rixotstudio.cz/users/zz-README.md new file mode 100644 index 0000000..eb4aad0 --- /dev/null +++ b/src/domains/rixotstudio.cz/users/zz-README.md @@ -0,0 +1 @@ +for domain-specific users \ No newline at end of file diff --git a/src/domains/rixotstudio.cz/users/zz-README.md~ b/src/domains/rixotstudio.cz/users/zz-README.md~ new file mode 100644 index 0000000..e69de29 diff --git a/src/fallback.scm~ b/src/fallback.scm~ new file mode 100644 index 0000000..c52acd0 --- /dev/null +++ b/src/fallback.scm~ @@ -0,0 +1,55 @@ +;; This is an operating system configuration generated +;; by the graphical installer. + +(use-modules (gnu)) +(use-service-modules + cups + desktop + networking + ssh + xorg) + +(operating-system + (locale "en_US.utf8") + (timezone "Europe/Prague") + (keyboard-layout (keyboard-layout "us")) + (host-name "leonid") + (users (cons* (user-account + (name "kreyren") + (comment "Jacob Hrbek") + (group "users") + (home-directory "/home/kreyren") + (supplementary-groups + '("wheel" "netdev" "audio" "video"))) + %base-user-accounts)) + (packages + (append + (list (specification->package "nss-certs")) + %base-packages)) + (services + (append + (list (service xfce-desktop-service-type) + (service openssh-service-type) + (service tor-service-type) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout)))) + %desktop-services)) + (bootloader + (bootloader-configuration + (bootloader grub-bootloader) + (targets (list "/dev/sda")) + (keyboard-layout keyboard-layout))) + (mapped-devices + (list (mapped-device + (source + (uuid "1fe117ac-fe47-4eb3-a63b-b8a34dee4ea8")) + (target "cryptroot") + (type luks-device-mapping)))) + (file-systems + (cons* (file-system + (mount-point "/") + (device "/dev/mapper/cryptroot") + (type "btrfs") + (dependencies mapped-devices)) + %base-file-systems))) diff --git a/src/generated.scm~ b/src/generated.scm~ new file mode 100644 index 0000000..188c63a --- /dev/null +++ b/src/generated.scm~ @@ -0,0 +1,55 @@ +;; This is an operating system configuration generated +;; by the graphical installer. + +(use-modules (gnu)) +(use-service-modules + cups + desktop + networking + ssh + xorg) + +(operating-system + (locale "en_US.utf8") + (timezone "Europe/Prague") + (keyboard-layout (keyboard-layout "us")) + (host-name "leonid") + (users (cons* (user-account + (name "kreyren") + (comment "Jacob Hrbek") + (group "users") + (home-directory "/home/kreyren") + (supplementary-groups + '("wheel" "netdev" "audio" "video"))) + %base-user-accounts)) + (packages + (append + (list (specification->package "nss-certs")) + %base-packages)) + (services + (append + (list (service xfce-desktop-service-type) + (service openssh-service-type) + (service tor-service-type) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout)))) + %desktop-services)) + (bootloader + (bootloader-configuration + (bootloader grub-bootloader) + (targets (list "/dev/sda")) + (keyboard-layout keyboard-layout))) + (mapped-devices + (list (mapped-device + (source + (uuid "1fe117ac-fe47-4eb3-a63b-b8a34dee4ea8")) + (target "cryptroot") + (type luks-device-mapping)))) + (file-systems + (cons* (file-system + (mount-point "/") + (device "/dev/mapper/cryptroot") + (type "btrfs") + (dependencies mapped-devices)) + %base-file-systems))) diff --git a/src/tools/fallback.scm b/src/tools/fallback.scm new file mode 100644 index 0000000..1b15630 --- /dev/null +++ b/src/tools/fallback.scm @@ -0,0 +1,55 @@ +;;; Fallback system build +;;; used to fallback to a working system until the presented configuration is finished + +(use-modules (gnu)) +(use-service-modules + cups + desktop + networking + ssh + xorg) + +(operating-system + (locale "en_US.utf8") + (timezone "Europe/Prague") + (keyboard-layout (keyboard-layout "us")) + (host-name "leonid") + (users (cons* (user-account + (name "kreyren") + (comment "Jacob Hrbek") + (group "users") + (home-directory "/home/kreyren") + (supplementary-groups + '("wheel" "netdev" "audio" "video"))) + %base-user-accounts)) + (packages + (append + (list (specification->package "nss-certs")) + %base-packages)) + (services + (append + (list (service xfce-desktop-service-type) + (service openssh-service-type) + (service tor-service-type) + (set-xorg-configuration + (xorg-configuration + (keyboard-layout keyboard-layout)))) + %desktop-services)) + (bootloader + (bootloader-configuration + (bootloader grub-bootloader) + (targets (list "/dev/sda")) + (keyboard-layout keyboard-layout))) + (mapped-devices + (list (mapped-device + (source + (uuid "1fe117ac-fe47-4eb3-a63b-b8a34dee4ea8")) + (target "cryptroot") + (type luks-device-mapping)))) + (file-systems + (cons* (file-system + (mount-point "/") + (device "/dev/mapper/cryptroot") + (type "btrfs") + (dependencies mapped-devices)) + %base-file-systems))) diff --git a/src/tools/minimal/default.scm b/src/tools/minimal/default.scm new file mode 100644 index 0000000..cb4e2cd --- /dev/null +++ b/src/tools/minimal/default.scm @@ -0,0 +1,37 @@ +;;; # Minimal GUIX +;;; configuration used for development and testing + +(operating-system + (host-name "guix") + (timezone "UTC") + (locale "en_US.utf8") + + (keyboard-layout (keyboard-layout "us" "altgr-intl")) + (bootloader (bootloader-configuration + (bootloader grub-bootloader) + (target "/dev/sda") + (timeout 10)) + + (file-systems (append + (list (file-system + (mount-point "/") + (device (file-system-label "GUIX")) + (type "btrfs")) + %base-file-systems)) + + (users (cons + (user-account + (name "guix") + (group "users") + (password "guix") + (supplementary-groups '( + "wheel"))) + %base-user-accounts)) + + (packages (append (list + nss-certs) + %base-packages)) + + (services (append (list + (service openssh-service-type)) + %desktop-services)) \ No newline at end of file diff --git a/src/tools/minimal/zz-README.md b/src/tools/minimal/zz-README.md new file mode 100644 index 0000000..b7b21c6 --- /dev/null +++ b/src/tools/minimal/zz-README.md @@ -0,0 +1 @@ +Minimal system build designed for development and testing \ No newline at end of file diff --git a/src/tools/minimal/zz-README.md~ b/src/tools/minimal/zz-README.md~ new file mode 100644 index 0000000..e69de29 diff --git a/src/tools/rescue/zz-README.md b/src/tools/rescue/zz-README.md new file mode 100644 index 0000000..29129a5 --- /dev/null +++ b/src/tools/rescue/zz-README.md @@ -0,0 +1 @@ +System build designed for portable storage media (e.g. flash disk) to access the system for recovery or administrative tasks \ No newline at end of file diff --git a/src/tools/rescue/zz-README.md~ b/src/tools/rescue/zz-README.md~ new file mode 100644 index 0000000..e69de29 diff --git a/src/tools/zz-README.md b/src/tools/zz-README.md new file mode 100644 index 0000000..e1f1e9b --- /dev/null +++ b/src/tools/zz-README.md @@ -0,0 +1 @@ +Standalone purpose-designed system builds \ No newline at end of file diff --git a/src/tools/zz-README.md~ b/src/tools/zz-README.md~ new file mode 100644 index 0000000..e69de29 diff --git a/src/users/kreyren.scm b/src/users/kreyren.scm new file mode 100644 index 0000000..62529c4 --- /dev/null +++ b/src/users/kreyren.scm @@ -0,0 +1,67 @@ +;;; All Rights Reserved (C) Jacob Hrbek in 29/10/2021-EU 21:27:26 UTC + +;;; The user account of RiXotStudio's Headmaster + +;;; REPRODUCIBILITY CHECKLIST +;;; - [ ] IceCat +;;; - [ ] Extensions +;;; - [ ] DarkReader +;;; - [ ] Ublock origin +;;; - [ ] Decentraleyes +;;; - [ ] LocalCND +;;; - [ ] SponsorBlock +;;; - [ ] Don't track me Google +;;; - [ ] I don't care about cookies +;;; - [ ] ClearURLs +;;; - [ ] NoScript +;;; - [ ] Forget Me Not +;;; - [ ] Metastream Remote +;;; - [ ] Read Aloud +;;; - [ ] KeepAssXC +;;; - [ ] Theme: Dark +;;; - [ ] Privacy & Security > Delete cookies and site data when IceCat is closed +;;; - [ ] Privacy & Security > History > Always use private browsing mode +;;; - [ ] Set SOCKS5 proxy on 9050 with deployed tor +;;; - [ ] Alacritty +;;; - [ ] XFCE4 +;;; - [ ] Wallpaper: Solid Black Color +;;; - [ ] Window Manager style: Daloa +;;; - [ ] Focus follows mouse +;;; - [ ] Keybinds +;;; - [ ] Super_L + Enter = exo-open --launch TerminalEmulator +;;; - [ ] Super_L + Key_T = exo-open --launch WebBrowser +;;; - [ ] Super_L + Key_H = Hide focused window +;;; - [ ] Super_L + Key_D = dmenu_run +;;; - [ ] Super_L + Key_L = xflock4 +;;; - [ ] Alt_L + Shift_L + PrintScreen = flameshot gui +;;; - [ ] KeepAssXC +;;; - [ ] Configured to open Kreyren.kdbx by default +;;; - [ ] Enable browser integration +;;; - [ ] dmenu +;;; - [ ] Nextcloud +;;; - [ ] Credentials pre-set to open on user login and start sync +;;; - [ ] Flameshot +;;; - [ ] Sync all required dirs +;;; - [ ] Pulseaudio +;;; - [ ] Set 'load-module module-echo-cancel' to do active noise filtering +;;; - [ ] Vim +;;; - [ ] Tor +;;; - [ ] element-desktop +;;; - [ ] htop +;;; - [ ] xclip + +;; When this file is `(load)`-ed set user kreyren +(operating-system (users (cons* (user-account + (name "kreyren") + (comment "Jacob Hrbek") + (group "users") + (shell (file-append bash "/bin/bash")) + ;; DND(Krey): Figure out how to do the password + ;(password (crypt "InitialPassword!" "$6$abc")) + (supplementary-groups '( + "wheel" + "netdev" + "audio" + "video")))))) + +;; DND(Krey): Handle SSH access diff --git a/src/users/kreyren.scm~ b/src/users/kreyren.scm~ new file mode 100644 index 0000000..5ca7232 --- /dev/null +++ b/src/users/kreyren.scm~ @@ -0,0 +1,44 @@ +;;; All Rights Reserved (C) Jacob Hrbek in 29/10/2021-EU 21:27:26 UTC + +;;; The user account of RiXotStudio's Headmaster + +;;; REPRODUCIBILITY CHECKLIST +;;; - [ ] IceCat +;;; - [ ] Extension: DarkReader +;;; - [ ] Theme: Dark +;;; - [ ] Alacritty +;;; - [ ] XFCE4 +;;; - [ ] Wallpaper: Solid Black Color +;;; - [ ] Window Manager style: Daloa +;;; - [ ] Focus follows mouse +;;; - [ ] Keybinds +;;; - [ ] Super_L + Enter = exo-open --launch TerminalEmulator +;;; - [ ] Super_L + Key_T = exo-open --launch WebBrowser +;;; - [ ] Super_L + Key_H = Hide focused window +;;; - [ ] Super_L + Key_D = dmenu_run +;;; - [ ] Super_L + Key_L = xflock4 +;;; - [ ] Alt_L + Shift_L + PrintScreen = flameshot gui +;;; - [ ] KeepAssXC +;;; - [ ] Configured to open Kreyren.kdbx by default +;;; - [ ] dmenu +;;; - [ ] Nextcloud +;;; - [ ] Credentials pre-set to open on user login and start sync +;;; - [ ] Flameshot +;;; - [ ] Sync all required dirs +;;; - [ ] Pulseaudio +;;; - [ ] Set 'load-module module-echo-cancel' to do active noise filtering + +(operating-system (users (cons* (user-account + (name "kreyren") + (comment "Jacob Hrbek") + (group "users") + (shell (file-append bash "/bin/bash")) + ;; DND(Krey): Figure out how to do the password + (password (crypt "InitialPassword!" "$6$abc")) + (supplementary-groups '( + "wheel" + "netdev" + "audio" + "video")))))) + +;; DND(Krey): Handle SSH access diff --git a/src/users/zz-README.md b/src/users/zz-README.md new file mode 100644 index 0000000..94c6c50 --- /dev/null +++ b/src/users/zz-README.md @@ -0,0 +1 @@ +Directory dedicated to users that are shared across all domains diff --git a/src/zz-README.md b/src/zz-README.md new file mode 100644 index 0000000..60e05e4 --- /dev/null +++ b/src/zz-README.md @@ -0,0 +1 @@ +Reference: https://guix.gnu.org/manual/en/guix.html#User-Accounts \ No newline at end of file diff --git a/test b/test new file mode 100644 index 0000000..5899ceb --- /dev/null +++ b/test @@ -0,0 +1,19 @@ +;;; All Rights Reserved (C) Jacob Hrbek in 29/10/2021-EU 21:27:26 UTC +;;; TODO(Krey): Release under FLOSS once finished + +;;; This file is the gateway in the system managing solution + +(use-modules (gnu)) + +;; FIXME(Krey): Process DOMAIN + +;; FIXME(Krey): getenv returns #f if it's variable is unassigned.. i don't know how to check for false +;(if (false? (getenv "HOSTNAME")) +; (throw 1 "Environment variable 'HOSTNAME' is not set, unable to apply sufficient configuration")) + +;(define system-hostname (getenv "HOSTNAME")) + +(load "domains/rixotstudio.cz/default.scm") +(load "users/kreyren.scm") + +(display "Finished")(newline) diff --git a/workspace.code-workspace b/workspace.code-workspace new file mode 100644 index 0000000..9590ea2 --- /dev/null +++ b/workspace.code-workspace @@ -0,0 +1,150 @@ +{ + "folders": [ + { + "path": "." + }, + ], + "extensions": { + "recommendations": [ + "aaron-bond.better-comments", + "2gua.rainbow-brackets", + "streetsidesoftware.code-spell-checker", + "tamasfe.even-better-toml", + "markwylde.vscode-filesize", + "eamodio.gitlens", + "oderwat.indent-rainbow", + "formulahendry.code-runner", + "rubymaniac.vscode-direnv", + "huka.blogging-tool", + "jnoortheen.nix-ide", + "cweijan.vscode-office", + "luxcium.pop-n-lock-theme-vscode", + "stephen-riley.regexworkbench", + "medo64.render-crlf", + "gruntfuggly.todo-tree", + "yzhang.markdown-all-in-one", + // Used to work with guile files + "rebornix.scheme", + // Docker-relevant + "exiasr.hadolint", + "ms-azuretools.vscode-docker" + ] + }, + "settings": { + // Enable liguratures + "editor.fontLigatures": true, + "editor.fontFamily": "'Fira Code'", + "terminal.integrated.fontFamily": "'Fira Code'", + + "[jsonc]": { + "editor.tabSize": 2, + "editor.renderWhitespace": "all", + }, + + "[rust]": { + "editor.tabSize": 2, + "editor.insertSpaces": false, + "editor.wordWrap": "on", + "editor.renderWhitespace": "all", + }, + + "[scheme]": { + "editor.tabSize": 2, + "editor.insertSpaces": false, + "editor.wordWrap": "on", + "editor.renderWhitespace": "all", + }, + + "[nix]": { + "editor.tabSize": 2, + "editor.insertSpaces": false, + "editor.wordWrap": "on", + "editor.renderWhitespace": "all", + }, + + "[shellscript]": { + "editor.tabSize": 2, + "editor.insertSpaces": false, + "editor.wordWrap": "on", + "editor.renderWhitespace": "all", + }, + // cSpell + "cSpell.diagnosticLevel": "Error", + "cSpell.allowCompoundWords": true, + "cSpell.flagWords": [ + // DO + "kreyen", + // NOT + "kyren", + // MANGLE + "keyren", + // MY + "keren", + // NAME + "kreyn", + ], + "cSpell.ignoreWords": [ + "Krey", + "Hrbek", + "kreyren", + "FSFE", + "Cydia" + ], + + // Task tree + "todo-tree.general.tags": [ + "FIXME", + "TODO", + "DNM", // Do Not Merge + "DNC", // Do Not Contribute + "DNR" // Do Not Release + ], + // NOTE: Icons has to be valid codicons (https://microsoft.github.io/vscode-codicons/dist/codicon.html) + "todo-tree.highlights.customHighlight": { + "FIXME": { + "foreground": "orange", + "icon": "report", + "fontWeight": "bold" + }, + "TODO": { + "foreground": "turquoise", + "icon": "tasklist", + "fontWeight": "bold" + }, + "DOCS": { + "foreground:": "blue", + "icon": "repo", + "fontWeight": "bold" + }, + "DNM": { + "foreground": "red", + "icon": "alert", + "fontWeight": "bold" + }, + "DNR": { + "foreground": "red", + "icon": "alert", + "fontWeight": "bold" + }, + "DNC": { + "foreground": "red", + "icon": "alert", + "fontWeight": "bold" + } + }, + "todo-tree.regex.regex": "($TAGS)((\\-.*|)\\(.*\\)):", + + // Code-eol + "code-eol.highlightExtraWhitespace": true, + "code-eol.newlineCharacter": "↵", + "code-eol.crlfCharacter": "↓", + "shellcheck.run": "onSave", + "editor.wordWrap": "on", + "editor.mouseWheelZoom": true, + + // To Be Sorted + "cSpell.words": [ + "favicon" + ], + }, +} \ No newline at end of file diff --git a/xx-LICENSE.md b/xx-LICENSE.md new file mode 100644 index 0000000..5528975 --- /dev/null +++ b/xx-LICENSE.md @@ -0,0 +1,9 @@ +START OF LICENSE + +All rights reserved (C) by Jacob "Kreyren" Hrbek in 11/08/2010 the holder of the public gpg identifier `rsa4096/0x3E0E1A60C82873AD` + +END OF LICENSE + +--- + +WIP-LICENSE(Krey): TBD diff --git a/zz-README.md b/zz-README.md new file mode 100644 index 0000000..6504543 --- /dev/null +++ b/zz-README.md @@ -0,0 +1,10 @@ +# Grilumops + +Fork adaptation of RiXotStudio's Nixumops into a Guile scheme used in e.g. Guix GNU/Linux + +### Origin of the name + +Grile was a typo by @kreyren when converting the name from Nixumops to guile scheme + +### Credit +CRE1. Inspired by Julien Lepiller's configuration in https://framagit.org/tyreunom/system-configuration