mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 09:07:21 +01:00
docs: Add Wiki section for (legacy) configuration snippets in case they are deleted from the main configuration docs: Add more details on matrix handling
161 lines
4.6 KiB
Org Mode
161 lines
4.6 KiB
Org Mode
#+title: Useful Nix bits
|
|
|
|
This pages 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.
|
|
|
|
* Importing a NixOS module that is not in nixpkgs
|
|
|
|
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 flake.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:
|
|
|
|
#+begin_src nix configuration.nix
|
|
|
|
[...]
|
|
imports = [
|
|
[...]
|
|
(unstable + "/nixos/modules/services/matrix/mautrix-signal.nix")
|
|
];
|
|
|
|
[...]
|
|
#+end_src
|
|
|
|
* Build a firefox addon
|
|
|
|
|
|
#+begin_src nix configuration.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
|
|
|
|
#+begin_src nix configuration.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
|
|
|
|
#+begin_src nix configuration.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:
|
|
See https://drakerossman.com/blog/how-to-patch-a-package-source-on-nixos
|