diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..bbb10b8 --- /dev/null +++ b/content/about.md @@ -0,0 +1,32 @@ ++++ +title = 'About me' ++++ + +I'm **Victor Mignot** aka *dala*. + +I spend most of my time trying to acquire knowledge on computer science through small projects. +All of them are licensed under free and open-source licenses and are available on [my personal Forgejo instance](https://git.dalaran.fr). +I don't consider myself as a FOSS developer, as most of my projects are just small experiments or piece of software. +I've still not engaged myself in any notable FOSS project, but I would be glad to. +I also tend to self-host various services, and maintaining a small infrastructure at home. + +My goal behind this blog is to share my personal experiments and projects. +I'm not an expert in any particular domain. +As such, and even if I try to check every piece of information I share, I might utter false or approximate statements. +I'll gladly fix it if you find some. + +My technical interests are: +- embedded development +- the mobile Linux ecosystem +- the NixOS ecosystem (I use [Lix](https://lix.systems/) though) +- open-hardware +- trying to repair computers and mobile devices + +Here is the list of projects I would like to try to implement myself in the future +(I'll try to keep it updated on the future): +- A package manager. +- A trivial implementation of a Linux init program. +- Improve my current incomplete implementation of a [RISC-V hart emulator](https://git.dalaran.fr/dala/dremu). +- A KeePass-based password manager for Linux Mobile (as the KeePassXC interface does not scale on mobile screen). + +Avatar by: https://x.com/MaewenMitzuki diff --git a/content/posts/nixos-bpi-r4/2024-10-05-uboot-console.md b/content/posts/nixos-bpi-r4/2024-10-05-uboot-console.md index da3511e..2086342 100644 --- a/content/posts/nixos-bpi-r4/2024-10-05-uboot-console.md +++ b/content/posts/nixos-bpi-r4/2024-10-05-uboot-console.md @@ -28,7 +28,6 @@ with a single command. It would make even more sense too cross-compile my router configuration from my PC with its Ryzen 7 5800X and deploy it on the BPI-R4. However, there are three caveats with this choice: - - The Nix store usually takes some place on storage devices, so the embedded 8 GB eMMC might not be enough. But, since the BPI R4 has an integrated slot for a NVMe SSD and I have an empty 500 GB SSD available, it is way more than enough. @@ -95,7 +94,9 @@ Once again, nixpkgs make it fairly easy with its embedded cross-compilation syst For example, if we want to build any aarch64 package from any architecture (like `hello`), we can just run: ```bash -nix-build '' --arg crossSystem '(import ).systems.examples.aarch64-multiplatform' -A hello +nix-build '' \ + --arg crossSystem '(import ).systems.examples.aarch64-multiplatform' \ + -A hello ``` It is possible, because as any package in nixpkgs, `hello` is declared through a Nix recipe (a callPackage derivation) that diff --git a/default.nix b/default.nix index 2156961..4016c87 100644 --- a/default.nix +++ b/default.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, hugo, ... }: +{ stdenv, lib, hugo, dart-sass, ... }: stdenv.mkDerivation { name = "dalaran.fr"; @@ -6,6 +6,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ hugo + dart-sass ]; buildPhase = '' diff --git a/hugo.toml b/hugo.toml index c3b1791..19ec86e 100644 --- a/hugo.toml +++ b/hugo.toml @@ -6,15 +6,14 @@ copyright = "CC BY-SA 4.0" [markup] [markup.highlight] - style = "tango" + noClasses = false [params] - introduction = "Just experimenting computer stuff and sharing it." mail = "dala@dalaran.fr" - forge_url = "git.dalaran.fr" + forge_url = "https://git.dalaran.fr" fediverse_id = "@dala@dalaran.fr" - fediverse_url = "https://gts.dalaran.fr" + fediverse_url = "https://gts.dalaran.fr/dala" source_code = "https://git.dalaran.fr/dala/dalaran.fr" [permalinks] - posts = "/:year/:month/:day/:filename" + posts = ":year/:month/:day/:filename" diff --git a/layouts/partials/introduction.html b/layouts/partials/introduction.html new file mode 100644 index 0000000..603eb2e --- /dev/null +++ b/layouts/partials/introduction.html @@ -0,0 +1,14 @@ +
+ +

+ Hi, I'm Victor Mignot and welcome to this blog !
+ I'm a software developer and FOSS enthusiast. + I spend most of my free time on small computer science experiments and projects.
+ This blog is to share what I understood and learned along the way. + As such, don't expect from me any form of expertise on stuff I'll talk about. + If you find any mistake or false statement, don't hesitate to join me, and I'll gladly fix it !
+ + You can find me on the Fediverse at {{ .Site.Params.fediverse_id }} + and my projects on my personal Forgejo instance. +

+
diff --git a/shell.nix b/shell.nix index ff6183e..9fbf133 100644 --- a/shell.nix +++ b/shell.nix @@ -12,5 +12,6 @@ pkgs.mkShell { nativeBuildInputs = with pkgs; [ hugo + dart-sass ]; } diff --git a/static/logo.png b/static/logo.png new file mode 100644 index 0000000..ac029a6 Binary files /dev/null and b/static/logo.png differ diff --git a/themes/dalaran/assets/css/code.scss b/themes/dalaran/assets/css/code.scss new file mode 100644 index 0000000..c5408eb --- /dev/null +++ b/themes/dalaran/assets/css/code.scss @@ -0,0 +1,129 @@ +@use 'palette'; +@use 'font'; + +/* Background */ +.bg { + color: palette.$nord4; + background-color: #ffffff; +} + +/* PreWrapper */ +.chroma { + padding: 10px; + border-radius: 5px; + font-family: font.$code; + color: palette.$nord0; + background-color: palette.$nord6; + overflow: scroll; +} + +/* Other */ .chroma .x { } +/* Error */ .chroma .err { color:palette.$nord11 } +/* CodeLine */ .chroma .cl { } +/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit } +/* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; } +/* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; } +/* LineHighlight */ .chroma .hl { background-color:#424853 } +/* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74 } +/* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6c6f74 } +/* Line */ .chroma .line { display:flex; } +/* Keyword */ .chroma .k { color:palette.$nord9;font-weight:bold } +/* KeywordConstant */ .chroma .kc { color:palette.$nord9;font-weight:bold } +/* KeywordDeclaration */ .chroma .kd { color:palette.$nord9;font-weight:bold } +/* KeywordNamespace */ .chroma .kn { color:palette.$nord9;font-weight:bold } +/* KeywordPseudo */ .chroma .kp { color:palette.$nord9 } +/* KeywordReserved */ .chroma .kr { color:palette.$nord9;font-weight:bold } +/* KeywordType */ .chroma .kt { color:palette.$nord9 } +/* Name */ .chroma .n { } +/* NameAttribute */ .chroma .na { color:palette.$nord7 } +/* NameBuiltin */ .chroma .nb { color:palette.$nord9 } +/* NameBuiltinPseudo */ .chroma .bp { } +/* NameClass */ .chroma .nc { color:palette.$nord7 } +/* NameConstant */ .chroma .no { color:palette.$nord7 } +/* NameDecorator */ .chroma .nd { color:palette.$nord12 } +/* NameEntity */ .chroma .ni { color:palette.$nord12 } +/* NameException */ .chroma .ne { color:palette.$nord11 } +/* NameFunction */ .chroma .nf { color:palette.$nord8 } +/* NameFunctionMagic */ .chroma .fm { } +/* NameLabel */ .chroma .nl { color:palette.$nord7 } +/* NameNamespace */ .chroma .nn { color:palette.$nord7 } +/* NameOther */ .chroma .nx { } +/* NameProperty */ .chroma .py { color:palette.$nord7 } +/* NameTag */ .chroma .nt { color:palette.$nord9 } +/* NameVariable */ .chroma .nv { } +/* NameVariableClass */ .chroma .vc { } +/* NameVariableGlobal */ .chroma .vg { } +/* NameVariableInstance */ .chroma .vi { } +/* NameVariableMagic */ .chroma .vm { } +/* Literal */ .chroma .l { } +/* LiteralDate */ .chroma .ld { } +/* LiteralString */ .chroma .s { color:palette.$nord14 } +/* LiteralStringAffix */ .chroma .sa { color:palette.$nord14 } +/* LiteralStringBacktick */ .chroma .sb { color:palette.$nord14 } +/* LiteralStringChar */ .chroma .sc { color:palette.$nord14 } +/* LiteralStringDelimiter */ .chroma .dl { color:palette.$nord14 } +/* LiteralStringDoc */ .chroma .sd { color:#616e87 } + +/* LiteralStringDouble */ +.chroma .s2 { + color: palette.$nord14; + font-weight: bold; +} + +/* LiteralStringEscape */ .chroma .se { color:palette.$nord13 } +/* LiteralStringHeredoc */ .chroma .sh { color:palette.$nord14 } +/* LiteralStringInterpol */ .chroma .si { color:palette.$nord14 } +/* LiteralStringOther */ .chroma .sx { color:palette.$nord14 } + +/* LiteralStringRegex */ +.chroma .sr { + color: palette.$nord12; +} + +/* LiteralStringSingle */ +.chroma .s1 { + color: palette.$nord14; + font-weight: bold; +} + +/* LiteralStringSymbol */ .chroma .ss { color:palette.$nord14 } +/* LiteralNumber */ .chroma .m { color:palette.$nord15 } +/* LiteralNumberBin */ .chroma .mb { color:palette.$nord15 } +/* LiteralNumberFloat */ .chroma .mf { color:palette.$nord15 } +/* LiteralNumberHex */ .chroma .mh { color:palette.$nord15 } +/* LiteralNumberInteger */ .chroma .mi { color:palette.$nord15 } +/* LiteralNumberIntegerLong */ .chroma .il { color:palette.$nord15 } +/* LiteralNumberOct */ .chroma .mo { color:palette.$nord15 } + +/* Operator */ +.chroma .o { + color: palette.$nord9; +} + +/* OperatorWord */ .chroma .ow { color:palette.$nord9;font-weight:bold } + +/* Punctuation */ +.chroma .p { + color: palette.$nord3; +} + +/* Comment */ .chroma .c { color:#616e87;font-style:italic } +/* CommentHashbang */ .chroma .ch { color:#616e87;font-style:italic } +/* CommentMultiline */ .chroma .cm { color:#616e87;font-style:italic } +/* CommentSingle */ .chroma .c1 { color:#616e87;font-style:italic } +/* CommentSpecial */ .chroma .cs { color:#616e87;font-style:italic } +/* CommentPreproc */ .chroma .cp { color:palette.$nord10;font-style:italic } +/* CommentPreprocFile */ .chroma .cpf { color:palette.$nord10;font-style:italic } +/* Generic */ .chroma .g { } +/* GenericDeleted */ .chroma .gd { color:palette.$nord11 } +/* GenericEmph */ .chroma .ge { font-style:italic } +/* GenericError */ .chroma .gr { color:palette.$nord11 } +/* GenericHeading */ .chroma .gh { color:palette.$nord8;font-weight:bold } +/* GenericInserted */ .chroma .gi { color:palette.$nord14 } +/* GenericOutput */ .chroma .go { } +/* GenericPrompt */ .chroma .gp { color:palette.$nord3;font-weight:bold } +/* GenericStrong */ .chroma .gs { font-weight:bold } +/* GenericSubheading */ .chroma .gu { color:palette.$nord8;font-weight:bold } +/* GenericTraceback */ .chroma .gt { color:palette.$nord11 } +/* GenericUnderline */ .chroma .gl { } +/* TextWhitespace */ .chroma .w { } diff --git a/themes/dalaran/assets/css/font.scss b/themes/dalaran/assets/css/font.scss new file mode 100644 index 0000000..18bfa89 --- /dev/null +++ b/themes/dalaran/assets/css/font.scss @@ -0,0 +1,2 @@ +$default: sans-serif; +$code: $default; diff --git a/themes/dalaran/assets/css/main.scss b/themes/dalaran/assets/css/main.scss index 3ecec07..90948a6 100644 --- a/themes/dalaran/assets/css/main.scss +++ b/themes/dalaran/assets/css/main.scss @@ -1,58 +1,122 @@ -$font: "JetBrains Mono"; -$nord-blue: #2e3440; -$nord-frost: #5e81ac; +@use 'palette'; +@use 'font'; +@use 'code'; -@font-face { - font-family: $font; - font-style: normal; - src: local(''), - url(../fonts/JetBrainsMono-Medium.woff2) format('woff2'); -} +$header_height: 60px; html { display: flex; justify-content: center; - font-family: $font, sans-serif; - color: $nord-blue; + font-family: font.$default; + color: palette.$nord3; + background-color: palette.$nord6; +} + +header { + display: flex; + flex-direction: row; + justify-content: space-between; + background-color: palette.$nord1; + padding: 5px 50px; + width: calc(100vw - 75px); + height: $header_height; + align-items: center; + + a { + text-decoration: none; + color: palette.$nord5; + } + + .title { + margin: 0px; + } + + nav { + display: flex; + justify-content: space-evenly; + font-size: 1.2em; + font-weight: bold; + width: 200px; + + a { + padding: 10px; + border-radius: 5px; + } + + a:hover { + background-color: palette.$nord3; + }; + } } body { - max-width: 1000px; + display: flex; + flex-direction: column; + align-items: center; + margin: 0; + width: 100%; } a { - color: $nord-frost; + color: palette.$nord10; +} + +main { + max-width: 1000px; + margin: 10px 50px; + font-size: 1.1em; } footer { display: flex; - margin-top: 50px; flex-direction: column; justify-content: center; + + a { + text-decoration: none; + } } -.article-header { - margin-bottom: 40px; +article { + background-color: #ffffff; + padding: 40px 100px; + border-radius: 5px; + + h1:nth-of-type(1) { + margin-top: 0px; + } } -.article-title { - margin-bottom: 0; +.article-head { + margin: 50px 0px; + text-align: center; } .articles-list { margin-top: 20px; + + h1 { + font-size: 2.1rem; + border-bottom: 1px solid palette.$nord4; + margin-bottom: 15px; + } + + h2 { + margin: 3px 0px; + } + + time { + color: palette.$nord9; + } + + a { + text-decoration: none; + color: #7b88a1; + } + + a:hover { + text-decoration: underline; + } + } -.articles-header { - display: flex; - margin-bottom: 20px; - align-items: baseline; -} - -.articles-header h2 { - margin: 0 5px 0 0; -} - -.articles-list time { - color: #88c0d0; -} diff --git a/themes/dalaran/assets/css/palette.scss b/themes/dalaran/assets/css/palette.scss new file mode 100644 index 0000000..25a240d --- /dev/null +++ b/themes/dalaran/assets/css/palette.scss @@ -0,0 +1,27 @@ +/* + * This is the whole Nord palette as defined in https://www.nordtheme.com/docs/colors-and-palettes + */ + +/* Polar Night palette */ +$nord0: #2e3440; +$nord1: #3b4252; +$nord2: #434c5e; +$nord3: #4c566a; + +/* Snow Storm palette */ +$nord4: #d8dee9; +$nord5: #e5e9f0; +$nord6: #eceff4; + +/* Frost palette */ +$nord7: #8fbcbb; +$nord8: #88c0d0; +$nord9: #81a1c1; +$nord10: #5e81ac; + +/* Aurora palette */ +$nord11: #bf616a; +$nord12: #d08770; +$nord13: #ebcb8b; +$nord14: #a3be8c; +$nord15: #b48ead; diff --git a/themes/dalaran/layouts/_default/single.html b/themes/dalaran/layouts/_default/single.html index 470667d..6fffd27 100644 --- a/themes/dalaran/layouts/_default/single.html +++ b/themes/dalaran/layouts/_default/single.html @@ -1,12 +1,15 @@ -{{ partial "head.html" . }} -{{ partial "nav.html" . }} -
-

{{ .Title }}

- -
+{{ partial "header.html" . }}
+
+

{{ .Title }}

+ {{ if not .Date.IsZero }} + + {{ end }} +
{{ .Content }}
diff --git a/themes/dalaran/layouts/index.html b/themes/dalaran/layouts/index.html index dc0e694..e647e15 100644 --- a/themes/dalaran/layouts/index.html +++ b/themes/dalaran/layouts/index.html @@ -1,17 +1,20 @@ {{ partial "header.html" . }} -{{ partial "profile.html" . }}
+ {{ partial "introduction.html" . }}
-
-

Posts

- - [RSS] - -
+

Posts

{{ range (where .Site.RegularPages "Section" "posts") }} -
- - {{ .Title }} +
+ +

{{ .Title }}

+
+
{{ end }}
diff --git a/themes/dalaran/layouts/partials/footer.html b/themes/dalaran/layouts/partials/footer.html index b926fc7..cb4bdf1 100644 --- a/themes/dalaran/layouts/partials/footer.html +++ b/themes/dalaran/layouts/partials/footer.html @@ -1,3 +1,4 @@ +{{ if eq .Section "posts" }}

@@ -12,4 +13,5 @@

+{{ end }} diff --git a/themes/dalaran/layouts/partials/head.html b/themes/dalaran/layouts/partials/head.html index c4d53a2..cc91726 100644 --- a/themes/dalaran/layouts/partials/head.html +++ b/themes/dalaran/layouts/partials/head.html @@ -1,9 +1,10 @@ +{{ $sass_opts := dict "transpiler" "dartsass" }} {{ .Title }} - {{ $style := resources.Get "css/main.scss" | toCSS | minify | fingerprint }} + {{ $style := resources.Get "css/main.scss" | toCSS $sass_opts | minify | fingerprint }} diff --git a/themes/dalaran/layouts/partials/header.html b/themes/dalaran/layouts/partials/header.html index 3dde4f5..60b263d 100644 --- a/themes/dalaran/layouts/partials/header.html +++ b/themes/dalaran/layouts/partials/header.html @@ -1,2 +1,5 @@ {{ partial "head.html" . }} -

{{ .Site.Title }}

+
+

{{ .Site.Title }}

+ {{ partial "nav.html" . }} +
diff --git a/themes/dalaran/layouts/partials/introduction.html b/themes/dalaran/layouts/partials/introduction.html new file mode 100644 index 0000000..e69de29 diff --git a/themes/dalaran/layouts/partials/nav.html b/themes/dalaran/layouts/partials/nav.html index 06bc147..0bb72a1 100644 --- a/themes/dalaran/layouts/partials/nav.html +++ b/themes/dalaran/layouts/partials/nav.html @@ -1,3 +1,4 @@ diff --git a/themes/dalaran/layouts/partials/profile.html b/themes/dalaran/layouts/partials/profile.html deleted file mode 100644 index 75d0d0c..0000000 --- a/themes/dalaran/layouts/partials/profile.html +++ /dev/null @@ -1,38 +0,0 @@ -{{ with .Site.Params }} - -{{ end }} diff --git a/themes/dalaran/static/fonts/JetBrainsMono-Medium.woff2 b/themes/dalaran/static/fonts/JetBrainsMono-Medium.woff2 deleted file mode 100644 index 669d04c..0000000 Binary files a/themes/dalaran/static/fonts/JetBrainsMono-Medium.woff2 and /dev/null differ