diff options
| author | Petri Hienonen <petri.hienonen@gmail.com> | 2025-12-04 18:05:00 +0200 |
|---|---|---|
| committer | Petri Hienonen <petri.hienonen@gmail.com> | 2025-12-04 20:39:41 +0200 |
| commit | 4d7fbc33a139d6484ae86c45b570b2c99fc737ef (patch) | |
| tree | 46c5788b8ed0eaf6f6581b3b7a87d633d842a8dd | |
| parent | 7ab57a27c9648b3a8e12f755e03fc84eb50291b4 (diff) | |
| download | nixos-4d7fbc33a139d6484ae86c45b570b2c99fc737ef.tar.zst | |
Test
| -rw-r--r-- | home/alacritty/default.nix | 79 | ||||
| -rw-r--r-- | home/cargo.nix (renamed from home/cargo/default.nix) | 9 | ||||
| -rw-r--r-- | home/chawan.nix (renamed from home/chawan/default.nix) | 0 | ||||
| -rw-r--r-- | home/default.nix | 33 | ||||
| -rw-r--r-- | home/fast-p/README.md | 5 | ||||
| -rw-r--r-- | home/fast-p/flake.lock | 27 | ||||
| -rw-r--r-- | home/fast-p/flake.nix | 49 | ||||
| -rw-r--r-- | home/fast-p/go.mod | 11 | ||||
| -rw-r--r-- | home/fast-p/go.sum | 10 | ||||
| -rw-r--r-- | home/fast-p/main.go | 147 | ||||
| l--------- | home/fast-p/result | 1 | ||||
| -rw-r--r-- | home/fish.nix (renamed from home/fish/default.nix) | 0 | ||||
| -rw-r--r-- | home/git.nix (renamed from home/git/default.nix) | 0 | ||||
| -rw-r--r-- | home/hyprlock.nix (renamed from home/hyprlock/default.nix) | 0 | ||||
| -rw-r--r-- | home/lf.nix (renamed from home/lf/default.nix) | 3 | ||||
| -rw-r--r-- | home/mpv.nix (renamed from home/mpv/default.nix) | 0 | ||||
| -rw-r--r-- | home/newsboat.nix (renamed from home/newsboat/default.nix) | 0 | ||||
| -rw-r--r-- | home/tenere.nix (renamed from home/tenere/default.nix) | 0 | ||||
| -rw-r--r-- | home/ticker.nix (renamed from home/ticker/default.nix) | 0 | ||||
| -rw-r--r-- | home/vale.nix (renamed from home/vale/default.nix) | 0 | ||||
| -rw-r--r-- | home/walker.nix (renamed from home/walker/default.nix) | 0 |
21 files changed, 276 insertions, 98 deletions
diff --git a/home/alacritty/default.nix b/home/alacritty/default.nix deleted file mode 100644 index 6fc9031..0000000 --- a/home/alacritty/default.nix +++ /dev/null @@ -1,79 +0,0 @@ -{ vars, pkgs, ... }: - -{ - programs.alacritty = { - enable = true; - settings = { - general = { - live_config_reload = true; - }; - font = { - normal = { - family = "Fira Code"; - style = "Regular"; - }; - size = 11; - }; - scrolling.multiplier = 9; - selection.save_to_clipboard = true; - window = { - opacity = 0.9; - }; - colors = { - primary = { - background = "#2e3440"; - foreground = "#d8dee9"; - dim_foreground = "#a5abb6"; - }; - cursor = { - text = "#2e3440"; - cursor = "#d8dee9"; - }; - vi_mode_cursor = { - text = "#2e3440"; - cursor = "#d8dee9"; - }; - selection = { - text = "CellForeground"; - background = "#4c566a"; - }; - search = { - matches = { - foreground = "CellBackground"; - background = "#88c0d0"; - }; - }; - normal = { - black = "#3b4252"; - red = "#bf616a"; - green = "#a3be8c"; - yellow = "#ebcb8b"; - blue = "#81a1c1"; - magenta = "#b48ead"; - cyan = "#88c0d0"; - white = "#e5e9f0"; - }; - bright = { - black = "#4c566a"; - red = "#bf616a"; - green = "#a3be8c"; - yellow = "#ebcb8b"; - blue = "#81a1c1"; - magenta = "#b48ead"; - cyan = "#8fbcbb"; - white = "#eceff4"; - }; - dim = { - black = "#373e4d"; - red = "#94545d"; - green = "#809575"; - yellow = "#b29e75"; - blue = "#68809a"; - magenta = "#8c738c"; - cyan = "#6d96a5"; - white = "#aeb3bb"; - }; - }; - }; - }; -} diff --git a/home/cargo/default.nix b/home/cargo.nix index b01ff1a..d05fbe8 100644 --- a/home/cargo/default.nix +++ b/home/cargo.nix @@ -17,6 +17,15 @@ unstable = { gc = true; }; + target = { + x86_64-unknown-linux-gnu = { + linker = "${pkgs.clang}/bin/clang"; + rustflags = [ + "-C" + "link-arg=--ld-path=${pkgs.mold}/bin/mold" + ]; + }; + }; "future-incompat-report" = { frequency = "always"; # when to display a notification about a future incompat report }; diff --git a/home/chawan/default.nix b/home/chawan.nix index b343c11..b343c11 100644 --- a/home/chawan/default.nix +++ b/home/chawan.nix diff --git a/home/default.nix b/home/default.nix index 4a9fc86..9c86e81 100644 --- a/home/default.nix +++ b/home/default.nix @@ -13,31 +13,30 @@ let in { imports = [ - # ./alacritty # ./conky # ./helix # ./lf # ./quickshell (import ./nvim { inherit unstable; }) - ./cargo - ./chawan + ./cargo.nix + ./chawan.nix ./chromium.nix ./dav ./dunst ./fastfetch.nix ./firefox - ./fish - ./git + ./fish.nix + ./git.nix ./hyprland - ./hyprlock + ./hyprlock.nix ./mail - ./mpv - ./newsboat + ./mpv.nix + ./newsboat.nix ./nushell.nix - ./tenere - ./ticker - ./vale - ./walker + ./tenere.nix + ./ticker.nix + ./vale.nix + ./walker.nix ./wallpapers ./waybar ]; @@ -108,6 +107,7 @@ in }; programs = { + home-manager.enable = true; nix-search-tv = { enable = true; enableTelevisionIntegration = true; @@ -286,11 +286,10 @@ in controlPersist = "10m"; }; }; - - home-manager.enable = true; }; services = { + home-manager.autoExpire.enable = true; ssh-agent = { enable = true; enableFishIntegration = true; @@ -307,7 +306,9 @@ in port = 6600; }; }; - + wl-clip-persist = { + enable = true; + }; psd = { enable = true; backupLimit = 5; @@ -388,7 +389,6 @@ in # gui ghostty # terminal emulator hypridle - hyprlock hyprpaper libreoffice lxqt.pavucontrol-qt @@ -663,7 +663,6 @@ in }; home.file."/.local/bin/bt-notify.sh" = { - executable = true; source = pkgs.writeShellScript "bt-notify" '' set -euo pipefail diff --git a/home/fast-p/README.md b/home/fast-p/README.md new file mode 100644 index 0000000..344c387 --- /dev/null +++ b/home/fast-p/README.md @@ -0,0 +1,5 @@ +Should be run as nushell function + +def p [] { +^fd -e pdf | ^fast-p | ^fzf --read0 --reverse -e -d "\t" --preview-window "down:80%" --preview 'v=$(echo {q} | tr " " "|"); echo -e {1}"\n"{2} | grep -E "^|$v" -i --color=always;' | ^cut -z -f 1 -d "\t" | ^tr -d '\n' | ^xargs -r --null xdg-open > /dev/null err> /dev/null +} diff --git a/home/fast-p/flake.lock b/home/fast-p/flake.lock new file mode 100644 index 0000000..08c2bc9 --- /dev/null +++ b/home/fast-p/flake.lock @@ -0,0 +1,27 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1764677808, + "narHash": "sha256-H3lC7knbXOBrHI9hITQ7modLuX20mYJVhZORL5ioms0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1aab89277eb2d87823d5b69bae631a2496cff57a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/home/fast-p/flake.nix b/home/fast-p/flake.nix new file mode 100644 index 0000000..f12cd44 --- /dev/null +++ b/home/fast-p/flake.nix @@ -0,0 +1,49 @@ +{ + description = "A Nix flake for building the fast-p Go binary"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + }; + + outputs = + { self, nixpkgs }: + let + # Support multiple systems + supportedSystems = [ + "x86_64-linux" + "aarch64-linux" + ]; + + # Helper function to generate outputs for each system + forEachSystem = + f: + nixpkgs.lib.genAttrs supportedSystems ( + system: + f { + inherit system; + pkgs = nixpkgs.legacyPackages.${system}; + } + ); + + in + { + packages = forEachSystem ( + { system, pkgs }: + { + default = pkgs.buildGoModule { + pname = "fast-p"; + version = "0.1.0"; + src = ./.; + vendorHash = "sha256-/lKWY6NZrw8aGe1/R2jspT4EZQxAxP0ujckpwZQGn2w="; # Run `nix build` to get actual hash + }; + } + ); + + devShells = forEachSystem ( + { pkgs, ... }: + { + default = pkgs.mkShell { packages = with pkgs; [ go ]; }; + } + ); + }; +} diff --git a/home/fast-p/go.mod b/home/fast-p/go.mod new file mode 100644 index 0000000..2d2c9a3 --- /dev/null +++ b/home/fast-p/go.mod @@ -0,0 +1,11 @@ +module fast-p + +go 1.25.4 + +require ( + github.com/boltdb/bolt v1.3.1 + github.com/cespare/xxhash v1.1.0 + github.com/mitchellh/go-homedir v1.1.0 +) + +require golang.org/x/sys v0.38.0 // indirect diff --git a/home/fast-p/go.sum b/home/fast-p/go.sum new file mode 100644 index 0000000..34025f4 --- /dev/null +++ b/home/fast-p/go.sum @@ -0,0 +1,10 @@ +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= diff --git a/home/fast-p/main.go b/home/fast-p/main.go new file mode 100644 index 0000000..409c2c2 --- /dev/null +++ b/home/fast-p/main.go @@ -0,0 +1,147 @@ +package main + +import ( + "bufio" + "encoding/hex" + "flag" + "fmt" + "github.com/boltdb/bolt" + "github.com/cespare/xxhash" + "github.com/mitchellh/go-homedir" + "io" + "log" + "os" + "os/exec" + "path/filepath" +) + +func hash_file_xxhash(filePath string) (string, error) { + var returnMD5String string + file, err := os.Open(filePath) + if err != nil { + return returnMD5String, err + } + defer file.Close() + hash := xxhash.New() + if _, err := io.Copy(hash, file); err != nil { + return returnMD5String, err + } + hashInBytes := hash.Sum(nil)[:] + returnMD5String = hex.EncodeToString(hashInBytes) + return returnMD5String, nil + +} + +func main() { + flag.Usage = func() { + fmt.Printf(`Usage: fast-p [OPTIONS] + Reads a list of PDF filenames from STDIN and returns a list of null-byte + separated items of the form + filename[TAB]text + where "text" is the text extracted from the first two pages of the PDF + by pdftotext and [TAB] denotes a tab character "\t". + + Common usage of this tool is to pipe the result to FZF with a command in + your .bashrc as explained in https://github.com/bellecp/fast-p. + + +`) + flag.PrintDefaults() + } + version := flag.Bool("version", false, "Display program version") + clearCache := flag.Bool("clear-cache", false, "Delete cache file located at: \n~/.cache/fast-p-pdftotext-output/fast-p_cached_pdftotext_output.db") + flag.Parse() + + if *version != false { + fmt.Printf("v.0.2.5 \nhttps://github.com/bellecp/fast-p\n") + os.Exit(0) + } + + if *clearCache != false { + removePath, err := homedir.Expand("~/.cache/fast-p-pdftotext-output/fast-p_cached_pdftotext_output.db") + if err != nil { + log.Fatal(err) + os.Exit(1) + } + os.Remove(removePath) + os.Exit(0) + } + + // Create ~/.cache folder if does not exist + // https://stackoverflow.com/questions/37932551/mkdir-if-not-exists-using-golang + cachePath, err := homedir.Expand("~/.cache/fast-p-pdftotext-output/") + os.MkdirAll(cachePath, os.ModePerm) + + // open BoltDB cache database + scanner := bufio.NewScanner(os.Stdin) + boltDbFilepath := filepath.Join(cachePath, "fast-p_cached_pdftotext_output.db") + if err != nil { + log.Fatal(err) + } + db, err := bolt.Open(boltDbFilepath, 0600, nil) + bucketName := "fast-p_bucket_for_cached_pdftotext_output" + if err != nil { + log.Fatal(err) + } + defer db.Close() + + nullByte := "\u0000" + + db.Update(func(tx *bolt.Tx) error { + _, err := tx.CreateBucketIfNotExists([]byte(bucketName)) + if err != nil { + return fmt.Errorf("create bucket: %s", err) + } + return nil + }) + + missing := make(map[string]string) + alreadySeen := make(map[string]bool) + + for scanner.Scan() { + filepath := scanner.Text() + hash, err := hash_file_xxhash(filepath) + if alreadySeen[hash] != true { + alreadySeen[hash] = true + if err != nil { + log.Println("err", hash) + } + var content string + found := false + err2 := db.View(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(bucketName)) + v := b.Get([]byte(hash)) + if v != nil { + found = true + content = string(v) + } + return nil + }) + if err2 != nil { + log.Println(err2) + } + if found == true { + fmt.Println(filepath + "\t" + content + nullByte) + } else { + missing[hash] = filepath + } + } + } + for hash, filepath := range missing { + cmd := exec.Command("pdftotext", "-l", "2", filepath, "-") + out, err := cmd.CombinedOutput() + content := string(out) + if err != nil { + log.Println(err) + } + fmt.Println(filepath + "\t" + content + nullByte) + db.Update(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte(bucketName)) + err := b.Put([]byte(hash), []byte(content)) + if err != nil { + fmt.Println(err) + } + return nil + }) + } +} diff --git a/home/fast-p/result b/home/fast-p/result new file mode 120000 index 0000000..7fb87ab --- /dev/null +++ b/home/fast-p/result @@ -0,0 +1 @@ +/nix/store/d43jc4b5dgpf071kgws69x8jk6ps5rz5-fast-p-0.1.0
\ No newline at end of file diff --git a/home/fish/default.nix b/home/fish.nix index 65e033a..65e033a 100644 --- a/home/fish/default.nix +++ b/home/fish.nix diff --git a/home/git/default.nix b/home/git.nix index d8445cc..d8445cc 100644 --- a/home/git/default.nix +++ b/home/git.nix diff --git a/home/hyprlock/default.nix b/home/hyprlock.nix index 4627556..4627556 100644 --- a/home/hyprlock/default.nix +++ b/home/hyprlock.nix diff --git a/home/lf/default.nix b/home/lf.nix index dae7e7f..4923fcb 100644 --- a/home/lf/default.nix +++ b/home/lf.nix @@ -22,8 +22,7 @@ xdg.configFile."/home/petri/.config/lf/icons".source = ./icons; xdg.configFile."/home/petri/.config/lf/pv.sh" = { executable = true; - text = '' - #!/bin/sh + source = pkgs.writeShellScript "pv" '' case "$1" in *.jpg*) timg -I "$1";; *.png*) timg -I "$1";; diff --git a/home/mpv/default.nix b/home/mpv.nix index 0c403a7..0c403a7 100644 --- a/home/mpv/default.nix +++ b/home/mpv.nix diff --git a/home/newsboat/default.nix b/home/newsboat.nix index c95b95a..c95b95a 100644 --- a/home/newsboat/default.nix +++ b/home/newsboat.nix diff --git a/home/tenere/default.nix b/home/tenere.nix index f7cfa29..f7cfa29 100644 --- a/home/tenere/default.nix +++ b/home/tenere.nix diff --git a/home/ticker/default.nix b/home/ticker.nix index be2f509..be2f509 100644 --- a/home/ticker/default.nix +++ b/home/ticker.nix diff --git a/home/vale/default.nix b/home/vale.nix index 79712ea..79712ea 100644 --- a/home/vale/default.nix +++ b/home/vale.nix diff --git a/home/walker/default.nix b/home/walker.nix index 6887606..6887606 100644 --- a/home/walker/default.nix +++ b/home/walker.nix |
