diff --git a/flake.lock b/flake.lock index 585cf9e..7d95f34 100644 --- a/flake.lock +++ b/flake.lock @@ -26,11 +26,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1750173260, - "narHash": "sha256-9P1FziAwl5+3edkfFcr5HeGtQUtrSdk/MksX39GieoA=", + "lastModified": 1754433428, + "narHash": "sha256-NA/FT2hVhKDftbHSwVnoRTFhes62+7dxZbxj5Gxvghs=", "owner": "ryantm", "repo": "agenix", - "rev": "531beac616433bac6f9e2a19feb8e99a22a66baf", + "rev": "9edb1787864c4f59ae5074ad498b6272b3ec308d", "type": "github" }, "original": { @@ -106,21 +106,6 @@ "type": "github" } }, - "cachix-push": { - "locked": { - "lastModified": 1725315090, - "narHash": "sha256-d/ZGRHfSGPEpCCNSVlfZ0ND2IZV0H9nN/3BLMA7d9fs=", - "owner": "juspay", - "repo": "cachix-push", - "rev": "fbe9734921e19abc4830dc4ea425aaa82cf61991", - "type": "github" - }, - "original": { - "owner": "juspay", - "repo": "cachix-push", - "type": "github" - } - }, "copyparty": { "inputs": { "flake-utils": "flake-utils", @@ -129,11 +114,11 @@ ] }, "locked": { - "lastModified": 1754348197, - "narHash": "sha256-sVl/KDJR7X0bmRc/ccmuAy9HgcQXnnIaiOCWbSGvRPA=", + "lastModified": 1758322349, + "narHash": "sha256-ZFjhqGox/z6EZTpVp1XlM627R+roPj2PjeeCGcnl2AI=", "owner": "9001", "repo": "copyparty", - "rev": "b664ebb01f28094749e233ac70795ccd11fed253", + "rev": "e1ea9852c6127d48ad3d54a2b219463261834898", "type": "github" }, "original": { @@ -226,11 +211,11 @@ ] }, "locked": { - "lastModified": 1752718651, - "narHash": "sha256-PkaR0qmyP9q/MDN3uYa+RLeBA0PjvEQiM0rTDDBXkL8=", + "lastModified": 1758287904, + "narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=", "owner": "nix-community", "repo": "disko", - "rev": "d5ad4485e6f2edcc06751df65c5e16572877db88", + "rev": "67ff9807dd148e704baadbd4fd783b54282ca627", "type": "github" }, "original": { @@ -284,11 +269,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1752811437, - "narHash": "sha256-TVWYBcNpeQ3fEloryVP9N2yJnC3vuPpoZF1RqFFWFt0=", + "lastModified": 1758295658, + "narHash": "sha256-PsQSN226ZZ4KnweNspxKTzF8ztdPOAT6+gpGkxnygpg=", "owner": "rycee", "repo": "nur-expressions", - "rev": "369dccacc0a8214600773b3bbbf68d98a19b74e8", + "rev": "7c0e1d343108cbaaf448353fadb62190246251a8", "type": "gitlab" }, "original": { @@ -361,6 +346,22 @@ "type": "github" } }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1747046372, + "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -368,11 +369,11 @@ ] }, "locked": { - "lastModified": 1751413152, - "narHash": "sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ=", + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "77826244401ea9de6e3bac47c2db46005e1f30b5", + "rev": "4524271976b625a4a605beefd893f270620fd751", "type": "github" }, "original": { @@ -528,6 +529,24 @@ "type": "github" } }, + "flake-utils_3": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "fromYaml": { "flake": false, "locked": { @@ -560,6 +579,29 @@ "type": "github" } }, + "git-hooks_2": { + "inputs": { + "flake-compat": "flake-compat_4", + "gitignore": "gitignore_3", + "nixpkgs": [ + "scenics", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1757239681, + "narHash": "sha256-E9spYi9lxm2f1zWQLQ7xQt8Xs2nWgr1T4QM7ZjLFphM=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "ab82ab08d6bf74085bd328de2a8722c12d97bd9d", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -603,6 +645,28 @@ "type": "github" } }, + "gitignore_3": { + "inputs": { + "nixpkgs": [ + "scenics", + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "gnome-shell": { "flake": false, "locked": { @@ -648,11 +712,11 @@ ] }, "locked": { - "lastModified": 1752780124, - "narHash": "sha256-5dn97vIYxn6VozKePOQSDxVCsrl38nDdMJXx86KIJH0=", + "lastModified": 1758313341, + "narHash": "sha256-SsI6INUzWwPcRKRaxvi50RttnD9rcC4EjV+67TOEfrQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "c718918222bdb104397762dea67e6b397a7927fe", + "rev": "6f656618ebc71ca82d93d306a8aecb2c5f6f2ab2", "type": "github" }, "original": { @@ -853,11 +917,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752620740, - "narHash": "sha256-f3pO+9lg66mV7IMmmIqG4PL3223TYMlnlw+pnpelbss=", + "lastModified": 1758216857, + "narHash": "sha256-h1BW2y7CY4LI9w61R02wPaOYfmYo82FyRqHIwukQ6SY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "32a4e87942101f1c9f9865e04dc3ddb175f5f32e", + "rev": "d2ed99647a4b195f0bcc440f76edfa10aeb3b743", "type": "github" }, "original": { @@ -917,6 +981,22 @@ } }, "nixpkgs_2": { + "locked": { + "lastModified": 1737469691, + "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=", + "owner": "NixOs", + "repo": "nixpkgs", + "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab", + "type": "github" + }, + "original": { + "owner": "NixOs", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { "locked": { "lastModified": 1711163522, "narHash": "sha256-YN/Ciidm+A0fmJPWlHBGvVkcarYWSC+s3NTPk/P+q3c=", @@ -932,7 +1012,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1750215678, "narHash": "sha256-Rc/ytpamXRf6z8UA2SGa4aaWxUXRbX2MAWIu2C8M+ok=", @@ -948,7 +1028,7 @@ "type": "github" } }, - "nixpkgs_4": { + "nixpkgs_5": { "locked": { "lastModified": 1725194671, "narHash": "sha256-tLGCFEFTB5TaOKkpfw3iYT9dnk4awTP/q4w+ROpMfuw=", @@ -964,6 +1044,25 @@ "type": "github" } }, + "nocodb": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1753527533, + "narHash": "sha256-UoOwtvkNicWrlxEVNR9RL7r39mOFEwyV6BpBd5Fa1is=", + "owner": "nocodb", + "repo": "nocodb", + "rev": "bec1fa46dd23996cad16e16150c959ce587b0750", + "type": "github" + }, + "original": { + "owner": "nocodb", + "ref": "bec1fa4", + "repo": "nocodb", + "type": "github" + } + }, "nsbm": { "inputs": { "flake-parts": [ @@ -1046,7 +1145,7 @@ "flake-parts": "flake-parts_4", "flake-utils": "flake-utils_2", "mnw": "mnw", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "systems": "systems_3" }, "locked": { @@ -1065,7 +1164,6 @@ }, "omnix": { "inputs": { - "cachix-push": "cachix-push", "devour-flake": "devour-flake_2", "false": "false", "flake-parts": "flake-parts_5", @@ -1075,7 +1173,7 @@ "nix-systems-aarch64-linux": "nix-systems-aarch64-linux", "nix-systems-x86_64-darwin": "nix-systems-x86_64-darwin", "nix-systems-x86_64-linux": "nix-systems-x86_64-linux", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "rust-flake": "rust-flake", "systems": [ "systems" @@ -1083,11 +1181,11 @@ "true": "true" }, "locked": { - "lastModified": 1752609340, - "narHash": "sha256-LrcNUiyLOiIgalsP/GsaRh7pe8lpZLRiQHv9jCeJNtQ=", + "lastModified": 1757112869, + "narHash": "sha256-mYaj1ZiujvJkCYR2GK85A8Pr8azMrbj8abpDw4nEz5E=", "owner": "juspay", "repo": "omnix", - "rev": "e967319794c9b9ad7d040dc873eae62adab968f4", + "rev": "7e35ac51e30e94579cfc8f62c8318d4c198d5cb4", "type": "github" }, "original": { @@ -1107,11 +1205,11 @@ ] }, "locked": { - "lastModified": 1750779888, - "narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=", + "lastModified": 1758108966, + "narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d", + "rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b", "type": "github" }, "original": { @@ -1161,12 +1259,14 @@ "nish": "nish", "nixinate": "nixinate", "nixpkgs": "nixpkgs", + "nocodb": "nocodb", "nsbm": "nsbm", "nvf": "nvf", "omnix": "omnix", "pre-commit-hooks": "pre-commit-hooks", + "scenics": "scenics", "stylix": "stylix", - "systems": "systems_5", + "systems": "systems_6", "treefmt-nix": "treefmt-nix_3", "unstable": "unstable" } @@ -1260,7 +1360,7 @@ "flake-parts": "flake-parts_3", "flake-root": "flake-root", "nix-visualize": "nix-visualize", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "treefmt-nix": "treefmt-nix", "vulnix": "vulnix" }, @@ -1278,6 +1378,28 @@ "type": "github" } }, + "scenics": { + "inputs": { + "flake-utils": "flake-utils_3", + "git-hooks": "git-hooks_2", + "nixpkgs": [ + "unstable" + ] + }, + "locked": { + "lastModified": 1757517057, + "narHash": "sha256-FOovR2vgYev9BoNmbacqpB6i3Tk5NxWjRj9hFr2fB/4=", + "owner": "callumio", + "repo": "scenics", + "rev": "6afe932b2c78782e6b2e7423926eb1995fd4f5be", + "type": "github" + }, + "original": { + "owner": "callumio", + "repo": "scenics", + "type": "github" + } + }, "stylix": { "inputs": { "base16": "base16", @@ -1291,7 +1413,7 @@ "nixpkgs" ], "nur": "nur", - "systems": "systems_4", + "systems": "systems_5", "tinted-foot": "tinted-foot", "tinted-kitty": "tinted-kitty", "tinted-schemes": "tinted-schemes", @@ -1299,11 +1421,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1752752240, - "narHash": "sha256-qSQ6oIJeIb5MX6LRszgqQYB46FOHemKrvrdzf2u+uxM=", + "lastModified": 1757957798, + "narHash": "sha256-FT4O5imFJ+FUIGhYj/aFwEEgyvLhuyJ2my8f6mCLtTY=", "owner": "danth", "repo": "stylix", - "rev": "40f40bda4269f6e5490c25975069dc61aede6d52", + "rev": "e6fc25cd12e8f461e402cf34649cc73ad93c7bdd", "type": "github" }, "original": { @@ -1359,6 +1481,21 @@ } }, "systems_4": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_5": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1373,7 +1510,7 @@ "type": "github" } }, - "systems_5": { + "systems_6": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1520,11 +1657,11 @@ ] }, "locked": { - "lastModified": 1752055615, - "narHash": "sha256-19m7P4O/Aw/6+CzncWMAJu89JaKeMh3aMle1CNQSIwM=", + "lastModified": 1758206697, + "narHash": "sha256-/DbPkh6PZOgfueCbs3uzlk4ASU2nPPsiVWhpMCNkAd0=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "c9d477b5d5bd7f26adddd3f96cfd6a904768d4f9", + "rev": "128222dc911b8e2e18939537bed1762b7f3a04aa", "type": "github" }, "original": { @@ -1550,11 +1687,11 @@ }, "unstable": { "locked": { - "lastModified": 1752687322, - "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", + "lastModified": 1758198701, + "narHash": "sha256-7To75JlpekfUmdkUZewnT6MoBANS0XVypW6kjUOXQwc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", + "rev": "0147c2f1d54b30b5dd6d4a8c8542e8d7edf93b5d", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index eab8f66..9ec84a4 100644 --- a/flake.nix +++ b/flake.nix @@ -40,7 +40,7 @@ # TODO: use ./hosts/ nixosConfigurations = { artemis = mkLinuxSystem [./hosts/artemis inputs.lanzaboote.nixosModules.lanzaboote] []; - hermes = mkLinuxSystem [./hosts/hermes inputs.copyparty.nixosModules.default] [inputs.copyparty.overlays.default]; + hermes = mkLinuxSystem [./hosts/hermes inputs.nocodb.nixosModules.nocodb inputs.copyparty.nixosModules.default] [inputs.copyparty.overlays.default]; }; diskoConfigurations = {}; # maybe? om.health.default = {nix-version.min-required = "2.18.5";}; @@ -54,7 +54,12 @@ ... }: { _module.args.pkgs = inputs'.nixpkgs.legacyPackages.extend self.overlays.default; - overlayAttrs = config.packages // {unstable = inputs'.unstable.legacyPackages;}; + overlayAttrs = + config.packages + // { + unstable = inputs'.unstable.legacyPackages; + scenics = inputs'.scenics.packages; + }; pre-commit = { check.enable = false; @@ -86,6 +91,9 @@ nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + scenics.url = "github:callumio/scenics"; + scenics.inputs.nixpkgs.follows = "unstable"; + nixinate = { url = "github:callumio/nixinate"; inputs.nixpkgs.follows = "unstable"; @@ -182,5 +190,10 @@ url = "github:9001/copyparty"; inputs.nixpkgs.follows = "unstable"; }; + + nocodb = { + url = "github:nocodb/nocodb?ref=bec1fa4"; + #inputs.nixpkgs.follows = "unstable"; + }; }; } diff --git a/home/c/programs/default.nix b/home/c/programs/default.nix index 0321340..feff4cc 100644 --- a/home/c/programs/default.nix +++ b/home/c/programs/default.nix @@ -4,6 +4,7 @@ ./waybar ./git ./fish + ./jj ./rofi ./rbw ./firefox diff --git a/home/c/programs/hypr/default.nix b/home/c/programs/hypr/default.nix index 90560a0..fccc19f 100644 --- a/home/c/programs/hypr/default.nix +++ b/home/c/programs/hypr/default.nix @@ -7,8 +7,7 @@ getProgFor' = cLib.getProgFor' pkgs; getProgFor = cLib.getProgFor pkgs; web = getProgFor "firefox"; - #mail = getProgFor "betterbird"; - mail = ""; + # mail = ""; chat = getProgFor "discord"; media = getProgFor "spotify"; terminal = getProgFor "alacritty"; @@ -218,7 +217,7 @@ in { "name:web, on-created-empty: ${web}" "name:chat, on-created-empty: ${chat}" "name:media, on-created-empty: ${media}" - "name:mail, on-created-empty: ${mail}" + #"name:mail, on-created-empty: ${mail}" ]; bindm = [ diff --git a/home/c/programs/jj/default.nix b/home/c/programs/jj/default.nix new file mode 100644 index 0000000..3029dea --- /dev/null +++ b/home/c/programs/jj/default.nix @@ -0,0 +1,36 @@ +{lib, ...}: { + programs.jujutsu = { + enable = true; + settings = { + user = { + name = "Callum Leslie"; + email = "git@cleslie.uk"; + }; + signing = { + behavior = "own"; + backend = "gpg"; + }; + + ui = { + pager = "delta"; + diff-formatter = ":git"; + }; + git = { + private-commits = "description(glob:'wip:*') | description(glob:'private:*') | description(glob:'fixup*')"; + }; + + "--scope" = [ + { + "--when".repositories = ["~/repos/projects.cs.nott.ac.uk"]; + user = { + email = "psycl6@nottingham.ac.uk"; + }; + } + { + "--when".commands = ["status"]; + ui.paginate = "never"; + } + ]; + }; + }; +} diff --git a/home/c/programs/tmux/default.nix b/home/c/programs/tmux/default.nix index e71d8f5..f8c4a70 100644 --- a/home/c/programs/tmux/default.nix +++ b/home/c/programs/tmux/default.nix @@ -4,9 +4,9 @@ ... }: let getProgFor = cLib.getProgFor pkgs; - getProgFor' = cLib.getProgFor' pkgs; tmux = getProgFor "tmux"; - tmux-sessionizer = getProgFor' "tmux-sessionizer-cl" "tmux-sessionizer"; + getProgFor' = cLib.getProgFor pkgs.scenics; + tmux-githop = getProgFor' "tmux-githop"; in { programs.tmux = { enable = true; @@ -51,8 +51,8 @@ in { bind \\ split-window -v -c "#{pane_current_path}" bind c new-window -c "#{pane_current_path}" - bind-key -r s run-shell "${tmux} display-popup -E '${tmux-sessionizer} -s'" - bind-key -r f run-shell "${tmux} display-popup -E '${tmux-sessionizer} -p'" + bind-key -r s run-shell "${tmux} display-popup -E '${tmux-githop} -s -y'" + bind-key -r f run-shell "${tmux} display-popup -E '${tmux-githop} -p -y'" bind-key -r m run-shell "${tmux} switch-client -t main" bind S choose-tree diff --git a/hosts/hermes/copyparty.nix b/hosts/hermes/copyparty.nix index 8fc9923..345f198 100644 --- a/hosts/hermes/copyparty.nix +++ b/hosts/hermes/copyparty.nix @@ -16,7 +16,12 @@ in { "/media" = { path = "/var/lib/media/library"; access = { - r = "*"; + rw = ["c"]; + }; + }; + "/paperless" = { + path = "/var/lib/media/library"; + access = { rw = ["c"]; }; }; diff --git a/hosts/hermes/default.nix b/hosts/hermes/default.nix index 6487805..11aaf6f 100644 --- a/hosts/hermes/default.nix +++ b/hosts/hermes/default.nix @@ -7,7 +7,9 @@ ./quassel.nix ./fail2ban.nix ./containers.nix + ./n8n.nix ./networking.nix + ./nocodb.nix ./ssh.nix ./media.nix ./headscale.nix diff --git a/hosts/hermes/n8n.nix b/hosts/hermes/n8n.nix new file mode 100644 index 0000000..5054b60 --- /dev/null +++ b/hosts/hermes/n8n.nix @@ -0,0 +1,18 @@ +{pkgs, ...}: let + domain = "automation.cleslie.uk"; +in { + services = { + cloudflare-dyndns.domains = [domain]; + n8n = { + enable = true; + webhookUrl = "https://" + domain + "/"; + settings = { + port = 5678; + }; + }; + caddy.virtualHosts.${domain}.extraConfig = '' + reverse_proxy http://127.0.0.1:5678 + ''; + }; + environment.systemPackages = with pkgs; [mupdf-headless]; +} diff --git a/hosts/hermes/nocodb.nix b/hosts/hermes/nocodb.nix new file mode 100644 index 0000000..db5658f --- /dev/null +++ b/hosts/hermes/nocodb.nix @@ -0,0 +1,18 @@ +_: let + domain = "hub.cleslie.uk"; +in { + services = { + cloudflare-dyndns.domains = [domain]; + nocodb = { + enable = true; + environment = { + NC_PUBLIC_URL = "https://" + domain; + #NC_INVITE_ONLY_SIGNUP = 1; + PORT = "4690"; + }; + }; + caddy.virtualHosts.${domain}.extraConfig = '' + reverse_proxy http://127.0.0.1:4690 + ''; + }; +}