Feel free to take a look around 🌷✨
https://github.com/Xe/nixos-configs
https://github.com/MatthiasBenaets/nixos-config
https://git.2li.ch/Nebucatnetzer/nixos
https://github.com/emmanuelrosa/erosanix
https://github.com/LongerHV/nixos-configuration
https://github.com/TLATER/dotfiles
https://git.eisfunke.com/config/nixos
https://nixos.org/manual/nixos/stable/
https://nixos.org/manual/nixos/stable/options
https://nixos.org/manual/nixpkgs/stable/
https://nix.dev/manual/nix/2.18/
https://nixos-and-flakes.thiscute.world
https://nixpk.gs/pr-tracker.html
https://lazamar.co.uk/nix-versions/
man configuration.nix
man home-configuration.nix
https://docs.kernel.org/admin-guide/kernel-parameters.html
The official NixOS installers don't include the necessary Broadcom wifi drivers so I have to build the installer myself with the drivers included:
nix build .#nixosConfigurations.installer.config.formats.install-iso
nix build .#nixosConfigurations.installer.config.formats.install-iso-gnome
nix build .#nixosConfigurations.installer.config.formats.install-iso-plasma
Then write I image to media with pkgs.gnome.gnome-disk-utility
with "Restore Image". The image selector won't display symlinks so copy the nix store path of the result iso and press Ctrl+L to bring up the location bar and paste the path in.
Spam Alt+R while it's booting up to get to the firmware boot menu.
Always enable "Allow Unfree" so installing proprietary drivers doesn't crash the installation process.
Afterwards mount the new root partition and clone your nixos configuration repo:
cd /run/media/<somepath>/home/stel
mkdir -p ~/.config/nixflake
git clone https://github.com/stelcodes/nixos-config ~/.config/nixflake
cd nixos-config
nixos-generate-config --show-hardware-config > hosts/<hostname>/hardware-configuration.nix
git add .
sudo nixos-rebuild switch --flake "$HOME/.config/nixflake#<hostname>"
Or you could croc the hardware configuration back to another computer:
ROOT="$1"
TEMPDIR="$(mktemp -d)"
if [ test -z "$ROOT" ]; then
echo "Please provide a root path of the mounted NixOS installation."
exit 1
fi
if ! [ test -d "$ROOT/etc/nixos" ]; then
echo "The provided path doesn't seem to be the root of a NixOS installation"
fi
nixos-generate-config --root "$ROOT" --dir "$TEMPDIR"
croc "$TEMPDIR/hardware-configuration.nix"
https://ayats.org/blog/no-flake-utils/
{
outputs = {nixpkgs, ...}: let
forAllSystems = function:
nixpkgs.lib.genAttrs [
"x86_64-linux"
"aarch64-linux"
] (system: function nixpkgs.legacyPackages.${system});
in {
packages = forAllSystems (pkgs: {
default = pkgs.callPackage ./package.nix {};
});
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {};
overlays.default = final: prev: {};
};
}
build vm image:
nixos-rebuild build-vm-with-bootloader --flake "$HOME/nixos-config#hostname"
test ssh:
QEMU_NET_OPTS='hostfwd=tcp::2222-:22' <vm_start_script>
ssh into virtual machine by getting ip address (ip a) and ssh <user>@ip
.
build digital ocean droplet image:
nix build .#nixosConfigurations.hostname.config.formats.do
Use QT_QPA_PLATFORM=xcb audacious
to see controls for adjusting plugin windows (Wayland QT issues)
Run plugin installers with something like wine plugin_installer.exe
.
Make sure yabridge knows about plugin paths:
# Common install locations
yabridge add ~/.wine/drive_c/Program Files/Common Files/VST3
yabridge sync
Values can be defined with Home Manager's dconf.settings
option.
dconf dump /org/cinnamon/ | dconf2nix | nvim -R
pkgs.gnome.dconf-editor for GUI
My favorites:
XMPP: pkgs.gajim
Signal: pkgs.signal-desktop
Might have to rm -rf ~/.config/obsidian/GPUCache
after a major update.
For iphone hotspot tethering use pkgs.libimobiledevice
and services.usbmuxd.enable
.
Probably going to run into openGL issues:
error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
One solution is to use distrobox:
distrobox create -n gamebox -i registry.fedoraproject.org/fedora-toolbox:38
distrbox enter gamebox
sudo dnf install opengl-games-utils
./run-game.sh
Another might be to use https://github.com/nix-community/nixGL but there will probably still be missing other libraries like wayland related stuff.
https://en.wikipedia.org/wiki/List_of_AMD_graphics_processing_units#Features_overview
https://en.wikipedia.org/wiki/Video_Core_Next
I have one of these: https://en.wikipedia.org/wiki/Radeon_RX_5000_series
The Xbox One controllers models 1708 and 1797 are some of best wireless controllers for linux. The package that provides their firmware is called xpadneo.
https://en.wikipedia.org/wiki/Xbox_Wireless_Controller
https://xbox.fandom.com/wiki/List_of_Xbox_Wireless_Controller_variants#Third_Generation_(2016)
https://atar-axis.github.io/xpadneo/
https://emulation.gametechwiki.com/index.php/Main_Page
My preferred setup:
Services -> Weather -> Gismeteo
Interface -> Skin -> Colors -> Concrete
Media -> Library -> Update library on startup
Media -> Music -> Show Song and Album Artists -> False
Media -> Music -> Split Albums into Discs -> False
Media -> Music -> Default provider for albums -> Local Only
Media -> Music -> Default provider for artists -> Local Only
Media -> Music -> Visualisations -> On
Player -> Music -> Visualisation -> Goom
This music sources don't purge missing tracks even when cleaned so you have to remove .kodi/userdata/Database/MyMusic.db all the time. Seems fixable? 🤔
pkgs.appimage-run
https://github.com/kitsunebishi/Wallpapers
{
specialisation = {
gnome.configuration = {
environment.gnome.excludePackages = with pkgs; [
gnome-tour
gnome-user-docs
orca
baobab
epiphany
gnome.gnome-backgrounds
gnome.gnome-color-manager
gnome.gnome-themes-extra
gnome.gnome-shell-extensions
gnome.yelp
gnome.cheese
gnome.gnome-contacts
gnome.gnome-music
gnome.gnome-system-monitor
gnome-text-editor
gnome.gnome-clocks
gnome.gnome-weather
gnome.gnome-maps
gnome.simple-scan
gnome.gnome-characters
gnome-connections
gnome.gnome-logs
gnome.totem
gnome.geary
gnome-photos
gnome.gnome-calendar
];
services.xserver = {
autorun = true;
desktopManager.gnome.enable = true;
};
};
plasma.configuration = {
environment.plasma5.excludePackages = [ ];
home-manager.users.${username}.qt.enable = lib.mkForce false;
services = {
gnome.gnome-keyring.enable = lib.mkForce false;
xserver = {
autorun = true;
desktopManager.plasma5 = {
enable = true;
# useQtScaling = true;
};
};
};
};
};
}
You need a btrfs volume and an unpartitioned disk to add to the volume. Mount the btrfs volume (let's say at /mnt/archive
). The second disk should be unformatted (let's say it's /dev/sdc
).
# Use the -f (force) flag if second disk has a partition table or partitions
# This will erase /dev/sda
sudo btrfs device add /dev/sda /mnt/archive
# Start converting the volume into a mirrored array for both the data and metadata
# This might take a LONG time depending on how much data is already present on the first disk
sudo btrfs balance start -mconvert=raid1 -dconvert=raid1 /mnt/archive
Sometimes I forget how to fold in Vim. Here's the easiest way for me to remember:
- Fold: z prefix (the "z" looks like a folded piece of paper, if you look at it from the side)
- Fold MORE: zm, zM to fold everything
- Fold REDUCE: zr, zR to fold nothing
Need to add user with smbpasswd -a my_user
manually
https://www.backblaze.com/cloud-storage/resources/hard-drive-test-data