Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jjba23/dotfiles
My configurations and dotfiles for Nix, Emacs, GNU/Linux and software I use
https://github.com/jjba23/dotfiles
dotfiles emacs gnu linux lisp nix nixos rice zsh
Last synced: 5 days ago
JSON representation
My configurations and dotfiles for Nix, Emacs, GNU/Linux and software I use
- Host: GitHub
- URL: https://github.com/jjba23/dotfiles
- Owner: jjba23
- License: gpl-3.0
- Created: 2024-09-01T14:52:38.000Z (2 months ago)
- Default Branch: trunk
- Last Pushed: 2024-10-17T10:08:17.000Z (21 days ago)
- Last Synced: 2024-10-19T13:40:59.232Z (19 days ago)
- Topics: dotfiles, emacs, gnu, linux, lisp, nix, nixos, rice, zsh
- Language: Shell
- Homepage:
- Size: 22.6 MB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.org
- Contributing: CONTRIBUTING.org
- License: COPYING
Awesome Lists containing this project
README
#+title: Joe's dotfiles
#+author: Josep Bigorra
#+email: [email protected]
#+options: num:nilThese are my configuration files, which also explain a lot about the tooling I use and enjoy, and can teach you a thing or two.
If you like my work, please support me by [[https://bmc.link/jjbigorra][buying me a cup of coffee ☕]] so I can continue with a lot of motivation.
This is the set of files that powers my day-to-day computing experience, so do not track my dotfiles (rolling, unstable, and untested), but feel free to use them and take inspiration from them.
#+begin_html
#+end_htmlIn some ways this is a laboratory of experimentation for my computing environment. What I do with any other program that forms part of my dotfiles is only meant to work for me. As such, I may introduce breaking changes without prior notice.
This is all to say that you understand the risks associated with tracking an ever-changing project that does not enjoy widespread testing and whose target audience is only me. If you are fine with that and are willing to assume responsibility for any possible breakage, then please feel welcome to follow along. You can always open an issue here or contribute any fixes, if you will.
Note: Screenshot below might be outdated and no longer representative of the current, everchanging state of these dotfiles.
#+begin_html
#+end_html* Using
If you are a Nix connaisseur, you will likely immediately know what to do and have no questions here.
Otherwise, for convenience, I have written some Haskell code that automates my usage of these dotfiles. See [[file:Main.hs][Main.hs]] for more.
This should be highly readable to everyone, even if you are not familiar with Haskell.An example of how to deploy this config in a fully automated fashion:
#+begin_src bash
# optionally run `cabal update` first
cabal run dotfiles -- rebuild-system
# or using cabal and GHC from the flake
nix develop -c cabal run dotfiles -- rebuild-system
#+end_src** Available tasks
- rebuild-system :: rebuild the entire NixOS + HomeManager flake config, deployed to ~/etc/nixos~
- update-system :: update the NixOS flake inputsSee my Haskell glue code (for example at [[file:Main.hs][./Main.hs]] or at [[file:buildscript][./buildscript]]) for more information about how I deploy, build and use my NixOS configuration.
* Showcase
#+begin_html
#+end_htmlThis is an ever changing setup, so only by using it can you see its latest evolutionary stage. In any case, see the folder at [[file:resources/screenshots/]] for screenshots.
See some Reddit posts where the setup is shown:
- [[https://www.reddit.com/r/unixporn/comments/1cwrpeb/hyprland_comfy_warm_computing_nixos_homemanager/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button][Comfy warm computing with NixOS, HomeManager, Emacs and Ef themes]]
- [[https://www.reddit.com/r/unixporn/comments/1dy6hrb/hyprland_nixos_catppuccin_ags_emacs_setup_zzz/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button][Hyprland NixOS - Catppuccin + Ags + Emacs setup - ZZZ inspiration (Zenless Zone Zero) - optional light mode - my main beast: Ryzen 9 7900X3D + Radeon RX 6800 XT]]
* My way of installing NixOS
I like to carry around a USB drive with me that contains a NixOS Live ISO.
I boot from it, rather using EFI than legacy bios, and then usually just choose GNOME desktop and manual partitioning, with:- a GUID/GPT partition table
- a 1024MB FAT32 partition as ESP/EFI, with the mountpoint ~/boot~ and the ~boot~ flag
- a BTRFS root filesystem, encrypted with LUKS, and with mountpoint ~/~.
- install bootloader to ~/boot~
Note you might get a warning about this type of partitioning, but you can pretty much safely ignore it as this is quite a safe way to partition.
Even safer would be to also encrypt the ~/boot~ but that brings a whole lot more challenges.
If running on virtual machines, you might need to turn off 3D acceleration for the installation process.* Per host
There are some "host-specific" configurations to be turned on or off depending on the system.
Define a file at ~./per-host.nix~ with some Nix expression like:#+begin_src nix
{ }
#+end_srcYou may specify per host settings in the following fashion:
#+begin_src nix
{
masterOptions.proprietaryNvidia.enable = true;
masterOptions.joe.lightMode.enable = true;
masterOptions.defaultSession = "gnome";
}
#+end_srcSee [[file:options.nix][options.nix file]] for more details on all possibilities.
* Why would I want *my dotfiles* in version control?
Having your dotfiles and configurations in version control allows you to backup, restore, and sync the preferences and settings for your toolbox.
Your dotfiles might be the most important files on your machine.You can then also learn from the community and spread the knowledge. Discover new tools for your toolbox and new tricks for the ona you already use.
For maximum profit and reproducibility you should use NixOS and/or the nix package manager.
* Copyright and licensing
Copyright © 2024 Josep Jesus Bigorra Algaba ([email protected])
This program 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.
This program 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 this program. If not, see .
* Project management - backlog
** TODO Improve cheatsheet and export to org/markdown automatically