Hey, I’m Jonatan Wincent

$ whoami
I’m a third year student at the Masters of Science Programme in Computing Science and Engineering at Umeå University. Some of my biggest interests are software development, Linux, motorcycling, snowmobiling and learning new things.

$ man jonwin.se
On this website I intend to document different projects that I work on and share my thoughts about them.

Visit my GitHub profile to view the source code for this page and all of my other projects.

(updated 2024-11-01)
Screenshot of the WM

❄️ NixOS Config

Welcome to my NixOS configuration, you can find the repo here. ✨ Features 🖥️ Multiple Hosts Support: Easy to configure for different hosts. 🪟 Hyprland + Waybar: Highly configurable window compositor on Wayland. 🏠 Home Manager Integration: Manage user-specific configurations with ease. 🐚 Zsh + Starship: Efficient shell setup with lots of aliases. 👻 Ghostty: Fast and feature-rich terminal emulator. ✍️ Neovim: The best editor. 🔑 YubiKey Login: Fast and secure authentication with YubiKeys. 📝 Notes I’ve chosen to tightly integrate Home Manager and NixOS within the same file and directory structure, rather than separating them into different files and folders. This keeps the configuration more cohesive but comes with some important caveats: Home Manager options must always be written inside a: home-manager.users.${user} = { ... }; block within your configuration files. Home Manager attributes cannot be imported at the top level (outside of the home-manager.users.<user> block). For example: { pkgs, user, ... }: { home-manager.users.${user} = { config, ... }: { programs.rofi = { ... theme = let inherit (config.lib.formats.rasi) mkLiteral; in { ... }; }; }; } Here, note that config is only available within the home-manager.users.<user> block—trying to import Home Manager attributes directly at the top level will fail. This design choice reduces duplication and keeps related configurations together, but it requires extra attention to module scoping and to distinguishing between NixOS and Home Manager settings. If you prefer a more typical separated configuration structure (e.g. fully declarative Home Manager setup using home.nix per host), check out Andrey0189’s NixOS Config Reborn, which this repository was briefly based on before the latest refactor. 🚀 Installation To get started with this setup, follow these steps: ...

2025-06-08 · (updated 2025-06-10) · 3 min

This Website

I created this website to have a single place to document all my projects and share them. It will also serve as a kind of portfolio that shows what things I have worked on and learned. This Website This website was build with Hugo which is a open-source static site generator, Hugo allows you to generate posts like this one from markdown files. I use the PaperMod theme for my site, it is a clean and simple theme with many useful features. I have made one simple modification to the theme which is to add a last modified date like described by Jackson Lucky. The date will only appear if the post has been modified since it was posted and it will automatically update using the files Git history to know when the post was last modified. ...

2024-05-03 · (updated 2025-06-08) · 3 min

Build package from Nixpkgs PR

This post aims to explain how to build and try packages from nixpkgs pull requests. You might for example want to try a new package that has not been merged yet or try some bug fixes. There are multiple ways of doing this, below are two different methods. In both cases we first need to clone nixpkgs and navigate into this directory git clone [email protected]:NixOS/nixpkgs.git cd nixpkgs nix-build This approach is better if you want to install and use the package for a while. ...

2024-11-23 · 2 min
Image of the two halves of the keyboard

Keyboard

I am planing to build a custom split, ergonomic, ortholinear, curved keyboard like the dactyl manuform or charybdis. My keyboard has been configured with the beta version of the Cosmos keyboard configurator found here. I will update this page as my plans change and when I have built it. Configuration Right half Left half Components 2 Pro Micro USB-C Controller 62 Kailh Choc Switches 60 1u Kailh Choc Keycaps 2 1u Homing Kailh Choc Keycaps Cirque 40 mm Trackpad Wire for Trackpad OLED 0.91" 128x32 62 1N4148 Diodes TRRS Cable Set of TRRS Jacks 2 M3 x 8mm Screw 18 M3 x 6mm Screw 20 M3 Screw Inserts 8 Rubber Feet Wires 3D Printed: Case/Shell Bottom Plate Microcontroller Holder

2024-06-24 · 1 min
Picture of my dwm

DWM (Dynamic Window Manager)

“dwm is an extremely fast, small, and dynamic window manager for X.” - suckless.org This post talks about my dwm configuration and the changes I have made to it. I have installed quite a few patches and made some modifications of my own, I have also added a flake.nix to make installation on NixOS really simple. You can view the source code in my GitHub repository here. Patches Below is a list of all the patches I have installed with a short explanation of each patch, click the links to view the patches on suckless.org. ...

2024-05-30 · 5 min
TKL keyboard with keys removed and moved around

Keyboard Layouts

My many attempts at creating a more optimal keyboard layout for my self. So far all of the layouts have been used on a normal TKL keyboard, but with the latest layouts the goal has been to create a layout that would work on a Charybdis by Bastard Keyboards. See the cover picture for how the keys have been moved around to make the latest layout work on a normal keyboard. ...

2024-05-16 · (updated 2024-06-24) · 5 min
Image of st window

St (simple terminal)

“st is a simple terminal implementation for X” - suckless.org. This is my configuration of the suckless terminal st. I have installed a few different patches and made some configuration changes to improve the usability and look of the terminal. Try My Config To try my configuration on any system with Nix installed run the following: nix run github:jonwin1/st-jonwin Patches Srollback: Allow scrolling back through the terminal output using keybinds or the mouse wheel. st-scrollback-20210507-4536f46 st-scrollback-reflow-20230607-211964d st-scrollback-mouse-20220127-2c5edf2 st-scrollback-mouse-altscreen-20220127-2c5edf2 Boxdraw: Custom rendering of some characters for drawing of boxes etc. with gapless alignment. st-boxdraw-v2-0.8.5 Alpha st-alpha-20220206-0.8.5 Alpha Focus Highlight st-focus-20200731-patch_alpha Ligatures: Adds proper drawing of ligatures. A combination of st-ligatures-alpha-scrollback-0.9 and st-ligatures-boxdraw-0.9, see st-ligatures-boxdraw-alpha-scrollback-2024-04-24-0.9.diff Visual bell 2: Adds a small visual bell in the top right of the terminal. st-visualbell2-basic-2020-05-13-045a0fa st-visualbell2-enhanced-2020-05-13-045a0fa Newterm: Allows spawning a new st terminal with the same working directory as the current st instance. st-newterm-0.9 Copyurl: Allows copying URLs from the terminal with keybinds. st-copyurl-multiline-20230406-211964d Open copied url: Allows opening a url from the clipboard in a browser. st-openclipboard-20220217-0.8.5 Other Changes I have changed the font to FiraCode Nerd Font to add support for ligatures and nerd font icons. I have also changed the colors to colors from the Nord theme. ...

2024-05-15 · (updated 2024-05-23) · 2 min