mirror of
https://github.com/nmasur/dotfiles
synced 2026-02-15 12:49:47 +00:00
Compare commits
1 Commits
master
...
3ddd460490
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ddd460490 |
320
flake.lock
generated
320
flake.lock
generated
@@ -1,18 +1,12 @@
|
|||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"cl-nix-lite": {
|
"cl-nix-lite": {
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": "nixpkgs",
|
|
||||||
"systems": "systems",
|
|
||||||
"treefmt-nix": "treefmt-nix"
|
|
||||||
},
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766810506,
|
"lastModified": 1728174978,
|
||||||
"narHash": "sha256-I4BxozsEu205tA7jazufztI8ZQ5p7hcCnjqrSKPz9nI=",
|
"narHash": "sha256-Grqqg+xuicANB85j0gNEXxi9SBKY7bzGeTuyi95eGcY=",
|
||||||
"owner": "hraban",
|
"owner": "hraban",
|
||||||
"repo": "cl-nix-lite",
|
"repo": "cl-nix-lite",
|
||||||
"rev": "038e341cede255a83a8f04af114dc95717461d32",
|
"rev": "31cfe6275c341eb3120a99f4b1c8516c49a29d87",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -28,11 +22,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770922915,
|
"lastModified": 1758102940,
|
||||||
"narHash": "sha256-6J/JoK9iL7sHvKJcGW2KId2agaKv1OGypsa7kN+ZBD4=",
|
"narHash": "sha256-wwqf3+A8EiqwWpcAaPN20QXJLlpGPpwtLTrzgnngI2o=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "6c5a56295d2a24e43bcd8af838def1b9a95746b2",
|
"rev": "ebd0bfc11fc2b5cff37401e9b3703881ad5fabbd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -49,11 +43,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769524058,
|
"lastModified": 1758287904,
|
||||||
"narHash": "sha256-zygdD6X1PcVNR2PsyK4ptzrVEiAdbMqLos7utrMDEWE=",
|
"narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "71a3fc97d80881e91710fe721f1158d3b96ae14d",
|
"rev": "67ff9807dd148e704baadbd4fd783b54282ca627",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -82,11 +76,11 @@
|
|||||||
"flake-compat_2": {
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767039857,
|
"lastModified": 1747046372,
|
||||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -96,24 +90,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765835352,
|
|
||||||
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "a34fae9c08a15ad73f295041fec82323541400a9",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts_2": {
|
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nur",
|
"nur",
|
||||||
@@ -156,7 +132,7 @@
|
|||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_3"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1731533236,
|
"lastModified": 1731533236,
|
||||||
@@ -172,6 +148,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"helix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1758204752,
|
||||||
|
"narHash": "sha256-tgblfdzdM3XAzYHHvA9GX9SR2P8NG2IzewmfnRmTUxg=",
|
||||||
|
"owner": "helix-editor",
|
||||||
|
"repo": "helix",
|
||||||
|
"rev": "0ae37dc52ba715100893c327414bcb1a1924a4c3",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "helix-editor",
|
||||||
|
"repo": "helix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -179,11 +176,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771037579,
|
"lastModified": 1758296614,
|
||||||
"narHash": "sha256-NX5XuhGcsmk0oEII2PEtMRgvh2KaAv3/WWQsOpxAgR4=",
|
"narHash": "sha256-l60D1i0aaSqemy9dL7wP0ePMfcv/oZbeKpvUMY+q0kQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "05e6dc0f6ed936f918cb6f0f21f1dad1e4c53150",
|
"rev": "55b1f5b7b191572257545413b98e37abab2fdb00",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -198,16 +195,18 @@
|
|||||||
"cl-nix-lite": "cl-nix-lite",
|
"cl-nix-lite": "cl-nix-lite",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": [
|
||||||
"systems": "systems_2",
|
"nixpkgs"
|
||||||
"treefmt-nix": "treefmt-nix_2"
|
],
|
||||||
|
"systems": "systems",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766810876,
|
"lastModified": 1756057867,
|
||||||
"narHash": "sha256-VPElWFQIiP31lXQXEom+L4sl85alZpZn33O4hewsP9k=",
|
"narHash": "sha256-ziR5eQGqRWhW8tf8r0TIplaqNt+HXu1G1X41LUr4IYo=",
|
||||||
"owner": "hraban",
|
"owner": "hraban",
|
||||||
"repo": "mac-app-util",
|
"repo": "mac-app-util",
|
||||||
"rev": "4747968574ea58512c5385466400b2364c85d2d0",
|
"rev": "8414fa1e2cb775b17793104a9095aabeeada63ef",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -260,11 +259,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1769813415,
|
"lastModified": 1751903740,
|
||||||
"narHash": "sha256-nnVmNNKBi1YiBNPhKclNYDORoHkuKipoz7EtVnXO50A=",
|
"narHash": "sha256-PeSkNMvkpEvts+9DjFiop1iT2JuBpyknmBUs0Un0a4I=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-generators",
|
"repo": "nixos-generators",
|
||||||
"rev": "8946737ff703382fda7623b9fab071d037e897d5",
|
"rev": "032decf9db65efed428afd2fa39d80f7089085eb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -275,106 +274,43 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766736597,
|
"lastModified": 1754340878,
|
||||||
"narHash": "sha256-BASnpCLodmgiVn0M1MU2Pqyoz0aHwar/0qLkp7CjvSQ=",
|
"narHash": "sha256-lgmUyVQL9tSnvvIvBp7x1euhkkCho7n3TMzgjdvgPoU=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "f560ccec6b1116b22e6ed15f4c510997d99d5852",
|
"rev": "cab778239e705082fe97bb4990e0d24c50924c04",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-25.11",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1765674936,
|
|
||||||
"narHash": "sha256-k00uTP4JNfmejrCLJOwdObYC9jHRrr/5M/a/8L2EIdo=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"rev": "2075416fcb47225d9b68ac469a5c4801a9c4dd85",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixpkgs.lib",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1767313136,
|
"lastModified": 1735563628,
|
||||||
"narHash": "sha256-16KkgfdYqjaeRGBaYsNrhPRRENs0qzkQVUooNHtoy2w=",
|
"narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ac62194c3917d5f474c1a844b6fd6da2db95077d",
|
"rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"ref": "nixos-25.05",
|
"ref": "nixos-24.05",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761236834,
|
"lastModified": 1758198701,
|
||||||
"narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
|
"narHash": "sha256-7To75JlpekfUmdkUZewnT6MoBANS0XVypW6kjUOXQwc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
|
"rev": "0147c2f1d54b30b5dd6d4a8c8542e8d7edf93b5d",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_3": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1732617236,
|
|
||||||
"narHash": "sha256-PYkz6U0bSEaEB1al7O1XsqVNeSNS+s3NVclJw7YC43w=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1761236834,
|
|
||||||
"narHash": "sha256-+pthv6hrL5VLW2UqPdISGuLiUZ6SnAXdd2DdUE+fV2Q=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "d5faa84122bc0a1fd5d378492efce4e289f8eac1",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_5": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1770841267,
|
|
||||||
"narHash": "sha256-9xejG0KoqsoKEGp2kVbXRlEYtFFcDTHjidiuX8hGO44=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "ec7c70d12ce2fc37cb92aff673dcdca89d187bae",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -384,13 +320,13 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744536153,
|
"lastModified": 1728538411,
|
||||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
"narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
"rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -402,17 +338,17 @@
|
|||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771044752,
|
"lastModified": 1758339501,
|
||||||
"narHash": "sha256-9pnZltSDksIepwd1PJIskZKXTGQzdElS/zK/qnlj2uU=",
|
"narHash": "sha256-ot58+ry2wvGMYck0b80dB9G5CxdAcrYR54SUNn+/Kmg=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "40fb292376611e388cb14329c96853966f57763a",
|
"rev": "957eddcb40c8c7dd4120f808786ea4d8b77a7feb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -425,14 +361,14 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"darwin": "darwin",
|
"darwin": "darwin",
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
|
"helix": "helix",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"mac-app-util": "mac-app-util",
|
"mac-app-util": "mac-app-util",
|
||||||
"nix2vim": "nix2vim",
|
"nix2vim": "nix2vim",
|
||||||
"nixos-generators": "nixos-generators",
|
"nixos-generators": "nixos-generators",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"rust-overlay": "rust-overlay",
|
|
||||||
"wsl": "wsl",
|
"wsl": "wsl",
|
||||||
"zellij-switch": "zellij-switch",
|
"zellij-switch": "zellij-switch",
|
||||||
"zenyd-mpv-scripts": "zenyd-mpv-scripts"
|
"zenyd-mpv-scripts": "zenyd-mpv-scripts"
|
||||||
@@ -440,14 +376,35 @@
|
|||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": [
|
||||||
|
"helix",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771038269,
|
"lastModified": 1740623427,
|
||||||
"narHash": "sha256-TygYZ7JhnJbRoWOk7d5HaA/GhEVCvtRruN7TqaN9s/c=",
|
"narHash": "sha256-3SdPQrZoa4odlScFDUHd4CUPQ/R1gtH4Mq9u8CBiK8M=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "d7a86c8a4df49002446737603a3e0d7ef91a9637",
|
"rev": "d342e8b5fd88421ff982f383c853f0fc78a847ab",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay_2": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_3"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1736476219,
|
||||||
|
"narHash": "sha256-+qyv3QqdZCdZ3cSO/cbpEY6tntyYjfe1bB12mdpNFaY=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "de30cc5963da22e9742bbbbb9a3344570ed237b9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -457,21 +414,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems": {
|
"systems": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_2": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347925,
|
"lastModified": 1689347925,
|
||||||
"narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=",
|
"narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=",
|
||||||
@@ -486,6 +428,21 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"systems_3": {
|
"systems_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
@@ -501,49 +458,16 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_4": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1681028828,
|
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1766000401,
|
"lastModified": 1755934250,
|
||||||
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
|
"narHash": "sha256-CsDojnMgYsfshQw3t4zjRUkmMmUdZGthl16bXVWgRYU=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "treefmt-nix",
|
"repo": "treefmt-nix",
|
||||||
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
|
"rev": "74e1a52d5bd9430312f8d1b8b0354c92c17453e5",
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"treefmt-nix_2": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs_4"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1766000401,
|
|
||||||
"narHash": "sha256-+cqN4PJz9y0JQXfAK5J1drd0U05D5fcAGhzhfVrDlsI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "treefmt-nix",
|
|
||||||
"rev": "42d96e75aa56a3f70cab7e7dc4a32868db28e8fd",
|
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -560,11 +484,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770657009,
|
"lastModified": 1758123407,
|
||||||
"narHash": "sha256-v/LA5ZSJ+JQYzMSKB4sySM0wKfsAqddNzzxLLnbsV/E=",
|
"narHash": "sha256-4qwMlR0Q4Zr2rjUFauYIldfjzffYt3G5tZ1uPFPPYGU=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d",
|
"rev": "ba2b3b6c0bc42442559a3b090f032bc8d501f5e3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -578,10 +502,8 @@
|
|||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"rust-overlay": [
|
"rust-overlay": "rust-overlay_2",
|
||||||
"rust-overlay"
|
"systems": "systems_3"
|
||||||
],
|
|
||||||
"systems": "systems_4"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1742588229,
|
"lastModified": 1742588229,
|
||||||
@@ -600,11 +522,11 @@
|
|||||||
"zenyd-mpv-scripts": {
|
"zenyd-mpv-scripts": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1765050776,
|
"lastModified": 1707704915,
|
||||||
"narHash": "sha256-9gO+GkNoGsxAbMRrBWu0FfXEQtyTmHivlaxlYLpV2YM=",
|
"narHash": "sha256-9P/8q/OZXfaJMS08acQP4h3/zUA5mKRQee0JmkXcz1w=",
|
||||||
"owner": "zenyd",
|
"owner": "zenyd",
|
||||||
"repo": "mpv-scripts",
|
"repo": "mpv-scripts",
|
||||||
"rev": "62f4bb313c6cb6366672e78dea940e9da8fec84a",
|
"rev": "9bdce0050144cb24f92475f7bdd77180e0e4c26b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
70
flake.nix
70
flake.nix
@@ -8,7 +8,7 @@
|
|||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
|
||||||
# Used for specific stable packages
|
# Used for specific stable packages
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-25.05";
|
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.05";
|
||||||
|
|
||||||
# Used for MacOS system config
|
# Used for MacOS system config
|
||||||
darwin = {
|
darwin = {
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
# Better App install management in macOS
|
# Better App install management in macOS
|
||||||
mac-app-util = {
|
mac-app-util = {
|
||||||
url = "github:hraban/mac-app-util";
|
url = "github:hraban/mac-app-util";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs"; # Use system packages list for their inputs
|
inputs.nixpkgs.follows = "nixpkgs"; # Use system packages list for their inputs
|
||||||
};
|
};
|
||||||
|
|
||||||
# Manage disk format and partitioning
|
# Manage disk format and partitioning
|
||||||
@@ -64,23 +64,17 @@
|
|||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
rust-overlay = {
|
|
||||||
url = "github:oxalica/rust-overlay";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Zellij Switcher
|
# Zellij Switcher
|
||||||
zellij-switch = {
|
zellij-switch = {
|
||||||
url = "github:mostafaqanbaryan/zellij-switch";
|
url = "github:mostafaqanbaryan/zellij-switch";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.rust-overlay.follows = "rust-overlay";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# # Text editor
|
# Text editor
|
||||||
# helix = {
|
helix = {
|
||||||
# url = "github:helix-editor/helix";
|
url = "github:helix-editor/helix";
|
||||||
# inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
# inputs.rust-overlay.follows = "rust-overlay";
|
};
|
||||||
# };
|
|
||||||
|
|
||||||
# # Nextcloud Apps
|
# # Nextcloud Apps
|
||||||
# nextcloud-news = {
|
# nextcloud-news = {
|
||||||
@@ -132,7 +126,6 @@
|
|||||||
mathesar = "mathesar.${baseName}";
|
mathesar = "mathesar.${baseName}";
|
||||||
metrics = "metrics.${baseName}";
|
metrics = "metrics.${baseName}";
|
||||||
minecraft = "minecraft.${baseName}";
|
minecraft = "minecraft.${baseName}";
|
||||||
mumble = "mumble.${baseName}";
|
|
||||||
n8n = "n8n.${baseName}";
|
n8n = "n8n.${baseName}";
|
||||||
navidrome = "music.${baseName}";
|
navidrome = "music.${baseName}";
|
||||||
notifications = "ntfy.${baseName}";
|
notifications = "ntfy.${baseName}";
|
||||||
@@ -140,7 +133,6 @@
|
|||||||
photos = "photos.${baseName}";
|
photos = "photos.${baseName}";
|
||||||
postgresql = "pg.${baseName}";
|
postgresql = "pg.${baseName}";
|
||||||
prometheus = "prom.${baseName}";
|
prometheus = "prom.${baseName}";
|
||||||
recipes = "cooking.${baseName}";
|
|
||||||
secrets = "vault.${baseName}";
|
secrets = "vault.${baseName}";
|
||||||
smtp = "smtp.purelymail.com";
|
smtp = "smtp.purelymail.com";
|
||||||
status = "status.${baseName}";
|
status = "status.${baseName}";
|
||||||
@@ -255,30 +247,30 @@
|
|||||||
default = lib.pkgsBySystem.${system}.nmasur.dotfiles-devshell;
|
default = lib.pkgsBySystem.${system}.nmasur.dotfiles-devshell;
|
||||||
});
|
});
|
||||||
|
|
||||||
# checks = lib.forAllSystems (
|
checks = lib.forAllSystems (
|
||||||
# system:
|
system:
|
||||||
# let
|
let
|
||||||
# pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
# inherit system;
|
inherit system;
|
||||||
# overlays = lib.overlays;
|
overlays = lib.overlays;
|
||||||
# };
|
};
|
||||||
# in
|
in
|
||||||
# {
|
{
|
||||||
# neovim =
|
neovim =
|
||||||
# pkgs.runCommand "neovim-check-health" { buildInputs = [ inputs.self.packages.${system}.neovim ]; }
|
pkgs.runCommand "neovim-check-health" { buildInputs = [ inputs.self.packages.${system}.neovim ]; }
|
||||||
# ''
|
''
|
||||||
# mkdir -p $out
|
mkdir -p $out
|
||||||
# export HOME=$TMPDIR
|
export HOME=$TMPDIR
|
||||||
# nvim -c "checkhealth" -c "write $out/health.log" -c "quitall"
|
nvim -c "checkhealth" -c "write $out/health.log" -c "quitall"
|
||||||
|
|
||||||
# # Check for errors inside the health log
|
# Check for errors inside the health log
|
||||||
# if $(grep "ERROR" $out/health.log); then
|
if $(grep "ERROR" $out/health.log); then
|
||||||
# cat $out/health.log
|
cat $out/health.log
|
||||||
# exit 1
|
exit 1
|
||||||
# fi
|
fi
|
||||||
# '';
|
'';
|
||||||
# }
|
}
|
||||||
# );
|
);
|
||||||
|
|
||||||
formatter = lib.forAllSystems (
|
formatter = lib.forAllSystems (
|
||||||
system:
|
system:
|
||||||
@@ -288,7 +280,7 @@
|
|||||||
inherit (lib) overlays;
|
inherit (lib) overlays;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
pkgs.nixfmt
|
pkgs.nixfmt-rfc-style
|
||||||
);
|
);
|
||||||
|
|
||||||
# Templates for starting other projects quickly
|
# Templates for starting other projects quickly
|
||||||
|
|||||||
@@ -67,9 +67,8 @@ lib
|
|||||||
inputs.nur.overlays.default
|
inputs.nur.overlays.default
|
||||||
inputs.nix2vim.overlay
|
inputs.nix2vim.overlay
|
||||||
inputs.zellij-switch.overlays.default
|
inputs.zellij-switch.overlays.default
|
||||||
# inputs.helix.overlays.default
|
inputs.helix.overlays.default
|
||||||
]
|
] ++ (importOverlays ../overlays);
|
||||||
++ (importOverlays ../overlays);
|
|
||||||
|
|
||||||
# System types to support.
|
# System types to support.
|
||||||
supportedSystems = [
|
supportedSystems = [
|
||||||
@@ -98,10 +97,7 @@ lib
|
|||||||
system:
|
system:
|
||||||
import inputs.nixpkgs {
|
import inputs.nixpkgs {
|
||||||
inherit system overlays;
|
inherit system overlays;
|
||||||
config.permittedInsecurePackages = [
|
config.permittedInsecurePackages = [ "litestream-0.3.13" ];
|
||||||
"litestream-0.3.13"
|
|
||||||
"electron-36.9.5"
|
|
||||||
];
|
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -134,8 +130,7 @@ lib
|
|||||||
];
|
];
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit colorscheme;
|
inherit colorscheme;
|
||||||
}
|
} // specialArgs;
|
||||||
// specialArgs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
buildNixos =
|
buildNixos =
|
||||||
@@ -157,10 +152,8 @@ lib
|
|||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit colorscheme;
|
inherit colorscheme;
|
||||||
}
|
} // specialArgs;
|
||||||
// specialArgs;
|
} // homeModule.home-manager;
|
||||||
}
|
|
||||||
// homeModule.home-manager;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -185,10 +178,8 @@ lib
|
|||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit colorscheme;
|
inherit colorscheme;
|
||||||
}
|
} // specialArgs;
|
||||||
// specialArgs;
|
} // homeModule.home-manager;
|
||||||
}
|
|
||||||
// homeModule.home-manager;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
@@ -231,15 +222,12 @@ lib
|
|||||||
home-manager = {
|
home-manager = {
|
||||||
extraSpecialArgs = {
|
extraSpecialArgs = {
|
||||||
inherit colorscheme;
|
inherit colorscheme;
|
||||||
}
|
} // specialArgs;
|
||||||
// specialArgs;
|
} // homeModule.home-manager;
|
||||||
}
|
|
||||||
// homeModule.home-manager;
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
}
|
} // specialArgs;
|
||||||
// specialArgs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
};
|
};
|
||||||
brews = [
|
brews = [
|
||||||
"trash" # Delete files and folders to trash instead of rm
|
"trash" # Delete files and folders to trash instead of rm
|
||||||
"jiratui" # Terminal program to manage Jira
|
|
||||||
];
|
];
|
||||||
casks = [
|
casks = [
|
||||||
"1password" # 1Password will not launch from Nix on macOS
|
"1password" # 1Password will not launch from Nix on macOS
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
inputs: final: prev: {
|
|
||||||
|
|
||||||
firefox-unwrapped = final.stable.firefox-unwrapped;
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -4,8 +4,7 @@
|
|||||||
inputs: _final: prev: {
|
inputs: _final: prev: {
|
||||||
# Provides `pkgs.stable`.
|
# Provides `pkgs.stable`.
|
||||||
stable = import inputs.nixpkgs-stable {
|
stable = import inputs.nixpkgs-stable {
|
||||||
system = prev.stdenv.hostPlatform.system;
|
inherit (prev) system config;
|
||||||
config = { };
|
|
||||||
overlays = [
|
overlays = [
|
||||||
# inputs.self.overlays.vim-plugins
|
# inputs.self.overlays.vim-plugins
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -4,8 +4,7 @@
|
|||||||
inputs: _final: prev: {
|
inputs: _final: prev: {
|
||||||
# Provides `pkgs.unstable`.
|
# Provides `pkgs.unstable`.
|
||||||
unstable = import inputs.nixpkgs {
|
unstable = import inputs.nixpkgs {
|
||||||
system = prev.stdenv.hostPlatform.system;
|
inherit (prev) system config;
|
||||||
inherit (prev) config;
|
|
||||||
overlays = [
|
overlays = [
|
||||||
# inputs.self.overlays.vim-plugins
|
# inputs.self.overlays.vim-plugins
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -100,7 +100,7 @@
|
|||||||
lua.command = "${pkgs.stylua}/bin/stylua";
|
lua.command = "${pkgs.stylua}/bin/stylua";
|
||||||
black.command = "${pkgs.black}/bin/black";
|
black.command = "${pkgs.black}/bin/black";
|
||||||
fish_indent.command = "${pkgs.fish}/bin/fish_indent";
|
fish_indent.command = "${pkgs.fish}/bin/fish_indent";
|
||||||
nixfmt.command = "${pkgs.nixfmt}/bin/nixfmt";
|
nixfmt.command = "${pkgs.nixfmt-rfc-style}/bin/nixfmt";
|
||||||
rustfmt.command = "${pkgs.rustfmt}/bin/rustfmt";
|
rustfmt.command = "${pkgs.rustfmt}/bin/rustfmt";
|
||||||
shfmt = {
|
shfmt = {
|
||||||
command = "${pkgs.shfmt}/bin/shfmt";
|
command = "${pkgs.shfmt}/bin/shfmt";
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
|
|
||||||
plugins = [
|
plugins = [
|
||||||
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins: [
|
(pkgs.vimPlugins.nvim-treesitter.withPlugins (_plugins: [
|
||||||
pkgs.nmasur.tree-sitter-ini
|
pkgs.nmasur.ini-grammar
|
||||||
pkgs.nmasur.tree-sitter-puppet
|
pkgs.nmasur.puppet-grammar
|
||||||
pkgs.nmasur.tree-sitter-rasi
|
pkgs.nmasur.rasi-grammar
|
||||||
pkgs.nmasur.tree-sitter-vimdoc
|
pkgs.nmasur.vimdoc-grammar
|
||||||
pkgs.tree-sitter-grammars.tree-sitter-bash
|
pkgs.tree-sitter-grammars.tree-sitter-bash
|
||||||
pkgs.tree-sitter-grammars.tree-sitter-c
|
pkgs.tree-sitter-grammars.tree-sitter-c
|
||||||
pkgs.tree-sitter-grammars.tree-sitter-fish
|
pkgs.tree-sitter-grammars.tree-sitter-fish
|
||||||
@@ -21,6 +21,7 @@
|
|||||||
pkgs.tree-sitter-grammars.tree-sitter-yaml
|
pkgs.tree-sitter-grammars.tree-sitter-yaml
|
||||||
]))
|
]))
|
||||||
pkgs.vimPlugins.vim-matchup # Better % jumping in languages
|
pkgs.vimPlugins.vim-matchup # Better % jumping in languages
|
||||||
|
pkgs.vimPlugins.playground # Tree-sitter experimenting
|
||||||
pkgs.vimPlugins.nginx-vim
|
pkgs.vimPlugins.nginx-vim
|
||||||
pkgs.vimPlugins.vim-helm
|
pkgs.vimPlugins.vim-helm
|
||||||
# pkgs.vimPlugins.hmts-nvim # Tree-sitter injections for home-manager
|
# pkgs.vimPlugins.hmts-nvim # Tree-sitter injections for home-manager
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
# Caddy with Cloudflare DNS
|
|
||||||
|
|
||||||
{
|
|
||||||
pkgs,
|
|
||||||
fetchFromGitHub,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
# Maintain a static version so that the plugin hash doesn't keep breaking
|
|
||||||
(pkgs.caddy.overrideAttrs rec {
|
|
||||||
version = "2.10.2";
|
|
||||||
src = fetchFromGitHub {
|
|
||||||
owner = "caddyserver";
|
|
||||||
repo = "caddy";
|
|
||||||
tag = "v${version}";
|
|
||||||
hash = "sha256-KvikafRYPFZ0xCXqDdji1rxlkThEDEOHycK8GP5e8vk=";
|
|
||||||
};
|
|
||||||
}).withPlugins
|
|
||||||
{
|
|
||||||
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
|
|
||||||
hash = "sha256-Zls+5kWd/JSQsmZC4SRQ/WS+pUcRolNaaI7UQoPzJA0=";
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
|
|
||||||
function exportHistory() {
|
|
||||||
const now = new Date();
|
|
||||||
const startTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0); // Beginning of today
|
|
||||||
|
|
||||||
browser.history.search({
|
|
||||||
text: '',
|
|
||||||
startTime: startTime,
|
|
||||||
endTime: now,
|
|
||||||
maxResults: 10000
|
|
||||||
}).then(historyItems => {
|
|
||||||
const historyData = JSON.stringify(historyItems, null, 2);
|
|
||||||
const blob = new Blob([historyData], {type: 'application/json'});
|
|
||||||
const url = URL.createObjectURL(blob);
|
|
||||||
const date = now.toISOString().slice(0, 10); // YYYY-MM-DD
|
|
||||||
const filename = `firefox-history/history-${date}.json`;
|
|
||||||
|
|
||||||
browser.downloads.download({
|
|
||||||
url: url,
|
|
||||||
filename: filename,
|
|
||||||
conflictAction: 'overwrite',
|
|
||||||
saveAs: false
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
browser.alarms.create('daily-export', {
|
|
||||||
periodInMinutes: 60 // every 1 hour
|
|
||||||
});
|
|
||||||
|
|
||||||
browser.alarms.onAlarm.addListener(alarm => {
|
|
||||||
if (alarm.name === 'daily-export') {
|
|
||||||
exportHistory();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
|
||||||
if (message.command === "exportHistory") {
|
|
||||||
exportHistory();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
"manifest_version": 3,
|
|
||||||
"name": "History Exporter",
|
|
||||||
"version": "1.1",
|
|
||||||
"description": "Automatically exports today's browsing history.",
|
|
||||||
"permissions": [
|
|
||||||
"history",
|
|
||||||
"downloads",
|
|
||||||
"alarms"
|
|
||||||
],
|
|
||||||
"background": {
|
|
||||||
"scripts": ["background.js"]
|
|
||||||
},
|
|
||||||
"action": {
|
|
||||||
"default_popup": "popup.html"
|
|
||||||
},
|
|
||||||
"browser_specific_settings": {
|
|
||||||
"gecko": {
|
|
||||||
"id": "firefox-history-exporter@nmasur.com",
|
|
||||||
"data_collection_permissions": {
|
|
||||||
"required": ["none"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
pkgs.stdenv.mkDerivation rec {
|
|
||||||
pname = "firefox-history-exporter";
|
|
||||||
version = "1.1";
|
|
||||||
src = ./.;
|
|
||||||
|
|
||||||
nativeBuildInputs = [ pkgs.zip ];
|
|
||||||
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
installPhase = ''
|
|
||||||
dst="$out/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}"
|
|
||||||
mkdir -p "$dst"
|
|
||||||
zip -j "$dst/firefox-history-exporter@nmasur.com.xpi" \
|
|
||||||
"${src}/manifest.json" \
|
|
||||||
"${src}/background.js" \
|
|
||||||
"${src}/popup.html" \
|
|
||||||
"${src}/popup.js"
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with pkgs.lib; {
|
|
||||||
description = "Automatically exports today's browsing history.";
|
|
||||||
license = licenses.mit;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>History Exporter</title>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
width: 200px;
|
|
||||||
text-align: center;
|
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
button {
|
|
||||||
margin-top: 10px;
|
|
||||||
padding: 10px;
|
|
||||||
font-size: 16px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>History Exporter</h1>
|
|
||||||
<button id="export-button">Export Now</button>
|
|
||||||
<p id="status"></p>
|
|
||||||
<script src="popup.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
document.getElementById('export-button').addEventListener('click', () => {
|
|
||||||
browser.runtime.sendMessage({command: "exportHistory"});
|
|
||||||
|
|
||||||
const statusElement = document.getElementById('status');
|
|
||||||
statusElement.textContent = 'Exporting...';
|
|
||||||
setTimeout(() => {
|
|
||||||
statusElement.textContent = 'Export complete!';
|
|
||||||
}, 2000);
|
|
||||||
});
|
|
||||||
@@ -19,4 +19,4 @@ aws ec2 describe-instances \
|
|||||||
--layout reverse \
|
--layout reverse \
|
||||||
--header $'Press Enter to start SSM session\nInstance ID - Private IP - Public IP - Name' \
|
--header $'Press Enter to start SSM session\nInstance ID - Private IP - Public IP - Name' \
|
||||||
--preview "aws ec2 describe-instances --instance-ids \"\$(echo {} | cut -d' ' -f1)\" | jq -r '.Reservations[].Instances[0]'" \
|
--preview "aws ec2 describe-instances --instance-ids \"\$(echo {} | cut -d' ' -f1)\" | jq -r '.Reservations[].Instances[0]'" \
|
||||||
--bind "enter:become(aws ssm start-session --document-name 'AWS-StartInteractiveCommand' --parameters '{\"command\": [\"bash\"]}' --target \$(echo {} | cut -d' ' -f1))"
|
--bind "enter:become(aws ssm start-session --target \$(echo {} | cut -d' ' -f1))"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ pkgs.mkShell {
|
|||||||
buildInputs = with pkgs; [
|
buildInputs = with pkgs; [
|
||||||
git
|
git
|
||||||
stylua
|
stylua
|
||||||
nixfmt
|
nixfmt-rfc-style
|
||||||
shfmt
|
shfmt
|
||||||
shellcheck
|
shellcheck
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
pkgs.writeShellScriptBin "rebuild" ''
|
pkgs.writeShellScriptBin "rebuild" ''
|
||||||
echo ${pkgs.stdenv.hostPlatform.system}
|
echo ${pkgs.system}
|
||||||
SYSTEM=${if pkgs.stdenv.isDarwin then "darwin" else "linux"}
|
SYSTEM=${if pkgs.stdenv.isDarwin then "darwin" else "linux"}
|
||||||
if [ "$SYSTEM" == "darwin" ]; then
|
if [ "$SYSTEM" == "darwin" ]; then
|
||||||
sudo darwin-rebuild switch --flake ${builtins.toString ../../../../.}
|
sudo darwin-rebuild switch --flake ${builtins.toString ../../../../.}
|
||||||
|
|||||||
@@ -18,17 +18,16 @@ in
|
|||||||
"1password"
|
"1password"
|
||||||
"_1password-gui"
|
"_1password-gui"
|
||||||
"1password-cli"
|
"1password-cli"
|
||||||
# "onepassword-password-manager" # Firefox extension
|
"onepassword-password-manager" # Firefox extension
|
||||||
];
|
];
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs._1password-cli
|
pkgs._1password-cli
|
||||||
]
|
] ++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
|
||||||
++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
|
|
||||||
|
|
||||||
# # Firefox extension
|
# Firefox extension
|
||||||
# programs.firefox.profiles.default.extensions.packages = [
|
programs.firefox.profiles.default.extensions.packages = [
|
||||||
# pkgs.nur.repos.rycee.firefox-addons.onepassword-password-manager
|
pkgs.nur.repos.rycee.firefox-addons.onepassword-password-manager
|
||||||
# ];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# # https://1password.community/discussion/135462/firefox-extension-does-not-connect-to-linux-app
|
# # https://1password.community/discussion/135462/firefox-extension-does-not-connect-to-linux-app
|
||||||
|
|||||||
@@ -174,10 +174,8 @@ in
|
|||||||
filters = {
|
filters = {
|
||||||
"text/plain" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
"text/plain" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||||
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/libexec/aerc/filters/calendar";
|
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/libexec/aerc/filters/calendar";
|
||||||
# "text/html" =
|
|
||||||
# "${pkgs.aerc}/libexec/aerc/filters/html | ${pkgs.aerc}/libexec/aerc/filters/colorize"; # Requires w3m, dante
|
|
||||||
"text/html" =
|
"text/html" =
|
||||||
"!${pkgs.chawan}/bin/cha --type text/html --opt display.image-mode=kitty --opt display.columns=100 --opt display.force-columns=true";
|
"${pkgs.aerc}/libexec/aerc/filters/html | ${pkgs.aerc}/libexec/aerc/filters/colorize"; # Requires w3m, dante
|
||||||
# "text/*" =
|
# "text/*" =
|
||||||
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
|
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
|
||||||
"message/delivery-status" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
"message/delivery-status" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||||
@@ -204,7 +202,7 @@ in
|
|||||||
|
|
||||||
xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux) {
|
xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux) {
|
||||||
name = "aerc";
|
name = "aerc";
|
||||||
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} -e aerc %u";
|
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} aerc %u";
|
||||||
};
|
};
|
||||||
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
|
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
|
||||||
"${config.xsession.windowManager.i3.config.modifier}+Shift+e" =
|
"${config.xsession.windowManager.i3.config.modifier}+Shift+e" =
|
||||||
@@ -214,7 +212,7 @@ in
|
|||||||
if terminal == pkgs.wezterm then
|
if terminal == pkgs.wezterm then
|
||||||
"start --class com.noah.aerc -- aerc"
|
"start --class com.noah.aerc -- aerc"
|
||||||
else
|
else
|
||||||
"--class=com.noah.aerc -e aerc";
|
"--class=com.noah.aerc --command=aerc";
|
||||||
in
|
in
|
||||||
"exec ${
|
"exec ${
|
||||||
# Don't name the script `aerc` or it will affect grep
|
# Don't name the script `aerc` or it will affect grep
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
accounts.calendar.accounts.default = {
|
accounts.calendar.accounts.default = {
|
||||||
|
basePath = "other/calendars"; # Where to save calendars in ~ directory
|
||||||
name = "personal";
|
name = "personal";
|
||||||
local.type = "filesystem";
|
local.type = "filesystem";
|
||||||
primary = true;
|
primary = true;
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ in
|
|||||||
rustfmt
|
rustfmt
|
||||||
pkg-config
|
pkg-config
|
||||||
openssl
|
openssl
|
||||||
rust-analyzer
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.nmasur.presets.programs.chawan;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options.nmasur.presets.programs.chawan.enable = lib.mkEnableOption "chawan TUI web browser";
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
programs.chawan = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
external.copy-cmd = if pkgs.stdenv.isLinux then "xclip -selection clipboard -in" else "pbcopy";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Set Chawan as the default app for manual pages
|
|
||||||
home.sessionVariables = {
|
|
||||||
MANPAGER = "${lib.getExe pkgs.chawan} -T text/x-ansi";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.fish.shellAbbrs.man = "mancha";
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -29,7 +29,7 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
# Always make the dotfiles directory considered safe for git and direnv
|
# Always make the dotfiles directory considered safe for git and direnv
|
||||||
programs.git.settings.safe.directory = cfg.path;
|
programs.git.extraConfig.safe.directory = cfg.path;
|
||||||
programs.direnv.config.whitelist.prefix = [ cfg.path ];
|
programs.direnv.config.whitelist.prefix = [ cfg.path ];
|
||||||
|
|
||||||
home.activation = {
|
home.activation = {
|
||||||
|
|||||||
@@ -46,8 +46,6 @@ in
|
|||||||
ublacklist
|
ublacklist
|
||||||
vimium
|
vimium
|
||||||
wappalyzer # TODO: only for work profile
|
wappalyzer # TODO: only for work profile
|
||||||
pkgs.nmasur.firefox-history-exporter
|
|
||||||
# copy-as-markdown
|
|
||||||
# saml-tracer
|
# saml-tracer
|
||||||
# text-fragment
|
# text-fragment
|
||||||
];
|
];
|
||||||
@@ -63,7 +61,6 @@ in
|
|||||||
"trailhead.firstrun.didSeeAboutWelcome" = true; # Disable welcome splash
|
"trailhead.firstrun.didSeeAboutWelcome" = true; # Disable welcome splash
|
||||||
"dom.forms.autocomplete.formautofill" = false; # Disable autofill
|
"dom.forms.autocomplete.formautofill" = false; # Disable autofill
|
||||||
"extensions.formautofill.creditCards.enabled" = false; # Disable credit cards
|
"extensions.formautofill.creditCards.enabled" = false; # Disable credit cards
|
||||||
"extensions.autoDisableScopes" = false; # Enable extensions automatically
|
|
||||||
"dom.payments.defaults.saveAddress" = false; # Disable address save
|
"dom.payments.defaults.saveAddress" = false; # Disable address save
|
||||||
"general.autoScroll" = true; # Drag middle-mouse to scroll
|
"general.autoScroll" = true; # Drag middle-mouse to scroll
|
||||||
"services.sync.prefs.sync.general.autoScroll" = false; # Prevent disabling autoscroll
|
"services.sync.prefs.sync.general.autoScroll" = false; # Prevent disabling autoscroll
|
||||||
@@ -190,7 +187,7 @@ in
|
|||||||
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
|
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
|
||||||
"${config.xsession.windowManager.i3.config.modifier}+Shift+b" = "exec ${
|
"${config.xsession.windowManager.i3.config.modifier}+Shift+b" = "exec ${
|
||||||
# Don't name the script `firefox` or it will affect grep
|
# Don't name the script `firefox` or it will affect grep
|
||||||
toString (
|
builtins.toString (
|
||||||
pkgs.writeShellScript "focus-ff.sh" ''
|
pkgs.writeShellScript "focus-ff.sh" ''
|
||||||
count=$(ps aux | grep -c firefox)
|
count=$(ps aux | grep -c firefox)
|
||||||
if [ "$count" -eq 1 ]; then
|
if [ "$count" -eq 1 ]; then
|
||||||
|
|||||||
@@ -16,13 +16,12 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
# Set the i3 terminal
|
# Set the i3 terminal
|
||||||
nmasur.presets.services.i3.terminal =
|
nmasur.presets.services.i3.terminal = config.programs.ghostty.package;
|
||||||
if pkgs.stdenv.isDarwin then pkgs.alacritty else config.programs.ghostty.package;
|
|
||||||
|
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
package = if pkgs.stdenv.isDarwin then null else pkgs.ghostty;
|
package = if pkgs.stdenv.isDarwin then pkgs.nur.repos.DimitarNestorov.ghostty else pkgs.ghostty;
|
||||||
|
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
enableBashIntegration = true;
|
enableBashIntegration = true;
|
||||||
@@ -38,8 +37,8 @@ in
|
|||||||
fullscreen = if pkgs.stdenv.isDarwin then true else false;
|
fullscreen = if pkgs.stdenv.isDarwin then true else false;
|
||||||
keybind = [
|
keybind = [
|
||||||
"super+t=unbind" # Pass super-t to underlying tool (e.g. zellij tabs)
|
"super+t=unbind" # Pass super-t to underlying tool (e.g. zellij tabs)
|
||||||
"super+shift+bracket_right=unbind"
|
"super+shift+]=unbind"
|
||||||
"super+shift+bracket_left=unbind"
|
"super+shift+[=unbind"
|
||||||
"ctrl+tab=unbind"
|
"ctrl+tab=unbind"
|
||||||
"ctrl+shift+tab=unbind"
|
"ctrl+shift+tab=unbind"
|
||||||
"ctrl+tab=text:\\x1b[9;5u"
|
"ctrl+tab=text:\\x1b[9;5u"
|
||||||
|
|||||||
@@ -39,8 +39,8 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
settings.user.name = lib.mkForce cfg.work.name;
|
userName = lib.mkForce cfg.work.name;
|
||||||
settings.user.email = lib.mkForce cfg.work.email;
|
userEmail = lib.mkForce cfg.work.email;
|
||||||
includes = [
|
includes = [
|
||||||
{
|
{
|
||||||
path = "${config.home.homeDirectory}/${config.xdg.configFile."git/personal".target}";
|
path = "${config.home.homeDirectory}/${config.xdg.configFile."git/personal".target}";
|
||||||
|
|||||||
@@ -29,11 +29,9 @@ in
|
|||||||
|
|
||||||
programs.git = {
|
programs.git = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
userName = cfg.name;
|
||||||
user = {
|
userEmail = cfg.email;
|
||||||
name = cfg.name;
|
extraConfig = {
|
||||||
email = cfg.email;
|
|
||||||
};
|
|
||||||
core.pager = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight | less --no-init";
|
core.pager = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight | less --no-init";
|
||||||
interactive.difffilter = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight";
|
interactive.difffilter = "${pkgs.git}/share/git/contrib/diff-highlight/diff-highlight";
|
||||||
pager = {
|
pager = {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ in
|
|||||||
extensions = [
|
extensions = [
|
||||||
pkgs.nmasur.gh-collaborators
|
pkgs.nmasur.gh-collaborators
|
||||||
pkgs.gh-dash
|
pkgs.gh-dash
|
||||||
|
pkgs.gh-copilot
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,62 +7,6 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.nmasur.presets.programs.helix;
|
cfg = config.nmasur.presets.programs.helix;
|
||||||
|
|
||||||
blame_file_pretty = pkgs.writeShellScriptBin "blame_file_pretty" ''
|
|
||||||
# Source: https://gist.github.com/gloaysa/828707f067e3bb20da18d72fa5d4963a
|
|
||||||
# Utility for Helix: open the patch for the commit that last touched the current line.
|
|
||||||
# If the line isn’t committed yet, it shows the working-tree diff for THIS file only.
|
|
||||||
# The script writes the diff to /tmp and prints the absolute path to stdout
|
|
||||||
# Adjust `context` to see more/fewer unchanged lines around the change (default: 3).
|
|
||||||
#
|
|
||||||
# usage: git-file_pretty.sh <file> <line> [context_lines]
|
|
||||||
# Helix mapping example:
|
|
||||||
# B = ':open %sh{ ~/.config/helix/utils/git-blame-commit.sh "%{buffer_name}" %{cursor_line} 3 }'
|
|
||||||
file="$1"
|
|
||||||
line="$2"
|
|
||||||
ctx="''${3:-3}"
|
|
||||||
|
|
||||||
# blame the exact line
|
|
||||||
porc="$(git blame -L "$line",+1 --porcelain -- "$file")" || exit 1
|
|
||||||
sha="$(printf '%s\n' "$porc" | awk 'NR==1{print $1}')"
|
|
||||||
commit_path="$(printf '%s\n' "$porc" | awk '/^filename /{print substr($0,10); exit}')"
|
|
||||||
|
|
||||||
out="/tmp/hx-blame_$(basename "$file")_''${sha:-wt}.diff"
|
|
||||||
|
|
||||||
if [ -z "$sha" ] || [ "$sha" = 0000000000000000000000000000000000000000 ] || [ "$sha" = "^" ]; then
|
|
||||||
# uncommitted line → working tree diff for this file
|
|
||||||
git --no-pager diff --no-color -U"$ctx" -- "$file" > "$out"
|
|
||||||
else
|
|
||||||
# committed line → only this file’s patch in that commit
|
|
||||||
git --no-pager show --no-color -M -C -U"$ctx" "$sha" -- "''${commit_path:-$file}" > "$out"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# "return" the path for :open %sh{…}
|
|
||||||
printf '%s' "$out"
|
|
||||||
'';
|
|
||||||
|
|
||||||
blame_line_pretty = pkgs.writeShellScriptBin "blame_line_pretty" ''
|
|
||||||
# Source: https://gist.github.com/gloaysa/828707f067e3bb20da18d72fa5d4963a
|
|
||||||
# Utility for Helix: pretty-print blame info for the line under the cursor.
|
|
||||||
# Quite basic.
|
|
||||||
#
|
|
||||||
# usage: blame_line_pretty <file> <line>
|
|
||||||
# Helix mapping example:
|
|
||||||
# b = ":run-shell-command ~/.config/helix/utils/blame_line_pretty.sh %{buffer_name} %{cursor_line}"
|
|
||||||
file="$1"; line="$2"
|
|
||||||
out="$(git blame -L "$line",+1 --porcelain -- "$file")" || return 1
|
|
||||||
|
|
||||||
sha="$(printf '%s\n' "$out" | awk 'NR==1{print $1}')"
|
|
||||||
author="$(printf '%s\n' "$out" | awk -F'author ' '/^author /{print $2; exit}')"
|
|
||||||
epoch="$(printf '%s\n' "$out" | awk '/^author-time /{print $2; exit}')"
|
|
||||||
# dd-mm-yyyy (macOS `date -r`; fallback to gdate if present)
|
|
||||||
date="$( (date -r "$epoch" +%d-%m-%Y\ %H:%M 2>/dev/null) || (gdate -d "@$epoch" +%d-%m-%Y\ %H:%M 2>/dev/null) || printf '%s' "$epoch")"
|
|
||||||
summary="$(printf '%s\n' "$out" | awk -F'summary ' '/^summary /{print $2; exit}')"
|
|
||||||
change="$(printf '%s\n' "$out" | tail -n 1)"
|
|
||||||
|
|
||||||
printf "%s\n%s\n%s\n%s\n%s\n" "$sha" "$author" "$date" "$summary" "$change"
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -72,13 +16,13 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
# Use Neovim as the editor for git commit messages
|
# Use Neovim as the editor for git commit messages
|
||||||
programs.git.settings.core.editor = lib.mkForce "${lib.getExe pkgs.helix}";
|
programs.git.extraConfig.core.editor = lib.mkForce "${lib.getExe pkgs.helix}";
|
||||||
programs.jujutsu.settings.ui.editor = lib.mkForce "${lib.getExe pkgs.helix}";
|
programs.jujutsu.settings.ui.editor = lib.mkForce "${lib.getExe pkgs.helix}";
|
||||||
|
|
||||||
# Set Neovim as the default app for text editing and manual pages
|
# Set Neovim as the default app for text editing and manual pages
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
EDITOR = lib.mkForce "${lib.getExe pkgs.helix}";
|
EDITOR = lib.mkForce "${lib.getExe pkgs.helix}";
|
||||||
# MANPAGER = lib.mkForce "sh -c 'col -bx | ${lib.getExe pkgs.helix}'";
|
MANPAGER = lib.mkForce "sh -c 'col -bx | ${lib.getExe pkgs.helix}'";
|
||||||
MANWIDTH = 87;
|
MANWIDTH = 87;
|
||||||
MANROFFOPT = "-c";
|
MANROFFOPT = "-c";
|
||||||
};
|
};
|
||||||
@@ -102,10 +46,6 @@ in
|
|||||||
command = "${pkgs.nixd}/bin/nixd";
|
command = "${pkgs.nixd}/bin/nixd";
|
||||||
};
|
};
|
||||||
|
|
||||||
language-server.ty = {
|
|
||||||
command = "${pkgs.ty}/bin/ty";
|
|
||||||
};
|
|
||||||
|
|
||||||
language-server.fish-lsp = {
|
language-server.fish-lsp = {
|
||||||
command = "${pkgs.fish-lsp}/bin/fish-lsp";
|
command = "${pkgs.fish-lsp}/bin/fish-lsp";
|
||||||
};
|
};
|
||||||
@@ -118,14 +58,8 @@ in
|
|||||||
command = lib.getExe pkgs.marksman;
|
command = lib.getExe pkgs.marksman;
|
||||||
};
|
};
|
||||||
|
|
||||||
language-server.rumdl = {
|
|
||||||
command = lib.getExe pkgs.rumdl;
|
|
||||||
args = [ "server" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
language-server.terraform-ls = {
|
language-server.terraform-ls = {
|
||||||
command = "${lib.getExe pkgs.terraform-ls}";
|
command = "${lib.getExe pkgs.terraform-ls} serve";
|
||||||
args = [ "serve" ];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
language-server.bash-language-server = {
|
language-server.bash-language-server = {
|
||||||
@@ -148,16 +82,10 @@ in
|
|||||||
{
|
{
|
||||||
name = "markdown";
|
name = "markdown";
|
||||||
auto-format = false;
|
auto-format = false;
|
||||||
language-servers = [
|
language-servers = [ "marksman" ];
|
||||||
"marksman"
|
|
||||||
"rumdl"
|
|
||||||
];
|
|
||||||
formatter = {
|
formatter = {
|
||||||
command = lib.getExe pkgs.rumdl;
|
command = lib.getExe pkgs.mdformat;
|
||||||
args = [
|
args = [ "-" ];
|
||||||
"fmt"
|
|
||||||
"-"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
# Allows return key to continue the token on the next line
|
# Allows return key to continue the token on the next line
|
||||||
comment-tokens = [
|
comment-tokens = [
|
||||||
@@ -169,18 +97,9 @@ in
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "hcl";
|
name = "tfvars";
|
||||||
scope = "source.hcl";
|
|
||||||
# injection-regex = "terraform";
|
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
language-servers = [ "terraform-ls" ];
|
language-servers = [ "terraform-ls" ];
|
||||||
language-id = "terraform";
|
|
||||||
file-types = [
|
|
||||||
"tf"
|
|
||||||
"tfvars"
|
|
||||||
"terraform"
|
|
||||||
{ glob = "*.auto.tfvars"; }
|
|
||||||
];
|
|
||||||
formatter = {
|
formatter = {
|
||||||
command = lib.getExe pkgs.terraform;
|
command = lib.getExe pkgs.terraform;
|
||||||
args = [
|
args = [
|
||||||
@@ -190,15 +109,11 @@ in
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "hcl-packer";
|
name = "hcl";
|
||||||
scope = "source.hcl-packer";
|
|
||||||
auto-format = true;
|
auto-format = true;
|
||||||
file-types = [
|
language-servers = [ "terraform-ls" ];
|
||||||
"hcl"
|
|
||||||
"pkr.hcl"
|
|
||||||
];
|
|
||||||
formatter = {
|
formatter = {
|
||||||
command = "${pkgs.packer}/bin/packer";
|
command = lib.getExe pkgs.terraform;
|
||||||
args = [
|
args = [
|
||||||
"fmt"
|
"fmt"
|
||||||
"-"
|
"-"
|
||||||
@@ -259,9 +174,18 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
# Commandline git blame
|
# Commandline git blame
|
||||||
# space.B = ":echo %sh{git log -n1 --date=short --pretty=format:'%%h %%ad %%s' $(git blame -L %{cursor_line},+1 \"%{buffer_name}\" | cut -d' ' -f1)}";
|
space.B = ":echo %sh{git log -n1 --date=short --pretty=format:'%%h %%ad %%s' $(git blame -L %{cursor_line},+1 \"%{buffer_name}\" | cut -d' ' -f1)}";
|
||||||
space.B = '':open %sh{ ${blame_line_pretty}/bin/blame_line_pretty "%{buffer_name}" %{cursor_line} 3 }'';
|
|
||||||
space.i = '':open %sh{ ${blame_file_pretty}/bin/blame_file_pretty "%{buffer_name}" %{cursor_line} 3 }'';
|
# Open yazi
|
||||||
|
# https://github.com/sxyazi/yazi/pull/2461
|
||||||
|
# Won't work until next Helix release
|
||||||
|
C-y = [
|
||||||
|
":sh rm -f /tmp/unique-file"
|
||||||
|
":insert-output ${lib.getExe pkgs.yazi} %{buffer_name} --chooser-file=/tmp/unique-file"
|
||||||
|
":insert-output echo \\x1b[?1049h\\x1b[?2004h > /dev/tty"
|
||||||
|
":open %sh{cat /tmp/unique-file}"
|
||||||
|
":redraw"
|
||||||
|
];
|
||||||
|
|
||||||
# Extend selection above
|
# Extend selection above
|
||||||
X = "select_line_above";
|
X = "select_line_above";
|
||||||
@@ -327,10 +251,6 @@ in
|
|||||||
git-exclude = true; # Skip excluded files
|
git-exclude = true; # Skip excluded files
|
||||||
};
|
};
|
||||||
|
|
||||||
completion-replace = true; # Replace whole word with completion
|
|
||||||
trim-trailing-whitespace = true;
|
|
||||||
# rainbow-brackets = true; # Make it easier to match parentheses
|
|
||||||
|
|
||||||
# Show whitespace visible to the user
|
# Show whitespace visible to the user
|
||||||
# Waiting for trailing whitespace option ideally
|
# Waiting for trailing whitespace option ideally
|
||||||
whitespace = {
|
whitespace = {
|
||||||
@@ -347,7 +267,7 @@ in
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
themes.base16 = {
|
themes."${config.programs.helix.settings.theme}" = {
|
||||||
"attributes" = config.theme.colors.base09;
|
"attributes" = config.theme.colors.base09;
|
||||||
"comment" = {
|
"comment" = {
|
||||||
fg = config.theme.colors.base03;
|
fg = config.theme.colors.base03;
|
||||||
@@ -527,219 +447,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
themes.alabaster-style = {
|
|
||||||
"attribute" = config.theme.colors.base05;
|
|
||||||
"comment" = {
|
|
||||||
fg = config.theme.colors.base0A;
|
|
||||||
# modifiers = [ "italic" ];
|
|
||||||
};
|
};
|
||||||
"constant" = config.theme.colors.base0E;
|
|
||||||
"constant.numeric" = config.theme.colors.base0E;
|
|
||||||
"constant.builtin" = config.theme.colors.base0E;
|
|
||||||
"constant.character" = config.theme.colors.base0E;
|
|
||||||
"constant.character.escape" = config.theme.colors.base0C;
|
|
||||||
"constructor" = config.theme.colors.base0D;
|
|
||||||
"debug" = config.theme.colors.base03;
|
|
||||||
"diagnostic" = {
|
|
||||||
modifiers = [ "underlined" ];
|
|
||||||
};
|
|
||||||
"diff.delta" = config.theme.colors.base09;
|
|
||||||
"diff.minus" = config.theme.colors.base08;
|
|
||||||
"diff.plus" = config.theme.colors.base0B;
|
|
||||||
"error" = config.theme.colors.base08;
|
|
||||||
"function" = config.theme.colors.base0D;
|
|
||||||
"hint" = config.theme.colors.base03;
|
|
||||||
"info" = config.theme.colors.base0D;
|
|
||||||
"keyword" = config.theme.colors.base05;
|
|
||||||
"keyword.control" = config.theme.colors.base05;
|
|
||||||
"keyword.operator" = config.theme.colors.base05;
|
|
||||||
"label" = config.theme.colors.base0E;
|
|
||||||
"namespace" = config.theme.colors.base0E;
|
|
||||||
"operator" = config.theme.colors.base05;
|
|
||||||
"punctuation" = config.theme.colors.base04;
|
|
||||||
"punctuation.bracket" = config.theme.colors.base04;
|
|
||||||
"punctuation.delimiter" = config.theme.colors.base04;
|
|
||||||
"special" = config.theme.colors.base0D;
|
|
||||||
"string" = config.theme.colors.base0B;
|
|
||||||
"string.regexp" = config.theme.colors.base0B;
|
|
||||||
"string.special" = config.theme.colors.base0C;
|
|
||||||
"type" = config.theme.colors.base0A;
|
|
||||||
"variable" = config.theme.colors.base05;
|
|
||||||
"variable.parameter" = config.theme.colors.base05;
|
|
||||||
"variable.builtin" = config.theme.colors.base05;
|
|
||||||
"variable.other.member" = config.theme.colors.base05;
|
|
||||||
"warning" = config.theme.colors.base09;
|
|
||||||
"markup.bold" = {
|
|
||||||
fg = config.theme.colors.base0A;
|
|
||||||
modifiers = [ "bold" ];
|
|
||||||
};
|
|
||||||
"markup.heading" = config.theme.colors.base0D;
|
|
||||||
"markup.italic" = {
|
|
||||||
fg = config.theme.colors.base0E;
|
|
||||||
modifiers = [ "italic" ];
|
|
||||||
};
|
|
||||||
"markup.link.text" = config.theme.colors.base08;
|
|
||||||
"markup.link.url" = {
|
|
||||||
fg = config.theme.colors.base09;
|
|
||||||
modifiers = [ "underlined" ];
|
|
||||||
};
|
|
||||||
"markup.list" = config.theme.colors.base08;
|
|
||||||
"markup.quote" = config.theme.colors.base0C;
|
|
||||||
"markup.raw" = config.theme.colors.base0B;
|
|
||||||
"markup.strikethrough" = {
|
|
||||||
modifiers = [ "crossed_out" ];
|
|
||||||
};
|
|
||||||
"diagnostic.hint" = {
|
|
||||||
underline = {
|
|
||||||
style = "curl";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"diagnostic.info" = {
|
|
||||||
underline = {
|
|
||||||
style = "curl";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"diagnostic.warning" = {
|
|
||||||
underline = {
|
|
||||||
style = "curl";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"diagnostic.error" = {
|
|
||||||
underline = {
|
|
||||||
style = "curl";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"ui.background" = {
|
|
||||||
bg = config.theme.colors.base00;
|
|
||||||
};
|
|
||||||
"ui.bufferline.active" = {
|
|
||||||
fg = config.theme.colors.base00;
|
|
||||||
bg = config.theme.colors.base03;
|
|
||||||
modifiers = [ "bold" ];
|
|
||||||
};
|
|
||||||
"ui.bufferline" = {
|
|
||||||
fg = config.theme.colors.base04;
|
|
||||||
bg = config.theme.colors.base00;
|
|
||||||
};
|
|
||||||
"ui.cursor" = {
|
|
||||||
fg = config.theme.colors.base04;
|
|
||||||
modifiers = [ "reversed" ];
|
|
||||||
};
|
|
||||||
"ui.cursor.insert" = {
|
|
||||||
fg = config.theme.colors.base0A;
|
|
||||||
modifiers = [ "reversed" ];
|
|
||||||
};
|
|
||||||
"ui.cursorline.primary" = {
|
|
||||||
fg = config.theme.colors.base05;
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.cursor.match" = {
|
|
||||||
fg = config.theme.colors.base03;
|
|
||||||
modifiers = [ "reversed" ];
|
|
||||||
};
|
|
||||||
"ui.cursor.select" = {
|
|
||||||
fg = config.theme.colors.base04;
|
|
||||||
modifiers = [ "reversed" ];
|
|
||||||
};
|
|
||||||
"ui.gutter" = {
|
|
||||||
bg = config.theme.colors.base00;
|
|
||||||
};
|
|
||||||
"ui.help" = {
|
|
||||||
fg = config.theme.colors.base06;
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.linenr" = {
|
|
||||||
fg = config.theme.colors.base03;
|
|
||||||
bg = config.theme.colors.base00;
|
|
||||||
};
|
|
||||||
"ui.linenr.selected" = {
|
|
||||||
fg = config.theme.colors.base04;
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
modifiers = [ "bold" ];
|
|
||||||
};
|
|
||||||
"ui.menu" = {
|
|
||||||
fg = config.theme.colors.base05;
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.menu.scroll" = {
|
|
||||||
fg = config.theme.colors.base03;
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.menu.selected" = {
|
|
||||||
fg = config.theme.colors.base01;
|
|
||||||
bg = config.theme.colors.base04;
|
|
||||||
};
|
|
||||||
"ui.popup" = {
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.selection" = {
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.selection.primary" = {
|
|
||||||
bg = config.theme.colors.base02;
|
|
||||||
};
|
|
||||||
"ui.statusline" = {
|
|
||||||
fg = config.theme.colors.base04;
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.statusline.inactive" = {
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
fg = config.theme.colors.base03;
|
|
||||||
};
|
|
||||||
"ui.statusline.insert" = {
|
|
||||||
fg = config.theme.colors.base00;
|
|
||||||
bg = config.theme.colors.base0B;
|
|
||||||
};
|
|
||||||
"ui.statusline.normal" = {
|
|
||||||
fg = config.theme.colors.base00;
|
|
||||||
bg = config.theme.colors.base03;
|
|
||||||
};
|
|
||||||
"ui.statusline.select" = {
|
|
||||||
fg = config.theme.colors.base00;
|
|
||||||
bg = config.theme.colors.base0F;
|
|
||||||
};
|
|
||||||
"ui.text" = config.theme.colors.base05;
|
|
||||||
"ui.text.focus" = config.theme.colors.base05;
|
|
||||||
"ui.virtual.indent-guide" = {
|
|
||||||
fg = config.theme.colors.base03;
|
|
||||||
};
|
|
||||||
"ui.virtual.inlay-hint" = {
|
|
||||||
fg = config.theme.colors.base03;
|
|
||||||
};
|
|
||||||
"ui.virtual.ruler" = {
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
"ui.virtual.jump-label" = {
|
|
||||||
fg = config.theme.colors.base0A;
|
|
||||||
modifiers = [ "bold" ];
|
|
||||||
};
|
|
||||||
"ui.window" = {
|
|
||||||
bg = config.theme.colors.base01;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
# Create a desktop option for launching Helix from a file manager
|
|
||||||
# (Requires launching the terminal and then executing Helix)
|
|
||||||
xdg.desktopEntries.helix =
|
|
||||||
lib.mkIf (pkgs.stdenv.isLinux && config.nmasur.presets.services.i3.enable)
|
|
||||||
{
|
|
||||||
name = "Helix wrapper";
|
|
||||||
exec = ''sh -c "${lib.getExe config.nmasur.presets.services.i3.terminal} --command='hx \$1'" _ %F ''; # TODO: change to work for any terminal
|
|
||||||
mimeType = [
|
|
||||||
"text/plain"
|
|
||||||
"text/markdown"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
xdg.mimeApps.defaultApplications = {
|
|
||||||
"text/plain" = lib.mkBefore [ "Helix.desktop" ];
|
|
||||||
"text/markdown" = lib.mkBefore [ "Helix.desktop" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writers.writeDashBin "xterm" ''${lib.getExe config.nmasur.presets.services.i3.terminal} +new-window --command"$@" '')
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -20,8 +20,8 @@ in
|
|||||||
# https://github.com/martinvonz/jj/blob/main/docs/config.md
|
# https://github.com/martinvonz/jj/blob/main/docs/config.md
|
||||||
settings = {
|
settings = {
|
||||||
user = {
|
user = {
|
||||||
name = config.programs.git.settings.user.name;
|
name = config.programs.git.userName;
|
||||||
email = config.programs.git.settings.user.email;
|
email = config.programs.git.userEmail;
|
||||||
};
|
};
|
||||||
ui.paginate = "never";
|
ui.paginate = "never";
|
||||||
|
|
||||||
@@ -34,9 +34,6 @@ in
|
|||||||
home.packages = [
|
home.packages = [
|
||||||
# Required for the fsmonitor to auto-snapshot
|
# Required for the fsmonitor to auto-snapshot
|
||||||
pkgs.watchman
|
pkgs.watchman
|
||||||
|
|
||||||
# Required to be on path to work in Zellij
|
|
||||||
pkgs.jjui
|
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -38,13 +38,13 @@ in
|
|||||||
);
|
);
|
||||||
|
|
||||||
# Use Neovim as the editor for git commit messages
|
# Use Neovim as the editor for git commit messages
|
||||||
programs.git.settings.core.editor = "${lib.getExe cfg.package}";
|
programs.git.extraConfig.core.editor = "${lib.getExe cfg.package}";
|
||||||
programs.jujutsu.settings.ui.editor = "${lib.getExe cfg.package}";
|
programs.jujutsu.settings.ui.editor = "${lib.getExe cfg.package}";
|
||||||
|
|
||||||
# Set Neovim as the default app for text editing and manual pages
|
# Set Neovim as the default app for text editing and manual pages
|
||||||
home.sessionVariables = {
|
home.sessionVariables = {
|
||||||
EDITOR = "${lib.getExe cfg.package}";
|
EDITOR = "${lib.getExe cfg.package}";
|
||||||
# MANPAGER = "${lib.getExe cfg.package} +Man!";
|
MANPAGER = "${lib.getExe cfg.package} +Man!";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Create quick aliases for launching Neovim
|
# Create quick aliases for launching Neovim
|
||||||
@@ -66,7 +66,7 @@ in
|
|||||||
lib.mkIf (pkgs.stdenv.isLinux && config.nmasur.presets.services.i3.enable)
|
lib.mkIf (pkgs.stdenv.isLinux && config.nmasur.presets.services.i3.enable)
|
||||||
{
|
{
|
||||||
name = "Neovim wrapper";
|
name = "Neovim wrapper";
|
||||||
exec = ''${lib.getExe config.nmasur.presets.services.i3.terminal} --command="nvim %F"''; # TODO: change to generic
|
exec = "${lib.getExe config.nmasur.presets.services.i3.terminal} nvim %F"; # TODO: change to generic
|
||||||
mimeType = [
|
mimeType = [
|
||||||
"text/plain"
|
"text/plain"
|
||||||
"text/markdown"
|
"text/markdown"
|
||||||
|
|||||||
@@ -29,18 +29,6 @@ in
|
|||||||
doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path}
|
doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
rebuildNixosAndPause = lib.mkOption {
|
|
||||||
type = lib.types.package;
|
|
||||||
default = pkgs.writeShellScriptBin "rebuild-nixos-pause" ''
|
|
||||||
${lib.getExe cfg.commands.rebuildNixos} || read
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
rebuildHomeAndPause = lib.mkOption {
|
|
||||||
type = lib.types.package;
|
|
||||||
default = pkgs.writeShellScriptBin "rebuild-home-pause" ''
|
|
||||||
${lib.getExe cfg.commands.rebuildHome} || read
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,6 @@ in
|
|||||||
|
|
||||||
# Broken on 2023-12-11
|
# Broken on 2023-12-11
|
||||||
# https://forum.obsidian.md/t/electron-25-is-now-eol-please-upgrade-to-a-newer-version/72878/8
|
# https://forum.obsidian.md/t/electron-25-is-now-eol-please-upgrade-to-a-newer-version/72878/8
|
||||||
# allowInsecurePackages = [ "electron-36.9.5" ];
|
# insecurePackages = [ "electron-25.9.0" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBTYTRy
|
|
||||||
elYzTGpSNDQ3UEcwTXlVeGJleUJmWWhaeDdDQTFRcGpmNlNrQlNVCjA5L2JrS3Vx
|
|
||||||
Q0cyRkk5dTBLOHJXa0xJSG9MTDFnNjV1M0F5L3F5RUlVbW8KLT4gc3NoLWVkMjU1
|
|
||||||
MTkgWXlTVU1RIG5vNm1Xem9lN2pkS25WRi9xSlpZUjhuYmdUVDUvc2o4M0xqYURR
|
|
||||||
UmY0VGcKWVVQc2wyV0Jqbk9JR3N4bW5HOXFTZHpCa25EMC85eThQY05MdHdaeXZy
|
|
||||||
VQotPiBzc2gtZWQyNTUxOSBuanZYNUEgWXRVa3c4STZ3WmFaNThSdE1QdVpiMVR1
|
|
||||||
cm5hYXJsckZiRGtXLzN5RzJEawpkVHBscFd2c0R1SGxnZ3lKUnNnMEZtTUxoQlB4
|
|
||||||
dVBEbTkvUzBJSVRiV1hBCi0+IHNzaC1lZDI1NTE5IENxSU9VQSAvQjhVam1heHNU
|
|
||||||
elVrVGtvaUx1elFCeTdNTkRnN3c5NEc5MWg4dDU3NUhzCm5sUlhHclJrNldnVDhF
|
|
||||||
MTV2cGd3ZFhFdm1rM2ExWVFXbkNJYWlWY0VnUmsKLT4gc3NoLWVkMjU1MTkgejFP
|
|
||||||
Y1p3IGc1QUdkZEp0Z0xEekFjcHd4WVFVam9BZTBEQm9NR3QzQmxNS09VVXpHV2sK
|
|
||||||
c2tYSElVK2prRlF3VlFqKzlVUFRHUWU3TmFXcEdsV2FKWVhKT3pWZkxVNAotLS0g
|
|
||||||
c1cxdk5sL1c3dDZuVGp5VWJrTlBGZTByNjRxMGxTdHd0NFNHV1pyN2k5Ywr7SW9q
|
|
||||||
/FaTTUHB5QiCihA+385sNogq7Q1RvgT2Dwn9NdmMRd/ObESbokJXVSiDDEt6d39s
|
|
||||||
D/uoDY20p3PCk4julNn1
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (config.nmasur.settings) hostnames;
|
|
||||||
cfg = config.nmasur.presets.programs.thunderbird;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options.nmasur.presets.programs.thunderbird = {
|
|
||||||
enable = lib.mkEnableOption "Thunderbird email client";
|
|
||||||
calendar = {
|
|
||||||
username = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Username for the calendar service backend";
|
|
||||||
default = config.nmasur.settings.username;
|
|
||||||
};
|
|
||||||
passwordCommand = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Password for the calendar service backend";
|
|
||||||
default = config.accounts.email.accounts.home.passwordCommand;
|
|
||||||
};
|
|
||||||
hostname = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Hostname for the calendar service backend";
|
|
||||||
default = hostnames.content;
|
|
||||||
};
|
|
||||||
url = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "URL for the calendar service backend";
|
|
||||||
default = "https://${cfg.calendar.hostname}/remote.php/dav";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
tasks = {
|
|
||||||
username = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Username for the tasks service backend";
|
|
||||||
default = config.nmasur.settings.username;
|
|
||||||
};
|
|
||||||
passwordCommand = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Password for the tasks service backend";
|
|
||||||
default = "${lib.getExe pkgs.age} --decrypt --identity ~/.ssh/id_ed25519 ${pkgs.writeText "taskspass.age" (builtins.readFile ./taskspass.age)}";
|
|
||||||
};
|
|
||||||
hostname = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Hostname for the tasks service backend";
|
|
||||||
default = hostnames.content;
|
|
||||||
};
|
|
||||||
url = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "URL for the tasks service backend";
|
|
||||||
default = "https://${cfg.tasks.hostname}/remote.php/dav";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
programs.thunderbird = {
|
|
||||||
enable = true;
|
|
||||||
profiles.default = {
|
|
||||||
isDefault = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
accounts.email.accounts.home.thunderbird = {
|
|
||||||
enable = true;
|
|
||||||
profiles = [ "default" ];
|
|
||||||
};
|
|
||||||
accounts.calendar.basePath = "other/calendars"; # Where to save calendars in ~ directory
|
|
||||||
# accounts.calendar.accounts.home = {
|
|
||||||
# local.type = "filesystem";
|
|
||||||
# primary = true;
|
|
||||||
# remote = {
|
|
||||||
# passwordCommand = [ cfg.calendar.passwordCommand ];
|
|
||||||
# type = "caldav";
|
|
||||||
# url = cfg.calendar.url;
|
|
||||||
# userName = cfg.calendar.username;
|
|
||||||
# };
|
|
||||||
# thunderbird = {
|
|
||||||
# enable = true;
|
|
||||||
# profiles = [ "default" ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# accounts.calendar.accounts.tasks = {
|
|
||||||
# local.type = "filesystem";
|
|
||||||
# primary = false;
|
|
||||||
# remote = {
|
|
||||||
# passwordCommand = [ cfg.tasks.passwordCommand ];
|
|
||||||
# type = "caldav";
|
|
||||||
# url = cfg.tasks.url;
|
|
||||||
# userName = cfg.tasks.username;
|
|
||||||
# };
|
|
||||||
# thunderbird = {
|
|
||||||
# enable = true;
|
|
||||||
# profiles = [ "default" ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -16,7 +16,6 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
programs.zed-editor = {
|
programs.zed-editor = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.stable.zed-editor;
|
|
||||||
|
|
||||||
extensions = [
|
extensions = [
|
||||||
"nix"
|
"nix"
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (config.nmasur.settings) username;
|
|
||||||
cfg = config.nmasur.presets.programs.zellij;
|
cfg = config.nmasur.presets.programs.zellij;
|
||||||
|
|
||||||
zellij-switch-to-last = pkgs.writeShellScriptBin "zellij-switch-to-last" ''
|
zellij-switch-to-last = pkgs.writeShellScriptBin "zellij-switch-to-last" ''
|
||||||
@@ -54,8 +53,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.ghostty.settings.initial-command = lib.getExe pkgs.zellij;
|
|
||||||
|
|
||||||
xdg.configFile."zellij/layouts/compact-top.kdl".text = # kdl
|
xdg.configFile."zellij/layouts/compact-top.kdl".text = # kdl
|
||||||
''
|
''
|
||||||
layout {
|
layout {
|
||||||
@@ -88,7 +85,7 @@ in
|
|||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
enableZshIntegration = true;
|
enableZshIntegration = true;
|
||||||
attachExistingSession = true;
|
attachExistingSession = true;
|
||||||
exitShellOnExit = true;
|
exitShellOnExit = false;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
default_mode = "locked";
|
default_mode = "locked";
|
||||||
@@ -124,15 +121,9 @@ in
|
|||||||
shared = {
|
shared = {
|
||||||
"bind \"Alt Shift s\"" = {
|
"bind \"Alt Shift s\"" = {
|
||||||
Run = {
|
Run = {
|
||||||
_args =
|
_args = [
|
||||||
if pkgs.stdenv.isDarwin then
|
|
||||||
[
|
|
||||||
"env"
|
|
||||||
"PATH=/nix/var/nix/profiles/default/bin:/run/current-system/sw/bin:/usr/bin:/bin"
|
|
||||||
(lib.getExe zellij-switch-to-last)
|
(lib.getExe zellij-switch-to-last)
|
||||||
]
|
];
|
||||||
else
|
|
||||||
[ (lib.getExe zellij-switch-to-last) ];
|
|
||||||
close_on_exit = true;
|
close_on_exit = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -195,28 +186,9 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
"bind \"Alt Shift j\"" = {
|
"bind \"Alt Shift j\"" = {
|
||||||
Run = {
|
|
||||||
_args =
|
|
||||||
if pkgs.stdenv.isDarwin then
|
|
||||||
[
|
|
||||||
"env"
|
|
||||||
"PATH=${config.home.homeDirectory}/.nix-profile/bin:/etc/profiles/per-user/${username}/bin:/usr/bin"
|
|
||||||
(lib.getExe pkgs.jjui)
|
|
||||||
]
|
|
||||||
else
|
|
||||||
[ (lib.getExe pkgs.jjui) ];
|
|
||||||
close_on_exit = true;
|
|
||||||
floating = true;
|
|
||||||
x = "1%";
|
|
||||||
y = "1%";
|
|
||||||
width = "99%";
|
|
||||||
height = "99%";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt Shift y\"" = {
|
|
||||||
Run = {
|
Run = {
|
||||||
_args = [
|
_args = [
|
||||||
(lib.getExe pkgs.yazi)
|
(lib.getExe pkgs.lazyjj)
|
||||||
];
|
];
|
||||||
close_on_exit = true;
|
close_on_exit = true;
|
||||||
floating = true;
|
floating = true;
|
||||||
@@ -271,16 +243,6 @@ in
|
|||||||
_args = [ "Left" ];
|
_args = [ "Left" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
"bind \"Alt j\"" = {
|
|
||||||
MoveFocus = {
|
|
||||||
_args = [ "Down" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"bind \"Alt k\"" = {
|
|
||||||
MoveFocus = {
|
|
||||||
_args = [ "Up" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ function obj:init()
|
|||||||
self.launcher:bind("ctrl", "space", function() end)
|
self.launcher:bind("ctrl", "space", function() end)
|
||||||
self.launcher:bind("", "return", function()
|
self.launcher:bind("", "return", function()
|
||||||
-- self:switch("@wezterm@")
|
-- self:switch("@wezterm@")
|
||||||
self:switch("/Applications/Ghostty.app")
|
self:switch("@ghostty@")
|
||||||
end)
|
end)
|
||||||
self.launcher:bind("", "C", function()
|
self.launcher:bind("", "C", function()
|
||||||
self:switch("Calendar.app")
|
self:switch("Calendar.app")
|
||||||
|
|||||||
@@ -23,10 +23,11 @@ in
|
|||||||
{
|
{
|
||||||
discord = "${pkgs.discord}/Applications/Discord.app";
|
discord = "${pkgs.discord}/Applications/Discord.app";
|
||||||
firefox = "${pkgs.firefox-unwrapped}/Applications/Firefox.app";
|
firefox = "${pkgs.firefox-unwrapped}/Applications/Firefox.app";
|
||||||
|
ghostty = "${config.programs.ghostty.package}/Applications/Ghostty.app";
|
||||||
obsidian = "${pkgs.obsidian}/Applications/Obsidian.app";
|
obsidian = "${pkgs.obsidian}/Applications/Obsidian.app";
|
||||||
slack = "${pkgs.slack}/Applications/Slack.app";
|
slack = "${pkgs.slack}/Applications/Slack.app";
|
||||||
wezterm = "${pkgs.wezterm}/Applications/WezTerm.app";
|
wezterm = "${pkgs.wezterm}/Applications/WezTerm.app";
|
||||||
zed = "${config.programs.zed-editor.package}/Applications/Zed.app";
|
zed = "${pkgs.zed-editor}/Applications/Zed.app";
|
||||||
};
|
};
|
||||||
xdg.configFile."hammerspoon/Spoons/MoveWindow.spoon".source = ./Spoons/MoveWindow.spoon;
|
xdg.configFile."hammerspoon/Spoons/MoveWindow.spoon".source = ./Spoons/MoveWindow.spoon;
|
||||||
|
|
||||||
|
|||||||
@@ -214,9 +214,9 @@ in
|
|||||||
cfg.commands.lockScreen != null
|
cfg.commands.lockScreen != null
|
||||||
) "exec ${cfg.commands.lockScreen}";
|
) "exec ${cfg.commands.lockScreen}";
|
||||||
"${modifier}+Mod1+h" =
|
"${modifier}+Mod1+h" =
|
||||||
''exec --no-startup-id ${lib.getExe cfg.terminal} -e "${lib.getExe config.nmasur.presets.programs.nixpkgs.commands.rebuildHome} '';
|
''exec --no-startup-id ${lib.getExe cfg.terminal} --command="${pkgs.home-manager}/bin/home-manager switch --flake ${config.nmasur.presets.programs.dotfiles.path}#''${hostname} || read" '';
|
||||||
"${modifier}+Mod1+r" =
|
"${modifier}+Mod1+r" =
|
||||||
"exec --no-startup-id ${lib.getExe cfg.terminal} -e ${lib.getExe config.nmasur.presets.programs.nixpkgs.commands.rebuildNixos}";
|
"exec --no-startup-id ${lib.getExe cfg.terminal} --command='doas nixos-rebuild switch --flake ${config.nmasur.presets.programs.dotfiles.path} || read'";
|
||||||
|
|
||||||
# Window options
|
# Window options
|
||||||
"${modifier}+q" = "kill";
|
"${modifier}+q" = "kill";
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ in
|
|||||||
nmasur.presets = {
|
nmasur.presets = {
|
||||||
programs = {
|
programs = {
|
||||||
bat.enable = lib.mkDefault true;
|
bat.enable = lib.mkDefault true;
|
||||||
chawan.enable = lib.mkDefault true;
|
|
||||||
fd.enable = lib.mkDefault true;
|
fd.enable = lib.mkDefault true;
|
||||||
ripgrep.enable = lib.mkDefault true;
|
ripgrep.enable = lib.mkDefault true;
|
||||||
starship.enable = lib.mkDefault true;
|
starship.enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -19,10 +19,6 @@ in
|
|||||||
pkgs.pgcli # Postgres client with autocomplete
|
pkgs.pgcli # Postgres client with autocomplete
|
||||||
];
|
];
|
||||||
|
|
||||||
nmasur.presets = {
|
|
||||||
programs.cargo.enable = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ in
|
|||||||
|
|
||||||
nmasur.presets.programs = {
|
nmasur.presets.programs = {
|
||||||
zed-editor.enable = lib.mkDefault true;
|
zed-editor.enable = lib.mkDefault true;
|
||||||
|
jujutsu.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
@@ -27,12 +28,6 @@ in
|
|||||||
pkgs.skate # Key-value store
|
pkgs.skate # Key-value store
|
||||||
pkgs.charm # Manage account and filesystem
|
pkgs.charm # Manage account and filesystem
|
||||||
pkgs.pop # Send emails from a TUI
|
pkgs.pop # Send emails from a TUI
|
||||||
pkgs.snitch # Network
|
|
||||||
pkgs.comma # Nix-index auto-launch
|
|
||||||
pkgs.nix-inspect # TUI for browsing Nix configs
|
|
||||||
|
|
||||||
pkgs.crush # AI LLM Agent
|
|
||||||
pkgs.gemini-cli # AI LLM Agent
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ in
|
|||||||
nsxiv.enable = lib.mkDefault true;
|
nsxiv.enable = lib.mkDefault true;
|
||||||
obsidian.enable = lib.mkDefault true;
|
obsidian.enable = lib.mkDefault true;
|
||||||
rofi.enable = lib.mkDefault true;
|
rofi.enable = lib.mkDefault true;
|
||||||
thunderbird.enable = lib.mkDefault true;
|
|
||||||
xclip.enable = lib.mkDefault true;
|
xclip.enable = lib.mkDefault true;
|
||||||
zathura.enable = lib.mkDefault true;
|
zathura.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,17 +16,16 @@ in
|
|||||||
pkgs.age # Encryption
|
pkgs.age # Encryption
|
||||||
pkgs.bc # Calculator
|
pkgs.bc # Calculator
|
||||||
pkgs.bottom # System monitor (top)
|
pkgs.bottom # System monitor (top)
|
||||||
pkgs.csvlens # CSV viewer (easier than visidata)
|
|
||||||
pkgs.delta # Fancy diffs
|
pkgs.delta # Fancy diffs
|
||||||
pkgs.difftastic # Other fancy diffs
|
pkgs.difftastic # Other fancy diffs
|
||||||
pkgs.doggo # DNS client (dig)
|
pkgs.doggo # DNS client (dig)
|
||||||
pkgs.dust # Disk usage tree (ncdu)
|
pkgs.du-dust # Disk usage tree (ncdu)
|
||||||
pkgs.dua # File sizes (du)
|
pkgs.dua # File sizes (du)
|
||||||
pkgs.duf # Basic disk information (df)
|
pkgs.duf # Basic disk information (df)
|
||||||
pkgs.jless # JSON viewer
|
pkgs.jless # JSON viewer
|
||||||
pkgs.jo # JSON output
|
pkgs.jo # JSON output
|
||||||
pkgs.mpd # TUI slideshows
|
pkgs.mpd # TUI slideshows
|
||||||
pkgs.nixfmt # Format Nix code
|
pkgs.nixfmt-rfc-style # Format Nix code
|
||||||
pkgs.nmasur.jqr # FZF fq JSON tool
|
pkgs.nmasur.jqr # FZF fq JSON tool
|
||||||
pkgs.nmasur.osc # Clipboard over SSH
|
pkgs.nmasur.osc # Clipboard over SSH
|
||||||
pkgs.nmasur.ren-find # Rename files
|
pkgs.nmasur.ren-find # Rename files
|
||||||
@@ -34,7 +33,7 @@ in
|
|||||||
pkgs.pandoc # Convert text documents
|
pkgs.pandoc # Convert text documents
|
||||||
pkgs.qrencode # Generate qr codes
|
pkgs.qrencode # Generate qr codes
|
||||||
pkgs.spacer # Output lines in terminal
|
pkgs.spacer # Output lines in terminal
|
||||||
pkgs.stable.tealdeer # Cheatsheets
|
pkgs.tealdeer # Cheatsheets
|
||||||
pkgs.tree # Print tree in terminal
|
pkgs.tree # Print tree in terminal
|
||||||
pkgs.vimv-rs # Batch rename files
|
pkgs.vimv-rs # Batch rename files
|
||||||
pkgs.yazi # TUI file explorer
|
pkgs.yazi # TUI file explorer
|
||||||
@@ -43,7 +42,7 @@ in
|
|||||||
|
|
||||||
programs.fish.shellAliases = {
|
programs.fish.shellAliases = {
|
||||||
"du" = lib.mkDefault (lib.getExe pkgs.dua);
|
"du" = lib.mkDefault (lib.getExe pkgs.dua);
|
||||||
"ncdu" = lib.mkDefault (lib.getExe pkgs.dust);
|
"ncdu" = lib.mkDefault (lib.getExe pkgs.du-dust);
|
||||||
"df" = lib.mkDefault (lib.getExe pkgs.duf);
|
"df" = lib.mkDefault (lib.getExe pkgs.duf);
|
||||||
|
|
||||||
# Use eza (exa) instead of ls for fancier output
|
# Use eza (exa) instead of ls for fancier output
|
||||||
@@ -64,9 +63,8 @@ in
|
|||||||
ghostty.enable = lib.mkDefault true;
|
ghostty.enable = lib.mkDefault true;
|
||||||
git.enable = lib.mkDefault true;
|
git.enable = lib.mkDefault true;
|
||||||
helix.enable = lib.mkDefault true;
|
helix.enable = lib.mkDefault true;
|
||||||
jujutsu.enable = lib.mkDefault true;
|
|
||||||
lazygit.enable = lib.mkDefault true;
|
lazygit.enable = lib.mkDefault true;
|
||||||
# neovim.enable = lib.mkDefault true;
|
neovim.enable = lib.mkDefault true;
|
||||||
nix-index.enable = lib.mkDefault true;
|
nix-index.enable = lib.mkDefault true;
|
||||||
nixpkgs.enable = lib.mkDefault true;
|
nixpkgs.enable = lib.mkDefault true;
|
||||||
notes.enable = lib.mkDefault true;
|
notes.enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ in
|
|||||||
];
|
];
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs.stable.visidata # CSV inspector
|
pkgs.visidata # CSV inspector
|
||||||
pkgs.dos2unix # Convert Windows text files
|
pkgs.dos2unix # Convert Windows text files
|
||||||
pkgs.inetutils # Includes telnet
|
pkgs.inetutils # Includes telnet
|
||||||
pkgs.gnupg # Encryption
|
pkgs.gnupg # Encryption
|
||||||
@@ -49,7 +49,6 @@ in
|
|||||||
aws-ssh.enable = lib.mkDefault true;
|
aws-ssh.enable = lib.mkDefault true;
|
||||||
bash.enable = lib.mkDefault true;
|
bash.enable = lib.mkDefault true;
|
||||||
bat.enable = lib.mkDefault true;
|
bat.enable = lib.mkDefault true;
|
||||||
cargo.enable = lib.mkDefault true;
|
|
||||||
direnv.enable = lib.mkDefault true;
|
direnv.enable = lib.mkDefault true;
|
||||||
dotfiles.enable = lib.mkDefault true;
|
dotfiles.enable = lib.mkDefault true;
|
||||||
fd.enable = lib.mkDefault true;
|
fd.enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -23,19 +23,5 @@ in
|
|||||||
|
|
||||||
# Speeds up fish launch time on macOS
|
# Speeds up fish launch time on macOS
|
||||||
programs.fish.useBabelfish = true;
|
programs.fish.useBabelfish = true;
|
||||||
|
|
||||||
programs.fish.shellInit = ''
|
|
||||||
set -g __nixos_path_original $PATH
|
|
||||||
function __nixos_path_fix -d "fix PATH value"
|
|
||||||
set -l result (string split ":" $__nixos_path_original)
|
|
||||||
for elt in $PATH
|
|
||||||
if not contains -- $elt $result
|
|
||||||
set -a result $elt
|
|
||||||
end
|
|
||||||
end
|
|
||||||
set -g PATH $result
|
|
||||||
end
|
|
||||||
__nixos_path_fix
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (config.nmasur.settings) username;
|
|
||||||
cfg = config.nmasur.presets.services.daily-summary;
|
|
||||||
|
|
||||||
# Remove process urls in favor of using extention
|
|
||||||
# process_urls = pkgs.writers.writePython3Bin "process-urls" {
|
|
||||||
# libraries = [
|
|
||||||
# pkgs.python3Packages.requests
|
|
||||||
# pkgs.python3Packages.beautifulsoup4
|
|
||||||
# ];
|
|
||||||
# } (builtins.readFile ./process-urls.py);
|
|
||||||
# prompt = "Based on my browser usage for today from the markdown file located in /Users/${username}/Downloads/Sidebery/todays_urls.md, create or update a daily summary markdown file in the generated notes directory located in /Users/${username}/dev/personal/notes/generated/ with the filename format 'YYYY-MM-DD Daily Summary.md'. The resulting markdown file should use /Users/${username}/dev/personal/notes/templates/generated-summary.md as a format template, and it should summarize where I have spent my time today and highlight any notable links that I have visited. Please create markdown links to other relevant notes in /Users/${username}/dev/personal/notes/. If there is an existing markdown file for today, update it to include the newest information.";
|
|
||||||
prompt = "Based on my browser usage for today from the JSON file located in /Users/${username}/Downloads/firefox-history/history-YYYY-MM-DD.json, create or update a daily summary markdown file in the generated notes directory located in /Users/${username}/dev/personal/notes/generated/ with the filename format 'YYYY-MM-DD Daily Summary.md'. If the JSON file for today doesn't exist, exit. The resulting markdown file should use /Users/${username}/dev/personal/notes/templates/generated-summary.md as a format template, and it should summarize where I have spent my time today and highlight any notable pages that I have visited, using the titles of each URL in the JSON file for markdown links. Please create markdown links to other relevant notes in /Users/${username}/dev/personal/notes/ and explain why they are being referenced. If there is an existing markdown file for today, update it to include the newest information.";
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options.nmasur.presets.services.daily-summary.enable = lib.mkEnableOption "Daily work summary";
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
launchd.user.agents.daily-summary = {
|
|
||||||
# This replaces program and args entirely
|
|
||||||
# script = ''
|
|
||||||
# ${process_urls}/bin/process-urls /Users/${username}/Downloads/Sidebery/
|
|
||||||
# GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.gemini-cli}/bin/gemini --allowed-tools all --yolo --include-directories /Users/${username}/Downloads/Sidebery/ --include-directories /Users/${username}/dev/personal/notes/ "${prompt}"
|
|
||||||
# '';
|
|
||||||
script = ''
|
|
||||||
GEMINI_API_KEY=$(cat /Users/${username}/.config/gemini/.gemini_api_key) ${pkgs.gemini-cli}/bin/gemini --allowed-tools all --yolo --include-directories "/Users/${username}/Downloads/firefox-history/,/Users/${username}/dev/personal/notes/" "${prompt} | tee -a /Users/${username}/dev/personal/gemini-archive/daily-summary-logs/$(date +"%Y-%m-%d").log"
|
|
||||||
'';
|
|
||||||
|
|
||||||
path = [
|
|
||||||
pkgs.bash
|
|
||||||
pkgs.coreutils
|
|
||||||
];
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Label = "com.example.daily-summary";
|
|
||||||
# Runs the script through /bin/sh automatically
|
|
||||||
# RunAtLoad = true;
|
|
||||||
StartCalendarInterval = [
|
|
||||||
{
|
|
||||||
Hour = 4;
|
|
||||||
Minute = 45;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
Hour = 6;
|
|
||||||
Minute = 0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
Hour = 9;
|
|
||||||
Minute = 0;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
Hour = 11;
|
|
||||||
Minute = 0;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
# Temporarily disabled in favor of using an extension to save history
|
|
||||||
|
|
||||||
|
|
||||||
import requests
|
|
||||||
from bs4 import BeautifulSoup
|
|
||||||
import json
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
from datetime import datetime
|
|
||||||
from urllib.parse import urlparse
|
|
||||||
|
|
||||||
|
|
||||||
def find_urls(data):
|
|
||||||
urls = []
|
|
||||||
if isinstance(data, dict):
|
|
||||||
for key, value in data.items():
|
|
||||||
if key == 'url' and isinstance(value, str):
|
|
||||||
urls.append(value)
|
|
||||||
else:
|
|
||||||
urls.extend(find_urls(value))
|
|
||||||
elif isinstance(data, list):
|
|
||||||
for item in data:
|
|
||||||
urls.extend(find_urls(item))
|
|
||||||
return urls
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
if len(sys.argv) > 1:
|
|
||||||
base_dir = sys.argv[1]
|
|
||||||
if not os.path.isdir(base_dir):
|
|
||||||
print(f"Error: Directory '{base_dir}' not found.")
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
base_dir = '.'
|
|
||||||
|
|
||||||
today = datetime.now().strftime('%Y.%m.%d')
|
|
||||||
output_filename = 'todays_urls.md'
|
|
||||||
output_filepath = os.path.join(base_dir, output_filename)
|
|
||||||
url_titles = {}
|
|
||||||
|
|
||||||
print(f"Searching for files in '{base_dir}' "
|
|
||||||
f"starting with 'snapshot-{today}-'")
|
|
||||||
|
|
||||||
with open(output_filepath, 'w') as md_file:
|
|
||||||
md_file.write(f'# URLs from Sidebery Snapshots for '
|
|
||||||
f'{today.replace(".", "-")}\n\n')
|
|
||||||
|
|
||||||
files_processed = 0
|
|
||||||
for filename in sorted(os.listdir(base_dir)):
|
|
||||||
# Debugging print removed
|
|
||||||
if (filename.startswith(f'snapshot-{today}-')
|
|
||||||
and filename.endswith('.json')):
|
|
||||||
files_processed += 1
|
|
||||||
print(f"Processing file: "
|
|
||||||
f"{os.path.join(base_dir, filename)}")
|
|
||||||
|
|
||||||
# Extract and format date and time from filename
|
|
||||||
# Example: snapshot-2026.01.25-13.19.29.json
|
|
||||||
clean_filename = (filename.replace('snapshot-', '')
|
|
||||||
.replace('.json', ''))
|
|
||||||
date_time_parts = clean_filename.split('-', 1)
|
|
||||||
|
|
||||||
formatted_date = date_time_parts[0].replace('.', '-')
|
|
||||||
formatted_time = date_time_parts[1].replace('.', ':')
|
|
||||||
|
|
||||||
datetime_str = f"{formatted_date} {formatted_time}"
|
|
||||||
|
|
||||||
md_file.write(f'## {datetime_str}\n\n')
|
|
||||||
|
|
||||||
with open(os.path.join(base_dir, filename), 'r') as json_file:
|
|
||||||
try:
|
|
||||||
data = json.load(json_file)
|
|
||||||
urls = find_urls(data)
|
|
||||||
print(f" Found {len(urls)} URLs")
|
|
||||||
for url in urls:
|
|
||||||
if url not in url_titles:
|
|
||||||
try:
|
|
||||||
# Get title of URL
|
|
||||||
res = requests.get(
|
|
||||||
url,
|
|
||||||
timeout=10,
|
|
||||||
allow_redirects=True
|
|
||||||
)
|
|
||||||
soup = BeautifulSoup(
|
|
||||||
res.text,
|
|
||||||
'html.parser'
|
|
||||||
)
|
|
||||||
if soup.title and soup.title.string:
|
|
||||||
title = soup.title.string.strip()
|
|
||||||
else:
|
|
||||||
domain = urlparse(url).netloc
|
|
||||||
title = domain if domain else url
|
|
||||||
url_titles[url] = title
|
|
||||||
except requests.exceptions.InvalidSchema:
|
|
||||||
continue
|
|
||||||
except Exception:
|
|
||||||
domain = urlparse(url).netloc
|
|
||||||
title = domain if domain else url
|
|
||||||
url_titles[url] = title
|
|
||||||
if url in url_titles:
|
|
||||||
title = url_titles[url]
|
|
||||||
md_file.write(f'- [{title}]({url})\n')
|
|
||||||
md_file.write('\n')
|
|
||||||
except json.JSONDecodeError:
|
|
||||||
print(f" Error decoding JSON in {filename}")
|
|
||||||
md_file.write('- Error decoding JSON\n\n')
|
|
||||||
|
|
||||||
if files_processed == 0:
|
|
||||||
print("No files found for today.")
|
|
||||||
|
|
||||||
print(f"Processing complete. Output written to {output_filepath}")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
main()
|
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
inherit (config.nmasur.settings) username;
|
||||||
cfg = config.nmasur.presets.services.dock;
|
cfg = config.nmasur.presets.services.dock;
|
||||||
in
|
in
|
||||||
|
|
||||||
@@ -49,7 +50,7 @@ in
|
|||||||
"/System/Applications/Messages.app"
|
"/System/Applications/Messages.app"
|
||||||
"/System/Applications/Mail.app"
|
"/System/Applications/Mail.app"
|
||||||
"/Applications/zoom.us.app"
|
"/Applications/zoom.us.app"
|
||||||
"/Applications/Ghostty.app"
|
"${config.home-manager.users.${username}.programs.ghostty.package}/Applications/Ghostty.app"
|
||||||
"${pkgs.discord}/Applications/Discord.app"
|
"${pkgs.discord}/Applications/Discord.app"
|
||||||
"${pkgs.obsidian}/Applications/Obsidian.app"
|
"${pkgs.obsidian}/Applications/Obsidian.app"
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -96,14 +96,14 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# # Settings that don't have an option in nix-darwin
|
# Settings that don't have an option in nix-darwin
|
||||||
# activationScripts.postActivation.text = ''
|
activationScripts.postActivation.text = ''
|
||||||
# echo "Allow apps from anywhere"
|
echo "Allow apps from anywhere"
|
||||||
# SPCTL=$(spctl --status)
|
SPCTL=$(spctl --status)
|
||||||
# if ! [ "$SPCTL" = "assessments disabled" ]; then
|
if ! [ "$SPCTL" = "assessments disabled" ]; then
|
||||||
# spctl --master-disable
|
sudo spctl --master-disable
|
||||||
# fi
|
fi
|
||||||
# '';
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ in
|
|||||||
homebrew.enable = lib.mkDefault true;
|
homebrew.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
services = {
|
services = {
|
||||||
daily-summary.enable = lib.mkDefault true;
|
|
||||||
dock.enable = lib.mkDefault true;
|
dock.enable = lib.mkDefault true;
|
||||||
finder.enable = lib.mkDefault true;
|
finder.enable = lib.mkDefault true;
|
||||||
hammerspoon.enable = lib.mkDefault true;
|
hammerspoon.enable = lib.mkDefault true;
|
||||||
@@ -40,7 +39,6 @@ in
|
|||||||
"scroll-reverser" # Different scroll style for mouse vs. trackpad
|
"scroll-reverser" # Different scroll style for mouse vs. trackpad
|
||||||
"notunes" # Don't launch Apple Music with the play button
|
"notunes" # Don't launch Apple Music with the play button
|
||||||
"topnotch" # Darkens the menu bar to complete black
|
"topnotch" # Darkens the menu bar to complete black
|
||||||
"ghostty" # Terminal application (not buildable on Nix on macOS)
|
|
||||||
];
|
];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ in
|
|||||||
services.cloudflare-dyndns.domains = [ hostnames.budget ];
|
services.cloudflare-dyndns.domains = [ hostnames.budget ];
|
||||||
|
|
||||||
# Backups
|
# Backups
|
||||||
services.restic.backups.default.paths = [ "/var/lib/private/actual" ];
|
services.restic.backups.default.paths = [ "/var/lib/actual" ];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ let
|
|||||||
hostnames.download
|
hostnames.download
|
||||||
hostnames.photos
|
hostnames.photos
|
||||||
hostnames.audiobooks
|
hostnames.audiobooks
|
||||||
hostnames.paperless
|
|
||||||
];
|
];
|
||||||
mkRecord = service: "${service} A ${localIp}";
|
mkRecord = service: "${service} A ${localIp}";
|
||||||
localRecords = lib.concatLines (map mkRecord localServices);
|
localRecords = lib.concatLines (map mkRecord localServices);
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ in
|
|||||||
{
|
{
|
||||||
handler = "static_response";
|
handler = "static_response";
|
||||||
status_code = "403";
|
status_code = "403";
|
||||||
body = "IP not allowed";
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -110,7 +109,8 @@ in
|
|||||||
apps.tls.automation.policies = cfg.tlsPolicies;
|
apps.tls.automation.policies = cfg.tlsPolicies;
|
||||||
|
|
||||||
# Setup logging to journal and files
|
# Setup logging to journal and files
|
||||||
logging.logs = {
|
logging.logs =
|
||||||
|
{
|
||||||
# System logs and catch-all
|
# System logs and catch-all
|
||||||
# Must be called `default` to override Caddy's built-in default logger
|
# Must be called `default` to override Caddy's built-in default logger
|
||||||
default = {
|
default = {
|
||||||
|
|||||||
@@ -66,7 +66,10 @@ in
|
|||||||
nmasur.presets.services.caddy.cidrAllowlist = cloudflareIpRanges;
|
nmasur.presets.services.caddy.cidrAllowlist = cloudflareIpRanges;
|
||||||
|
|
||||||
# Tell Caddy to use Cloudflare DNS for ACME challenge validation
|
# Tell Caddy to use Cloudflare DNS for ACME challenge validation
|
||||||
services.caddy.package = pkgs.nmasur.caddy;
|
services.caddy.package = pkgs.caddy.withPlugins {
|
||||||
|
plugins = [ "github.com/caddy-dns/cloudflare@v0.2.1" ];
|
||||||
|
hash = "sha256-AcWko5513hO8I0lvbCLqVbM1eWegAhoM0J0qXoWL/vI=";
|
||||||
|
};
|
||||||
nmasur.presets.services.caddy.tlsPolicies = [
|
nmasur.presets.services.caddy.tlsPolicies = [
|
||||||
{
|
{
|
||||||
issuers = [
|
issuers = [
|
||||||
@@ -173,16 +176,5 @@ in
|
|||||||
# Enable the home-made service that we created for non-proxied records
|
# Enable the home-made service that we created for non-proxied records
|
||||||
services.cloudflare-dyndns-noproxy.enable = true;
|
services.cloudflare-dyndns-noproxy.enable = true;
|
||||||
|
|
||||||
# Create certs when not using proxy
|
|
||||||
secrets.cloudflare-dns-api-prefixed = {
|
|
||||||
source = ./cloudflare-api.age;
|
|
||||||
dest = "${config.secretsDirectory}/cloudflare-dns-api-prefixed";
|
|
||||||
prefix = "CLOUDFLARE_DNS_API_TOKEN=";
|
|
||||||
};
|
|
||||||
security.acme = {
|
|
||||||
acceptTerms = true;
|
|
||||||
defaults.email = "acme@${config.nmasur.presets.programs.msmtp.domain}";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ in
|
|||||||
caps
|
caps
|
||||||
)
|
)
|
||||||
(defalias
|
(defalias
|
||||||
escctrl (tap-hold-press 200 200 esc lctrl)
|
escctrl (tap-hold-press 1000 1000 esc lctrl)
|
||||||
)
|
)
|
||||||
(deflayer base
|
(deflayer base
|
||||||
@escctrl
|
@escctrl
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ in
|
|||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
|
|
||||||
# Use power button to sleep instead of poweroff
|
# Use power button to sleep instead of poweroff
|
||||||
services.logind.settings.Login.HandlePowerKey = "suspend";
|
services.logind.powerKey = "suspend";
|
||||||
services.logind.settings.Login.HandlePowerKeyLongPress = "poweroff";
|
services.logind.powerKeyLongPress = "poweroff";
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
{ config, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (config.nmasur.settings) hostnames;
|
|
||||||
cfg = config.nmasur.presets.services.mealie;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options.nmasur.presets.services.mealie.enable = lib.mkEnableOption "mealie recipe manager";
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
services.mealie = {
|
|
||||||
enable = true;
|
|
||||||
port = 9099;
|
|
||||||
database.createLocally = true;
|
|
||||||
listenAddress = "127.0.0.1";
|
|
||||||
};
|
|
||||||
|
|
||||||
nmasur.presets.services.caddy.routes = [
|
|
||||||
{
|
|
||||||
match = [ { host = [ hostnames.recipes ]; } ];
|
|
||||||
handle = [
|
|
||||||
{
|
|
||||||
handler = "reverse_proxy";
|
|
||||||
upstreams = [ { dial = "localhost:${builtins.toString config.services.mealie.port}"; } ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Configure Cloudflare DNS to point to this machine
|
|
||||||
services.cloudflare-dyndns.domains = [ hostnames.recipes ];
|
|
||||||
|
|
||||||
# Point localhost to the local domain
|
|
||||||
networking.hosts."127.0.0.1" = [ hostnames.recipes ];
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# murmur is a Mumble server for hosting voice chat
|
|
||||||
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (config.nmasur.settings) hostnames;
|
|
||||||
cfg = config.nmasur.presets.services.murmur;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
options.nmasur.presets.services.murmur.enable =
|
|
||||||
lib.mkEnableOption "murmur (mumble) voice chat service";
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
|
|
||||||
services.murmur = {
|
|
||||||
enable = true;
|
|
||||||
users = 50; # Max concurrent users
|
|
||||||
bonjour = false; # Auto-connect LAN
|
|
||||||
registerUrl = "https://${hostnames.mumble}";
|
|
||||||
registerName = "Mumble";
|
|
||||||
environmentFile = null;
|
|
||||||
sslKey = "${config.security.acme.certs."${hostnames.mumble}".directory}/key.pem";
|
|
||||||
sslCert = "${config.security.acme.certs."${hostnames.mumble}".directory}/fullchain.pem";
|
|
||||||
openFirewall = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configure Cloudflare DNS to point to this machine
|
|
||||||
nmasur.presets.services.cloudflare.noProxyDomains = [ hostnames.mumble ];
|
|
||||||
|
|
||||||
security.acme.certs."${hostnames.mumble}" = {
|
|
||||||
dnsProvider = "cloudflare";
|
|
||||||
credentialsFile = config.secrets.cloudflare-dns-api-prefixed.dest;
|
|
||||||
group = config.services.murmur.group;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
# together with triggers.
|
# together with triggers.
|
||||||
|
|
||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (config.nmasur.settings) hostnames;
|
inherit (config.nmasur.settings) hostnames;
|
||||||
cfg = config.nmasur.presets.services.n8n;
|
cfg = config.nmasur.presets.services.n8n;
|
||||||
@@ -17,14 +18,18 @@ in
|
|||||||
|
|
||||||
services.n8n = {
|
services.n8n = {
|
||||||
enable = true;
|
enable = true;
|
||||||
environment = {
|
webhookUrl = "https://${hostnames.n8n}";
|
||||||
N8N_LISTEN_ADDRESS = "127.0.0.1";
|
settings = {
|
||||||
N8N_PORT = 5678;
|
listen_address = "127.0.0.1";
|
||||||
N8N_EDITOR_BASE_URL = "https://${hostnames.n8n}";
|
port = 5678;
|
||||||
N8N_RESTRICT_FILE_ACCESS_TO = "/var/lib/n8n";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.services.n8n.environment = {
|
||||||
|
N8N_EDITOR_BASE_URL = config.services.n8n.webhookUrl;
|
||||||
|
};
|
||||||
|
|
||||||
# Configure Cloudflare DNS to point to this machine
|
# Configure Cloudflare DNS to point to this machine
|
||||||
services.cloudflare-dyndns.domains = [ hostnames.n8n ];
|
services.cloudflare-dyndns.domains = [ hostnames.n8n ];
|
||||||
|
|
||||||
@@ -35,9 +40,7 @@ in
|
|||||||
handle = [
|
handle = [
|
||||||
{
|
{
|
||||||
handler = "reverse_proxy";
|
handler = "reverse_proxy";
|
||||||
upstreams = [
|
upstreams = [ { dial = "localhost:${builtins.toString config.services.n8n.settings.port}"; } ];
|
||||||
{ dial = "localhost:${toString config.services.n8n.environment.N8N_PORT}"; }
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ in
|
|||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.nextcloud32; # Required to specify
|
package = pkgs.nextcloud31; # Required to specify
|
||||||
configureRedis = true;
|
configureRedis = true;
|
||||||
datadir = "/data/nextcloud";
|
datadir = "/data/nextcloud";
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
|
|||||||
@@ -30,11 +30,9 @@ in
|
|||||||
karakeep.enable = lib.mkDefault true;
|
karakeep.enable = lib.mkDefault true;
|
||||||
litestream.enable = lib.mkDefault true;
|
litestream.enable = lib.mkDefault true;
|
||||||
mathesar.enable = lib.mkDefault true;
|
mathesar.enable = lib.mkDefault true;
|
||||||
mealie.enable = lib.mkDefault true;
|
minecraft-server.enable = lib.mkDefault true;
|
||||||
minecraft-server.enable = lib.mkDefault false;
|
|
||||||
murmur.enable = lib.mkDefault true;
|
|
||||||
n8n.enable = lib.mkDefault true;
|
n8n.enable = lib.mkDefault true;
|
||||||
nix-autoupgrade.enable = lib.mkDefault true; # On by default for communications
|
nix-autoupgrade.enable = lib.mkDefault false; # On by default for communications
|
||||||
ntfy-sh.enable = lib.mkDefault true;
|
ntfy-sh.enable = lib.mkDefault true;
|
||||||
pgweb.enable = lib.mkDefault true;
|
pgweb.enable = lib.mkDefault true;
|
||||||
postgresql.enable = lib.mkDefault true;
|
postgresql.enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ in
|
|||||||
enable = lib.mkDefault (!config.networking.networkmanager.enable);
|
enable = lib.mkDefault (!config.networking.networkmanager.enable);
|
||||||
|
|
||||||
# Allows the user to control the WiFi settings.
|
# Allows the user to control the WiFi settings.
|
||||||
userControlled = lib.mkDefault true;
|
userControlled.enable = lib.mkDefault true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Wake up tempest with a command
|
# Wake up tempest with a command
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
pkgs = import nixpkgs { inherit system; };
|
pkgs = import nixpkgs { inherit system; };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
default = pkgs.mkShell { buildInputs = with pkgs; [ nixfmt ]; };
|
default = pkgs.mkShell { buildInputs = with pkgs; [ nixfmt-rfc-style ]; };
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user