Göra backuper i NixOS

Ingen behöver nog påminnas om vikten av backuper, men ibland behöver en kanske påminnas om hur en går till väga för att göra det, särskilt för smalare distributioner som NixOS.

Read More

doas.conf

Det här är vad du vill lägga in i din /etc/doas.conf:

permit persist :wheel
permit nopass keepenv root

Så, klart. Nu slapp du gå in på Ted Unangsts blogg och acceptera hens egensignerade certifikat. Varsågod.


PS. doas är som sudo, fast skapat av OpenBSD-folket i hopp om att reducera komplexiteten i sudo för att göra den säkrare. Jag använder doas när jag sköter om FreeBSD- eller OpenBSD-system.

less *is* more

Jag använder unix-programemt less i princip dagligen, men har inte läst manualsidan för den förr än väldigt nyligen – och efter detta tänkte jag nu författa en liten hyllningstext till detta mångsidiga verktyg. 🙂

På jobbet läser jag mycket loggfiler och använder less för att kunna hoppa fram och tillbaka i den, men hade gärna sluppit byta fram och tillbaka mellan tail och less då jag ibland vill se loggen glida förbi, och ibland lusläsa den.

Båda dessa går givetvis att göra utan problem i less.

  • För att söka nedåt i en fil, tryck / och det du söker.
  • För att söka uppåt i en fil, tryck ?
  • För att följa filen som med tail, tryck F (stora f), och för att avbryta Ctrl-c

En av mina favoriter är om jag söker efter en specifik term (”upgrade complete”) som borde dyka upp lite senare, så kan jag söka efter termen (/ följt av termen och Enter) och trycka Esc följt av F. Då kommer less följa filen när den uppdateras, och när raden jag tidigare sökt dyker upp så signallerar less detta och slutar följa filen.

Om jag vill hitta tillbaka till en specifik plats i filen kan jag trycka m följt av en bokstav. Vill jag sedan hitta tillbaka till samma punkt igen trycker jag ' (”enkelfnutt”) följt av samma bokstav, och vill jag hoppa fram och tillbaka mellan mina två senaste markerade punkter trycker jag bara enkelfnutt två gånger ('').

Det finns sjukt många fler sätt att använda less på, men tangentbordsgenvägarna ovan kommer hjälpa mig signifikant med tanke på hur mycket tid av min tid som tillbringas i samma program.


Som alltid finns det fantastiskt mycket fint att upptäcka om en bara tittar lite mer noga runt sig, typ i en manualsida.

tinkergate

Min router har kraschat ett antal gånger på sistone, så jag tänkte jag skulle prova att använda mig av en pyttedator för att skyffla data mellan mig och det stora, läskiga internetet. Jag kan ha sett till att ha en Tinkerboard S tillgänglig, tillsammans med ett no-name USB-baserat nätverkskort. För att göra livet lite svårare ville jag även testa att sätta upp en brandvägg med hjälp av nftables då det ändå är Framtiden(tm).

TL;DR, en Tinkerboard S är helt överdimensionerad uppgiften att skyffla data givet mina väldigt enkla brandväggsregler och överföringshastigheter i allmänhet. Köp en om du behöver den, den kostar bara några hundra kronor!

Read More

Homeassistant + Monit = ?

Jag fick för mig att testa monit då jag sett namnet dyka upp här och där på sistone, och kom på att jag verkligen behövde sätta upp monitorering för min HomeAssistant-instans. Då det var en förvånadsvärt trevlig upplevelse att sätta upp tänkte jag dela med mig hur det blev. Innehållet nedan är förresten applicerbart för att köra alla möjliga tjänster med.

Hade jag kört på ett Linux-system hade jag satt upp en systemd-tjänst istället för att använda monit, men den datorn som används för att köra HomeAssistant hemma hos mig kör OpenBSD. Om du skulle använda något av de uppskattningsvis tre distributioner som inte använder systemd är nedan relevant för dig. 🙂

Read More

Note to self: NixOS och paket från master

Jag har börjat använda NixOS på rätt många av mina datorer och jag gillar det verkligen, även om det huvudsakligen är känslomässiga argument jag använder mig av. Mer om detta i ett annat inlägg, detta inlägg är mest för att själv komma ihåg hur jag gjorde för att installera hugo (som tidigare byggde denna hemsida) från mästergrenen för nixpkgs.

nix-env -f https://github.com/NixOS/nixpkgs/archive/master.tar.gz -iA hugo

Klart.

En deklarativ uppdatering

Ett lite mer deklarativt sätt att göra det på är såhär:

environment.systemPackages =
let
  unstableSrc = pkgs.fetchFromGitHub {
    owner = "NixOS";
    repo = "nixpkgs";
    rev = "b332924e6aac9e34168f43cf7db5181bcd01f0e5";
    sha256 = "025vac8h89jvikm6c2mlrzv7p57j9rwkkpnshaq1fw63pcn8dpqf";
  };
  unstable = import unstableSrc {};
  stable = import <nixpkgs> {};
in [
  unstable.hugo
  stable.wget stable.curl
];

Det här är fortfarande så pass nytt och obekant att jag behövde rätt lång tid på mig för att klura ut det här. Jag misstänker att det även går att lösa på ett betydligt elegantare sätt, men dit har jag inte riktigt kommit än. 🙂

Det går även att göra såhär:

environment.systemPackages =
  let
    stable = import <nixpkgs> {};
    unstable = import (fetchTarball "https://nixos.org/channels/nixos-unstable/nixexpr
s.tar.xz") {};
  in [ stable.wget stable.curl unstable.hugo ];

Lite mindre stök, men även lite mindre deterministiskt vilket annars är lite av styrkan med denna distribution.

Närmare nirvana

Den här varianten är förvisso lite längre än den senaste, men känns ändå lite…bättre! Varianten nedan är givetvis stulen från någon annan vänlig själ på StackOverflow.

Namnet inom vinkeljärnen nedan ska motsvaras av namnet på en kanal, som du exempelvis kan definiera såhär:

nix-channel --add https://nixos.org/channels/nixos-unstable nixos-unstable
nix-channel --update

Och sedan, i din /etc/nixos/configuration.nix:

# Credit: https://stackoverflow.com/a/47571488
nixpkgs.config = 
{
    # Allow proprietary packages
    allowUnfree = true;

    # Create an alias for the unstable channel
    packageOverrides = pkgs: 
    {
        unstable = import <nixos-unstable> 
            { 
                # pass the nixpkgs config to the unstable alias
                # to ensure `allowUnfree = true;` is propagated:
                config = config.nixpkgs.config; 
            };
    };
};

Nu är det bara att använda unstable som prefix för de paket du vill ha från den ostadiga grenen. Om du inte kört en nix-channel --update är det värt att göra det innan du försöker dig på en nixos-rebuild dry-run, annars kommer det inte går att bygga om systemet.

Vill du förresten göra livet lite bekvämare rekommenderar jag följande:

environment.systemPackages = with pkgs; [ wget curl unstable.hugo ];

Nu slipper du även skriva prefixet för de stadiga paketen!