27

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

13

Hi!

I've ran into an issue with nix develop shells.

My setup:

  • Nix Darwin (macos)
  • Custom TLS certificates installed via nix darwin

Everything works as expected with the installed certificates, but as soon as I enter into a development shell with nix develop, the certificates are not available and thus, I get TLS errors that break whatever I'm doing in the dev shell. If I use an impure development shell, the issue disappears.

Is there a way to use pure nix develop shells which respect the installed certificates?

19

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

7

Hi! I would like to host a transparent proxy for cache.nixos.org on my local kubernetes cluster.

I took the following NGINX config https://nixos.wiki/wiki/FAQ/Private_Cache_Proxy and created all the folders on the mounted storage.

This is the kubernetes deployment:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: nix-cache-volume
spec:
  capacity:
    storage: 500Gi
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/k8s/nix-cache" # Needs exists before PV is created!
  persistentVolumeReclaimPolicy: Retain
***
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: nix-cache-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: manual
  resources:
    requests:
      storage: 500Gi
***
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nix-cache
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nix-cache
  template:
    metadata:
      labels:
        app: nix-cache
        name: nix-cache
    spec:
      volumes:
        - name: nix-cache-storage
          persistentVolumeClaim:
            claimName: nix-cache-pvc
        - name: nix-cache-config
          configMap:
            name: nix-cache-config
      containers:
        - name: nix-cache
          image: nginx:1.27.0 
          ports:
            - containerPort: 80
          volumeMounts:
            - name: nix-cache-storage
              mountPath: /data
            - name: nix-cache-config
              mountPath: /etc/nginx/sites-available/default
          resources:
            limits:
              memory: "512Mi"
              cpu: "300m"
            requests:
              memory: "256Mi"
              cpu: "200m"
***
apiVersion: v1
kind: Service
metadata:
  name: nix-cache
spec:
  selector:
    app: nix-cache
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
***
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nix-cache-ingress
  annotations:
    traefik.ingress.kubernetes.io/router.tls: "true"
spec:
  rules:
    - host: "nix-cache.raspi.home"
      http:
        paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: nix-cache
                port:
                  number: 80
  tls:
    - secretName: nix-cache-raspi-home-tls
      hosts:
        - "nix-cache.raspi.home"
***
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: nix-cache.raspi.home
spec:
  commonName: nix-cache.raspi.home
  dnsNames:
    - "nix-cache.raspi.home"
  secretName: nix-cache-raspi-home-tls
  issuerRef:
    name: ca-issuer
    kind: ClusterIssuer
***
apiVersion: v1
kind: ConfigMap
metadata:
  name: nix-cache-config
data:
  nginx.conf: |
    server {
      listen 80;
      server_name nix-cache.raspi.home;

      location ~ ^/nix-cache-info {
        proxy_store        on;
        proxy_store_access user:rw group:rw all:r;
        proxy_temp_path    /data/nginx/nix-cache-info/temp;
        root               /data/nginx/nix-cache-info/store;

        proxy_set_header Host "cache.nixos.org";
        proxy_pass https://cache.nixos.org;
      }

      location ~^/nar/.+$ {
        proxy_store        on;
        proxy_store_access user:rw group:rw all:r;
        proxy_temp_path    /data/nginx/nar/temp;
        root               /data/nginx/nar/store;

        proxy_set_header Host "cache.nixos.org";
        proxy_pass https://cache.nixos.org;
      }
    }

To use the cache I added it to the substituters.

  nix.settings.substituters = [
    "https://nix-cache.raspi.home/"
  ];

But when I try to use it, get the error:

# Trigger a download
nix develop nixpkgs#just
# Error message
warning: 'https://nix-cache.raspi.home' does not appear to be a binary cache

In the logs of the NGINX I see the following error:

2024/08/03 12:09:30 [error] 31#31: *3 open() "/usr/share/nginx/html/nix-cache-info" failed (2: No such file or directory), client: 10.42.2.7, server: localhost, request: "GET /nix-cache-info HTTP/1 │
│ 10.42.2.7 - - [03/Aug/2024:12:09:30 +0000] "GET /nix-cache-info HTTP/1.1" 404 153 "-" "curl/8.8.0 Nix/2.18.5" "10.42.2.1"                                                                             │
│ 10.42.2.7 - - [03/Aug/2024:12:09:30 +0000] "PUT /nix-cache-info HTTP/1.1" 405 157 "-" "curl/8.8.0 Nix/2.18.5" "10.42.2.1"    

Any ideas whats wrong? I'm neither an nix nor an nginx expert, so maybe it is something really simple but I cannot figure it out.

13

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

[-] secana@programming.dev 10 points 2 months ago

I ported the frontend for https://kellnr.io from vuex to pinia, which makes the code to hold state in the frontend much cleaner.

15

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

36
20

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

15

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

16

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

[-] secana@programming.dev 9 points 3 months ago

I release a new version of https://kellnr.io with some bug fixes and updated Docker images (Ubuntu 24.04 base).

24

Hi rustaceans! What are you working on this week? Did you discover something new, you want to share?

8
submitted 3 months ago by secana@programming.dev to c/nix@programming.dev

Hi,

I want to sort my bookmarks in Firefox with home-manager into folders, but fail.

Simple example:

firefox = {
      profiles."user" = {
        bookmarks = [
          {
            name = "Nix";
            toolbar = true;
            bookmarks = [
              {
                name = "NixOS Search";
                url = "https://search.nixos.org/packages";
              }
              {
                name = "NixOS Options";
                url = "https://nixos.org/manual/nixos/unstable/options";
              }
              {
                name = "Home-Manager Options";
                url = "https://nix-community.github.io/home-manager/options.xhtml";
              }
              {
                name = "Home-Manager Options Search";
                url = "https://home-manager-options.extranix.com/";
              }
            ];
          }
        ];
      };

My assumption was that I get a folder "Nix" in the bookmarks toolbar that contains the four bookmarks. But instead the four bookmarks are added to the toolbar side-by-side without being in a folder.

How can I achieve that?

[-] secana@programming.dev 13 points 4 months ago

Or use https://kellnr.io to host your crates. It automatically builds the corresponding docs and hosts them for you. Disclaimer: I'm the author.

[-] secana@programming.dev 96 points 5 months ago

https://tauri.app/ is very popular and does not need electron. It uses the OS native we view.

[-] secana@programming.dev 9 points 5 months ago

The runtime is even called "common language runtime" (clr), as it is intended to support many different languages, which the jvm never was.

[-] secana@programming.dev 12 points 5 months ago

I released https://kellnr.io 5.2.1 with a few smaller fixes and additions.

[-] secana@programming.dev 10 points 5 months ago

If that really works without any drawbacks, I hope it gets merged into Rust main.

[-] secana@programming.dev 11 points 6 months ago

The Windows linker needs a lib file to link a DLL. See here how it's done https://kellnr.io/blog/cross-plat-native-lib

[-] secana@programming.dev 13 points 6 months ago

Good idea. We could try to reach TWIR on Mastodon.

[-] secana@programming.dev 10 points 6 months ago

If a few big names here could possibly help. If someone from the Rust project itself or someone well known from YouTube posts here and engages in discussions, more people would be interested to join.

[-] secana@programming.dev 33 points 7 months ago

I advocate for that since years. We need to normalize to pay for OSS. The biggest issue I see is not that people are unwilling to pay (donate) for the software they use daily, but the the payment itself is to complicated. There is not "the one" app store for OSS that every OS uses that makes donations easy. Additionally taking care of taxes for donations is too much of a burden, so the app store needs to handle that as well. And voila: You have the Apple App store or Android Play store.

[-] secana@programming.dev 7 points 7 months ago

Any advantages over distrobox? Sounds very similar.

view more: next ›

secana

joined 9 months ago