mirror of
https://github.com/Swarsel/.dotfiles.git
synced 2025-12-06 09:07:21 +01:00
Documentation improvements
docs: Add Wiki section for (legacy) configuration snippets in case they are deleted from the main configuration docs: Add more details on matrix handling
This commit is contained in:
parent
d5a18a84d5
commit
1ddc3eb81d
4 changed files with 212 additions and 5 deletions
161
Wiki.org
Normal file
161
Wiki.org
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
#+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
|
||||
Loading…
Add table
Add a link
Reference in a new issue