mirror of
https://github.com/tomasriveral/nixos.git
synced 2026-08-11 18:18:37 +02:00
Added printer setup
This commit is contained in:
@@ -0,0 +1,187 @@
|
|||||||
|
Control dashboard: http://localhost:631
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧾 Core controls
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lp file.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-d PRINTER # choose printer
|
||||||
|
-n NUM # number of copies
|
||||||
|
-t "TITLE" # job name
|
||||||
|
-q NUM # priority (1–100, higher = sooner)
|
||||||
|
```
|
||||||
|
Printer at the house: `HP_OfficeJet_Pro_7740`. I can't make printing without USB work...
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## If printer stuck:
|
||||||
|
|
||||||
|
```bash id="enable1"
|
||||||
|
sudo cupsenable HP_OfficeJet_Pro_7740
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
```bash id="accept1"
|
||||||
|
sudo cupsaccept HP_OfficeJet_Pro_7740
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
```bash id="cancel1"
|
||||||
|
cancel -a HP_OfficeJet_Pro_7740
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### 🧪 Verify state
|
||||||
|
|
||||||
|
```bash id="check1"
|
||||||
|
lpstat -p -d
|
||||||
|
```
|
||||||
|
|
||||||
|
You want:
|
||||||
|
|
||||||
|
```
|
||||||
|
HP_OfficeJet_Pro_7740 idle, accepting jobs
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📄 Page selection
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-P 1-5,8,10-20 # specific pages / ranges
|
||||||
|
-o page-ranges= # same as -P (sometimes more reliable)
|
||||||
|
```
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lp -o page-ranges=142-184 file.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📐 Layout & scaling
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-o fit-to-page
|
||||||
|
-o scaling=100 # percent
|
||||||
|
-o media=A4
|
||||||
|
-o orientation-requested=4 # landscape
|
||||||
|
```
|
||||||
|
|
||||||
|
Orientation values:
|
||||||
|
|
||||||
|
* `3` = portrait
|
||||||
|
* `4` = landscape
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧠 Duplex (double-sided)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-o sides=one-sided
|
||||||
|
-o sides=two-sided-long-edge
|
||||||
|
-o sides=two-sided-short-edge
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📚 Multiple pages per sheet
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-o number-up=2
|
||||||
|
-o number-up=4
|
||||||
|
-o number-up=6
|
||||||
|
-o number-up=9
|
||||||
|
-o number-up=16
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🖼️ Image handling
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-o fit-to-page
|
||||||
|
-o position=center
|
||||||
|
-o saturation=100
|
||||||
|
-o brightness=100
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🎨 Color / quality
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-o ColorModel=Color
|
||||||
|
-o ColorModel=Gray
|
||||||
|
|
||||||
|
-o print-quality=3 # draft
|
||||||
|
-o print-quality=4 # normal
|
||||||
|
-o print-quality=5 # high
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📦 Paper / tray
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-o media=A4
|
||||||
|
-o media=Letter
|
||||||
|
-o InputSlot=tray1
|
||||||
|
-o InputSlot=manual
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔁 Job handling
|
||||||
|
|
||||||
|
```bash
|
||||||
|
-H hold # hold job
|
||||||
|
-H resume # resume job
|
||||||
|
-H immediate # print ASAP
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔍 Debug / info
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lpstat -p -d # printers + default
|
||||||
|
lpstat -o # jobs
|
||||||
|
lpoptions -l # printer-specific options
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔥 Real-world example (what you actually want)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lp -d HP_LaserJet \
|
||||||
|
-o page-ranges=142-184 \
|
||||||
|
-o sides=two-sided-long-edge \
|
||||||
|
-o media=A4 \
|
||||||
|
-o print-quality=5 \
|
||||||
|
file.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ⚠️ Important reality check
|
||||||
|
|
||||||
|
Not all printers support all options. The **real supported ones** come from:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
lpoptions -p PRINTER_NAME -l
|
||||||
|
```
|
||||||
|
|
||||||
|
That command is gold—use it.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
If you want, tell me your **printer model**, and I’ll give you a *perfect command tuned to it* (no guessing, no trial and error).
|
||||||
Generated
+3
-3
@@ -135,11 +135,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776734388,
|
"lastModified": 1777077449,
|
||||||
"narHash": "sha256-vl3dkhlE5gzsItuHoEMVe+DlonsK+0836LIRDnm6MXQ=",
|
"narHash": "sha256-AIiMJiqvGrN4HyLEbKAoCSRRYn0rnlW5VbKNIMIYqm4=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "10e7ad5bbcb421fe07e3a4ad53a634b0cd57ffac",
|
"rev": "a4bf06618f0b5ee50f14ed8f0da77d34ecc19160",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
pkgs = nixpkgs.legacyPackages.${system};
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
pkgs-unstable = import nixpkgs-unstable {
|
pkgs-unstable = import nixpkgs-unstable {
|
||||||
inherit system;
|
inherit system;
|
||||||
config.allowUnfree = false;
|
config.allowUnfree = true; #hplipWithPlugins is unfree...
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
../../modules/nixos/nixUtils.nix
|
../../modules/nixos/nixUtils.nix
|
||||||
../../hostsModules/laptop/nixos/udev.nix
|
../../hostsModules/laptop/nixos/udev.nix
|
||||||
../../hostsModules/laptop/nixos/disk.nix
|
../../hostsModules/laptop/nixos/disk.nix
|
||||||
|
../../modules/nixos/printer.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@@ -50,6 +51,9 @@
|
|||||||
extraSpecialArgs = {inherit inputs pkgs-unstable;};
|
extraSpecialArgs = {inherit inputs pkgs-unstable;};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.dbus.enable = true;
|
||||||
|
security.polkit.enable = true;
|
||||||
|
|
||||||
environment.pathsToLink = [
|
environment.pathsToLink = [
|
||||||
"/share/applications"
|
"/share/applications"
|
||||||
"/share/xdg-desktop-portal"
|
"/share/xdg-desktop-portal"
|
||||||
@@ -120,8 +124,6 @@
|
|||||||
# Configure console keymap
|
# Configure console keymap
|
||||||
console.keyMap = "fr_CH";
|
console.keyMap = "fr_CH";
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
|
|
||||||
# Enable sound with pipewire.
|
# Enable sound with pipewire.
|
||||||
services.pulseaudio.enable = false;
|
services.pulseaudio.enable = false;
|
||||||
@@ -156,7 +158,7 @@
|
|||||||
|
|
||||||
|
|
||||||
# Allow unfree packages
|
# Allow unfree packages
|
||||||
nixpkgs.config.allowUnfree = true; # Nonfree packages: Obsidian
|
nixpkgs.config.allowUnfree = true; # Nonfree packages: hplipWithPlugin
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
# List packages installed in system profile. To search, run:
|
||||||
# $ nix search wget
|
# $ nix search wget
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
#https://wiki.nixos.org/wiki/Printing
|
||||||
|
services.avahi = {
|
||||||
|
enable = true;
|
||||||
|
nssmdns4 = true;
|
||||||
|
openFirewall = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
services.printing = {
|
||||||
|
enable = true;
|
||||||
|
drivers = with pkgs; [
|
||||||
|
cups-filters
|
||||||
|
#cups-browsed
|
||||||
|
#gutenprint
|
||||||
|
#gutenprintBin
|
||||||
|
hplipWithPlugin
|
||||||
|
hplip
|
||||||
|
];
|
||||||
|
};
|
||||||
|
services.ipp-usb.enable = true;
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
kdePackages.print-manager
|
||||||
|
ghostscript
|
||||||
|
hplipWithPlugin
|
||||||
|
];
|
||||||
|
hardware.printers = {
|
||||||
|
ensurePrinters = [
|
||||||
|
{
|
||||||
|
name = "HP_OfficeJet_Pro_7740";
|
||||||
|
location = "Home";
|
||||||
|
deviceUri = "hp:/usb/OfficeJet_Pro_7740_series";
|
||||||
|
model = "drv:///hp/hpcups.drv/hp-officejet_pro_7740_series.ppd";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
ensureDefaultPrinter = "HP_OfficeJet_Pro_7740";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,9 +1,7 @@
|
|||||||
{
|
{
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
# add a desktop entry here if you have an error like
|
# see ../../docs/printing.md
|
||||||
# Failed to register with host portal QDBusError("org.freedesktop.portal.Error.Failed", "Could not register app ID: App info not found for 'org.quickshell'")
|
|
||||||
|
|
||||||
{
|
{
|
||||||
home.file.".local/share/applications/org.quickshell.desktop" = {
|
home.file.".local/share/applications/org.quickshell.desktop" = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -19,4 +17,16 @@
|
|||||||
X-DBUS-ServiceName=org.quickshell
|
X-DBUS-ServiceName=org.quickshell
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
home.file.".local/share/applications/org.kde.PrintQueue.desktop" = {
|
||||||
|
enable = true;
|
||||||
|
text = ''
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Print Queue
|
||||||
|
Exec=print-queue
|
||||||
|
Icon=printer
|
||||||
|
Categories=Utility;
|
||||||
|
StartupNotify=true
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user