mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 00:57:22 +01:00
chore: remove wiki section
I think it was not really practical for anyone
This commit is contained in:
parent
38c1ddac38
commit
3155f78cda
1 changed files with 0 additions and 564 deletions
|
|
@ -11846,567 +11846,3 @@ This sets up the =dashboard=, which is really quite useless. But, it looks cool
|
|||
|
||||
|
||||
#+end_src
|
||||
|
||||
* Wiki
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:c4c37b94-0760-4bff-9917-f1b0f023f6c3
|
||||
:END:
|
||||
|
||||
This houses a few configuration snippets that might be useful if you are new to the nix ecosystem. It will be infrequently updated as I come across things that I deem to be interesting to such a reader. Also, interesting configuration tricks will move here if I happen to obsolete them in my main configuration.
|
||||
|
||||
** Importing a NixOS module that is not in nixpkgs
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:b917d84e-5549-4966-8817-f1d947083ab9
|
||||
:END:
|
||||
|
||||
This requires changes in multiple locations. As an example we will use an early version of the mautrix-signal module by Niklas Korz.
|
||||
|
||||
1) Add the module source to =flake.nix=:
|
||||
|
||||
#+begin_src nix
|
||||
{
|
||||
inputs = {
|
||||
[...]
|
||||
# provides expressions for mautrix-signal
|
||||
nixpkgs-mautrix-signal ={
|
||||
url = github:niklaskorz/nixpkgs/nixos-23.11-mautrix-signal;
|
||||
};
|
||||
[...]
|
||||
};
|
||||
|
||||
outputs = inputs@{
|
||||
self,
|
||||
[...]
|
||||
nixpkgs-mautrix-signal,
|
||||
[...]
|
||||
}: let
|
||||
[...]
|
||||
pkgsmautrix = import nixpkgs-mautrix-signal { inherit system;
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
[...]
|
||||
in {
|
||||
nixosConfigurations = {
|
||||
matrix = nixpkgs.lib.nixosSystem {
|
||||
pkgs = pkgsmautrix;
|
||||
# this is to import a service module that is not on nixpkgs
|
||||
# this way avoids infinite recursion errors
|
||||
specialArgs.unstable = nixpkgs-mautrix-signal;
|
||||
modules = [
|
||||
[...]
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#+end_src
|
||||
|
||||
2) Import the module in the configuration (=configuration.nix=)
|
||||
|
||||
#+begin_src nix
|
||||
|
||||
[...]
|
||||
imports = [
|
||||
[...]
|
||||
(unstable + "/nixos/modules/services/matrix/mautrix-signal.nix")
|
||||
];
|
||||
|
||||
[...]
|
||||
#+end_src
|
||||
** Build a firefox addon
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:0ea4318a-ef11-4d9a-bef4-e994c5020989
|
||||
:END:
|
||||
|
||||
1) app id can be found in the manifest.json file of the .xpi (.xpi is just a normal archive)
|
||||
2) url can be found by copy url of the "add extension" button on the addon page
|
||||
3) the rest of the information is also found in the manifest.json, but might not be needed
|
||||
|
||||
In =configuration.nix=:
|
||||
|
||||
#+begin_src nix
|
||||
programs.firefox = {
|
||||
[...]
|
||||
profiles.default = {
|
||||
[...]
|
||||
extensions = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||
[...]
|
||||
(buildFirefoxXpiAddon {
|
||||
pname = ":emoji:";
|
||||
version = "0.1.3";
|
||||
addonId = "gonelf@gmail.com";
|
||||
url = "https://addons.mozilla.org/firefox/downloads/file/3365324/emojidots-0.1.3.xpi";
|
||||
sha256 = "4f7cc25c478fe52eb82f37c9ff4978dcaa3f95020398c5b184e517f6efa2c201";
|
||||
meta = with lib;
|
||||
{
|
||||
description = "emoji autocomplete anywhere on the internet";
|
||||
mozPermissions = [ "https://gist.githubusercontent.com/gonelf/d8ae3ccb7902b501c4a5dd625d4089da/raw/5eeda197ba92f8c8139e846a1225d5640077e06f/emoji_pretty.json" "tabs" "storage"];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
})
|
||||
[...]
|
||||
#+end_src
|
||||
** Define shell utility as package
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:ce7a2467-72e0-4a13-89c0-61e3b3dbb6e7
|
||||
:END:
|
||||
|
||||
In =configuration.nix= (or =home.nix=):
|
||||
|
||||
#+begin_src nix
|
||||
|
||||
home.packages = with pkgs; [ # or for NixOS environment.systemPackages = with pkgs; [
|
||||
[...]
|
||||
(pkgs.writeShellApplication {
|
||||
name = "pass-fuzzel";
|
||||
runtimeInputs = [ pkgs.pass pkgs.fuzzel ];
|
||||
text = ''
|
||||
shopt -s nullglob globstar
|
||||
|
||||
typeit=0
|
||||
if [[ $# -ge 1 && $1 == "--type" ]]; then
|
||||
typeit=1
|
||||
shift
|
||||
fi
|
||||
|
||||
export PASSWORD_STORE_DIR=~/.local/share/password-store
|
||||
prefix=''${PASSWORD_STORE_DIR-~/.local/share/password-store}
|
||||
password_files=( "$prefix"/**/*.gpg )
|
||||
password_files=( "''${password_files[@]#"$prefix"/}" )
|
||||
password_files=( "''${password_files[@]%.gpg}" )
|
||||
|
||||
password=$(printf '%s\n' "''${password_files[@]}" | fuzzel --dmenu "$@")
|
||||
|
||||
[[ -n $password ]] || exit
|
||||
|
||||
if [[ $typeit -eq 0 ]]; then
|
||||
pass show -c "$password" &>/tmp/pass-fuzzel
|
||||
else
|
||||
pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } | wtype -
|
||||
fi
|
||||
notify-send -u critical -a pass -t 1000 "Copied/Typed Password"
|
||||
'';
|
||||
})
|
||||
|
||||
[...]
|
||||
|
||||
#+end_src
|
||||
** Add program with prebuild binaries to nix store
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:f98faf13-1e3b-4ba4-9e76-cc4b98f1c308
|
||||
:END:
|
||||
|
||||
In =configuration.nix=:
|
||||
|
||||
#+begin_src nix
|
||||
|
||||
home.packages = with pkgs; [ # or for NixOS environment.systemPackages = with pkgs; [
|
||||
[...]
|
||||
(stdenv.mkDerivation {
|
||||
name = "oama";
|
||||
|
||||
src = pkgs.fetchurl {
|
||||
name = "oama";
|
||||
url = "https://github.com/pdobsan/oama/releases/download/0.13.1/oama-0.13.1-Linux-x86_64-static.tgz";
|
||||
sha256 = "sha256-OTdCObVfnMPhgZxVtZqehgUXtKT1iyqozdkPIV+i3Gc=";
|
||||
};
|
||||
|
||||
phases = [
|
||||
"unpackPhase"
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir -p $out/bin
|
||||
tar xvf $src -C $out/
|
||||
mv $out/oama-0.13.1-Linux-x86_64-static/oama $out/bin/
|
||||
'';
|
||||
|
||||
})
|
||||
|
||||
[...]
|
||||
#+end_src
|
||||
** Patch a utilty for nix paths:
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:fceba848-f065-40e0-ad3f-d16e48c24db5
|
||||
:END:
|
||||
See https://drakerossman.com/blog/how-to-patch-a-package-source-on-nixos
|
||||
** let-block for overriding a package in nixpkgs (here: replacing airsonic with airsonic-advanced)
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:f87f511f-f2be-486d-8297-4361eee6a0d8
|
||||
:END:
|
||||
|
||||
This can be useful if a module does not let you use your own package yourself.
|
||||
|
||||
In =flake.nix=:
|
||||
|
||||
#+begin_src nix
|
||||
|
||||
pkgs = import nixpkgs { inherit system;
|
||||
overlays = [ emacs-overlay.overlay
|
||||
nur.overlay
|
||||
nixgl.overlay
|
||||
(self: super: {
|
||||
airsonic = super.airsonic.overrideAttrs (_: rec {
|
||||
version = "11.0.2-kagemomiji";
|
||||
name = "airsonic-advanced-${version}";
|
||||
src = super.fetchurl {
|
||||
url = "https://github.com/kagemomiji/airsonic-advanced/releases/download/11.0.2/airsonic.war";
|
||||
sha256 = "PgErtEizHraZgoWHs5jYJJ5NsliDd9VulQfS64ackFo=";
|
||||
};
|
||||
});
|
||||
})
|
||||
];
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
|
||||
#+end_src
|
||||
** Reference configurations
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:236b7d18-d97b-4714-805f-2ca4d8b1c3c2
|
||||
:END:
|
||||
|
||||
Configurations that I have retired or are there for the general study.
|
||||
|
||||
*** non-nixos
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:60bd347b-81c5-47b2-82f7-2e6a0c888d3e
|
||||
:END:
|
||||
My Surface Pro 3, only used for on-the-go university work. Be careful when pushing large changes to this machine, as it easily runs out of memory on large switches. At the moment the only machine running non-NixOS, so special care must be taken not to break this one during updates.
|
||||
|
||||
***** Channel setup
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:63e6e03a-8c1e-45f4-aec2-7ca351eccd35
|
||||
:END:
|
||||
|
||||
This installs nixGL, which is needed to run GL apps installed through home-manager, since this machine is not using NixOS.
|
||||
|
||||
This is not super clean (because it is not fully replicative), but I do not really care.
|
||||
|
||||
1) Install nixGL:
|
||||
|
||||
#+begin_src nix
|
||||
nix-channel --add https://github.com/guibou/nixGL/archive/main.tar.gz nixgl && nix-channel --update
|
||||
nix-env -iA nixgl.auto.nixGLDefault # or replace `nixGLDefault` with your desired wrapper
|
||||
#+end_src
|
||||
|
||||
This is needed in order to use EGL. Prefix programs that use it with `nixGL`
|
||||
|
||||
***** Home manager
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:483a26b5-5a40-4417-9ffb-67cc2cf07161
|
||||
:END:
|
||||
|
||||
Special things to note here: We are running xcape to allow =CAPS= to act as =CTRL= and =ESC=. Also we are using =nixGL= in most places.
|
||||
|
||||
#+begin_src nix
|
||||
|
||||
{ config, pkgs, lib, fetchFromGitHub, ... }:
|
||||
|
||||
{
|
||||
programs.home-manager.enable = true;
|
||||
home.username = "leons";
|
||||
home.homeDirectory = "/home/leons";
|
||||
|
||||
home.stateVersion = "23.05"; # Please read the comment before changing.
|
||||
|
||||
stylix.image = ../../wallpaper/surfacewp.png;
|
||||
<<theme>>
|
||||
|
||||
nixpkgs = {
|
||||
config = {
|
||||
allowUnfree = true;
|
||||
allowUnfreePredicate = _: true;
|
||||
};
|
||||
};
|
||||
services.xcape = {
|
||||
enable = true;
|
||||
mapExpression = {
|
||||
Control_L = "Escape";
|
||||
};
|
||||
};
|
||||
#keyboard config
|
||||
home.keyboard.layout = "us";
|
||||
|
||||
sops.age.sshKeyPaths = [ "/etc/ssh/sops" ];
|
||||
|
||||
# waybar config
|
||||
programs.waybar.settings.mainBar.cpu.format = "{icon0} {icon1} {icon2} {icon3}";
|
||||
|
||||
programs.waybar.settings.mainBar.temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon3/temp3_input";
|
||||
programs.waybar.settings.mainBar.modules-right = ["custom/outer-left-arrow-dark" "mpris" "custom/left-arrow-light"
|
||||
"network"
|
||||
"custom/left-arrow-dark"
|
||||
"pulseaudio"
|
||||
"custom/left-arrow-light"
|
||||
"battery"
|
||||
"custom/left-arrow-dark"
|
||||
"temperature"
|
||||
"custom/left-arrow-light"
|
||||
"disk"
|
||||
"custom/left-arrow-dark"
|
||||
"memory"
|
||||
"custom/left-arrow-light"
|
||||
"cpu"
|
||||
"custom/left-arrow-dark"
|
||||
"tray"
|
||||
"custom/left-arrow-light"
|
||||
"clock#2"
|
||||
"custom/left-arrow-dark"
|
||||
"clock#1" ];
|
||||
services.blueman-applet.enable = true;
|
||||
home.packages = with pkgs; [
|
||||
# nixgl.auto.nixGLDefault
|
||||
evince
|
||||
# nodejs_20
|
||||
|
||||
# messaging
|
||||
# we use gomuks for RAM preservation, but keep schildi around for files and images
|
||||
];
|
||||
|
||||
programs.zsh.initExtra = "
|
||||
export GPG_TTY=\"$(tty)\"
|
||||
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
|
||||
gpgconf --launch gpg-agent
|
||||
";
|
||||
|
||||
# sway config
|
||||
wayland.windowManager.sway= {
|
||||
config = rec {
|
||||
input = {
|
||||
"*" = {
|
||||
xkb_layout = "us";
|
||||
xkb_options = "ctrl:nocaps,grp:win_space_toggle";
|
||||
xkb_variant = "altgr-intl";
|
||||
};
|
||||
"type:touchpad" = {
|
||||
dwt = "enabled";
|
||||
tap = "enabled";
|
||||
natural_scroll = "enabled";
|
||||
middle_emulation = "enabled";
|
||||
};
|
||||
};
|
||||
|
||||
output = {
|
||||
eDP-1 = {
|
||||
mode = "2160x1440@59.955Hz";
|
||||
scale = "1";
|
||||
bg = "~/.dotfiles/wallpaper/surfacewp.png fill";
|
||||
};
|
||||
};
|
||||
|
||||
keybindings = let
|
||||
inherit (config.wayland.windowManager.sway.config) modifier;
|
||||
in {
|
||||
"${modifier}+F2" = "exec brightnessctl set +5%";
|
||||
"${modifier}+F1"= "exec brightnessctl set 5%-";
|
||||
"${modifier}+n" = "exec sway output eDP-1 transform normal, splith";
|
||||
"${modifier}+Ctrl+p" = "exec nixGL wl-mirror eDP-1";
|
||||
"${modifier}+t" = "exec sway output eDP-1 transform 90, splitv";
|
||||
"${modifier}+XF86AudioLowerVolume" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
|
||||
"${modifier}+XF86AudioRaiseVolume" = "exec grim -g \"$(slurp)\" -t png - | wl-copy -t image/png";
|
||||
};
|
||||
|
||||
startup = [
|
||||
{ command = "sleep 60 && nixGL nextcloud --background";}
|
||||
# { command = "sleep 60 && nixGL spotify";}
|
||||
{ command = "sleep 60 && nixGL vesktop --start-minimized -enable-features=UseOzonePlatform -ozone-platform=wayland";}
|
||||
# { command = "sleep 60 && nixGL schildichat-desktop --hidden";}
|
||||
{ command = "sleep 60 && nixGL syncthingtray --wait"; }
|
||||
{ command = "sleep 60 && ANKI_WAYLAND=1 nixGL anki";}
|
||||
{ command = "nm-applet --indicator";}
|
||||
{ command = "sleep 60 && OBSIDIAN_USE_WAYLAND=1 nixGL obsidian -enable-features=UseOzonePlatform -ozone-platform=wayland";}
|
||||
];
|
||||
|
||||
keycodebindings = {
|
||||
"124" = "exec systemctl suspend";
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = "
|
||||
exec swaymsg input 7062:6917:NTRG0001:01_1B96:1B05 map_to_output eDP-1
|
||||
exec swaymsg input 7062:6917:NTRG0001:01_1B96:1B05_Stylus map_to_output eDP-1
|
||||
";
|
||||
};
|
||||
}
|
||||
|
||||
#+end_src
|
||||
*** nixos
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:3f747cb3-bf83-4cb6-8fe4-6a4865472eeb
|
||||
:END:
|
||||
***** Onett (Lenovo Y510P)
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:80753b6b-667e-4b04-a260-a3b5c73fb624
|
||||
:END:
|
||||
|
||||
My laptop, sadly soon to be replaced by a new one, since most basic functions are stopping to work lately.
|
||||
|
||||
****** NixOS
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:6f3fe0dc-a857-440a-b4bd-c32fd9024b8b
|
||||
:END:
|
||||
|
||||
#+begin_src nix
|
||||
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
{
|
||||
|
||||
<<wrap>>
|
||||
|
||||
services = {
|
||||
greetd.settings.initial_session.user ="swarsel";
|
||||
xserver.videoDrivers = ["nvidia"];
|
||||
};
|
||||
|
||||
|
||||
hardware = {
|
||||
nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = true;
|
||||
prime = {
|
||||
intelBusId = "PCI:0:2:0";
|
||||
nvidiaBusId = "PCI:1:0:0";
|
||||
sync.enable = true;
|
||||
};
|
||||
};
|
||||
pulseaudio.configFile = pkgs.runCommand "default.pa" {} ''
|
||||
sed 's/module-udev-detect$/module-udev-detect tsched=0/' \
|
||||
${pkgs.pulseaudio}/etc/pulse/default.pa > $out
|
||||
'';
|
||||
bluetooth.enable = true;
|
||||
};
|
||||
|
||||
stylix.image = ../../wallpaper/lenovowp.png;
|
||||
<<theme>>
|
||||
|
||||
boot.loader.grub = {
|
||||
enable = true;
|
||||
device = "/dev/sda";
|
||||
useOSProber = true;
|
||||
};
|
||||
|
||||
networking.hostName = "onett"; # Define your hostname.
|
||||
networking.enableIPv6 = false;
|
||||
|
||||
users.users.swarsel = {
|
||||
isNormalUser = true;
|
||||
description = "Leon S";
|
||||
extraGroups = [ "networkmanager" "wheel" "lp"];
|
||||
packages = with pkgs; [];
|
||||
};
|
||||
|
||||
system.stateVersion = "23.05"; # Did you read the comment?
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
];
|
||||
|
||||
|
||||
}
|
||||
|
||||
#+end_src
|
||||
****** Home Manager
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:7b76c914-c9b2-47b5-ba89-c501d6391110
|
||||
:END:
|
||||
|
||||
#+begin_src nix
|
||||
|
||||
{ config, pkgs, lib, fetchFromGitHub, ... }:
|
||||
|
||||
{
|
||||
|
||||
<<gpgagent>>
|
||||
|
||||
home = {
|
||||
username = "swarsel";
|
||||
homeDirectory = "/home/swarsel";
|
||||
stateVersion = "23.05"; # Please read the comment before changing.
|
||||
keyboard.layout = "de";
|
||||
packages = with pkgs; [
|
||||
];
|
||||
};
|
||||
|
||||
sops.age.sshKeyPaths = [ "${config.home.homeDirectory}/.ssh/sops" ];
|
||||
|
||||
# # waybar config
|
||||
programs.waybar.settings.mainBar = {
|
||||
cpu.format = "{icon0} {icon1} {icon2} {icon3} {icon4} {icon5} {icon6} {icon7}";
|
||||
temperature.hwmon-path = "/sys/devices/platform/coretemp.0/hwmon/hwmon3/temp3_input";
|
||||
};
|
||||
<<waybarlaptop>>
|
||||
|
||||
services.blueman-applet.enable = true;
|
||||
|
||||
wayland.windowManager.sway= {
|
||||
config = rec {
|
||||
input = {
|
||||
"1:1:AT_Translated_Set_2_keyboard" = {
|
||||
xkb_layout = "us";
|
||||
xkb_options = "grp:win_space_toggle";
|
||||
# xkb_options = "ctrl:nocaps,grp:win_space_toggle";
|
||||
xkb_variant = "altgr-intl";
|
||||
};
|
||||
"2362:33538:ipad_keyboard_Keyboard" = {
|
||||
xkb_layout = "us";
|
||||
xkb_options = "altwin:swap_lalt_lwin,ctrl:nocaps,grp:win_space_toggle";
|
||||
xkb_variant = "colemak_dh";
|
||||
};
|
||||
"36125:53060:splitkb.com_Kyria_rev3" = {
|
||||
xkb_layout = "us";
|
||||
xkb_variant = "altgr-intl";
|
||||
};
|
||||
|
||||
"type:touchpad" = {
|
||||
dwt = "enabled";
|
||||
tap = "enabled";
|
||||
natural_scroll = "enabled";
|
||||
middle_emulation = "enabled";
|
||||
};
|
||||
};
|
||||
|
||||
output = {
|
||||
eDP-1 = {
|
||||
mode = "1920x1080";
|
||||
scale = "1";
|
||||
bg = "~/.dotfiles/wallpaper/lenovowp.png fill";
|
||||
position = "1920,0";
|
||||
};
|
||||
VGA-1 = {
|
||||
mode = "1920x1080";
|
||||
scale = "1";
|
||||
bg = "~/.dotfiles/wallpaper/lenovowp.png fill";
|
||||
position = "0,0";
|
||||
};
|
||||
};
|
||||
|
||||
keybindings = let
|
||||
inherit (config.wayland.windowManager.sway.config) modifier;
|
||||
in {
|
||||
"${modifier}+F2" = "exec brightnessctl set +5%";
|
||||
"${modifier}+F1"= "exec brightnessctl set 5%-";
|
||||
"XF86MonBrightnessUp" = "exec brightnessctl set +5%";
|
||||
"XF86MonBrightnessDown"= "exec brightnessctl set 5%-";
|
||||
"${modifier}+Ctrl+p" = "exec wl-mirror eDP-1";
|
||||
"XF86HomePage" = "exec wtype -P Escape -p Escape";
|
||||
"${modifier}+w" = "exec \"bash ~/.dotfiles/scripts/checkschildi.sh\"";
|
||||
};
|
||||
keycodebindings = {
|
||||
"94" = "exec wtype c";
|
||||
"Shift+94" = "exec wtype C";
|
||||
"Ctrl+94" = "exec wtype -M ctrl c -m ctrl";
|
||||
"Ctrl+Shift+94" = "exec wtype -M ctrl -M shift c -m ctrl -m shift";
|
||||
};
|
||||
|
||||
startup = [
|
||||
<<startupnixos>>
|
||||
];
|
||||
};
|
||||
|
||||
extraConfig = "
|
||||
";
|
||||
};
|
||||
}
|
||||
|
||||
#+end_src
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue