summaryrefslogtreecommitdiff
path: root/programs.nix
blob: 2872cb4f959dc3c540dbbeb8a6a767fd88d67435 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
{ pkgs, ... }:

let
  # open the MusicBrainz submission URL for the disc in the drive
  discid = pkgs.writeShellApplication {
    name = "discid";
    runtimeInputs = [
      pkgs.discidurl
      pkgs.xdg-utils
    ];
    text = "discidurl | xargs -r xdg-open";
  };
in
{
  environment.systemPackages = with pkgs; [
    discidurl
    discid

    itch
    haunt

    # --- wayland
    mako

    # provides notify-send
    libnotify

    # website is down :(
    # makemkv

    (aspellWithDicts (
      dicts: with dicts; [
        en
        en-computers
        en-science
      ]
    ))

    pi-coding-agent

    (buildNpmPackage rec {
      pname = "pi-acp";
      version = "0.0.31";
      src = fetchFromGitHub {
        owner = "svkozak";
        repo = "pi-acp";
        rev = "v${version}";
        hash = "sha256-bM3V/3fxkY2Ib+OyfT82StIIRSLXGDuYUbt1CZKpTuo=";
      };
      npmDepsHash = "sha256-qN+b/tMbnJLkWjotl3XrA0nfZ3KT/mT6gM+n3Qiz8Wk=";
    })

  ];

  programs = {
    steam.enable = true;
    firefox.enable = true;

    gnupg.agent = {
      enable = true;
      enableSSHSupport = true;
    };
  };

  services = {
    emacs = {
      enable = true;
      package =
        let
          emacs = pkgs.emacs-pgtk.overrideAttrs (old: {
            postInstall = (old.postInstall or "") + ''
              # I only want the client version
              rm -f $out/share/applications/emacs.desktop
            '';
          });
        in
        (pkgs.emacsPackagesFor emacs).withPackages (epkgs: [
          (epkgs.treesit-grammars.with-grammars (g: [ g.tree-sitter-nix ]))
          epkgs.vterm
        ]);
    };

    ollama = {
      enable = true;
      package = pkgs.ollama-rocm;
      environmentVariables = {
        HIP_VISIBLE_DEVICES = "0";
        OLLAMA_CONTEXT_LENGTH = "32768";
        OLLAMA_KV_CACHE_TYPE = "q8_0";
      };
    };
  };

  services.immich = {
    enable = true;
    machine-learning.enable = false;
  };
}